

 **このページの改善にご協力ください** 

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「**GitHub でこのページを編集する**」リンクを選択してください。

# クラスター API サーバーエンドポイント
<a name="cluster-endpoint"></a>

このトピックでは、Amazon EKS クラスターの Kubernetes API サーバーエンドポイントや上限へのプライベートアクセスを有効化する方法、あるいは、インターネットからのパブリックアクセスを完全に無効化する方法について説明します。

新しいクラスターを作成すると、Amazon EKS によってマネージド型の Kubernetes API サーバーのエンドポイントが作成されます。ユーザーはこのエンドポイントを、(`kubectl` などの Kubernetes 管理ツールにより) クラスターとの通信に使用します。デフォルトでは、この API サーバーエンドポイントはインターネットに公開されます。API サーバーへのアクセスの保護には、AWS Identity and Access Management (IAM) と、ネイティブの Kubernetes [ロールベースアクセスコントロール](https://kubernetes.io/docs/reference/access-authn-authz/rbac/) (RBAC) が組み合わせて使用されます。このエンドポイントは*クラスターパブリックエンドポイント*と呼ばれます。また、*クラスタープライベートエンドポイント*もあります。クラスタープライベートエンドポイントの詳細についてはセクション [クラスタープライベートエンドポイント](#cluster-endpoint-private) を参照してください。

## `IPv6` クラスターエンドポイント形式
<a name="cluster-endpoint-ipv6"></a>

EKS は2024 年 10 月以降に作成された新しい `IPv6` クラスターに対して、次の形式で一意のデュアルスタックエンドポイントを作成します。*IPv6 クラスター*はクラスターの IP ファミリー (`ipFamily`) 設定で `IPv6` を選択するクラスターです。

**Example**  
EKS クラスターパブリック／プライベートエンドポイント: `eks-cluster.region.api.aws` 
EKS クラスターパブリック／プライベートエンドポイント: `eks-cluster.region.api.aws` 
EKS クラスターパブリック／プライベートエンドポイント: `eks-cluster---region---api.amazonwebservices.com.rproxy.goskope.com.cn` 

**注記**  
デュアルスタッククラスターエンドポイントは2024 年 10 月に導入されました。`IPv6` クラスターの詳細については「[クラスター、Pod、サービスに対する IPv6 アドレスの説明](cni-ipv6.md)」を参照してください。2024 年 10 月より前に作成されたクラスターは代わりに次のエンドポイント形式を使用します。

## `IPv4` クラスターエンドポイント形式
<a name="cluster-endpoint-ipv4"></a>

EKS はクラスターの IP ファミリー (ipFamily 設定で `IPv4` を選択したクラスターごとに、次の形式で一意のエンドポイントを作成します：

**Example**  
EKS クラスターパブリック／プライベートエンドポイント `eks-cluster.region.eks.amazonaws.com` 
EKS クラスターパブリック／プライベートエンドポイント `eks-cluster.region.eks.amazonaws.com` 
EKS クラスターパブリック／プライベートエンドポイント `eks-cluster---region.amazonwebservices.com.rproxy.goskope.com.cn` 

**注記**  
2024 年 10 月以前、`IPv6` クラスターはこのエンドポイント形式も使用していました。これらのクラスターではパブリックエンドポイントとプライベートエンドポイントの両方において、このエンドポイントから解決できるのは `IPv4` アドレスのみです。

## クラスタープライベートエンドポイント
<a name="cluster-endpoint-private"></a>

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 ユーザーガイド](https://docs.aws.amazon.com/vpc/latest/userguide/vpc-dns.html#vpc-dns-updating)の「*VPC の DNS サポートを表示および更新する*」を参照してください。

API サーバーエンドポイントのアクセス要件は新しいクラスターを作成するときに定義できます。また、クラスターの API サーバーエンドポイントのアクセスは随時更新できます。

## クラスターエンドポイントのアクセスの変更
<a name="modify-endpoint-access"></a>

既存クラスターのエンドポイントのアクセスを変更するにはこのセクションの手順に従ってください。次の表はサポートされている API サーバーエンドポイントのアクセスの組み合わせとそれらに関連付けられている動作を示しています。


| エンドポイントのパブリックアクセス | エンドポイントのプライベートアクセス | 行動 | 
| --- | --- | --- | 
|  有効  |  無効  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/eks/latest/userguide/cluster-endpoint.html)  | 
|  有効  |  有効  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/eks/latest/userguide/cluster-endpoint.html)  | 
|  Disabled  |  有効  |  [\[See the AWS documentation website for more details\]](http://docs.aws.amazon.com/ja_jp/eks/latest/userguide/cluster-endpoint.html)  | 

 **エンドポイントアクセスコントロール** 

以下のエンドポイントアクセスを制御する方法のいずれも、それぞれのエンドポイントにのみ影響することに注意してください。

 *クラスターセキュリティグループ*   
クラスターセキュリティグループは、*kubelet API* とプライベートエンドポイントへの接続という 2 つのタイプの接続を制御します。`kubelet` API への接続は、`kubectl attach`、`kubectl cp`、`kubectl exec`、`kubectl logs`、`kubectl port-forward` の各コマンドで使用されます。クラスターセキュリティグループがパブリックエンドポイントに影響することはありません。

 *パブリックアクセス CIDR*   
*パブリックアクセス CIDR* は、CIDR ブロックのリストでパブリックエンドポイントへのアクセスを制御します。パブリックアクセス CIDR はプライベートエンドポイントに影響しないことに注意してください。パブリックアクセス CIDR の動作は、以下で説明するように、`IPv6` クラスターと `IPv4` クラスターが作成された日付によって異なります。

 **パブリックエンドポイントの 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 サーバーへのアクセス
<a name="private-access"></a>

クラスターの Kubernetes API サーバーエンドポイントに対するパブリックアクセスを無効にした場合は、VPC または[接続されたネットワーク](https://docs.aws.amazon.com/whitepapers/latest/aws-vpc-connectivity-options/introduction.html)内からのみ API サーバーにアクセスできます。Kubernetes API サーバーエンドポイントにアクセスする方法はいくつかあります。

 **接続されたネットワーク**   
[AWS トランジットゲートウェイ](https://docs.aws.amazon.com/vpc/latest/tgw/what-is-transit-gateway.html)またはその他の[接続](https://docs.aws.amazon.com/aws-technical-content/latest/aws-vpc-connectivity-options/introduction.html)オプションを使用してネットワークを VPC に接続し、接続されたネットワークのコンピュータを使用します。接続されたネットワークからのポート 443 でのイングレストラフィックを許可するためのルールが、Amazon EKS コントロールプレーンセキュリティグループに含まれていることを確認する必要があります。

 **Amazon EC2 踏み台ホスト**   
Amazon EC2 インスタンスをクラスターの VPC のパブリックサブネットで起動し、SSH 経由でそのインスタンスにログインして `kubectl` コマンドが実行できます。詳細については[AWS での Linux 踏み台ホスト](https://aws.amazon.com/quickstart/architecture/linux-bastion/)を参照してください。踏み台ホストからのポート 443 でのイングレストラフィックを許可するためのルールが、Amazon EKS コントロールプレーンセキュリティグループに含まれていることを確認する必要があります。詳細については「[クラスターの Amazon EKS セキュリティグループ要件を表示する](sec-group-reqs.md)」を参照してください。  
踏み台ホスト用に `kubectl` を設定するときにはクラスターの RBAC 設定に既にマッピングされている AWS 認証情報を使用するか、踏み台が使用する [IAM プリンシパル](https://docs.aws.amazon.com/IAM/latest/UserGuide/id_roles.html#iam-term-principal) を RBAC 設定に追加してから、エンドポイントのパブリックアクセスを削除します。詳細については[IAM ユーザーおよびロールに Kubernetes API へのアクセスを付与する](grant-k8s-access.md)および[許可されていないか、アクセスが拒否されました (`kubectl`)](troubleshooting.md#unauthorized)を参照してください。

 ** AWS クラウド9 IDE**   
 AWS クラウド9 はブラウザだけでコードを記述、実行、およびデバッグできるクラウドベースの統合開発環境 (IDE） です。クラスターの VPC に AWS クラウド9 IDE を作成し、その IDE を使用してクラスターと通信できます。詳細については「[AWS クラウド9 で環境を作成する](https://docs.aws.amazon.com/cloud9/latest/user-guide/create-environment.html)」を参照してください。Amazon EKS コントロールプレーンセキュリティグループに、IDE セキュリティグループからのポート 443 でのイングレストラフィックを許可するためのルールが、含まれていることを確認する必要があります。詳細については「[クラスターの Amazon EKS セキュリティグループ要件を表示する](sec-group-reqs.md)」を参照してください。  
AWS クラウド9 IDE 用に `kubectl` を設定するときにはクラスターの RBAC 設定に既にマッピングされている AWS 認証情報を使用するか、IDE が使用する IAM プリンシパルを RBAC 設定に追加してから、エンドポイントのパブリックアクセスを削除してください。詳細については、「[IAM ユーザーおよびロールに Kubernetes API へのアクセスを付与する](grant-k8s-access.md)」および「[許可されていないか、アクセスが拒否されました (`kubectl`)](troubleshooting.md#unauthorized)」を参照してください。

📝 [GitHub でこのページを編集する](https://github.com/search?q=repo%3Aawsdocs%2Famazon-eks-user-guide+%5B%23cluster-endpoint%5D&type=code) 