Use API Server VNet Integration in Azure Kubernetes Service (AKS)

Aplica-se a: ✔️ AKS Automatic ✔️ AKS Standard

Um cluster Azure Kubernetes Service (AKS) configurado com API Server VNet Integration projeta o endpoint do servidor API diretamente para uma sub-rede delegada no VNet onde o AKS é implementado. A integração de VNet do Servidor de API permite a comunicação de rede entre o servidor de API e os nós do cluster sem a necessidade de um link ou túnel privado. O servidor de API está disponível atrás de um VIP de balanceador de carga interno na sub-rede delegada, que os nós estão configurados para utilizar. Usando a Integração de VNet do Servidor de API, você pode garantir que o tráfego de rede entre o servidor de API e os pools de nós permaneça apenas na rede privada.

Para a maioria das cargas de trabalho em produção, o AKS Automatic é a experiência AKS padrão recomendada. O AKS Automatic está pronto para produção por predefinição e inclui a Integração da VNet do Servidor de API como funcionalidade de segurança do cluster pré-configurada. No AKS Standard, a integração VNet do API Server é opcional e pode ativa-a durante a criação do cluster ou atualizando um cluster existente.

Para saber mais sobre o AKS Automatic, veja O que é o Azure Kubernetes Service (AKS) Automatic?

Integração VNet do API Server no AKS Automatic e no AKS Standard

A integração VNet do API Server está disponível em ambos os modos de cluster AKS, mas a configuração varia:

  • AKS Automatic: A integração da VNet com o servidor de API está pré-configurada.
  • Padrão AKS: A integração VNet do API Server é opcional e deve ser ativada explicitamente.

Para a maioria dos cenários de produção, comece com o AKS Automático para usar os valores padrão prontos para produção e reduzir a sobrecarga operacional.

Conectividade do servidor de API

O plano de controlo ou servidor API está numa subscrição Azure gerida pelo AKS. O teu cluster ou pool de nós está na tua subscrição do Azure. O servidor e as máquinas virtuais que compõem os nós do cluster podem se comunicar entre si por meio dos IPs VIP e pod do servidor de API projetados na sub-rede delegada.

A integração de VNet do API Server é suportada para clusters públicos ou privados. Você pode adicionar ou remover o acesso público após o provisionamento do cluster. Ao contrário dos clusters que não estão integrados à VNet, os nodos de agente sempre se comunicam diretamente com o endereço IP privado do balanceador de carga interno (ILB) do servidor de API sem usar DNS. Todo o tráfego de nó para servidor de API é mantido em rede privada e nenhum túnel é necessário para a conectividade do servidor de API para o nó. Os clientes fora do cluster que precisam se comunicar com o servidor de API podem fazê-lo normalmente se o acesso à rede pública estiver habilitado. Se o acesso à rede pública estiver desativado, você deverá seguir a mesma metodologia de configuração de DNS privado que os clusters privados padrão.

Pré-requisitos

  • Deve ter instalado o CLI do Azure versão 2.73.0 ou posterior. Você pode verificar sua versão usando o az --version comando.
  • Se trouxer a sua própria rede virtual, reveja os pré-requisitos para a rede virtual.

Limitações

As seguintes limitações aplicam-se à Integração VNet do API Server, quer esteja pré-configurada no AKS Automatic ou explicitamente ativada no AKS Standard:

  • A integração da VNet do Servidor de API não suporta Encriptação de Rede Virtual. Clusters implementados em SKUs de nós do AKS v3 ou anteriores (que não suportam encriptação VNet) são permitidos, mas o tráfego não é encriptado. Clusters implementados em SKUs de nó AKS v4 ou posteriores (que suportam encriptação VNet) são bloqueados porque VNets encriptados são incompatíveis com a integração VNet do API Server. Para mais informações, consulte SKUs VM suportados por AKS.
  • Para usar a rede dual-stack, o seu cluster precisa da versão 1.26.3 ou posterior do Kubernetes, do plugin de rede azure e do modo de plugin de rede overlay. Para mais informações, consulte cluster CNI do Azure com rede com suporte a pilha dupla.

Disponibilidade

  • A integração VNet do API Server está disponível em todas as regiões da cloud pública da GA, exceto o qatarcentral.

Crie um cluster com integração API Server VNet

No AKS Automatic, a integração com VNet do API Server está pré-configurada. Não é necessária nenhuma bandeira explícita --enable-apiserver-vnet-integration .

Crie um cluster AKS Automatic seguindo o guia de início rápido:

AKS Standard: VNet gerida

Pode configurar clusters AKS Standard com integração VNet do API Server em modo VNet gerido como clusters públicos ou privados.

Nota

A integração com o VNet do API Server não está disponível no qatarcentral.

Criar um grupo de recursos

Crie um grupo de recursos usando o az group create comando.

az group create --location <location> --name <resource-group>

