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.
Restringir o tráfego de rede de pods com políticas de rede do Kubernetes
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
É necessário fazer as seguintes configurações para usar esse atributo:
-
Configure aplicação de políticas na inicialização do pod. Você faz isso no contêiner
aws-nodedoDaemonSetCNI da VPC. -
Habilitar o parâmetro da política de redes para o complemento.
-
Configurar o cluster para usar as políticas de rede do Kubernetes
Antes de começar, reveja as considerações. Para obter 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 dove 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 |
|---|---|
|
|
|
|
|
|
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 superior.
Versão mínima do kernel do Linux
Os nós devem ter a versão 5.10 ou superior 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 superior 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
-
Abra o console do Amazon EKS
. -
No painel de navegação à esquerda, selecione Clusters e o nome do cluster para o qual você deseja configurar o complemento Amazon VPC CNI.
-
Escolha a guia Complementos.
-
Selecione a caixa no canto superior direito da caixa do complemento e depois escolha Editar.
-
Na página Configurar
Amazon VPC CNI:-
Selecione a versão
v1.14.0-eksbuild.3ou superior na lista Versão. -
Expanda Definições de configuração opcionais.
-
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.
-
Execute o seguinte comando para alterar as portas. Defina o número da porta no valor da chave
nodeAgent.metricsBindAddrou da chavenodeAgent.healthProbeBindAddr, respectivamente.helm upgrade --set nodeAgent.metricsBindAddr=8162 --set nodeAgent.healthProbeBindAddr=8163 aws-vpc-cni --namespace kube-system eks/aws-vpc-cni
kubectl
-
Abra o
aws-nodeDaemonSetno editor.kubectl edit daemonset -n kube-system aws-node -
Substitua os números da porta nos argumentos do comando a seguir no contêiner
args:no manifesto do daemonsetaws-network-policy-agentdo CNI doaws-nodeVPC.- args: - --metrics-bind-addr=:8162 - --health-probe-bind-addr=:8163
Etapa 3: configurar o cluster para usar as políticas de rede do Kubernetes
É possível configurar isso para um complemento do Amazon EKS ou autogerenciado.
Usando a AWS CLI, você pode configurar o cluster para usar as políticas de rede do Kubernetes ao executar o comando a seguir. 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"}'
Para definir essa configuração usando o Console de Gerenciamento da AWS, siga as etapas abaixo:
-
Abra o console do Amazon EKS
. -
No painel de navegação à esquerda, selecione Clusters e o nome do cluster para o qual você deseja configurar o complemento Amazon VPC CNI.
-
Escolha a guia Complementos.
-
Selecione a caixa no canto superior direito da caixa do complemento e depois escolha Editar.
-
Na página Configurar
Amazon VPC CNI:-
Selecione a versão
v1.14.0-eksbuild.3ou superior na lista Versão. -
Expanda Definições de configuração opcionais.
-
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.
-
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.
-
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
-
Abra o
amazon-vpc-cniConfigMapno editor.kubectl edit configmap -n kube-system amazon-vpc-cni -o yaml -
Adicione a linha a seguir aos
datanoConfigMap.enable-network-policy-controller: "true"Depois de adicionar a linha, o
ConfigMapdeverá ser semelhante ao exemplo a seguir.apiVersion: v1 kind: ConfigMap metadata: name: amazon-vpc-cni namespace: kube-system data: enable-network-policy-controller: "true" -
Abra o
aws-nodeDaemonSetno editor.kubectl edit daemonset -n kube-system aws-node-
Substitua
falseportrueno argumento do comando--enable-network-policy=falseemargs:no contêiner doaws-network-policy-agentno manifesto do daemonset doaws-nodedo VPC CNI.- args: - --enable-network-policy=true
-
Etapa 4: 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 abaixo um exemplo de saída.
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
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