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
フィールドから取得できます。
コネクト・ゲートウェイ エンドポイント
デフォルトでは、gcloud container azure clusters get-credentials
コマンドは コネクト・ゲートウェイ を使用する kubeconfig
を生成します。この kubeconfig
により、kubectl
はコネクトを使用し、ユーザーの代わりに、トラフィックをプライベート エンドポイントに安全に転送します。コネクト ゲートウェイを使用する場合、エンドポイントは 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 およびサービス アカウント ID を受け入れるように構成されています。受け入れる際には、kubectl
が提供する認証情報を検証し、ユーザー ID およびサービス アカウント ID に関連付けられたメールアドレスを取得します。したがって、認証に成功するには、これらのアカウントの認証情報に userinfo.email
OAuth スコープが含まれている必要があります。
gcloud
を使用して新しいまたは既存のクラスタ用の環境の kubeconfig
をセットアップするとき、gcloud
は、gcloud
自体で使用されるものと同じ認証情報を kubectl
に渡します。たとえば gcloud auth login
を使用する場合、userinfo.email
スコープを含め、そのユーザー個人の認証情報が kubectl
に渡されます。これにより、GKE on Azure で kubectl
クライアントを認証できます。
ユーザーまたは Google Cloud サービス アカウントが認証されると、それらには GKE on Azure に対するアクションの実行が許可される必要があります。クラスタ管理者は、適切なロールベースのアクセス制御を設定して承認を構成します。