Criar um cluster privado do Serviço Kubernetes do Azure (AKS)

Em um cluster privado, o plano de controle ou servidor de API tem endereços IP internos que são definidos no documento RFC1918 - Address Allocation for Private Internet . Ao utilizar um cluster privado, pode assegurar que o tráfego de rede entre o servidor de API e os conjuntos de nós permanece apenas na rede privada.

O plano de controle ou servidor de API está em um grupo de recursos do Azure gerenciado pelo Serviço Kubernetes (AKS). O cluster ou pool de nós está no grupo de recursos. O servidor e o cluster ou pool de nós podem se comunicar entre si por meio do serviço de Link Privado do Azure na rede virtual do servidor de API e de um ponto de extremidade privado exposto na sub-rede do cluster AKS.

Quando aprovisiona um cluster privado do AKS, por predefinição, o AKS cria um FQDN privado com uma zona DNS privada e um FQDN público adicional com um registo A correspondente no DNS público do Azure. Os nós do agente continuam a usar o registro A na zona DNS privada para resolver o endereço IP privado do ponto de extremidade privado para comunicação com o servidor de API.

O objetivo deste artigo é ajudá-lo a implantar um cluster AKS baseado em link privado. Se você estiver interessado em criar um cluster AKS sem o link privado ou túnel necessário, consulte Criar um cluster do Serviço Kubernetes do Azure com Integração VNet do Servidor de API (visualização).

Disponibilidade da região

O cluster privado está disponível em regiões públicas, Azure Government e Microsoft Azure operadas por regiões 21Vianet onde o AKS é suportado.

Pré-requisitos

  • A CLI do Azure versão 2.28.0 e superior. Execute az --version para localizar a versão e execute az upgrade para atualizar a versão. Se precisar de instalar ou atualizar, veja Install Azure CLI (Instalar o Azure CLI).
  • A aks-preview extensão 0.5.29 ou superior.
  • Se estiver usando o Azure Resource Manager (ARM) ou a API REST do Azure, a versão da API AKS deve ser 2021-05-01 ou superior.
  • O serviço Azure Private Link é suportado apenas no Balanceador de Carga do Azure Padrão. O Balanceador de Carga do Azure Básico não é suportado.
  • Para usar um servidor DNS personalizado, adicione o endereço IP público do Azure 168.63.129.16 como o servidor DNS upstream no servidor DNS personalizado e certifique-se de adicionar esse endereço IP público como o primeiro servidor DNS. Para obter mais informações sobre o endereço IP do Azure, consulte O que é o endereço IP 168.63.129.16?
    • A zona DNS do cluster deve ser a que você encaminha para 168.63.129.16. Você pode encontrar mais informações sobre nomes de zona na configuração de zona DNS dos serviços do Azure.

Nota

O pool de nós do Linux do Azure agora está disponível em geral (GA). Para saber mais sobre os benefícios e as etapas de implantação, consulte a Introdução ao Host de Contêiner Linux do Azure para AKS.

Limitações

Criar um cluster AKS privado

Criar um grupo de recursos

Crie um grupo de recursos usando o az group create comando. Você também pode usar um grupo de recursos existente para seu cluster AKS.

az group create -l eastus -n myResourceGroup

Rede básica padrão

Crie um cluster privado com rede básica padrão usando o comando com o az aks create--enable-private-cluster sinalizador.

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster  

Rede avançada

Crie um cluster privado com rede avançada usando o az aks create comando com os seguintes sinalizadores:

az aks create \
    --resource-group <private-cluster-resource-group> \
    --name <private-cluster-name> \
    --load-balancer-sku standard \
    --enable-private-cluster \
    --network-plugin azure \
    --vnet-subnet-id <subnet-id> \
    --dns-service-ip 10.2.0.10 \
    --service-cidr 10.2.0.0/24 

Usar domínios personalizados

Se você quiser configurar domínios personalizados que só podem ser resolvidos internamente, consulte Usar domínios personalizados.

Desativar um FQDN público

Desativar um FQDN público em um novo cluster AKS

Desative um FQDN público ao criar um cluster AKS privado usando o --disable-public-fqdn sinalizador.

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone <private-dns-zone-mode> --disable-public-fqdn

Desabilitar um FQDN público em um cluster existente

Desative um FQDN público em um cluster AKS existente usando o comando com o az aks update--disable-public-fqdn sinalizador.

az aks update -n <private-cluster-name> -g <private-cluster-resource-group> --disable-public-fqdn

Configurar uma zona DNS privada

