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 uma rede virtual (VNet) e uma sub-rede, criar uma identidade gerenciada com permissões para acessar a VNet e criar um cluster AKS (Azure Kubernetes Service) em sua VNet personalizada com o provisionamento automático de nó (NAP) habilitado.

Pré-requisitos

Limitações

Criar a rede virtual e a sub-rede

Importante

Ao usar uma VNet personalizada com NAP, tenha em mente as seguintes informações:

  • Você deve criar e delegar uma sub-rede de servidor de API para Microsoft.ContainerService/managedClusters, o que concede permissões para o serviço AKS injetar os pods do servidor de API e o balanceador de carga interno nessa sub-rede. Você não pode usar a sub-rede para outras cargas de trabalho, mas pode usá-la para vários clusters do AKS localizados na mesma VNet. O tamanho mínimo de sub-rede do servidor de API com suporte é /28.
  • Todo o tráfego dentro da VNet é permitido por padrão. No entanto, se você adicionou regras de NSG (grupo de segurança de rede) para restringir o tráfego entre sub-redes diferentes, será necessário garantir que você configure as permissões adequadas. Para obter mais informações, consulte a documentação do grupo de segurança de 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 usando o az network vnet subnet create comando e delega-a para Microsoft.ContainerService/managedClusters.

    az network vnet subnet create \
        --resource-group $RG_NAME \
        --vnet-name $VNET_NAME \
        --name $SUBNET_NAME \
        --delegations Microsoft.ContainerService/managedClusters \
        --address-prefixes 172.19.0.0/28
    

Criar uma identidade gerenciada e conceder permissões para acessar a 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. Obtenha a ID principal da identidade gerenciada e defina-a como uma variável de ambiente usando o comando [az identity show][az-identity-show].

    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.

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

Criar um cluster do AKS com provisionamento automático de nó (NAP) em uma VNet personalizada

  1. Crie um cluster do AKS com NAP habilitado em sua VNet personalizada usando o az aks create comando. Para habilitar o NAP, defina o flag --node-provisioning-mode como Auto.

    O comando a seguir também define --network-plugin como azure, --network-plugin-mode como overlay e --network-dataplane como cilium. Para obter mais informações sobre as configurações de rede compatíveis com o NAP, consulte Configurar a rede para provisionamento automático de nós no 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/$CUSTOM_VNET_NAME/subnets/$SUBNET_NAME" \
        --node-provisioning-mode Auto
    

    Após alguns minutos, o comando será concluído e retornará informações no formato 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: