AKS クラスタを接続する

クラスタを接続するとは、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 フリート管理に接続するには、次のコマンドを実行します。

  1. kubeconfig ファイルに、接続するクラスタのエントリがあることを確認します。

    az aks get-credentials -n CLUSTER_NAME \
      -g RESOURCE_GROUP
    
  2. 次のコマンドを実行してクラスタの kubeconfig コンテキストを抽出し、KUBECONFIG_CONTEXT 環境変数に保存します。

    KUBECONFIG_CONTEXT=$(kubectl config current-context)
    
  3. クラスタを登録するコマンドは、デフォルトのプライベート 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 発行者

    1. 次のコマンドで、クラスタの OIDC 発行者 URL を取得します。

        az aks show -n CLUSTER_NAME \
          -g RESOURCE_GROUP \
          --query "oidcIssuerProfile.issuerUrl" -otsv
      

      RESOURCE_GROUP は、クラスタが属する AKS リソース グループに置き換えます。

      このコマンドの出力が、OIDC 発行者の URL になります。後で使用するために、この値を保存します。

    2. 次のコマンドを実行してクラスタの kubeconfig コンテキストを抽出し、KUBECONFIG_CONTEXT 環境変数に保存します。

      KUBECONFIG_CONTEXT=$(kubectl config current-context)
      
    3. 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)が、クラスタが作成されるまでプロビジョニングされないためです。