kubectl のクラスタ アクセスを構成する
このページでは、GKE on Azure のための kubectl コマンドライン ツールのクラスタ アクセスを構成する方法について説明します。
概要
GKE on Azure にアクセスするには、kubectl
を構成する必要があります。kubectl
のデフォルト クラスタを設定するには、Kubernetes の kubeconfig
ファイルの中でカレント コンテキストを設定します。また、kubectl
のコマンドを特定のクラスタに対して実行するには --cluster
フラグを使用します。
kubeconfig
とクラスタ エンドポイントの詳細については、Kubeconfig についてをご覧ください。
始める前に
kubectl
アクセスに Connect Gateway を使用する場合は、プロジェクト オーナーではない管理者ユーザーに、gcloud CLI から ID を使用して kubectl を実行するで説明している IAM ロールを付与する必要があります。
現在の kubeconfig を確認する
このセクションでは、現在の kubeconfig
を確認する方法について説明します。
kubeconfig のコンテキストを表示する
環境の kubeconfig
と、それに含まれるすべてのコンテキストを表示するには、次のコマンドを実行します。
kubectl config view
このコマンドは、すでに kubeconfig
エントリが生成されているすべてのクラスタのリストを返します。GKE on Azure クラスタがこのリストにある場合は、現在の環境でそのクラスタに対して kubectl
のコマンドを実行できます。それ以外の場合は、そのクラスタの kubeconfig
エントリを生成する必要があります。
kubectl のカレント コンテキストを表示する
kubectl コマンドライン ツールに使用されるカレント コンテキストを表示するには、次のコマンドを実行します。
kubectl config current-context
kubectl
は、カレント コンテキストの名前を出力します。
kubeconfig エントリを生成する
kubectl
のコマンドを GKE クラスタに対して実行するには、kubeconfig
エントリを生成する必要があります。kubeconfig
の生成方法は、クラスタへの接続方法によって異なります。Connect Gateway を使用することをおすすめします。プライベート エンドポイントを介して接続する場合は、Azure Virtual Network 内のコントロール プレーン エンドポイントへの接続とルーティングが必要です。クラスタの kube-apiserver はコントロール プレーンの一部です。リクエストをプライベート エンドポイントに直接送信するために、ファイアウォール ルールの拡大が必要になる場合があります。コントロール プレーンへの接続の詳細については、ネットワーク セキュリティ グループをご覧ください。
Connect Gateway
gcloud container azure clusters get-credentials CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION
次のように置き換えます。
CLUSTER_NAME
: クラスタの名前GOOGLE_CLOUD_LOCATION
: GKE on Azure が管理されている Google Cloud のリージョンまたはゾーン
プライベート エンドポイント
プライベート エンドポイントに接続するには、クラスタのコントロール プレーンへの接続性が必要です。クラスタのコントロール プレーンに接続するをご覧ください。
gcloud container azure clusters get-credentials CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
--private-endpoint
次のように置き換えます。
CLUSTER_NAME
: クラスタの名前GOOGLE_CLOUD_LOCATION
: GKE on Azure が管理されている Google Cloud のリージョンまたはゾーン
複数のクラスタを扱う
このセクションでは、複数の GKE クラスタで kubectl
を使用する方法について説明します。
kubectl コマンドのデフォルト クラスタを設定する
kubectl
のカレント コンテキストをそのクラスタに切り替えるには、次のコマンドを実行します。
gcloud container azure clusters get-credentials CLUSTER_NAME \
--location GOOGLE_CLOUD_LOCATION \
次のように置き換えます。
CLUSTER_NAME
: クラスタの名前GOOGLE_CLOUD_LOCATION
: GKE on Azure が管理されている Google Cloud のリージョンまたはゾーン
たとえば、2 つのクラスタ(cluster-1
と cluster-2
)からなるプロジェクトを考えてみましょう。カレント コンテキストは cluster-2
です。カレント コンテキストを cluster-2
から cluster-1
に切り替えるには、次のコマンドを実行します。
gcloud container azure clusters get-credentials cluster-1 \
--location GOOGLE_CLOUD_LOCATION
個々の kubectl コマンドを特定のクラスタに対して実行する
個々の kubectl
コマンドを特定のクラスタに対して実行するには、kubeconfig
にあるそのクラスタの名前を --cluster
フラグの引数として渡します。
たとえば、2 つのクラスタ(cluster-1
と cluster-2
)からなる環境があり、カレント コンテキストが cluster-1
であるとします。カレント コンテキストを変更したくないとします。カレント コンテキストを変更せずに cluster-2
上の Pod オブジェクトのリストを取得するには、次のコマンドを実行します。
kubectl get pod --cluster cluster-2