遷移 AKS 叢集

GKE 附加叢集的前身稱為 GKE 附加叢集 (前一代)。從舊版 GKE 連結叢集遷移至目前這一代,即可存取這項功能,包括生命週期管理和機群註冊。遷移作業是單向作業,一旦遷移至當代 GKE 連結叢集,就無法返回 GKE 連結叢集 (前一代)。

版本編號政策

這些文件將 GKE 附加叢集版本稱為平台版本,以區別於 Kubernetes 版本。GKE 附加叢集採用的版本編號慣例與 GKE 相同,例如 1.21.5-gke.1。附加或更新叢集時,您必須選擇平台版本,其子版本與叢集的 Kubernetes 版本相同,或低一個層級。舉例來說,您可以將執行 Kubernetes v1.22.* 的叢集,附加至 GKE 附加叢集平台版本 1.21.* 或 1.22.*。

這樣一來,您就能先將叢集升級至下一個子版本,再升級 GKE 連結的叢集。

確認已啟用 Workload Identity

從 GKE 附加叢集 (上一代) 遷移至目前這一代 GKE 附加叢集時,現有叢集必須先啟用 Workload Identity。

如要判斷是否已啟用 WI,請執行下列指令,並檢查輸出內容中是否有任何 Workload Identity 欄位:

gcloud container hub memberships describe MEMBERSHIP_NAME

如果未啟用 Workload Identity,您必須更新成員資格才能啟用。

更新叢集成員資格的指令會略有不同,視您是否已使用預設私有 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:kubeconfig 中的內容,用於存取 AKS 叢集
  • KUBECONFIG_PATH:kubeconfig 檔案的路徑

公開 OIDC 核發者

  • 使用下列指令擷取叢集的 OIDC 簽發者 URL:
  az aks show -n CLUSTER_NAME \
    -g RESOURCE_GROUP \
    --query "oidcIssuerProfile.issuerUrl" -otsv

這項指令會輸出 OIDC 核發者的網址。請儲存這個值,以供日後使用。

  • 更新會員方案:
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:kubeconfig 中的內容,用於存取 AKS 叢集
  • KUBECONFIG_PATH:kubeconfig 的路徑
  • OIDC_URL:先前擷取的 OIDC 網址

遷移叢集

如要將叢集從 GKE 附加叢集 (舊版) 遷移至 GKE 附加叢集,請按照下列步驟操作:

  1. 擷取叢集的 kubeconfig 內容,並儲存在 KUBECONFIG_CONTEXT 環境變數中:

    KUBECONFIG_CONTEXT=$(kubectl config current-context)
    
  2. 執行下列指令,將叢集遷移至當代 GKE 連結叢集。這個指令會擷取叢集設定的相關詳細資料,向 Google Fleet Management 註冊叢集,並在叢集上安裝或升級任何必要軟體,例如生命週期代理程式。

    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)
    • :叢集類型 - AWS 的 Elastic Kubernetes Service 為 eks,Azure Kubernetes Service 為 aks,其他發行版本則為 genericCLUSTER_DISTRIBUTION
    • KUBECONFIG_CONTEXT:您要用來連線至叢集的 kubeconfig 中的內容名稱。
    • KUBECONFIG_PATHkubeconfig 檔案的位置。如未指定,則預設值為 ~/.kube/config

    成員資格指定符是可唯一識別所連結叢集的字串,格式為 projects/PROJECT_NUMBER/locations/global/memberships/MEMBERSHIP_ID,其中

    • PROJECT_NUMBER 是機群主專案號碼。您必須指定與叢集目前所屬專案相同的專案編號

    • MEMBERSHIP_ID:這必須是現有叢集的 Fleet 成員 ID。GKE 附加叢集會將這個值做為叢集名稱。

支援 Azure 工作負載身分

Azure 提供 WI 公開預先發布版支援。啟用這項功能會變更叢集的 OIDC 簽發者 URL。如果已使用先前的 OIDC 網址註冊叢集,就無法更新為新網址,因為目前無法更新該欄位。

解決方法如下:

  1. 重新建立叢集,並啟用 Workload Identity。
  2. 連結 AKS 叢集
  3. 將工作負載遷移至新叢集。
  4. 刪除舊叢集。