クラスタを接続するとは、Google Cloud フリート管理にクラスタを登録し、GKE 接続クラスタ ソフトウェアをインストールすることで、クラスタを Google Cloud に接続することを意味します。
gcloud CLI または Terraform を使用してクラスタを接続できます。Terraform を使用して AKS クラスタを作成して接続する方法については、GKE 接続クラスタのサンプルの GitHub リポジトリをご覧ください。
gcloud を使用して AKS クラスタを接続するには、次の手順に沿って操作します。
前提条件
お使いのクラスタがクラスタ要件を満たしていることを確認します。
クラスタを接続するときは、次の項目を指定する必要があります。
- サポートされている Google Cloud の管理リージョン
- プラットフォームのバージョン
管理リージョンは、接続クラスタを管理する Google Cloud リージョンです。サポートされている任意のリージョンを選択できますが、クラスタに地理的に最も近いリージョンを選択することをおすすめします。管理リージョンにユーザーデータは保存されません。
プラットフォームのバージョンは、クラスタにインストールする GKE 接続クラスタのバージョンです。サポートされているすべてのバージョンを一覧表示するには、次のコマンドを実行します。
gcloud container attached get-server-config \
--location=GOOGLE_CLOUD_REGION
GOOGLE_CLOUD_REGION は、クラスタを管理する Google Cloud のロケーションの名前に置き換えます。
プラットフォーム バージョンの番号付け
このドキュメントでは、Kubernetes バージョンと区別するために、GKE 接続クラスタのバージョンをプラットフォーム バージョンとして表記しています。GKE 接続クラスタは、GKE と同じバージョン番号付け規則を使用します(例: 1.21.5-gke.1)。クラスタを接続または更新する場合は、プラットフォーム バージョンのマイナー バージョンが、クラスタの Kubernetes バージョンと同じか 1 つ下のものを選択する必要があります。たとえば、Kubernetes v1.22.* を実行するクラスタは、GKE 接続クラスタ プラットフォーム バージョン 1.21.* または 1.22.* に接続できます。
これにより、GKE 接続クラスタをアップグレードする前に、クラスタを次のマイナー バージョンにアップグレードできます。
AKS クラスタを接続する
AKS クラスタを Google Cloud フリート管理に接続するには、次のコマンドを実行します。
kubeconfig ファイルに、接続するクラスタのエントリがあることを確認します。
az aks get-credentials -n CLUSTER_NAME \ -g RESOURCE_GROUP
次のコマンドを実行してクラスタの kubeconfig コンテキストを抽出し、
KUBECONFIG_CONTEXT
環境変数に保存します。KUBECONFIG_CONTEXT=$(kubectl config current-context)
クラスタを登録するコマンドは、デフォルトのプライベート OIDC 発行者または試験運用版の一般公開 OIDC 発行者を使用してクラスタを構成しているかどうかによって若干異なります。クラスタに該当するタブを選択します。
限定公開 OIDC 発行者(デフォルト)
gcloud container attached clusters register
コマンドを使用して、クラスタを作成します。gcloud container attached clusters register CLUSTER_NAME \ --location=GOOGLE_CLOUD_REGION \ --fleet-project=PROJECT_NUMBER \ --platform-version=PLATFORM_VERSION \ --distribution=aks \ --context=KUBECONFIG_CONTEXT \ --has-private-issuer \ --kubeconfig=KUBECONFIG_PATH
次のように置き換えます。
- CLUSTER_NAME: クラスタの名前
- GOOGLE_CLOUD_REGION: クラスタを管理する Google Cloud リージョン
- PROJECT_NUMBER: クラスタを登録するフリート ホスト プロジェクト
- PLATFORM_VERSION: クラスタに使用するプラットフォーム バージョン
- KUBECONFIG_CONTEXT: AKS クラスタにアクセスするための kubeconfig 内のコンテキスト
- KUBECONFIG_PATH: kubeconfig へのパス
一般公開 OIDC 発行者
次のコマンドで、クラスタの OIDC 発行者 URL を取得します。
az aks show -n CLUSTER_NAME \ -g RESOURCE_GROUP \ --query "oidcIssuerProfile.issuerUrl" -otsv
RESOURCE_GROUP は、クラスタが属する AKS リソース グループに置き換えます。
このコマンドの出力が、OIDC 発行者の URL になります。後で使用するために、この値を保存します。
次のコマンドを実行してクラスタの kubeconfig コンテキストを抽出し、
KUBECONFIG_CONTEXT
環境変数に保存します。KUBECONFIG_CONTEXT=$(kubectl config current-context)
gcloud container attached clusters register
コマンドを使用して、クラスタを登録します。gcloud container attached clusters register CLUSTER_NAME \ --location=GOOGLE_CLOUD_REGION \ --fleet-project=PROJECT_NUMBER \ --platform-version=PLATFORM_VERSION \ --distribution=aks \ --issuer-url=ISSUER_URL \ --context=KUBECONFIG_CONTEXT \ --kubeconfig=KUBECONFIG_PATH
次のように置き換えます。
- CLUSTER_NAME: クラスタの名前
- GOOGLE_CLOUD_REGION: クラスタを管理する Google Cloud リージョン。
- PROJECT_NUMBER: クラスタを登録するフリート ホスト プロジェクト。
- PLATFORM_VERSION: クラスタで使用する GKE 接続クラスタのバージョン
- ISSUER_URL: 前に取得した発行元 URL
- KUBECONFIG_CONTEXT: 前に抽出した、クラスタにアクセスするための kubeconfig 内のコンテキスト
- KUBECONFIG_PATH: kubeconfig へのパス
Cloud Logging / Cloud Monitoring を認可する
GKE 接続クラスタでシステムログと指標を作成して Google Cloud にアップロードするには、承認される必要があります。
Kubernetes ワークロード ID gke-system/gke-telemetry-agent
が Google Cloud Logging にログを、Google Cloud Monitoring に指標を書き込むことを承認するには、次のコマンドを実行します。
gcloud projects add-iam-policy-binding GOOGLE_PROJECT_ID \
--member="serviceAccount:GOOGLE_PROJECT_ID.svc.id.goog[gke-system/gke-telemetry-agent]" \
--role=roles/gkemulticloud.telemetryWriter
GOOGLE_PROJECT_ID
をクラスタの Google Cloud プロジェクト ID に置き換えます。
この IAM バインディングは、ログと指標をアップロードするための Google Cloud プロジェクトのプロジェクトにあるすべてのクラスタへのアクセスを許可します。プロジェクトに対して最初のクラスタを作成した後にのみ実行する必要があります。
Google Cloud プロジェクトに 1 つ以上のクラスタを作成しない限り、この IAM バインディングの追加は失敗します。これは、参照する Workload Identity プール(GOOGLE_PROJECT_ID.svc.id.goog
)が、クラスタが作成されるまでプロビジョニングされないためです。