Você pode configurar zonas DNS privadas usando os seguintes parâmetros:

  • system: Este é o valor padrão. Se o argumento for omitido, o --private-dns-zone AKS criará uma zona DNS privada no grupo de recursos do nó.
  • none: O padrão é DNS público. O AKS não criará uma zona DNS privada.
  • CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID: Isso requer que você crie uma zona DNS privada no seguinte formato para a nuvem global do Azure: privatelink.<region>.azmk8s.io ou <subzone>.privatelink.<region>.azmk8s.io. Você precisará do ID de recurso da zona DNS privada para uso futuro. Você também precisa de uma identidade atribuída pelo usuário ou entidade de serviço com as funções de Colaborador de Zona DNS Privada e Colaborador de Rede. Ao implantar usando a integração de VNet do servidor de API, uma zona DNS privada suporta o formato de nomenclatura de private.<region>.azmk8s.io ou <subzone>.private.<region>.azmk8s.io.
    • Se a zona DNS privada estiver em uma assinatura diferente do cluster AKS, você precisará registrar o provedor do Azure Microsoft.ContainerServices em ambas as assinaturas.
    • "fqdn-subdomain" pode ser utilizado com "CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID" apenas para fornecer recursos de subdomínio para privatelink.<region>.azmk8s.io.
    • Se o cluster AKS estiver configurado com uma entidade de serviço do Ative Directory, o AKS não suporta o uso de uma identidade gerenciada atribuída pelo sistema com zona DNS privada personalizada.
    • Se você estiver especificando um, há um <subzone> limite de 32 caracteres para o <subzone> nome.

Nota

CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID pode ser configurado usando um Modelo ARM além da CLI do Azure. privateDNSZone aceita o resourceID da zona DNZ privada, conforme mostrado no exemplo a seguir:

properties.apiServerAccessProfile.privateDNSZone.
"apiServerAccessProfile": {
"enablePrivateCluster": true,
"privateDNSZone": "system|none|[resourceId(..., 'Microsoft.Network/privateDnsZones', 'privatelink.<region>.azmk8s.io']"
}

Importante

O CUSTOM_PRIVATE_DNS_ZONE_RESOURCE_ID não pode ser alterado após a criação do cluster e não pode ser excluído. Caso contrário, o cluster terá problemas ao executar operações de atualização.

Criar um cluster AKS privado com uma zona DNS privada

Crie um cluster AKS privado com uma zona DNS privada usando o az aks create comando com os seguintes sinalizadores:

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone [system|none]

Criar um cluster AKS privado com uma zona DNS privada personalizada ou uma subzona DNS privada

Crie um cluster AKS privado com uma zona ou subzona DNS privada personalizada usando o az aks create comando com os seguintes sinalizadores:

# The custom private DNS zone name should be in the following format: "<subzone>.privatelink.<region>.azmk8s.io"

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone <custom private dns zone or custom private dns subzone resourceID>

Criar um cluster AKS privado com uma zona DNS privada personalizada e um subdomínio personalizado

Crie um cluster AKS privado com uma zona DNS privada personalizada e um subdomínio usando o az aks create comando com os seguintes sinalizadores:

# The custom private DNS zone name should be in one of the following formats: "privatelink.<region>.azmk8s.io" or "<subzone>.privatelink.<region>.azmk8s.io"

az aks create -n <private-cluster-name> -g <private-cluster-resource-group> --load-balancer-sku standard --enable-private-cluster --enable-managed-identity --assign-identity <resourceID> --private-dns-zone <custom private dns zone resourceID> --fqdn-subdomain <subdomain>

Atualizar um cluster privado de uma zona DNS privada para pública

Nota

Este recurso requer a versão >de aks-preview extensão = 0.5.97

Atualize um cluster privado de byo ou system para none usando o az aks update comando com os seguintes sinalizadores:

az aks update -n <private-cluster-name> -g <private-cluster-resource-group> --private-dns-zone none

Nota

Você só pode atualizar de byo ou system para none. Nenhuma outra combinação de valores de atualização é suportada.

Opções para ligar ao cluster privado

O ponto de extremidade do servidor de API não tem endereço IP público. Para gerenciar o servidor de API, você precisará usar uma VM que tenha acesso à Rede Virtual do Azure (VNet) do cluster AKS. Existem várias opções para estabelecer conectividade de rede com o cluster privado:

Nota

Criar uma VM na mesma VNet que o cluster AKS é a opção mais fácil. A Rota Expressa e as VPNs adicionam custos e exigem complexidade de rede adicional. O emparelhamento de rede virtual requer que você planeje seus intervalos CIDR de rede para garantir que não haja intervalos sobrepostos.