Implantar um cluster público

Implementar um cluster público AKS Standard com integração API Server VNet para VNet gerido usando o az aks create comando com a --enable-apiserver-vnet-integration bandeira.

az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --network-plugin azure \
    --enable-apiserver-vnet-integration \
    --generate-ssh-keys

Implantar um cluster privado

Implemente um cluster privado AKS Standard com integração da VNet do servidor da API para VNet gerida, utilizando o comando az aks create com os sinalizadores --enable-apiserver-vnet-integration e --enable-private-cluster.

az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --network-plugin azure \
    --enable-private-cluster \
    --enable-apiserver-vnet-integration \
    --generate-ssh-keys

AKS Standard: traz o teu próprio VNet

Quando utiliza uma VNet própria, tem de criar e delegar uma sub-rede do servidor da API ao Microsoft.ContainerService/managedClusters. Esta delegação concede permissões ao serviço AKS para injetar os pods do servidor API e o balanceador de carga interno nessa subrede. Você não pode usar a sub-rede para outras cargas de trabalho, mas pode usá-la para vários clusters AKS localizados na mesma rede virtual. O tamanho mínimo suportado da sub-rede do servidor API é /28.

A identidade do cluster precisa de permissões tanto para a sub-rede do servidor de API quanto para a do nó. A falta de permissões na sub-rede do servidor de API pode causar uma falha de provisionamento.

Aviso

Um cluster AKS reserva pelo menos nove IPs no espaço de endereçamento da sub-rede. Ficar sem endereços IP pode impedir a escalabilidade do servidor API e causar uma falha do servidor API.

Nota

A integração com o VNet do API Server não está disponível no qatarcentral.

Criar um grupo de recursos

Crie um grupo de recursos usando o az group create comando.

az group create --location <location> --name <resource-group>

Criar uma rede virtual

  1. Crie uma rede virtual usando o az network vnet create comando.

    az network vnet create --name <vnet-name> \
    --resource-group <resource-group> \
    --location <location> \
    --address-prefixes 172.19.0.0/16
    
  2. Crie uma sub-rede do servidor de API usando o az network vnet subnet create comando.

    az network vnet subnet create --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <apiserver-subnet-name> \
    --delegations Microsoft.ContainerService/managedClusters \
    --address-prefixes 172.19.0.0/28
    
  3. Crie uma sub-rede de cluster usando o az network vnet subnet create comando.

    az network vnet subnet create --resource-group <resource-group> \
    --vnet-name <vnet-name> \
    --name <cluster-subnet-name> \
    --address-prefixes 172.19.1.0/24
    

Criar uma identidade gerenciada e dar-lhe permissões na rede virtual

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

    az identity create --resource-group <resource-group> --name <managed-identity-name> --location <location>
    
  2. Atribua a função de Colaborador de Rede à sub-rede do servidor de API usando o az role assignment create comando.

    az role assignment create --scope <apiserver-subnet-resource-id> \
    --role "Network Contributor" \
    --assignee <managed-identity-client-id>
    
  3. Atribua a função de Colaborador de Rede à sub-rede do cluster usando o az role assignment create comando.

    az role assignment create --scope <cluster-subnet-resource-id> \
    --role "Network Contributor" \
    --assignee <managed-identity-client-id>
    

Implantar um cluster público

Implante um cluster AKS público com integração da VNet do API Server usando o comando az aks create com a opção --enable-apiserver-vnet-integration.

az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --network-plugin azure \
    --enable-apiserver-vnet-integration \
    --vnet-subnet-id <cluster-subnet-resource-id> \
    --apiserver-subnet-id <apiserver-subnet-resource-id> \
    --assign-identity <managed-identity-resource-id> \
    --generate-ssh-keys

Implantar um cluster privado

Implante um cluster AKS privado com integração VNet do API Server usando o comando az aks create com os sinalizadores --enable-apiserver-vnet-integration e --enable-private-cluster.

az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --network-plugin azure \
    --enable-private-cluster \
    --enable-apiserver-vnet-integration \
    --vnet-subnet-id <cluster-subnet-resource-id> \
    --apiserver-subnet-id <apiserver-subnet-resource-id> \
    --assign-identity <managed-identity-resource-id> \
    --generate-ssh-keys

Converter um cluster AKS Standard existente para integração do servidor da API na VNet

Aviso

