將 Google Cloud 上的叢集註冊至機群

本頁說明如何將 GKE 叢集新增至機群。 Google Cloud 視專案和用途而定,您可以透過 Google Cloud 控制台、Terraform、Config Connector 或 Google Cloud CLI 註冊。您也可以使用 Google Cloud CLI、 Google Cloud 控制台或 Terraform,在單一步驟中建立及註冊新叢集。

事前準備

請確認您已遵循註冊叢集的一般必要條件。此外,建議您參閱「規劃機群資源」一文,瞭解叢集註冊的一般限制。

視您的使用情況而定,GKE 叢集 Google Cloud 註冊也可能需要下列項目:

  • 如要為已註冊的叢集啟用機群 Workload Identity Federation (建議),請確認叢集已啟用 Workload Identity Federation for GKE。Autopilot 叢集預設會啟用 Workload Identity Federation for GKE。
  • 如果要向其他專案的機群註冊叢集 (也稱為跨專案註冊),請務必設定必要的權限。請注意,如要讓叢集使用 GKE Enterprise 級方案,叢集專案必須啟用 GKE Enterprise (Anthos API),且如要使用全方位的 GKE Enterprise 功能,機群主機專案啟用 GKE Enterprise。
  • 如果您使用 Terraform 或 Config Connector 註冊叢集,請務必為工具設定 Google Cloud 服務帳戶,並完成設定,讓工具可以向 Google Cloud進行驗證:
  • 如要使用 Google Cloud CLI 執行這項工作,請安裝初始化 gcloud CLI。如果您先前已安裝 gcloud CLI,請執行 gcloud components update 來取得最新版本。

在 Google Cloud上註冊 GKE 叢集

如先決條件所述,我們建議您註冊 GKE 叢集,並啟用 Fleet Workload Identity Federation for GKE,以便應用程式以一致的方式向 Google Cloud API 和服務進行驗證。如要進一步瞭解啟用機群 Workload Identity Federation for GKE 的優點,請參閱「使用機群 Workload Identity Federation for GKE」。使用下列任一選項註冊叢集時,您可以視需要啟用機群 Workload Identity Federation for GKE。

您可以選擇在建立叢集時註冊新叢集,或註冊現有叢集。

註冊新叢集

如果您已啟用 GKE Enterprise,強烈建議您在建立叢集時,向機群註冊新的 Enterprise 級別叢集。這是因為這些「機群原生」的 GKE Enterprise 叢集是根據您選擇的機群層級預設設定建立,可使用多項企業功能,且已啟用建議的記錄和指標。如要進一步瞭解這些功能,請參閱下列指南:

您也可以在建立叢集時,按照這些操作說明註冊標準層級叢集,但叢集不會取得任何機群層級的預設設定。

控制台

  1. 在 Google Cloud 控制台中,前往相關的叢集建立頁面。

  2. 按照 GKE 說明文件中的操作說明,完成從 Google Cloud 控制台建立 AutopilotStandard 地區Standard 可用區叢集的章節。

  3. 在「機群註冊」部分中,選取「註冊至機群」核取方塊。根據預設,機群名稱是以專案 ID 為準。

  4. 填寫其餘部分。

  5. 如果您選擇建立 Standard 叢集,並希望註冊的叢集使用機群 Workload Identity Federation (建議),請按一下導覽窗格中的「安全性」,並確認已選取「為 GKE 啟用 Workload Identity Federation」。Autopilot 叢集預設會啟用這項功能。

  6. 查看完叢集詳細資料後,按一下「建立」,即可建立叢集並註冊至機群。

gcloud

這些指令需要 gcloud CLI 450.0.0 以上版本

使用 Google Cloud CLI 註冊叢集時,叢集預設會取得區域性成員位置

  • 如要建立及註冊新的 GKE Autopilot 叢集,請執行下列指令:

    gcloud container clusters create-auto CLUSTER_NAME --enable-fleet
    

    CLUSTER_NAME 替換為您要建立的叢集專屬名稱。這也會成為叢集的成員名稱。如果所選車隊中已有這個名稱的叢集,指令會傳回錯誤。

  • 如要建立及註冊啟用 Workload Identity Federation for GKE 的新 GKE Standard 叢集,請執行下列指令:

    gcloud container clusters create CLUSTER_NAME --enable-fleet \
    --workload-pool=PROJECT_ID.svc.id.goog
    

    更改下列內容:

    • CLUSTER_NAME:您要建立的叢集專屬名稱。這也會成為叢集的成員名稱。如果所選車隊中已有這個名稱的叢集,指令會傳回錯誤。
    • PROJECT_ID:將擁有新叢集的專案的 Google Cloud 專案 ID。

    如果您要建立 Standard 叢集,建議啟用 GKE 適用的 Workload Identity Federation 來建立叢集,因為這樣一來,註冊的叢集就能使用機群 Workload Identity Federation。不過,如果不想使用這項功能,可以省略 --workload-pool 標記。Autopilot 叢集預設會啟用 Workload Identity Federation for GKE。

