

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

このユーザーガイドに貢献するには、すべてのページの右側のペインにある「**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.govskope.ca.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.govskope.ca.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) 

# クラスター API サーバーエンドポイントへのネットワークアクセスを設定する
<a name="config-cluster-endpoint"></a>

次のセクションでは、AWS マネジメントコンソール または AWS CLI を使用して、クラスター API サーバーのエンドポイントアクセスを変更できます。

## エンドポイントアクセスの設定 - AWS コンソール
<a name="configure_endpoint_access_shared_aws_console"></a>

1. [Amazon EKS コンソール](https://console.aws.amazon.com/eks/home#/clusters)を開きます。

1. クラスター名を選択すると、そのクラスターの情報を表示されます。

1. **[ネットワーキング]** タブを選択し、**[エンドポイントアクセスを管理]** を選択します。

1. **[プライベートアクセス]** の場合はクラスターの Kubernetes API サーバーエンドポイントに対するプライベートアクセスを有効にするか無効にするかを選択してください。プライベートアクセスを有効にした場合、クラスターの VPC 内から送信される Kubernetes API リクエストはプライベート VPC エンドポイントを使用します。パブリックアクセスを無効にするにはプライベートアクセスを有効にする必要があります。

1. **[パブリックアクセス]** の場合はクラスターの Kubernetes API サーバーエンドポイントに対するパブリックアクセスを有効にするか無効にするかを選択してください。パブリックアクセスを無効にすると、クラスターの Kubernetes API サーバーはクラスター VPC 内からのみリクエストを受信できます。

1. (オプション) [**パブリックアクセス**] で有効化を行うと、インターネットからパブリックエンドポイントと通信するためのアドレスを指定できるようになります。[**詳細設定**] を選択してください。などの CIDR ブロックを入力します。。**ブロックに[予約済みアドレス](https://en.wikipedia.org/wiki/Reserved_IP_addresses)を含めることはできません。[**ソースの追加**] を選択すると、追加のブロックを入力できます。指定できる CIDR ブロックには最大数があります。詳細については、「[Amazon EKS と Fargate Service Quotas を表示して管理する](service-quotas.md)」を参照してください。ブロックをまったく指定しない場合、パブリック API サーバーエンドポイントは、`IPv4` (`0.0.0.0/0`) と、さらにデュアルスタック `IPv6` クラスターの `IPv6` (`::/0`) の両方のすべての IP アドレスからのリクエストを受信します。CIDR ブロックを使用してパブリックエンドポイントへのアクセスを制限する場合は、同時にプライベートエンドポイントアクセスも有効化することをお勧めします。これにより、ノードと (使用している場合は) Fargate Pods がクラスターと通信できるようになります。プライベートエンドポイントが有効になっていない場合はパブリックアクセスエンドポイントの CIDR ソースに、VPC からの出力ソースを含める必要があります。例えば、プライベートサブネットに NAT ゲートウェイを介してインターネットと通信するノードがある場合、パブリックエンドポイントで許可された CIDR ブロックの一部として、NAT ゲートウェイのアウトバウンド IP アドレスを追加する必要があります。

1. [**更新**] を選択して終了します。

## エンドポイントアクセスの設定 - AWS CLI
<a name="configure_endpoint_access_shared_aws_cli"></a>

AWS CLI バージョン `1.27.160` 以降を使用して、次のステップを実行してください。現在のバージョンは`aws --version` で確認できます。AWS CLI をインストールまたはアップグレードするには「[AWS CLI のインストール](https://docs.aws.amazon.com/cli/latest/userguide/cli-chap-install.html)」を参照してください。

1. 次の AWS CLI コマンドを使用してクラスター API サーバーエンドポイントのアクセスを更新します。クラスター名と必要なエンドポイントアクセス値を置き換えます。`endpointPublicAccess=true` を設定した場合は(オプションで) 1 つの CIDR ブロック、または `publicAccessCidrs` の CIDR ブロックのカンマ区切りリストを入力できます。ブロックに[予約済みアドレス](https://en.wikipedia.org/wiki/Reserved_IP_addresses)を含めることはできません。CIDR ブロックを指定すると、パブリック API サーバーエンドポイントはリストされたブロックからのリクエストのみを受信します。指定できる CIDR ブロックには最大数があります。詳細については「[Amazon EKS と Fargate Service Quotas を表示して管理する](service-quotas.md)」を参照してください。CIDR ブロックを使用してパブリックエンドポイントへのアクセスを制限する場合は同時にプライベートエンドポイントアクセスも有効化することをお勧めします。これにより、ノードと (存在している場合は Fargate Pods がクラスターと通信できるようになります。プライベートエンドポイントが有効になっていない場合はパブリックアクセスエンドポイントの CIDR ソースに、VPC からの出力ソースを含める必要があります。例えば、プライベートサブネットに NAT ゲートウェイを介してインターネットと通信するノードがある場合、パブリックエンドポイントで許可された CIDR ブロックの一部として、NAT ゲートウェイのアウトバウンド IP アドレスを追加する必要があります。CIDR ブロックをまったく指定しない場合、パブリック API サーバーエンドポイントはすべての (0.0.0.0/0) IP アドレスからのリクエストと、さらにデュアルスタック `IPv6` クラスターの `IPv6` (`::/0`) も受信します。
**注記**  
次のコマンドはAPI サーバーエンドポイントの 1 つの IP アドレスからのプライベートアクセスとパブリックアクセスを有効にします。*203.0.113.5/32* は単一の CIDR ブロック、またはネットワークアクセスを制限する CIDR ブロックのカンマ区切りリストに置き換えます。

   ```
   aws eks update-cluster-config \
       --region region-code \
       --name my-cluster \
       --resources-vpc-config endpointPublicAccess=true,publicAccessCidrs="203.0.113.5/32",endpointPrivateAccess=true
   ```

   出力例は次のとおりです。

   ```
   {
       "update": {
           "id": "e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000",
           "status": "InProgress",
           "type": "EndpointAccessUpdate",
           "params": [
               {
                   "type": "EndpointPublicAccess",
                   "value": "true"
               },
               {
                   "type": "EndpointPrivateAccess",
                   "value": "true"
               },
               {
                   "type": "publicAccessCidrs",
                   "value": "[\"203.0.113.5/32\"]"
               }
           ],
           "createdAt": 1576874258.137,
           "errors": []
       }
   }
   ```

1. 次のコマンドでエンドポイントアクセス更新のステータスをモニタリングします。この際、以前のコマンドで返ったクラスター名と更新 ID を使用します。ステータスが `Successful` と表示されたら、更新は完了です。

   ```
   aws eks describe-update \
       --region region-code \
       --name my-cluster \
       --update-id e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000
   ```

   出力例は次のとおりです。

   ```
   {
       "update": {
           "id": "e6f0905f-a5d4-4a2a-8c49-EXAMPLE00000",
           "status": "Successful",
           "type": "EndpointAccessUpdate",
           "params": [
               {
                   "type": "EndpointPublicAccess",
                   "value": "true"
               },
               {
                   "type": "EndpointPrivateAccess",
                   "value": "true"
               },
               {
                   "type": "publicAccessCidrs",
                   "value": "[\"203.0.113.5/32\"]"
               }
           ],
           "createdAt": 1576874258.137,
           "errors": []
       }
   }
   ```

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