このページの改善にご協力ください
このユーザーガイドに貢献するには、すべてのページの右側のペインにある「GitHub でこのページを編集する」リンクを選択してください。
クラスター API サーバーエンドポイント
このトピックでは、Amazon EKS クラスターの Kubernetes API サーバーエンドポイントや上限へのプライベートアクセスを有効化する方法、あるいは、インターネットからのパブリックアクセスを完全に無効化する方法について説明します。
新しいクラスターを作成すると、Amazon EKS によって、マネージド型 Kubernetes API サーバー用にエンドポイントが作成されます。このエンドポイントは、ユーザーが (kubectl
などの Kubernetes 管理ツールを使用ながら) クラスターとの通信に使用します。デフォルトでは、この API サーバーエンドポイントはインターネットに公開されます。API サーバーへのアクセスの保護には、AWS Identity and Access Management (IAM) と、ネイティブの Kubernetes ロールベースアクセスコントロール
IPv6
クラスターエンドポイント形式
EKS は2024 年 10 月以降に作成された新しい IPv6
クラスターに対して、次の形式で一意のデュアルスタックエンドポイントを作成します。IPv6 クラスターはクラスターの IP ファミリー (ipFamily
) 設定で IPv6
を選択するクラスターです。
注記
デュアルスタッククラスターエンドポイントは2024 年 10 月に導入されました。IPv6
クラスターの詳細については「クラスター、Pod、サービスに対する IPv6 アドレスの説明」を参照してください。2024 年 10 月より前に作成されたクラスターは代わりに次のエンドポイント形式を使用します。
IPv4
クラスターエンドポイント形式
EKS はクラスターの IP ファミリー (ipFamily 設定で IPv4
を選択したクラスターごとに、次の形式で一意のエンドポイントを作成します:
注記
2024 年 10 月以前、IPv6
クラスターはこのエンドポイント形式も使用していました。これらのクラスターではパブリックエンドポイントとプライベートエンドポイントの両方において、このエンドポイントから解決できるのは IPv4
アドレスのみです。
クラスタープライベートエンドポイント
Kubernetes API サーバーへのプライベートアクセスを有効にすると、ノードと API サーバー間のすべての通信が VPC 内で行われるようになります。インターネットから API サーバーにアクセスできる IP アドレスを制限したり、API サーバーへのインターネットアクセスを完全に無効にしたりできます。
注記
このエンドポイントは Kubernetes API サーバー用であり、AWS API と通信するための従来の AWS PrivateLink エンドポイントではないため、Amazon VPC コンソール上にはエンドポイントとして表示されません。
クラスターでエンドポイントへのプライベートアクセスを有効にすると、Amazon EKS によって自動的に ルート 53 のプライベートホストゾーンが作成され、クラスターの VPC に関連付けられます。このプライベートホストゾーンは Amazon EKS によって管理され、アカウントの ルート 53 リソースには表示されません。プライベートホストゾーンが API サーバーに正しくトラフィックをルーティングするためにはVPC で enableDnsHostnames
と enableDnsSupport
が true
に設定され、VPC 用に設定された DHCP オプションで、ドメイン名サーバーリストに AmazonProvidedDNS
が含まれている必要があります。詳細についてはAmazon VPC ユーザーガイドの「VPC の DNS サポートを表示および更新する」を参照してください。
API サーバーエンドポイントのアクセス要件は新しいクラスターを作成するときに定義できます。また、クラスターの API サーバーエンドポイントのアクセスは随時更新できます。
クラスターエンドポイントのアクセスの変更
既存クラスターのエンドポイントのアクセスを変更するにはこのセクションの手順に従ってください。次の表はサポートされている API サーバーエンドポイントのアクセスの組み合わせとそれらに関連付けられている動作を示しています。
エンドポイントのパブリックアクセス | エンドポイントのプライベートアクセス | 行動 |
---|---|---|
有効 |
無効 |
|
有効 |
有効 |
|
無効 |
有効 |
|
パブリックエンドポイントの CIDR ブロック (IPv6
クラスター)
パブリックエンドポイントはデュアルスタックであるため、IPv6
クラスターのパブリックエンドポイントに IPv6
および IPv4
CIDR ブロックを追加できます。これは、2024 年 10 月以降に作成した ipFamily
が IPv6
に設定されている新しいクラスターにのみ適用されます。これらのクラスターは、新しいエンドポイントドメイン名 api.aws
で識別できます。
パブリックエンドポイントの CIDR ブロック (IPv4
クラスター)
IPv4
クラスターのパブリックエンドポイントに IPv4
CIDR ブロックを追加できます。IPv4
クラスターのパブリックエンドポイントに IPv6
CIDR ブロックを追加することはできません。試みると、EKS は次のエラーメッセージを返します: The following CIDRs are invalid in publicAccessCidrs
パブリックエンドポイントの CIDR ブロック (2024 年 10 月以前に作成された IPv6
クラスター)
2024 年 10 月以前に作成した古い IPv6
クラスターのパブリックエンドポイントに IPv4
CIDR ブロックを追加できます。これらのクラスターは eks.amazonaws.com
エンドポイントで識別できます。2024 年 10 月以前に作成したこれらの古い IPv6
クラスターのパブリックエンドポイントに IPv6
CIDR ブロックを追加することはできません。試みると、EKS は次のエラーメッセージを返します: The following CIDRs are invalid in publicAccessCidrs
プライベート専用 API サーバーへのアクセス
クラスターの Kubernetes API サーバーエンドポイントに対するパブリックアクセスを無効にした場合は、VPC または接続されたネットワーク内からのみ API サーバーにアクセスできます。Kubernetes API サーバーエンドポイントにアクセスする方法はいくつかあります。
- 接続されたネットワーク
-
AWS トランジットゲートウェイまたはその他の接続オプションを使用してネットワークを VPC に接続し、接続されたネットワークのコンピュータを使用します。接続されたネットワークからのポート 443 でのイングレストラフィックを許可するためのルールが、Amazon EKS コントロールプレーンセキュリティグループに含まれていることを確認する必要があります。
- Amazon EC2 踏み台ホスト
-
Amazon EC2 インスタンスをクラスターの VPC のパブリックサブネットで起動し、SSH 経由でそのインスタンスにログインして
kubectl
コマンドが実行できます。詳細についてはAWS での Linux 踏み台ホストを参照してください。踏み台ホストからのポート 443 でのイングレストラフィックを許可するためのルールが、Amazon EKS コントロールプレーンセキュリティグループに含まれていることを確認する必要があります。詳細については「クラスターの Amazon EKS セキュリティグループ要件を表示する」を参照してください。 踏み台ホスト用に
kubectl
を設定するときにはクラスターの RBAC 設定に既にマッピングされている AWS 認証情報を使用するか、踏み台が使用する IAM プリンシパル を RBAC 設定に追加してから、エンドポイントのパブリックアクセスを削除します。詳細についてはIAM ユーザーおよびロールに Kubernetes API へのアクセスを付与するおよび許可されていないか、アクセスが拒否されました (kubectl)を参照してください。 - AWS クラウド9 IDE
-
AWS クラウド9 はブラウザだけでコードを記述、実行、およびデバッグできるクラウドベースの統合開発環境 (IDE) です。クラスターの VPC に AWS クラウド9 IDE を作成し、その IDE を使用してクラスターと通信できます。詳細については「AWS クラウド9 で環境を作成する」を参照してください。Amazon EKS コントロールプレーンセキュリティグループに、IDE セキュリティグループからのポート 443 でのイングレストラフィックを許可するためのルールが、含まれていることを確認する必要があります。詳細については「クラスターの Amazon EKS セキュリティグループ要件を表示する」を参照してください。
AWS クラウド9 IDE 用に
kubectl
を設定するときにはクラスターの RBAC 設定に既にマッピングされている AWS 認証情報を使用するか、IDE が使用する IAM プリンシパルを RBAC 設定に追加してから、エンドポイントのパブリックアクセスを削除してください。詳細については、「IAM ユーザーおよびロールに Kubernetes API へのアクセスを付与する」および「許可されていないか、アクセスが拒否されました (kubectl)」を参照してください。