Peering de rede virtual

O emparelhamento de rede virtual é uma maneira de acessar seu cluster privado. Para usar o emparelhamento de rede virtual, você precisa configurar um link entre a rede virtual e a zona DNS privada.

  1. No browser, aceda ao portal do Azure.
  2. No portal do Azure, vá para o grupo de recursos do nó.
  3. Selecione a zona DNS privada.
  4. No painel esquerdo, selecione Rede virtual.
  5. Crie um novo link para adicionar a rede virtual da VM à zona DNS privada. Leva alguns minutos para que o link da zona DNS fique disponível.
  6. No portal do Azure, navegue até o grupo de recursos que contém a rede virtual do cluster.
  7. No painel direito, selecione a rede virtual. O nome da rede virtual está no formato aks-vnet-*.
  8. No painel esquerdo, selecione Emparelhamentos.
  9. Selecione Adicionar, adicione a rede virtual da VM e crie o emparelhamento. Para obter mais informações, consulte Emparelhamento de rede virtual.

Hub e falou com DNS personalizado

As arquiteturas Hub e spoke são normalmente usadas para implantar redes no Azure. Em muitas dessas implantações, as configurações de DNS nas VNets spoke são configuradas para fazer referência a um encaminhador DNS central para permitir a resolução DNS local e baseada no Azure. Ao implantar um cluster AKS em tal ambiente de rede, há algumas considerações especiais:

Private cluster hub and spoke

  • Quando um cluster privado é provisionado, um ponto de extremidade privado (1) e uma zona DNS privada (2) são criados no grupo de recursos gerenciado por cluster por padrão. O cluster usa um A registro na zona privada para resolver o IP do ponto de extremidade privado para comunicação com o servidor de API.
  • A zona DNS privada está vinculada somente à VNet à qual os nós do cluster estão conectados (3). Isso significa que o ponto de extremidade privado só pode ser resolvido por hosts nessa VNet vinculada. Em cenários em que nenhum DNS personalizado está configurado na VNet (padrão), isso funciona sem problemas, pois os hosts apontam em 168.63.129.16 para DNS que pode resolver registros na zona DNS privada devido ao link.
  • Em cenários em que a rede virtual que contém o cluster tem configurações de DNS personalizadas (4), a implantação do cluster falha, a menos que a zona DNS privada esteja vinculada à rede virtual que contém os resolvedores de DNS personalizados (5). Esse link pode ser criado manualmente depois que a zona privada é criada durante o provisionamento de cluster ou por meio da automação após a deteção da criação da zona usando mecanismos de implantação baseados em eventos (por exemplo, Grade de Eventos do Azure e Azure Functions). Para evitar falhas de cluster durante a implantação inicial, o cluster pode ser implantado com o ID de recurso da zona DNS privada. Isso só funciona com o tipo Microsoft.ContainerService/managedCluster de recurso e a versão 2022-07-01da API. Não há suporte para o uso de uma versão mais antiga com um modelo ARM ou definição de recurso do Bíceps.

Nota

O Encaminhamento Condicional não suporta subdomínios.

Nota

Se você estiver usando traga sua própria tabela de rotas com kubenet e traga seu próprio DNS com clusters privados, a criação do cluster falhará. Você precisa associar o RouteTable no grupo de recursos do nó à sub-rede depois que a criação do cluster não conseguiu tornar a criação bem-sucedida.

Usar uma conexão de ponto de extremidade privada

Um ponto de extremidade privado pode ser configurado para que uma VNet não precise ser emparelhada para se comunicar com o cluster privado. Para usar um ponto de extremidade privado, crie um novo ponto de extremidade privado em sua rede virtual e, em seguida, crie um link entre sua rede virtual e uma nova zona DNS privada.

Importante

Se a rede virtual estiver configurada com servidores DNS personalizados, o DNS privado precisará ser configurado adequadamente para o ambiente. Consulte a documentação de resolução de nomes de redes virtuais para obter mais detalhes.

Criar um recurso de ponto de extremidade privado

Crie um recurso de ponto de extremidade privado em sua rede virtual:

  1. No browser, aceda ao portal do Azure.
  2. No menu do portal do Azure, selecione Criar um recurso.
  3. Procure por Ponto de extremidade privado e selecione Criar > ponto de extremidade privado.
  4. Selecione Criar.
  5. Na guia Noções básicas, configure as seguintes opções:
    • Detalhes do projeto:
      • Selecione uma Subscrição do Azure.
      • Selecione o grupo de Recursos do Azure onde sua rede virtual está localizada.
    • Detalhes da instância:
      • Insira um Nome para o ponto de extremidade privado, como myPrivateEndpoint.
      • Selecione uma região para o ponto de extremidade privado.

