

翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。

# EKS 完全プライベートクラスター
<a name="eks-private-cluster"></a>

eksctl は、アウトバウンドインターネットアクセスがなく、プライベートサブネットのみを持つ完全プライベートクラスターの作成をサポートしています。VPC エンドポイントは、AWS サービスへのプライベートアクセスを有効にするために使用されます。

このガイドでは、アウトバウンドインターネットアクセスなしでプライベートクラスターを作成する方法について説明します。

## 完全プライベートクラスターの作成
<a name="_creating_a_fully_private_cluster"></a>

完全プライベートクラスターを作成するために必要なフィールドは のみです`privateCluster.enabled`。

```
privateCluster:
  enabled: true
```

クラスターの作成後、Kubernetes API サーバーへのアクセスを必要とする eksctl コマンドは、クラスターの VPC 内、ピア接続された VPC、または AWS Direct Connect などの他の方法を使用して実行する必要があります。EKS APIs へのアクセスを必要とする eksctl コマンドは、クラスターの VPC 内から実行されている場合、機能しません。これを修正するには、[Amazon EKS のインターフェイスエンドポイントを作成して](https://docs.aws.amazon.com/eks/latest/userguide/vpc-interface-endpoints.html)、Amazon Virtual Private Cloud (VPC) から Amazon Elastic Kubernetes Service (Amazon EKS) 管理 APIs にプライベートにアクセスします。今後のリリースでは、eksctl はこのエンドポイントを作成するためのサポートを追加するため、手動で作成する必要はありません。OpenID Connect プロバイダー URL へのアクセスを必要とするコマンドは、Amazon EKS の AWS PrivateLink を有効にすると、クラスターの VPC の外部から実行する必要があります。

マネージド型ノードグループの作成は引き続き機能し、コマンドがクラスターの VPC 内、ピア接続された VPC、または AWS Direct Connect などの他の方法を使用して実行されている場合、EKS [インターフェイスエンドポイント](https://aws.amazon.com/about-aws/whats-new/2022/12/amazon-eks-supports-aws-privatelink/)を介して API サーバーにアクセスする必要があるため、セルフマネージド型ノードグループの作成は機能します。

**注記**  
VPC エンドポイントは、使用量に基づいて時間単位で課金されます。料金の詳細については、[AWS PrivateLink の料金](https://aws.amazon.com/privatelink/pricing/)を参照してください。

**警告**  
完全プライベートクラスターは、 ではサポートされていません`eu-south-1`。

## 追加の AWS サービスへのプライベートアクセスの設定
<a name="_configuring_private_access_to_additional_aws_services"></a>

ワーカーノードが AWS のサービスにプライベートにアクセスできるようにするには、eksctl は次のサービスの VPC エンドポイントを作成します。
+ コンテナイメージをプルするための ECR ( `ecr.api`と の両方`ecr.dkr`) のインターフェイスエンドポイント (AWS CNI プラグインなど)
+ S3 が実際のイメージレイヤーをプルするためのゲートウェイエンドポイント
+ `aws-cloud-provider` 統合に必要な EC2 のインターフェイスエンドポイント
+ サービスアカウント (IRSA) の Fargate ロールと IAM ロールをサポートする STS のインターフェイスエンドポイント
+ CloudWatch ログ記録が有効になっている場合の CloudWatch ログ記録のインターフェイスエンドポイント (`logs`)

これらの VPC エンドポイントは機能するプライベートクラスターに不可欠であるため、eksctl はそれらの設定または無効化をサポートしていません。ただし、クラスターには他の AWS のサービスへのプライベートアクセスが必要になる場合があります (Cluster Autoscaler に必要な Autoscaling など）。これらのサービスは で指定できます。これにより`privateCluster.additionalEndpointServices`、eksctl は各サービスに VPC エンドポイントを作成するように指示されます。

たとえば、Autoscaling と CloudWatch ログ記録へのプライベートアクセスを許可するには:

```
privateCluster:
  enabled: true
  additionalEndpointServices:
  # For Cluster Autoscaler
  - "autoscaling"
  # CloudWatch logging
  - "logs"
```

でサポートされているエンドポイント`additionalEndpointServices`は、`autoscaling`、、`cloudformation`および です`logs`。

### エンドポイント作成のスキップ
<a name="_skipping_endpoint_creations"></a>

必要な AWS エンドポイントがセットアップされ、EKS ドキュメントで説明されているサブネットにリンクされた VPC がすでに作成されている場合、 `eksctl`は`skipEndpointCreation`次のようなオプションを指定して作成をスキップできます。

```
privateCluster:
  enabled: true
  skipEndpointCreation: true
```

この設定を と一緒に使用することはできません`additionalEndpointServices`。エンドポイントの作成はすべてスキップされます。また、この設定は、エンドポイント`<→`サブネットトポロジが正しく設定されている場合にのみ推奨されます。サブネット ID が正しい場合、`vpce`ルーティングはプレフィックスアドレスで設定され、必要なすべての EKS エンドポイントが作成され、提供された VPC にリンクされます。 `eksctl` はこれらのリソースを変更しません。

## ノードグループ
<a name="private-nodegroups"></a>

クラスターの VPC はパブリックサブネットなしで作成されるため、完全プライベートクラスターではプライベートノードグループ (マネージド型とセルフマネージド型の両方) のみがサポートされます。`privateNetworking` フィールド (`nodeGroup[].privateNetworking ` と `managedNodeGroup[`) は明示的に設定する必要があります。フルプライベートクラスターで未`privateNetworking`設定のままにすることはエラーです。

```
nodeGroups:
- name: ng1
  instanceType: m5.large
  desiredCapacity: 2
  # privateNetworking must be explicitly set for a fully-private cluster
  # Rather than defaulting this field to `true`,
  # we require users to explicitly set it to make the behaviour
  # explicit and avoid confusion.
  privateNetworking: true

managedNodeGroups:
- name: m1
  instanceType: m5.large
  desiredCapacity: 2
  privateNetworking: true
```

## クラスターエンドポイントのアクセス
<a name="_cluster_endpoint_access"></a>

完全プライベートクラスターは、クラスター作成`clusterEndpointAccess`時の変更をサポートしていません。完全プライベートクラスターはプライベートアクセスのみを持つことができ`clusterEndpoints.privateAccess`、これらのフィールドの変更を許可するとクラスターが壊れる可能性があるため、 `clusterEndpoints.publicAccess`または のいずれかを設定するのはエラーです。

## ユーザー提供の VPC とサブネット
<a name="_user_supplied_vpc_and_subnets"></a>

eksctl は、既存の VPC とサブネットを使用した完全プライベートクラスターの作成をサポートしています。プライベートサブネットのみを指定でき、 でサブネットを指定するのはエラーです`vpc.subnets.public`。

eksctl は、指定された VPC に VPC エンドポイントを作成し、指定されたサブネットのルートテーブルを変更します。eksctl はメインルートテーブルを変更しないため、各サブネットには明示的なルートテーブルが関連付けられている必要があります。

```
apiVersion: eksctl.io/v1alpha5
kind: ClusterConfig

metadata:
  name: private-cluster
  region: us-west-2

privateCluster:
  enabled: true
  additionalEndpointServices:
  - "autoscaling"

vpc:
  subnets:
    private:
      us-west-2b:
        id: subnet-0818beec303f8419b
      us-west-2c:
        id: subnet-0d42ef09490805e2a
      us-west-2d:
        id: subnet-0da7418077077c5f9


nodeGroups:
- name: ng1
  instanceType: m5.large
  desiredCapacity: 2
  # privateNetworking must be explicitly set for a fully-private cluster
  # Rather than defaulting this field to true for a fully-private cluster, we require users to explicitly set it
  # to make the behaviour explicit and avoid confusion.
  privateNetworking: true

managedNodeGroups:
- name: m1
  instanceType: m5.large
  desiredCapacity: 2
  privateNetworking: true
```

## 完全プライベートクラスターの管理
<a name="_managing_a_fully_private_cluster"></a>

クラスターの作成後にすべてのコマンドを使用するには、eksctl に EKS API サーバーエンドポイントへのプライベートアクセスとアウトバウンドインターネットアクセス ( の場合) が必要です`EKS:DescribeCluster`。API サーバーへのアクセスを必要としないコマンドは、eksctl にアウトバウンドインターネットアクセスがある場合にサポートされます。

## 完全プライベートクラスターを強制削除する
<a name="_force_delete_a_fully_private_cluster"></a>

eksctl はクラスターのすべてのリソースに自動的にアクセスできないため、eksctl を介して完全プライベートクラスターを削除するとエラーが発生する可能性があります。 はこれを解決するために`--force`存在します。クラスターは強制的に削除され、エラーが発生したときに続行されます。

## 制限事項
<a name="_limitations"></a>

現在の実装の制限は、eksctl が最初にパブリックエンドポイントアクセスとプライベートエンドポイントアクセスの両方を有効にしてクラスターを作成し、すべてのオペレーションが完了した後にパブリックエンドポイントアクセスを無効にすることです。これは、eksctl が自己管理型ノードをクラスターに参加させ、GitOps と Fargate をサポートするために、Kubernetes API サーバーにアクセスする必要があるために必要です。これらのオペレーションが完了すると、eksctl はクラスターエンドポイントへのアクセスをプライベートのみに切り替えます。この追加更新は、完全プライベートクラスターの作成に標準クラスターよりも時間がかかることを意味します。将来、eksctl は VPC 対応の Lambda 関数に切り替えて、これらの API オペレーションを実行する場合があります。

## HTTP プロキシサーバーを介したアウトバウンドアクセス
<a name="_outbound_access_via_http_proxy_servers"></a>

eksctl は、設定された HTTP(S) プロキシサーバーを介して AWS APIs と通信できますが、プロキシ除外リストを正しく設定する必要があります。

通常、値 を含む適切な`no_proxy`環境変数を設定することで、クラスターの VPC エンドポイントに対するリクエストがプロキシ経由でルーティングされないようにする必要があります`.eks.amazonaws.com`。

プロキシサーバーが「SSL 傍受」を実行し、サービスアカウント (IRSA) の IAM ロールを使用している場合は、ドメイン の SSL Man-in-the-Middle を明示的にバイパスする必要があります`oidc.<region>.amazonaws.com`。そうしないと、eksctl が OIDC プロバイダーの誤ったルート証明書サムプリントを取得し、IAM 認証情報を取得できないために AWS VPC CNI プラグインが起動できず、クラスターが動作しなくなります。

## 詳細情報
<a name="_further_information"></a>
+  [EKS プライベートクラスター](https://docs.aws.amazon.com/eks/latest/userguide/private-clusters.html) 