インターネットアクセスが制限されたプライベートクラスターをデプロイする
このトピックでは、AWS Cloud にデプロイされているが、アウトバウンドインターネットアクセスがない Amazon EKS クラスターをデプロイする方法について説明します。AWS Outposts にローカルクラスターがある場合、このトピックの代わりに「AWS Outposts で Amazon Linux ノードを作成する」を参照してください。
Amazon EKS でのネットワークに詳しくない場合は、「De-mystifying cluster networking for Amazon EKS worker nodes (Amazon EKS ワーカーノードのクラスターネットワークを解明する)
-
クラスターは VPC 内のコンテナレジストリからイメージを取得する必要があります。VPC 内に Amazon Elastic Container Registry を作成し、そこにコンテナイメージをコピーしてノードの取得元にすることができます。詳細については、「あるリポジトリから別のリポジトリにコンテナイメージをコピーする」を参照してください。
-
クラスターでは、エンドポイントのプライベートアクセスが有効になる必要があります。これは、ノードをクラスターエンドポイントに登録するために必要です。エンドポイントのパブリックアクセスはオプションです。詳細については、「クラスター API サーバーエンドポイントへのネットワークアクセスを制御する」を参照してください。
-
セルフマネージド型 Linux および Windows ノードには、起動する前に次のブートストラップ引数を含める必要があります。これらの引数は Amazon EKS のイントロスペクションをバイパスするため、VPC 内からの Amazon EKS API へのアクセスは不要です。
-
次のコマンドを使用して、クラスターのエンドポイントの値を確認します。
my-cluster
の部分は、自分のクラスター名に置き換えます。aws eks describe-cluster --name my-cluster --query cluster.endpoint --output text
出力例は次のとおりです。
https://EXAMPLE108C897D9B2F1B21D5EXAMPLE.sk1.region-code.eks.amazonaws.com
-
次のコマンドを使用して、クラスターの認証機関の値を確認します。
my-cluster
の部分は、自分のクラスター名に置き換えます。aws eks describe-cluster --name my-cluster --query cluster.certificateAuthority --output text
返された出力は長い文字です。
-
次のコマンドの
cluster-endpoint
およびcertificate-authority
を前のコマンドで返された出力の値に置き換えます。セルフマネージド型ノードを起動する際にブートストラップ引数を指定する方法の詳細については、「セルフマネージド Amazon Linux ノードを作成する」および「セルフマネージド Microsoft Windows ノードを作成する」を参照してください。-
Linux ノードを使用する場合。
--apiserver-endpoint cluster-endpoint --b64-cluster-ca certificate-authority
その他の引数については、「GitHub」の「ブートストラップのスクリプト
」を参照してください。 -
Windows ノードを使用する場合。
注記
カスタムサービス CIDR を使用している場合は、
-ServiceCIDR
パラメータを使用して指定する必要があります。そうしなければ、クラスター内の Pods の DNS 解決が失敗します。-APIServerEndpoint cluster-endpoint -Base64ClusterCA certificate-authority
その他の引数については、「ブートストラップスクリプトの設定パラメータ」を参照してください。
-
-
-
クラスターの
aws-auth
ConfigMap
は VPC 内から作成する必要があります。エントリの作成とaws-auth
ConfigMap
への追加の詳細については、ターミナルでeksctl create iamidentitymapping --help
と入力してください。サーバーにConfigMap
が存在しない場合は、このコマンドを使用して ID マッピングを追加したときにeksctl
によって作成されます。 -
サービスアカウントの IAM ロールで構成された Pods は、AWS Security Token Service (AWS STS) API コールから認証情報を入手します。アウトバウンドインターネットアクセスがない場合は、VPC 内で AWS STS VPC エンドポイントを作成して使用する必要があります。ほとんどの AWS
v1
SDK は、AWS STS VPC エンドポイントを使用しないグローバル AWS STS エンドポイント (sts.amazonaws.com
) をデフォルトで使用します。AWS STS VPC エンドポイントを使用するには、リージョンの AWS STS エンドポイント (sts.
) を使用するように SDK を構成する必要がある場合があります。詳細については、「サービスアカウントの AWS Security Token Service エンドポイントを設定する」を参照してください。region-code
.amazonaws.com -
クラスターの VPC サブネットには、Pods がアクセスする必要のあるすべての AWS サービスに対して VPC インターフェイスエンドポイントが必要です。詳細については、「インターフェイス VPC エンドポイントを使用して AWS サービスにアクセスする」を参照してください。下表には、一般的に使用されるサービスとエンドポイントがリスト表示されています。エンドポイントの詳細なリストについては、AWS PrivateLink ガイドの「AWS PrivateLink と連携する AWS サービス」を参照してください。
VPC エンドポイントのために [プライベート DNS 名を有効にする] ことをお勧めします。これにより、ワークロードはパブリック AWS サービスエンドポイントを問題なく引き続き使用できます。
サービス エンドポイント Amazon EC2
com.amazonaws.
region-code
.ec2Amazon Elastic Container Registry (コンテナイメージの取得用)
com.amazonaws.
region-code
.ecr.api、com.amazonaws.region-code
.ecr.dkr、および com.amazonaws.region-code
.s3Application Load Balancerおよび ネットワークロードバランサー
com.amazonaws.
region-code
.elasticloadbalancingAWS X-Ray
com.amazonaws.
region-code
.xrayAmazon CloudWatch Logs
com.amazonaws.
region-code
.logsAWS Security Token Service (サービスアカウントに IAM ロールを使用している場合に必要)
com.amazonaws.
region-code
.sts -
セルフマネージド型ノードはすべて、必要な VPC インターフェイスエンドポイントを持つサブネットにデプロイする必要があります。マネージド型ノードグループを作成する場合には、VPC インターフェイスエンドポイントのセキュリティグループでサブネットの CIDR を許可するか、ノードのセキュリティグループを作成し VPC インターフェイスエンドポイントのセキュリティグループに追加する必要があります。
-
Pods で Amazon EFSAmazon EFS ボリュームを使用する場合、Amazon EFS で伸縮自在なファイルシステムを保存する をデプロイする前に、Amazon EKS クラスターと同じ AWS リージョンを使用するように、ドライバーの kustomization.yaml
ファイルを変更して、コンテナイメージを設定する必要があります。 -
AWS Load Balancer Controller を使用して、AWS Application Load Balancer (ALB) および Network Load Balancer をプライベートクラスターにデプロイできます。デプロイするときは、コマンドラインフラグ
を使用して、 enable-shield
、enable-waf
、およびenable-wafv2
を false に設定する必要があります。Ingress オブジェクトのホスト名を使用した証明書の検出は、サポートされていません。これは、コントローラーが VPC インターフェイスエンドポイントを持たない AWS Certificate Manager に到達する必要があるからです。 このコントローラーでは、Fargate で必要な IP ターゲットを持つネットワークロードバランサをサポートします。詳細については、Application Load Balancer を使用してアプリケーションと HTTP トラフィックをルーティングするおよびネットワークロードバランサーを作成するを参照してください。
-
Cluster Autoscaler
がサポートされています。クラスターオートスケーラー Pods をデプロイする場合、コマンドラインに --aws-use-static-instance-list=true
が含まれていることを確認してください。詳細については、「GitHub」で「静的インスタンスリストを使用」を参照してください。ワーカーノード VPC には、AWS STS VPC エンドポイントと自動スケーリング VPC エンドポイントも含める必要があります。 -
一部のコンテナソフトウェア製品では、AWS Marketplace Metering Service にアクセスする API コールを使用して、使用状況をモニタリングします。プライベートクラスターではこれらの呼び出しが許可されないため、これらのコンテナタイプはプライベートクラスターには使用できません。