CNCF 準拠のクラスタを移行する

GKE 接続クラスタの以前のバージョンは、GKE 接続クラスタ(前の世代)と呼ばれています。以前のバージョンの GKE 接続クラスタから現在の世代に移行すると、この機能(ライフサイクル管理やフリート登録など)にアクセスできます。移行は一方向のオペレーションです。現在の世代の GKE 接続クラスタに移行した後は、GKE 接続クラスタ(前の世代)に戻る方法はありません。

バージョン採番ポリシー

このドキュメントでは、Kubernetes バージョンと区別するために、GKE 接続クラスタのバージョンをプラットフォーム バージョンとして表記しています。GKE 接続クラスタは、GKE と同じバージョン採番規則を使用します(例: 1.21.5-gke.1)。クラスタを接続または更新する場合は、プラットフォーム バージョンのマイナー バージョンが、クラスタの Kubernetes バージョンと同じか 1 つ下のものを選択する必要があります。たとえば、Kubernetes v1.22.* を実行するクラスタは、GKE 接続クラスタ プラットフォーム バージョン 1.22.* または 1.21.* に接続できます。

これにより、GKE 接続クラスタをアップグレードする前に、クラスタを次のマイナー バージョンにアップグレードできます。

Workload Identity が有効になっていることを確認する

GKE 接続クラスタ(前の世代)の既存のクラスタでは、現在の世代の GKE 接続クラスタに移行する前に、Workload Identity を有効にする必要があります。

Workload Identity が有効になっているかどうかを確認するには、次のコマンドを実行して、Workload Identity フィールドの出力を確認します。

gcloud container hub memberships describe MEMBERSHIP_NAME

Workload Identity が有効になっていない場合は、メンバーシップを更新して有効にする必要があります。

クラスタのメンバーシップを更新するコマンドは、クラスタに一般公開 OIDC 発行者があるか、限定公開 OIDC 発行者があるかによって若干異なります。実際のクラスタに該当するタブを選択してください。

限定公開 OIDC 発行者

gcloud container hub memberships register MEMBERSHIP_NAME \
--context=KUBECONFIG_CONTEXT \
--kubeconfig=KUBECONFIG_PATH \
--enable-workload-identity \
--has-private-issuer

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

  • MEMBERSHIP_NAME: クラスタのメンバーシップ名
  • KUBECONFIG_CONTEXT: AKS クラスタにアクセスするための kubeconfig のコンテキスト
  • KUBECONFIG_PATH: kubeconfig ファイルのパス

一般公開 OIDC 発行者

  • クラスタの OIDC 発行者 URL を取得します。具体的な手順は配布先によって異なります。

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

  • メンバーシップを更新します。
gcloud container fleet memberships register MEMBERSHIP_NAME \
--context=KUBECONFIG_CONTEXT \
--kubeconfig=KUBECONFIG_PATH \
--enable-workload-identity \
--public-issuer-url=OIDC_URL

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

  • MEMBERSHIP_NAME: クラスタのメンバーシップ名
  • KUBECONFIG_CONTEXT: AKS クラスタにアクセスするための kubeconfig のコンテキスト
  • KUBECONFIG_PATH: kubeconfig のパス
  • OIDC_URL: 前に取得した OIDC URL

クラスタを移行する

GKE 接続クラスタ(前の世代)から GKE 接続クラスタにクラスタを移行するには:

  1. クラスタの kubeconfig コンテキストを抽出し、KUBECONFIG_CONTEXT 環境変数に保存します。

    KUBECONFIG_CONTEXT=$(kubectl config current-context)
    
  2. 次のコマンドを実行して、クラスタを現在の世代の GKE 接続クラスタに移行します。このコマンドは、クラスタ構成に関連する詳細情報を抽出して、Google フリート管理でクラスタを登録し、ライフサイクル エージェントなどの必要なソフトウェアをクラスタにインストールまたはアップグレードします。

    gcloud container attached clusters import \
      --location=GOOGLE_CLOUD_REGION \
      --fleet-membership=FLEET_MEMBERSHIP \
      --platform-version=PLATFORM_VERSION \
      --distribution=CLUSTER_DISTRIBUTION \
      --context=KUBECONFIG_CONTEXT \
      [--kubeconfig=KUBECONFIG_PATH]
    

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

    • GOOGLE_CLOUD_REGION: クラスタが管理されている Google Cloud のロケーション
    • FLEET_MEMBERSHIP: 登録済みクラスタの完全修飾メンバーシップ指定子(以下を参照)
    • PLATFORM_VERSION: 移行先の GKE 接続クラスタのバージョン(例: v1.22.0-gke.1)
    • CLUSTER_DISTRIBUTION: クラスタタイプ。AWS の Elastic Kubernetes Service の場合は eks、Azure Kubernetes Service の場合は aks、その他のディストリビューションの場合は generic
    • KUBECONFIG_CONTEXT: クラスタに接続する kubeconfig のコンテキストの名前
    • KUBECONFIG_PATH: kubeconfig ファイルの場所。指定しない場合、デフォルトは ~/.kube/config です。

    メンバーシップ指定子は、接続クラスタを一意に識別する文字列であり、形式は projects/PROJECT_NUMBER/locations/global/memberships/MEMBERSHIP_ID です。ここで

    • PROJECT_NUMBER はフリートホスト プロジェクト番号です。クラスタが現在属しているプロジェクトと同じプロジェクト番号を指定する必要があります。

    • MEMBERSHIP_ID: これは既存のクラスタのフリート メンバーシップ ID である必要があります。GKE 接続クラスタは、この値をクラスタ名として使用します。