Ajudar a melhorar esta página
Para contribuir com este guia de usuário, escolha o link Editar esta página no GitHub, disponível no painel direito de cada página.
Configurando o roteamento de saída do ambiente de gerenciamento
Por padrão, o Amazon EKS gerencia a rede de saída do ambiente de gerenciamento do Kubernetes para os recursos em sua VPC. Use o roteamento de saída do ambiente de gerenciamento para alterar esse comportamento e gerenciar você mesmo o caminho da rede. Isso lhe dá controle total sobre como o tráfego das interfaces de rede elástica (ENIs) do ambiente de gerenciamento alcança seus recursos de VPC. Você pode rotear por meio de seus próprios gateways NAT, firewalls ou dispositivos de inspeção.
Modos de roteamento de saída
O Amazon EKS oferece suporte aos seguintes modos de roteamento de saída do ambiente de gerenciamento:
| Modo | Descrição |
|---|---|
|
|
Comportamento padrão. O Amazon EKS gerencia o caminho de saída das ENIs do ambiente de gerenciamento. Você não precisa configurar gateways NAT ou outra infraestrutura de roteamento para o tráfego do ambiente de gerenciamento. |
|
|
Você gerencia o caminho de saída do ambiente de gerenciamento em suas sub-redes da VPC. Você é responsável por garantir que o ambiente de gerenciamento possa acessar os endpoints necessários (como servidores de webhook, provedores OIDC e outros recursos). Você fornece um caminho de saída, como um gateway NAT, instância NAT, gateway de trânsito ou dispositivo de firewall. Você também configura a tabela de rotas, a ACL de rede e as regras do grupo de segurança que permitem esse tráfego. |
Importante
No modo CUSTOMER_ROUTED, você é responsável por garantir a conectividade de rede adequada no ambiente de gerenciamento. Configurações incorretas em sua rede da VPC podem causar falhas nas operações do ambiente de gerenciamento. Essas configurações incorretas incluem um caminho de saída ausente, ACLs de rede restritivas ou grupos de segurança incorretos. As operações afetadas incluem chamadas de webhook de admissão e autenticação OIDC.
Pré-requisitos
Sua VPC e sub-redes devem atender aos requisitos de rede padrão do Amazon EKS. Para obter mais informações, consulte Exibir os requisitos de rede do Amazon EKS para VPC e sub-redes.
No modo CUSTOMER_ROUTED, o servidor da API do Kubernetes envia tráfego voltado para o cliente por meio das interfaces de rede entre contas. O Amazon EKS já cria essas interfaces em suas sub-redes para comunicação entre o ambiente de gerenciamento e o nó. Esse tráfego inclui chamadas para webhooks de admissão e provedores OIDC. O Amazon EKS não cria interfaces de rede de saída separadas. Esse modo altera a forma como as interfaces existentes são usadas. As sub-redes que contêm essas interfaces devem atender aos seguintes requisitos:
-
As sub-redes devem ter uma rota para os endpoints que o ambiente de gerenciamento precisa acessar (como servidores de webhook e provedores OIDC). Para endpoints fora da sua VPC, isso geralmente significa uma rota padrão para um dispositivo de saída. O roteamento padrão é
0.0.0.0/0para IPv4 e::/0para IPv6. O dispositivo de saída pode ser um gateway NAT, uma instância NAT, um firewall ou um gateway de trânsito para uma VPC de saída centralizada. A escolha do dispositivo de saída é sua; o Amazon EKS exige apenas que o caminho funcione. -
Os grupos de segurança nas interfaces de rede entre contas devem permitir tráfego de saída nas portas exigidas por suas workloads (por exemplo, porta 443 para webhooks e provedores OIDC).
-
As ACLs de rede nas sub-redes devem permitir o tráfego de saída e o intervalo de portas efêmeras de entrada correspondente para o tráfego de retorno.
No modo CUSTOMER_ROUTED, o ambiente de gerenciamento resolve nomes de host usando a configuração de DNS da sua VPC. Isso permite que o ambiente de gerenciamento acesse endpoints em zonas hospedadas privadas do Route 53 e DNS on-premises encaminhado por meio de endpoints do Route 53 Resolver.
-
Seu conjunto de opções do DHCP da VPC deve incluir
AmazonProvidedDNSna lista de servidores de nomes de domínio. Isso é necessário para que o ambiente de gerenciamento resolva nomes DNS na VPC. Se seu cluster usa endpoints de webhook externos ou provedores OIDC com nomes DNS públicos, o resolvedor também deve resolver nomes de host públicos. Certifique-se de que o resolvedor possa lidar com a resolução de VPC e de DNS público.
A tabela a seguir resume o tráfego que o ambiente de gerenciamento envia por meio de sua VPC no modo CUSTOMER_ROUTED:
| Tráfego | Destino | Porta | Observações |
|---|---|---|---|
|
Webhooks de admissão |
Endpoints de webhook (URLs definidos pelo cliente) |
443 (normalmente) |
Somente se os webhooks estiverem configurados. Sairá da VPC pelo seu dispositivo de saída se o endpoint for externo. |
|
Descoberta de OIDC |
URL do emissor do OIDC |
443 |
Somente se um provedor OIDC estiver configurado. Sairá da VPC pelo seu dispositivo de saída se o emissor for externo. |
|
Servidores de API agregados |
Endpoints do servidor de API do cliente |
443 |
Somente se configurado. Sairá da VPC pelo seu dispositivo de saída se o endpoint for externo. |
|
API do Kubelet |
Endereços IP do nó de processamento |
10250 |
Este é o tráfego entre o ambiente de gerenciamento e seus nós por meio da ENI do cluster; ele não passa pelo seu dispositivo de saída. Isso exige que tabelas de rotas, grupos de segurança e ACLs de rede permitam o tráfego na ENI do cluster entre o ambiente de gerenciamento e seus nós. |
nota
Somente o tráfego indicado nesta tabela é afetado pela configuração de saída. O tráfego do ambiente de gerenciamento controlado pelo EKS (como comunicação com o etcd, CloudWatch Logs e serviços internos do EKS) continua pelo caminho de rede gerenciada pela AWS e não é afetado pela configuração da VPC.
Criar um cluster com saída roteada pelo cliente
Você pode especificar o modo de saída do ambiente de gerenciamento ao criar um novo cluster.
exemplo
Você pode usar ipFamily=ipv6 para clusters IPv6. Ao usar IPv6 com o modo CUSTOMER_ROUTED, certifique-se de que suas sub-redes tenham um gateway da internet somente de saída para tráfego IPv6, além de um gateway NAT para tráfego IPv4.
exemplo
- Console de gerenciamento da AWS
-
-
Abra o console do Amazon EKS
. -
Escolha Add cluster (Adicionar cluster) e, em seguida, Create (Criar).
-
Na página Rede, em Saída do ambiente de gerenciamento, selecione Roteado pelo cliente.
-
Conclua a configuração restante do cluster e escolha Criar.
-
Em AWS CloudFormation, configure ControlPlaneEgressMode: CUSTOMER_ROUTED em ResourcesVpcConfig. A compatibilidade com o Terraform para esse campo estará disponível em uma versão futura do provedor da AWS
nota
Mudar para CUSTOMER_ROUTED é uma operação unidirecional. Depois de habilitar a saída roteada pelo cliente em um cluster, você não poderá reverter para AWS_MANAGED.
Atualizar um cluster existente
Você pode alterar o modo de saída do ambiente de gerenciamento em um cluster existente usando o comando update-cluster-config.
aws eks update-cluster-config \ --name my-cluster \ --resources-vpc-config "controlPlaneEgressMode=CUSTOMER_ROUTED" \ --region region-code
Monitorar o status da atualização:
aws eks describe-update \ --name my-cluster \ --update-id update-id \ --region region-code
A atualização estará concluída quando o status mostrar Successful. O tipo de atualização é ControlPlaneEgressUpdate. A atualização geralmente é concluída em até dez minutos.
Importante
Mudar para CUSTOMER_ROUTED é uma operação unidirecional. Depois de habilitar a saída roteada pelo cliente em um cluster, você não poderá reverter para AWS_MANAGED.
Antes de mudar, confirme se sua VPC atende aos requisitos de Pré-requisitos. Se o ambiente de gerenciamento perder a conectividade com os endpoints necessários após a atualização, as operações como chamadas de webhook de admissão e autenticação OIDC poderão falhar.
Considerações sobre IPv6
Se você executar um cluster IPv6 com saída roteada pelo cliente, precisará configurar os caminhos de saída IPv4 e IPv6.
Ao executar um cluster IPv6 (ipFamily=ipv6) com saída CUSTOMER_ROUTED:
-
As ENIs do ambiente de gerenciamento recebem endereços IPv4 e IPv6.
-
Você deve configurar os caminhos de saída IPv4 e IPv6:
-
IPv4: uma rota padrão (
0.0.0.0/0) para seu dispositivo de saída (por exemplo, um gateway NAT). -
IPv6: uma rota
::/0para um dispositivo de saída IPv6 (por exemplo, um gateway da internet somente de saída).
-
-
Grupos de segurança e NACLs devem permitir tráfego em ambas as versões do IP.
-
Se seu provedor OIDC ou endpoints de webhook forem somente IPv4, certifique-se de que o NAT IPv4 esteja funcional.
Considerações
Lembre-se dos seguintes pontos ao usar a saída do ambiente de gerenciamento roteada pelo cliente:
-
Sua responsabilidade: no modo
CUSTOMER_ROUTED, você é responsável pelo caminho de rede do ambiente de gerenciamento até seus endpoints externos. Se esse caminho for interrompido, as operações do ambiente de gerenciamento que dependem dele (como chamadas de webhook de admissão e autenticação OIDC) podem falhar até que você restaure a conectividade. -
O tráfego interno da VPC não é afetado: o tráfego entre o ambiente de gerenciamento e seus nós (por exemplo, a API do kubelet na porta 10250) por meio da ENI do cluster não depende do seu dispositivo de saída.
-
Modo Automático do EKS: o roteamento de saída do ambiente de gerenciamento funciona da mesma maneira nos clusters do modo padrão e automático porque a arquitetura do ambiente de gerenciamento é idêntica.
-
Capacidades do EKS: as capacidades do EKS (como ArgoCD, ACK e KRO) são executados em uma infraestrutura separada gerenciada pela AWS. O tráfego dos controladores das capacidades do EKS não é roteado pela sua VPC por esse recurso.
-
Observabilidade: se você habilitar os logs de fluxo da VPC em sua VPC ou sub-redes de cluster, poderá observar o tráfego de saída que passa pela sua VPC. Isso inclui chamadas para endpoints de webhook e OIDC. Se os logs de fluxo da VPC não estiverem habilitados, esse tráfego não será registrado em log.
Chave de condição do IAM
O Amazon EKS é compatível com a chave de condição eks:controlPlaneEgressMode. Você pode usar essa chave nas políticas do IAM ou nas políticas de controle de serviços (SCPs) para controlar qual modo de saída os chamadores podem especificar ao criar ou atualizar clusters.
A chave de condição se aplica às seguintes ações:
-
eks:CreateCluster -
eks:UpdateClusterConfig
Por exemplo, o SCP a seguir nega a criação de clusters e atualizações de configuração, a menos que o chamador especifique CUSTOMER_ROUTED:
{ "Version": "2012-10-17", "Statement": [ { "Sid": "RequireCustomerRoutedControlPlane", "Effect": "Deny", "Action": [ "eks:CreateCluster", "eks:UpdateClusterConfig" ], "Resource": "*", "Condition": { "StringNotEquals": { "eks:controlPlaneEgressMode": "CUSTOMER_ROUTED" } } } ] }
Use essa política para impor que todos os clusters novos e atualizados em sua organização usem o modo de saída CUSTOMER_ROUTED.
Configuração do provedor OIDC
Se o seu cluster usar um provedor de identidades OIDC, o ambiente de gerenciamento deverá ser capaz de acessar o endpoint de descoberta do OIDC por HTTPS (porta 443). Isso se aplica aos perfis do IAM para contas de serviço ou a um provedor de identidades OIDC que você associa para autenticação de clusters. Não há uma configuração específica do OIDC; ele usa o mesmo caminho de saída que você configura nos Pré-requisitos. Para permitir isso:
-
Confirme se as sub-redes do ambiente de gerenciamento têm uma rota que cobre o endpoint do OIDC (normalmente uma rota padrão para seu dispositivo de saída, como um gateway NAT).
-
Confirme se o grupo de segurança do cluster permite o TCP 443 de saída.
-
Confirme se as NACLs da sub-rede permitem o TCP 443 de saída e o tráfego de retorno efêmero de entrada (portas 1024–65535).
O endpoint depende do seu provedor:
-
Provedor OIDC do Amazon EKS (padrão):
oidc.eks.region-code.amazonaws.com -
Provedor OIDC personalizado: o URL do emissor que você configurou.
Se a autenticação do OIDC falhar, consulte Provedor OIDC inacessível para obter as etapas de solução de problemas.
Verificar a conectividade
Depois de configurar a saída CUSTOMER_ROUTED, verifique se o ambiente de gerenciamento pode acessar seus recursos da VPC:
-
Verifique o modo de saída atual: confirme se o cluster está usando o modo esperado.
aws eks describe-cluster --name my-cluster \ --query "cluster.resourcesVpcConfig.controlPlaneEgressMode" \ --region region-code -
Verifique o status do cluster: o cluster deve estar no estado
ACTIVE.aws eks describe-cluster --name my-cluster --query "cluster.status" --region region-code -
Teste a conectividade do webhook: se você tiver webhooks de admissão configurados, crie um recurso que acione o webhook e confirme se ele foi bem-sucedido.
-
Verifique o registro do nó: inicialize um nó e confirme se ele ingressou com êxito no cluster.
kubectl get nodes -
Verifique o OIDC: se estiver usando perfis do IAM para contas de serviço (IRSA), verifique se os pods podem assumir seus perfis do IAM.
Para solucionar problemas comuns, consulte Solução de problemas do modo de saída do ambiente de gerenciamento.
📝 Editar esta página no GitHub