このページの改善にご協力ください
本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。
クラスター API サーバーエンドポイントへのネットワークアクセスを制御する
このトピックは、Amazon EKS クラスターの Kubernetes API サーバーエンドポイントのプライベートアクセスを有効にし、インターネットからのパブリックアクセスを制限または完全に無効にするのに役立ちます。
新しいクラスターを作成すると、Amazon EKS によってマネージド型の Kubernetes API サーバーのエンドポイントが作成されます。ユーザーはこのエンドポイントを、(kubectl
などの Kubernetes 管理ツールを通じて) クラスターとの通信に使用します。デフォルトでは、この API サーバーエンドポイントはインターネットに公開され、API サーバーへのアクセスは、AWS Identity and Access Management (IAM) とネイティブの Kubernetes Role Based Access Control
Kubernetes API サーバーへのプライベートアクセスを有効にすると、ノードと API サーバー間のすべての通信が VPC 内で行われるようにできます。インターネットから API サーバーにアクセスできる IP アドレスを制限したり、API サーバーへのインターネットアクセスを完全に無効にしたりできます。
注記
このエンドポイントは Kubernetes API サーバー用であり、AWS API と通信するための従来の AWS PrivateLink エンドポイントではないため、Amazon VPC コンソールにはエンドポイントとして表示されません。
クラスターでエンドポイントへのプライベートアクセスを有効にすると、Amazon EKS によって自動的に Route 53 のプライベートホストゾーンが作成され、クラスターの VPC に関連付けられます。このプライベートホストゾーンは Amazon EKS によって管理され、アカウントの Route 53 リソースには表示されません。プライベートホストゾーンが API サーバーに正しくトラフィックをルーティングするためには、VPC で enableDnsHostnames
と enableDnsSupport
が true
に設定され、VPC 用に設定された DHCP オプションで、ドメイン名サーバーリストに AmazonProvidedDNS
が含まれている必要があります。詳細については、Amazon VPC ユーザーガイドの「VPC の DNS サポートを表示および更新する」を参照してください。
API サーバーエンドポイントのアクセス要件は、新しいクラスターを作成するときに定義できます。また、クラスターの API サーバーエンドポイントのアクセスは、随時更新できます。
クラスターエンドポイントのアクセスの変更
既存クラスターのエンドポイントのアクセスを変更するには、このセクションの手順に従ってください。次の表は、サポートされている API サーバーエンドポイントのアクセスの組み合わせとそれらに関連付けられている動作を示しています。
エンドポイントのパブリックアクセス | エンドポイントのプライベートアクセス | Behavior |
---|---|---|
有効 | Disabled |
|
有効 | 有効 |
|
Disabled | 有効 |
|
AWS Management Console または AWS CLI を使用して、クラスター API サーバーのエンドポイントアクセスを変更できます。
プライベート専用 API サーバーへのアクセス
クラスターの Kubernetes API サーバーエンドポイントに対するパブリックアクセスを無効にした場合は、VPC または 接続されたネットワーク 内からのみ API サーバーにアクセスできます。Kubernetes API サーバーエンドポイントにアクセスする方法はいくつかあります。
- 接続されたネットワーク
-
AWS トランジットゲートウェイまたはその他の接続オプションを使用してネットワークを VPC に接続し、接続されたネットワークのコンピュータを使用します。接続されたネットワークからのポート 443 でのイングレストラフィックを許可するためのルールが、Amazon EKS コントロールプレーンセキュリティグループに含まれていることを確認する必要があります。
- Amazon EC2 踏み台ホスト
-
Amazon EC2 インスタンスをクラスターの VPC のパブリックサブネットで起動し、SSH 経由でそのインスタンスにログインして
kubectl
コマンドを実行できます。詳細については、「Linux の AWS 踏み台ホスト」を参照してください。踏み台ホストからのポート 443 でのイングレストラフィックを許可するためのルールが、Amazon EKS コントロールプレーンセキュリティグループに含まれていることを確認する必要があります。詳細については、「クラスターの Amazon EKS セキュリティグループ要件を表示する」を参照してください。 踏み台ホスト用に
kubectl
を設定するときには、クラスターの RBAC 設定に既にマッピングされている AWS 認証情報を使用するか、踏み台ホストが使用する IAM プリンシパル を RBAC 設定に追加してから、エンドポイントのパブリックアクセスを削除します。詳細については、IAM ユーザーおよびロールに Kubernetes APIs へのアクセスを付与するおよび許可されていないか、アクセスが拒否されました (kubectl)を参照してください。 - AWS Cloud9 IDE
-
AWS Cloud9 は、ブラウザだけでコードを記述、実行、およびデバッグできるクラウドベースの統合開発環境 (IDE) です。クラスターの VPC に AWS Cloud9 IDE を作成し、その IDE を使用してクラスターと通信できます。詳細については、AWS Cloud9 で環境を作成するを参照してください。Amazon EKS コントロールプレーンセキュリティグループに、IDE セキュリティグループからのポート 443 でのイングレストラフィックを許可するためのルールが、含まれていることを確認する必要があります。詳細については、「クラスターの Amazon EKS セキュリティグループ要件を表示する」を参照してください。
AWS Cloud9 IDE 用に
kubectl
を設定するときには、クラスターの RBAC 設定に既にマッピングされている AWS 認証情報を使用するか、IDE が使用する IAM プリンシパルを RBAC 設定に追加してから、エンドポイントのパブリックアクセスを削除します。詳細については、IAM ユーザーおよびロールに Kubernetes APIs へのアクセスを付与するおよび許可されていないか、アクセスが拒否されました (kubectl)を参照してください。