Setting up a Kubernetes cluster from scratch is no easy task. Luckily, there are now many managed service offerings which create a Kubernetes cluster for you.
Many of these providers also take responsibility for keeping your cluster up to date.
In this blog post we will take a closer look at AKS, the Kubernetes-as-a-service offering from Microsoft Azure. The Azure team did a great job of automating the configuration of all the different Kubernetes cluster components. With AKS we can deploy a 3-node cluster in about 15 minutes.
So Lets Get To Work!
If you do not already have an Azure account, Microsoft offers a free trial with $200 in credit toward their cloud services. AKS counts as a cloud service, so get out there and get signed up!
With AKS you will only be paying for the virtual machine instances, storage, and networking resources consumed by your Kubernetes cluster; you won't have to pay for the
etcd nodes, the API server components, etc.
Before we get started, make sure to have the following tools installed:
curl -sL https://aka.ms/InstallAzureCLIDeb | sudo bash az aks install-cli
brew install azure-cli az aks install-cli
To fully enjoy your
kubectl experience, you may want to install autocomplete.
Spinning Up Our Cluster
After everything is installed, you will need to log into Microsoft Azure using the
If you have multiple subscriptions, you can optionally set the subscription you
wish to use by using the
az account set command, like this:
az account set --subscription "SUBSCRIPTION-NAME"
We now need to create a resource group. A resource group is a collections of assets which will hold virtual machines, load balancers, networking components etc. When you are all done with your Kubernetes cluster, you can delete the resource group to trivially clean up after yourself.
To create our resource group:
$ az group create --name my-aks-rg --location eastus
Here, our resource group is named my-aks-rg and is provisioned in the US - East region (eastus).
To provision our new cluster, use
az aks create:
$ az aks create \ --name my-aks \ --resource-group my-aks-rg \ --node-count 3 \ --generate-ssh-keys
This should take approximately 15 minutes.
After the cluster is up and running we need to tell
kubectl how to connect to it to deploy stuff to it. Luckily, the
az CLI provides a painless way of doing this:
$ az aks get-credentials --name my-aks --resource-group my-aks-rg $ kubectl config current-context my-aks
Verifying Our New Cluster
Let's verify our shiny new cluster by deploying a simple web-based application, complete with a front-end load balancer:
$ kubectl apply -f https://starkandwayne.com/deploy/welcome-to-k8s.yml
We can get the address of the load balancer from the
$ kubectl get services -n welcome
Copy the IP that from that command into your web browser, and you should see: