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

Este artigo mostra como criar um cluster de AKS (Serviço de Kubernetes do Azure) com NAP (provisionamento automático de nó) habilitado em uma rede virtual personalizada (VNet). Crie uma VNet e uma sub-rede e conceda a uma identidade gerenciada acesso à VNet.

Pré-requisitos

Limitações

Definir variáveis de ambiente e criar um grupo de recursos

  1. Defina as variáveis de ambiente usadas ao longo deste artigo. Substitua os valores de placeholder pelos seus 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 sua assinatura 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 a rede virtual e a 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ó 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
    

Criar uma identidade gerenciada e atribuir permissões de VNet

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

    az identity create \
        --resource-group $RG_NAME \
        --name $IDENTITY_NAME \
        --location $LOCATION
    
  2. Use o az identity show comando para obter a ID principal da identidade gerenciada e salvá-la em uma variável de ambiente.

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

    Importante

    A função Colaborador de Rede no escopo da VNet concede permissões amplas. Antes de usar essa abordagem em produção, examine a configuração do RBAC para configurações de sub-rede personalizadas e considere atribuir permissões de sub-rede com escopo.

    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
    

Habilitar o NAP e conectar-se ao cluster

Use a identidade gerenciada, a VNet e a sub-rede de nó que você criou nas seções anteriores. O cluster deve usar um Standard Load Balancer, conforme descrito em Limitações.

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

    Parâmetro Value Description
    --node-provisioning-mode Auto Habilita o NAP no cluster.
    --network-plugin azure Usa Azure CNI para rede de cluster.
    --network-plugin-mode overlay Usa Azure sobreposição de CNI para a rede de pods.
    --network-dataplane cilium Usa o plano de dados Cilium.

    Para obter mais informações, consulte Visão geral das configurações de rede para NAP (provisionamento automático de nó) no AKS (Serviço de Kubernetes do Azure).

    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 for concluída, o comando retornará informações formatadas em JSON sobre o cluster.

  2. Configure o kubectl para se conectar ao cluster do Kubernetes usando o comando az aks get-credentials. Este comando baixa as 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 com o cluster usando o comando kubectl get. Esse comando retorna uma lista dos nós de cluster.

    kubectl get nodes
    

Próximas etapas

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