クラスターアクセス - Eksctl ユーザーガイド

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

クラスターアクセス

Kubernetes API サーバーエンドポイントへのアクセスの管理

デフォルトでは、EKS クラスターは Kubernetes API サーバーをパブリックに公開しますが、VPC サブネット内 (public=true、private=false) から直接公開することはありません。VPC 内から API サーバー宛てのトラフィックは、まず VPC ネットワーク (Amazon のネットワークではなく) を離れてから再入力して API サーバーに到達する必要があります。

クラスターの Kubernetes API サーバーエンドポイントアクセスは、クラスター設定ファイルを使用してクラスターを作成するときに、パブリックアクセスとプライベートアクセスに設定できます。以下の例:

vpc: clusterEndpoints: publicAccess: <true|false> privateAccess: <true|false>

Kubernetes API エンドポイントアクセスを設定する際には、いくつかの追加の注意点があります。

  1. EKS では、プライベートアクセスまたはパブリックアクセスが有効になっていないクラスターは許可されません。

  2. EKS では、プライベートアクセスのみを有効にする設定を作成できますが、eksctl はクラスターの作成中にその設定をサポートしません。これは、eksctl がワーカーノードをクラスターに結合できないためです。

  3. プライベートのみの Kubernetes API エンドポイントアクセスを持つようにクラスターを更新すると、デフォルトでは、Kubernetes コマンド (例: kubectl) だけでなくeksctl delete cluster、、eksctl utils write-kubeconfig、および場合によっては コマンドをクラスター VPC 内で実行eksctl utils update-kube-proxyする必要があります。

    • これには、さまざまな AWS リソースへのいくつかの変更が必要です。詳細については、「クラスター API サーバーエンドポイント」を参照してください。

    • ControlPlaneSecurityGroup に追加の CIDR 範囲を追加する vpc.extraCIDRs を指定して、VPC 外のサブネットが kubernetes API エンドポイントに到達できるようにします。同様に、 を指定vpc.extraIPv6CIDRsして IPv6 CIDR 範囲を追加することもできます。

以下は、 utilsサブコマンドを使用して Kubernetes API エンドポイントアクセスを設定する方法の例です。

eksctl utils update-cluster-vpc-config --cluster=<clustername> --private-access=true --public-access=false

ClusterConfig ファイルを使用して設定を更新するには、以下を使用します。

eksctl utils update-cluster-vpc-config -f config.yaml --approve

フラグを渡さないと、現在の値が保持されることに注意してください。提案された変更に満足したら、 approveフラグを追加して実行中のクラスターに変更を加えます。

EKS Kubernetes Public API エンドポイントへのアクセスの制限

EKS クラスターのデフォルト作成では、Kubernetes API サーバーが公開されます。

この機能はパブリックエンドポイントにのみ適用されます。API サーバーエンドポイントのアクセス設定オプションは変更されず、クラスターがインターネットからアクセスできないようにパブリックエンドポイントを無効にするオプションもあります。(出典: https://github.com/aws/containers-roadmap/issues/108#issuecomment-552766489)

クラスターの作成時にパブリック API エンドポイントへのアクセスを CIDRs のセットに制限するには、 publicAccessCIDRsフィールドを設定します。

vpc: publicAccessCIDRs: ["1.1.1.1/32", "2.2.2.0/24"]

既存のクラスターの制限を更新するには、以下を使用します。

eksctl utils update-cluster-vpc-config --cluster=<cluster> 1.1.1.1/32,2.2.2.0/24

ClusterConfig ファイルを使用して制限を更新するには、 で新しい CIDRsを設定しvpc.publicAccessCIDRs、以下を実行します。

eksctl utils update-cluster-vpc-config -f config.yaml
重要

ノードグループを設定publicAccessCIDRsおよび作成する場合はprivateAccess、 に設定するtrueか、ノードの IPs をpublicAccessCIDRsリストに追加する必要があります。

アクセスが制限されているためにノードがクラスター API エンドポイントにアクセスできない場合、ノードがパブリックエンドポイントにアクセスできず、クラスターに参加できないcontext deadline exceededため、クラスターの作成は で失敗します。

クラスターの API サーバーエンドポイントアクセスとパブリックアクセス CIDRs の両方を 1 つのコマンドで更新するには、以下を実行します。

eksctl utils update-cluster-vpc-config --cluster=<cluster> --public-access=true --private-access=true --public-access-cidrs=1.1.1.1/32,2.2.2.0/24

設定ファイルを使用して設定を更新するには:

vpc: clusterEndpoints: publicAccess: <true|false> privateAccess: <true|false> publicAccessCIDRs: ["1.1.1.1/32"]
eksctl utils update-cluster-vpc-config --cluster=<cluster> -f config.yaml