Importante

Verifique se a região selecionada é a mesma da rede virtual da qual você deseja se conectar, caso contrário, você não verá sua rede virtual na guia Configuração .

  1. Selecione Next: Resource e configure as seguintes opções:
    • Método de conexão: selecione Conectar a um recurso do Azure em meu diretório.
    • Assinatura: selecione a assinatura onde o cluster privado está localizado.
    • Tipo de recurso: Selecione Microsoft.ContainerService/managedClusters.
    • Recurso: Selecione seu cluster privado.
    • Subrecurso de destino: Selecione gerenciamento.
  2. Selecione Next: Virtual Network e configure as seguintes opções:
    • Ligação em rede:
      • Rede virtual: Selecione sua rede virtual.
      • Sub-rede: Selecione sua sub-rede.
  3. Selecione Next: DNS>Next: Tags e (opcionalmente) configure valores-chave conforme necessário.
  4. Selecione Seguinte: Rever + criar>Criar.

Depois que o recurso for criado, registre o endereço IP privado do ponto de extremidade privado para uso futuro.

Criar uma zona DNS privada

Depois que o ponto de extremidade privado for criado, crie uma nova zona DNS privada com o mesmo nome da zona DNS privada criada pelo cluster privado:

  1. Vá para o grupo de recursos de nó no portal do Azure.
  2. Selecione a zona DNS privada e registre:
    • O nome da zona DNS privada, que segue o padrão *.privatelink.<region>.azmk8s.io.
    • O nome do A registo (excluindo o nome DNS privado).
    • O time-to-live (TTL).
  3. No portal do Azure, selecione Criar um recurso.
  4. Procure por zona DNS privada e selecione Criar > zona DNS privada.
  5. Na guia Noções básicas, configure as seguintes opções:
    • Detalhes do projeto:
      • Selecione a sua Subscrição.
      • Selecione o grupo de recursos onde você criou o ponto de extremidade privado.
    • Detalhes da instância:
      • Insira o Nome da zona DNS recuperada das etapas anteriores.
      • O padrão da região é o local do seu grupo de recursos.
  6. Selecione Rever + criar>Criar.

Criar um A registo

Depois que a zona DNS privada for criada, crie um A registro, que associe o ponto de extremidade privado ao cluster privado:

  1. Vá para a zona DNS privada que você criou nas etapas anteriores.
  2. Na página Visão geral, selecione Conjunto de registros.
  3. Na guia Adicionar conjunto de registros, configure as seguintes opções:
    • Nome: insira o nome recuperado do A registro na zona DNS do cluster privado.
    • Tipo: Selecione A - Registro de endereço.
    • TTL: Insira o A número do registro na zona DNS do cluster privado.
    • Unidade TTL: altere o valor suspenso para corresponder ao valor no A registro da zona DNS do cluster privado.
    • Endereço IP: insira o endereço IP do ponto de extremidade privado que você criou.

Importante

Ao criar o registro, use apenas o nome e não o A nome de domínio totalmente qualificado (FQDN).

Depois que o registro for criado, vincule a zona DNS privada à rede virtual que acessará o A cluster privado:

  1. Vá para a zona DNS privada que você criou nas etapas anteriores.
  2. No painel esquerdo, selecione Links de rede virtual.
  3. Selecione Adicionar e configure as seguintes opções:
    • Nome do link: insira um nome para o link de rede virtual.
    • Assinatura: selecione a assinatura onde o cluster privado está localizado.
    • Rede virtual: selecione a rede virtual do seu cluster privado.
  4. Selecione OK para criar a ligação.

Pode levar alguns minutos para que a operação seja concluída. Depois que o link de rede virtual for criado, você poderá acessá-lo na guia Links de rede virtual usado na etapa 2.

Aviso

Se o cluster privado for interrompido e reiniciado, o serviço de link privado original do cluster privado será removido e recriado, o que interrompe a conexão entre seu ponto de extremidade privado e o cluster privado. Para resolver esse problema, exclua e recrie todos os pontos de extremidade privados criados pelo usuário vinculados ao cluster privado. Se os pontos de extremidade privados recriados tiverem novos endereços IP, você também precisará atualizar os registros DNS.

Próximos passos

Para obter as melhores práticas associadas, consulte Práticas recomendadas para conectividade de rede e segurança no AKS.