Selecione suas preferências de cookies

Usamos cookies essenciais e ferramentas semelhantes que são necessárias para fornecer nosso site e serviços. Usamos cookies de desempenho para coletar estatísticas anônimas, para que possamos entender como os clientes usam nosso site e fazer as devidas melhorias. Cookies essenciais não podem ser desativados, mas você pode clicar em “Personalizar” ou “Recusar” para recusar cookies de desempenho.

Se você concordar, a AWS e terceiros aprovados também usarão cookies para fornecer recursos úteis do site, lembrar suas preferências e exibir conteúdo relevante, incluindo publicidade relevante. Para aceitar ou recusar todos os cookies não essenciais, clique em “Aceitar” ou “Recusar”. Para fazer escolhas mais detalhadas, clique em “Personalizar”.

Restringir o tráfego de rede de pods com políticas de rede do Kubernetes

Modo de foco
Restringir o tráfego de rede de pods com políticas de rede do Kubernetes - Amazon EKS

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.

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.

Você pode usar uma política de rede do Kubernetes para restringir o tráfego de rede que entra e sai dos pods. Para obter mais informações, consulte Políticas de rede na documentação do Kubernetes.

É necessário fazer as seguintes configurações para usar esse recurso:

  1. Configure aplicação de políticas na inicialização do pod. Você faz isso no contêiner aws-node do DaemonSet CNI da VPC.

  2. Habilitar o parâmetro da política de redes para o complemento.

  3. Configurar o cluster para usar as políticas de rede do Kubernetes

Antes de começar, reveja as considerações. Para ter mais informações, consulte Considerações.

Pré-requisitos

A seguir estão os pré-requisitos do recurso:

Versão mínima do cluster

Um cluster existente do Amazon EKS. Para implantar, consulte Começar a usar o Amazon EKS. O cluster deve ser da versão 1.25 ou mais recente do Kubernetes. O cluster deve estar executando uma das versões do Kubernetes e versões da plataforma listadas na tabela a seguir. Observe que qualquer versão da plataforma e do Kubernetes posterior às versões listadas também é compatível. Para verificar a versão atual do Kubernetes, substitua my-cluster no comando a seguir pelo nome do seu cluster e execute o comando modificado:

aws eks describe-cluster --name my-cluster --query cluster.version --output text
Versão do Kubernetes Versão da plataforma

1.27.4

eks.5

1.26.7

eks.6

1.25.12

eks.7

Versão mínima do VPC CNI

Versão 1.14 ou mais recente do plug-in CNI da Amazon VPC para Kubernetes no cluster. É possível verificar qual é a sua versão atual com o comando a seguir.

kubectl describe daemonset aws-node --namespace kube-system | grep amazon-k8s-cni: | cut -d : -f 3

Se a versão for anterior à 1.14, consulte Atualização do plug-in da CNI da Amazon VPC (complemento do Amazon EKS) para atualizar para a versão 1.14 ou posterior.

Versão mínima do kernel do Linux

Os nós devem ter a versão 5.10 ou posterior do kernel do Linux. Você pode verificar qual é a sua versão atual com uname -r. Se você usa as versões mais recentes do Amazon Linux otimizado para Amazon EKS, das AMIs do Amazon Linux otimizadas para Amazon EKS e as AMIs do Bottlerocket, elas já têm a versão do kernel exigida.

A AMI do Amazon Linux acelerada otimizada para Amazon EKS versão v20231116 ou posterior possui o kernel versão 5.10.

Etapa 1: configurar a aplicação de políticas na inicialização dos pods

O plug-in CNI da Amazon VPC para Kubernetes configura as políticas de rede para os pods em paralelo ao provisionamento de pods. Até que todas as políticas estejam configuradas para o novo pod, os contêineres no novo pod serão iniciados com uma política de permissão padrão. Isso é denominado modo padrão. Uma política de permissão padrão significa que todo o tráfego de entrada e de saída é permitido de e para os novos pods. Por exemplo, os pods não terão nenhuma regra de firewall aplicada (todo o tráfego é permitido) até que o novo pod seja atualizado com as políticas ativas.

