Deploying GHES on Azure Kubernetes Service (AKS)

This document describes requirements and instructions specific to Azure Kubernetes Service.

Once you have a Kubernetes cluster up and running, follow the general steps for deploying KubeVirt and the GitHub Enterprise Server VM.

Requirements

Hardware

To avoid running the VM in emulation mode, you must choose an Azure VM SKU that supports nested virtualization (like Dv3 and Ev3).

For demo and evaluation purposes, Standard D8s v3 works well. For more details, see the “D2s-64s v3 latest generation” section on the Azure Linux VM pricing page.

Software

You need to either install the Azure CLI or use the Azure cloud Shell which is available in the Azure Portal.

Create a Kubernetes cluster

export RESOURCE_GROUP=ghes-kubevirt
export CLUSTER=ghes-kubevirt

Create a resource group:

az group create --name $RESOURCE_GROUP --location eastus

Create the cluster:

az aks create \
    --resource-group $RESOURCE_GROUP \
    --name $CLUSTER \
    --node-count 1 \
    --enable-addons monitoring \
    --generate-ssh-keys
    --node-vm-size Standard_D8s_v3
    

Connect to the cluster

If you don’t already have kubectl (the tool for managing Kubernetes resources), install it using the Azure CLI:

az aks install-cli

To run kubectl commands against the cluster you just created run:

az aks get-credentials --resource-group $RESOURCE_GROUP --name $CLUSTER

Verify you can connect and there is at least one node in the cluster:

kubectl get nodes

Next steps

Now that you have your cluster up and running, follow the general instructions for deploying KubeVirt and the GitHub Enterprise Server VM.

Note: when creating the data volumes in the general instructions, note the alternate step for AKS which causes volumes to be created on a faster managed premium SSD drive versus a standard SSD drive.