kubeconfig について

このページは、クラウド インフラストラクチャの設定、モニタリング、管理を担当する IT 管理者とオペレーターを対象としています。 Google Cloud のコンテンツで参照する一般的なロールとタスク例の詳細については、一般的な GKE Enterprise ユーザーロールとタスクをご覧ください。

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 は、kubectl によって提示された認証情報を検証し、ユーザーまたはサービス アカウント ID に関連付けられたメールアドレスを取得することによって、 Google Cloudユーザーおよびサービス アカウント ID を受け入れるように構成されています。したがって、これらのアカウントの認証情報に userinfo.email OAuth スコープを記述して、正しく認証されるようにする必要があります。

gcloud を使用して新しい、または既存のクラスタ用の環境の kubeconfig をセットアップする場合、gcloud は、gcloud 自体で使用されるものと同じ認証情報を kubectl に渡します。たとえば gcloud auth login を使用する場合、userinfo.email スコープを含めそのユーザー個人の認証情報が kubectl に渡されます。これにより、GKE on AWS で kubectl クライアントを認証できます。

ユーザーまたは Google Cloud サービス アカウントが認証された後、GKE on AWS に対するアクションの実行をアカウントに許可する必要があります。クラスタ管理者は、適切なロールベース アクセス制御を設定して承認を構成します。