Quiero configurar un grupo de seguridad para mis pods de AWS Fargate en mi clúster de Amazon Elastic Kubernetes Service (Amazon EKS). Quiero usar el grupo de seguridad para controlar el tráfico de red entrante y saliente.
Descripción corta
Puedes usar grupos de seguridad para pods individuales para adjuntar tus grupos de seguridad personalizados de Amazon Elastic Compute Cloud (Amazon EC2) a los pods de Fargate de tu clúster de Amazon EKS. Estos grupos de seguridad adjuntos restringen el tráfico de red entrante y saliente hacia y desde pods de Fargate.
De forma predeterminada, los pods de Fargate se configuran automáticamente para usar el grupo de seguridad del clúster para comunicarse con el plano de control de Kubernetes. Puedes usar grupos de seguridad para configurar reglas para el tráfico de red entrante y saliente hacia y desde pods de Fargate.
Los grupos de seguridad que especifiques para tus pods de Fargate deben cumplir los siguientes criterios:
- Deben tener reglas que permitan a los pods comunicarse con el plano de control de Kubernetes. Asegúrate de especificar el grupo de seguridad del clúster como uno de los grupos de seguridad.
- Deben tener las reglas de entrada y salida necesarias para comunicarse con otros pods o terminales. Por ejemplo, deben tener una regla de salida para los pods de CoreDNS con el puerto TCP/UDP 53 para la resolución de nombres.
Resolución
Para aplicar grupos de seguridad a tus pods de Fargate, sigue estos pasos:
-
Despliega una política de grupo de seguridad de Amazon EKS en tu clúster.
Ejemplo:
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
Nota: Sustituye my-security-group-policy, my-namespace, my-role y my-pod-security-group-id por los valores de tu configuración. Puedes usar serviceAccountSelector en lugar de podSelector.
-
Despliega tu aplicación con una etiqueta que coincida con SecurityGroupPolicy.
Ejemplo:
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
-
Confirma que tus pods usen grupos de seguridad de pod. Si los usan, fargate.amazonaws.com/pod-sg se incluye en la anotación. Ejecuta el siguiente comando:
kubectl describe pod pod name -n <namespace> | grep fargate.amazonaws.com/pod-sg
fargate.amazonaws.com/pod-sg: my_pod_security_group_id,...
Nota: Sustituye pod-name por el nombre de tu pod y my_pod_security_group_id por el ID de grupo de seguridad de tu pod.
Información relacionada
Introducing security groups for Pods (Introducción a los grupos de seguridad para pods)