視要建立的叢集而定,您也可以指定其他選項,建立標準區域標準地區Autopilot 叢集。如果尚未為 Google Cloud CLI 設定預設區域,您可能也需要指定 Compute Engine 區域;如果尚未設定預設專案,則需要指定叢集所屬的專案。 Google Cloud

如要進一步瞭解如何建立不同類型的 GKE 叢集,請參閱 GKE 說明文件

Terraform

您可以使用 google 供應商,透過 Terraform 建立及註冊 GKE 叢集。如要完整瞭解用於管理 GKE 叢集的 google_container_cluster 資源,請參閱 Terraform 登錄檔

請先按照必要條件中的說明,為 Terraform 建立服務帳戶,再按照下列操作說明進行。

如要建立及註冊新的叢集,請在 Terraform 設定中新增下列區塊。

  1. google 提供者指定為必要提供者:

    terraform {
      required_providers {
        google = {
          source = "hashicorp/google"
          version = "VERSION"
        }
      }
    }
    

    VERSION 替換為 5.6.0 以上版本。

  2. 建立及註冊新的叢集:

    resource "google_container_cluster" "TF_CLUSTER_RESOURCE_NAME" {
      provider = google
      name               = "CLUSTER_NAME"
      location           = "ZONE"
      initial_node_count = 1
      fleet {
        project = "FLEET_HOST_PROJECT"
      }
    }
    

    更改下列內容:

    • TF_CLUSTER_RESOURCE_NAME:您要建立的新 google_container_cluster 資源專屬名稱。
    • CLUSTER_NAME:要建立及註冊的新 GKE 叢集的專屬名稱。
    • ZONE:GKE 叢集資源的可用區。例如:us-central1-a
    • FLEET_HOST_PROJECT:您要建立及註冊叢集的 Google Cloud 專案 ID。如未設定,叢集就不會註冊至機群。如要將叢集註冊至其他專案的機群,請指定其他專案 ID。

註冊現有叢集

使用下列任一選項註冊現有叢集,可註冊至叢集所屬專案的機群,或註冊至其他專案的機群 ( Google Cloud 控制台除外)。您也可以在升級至 GKE Enterprise 時,選擇註冊部分或所有現有叢集。

如要註冊現有 GKE 叢集,請按照下列步驟操作:

控制台

如要讓叢集使用機群 Workload Identity Federation (建議),請先在叢集上啟用 Workload Identity Federation for GKE,再按照這些操作說明進行。Autopilot 叢集預設會啟用 Workload Identity Federation for GKE。從 Google Cloud 控制台註冊叢集時,系統會自動為採用 Workload Identity Federation for GKE 的叢集啟用機群 Workload Identity Federation。

  1. 前往 Google Cloud 控制台的「GKE Clusters」(GKE 叢集) 頁面。

    前往 GKE 叢集頁面

  2. 找出要加入機群的未註冊叢集,然後按一下旁邊的「註冊」

  3. 在隨即顯示的確認對話方塊中,再次按一下「註冊」

gcloud

這些指令需要 gcloud CLI 450.0.0 以上版本

使用 Google Cloud CLI 註冊叢集時,叢集預設會取得區域性成員位置

如果叢集已啟用 GKE 適用的 Workload Identity Federation,這兩個指令都會為叢集啟用機群 Workload Identity Federation。

  • 如要將現有 GKE 叢集註冊至專案的機群,請執行下列指令: Google Cloud

    gcloud container clusters update CLUSTER_NAME --enable-fleet
    

    CLUSTER_NAME 替換為您要註冊的叢集名稱。這也會成為叢集的成員名稱

  • 如要將叢集註冊至其他專案的機群,請使用 --fleet-project 標記,如下所示。請務必先設定跨專案註冊的必要權限,再執行這項指令。

    gcloud container clusters update CLUSTER_NAME --fleet-project=PROJECT_ID_OR_NUMBER
    
    • CLUSTER_NAME 替換為您要註冊的叢集名稱。這也會成為叢集的成員名稱
    • PROJECT_ID_OR_NUMBER 替換為所選車隊主專案的專案 ID 或編號。

Terraform

您可以使用 google 提供者,透過 Terraform 註冊 GKE 叢集。如要完整瞭解用於管理 GKE 叢集的 google_container_cluster 資源,請參閱 Terraform 登錄檔

請先按照必要條件中的說明,為 Terraform 建立服務帳戶,再按照下列操作說明進行。

註冊現有叢集

如要註冊現有叢集,請將下列區塊新增至叢集的 google_container_cluster 資源設定:

fleet {
        project = "FLEET_HOST_PROJECT"
      }

FLEET_HOST_PROJECT 替換為叢集所屬的 Google Cloud 專案 ID,或替換為其他專案 ID (如要將叢集註冊至其他專案的機群)。

