Quero configurar um grupo de segurança para meus pods do AWS Fargate no meu cluster Amazon Elastic Kubernetes Service (Amazon EKS). Quero usar o grupo de segurança para controlar o tráfego de entrada e saída da rede.
Breve descrição
É possível usar grupos de segurança para pods individuais para anexar seus grupos de segurança personalizados do Amazon Elastic Compute Cloud (Amazon EC2) aos seus pods Fargate em seu cluster do Amazon EKS. Esses grupos de segurança anexados restringem o tráfego de rede de entrada e saída de e para os pods Fargate.
Por padrão, os pods Fargate são configurados automaticamente para usar o grupo de segurança do cluster para se comunicar com o ambiente de gerenciamento do Kubernetes. É possível usar grupos de segurança para configurar regras para tráfego de rede de entrada e saída de e para os pods Fargate.
Os grupos de segurança que você especifica para seus pods Fargate devem atender aos seguintes critérios:
- Eles devem ter regras que permitam que os pods se comuniquem com o ambiente de gerenciamento do Kubernetes. Certifique-se de especificar o grupo de segurança do cluster como um dos grupos de segurança.
- Eles devem ter as regras de entrada e saída necessárias para se comunicar com outros pods ou endpoints. Por exemplo, eles devem ter uma regra de saída para pods CoreDNS com porta TCP/UDP 53 para resolução de nomes.
Resolução
Para aplicar grupos de segurança aos seus pods Fargate, conclua as seguintes etapas:
-
Implante uma política de grupo de segurança do Amazon EKS em seu cluster.
Exemplo:
apiVersion: vpcresources.k8s.aws/v1beta1
kind: SecurityGroupPolicy
metadata:
name: my-security-group-policy
namespace: my-namespace
spec:
podSelector:
matchLabels:
role: my-role
securityGroups:
groupIds:
- my_pod_security_group_id
Observação: substitua my-security-group-policy, my-namespace, my-role e my-pod-security-group-id pelos valores da sua configuração. É possível usar serviceAccountSelector em vez de podSelector.
-
Implante sua aplicação com um rótulo que corresponda à SecurityGroupPolicy.
Exemplo:
apiVersion: apps/v1
kind: Deployment
metadata:
name: my-deployment
namespace: my-namespace
labels:
app: my-app
spec:
replicas: 4
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
role: my-role
spec:
terminationGracePeriodSeconds: 120
containers:
- name: nginx
image: public.ecr.aws/nginx/nginx:1.23
ports:
- containerPort: 80
-
Confirme se seus pods usam grupos de segurança de pods. Se isso acontecer, fargate.amazonaws.com/pod-sg será incluído na anotação. Execute o seguinte comando:
kubectl describe pod pod name -n <namespace> | grep fargate.amazonaws.com/pod-sg
fargate.amazonaws.com/pod-sg: my_pod_security_group_id,...
Observação: substitua pod-name pelo nome do seu pod e my_pod_security_group_id pelo ID do grupo de segurança do seu pod.
Informações relacionadas
Apresentando grupos de segurança para pods