Com a variável NETWORK_POLICY_ENFORCING_MODE definida como strict, os pods que usam o plug-in CNI da VPC são iniciados com uma política de negação padrão e, em seguida, as políticas são configuradas. Isso é denominado modo estrito. No modo estrito, você deve ter uma política de rede para cada endpoint que os pods precisam acessar no cluster. Observe que esse requisito se aplica aos pods do CoreDNS. A política de negação padrão não está configurada para pods com sistemas de redes de host.

É possível alterar a política de rede padrão ao definir a variável de ambiente NETWORK_POLICY_ENFORCING_MODE como strict no contêiner aws-node do DaemonSet do plug-in CNI da VPC.

env: - name: NETWORK_POLICY_ENFORCING_MODE value: "strict"

Etapa 2: habilitar o parâmetro da política de redes do complemento

O recurso de política de rede usa a porta 8162 no nó para métricas por padrão. Além disso, o recurso usava uma porta 8163 para sondas de saúde. Se você executar outra aplicação nos nós ou dentro dos pods que precisa usar essas portas, a aplicação não será executada. Na versão v1.14.1 ou posterior da CNI da VPC, você pode alterar essas portas.

Use o procedimento a seguir para habilitar o parâmetro da política de redes do complemento.

AWS Management Console

  1. Abra o console do Amazon EKS.

  2. No painel de navegação à esquerda, selecione Clusters e o nome do cluster para o qual você deseja configurar o complemento Amazon VPC CNI.

  3. Escolha a guia Add-ons (Complementos).

  4. Selecione a caixa no canto superior direito da caixa do complemento e depois escolha Edit (Editar).

  5. Na página Configurar nome do complemento :

    1. Selecione a versão v1.14.0-eksbuild.3 ou posterior na lista Versão.

    2. Expanda Definições de configuração opcionais.

    3. Insira a chave JSON "enableNetworkPolicy": e o valor "true" em Valores da configuração. O texto resultante deve ser um objeto JSON válido. Se esse par de chave e valor for o único dado na caixa de texto, coloque-o entre colchetes { }.

      O seguinte exemplo tem a funcionalidade de política de rede ativada e as métricas e investigações de integridade estão configuradas com os números de porta padrão:

      { "enableNetworkPolicy": "true", "nodeAgent": { "healthProbeBindAddr": "8163", "metricsBindAddr": "8162" } }

Helm

Se você instalou o plug-in CNI da Amazon VPC para Kubernetes por meio do helm, você pode atualizar a configuração para alterar as portas.

  1. Execute o seguinte comando para alterar as portas. Defina o número da porta no valor da chave nodeAgent.metricsBindAddr ou da chave nodeAgent.healthProbeBindAddr, respectivamente.

    helm upgrade --set nodeAgent.metricsBindAddr=8162 --set nodeAgent.healthProbeBindAddr=8163 aws-vpc-cni --namespace kube-system eks/aws-vpc-cni

kubectl

  1. Abra o aws-node DaemonSet no editor.

    kubectl edit daemonset -n kube-system aws-node
  2. Substitua os números da porta nos argumentos do comando a seguir no contêiner args: no manifesto do daemonset aws-network-policy-agent do CNI do aws-node VPC.

    - args: - --metrics-bind-addr=:8162 - --health-probe-bind-addr=:8163

Etapa 3: montar o sistema de arquivos Berkeley Packet Filter (BPF) em nós

É necessário montar o sistema de arquivos Berkeley Packet Filter (BPF) em cada um dos nós.

nota

Se o cluster for da versão 1.27 ou posterior, você poderá pular essa etapa, pois todas as AMIs do Amazon Linux e Bottlerocket otimizadas para o Amazon EKS 1.27 ou posterior já têm esse atributo.

