プライベートクラスター - Amazon EKS

プライベートクラスター

このトピックでは、アウトバウンドインターネットアクセスのないプライベートクラスターをデプロイする方法について説明します。Amazon EKS ネットワークに詳しくない場合は、De-mystifying cluster networking for Amazon EKS worker nodes を参照してください。

要件

アウトバウンドインターネットアクセスのないプライベートクラスターで Amazon EKS を実行するには、以下の要件を満たす必要があります。

  • コンテナイメージは、Amazon Elastic Container Registry (Amazon ECR) にコピーするか、またはプルする VPC 内のレジストリにコピーする必要があります。詳細については、「コンテナイメージのローカルコピーの作成」を参照してください。

  • ワーカーノードをクラスターエンドポイントに登録するには、エンドポイントのプライベートアクセスが必要です。エンドポイントのパブリックアクセスはオプションです。詳細については、「Amazon EKS クラスターエンドポイントのアクセスコントロール」を参照してください。

  • 場合によっては、「プライベートクラスターの VPC エンドポイント」に一覧表示されている VPC エンドポイントを含める必要があります。

  • セルフマネージド型ワーカーノードを起動するときは、以下のテキストをブートストラップ引数に含める必要があります。このテキストは Amazon EKS イントロスペクションを通らないため、VPC 内からの Amazon EKS API へのアクセスは不要です。cluster-endpoint および cluster-certificate-authority を Amazon EKS クラスターの値で置き換えます。

    --apiserver-endpoint cluster-endpoint --b64-cluster-ca cluster-certificate-authority
  • aws-auth ConfigMap は VPC 内から作成する必要があります。aws-auth ConfigMap の作成の詳細については、「クラスターのユーザーまたは IAM ロールの管理」を参照してください。

考慮事項

ここでは、アウトバウンドインターネットアクセスのないプライベートクラスターで Amazon EKS を実行する場合に考慮すべき点をいくつか示します。

  • eksctl はプライベートクラスターではサポートされていません。

  • AWS X-Ray はプライベートクラスターではサポートされていません。

  • Amazon CloudWatch Logs はプライベートクラスターでサポートされていますが、Amazon CloudWatch Logs VPC エンドポイントを使用する必要があります。詳細については、「プライベートクラスターの VPC エンドポイント」を参照してください。

  • セルフマネージド型およびマネージド型ワーカーノードがサポートされています。ワーカーノードのインスタンスには VPC エンドポイントへのアクセスが必要です。マネージド型ノードグループを作成する場合、VPC エンドポイントセキュリティグループでサブネットの CIDR を許可するか、作成したワーカーノードセキュリティグループを VPC エンドポイントセキュリティグループに追加する必要があります。

  • サービスアカウントの IAM ロール がサポートされています。STS VPC エンドポイントを含める必要があります。詳細については、「プライベートクラスターの VPC エンドポイント」を参照してください。

  • Amazon EBS CSI ドライバー がサポートされています。デプロイする前に、kustomization.yaml ファイルを変更して、Amazon EKS クラスターと同じリージョンを使用するようにコンテナイメージを設定する必要があります。

  • Amazon EFS CSI ドライバー がサポートされています。デプロイする前に、kustomization.yaml ファイルを変更して、Amazon EKS クラスターと同じリージョンを使用するようにコンテナイメージを設定する必要があります。

  • Amazon FSx for Lustre CSI ドライバー はサポートされていません。

  • Amazon EKS の ALB Ingress Controller はプライベートクラスターでは機能しません。

  • AWS Fargate はプライベートクラスターではサポートされていません。STS VPC エンドポイントを含める必要があります。詳細については、「プライベートクラスターの VPC エンドポイント」を参照してください。サードパーティーのイングレスコントローラーを AWS Fargate で使用する必要があります。Amazon EKS の ALB Ingress Controller はプライベートクラスターでは機能せず、Classic Load Balancer と Network Load Balancer は Fargate で実行されているポッドではサポートされていないためです。

  • App Mesh は、App Mesh Envoy VPC エンドポイントを使用する場合、プライベートクラスターでサポートされます。詳細については、「プライベートクラスターの VPC エンドポイント」を参照してください。

    • Kubernetes 用 App Mesh サイドカーインジェクターがサポートされています。詳細については、GitHub の App Mesh sidecar injector を参照してください。

    • Kubernetes 用 App Mesh コントローラーはサポートされていません。詳細については、GitHub の App Mesh controller を参照してください。

コンテナイメージのローカルコピーの作成

プライベートクラスターにはアウトバウンドインターネットアクセスがないため、コンテナイメージを Docker Hub などの外部ソースからプルすることはできません。代わりに、コンテナイメージをローカルで Amazon ECR にコピーするか、VPC でアクセス可能な代替レジストリにコピーする必要があります。コンテナイメージは、プライベート VPC の外部から Amazon ECR にコピーできます。プライベートクラスターは、Amazon ECR VPC エンドポイントを使用して Amazon ECR リポジトリにアクセスします。ローカルコピーの作成に使用するワークステーションに Docker と AWS CLI がインストールされている必要があります。

コンテナイメージのローカルコピーを作成するには

  1. Amazon ECR リポジトリを作成します。詳細については、「リポジトリの作成」を参照してください。

  2. docker pull を使用して外部レジストリからコンテナイメージをプルします。

  3. docker tag を使用して Amazon ECR レジストリ、リポジトリ、オプションのイメージタグ名の組み合わせによってイメージをタグ付けします。

  4. レジストリに対して認証します。詳細については、「レジストリの認証」を参照してください。

  5. docker push を使用してイメージを Amazon ECR にプッシュします。

    注記

    新しいイメージの場所を使用するようにリソースの設定を更新してください。

    以下の例では、タグ v1.3.1-linux-amd64 を使用して amazon/aws-node-termination-handler イメージを Docker Hub からプルし、Amazon ECR にローカルコピーを作成します。

    aws ecr create-repository --repository-name amazon/aws-node-termination-handler docker pull amazon/aws-node-termination-handler:v1.3.1-linux-amd64 docker tag amazon/aws-node-termination-handler 111122223333.dkr.ecr.region-code.amazonaws.com/amazon/aws-node-termination-handler:v1.3.1-linux-amd64 aws ecr get-login-password --region region-code | docker login --username AWS --password-stdin 111122223333.dkr.ecr.region-code.amazonaws.com docker push 111122223333.dkr.ecr.region-code.amazonaws.com/amazon/aws-node-termination-handler:v1.3.1-linux-amd64

プライベートクラスターの VPC エンドポイント

以下の VPC エンドポイントが必要になる場合があります。

  • com.amazonaws.region.ec2

  • com.amazonaws.region.ecr.api

  • com.amazonaws.region.ecr.dkr

  • com.amazonaws.region.s3 – コンテナイメージをプルする場合

  • com.amazonaws.region.logs – CloudWatch Logs を使用する場合

  • com.amazonaws.region.sts – サービスアカウントに AWS Fargate または IAM ロールを使用する場合

  • com.amazonaws.region.elasticloadbalancing – Application Load Balancer を使用する場合

  • com.amazonaws.region.autoscaling – Cluster Autoscaler を使用する場合

  • com.amazonaws.region.appmesh-envoy-management – App Mesh を使用する場合