A integração com VNet do API Server é uma funcionalidade unidirecional e sensível à capacidade. Quando ativa a Integração VNet de API Server num cluster AKS Standard existente, aplicam-se as seguintes limitações:

  • Reinício manual necessário: Após ativar a integração VNet do API Server usando az aks update --enable-apiserver-vnet-integration, devido à transição de recursos do plano de controlo, deve reiniciar imediatamente o cluster para que a alteração tenha efeito. Este reinício não é automático. Atrasar a reinicialização aumenta o risco de a capacidade ficar indisponível, o que pode impedir que o servidor de API seja iniciado. O reinício do cluster também garante que todos os nós se reconectam de forma fiável ao novo endpoint do servidor API.
  • A capacidade é validada, mas não reservada: o AKS valida a capacidade regional quando se ativa a funcionalidade num cluster existente, mas essa validação não reserva capacidade. Se adiar o reinício e a capacidade ficar indisponível nesse intervalo, o cluster poderá não conseguir iniciar após uma paragem ou reinício. Clusters que ativaram esta funcionalidade antes da disponibilidade geral (GA), ou que ainda não reiniciaram desde a habilitação, não passam por validação de capacidade.
  • Funcionalidade não pode ser desativada: Uma vez ativada, a funcionalidade torna-se permanente. Não podes desativar a integração com VNet do API Server.

Essa atualização executa uma atualização de versão da imagem de nó em todos os pools de nó e reinicia todas as cargas de trabalho enquanto elas passam por uma atualização progressiva de imagem.

Aviso

A conversão de um cluster para a integração de rede virtual do API Server resulta em uma alteração do endereço IP do servidor de API, embora o nome do host permaneça o mesmo. Se configurar o endereço IP do servidor API em qualquer firewall ou regras de grupo de segurança de rede, poderá precisar de atualizar essas regras.

  1. Atualize seu cluster para API Server VNet Integration usando o az aks update comando com o --enable-apiserver-vnet-integration sinalizador.

    az aks update --name <cluster-name> \
        --resource-group <resource-group> \
        --enable-apiserver-vnet-integration \
        --apiserver-subnet-id <apiserver-subnet-resource-id>
    
  2. Reinicia o teu cluster usando os comandos [az aks stop][az-aks-stop] e [az aks start[az-aks-start].

    az aks stop --name <cluster-name> --resource-group <resource-group>
    az aks start --name <cluster-name> --resource-group <resource-group>
    

Habilitar ou desabilitar o modo de cluster privado em um cluster existente com a integração de rede virtual do API Server

Os clusters AKS configurados com a integração de rede virtual do API Server podem ter o modo de acesso à rede pública/cluster privado ativado ou desativado sem reimplantar o cluster. O nome de host do servidor de API não é alterado, mas as entradas DNS públicas são modificadas ou removidas, se necessário.

Nota

--disable-private-cluster está atualmente em pré-visualização. Para obter mais informações, consulte Níveis de referência e suporte.

Ativar o modo de cluster privado

Habilite o modo de cluster privado usando o comando az aks update com a flag --enable-private-cluster.

az aks update --name <cluster-name> \
    --resource-group <resource-group> \
    --enable-private-cluster \
    --enable-apiserver-vnet-integration \
    --apiserver-subnet-id <apiserver-subnet-resource-id>

Desativar o modo de cluster privado

Desative o modo de cluster privado usando o comando az aks update com o flag --disable-private-cluster.

az aks update --name <cluster-name> \
    --resource-group <resource-group> \
    --disable-private-cluster

Ligar ao cluster com o kubectl

Configure kubectl para se conectar ao cluster usando o comando az aks get-credentials.

az aks get-credentials --resource-group <resource-group> --name <cluster-name>

Pode expor o endpoint do servidor API de um cluster privado com integração API Server VNet usando o Azure Private Link. Os passos seguintes mostram como criar um Private Link Service (PLS) no VNet do cluster e ligar-se a ele a partir de outro VNet ou subscrição usando um Endpoint Privado.

Nota

A integração com o VNet do API Server não está disponível no qatarcentral.

Criar um cluster privado de Integração de VNet do API Server

Crie um cluster AKS privado com a integração VNet do API Server usando o comando az aks create junto com as flags --enable-apiserver-vnet-integration e --enable-private-cluster.

az aks create --name <cluster-name> \
    --resource-group <resource-group> \
    --location <location> \
    --enable-private-cluster \
    --enable-apiserver-vnet-integration

Para mais orientações sobre como configurar Private Link com API Server VNet Integration, consulte Private Link com API Server VNet Integration.

Regras de segurança do grupo de segurança de rede (NSG)

Todo o tráfego dentro da VNet é permitido por padrão. Mas se você adicionou regras do NSG para restringir o tráfego entre sub-redes diferentes, certifique-se de que as regras de segurança do NSG permitam os seguintes tipos de comunicação:

Destino Origem Protocolo Porta Utilizar
APIServer Sub-rede CIDR Sub-rede do cluster TCP 443 e 4443 Necessário para habilitar a comunicação entre nós e o servidor de API.
APIServer Sub-rede CIDR Balanceador de Carga do Azure TCP 9988 Necessário para permitir a comunicação entre o Balanceador de Carga do Azure e o servidor API. Também pode ativar todas as comunicações entre o Balanceador de Carga do Azure e o API Server Subnet CIDR.