Para todas as outras versões do cluster, se você atualizar o Amazon Linux otimizado para o Amazon EKS para a versão v20230703 ou posterior, ou se atualizar a AMI do Bottlerocket para a versão v1.0.2 ou posterior, poderá pular essa etapa.

  1. Monte o sistema de arquivos Berkeley Packet Filter (BPF) em cada um dos nós.

    sudo mount -t bpf bpffs /sys/fs/bpf
  2. Em seguida, adicione o mesmo comando aos dados do usuário no modelo de inicialização para os grupos do Amazon EC2 Auto Scaling.

Etapa 4: configurar o cluster para usar as políticas de rede do Kubernetes

Configure o cluster para usar as políticas de rede do Kubernetes. É possível configurar isso para um complemento do Amazon EKS ou autogerenciado.

  1. Abra o console do Amazon EKS.

  2. No painel de navegação à esquerda, selecione Clusters e o nome do cluster para o qual você deseja configurar o complemento Amazon VPC CNI.

  3. Escolha a guia Add-ons (Complementos).

  4. Selecione a caixa no canto superior direito da caixa do complemento e depois escolha Edit (Editar).

  5. Na página Configurar nome do complemento:

    1. Selecione a versão v1.14.0-eksbuild.3 ou posterior na lista Versão.

    2. Expanda Definições de configuração opcionais.

    3. Insira a chave JSON "enableNetworkPolicy": e o valor "true" em Valores da configuração. O texto resultante deve ser um objeto JSON válido. Se esse par de chave e valor for o único dado na caixa de texto, coloque-o entre colchetes { }. O exemplo apresentado a seguir mostra que a política de rede está habilitada:

      { "enableNetworkPolicy": "true" }

      A captura de tela a seguir mostra um exemplo desse cenário.

      <shared id="consolelong"/> mostrando o complemento VPC CNI com política de rede na configuração opcional.
  1. Execute o seguinte comando da AWS CLI. Substitua my-cluster pelo nome do cluster e o ARN do perfil do IAM pelo perfil que você está usando.

    aws eks update-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version v1.14.0-eksbuild.3 \ --service-account-role-arn arn:aws:iam::123456789012:role/AmazonEKSVPCCNIRole \ --resolve-conflicts PRESERVE --configuration-values '{"enableNetworkPolicy": "true"}'

Complemento do Amazon EKS

  1. Abra o console do Amazon EKS.

  2. No painel de navegação à esquerda, selecione Clusters e o nome do cluster para o qual você deseja configurar o complemento Amazon VPC CNI.

  3. Escolha a guia Add-ons (Complementos).

  4. Selecione a caixa no canto superior direito da caixa do complemento e depois escolha Edit (Editar).

  5. Na página Configurar nome do complemento:

    1. Selecione a versão v1.14.0-eksbuild.3 ou posterior na lista Versão.

    2. Expanda Definições de configuração opcionais.

    3. Insira a chave JSON "enableNetworkPolicy": e o valor "true" em Valores da configuração. O texto resultante deve ser um objeto JSON válido. Se esse par de chave e valor for o único dado na caixa de texto, coloque-o entre colchetes { }. O exemplo apresentado a seguir mostra que a política de rede está habilitada:

      { "enableNetworkPolicy": "true" }

      A captura de tela a seguir mostra um exemplo desse cenário.

      <shared id="consolelong"/> mostrando o complemento VPC CNI com política de rede na configuração opcional.
  1. Execute o seguinte comando da AWS CLI. Substitua my-cluster pelo nome do cluster e o ARN do perfil do IAM pelo perfil que você está usando.

    aws eks update-addon --cluster-name my-cluster --addon-name vpc-cni --addon-version v1.14.0-eksbuild.3 \ --service-account-role-arn arn:aws:iam::123456789012:role/AmazonEKSVPCCNIRole \ --resolve-conflicts PRESERVE --configuration-values '{"enableNetworkPolicy": "true"}'

