My thoughts on Microsoft Azure and Kubernetes

microsoft-azure-banner

I was recently tasked to deploy a set of Docker containers to a Kubernetes cluster running on Microsoft Azure. I’ve done this a few times in the past, but this particular deployment required some additional configurations including PVC and Config Maps, which I had not yet done on the Azure cloud.

The Kubernetes Requirements

This a high level overview of what I needed to deploy to Kubernetes on Azure:

  • Node-RED
    • For those who follow my work will know that I’m a huge fan of Node-RED. At my clients we use Node-RED for various integrations and flows that interact with on-premise and cloud services
    • Requires a Persistent Volume Claim (PVC)
    • Requires a Config Map
  • Agilit-e
    • Agilit-e, a microservice middleware portal, provides “No Code” custom microservices “as a service”
    • Used by client to integrate on-premise environment with cloud services
    • Requires a Config Map and Secrets
  • MongoDB
    • Used by Agilit-e
    • Requires a Config Map
    • Requires a Persistent Volume Claim (PVC)
  • CouchDB
    • Data store used for various purposes
    • Requires a Config Map
    • Requires a Persistent Volume Claim (PVC)
  • Istio
    • Providing additional resources and capabilities to the Kubernetes cluster for your containers

The Pros of using Kubernetes on Azure

The Free Tier Offerings

Something I really appreciate from Microsoft is the ability to spawn services and platforms like Kubernetes for testing purposes and not having to worry about what costs will be incurred. Other cloud platforms offer a similar deal, but they seem to have more limitations than Azure. A big win for me is the ability to create a Load Balancer for my cluster using the free version. Another big win is the free storage that is offered for stateful containers running in the cluster.

Plug and Play

Once I passed the initial setup of the Kubernetes cluster, along with creating a container registry and resource group, everything else fell into place. The deployment configurations I have for my client’s on-premise environment went almost unchanged, with exception of the the versions of the configurations and the container images I had to reference on the Azure cloud. This was due to Azure running an older version of Kubernetes versus the version I’m running locally for the client.

Image Deployment

Deploying my Docker images to Azure was a breeze. The only tricky part is remembering that the login to the container service is different to logging into Azure in general.

Storage and Configuration

The real excitement for me was when my config maps and persistent volume claims worked first time. I tend to struggle with these on other cloud platforms, but it wasn’t the case with Azure. Kudos!!!

The Cons of using Kubernetes on Azure

Setup and Configuration

Something that I find to be a trend with Azure is the amount of initial setup and configuration that’s required vs other cloud platforms. Nothing too serious, but I tend to have to follow a checklist of tasks every time I need to interface with Azure. Thank goodness I have Alfred on my Mac, which takes care of all of this, but I did feel I had to mention this.

Documentation

During the initial setup, I had a reliance on Microsoft’s online documentation, which unfortunately needs a bit of improvement. To get from point A to B, I had to perform a number of additional Google searches and reference 3rd party materials. Now, in Microsoft’s defence, this is a general issue with other cloud platforms as well. I honestly wish there was more time spent on documentation when providing cloud services like this.

Intermittent Anomalies

This does not happen nearly as frequently as what it did in the past, but sometimes terminal commands just don’t trigger 100%. The solution to this is usually to run the command a few more times. I find that with a bit of persistence, you finally come right. It does tend to worry me though, because one does not know if the previous command did actually go through and by running it again, what lands up breaking ?.

Closing

So far, I’ve had the best experience deploying to Kubernetes on Azure versus Kubernetes on other platforms. With a little bit of tweaking and improvements, Microsoft really has something awesome to show off and I look forward to the overall experience being improved.

Till next time ?
John

Leave a comment

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.