• Azure
    • AKS
    • ACS-Engine

    Azure

    依照本指南对 Azure 集群进行配置以便安装运行 Istio。

    可以使用 AKS 或者 ACS-Engine 部署 Kubernetes 集群,两种方式都完全能够支持 Istio 的安装和运行。

    AKS

    可以使用 az 客户端工具 或者 Azure 门户 来创建 AKS 集群。

    如果使用 az 客户端工具,首先要完成 az login 认证过程,或者直接使用 Cloud shell;然后运行下面的命令:

    • 选择支持 AKS 的区域进行后续安装过程
    1. $ az provider list --query "[?namespace=='Microsoft.ContainerService'].resourceTypes[] | [?resourceType=='managedClusters'].locations[]" -o tsv
    • 查询该区域所支持的 Kubernetes 版本

    用上面选择的区域替换 my location,执行命令:

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

    这里需要看到 1.10.5 出现在列表之中,或者选择一个大于或等于 1.9.6 的其它版本。

    • 创建资源组,然后部署 AKS 集群

    用真实名称替换 myResourceGroupmyAKSClustermy location 则使用步骤 1 中确定的区域,如果区域支持的话,选择 1.10.5 版本,运行命令:

    1. $ az group create --name myResourceGroup --location "my location"
    2. $ az aks create --resource-group myResourceGroup --name myAKSCluster --node-count 3 --kubernetes-version 1.10.5 --generate-ssh-keys
    • 获取 AKS 的 kubeconfig 和凭据

    用前面选择的名称替换 myResourceGroupmyAKSCluster 然后执行:

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

    ACS-Engine

    • 按照下面的介绍,下载和安装 acs-engine 的二进制包。

    • 下载支持 Istio 的 acs-engine API 模型定义文件:

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

    注意:使用其他的 API 模型定义也是可以支持 Istio 的。MutatingAdmissionWebhook 以及 ValidatingAdmissionWebhook 两个准入控制标志以及 RBAC 在 1.9 或更新版本的集群中都是缺省开启的。请参看 acs-engine API 模型的缺省值获取更多相关信息。

    • 使用 istio.json 模板定义集群。其中的参数可以在官方文档中找到。

    参数说明subscription_idAzure 订阅 IDdns_prefix集群 DNS 前缀location集群位置

    1. $ acs-engine deploy --subscription-id <subscription_id> \
    2. --dns-prefix <dns_prefix> --location <location> --auto-suffix \
    3. --api-model istio.json

    几分钟之后,就可以在 Azure 订阅中发现一个资源组,命名方式是 <dns_prefix>-<id>。假设 dns-prefix 取值为 myclustername,会在后面加入一个随机 ID 后缀,生成资源组名,例如 mycluster-5adfba82acs-engine 会生成 kubeconfig 文件,放置到 _output 文件夹中。

    • 使用 <dns_prefix>-<id> 集群 ID,把 kubeconfig_output 文件夹中复制出来:
    1. $ cp _output/<dns_prefix>-<id>/kubeconfig/kubeconfig.<location>.json \
    2. ~/.kube/config

    例如:

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