在已註冊的叢集上啟用 Workload Identity Federation for GKE

您可以使用 Terraform 為叢集啟用 Workload Identity Federation for GKE。

如要為新叢集或現有叢集啟用 GKE 適用的工作負載身分聯盟,請在相關叢集的 google_container_cluster 資源設定中新增下列程式碼區塊:

  workload_identity_config {
    workload_pool = "PROJECT_ID.svc.id.goog"
  }
  ```

 Replace <code><var>PROJECT_ID</var></code> with the Google Cloud project ID for your Terraform resources.

設定連接器

如果已安裝 Config Connector 外掛程式,可以使用 Config Connector 註冊 GKE 叢集。請確認您使用的 Config Connector 版本高於 1.47.0,且已按照必要條件建立服務帳戶。

如需 GKEHubMembership 資源的完整參考資料,請參閱 Config Connector 參考說明文件

註冊 GKE 叢集

如要註冊叢集,請先按照 Config Connector 指南中的操作說明,指定要建立資源的位置。然後建立 YAML 檔案,註冊及 (選擇性) 建立叢集,如下所示:

建立及註冊 GKE 叢集

  1. 建立 GKE 叢集,如下列簡單範例所示:

    apiVersion: container.cnrm.cloud.google.com/v1beta1
    kind: ContainerCluster
    metadata:
      name: CLUSTER_NAME
    spec:
      location: LOCATION
      initialNodeCount: 1
    

    更改下列內容:

    • CLUSTER_NAME:您選擇的名稱,用來代表透過設定連接器建立的叢集。
    • LOCATION:您選擇佈建 GKE 叢集資源的可用區或區域。例如:us-central1-a

    如需透過 Config Connector 建立 GKE 叢集時的完整選項清單,請參閱 Config Connector 說明文件

  2. 為 GKE 叢集註冊成員資格。

    apiVersion: gkehub.cnrm.cloud.google.com/v1beta1
    kind: GKEHubMembership
    metadata:
      name: MEMBERSHIP_NAME
    spec:
      location: MEMBERSHIP_LOCATION
      endpoint:
        gkeCluster:
          resourceRef:
            name: CLUSTER_NAME
    

    更改下列內容:

    • MEMBERSHIP_NAME:您為註冊至機群的叢集選用的專屬成員名稱。
    • MEMBERSHIP_LOCATION:您要管理叢集成員資格的 Fleet 服務位置。這可以是叢集本身的所在地 (建議),也可以是 global。詳情請參閱「車隊會員位置」。您無法指定與叢集位置不同的位置,否則註冊會失敗。
    • CLUSTER_NAME:您選擇的名稱,用來代表透過設定連接器建立的叢集。

在其他專案中註冊叢集

GKEHubMembership 資源的 metadata 欄位中新增下列項目,將叢集註冊至其他專案的機群

   metadata:
     annotations:
       cnrm.cloud.google.com/project-id: FLEET_PROJECT_ID

更改下列內容:

  • FLEET_PROJECT_ID:您選擇用來註冊 GKE 叢集的機群主機專案。

註冊現有叢集

如要註冊任何現有叢集 (無論建立方式為何),請使用下列設定。在這種情況下,您需要指定叢集的完整資源名稱,Config Connector 才能找到該叢集。將 GKEHubMembership 資源的 resourceRef 欄位替換為:

   resourceRef:
     external: //container.googleapis.com/CLUSTER_RESOURCE_NAME

更改下列內容:

  • CLUSTER_RESOURCE_NAME:GKE 叢集的 Google Cloud 資源名稱。例如:projects/my-project/zones/us-west1-a/clusters/my-cluster

如果叢集是使用 Config Connector 建立,則不需要指定叢集名稱 (須完全符合規定)。

在已註冊的叢集上啟用 Workload Identity Federation for GKE

啟用 GKE 適用的工作負載身分聯盟時,設定方式與註冊叢集相同,但須完成下列額外步驟。

  1. ContainerCluster 資源的 spec 欄位中新增下列項目,啟用 Workload Identity Federation for GKE。新叢集和現有叢集都必須執行這項操作。

    spec:
      workloadIdentityConfig:
        workloadPool: PROJECT_ID.svc.id.goog
    

    更改下列內容:

  2. GKEHubMembership 資源區塊的 spec 欄位中新增下列項目,啟用機群 Workload Identity 聯盟。

    spec:
      authority:
        issuer: https://container.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/clusters/CLUSTER_NAME
    }
    

    更改下列內容:

    • :您透過命名空間註解選擇的預設專案,用於建立 GKE 叢集資源。PROJECT_ID
    • LOCATION:您選擇佈建 GKE 叢集資源的可用區或區域。例如:us-central1-a
    • CLUSTER_NAME:您選擇的名稱,用於代表您建立的叢集。

疑難排解

如果在設定過程中遇到任何問題,請參閱疑難排解指南

後續步驟