Se você instalou o plug-in CNI da Amazon VPC para Kubernetes por meio do helm, você pode atualizar a configuração para habilitar a política de rede.

  1. Execute o comando a seguir para habilitar a política de rede.

    helm upgrade --set enableNetworkPolicy=true aws-vpc-cni --namespace kube-system eks/aws-vpc-cni
  1. Abra o amazon-vpc-cni ConfigMap no editor.

    kubectl edit configmap -n kube-system amazon-vpc-cni -o yaml
  2. Adicione a linha a seguir aos data no ConfigMap.

    enable-network-policy-controller: "true"

    Depois de adicionar a linha, o ConfigMap deverá ser semelhante ao exemplo a seguir.

    apiVersion: v1 kind: ConfigMap metadata: name: amazon-vpc-cni namespace: kube-system data: enable-network-policy-controller: "true"
  3. Abra o aws-node DaemonSet no editor.

    kubectl edit daemonset -n kube-system aws-node
    1. Substitua false por true no argumento do comando --enable-network-policy=false em args: no contêiner do aws-network-policy-agent no manifesto do daemonset do aws-node do VPC CNI.

      - args: - --enable-network-policy=true

Complemento autogerenciado

Se você instalou o plug-in CNI da Amazon VPC para Kubernetes por meio do helm, você pode atualizar a configuração para habilitar a política de rede.

  1. Execute o comando a seguir para habilitar a política de rede.

    helm upgrade --set enableNetworkPolicy=true aws-vpc-cni --namespace kube-system eks/aws-vpc-cni
  1. Abra o amazon-vpc-cni ConfigMap no editor.

    kubectl edit configmap -n kube-system amazon-vpc-cni -o yaml
  2. Adicione a linha a seguir aos data no ConfigMap.

    enable-network-policy-controller: "true"

    Depois de adicionar a linha, o ConfigMap deverá ser semelhante ao exemplo a seguir.

    apiVersion: v1 kind: ConfigMap metadata: name: amazon-vpc-cni namespace: kube-system data: enable-network-policy-controller: "true"
  3. Abra o aws-node DaemonSet no editor.

    kubectl edit daemonset -n kube-system aws-node
    1. Substitua false por true no argumento do comando --enable-network-policy=false em args: no contêiner do aws-network-policy-agent no manifesto do daemonset do aws-node do VPC CNI.

      - args: - --enable-network-policy=true

Etapa 5. Próximas etapas

Depois de concluir a configuração, confirme se os pods aws-node estão sendo executados no cluster.

kubectl get pods -n kube-system | grep 'aws-node\|amazon'

Veja um exemplo de saída abaixo.

aws-node-gmqp7 2/2 Running 1 (24h ago) 24h aws-node-prnsh 2/2 Running 1 (24h ago) 24h

Existem dois contêineres nos pods aws-node na versão 1.14 e posteriores. Nas versões anteriores e quando a política de rede está desabilitada, há apenas um único contêiner nos pods do aws-node.

Agora você pode implantar políticas de rede do Kubernetes no cluster.

Para implementar as políticas de rede do Kubernetes, você cria objetos de NetworkPolicy do Kubernetes e implanta-os no cluster. Os objetos de NetworkPolicy têm seu escopo definido como um namespace. Você implementa políticas para permitir ou negar tráfego entre os pods com base em seletores de rótulos, namespaces e intervalos de endereços IP. Para obter mais informações sobre a criação de objetos de NetworkPolicy, consulte Políticas de rede na documentação do Kubernetes.

A aplicação dos objetos de NetworkPolicy do Kubernetes é implementada usando o Extended Berkeley Packet Filter (eBPF). Em relação a implementações baseadas em iptables, ele oferece menor latência e características de performance, incluindo menor utilização da CPU e prevenção de consultas sequenciais. Além disso, as sondas do eBPF fornecem acesso a dados contextuais ricos que ajudam a depurar problemas complexos no nível do kernel e a melhorar a observabilidade. O Amazon EKS é compatível com um exportador baseado no eBPF que aproveita as sondas para registrar em log os resultados da política em cada nó e exportar os dados para coletores de logs externos para auxiliar na depuração. Para obter mais informações, consulte a documentação do eBPF.

PrivacidadeTermos do sitePreferências de cookies
© 2025, Amazon Web Services, Inc. ou suas afiliadas. Todos os direitos reservados.