我想為 Amazon Elastic Kubernetes Service (Amazon EKS) 叢集中的 AWS Fargate Pod 設定安全群組。我想使用該安全群組來控制傳入與傳出的網路流量。
簡短說明
您可以使用個別 Pod 的安全群組,將自訂的 Amazon Elastic Compute Cloud (Amazon EC2) 安全群組附加到 Amazon EKS 叢集中的 Fargate Pod。這些附加的安全群組會限制 Fargate Pod 的傳入與傳出網路流量。
預設情況下,Fargate Pod 會自動設定為使用叢集安全群組,以與 Kubernetes 控制平面通訊。您可以使用安全群組來設定進出 Fargate Pod 的傳入與傳出網路流量規則。
您為 Fargate Pod 指定的安全群組須符合以下條件:
- 必須包含允許 Pod 與 Kubernetes 控制平面通訊的規則。確保將叢集安全群組指定為其中一個安全群組。
- 必須具有與其他 Pod 或端點通訊所需的傳入與傳出規則。例如,它們必須具有一條傳出規則,指向使用 TCP/UDP 53 連接埠的 CoreDNS Pod 進行名稱解析。
解決方法
若要將安全群組套用到 Fargate Pod,請完成以下步驟:
-
將 Amazon EKS 安全群組政策部署到您的叢集。
範例:
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
**注意:**將 my-security-group-policy、my-namespace、my-role 與 my-pod-security-group-id 替換為您的組態值。您可以使用 serviceAccountSelector 而非 podSelector。
-
使用與 SecurityGroupPolicy 標籤相符的標籤部署您的應用程式。
範例:
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
-
確認您的 Pod 是否使用 Pod 安全群組。如果是,則 fargate.amazonaws.com/pod-sg 將包含在註解中。執行以下命令:
kubectl describe pod pod name -n <namespace> | grep fargate.amazonaws.com/pod-sg
fargate.amazonaws.com/pod-sg: my_pod_security_group_id,...
**注意:**將 pod-name 替換為您的 Pod 名稱,並將 my_pod_security_group_id 替換為 Pod 的安全群組 ID。
相關資訊
介紹 Pod 的安全群組