kubectl のクラスタ アクセスを構成する

このページでは、GKE on AWS の kubectl コマンドライン ツール用にクラスタ アクセスを構成する方法について説明します。

概要

GKE on AWS にアクセスするには、kubectl を構成する必要があります。Kubernetes の kubeconfig ファイルに現在のコンテキストを設定することで、kubectl にデフォルト クラスタを設定できます。また、--cluster フラグを使用すると、特定のクラスタに kubectl コマンドを実行できます。

kubeconfig とクラスタ エンドポイントの詳細については、Kubeconfig についてをご覧ください。

始める前に

kubectl アクセスに Connect ゲートウェイを使用する場合は、gcloud CLI の ID を含む kubectl を使用するで説明されているように、プロジェクト オーナーではない管理ユーザーに IAM ロールを付与する必要があります。

現在の kubeconfig を確認する

このセクションでは、現在の kubeconfig を確認する方法について説明します。

kubeconfig コンテキストを表示する

環境の kubeconfig と、それに含まれるすべてのコンテキストを表示するには、次のコマンドを実行します。

kubectl config view

このコマンドは、すでに kubeconfig エントリが生成されているすべてのクラスタのリストを返します。GKE on AWS クラスタがリストにある場合は、そのクラスタに対して現在の環境で kubectl コマンドを実行できます。それ以外の場合は、クラスタ用の kubeconfig エントリを生成する必要があります。

kubectl の現在のコンテキストを表示する

kubectl コマンドライン ツールが使用する現在のコンテキストを表示するには、次のコマンドを実行します。

kubectl config current-context

kubectl は、現在のコンテキストの名前を出力します。

kubeconfig エントリを生成する

GKE クラスタに対して kubectl コマンドを実行するには、kubeconfig エントリを生成する必要があります。kubeconfig の生成方法は、クラスタへの接続方法によって異なります。Connect ゲートウェイを使用することをおすすめします。プライベート エンドポイントを介して接続する場合は、AWS Virtual Private Cloud のコントロール プレーン エンドポイントへの接続とルーティングが必要です。クラスタの kube-apiserver はコントロール プレーンの一部です。リクエストをプライベート エンドポイントに直接送信するには、ファイアウォール ルールの拡大が必要になる場合があります。コントロール プレーンへの接続の詳細については、AWS セキュリティ グループをご覧ください。

Connect ゲートウェイ

gcloud container aws clusters get-credentials CLUSTER_NAME \
  --location GOOGLE_CLOUD_LOCATION

次のように置き換えます。

  • CLUSTER_NAME: クラスタの名前
  • GOOGLE_CLOUD_LOCATION: GKE on AWS が管理されている Google Cloud のリージョンまたはゾーン

プライベート エンドポイント

プライベート エンドポイントに接続するには、クラスタのコントロール プレーンに接続する必要があります。クラスタのコントロール プレーンに接続するをご覧ください。

gcloud container aws clusters get-credentials CLUSTER_NAME \
  --location GOOGLE_CLOUD_LOCATION \
  --private-endpoint

次のように置き換えます。

  • CLUSTER_NAME: クラスタの名前
  • GOOGLE_CLOUD_LOCATION: GKE on AWS が管理されている Google Cloud のリージョンまたはゾーン

複数のクラスタを操作する

このセクションでは、複数の GKE クラスタで kubectl を使用する方法について説明します。

kubectl コマンドのデフォルト クラスタを設定する

次のコマンドを実行して、kubectl の現在のコンテキストをそのクラスタに切り替えることができます。

gcloud container aws clusters get-credentials CLUSTER_NAME \
  --location GOOGLE_CLOUD_LOCATION \

次のように置き換えます。

  • CLUSTER_NAME: クラスタの名前
  • GOOGLE_CLOUD_LOCATION: GKE on AWS が管理されている Google Cloud のリージョンまたはゾーン

たとえば、2 つのクラスタ(cluster-1cluster-2)からなるプロジェクトを考えてみましょう。現在のコンテキストは cluster-2 です。現在のコンテキストを cluster-2 から cluster-1 に切り替えるには、次のコマンドを実行します。

gcloud container aws clusters get-credentials cluster-1 \
  --location GOOGLE_CLOUD_LOCATION

特定のクラスタに個別の kubectl コマンドを実行する

特定のクラスタに個別の kubectl コマンドを実行するには、kubeconfig にあるクラスタの名前を --cluster フラグの引数として渡します。

たとえば、2 つのクラスタ(cluster-1cluster-2)からなる環境があり、現在のコンテキストが cluster-1 であるとします。ここでは、現在のコンテキストを変更しないことにします。現在のコンテキストを変更せずに cluster-2 上の Pod オブジェクトのリストを取得するには、次のコマンドを実行します。

kubectl get pod --cluster cluster-2