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

プライベートクラスター

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

Requirements

アウトバウンドインターネットアクセスのないプライベートクラスターで 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 ロールの管理」を参照してください。

Considerations

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

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

プライベートクラスターにはアウトバウンドインターネットアクセスがないため、コンテナイメージを 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 を使用している場合