Azure

Follow these instructions to prepare an Azure cluster for Istio.

You can deploy a Kubernetes cluster to Azure via AKS or ACS-Engine which fully supports Istio.

AKS

You can create an AKS cluster via the az cli or the Azure portal.

For the az cli option, complete az login authentication OR use cloud shell, then run the following commands below.

  1. Determine the desired region name which supports AKS

    $ az provider list --query "[?namespace=='Microsoft.ContainerService'].resourceTypes[] | [?resourceType=='managedClusters'].locations[]" -o tsv
  2. Verify the supported Kubernetes versions for the desired region

    Replace my location using the desired region value from the above step, and then execute:

    $ az aks get-versions --location "my location" --query "orchestrators[].orchestratorVersion"

    Ensure 1.10.5 is listed or choose a different value greater than or equal to 1.9.6.

  3. Create the resource group and deploy the AKS cluster

    Replace myResourceGroup and myAKSCluster with desired names, my location using the value from step 1, 1.10.5 if not supported in the region, and then execute:

    $ az group create --name myResourceGroup --location "my location"
    $ az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 3 --kubernetes-version 1.10.5 --generate-ssh-keys
  4. Get the AKS kubeconfig credentials

    Replace myResourceGroup and myAKSCluster with the names from the previous step and execute:

    $ az aks get-credentials --resource-group myResourceGroup --name myAKSCluster

ACS-Engine

  1. Follow the instructions to get and install the acs-engine binary.

  2. Download the acs-engine API model definition that supports deploying Istio:

    $ wget https://raw.githubusercontent.com/Azure/acs-engine/master/examples/service-mesh/istio.json

    Note: It is possible to use other api model definitions which will work with Istio. The MutatingAdmissionWebhook and ValidatingAdmissionWebhook admission control flags and RBAC are enabled by default on 1.9 or later clusters. See acs-engine api model default values for further information.

  3. Deploy your cluster using the istio.json template. You can find references to the parameters in the official docs.

    ParameterExpected value
    subscription_idAzure Subscription Id
    dns_prefixCluster DNS Prefix
    locationCluster Location
    $ acs-engine deploy --subscription-id <subscription_id> \
      --dns-prefix <dns_prefix> --location <location> --auto-suffix \
      --api-model istio.json

    After a few minutes, you can find your cluster on your Azure subscription in a resource group called <dns_prefix>-<id>. Assuming dns_prefix has the value myclustername, a valid resource group with a unique cluster ID is mycluster-5adfba82. The acs-engine generates your kubeconfig file in the _output folder.

  4. Use the <dns_prefix>-<id> cluster ID, to copy your kubeconfig to your machine from the _output folder:

    $ cp _output/<dns_prefix>-<id>/kubeconfig/kubeconfig.<location>.json \
        ~/.kube/config

    For example:

    $ cp _output/mycluster-5adfba82/kubeconfig/kubeconfig.westus2.json \
      ~/.kube/config