スキップしてコンテンツを表示

Amazon EKS クラスターの AWS Fargate ポッドにセキュリティグループを構成する方法を教えてください。

所要時間1分
0

Amazon Elastic Kubernetes Service (Amazon EKS) クラスター内の AWS Fargate ポッドにセキュリティグループを構成したいと考えています。このセキュリティグループにより、インバウンドおよびアウトバウンドのネットワークトラフィックを制御したいです。

簡単な説明

個別のポッド用のセキュリティグループを使用すると、カスタム Amazon Elastic Compute Cloud (Amazon EC2) セキュリティグループを Amazon EKS クラスター内の Fargate ポッドにアタッチできます。これらのセキュリティグループがアタッチされると、Fargate Pods に対するインバウンドおよびアウトバウンドのネットワークトラフィックに制限が適用されます。

デフォルトでは、Fargate ポッドは自動構成により、クラスターのセキュリティグループを使用して Kubernetes コントロールプレーンと通信するよう設定されます。セキュリティグループを使用すると、Fargate ポッドとのインバウンドおよびアウトバウンドのネットワークトラフィックに対するルールを構成できます。

Fargate Pod に指定するセキュリティグループは、次の条件を満たす必要があります。

  • ポッドと Kubernetes コントロールプレーン間の通信を許可するルールが必要です。セキュリティグループの 1 つとして、クラスターのセキュリティグループを指定する必要があります。
  • 他のポッドやエンドポイントと通信するために必須の、インバウンドルールとアウトバウンドルールが必要です。たとえば、名前解決を行うには、CoreDNS ポッドに TCP/UDP ポート 53 で接続するアウトバウンドルールが必要です。

解決策

Fargate Pod にセキュリティグループを適用するには、次の手順を実行します。

  1. 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-policymy-namespacemy-rolemy-pod-security-group-id を実際の構成で使用する値に置き換えてください。podSelector ではなく、serviceAccountSelector を使用することもできます。

  2. 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
  3. ポッドがポッドのセキュリティグループを使用していることを確認します。その場合は、アノテーションに 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 をポッド名に、my_pod_security_group_id ポッドのセキュリティグループ ID に置き換えてください。

関連情報

ポッドにセキュリティグループを導入する

AWS公式更新しました 2ヶ月前
コメントはありません

関連するコンテンツ