Criar um cluster de provisionamento automático de nós numa rede virtual personalizada no Serviço Kubernetes do Azure (AKS)

Este artigo mostra-lhe como criar um cluster do Azure Kubernetes Service (AKS) com o auto-provisionamento de nós (NAP) ativado numa rede virtual personalizada (VNet). Cria-se um VNet e uma sub-rede, depois concede-se a uma identidade gerida o acesso ao VNet.

Pré-requisitos

Limitações

Defina variáveis de ambiente e crie um grupo de recursos

  1. Defina as variáveis de ambiente utilizadas ao longo deste artigo. Substitui os valores provisórios pelos teus próprios valores.

    export SUBSCRIPTION_ID="<subscription-id>"
    export RG_NAME="<resource-group-name>"
    export LOCATION="<location>"
    export VNET_NAME="<vnet-name>"
    export SUBNET_NAME="<subnet-name>"
    export IDENTITY_NAME="<managed-identity-name>"
    export CLUSTER_NAME="<cluster-name>"
    
  2. Selecione a sua subscrição do Azure usando o az account set comando.

    az account set --subscription $SUBSCRIPTION_ID
    
  3. Crie um grupo de recursos usando o comando az group create.

    az group create \
        --name $RG_NAME \
        --location $LOCATION
    

Criar uma rede virtual e uma sub-rede

  1. Crie uma VNet usando o az network vnet create comando.

    az network vnet create \
        --name $VNET_NAME \
        --resource-group $RG_NAME \
        --location $LOCATION \
        --address-prefixes 172.19.0.0/16
    
  2. Crie uma sub-rede de nós usando o az network vnet subnet create comando.

    az network vnet subnet create \
        --resource-group $RG_NAME \
        --vnet-name $VNET_NAME \
        --name $SUBNET_NAME \
        --address-prefixes 172.19.0.0/24
    

Crie uma identidade gerida e atribua permissões VNet

  1. Crie uma identidade gerenciada usando o az identity create comando.

    az identity create \
        --resource-group $RG_NAME \
        --name $IDENTITY_NAME \
        --location $LOCATION
    
  2. Use o az identity show comando para obter o ID principal da identidade gerida e guardá-lo numa variável de ambiente.

    IDENTITY_PRINCIPAL_ID=$(az identity show --resource-group $RG_NAME --name $IDENTITY_NAME --query principalId -o tsv)
    
  3. Atribuir o papel de Contribuidor de Rede à identidade gerida usando o az role assignment create comando. O --assignee-principal-type parâmetro previne falhas causadas por atrasos de replicação após a criação da identidade gerida.

    Importante

    O papel de Network Contributor no âmbito VNet concede permissões amplas. Antes de usar esta abordagem em produção, reveja a configuração do RBAC para configurações personalizadas de sub-redes e considere atribuir permissões de sub-rede com âmbito definido.

    az role assignment create \
        --scope "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RG_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME" \
        --role "Network Contributor" \
        --assignee-object-id $IDENTITY_PRINCIPAL_ID \
        --assignee-principal-type ServicePrincipal
    

Ativar o NAP e ligar-se ao cluster

Use a identidade gerida, o VNet e a sub-rede de nós que criou nas secções anteriores. O cluster deve usar um Balanceador de Carga Standard, conforme descrito nas Limitações.

  1. Crie um cluster AKS com NAP ativada em sua VNet personalizada usando o az aks create comando. A tabela seguinte descreve os parâmetros NAP e de rede usados no comando:

    Parâmetro Value Descrição
    --node-provisioning-mode Auto Ativa o NAP no cluster.
    --network-plugin azure Usa o Azure CNI para redes de clusters.
    --network-plugin-mode overlay Usa o Azure CNI Overlay para rede pod.
    --network-dataplane cilium Utiliza o plano de dados Cilium.

    Para mais informações, consulte Visão Geral das configurações de rede para auto-provisionamento de nós (NAP) no Azure Kubernetes Service (AKS).

    az aks create \
        --name $CLUSTER_NAME \
        --resource-group $RG_NAME \
        --location $LOCATION \
        --assign-identity "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RG_NAME/providers/Microsoft.ManagedIdentity/userAssignedIdentities/$IDENTITY_NAME" \
        --network-dataplane cilium \
        --network-plugin azure \
        --network-plugin-mode overlay \
        --vnet-subnet-id "/subscriptions/$SUBSCRIPTION_ID/resourceGroups/$RG_NAME/providers/Microsoft.Network/virtualNetworks/$VNET_NAME/subnets/$SUBNET_NAME" \
        --node-provisioning-mode Auto \
        --generate-ssh-keys
    

    Quando a criação do cluster termina, o comando devolve informação em formato JSON sobre o cluster.

  2. Configure kubectl para se conectar ao cluster do Kubernetes usando o az aks get-credentials comando. Este comando baixa credenciais e configura a CLI do Kubernetes para usá-las.

    az aks get-credentials \
        --resource-group $RG_NAME \
        --name $CLUSTER_NAME
    
  3. Verifique a conexão ao seu cluster utilizando o comando kubectl get. Este comando devolve uma lista dos nodes do cluster.

    kubectl get nodes
    

Próximos passos

Para obter mais informações sobre o provisionamento automático de nós no AKS, consulte os seguintes artigos: