Kubernetes 構成ファイル
Kubernetes は、kubeconfig
という名前の YAML ファイルを使用して、kubectl
のクラスタ認証情報を格納します。kubeconfig
には、コマンドの実行時に kubectl
が参照するコンテキストのリストが含まれています。デフォルトで、このファイルは $HOME/.kube/config
に保存されます。
コンテキストとは、アクセス パラメータのグループのことです。各コンテキストには 1 つの Kubernetes クラスタ、1 人のユーザー、1 つの名前空間が含まれます。現在のコンテキストとは、現在 kubectl
のデフォルトとなっているクラスタのことです。すべての kubectl
コマンドはこのクラスタに対して実行されます。
クラスタを作成したら、kubeconfig
エントリを生成するに従って、クラスタのコンテキストをローカル kubeconfig
に追加します。
プライベート エンドポイント
すべてのクラスタには正規のエンドポイントがあります。このエンドポイントは、kubectl
や他のサービスと TCP ポート 443 経由でクラスタ コントロール プレーンと通信するために使用する Kubernetes API サーバーを公開します。AWS では、このエンドポイントはクラスタ内でのみ解決可能な DNS 名です(例: gke-abcdefghijk-cp-ffabcdef123456.elb.us-west-1.amazonaws.com
)。このエンドポイントには、公共のインターネットからはアクセスできません。限定公開クラスタ エンドポイント アドレスは、gcloud container aws clusters describe
コマンドの出力の endpoint
フィールドから取得できます。
Connect ゲートウェイ エンドポイント
デフォルトでは、gcloud container aws clusters get-credentials
コマンドは Connect ゲートウェイを使用する kubeconfig
を生成します。この kubeconfig
により、kubectl
は Connect を使用し、ユーザーの代わりに、トラフィックをプライベート エンドポイントに安全に転送します。Connect ゲートウェイを使用する場合、エンドポイントは https://connectgateway.googleapis.com/v1/projects/PROJECT_NUMBER/memberships/CLUSTER_NAME
のようになります。ここで PROJECT_NUMBER はプロジェクト番号、CLUSTER_NAME はクラスタ名です。
VPC を介してクラスタのプライベート・エンドポイントにアクセスできれば、プライベート・エンドポイントに直接接続できます。プライベート・エンドポイントを使用して kubeconfig
を生成するには、gcloud container aws clusters get-credentials --private-endpoint
コマンドを使用します。
kubectl
の認証について
すべての GKE on AWS は、Google Cloud ユーザー/サービス アカウント ID を受け入れるように設定されています。受け入れる際には、kubectl
から提供された認証情報を検証し、ユーザー/サービス アカウント ID に関連付けられたメールアドレスを取得します。したがって、認証に成功するには、これらのアカウントの認証情報に userinfo.email
OAuth スコープが含まれている必要があります。
gcloud
を使用して新しい、または既存のクラスタ用の環境の kubeconfig
をセットアップする場合、gcloud
は、gcloud
自体で使用されるものと同じ認証情報を kubectl
に渡します。たとえば gcloud auth login
を使用する場合、userinfo.email
スコープを含めそのユーザー個人の認証情報が kubectl
に渡されます。これにより、GKE on AWS で kubectl
クライアントを認証できます。
ユーザーまたは Google Cloud サービス アカウントが認証されたら、これらのアカウントは GKE on AWS に対してアクションを実行する承認を得る必要があります。クラスタ管理者は、適切なロールベース アクセス制御を設定して承認を構成します。