Ich möchte eine Sicherheitsgruppe für meine AWS-Fargate-Pods in meinem Amazon Elastic Kubernetes Service (Amazon EKS)-Cluster konfigurieren. Ich möchte die Sicherheitsgruppe verwenden, um den eingehenden und ausgehenden Netzwerkdatenverkehr zu kontrollieren.
Kurzbeschreibung
Du kannst Sicherheitsgruppen für einzelne Pods verwenden, um die benutzerdefinierten Amazon Elastic Compute Cloud (Amazon EC2)-Sicherheitsgruppen an die Fargate-Pods in deinem Amazon-EKS-Cluster anzufügen. Diese angefügten Sicherheitsgruppen schränken den eingehenden und ausgehenden Netzwerkdatenverkehr zu und von Fargate-Pods ein.
Standardmäßig werden Fargate-Pods automatisch so konfiguriert, dass sie die Cluster-Sicherheitsgruppe für die Kommunikation mit der Kubernetes-Steuerebene verwenden. Du kannst Sicherheitsgruppen verwenden, um Regeln für den eingehenden und ausgehenden Netzwerkdatenverkehr zu und von Fargate Pods zu konfigurieren.
Die Sicherheitsgruppen, die du für Fargate-Pods angibst, müssen die folgenden Kriterien erfüllen:
- Sie müssen über Regeln verfügen, die es den Pods ermöglichen, mit der Kubernetes-Steuerebene zu kommunizieren. Stelle sicher, dass du die Cluster-Sicherheitsgruppe als eine der Sicherheitsgruppen angibst.
- Sie müssen über die erforderlichen Regeln für eingehenden und ausgehenden Datenverkehr verfügen, um mit anderen Pods oder Endpunkten kommunizieren zu können. Beispielsweise müssen sie eine Regel für ausgehenden Datenverkehr für CoreDNS-Pods mit TCP/UDP 53-Port für die Namensauflösung haben.
Lösung
Gehe wie folgt vor, um Sicherheitsgruppen auf die Fargate-Pods anzuwenden:
-
Stelle eine Amazon-EKS-Sicherheitsgruppenrichtlinie für den Cluster bereit.
Beispiel:
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
Hinweis: Ersetze my-security-group-policy, my-namespace, my-role und my-pod-security-group-id durch die Werte aus deiner Konfiguration. Du kannst serviceAccountSelector anstelle von podSelector verwenden.
-
Stelle deine Anwendung mit einer Beschriftung bereit, die der SecurityGroupPolicy entspricht.
Beispiel:
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
-
Vergewissere dich, dass die Pods Pod-Sicherheitsgruppen verwenden. Wenn ja, dann ist fargate.amazonaws.com/pod-sg in der Anmerkung enthalten. Führe den folgenden Befehl aus:
kubectl describe pod pod name -n <namespace> | grep fargate.amazonaws.com/pod-sg
fargate.amazonaws.com/pod-sg: my_pod_security_group_id,...
Hinweis: Ersetze pod-name durch den Namen deines Pods und my_pod_security_group_id durch die Sicherheitsgruppen-ID deines Pods.
Ähnliche Informationen
Einführung von Sicherheitsgruppen für Pods