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