手動安裝 Config Connector


本頁說明如何手動安裝 Config Connector。

如要進一步瞭解不同的安裝選項,請參閱「選擇安裝類型」。

手動安裝的更新速度比使用外掛程式更快。

在下列操作說明中,Config Connector 會設定為叢集模式,也就是說,會有一個全域 Config Connector 控制器,模擬為單一 Google Cloud IAM 服務帳戶。在同一個叢集中新增更多 Config Connector 資源並導入更多 Kubernetes 命名空間時,您可能需要考慮切換至命名空間模式,這種模式更具擴充性,且能為多租戶用途提供更完善的 IAM 權限隔離機制,例如管理多個 Google Cloud 專案的資源。

事前準備

手動安裝 Config Connector Operator 前,請先完成下列步驟:

安裝 Config Connector Operator

Config Connector 會使用 Kubernetes 運算子,確保安裝作業維持在最新狀態。如要安裝這個運算子,請完成下列步驟:

  1. 下載最新的 Config Connector Operator tar 檔案:

    gcloud storage cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
    
  2. 將 tar 檔案解壓縮:

    tar zxvf release-bundle.tar.gz
    
  3. 在叢集上安裝 Config Connector 運算子:

    1. 如果是 GKE Autopilot 叢集:

      kubectl apply -f operator-system/autopilot-configconnector-operator.yaml
      
    2. 如果是 GKE 標準叢集:

      kubectl apply -f operator-system/configconnector-operator.yaml
      

建立身分

Config Connector 會透過身分與存取權管理 (IAM) 服務帳戶進行驗證,並使用 GKE 的工作負載身分聯合,將 IAM 服務帳戶與 Kubernetes 服務帳戶繫結,藉此建立及管理 Google Cloud 資源。

如要建立身分,請完成下列步驟:

  1. 建立 IAM 服務帳戶。如要使用現有的服務帳戶,請使用該帳戶並略過這個步驟:

    gcloud iam service-accounts create SERVICE_ACCOUNT_NAME
    

    SERVICE_ACCOUNT_NAME 換成服務帳戶的名稱。

    如要進一步瞭解如何建立服務帳戶,請參閱「建立及管理服務帳戶」。

  2. 授予 IAM 服務帳戶專案的提升權限:

    gcloud projects add-iam-policy-binding PROJECT_ID \
      --member="serviceAccount:SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com" \
      --role="roles/editor"
    

    PROJECT_ID 替換為您的專案 ID。

  3. 在 IAM 服務帳戶與 Config Connector 執行的預先定義 Kubernetes 服務帳戶之間,建立 IAM 政策繫結:

    gcloud iam service-accounts add-iam-policy-binding \
    SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com \
      --member="serviceAccount:PROJECT_ID.svc.id.goog[cnrm-system/cnrm-controller-manager]" \
      --role="roles/iam.workloadIdentityUser"
    

設定 Config Connector

如要完成安裝,請為 ConfigConnector CustomResource 建立設定檔,然後使用 kubectl apply 指令套用該設定檔。Config Connector Operator 會在叢集中安裝Google Cloud 資源 CRD 和 Config Connector 元件。

如要將運算子設定為叢集模式,請完成下列步驟:

  1. 將下列 YAML 檔案複製到名為 configconnector.yaml 的檔案:
    # configconnector.yaml
    apiVersion: core.cnrm.cloud.google.com/v1beta1
    kind: ConfigConnector
    metadata:
      # the name is restricted to ensure that there is only one
      # ConfigConnector resource installed in your cluster
      name: configconnector.core.cnrm.cloud.google.com
    spec:
      mode: cluster
      googleServiceAccount: "SERVICE_ACCOUNT_NAME@PROJECT_ID.iam.gserviceaccount.com"
      # Setting `stateIntoSpec` to `Absent` is recommended. It means setting `cnrm.cloud.google.com/state-into-spec`
      # annotation to `absent` for all Config Connector resources created in the cluster in the future.
      # It prevents Config Connector from populating unspecified fields into the spec.
      stateIntoSpec: Absent
    取代下列項目:
    • SERVICE_ACCOUNT_NAME 改為服務帳戶名稱。
    • PROJECT_ID 為您的專案 ID。
  2. 使用 kubectl apply 將設定套用至叢集:
      kubectl apply -f configconnector.yaml

指定資源的建立位置

Config Connector 可依專案、資料夾或機構整理資源,與使用 Google Cloud整理資源的方式相同。

使用 Config Connector 建立資源前,您必須先設定資源的建立位置。為判斷資源的建立位置,Config Connector 會使用資源設定或現有命名空間的註解。詳情請參閱「整理資源」。

如果沒有這類用途的命名空間,請使用 kubectl 建立命名空間。
kubectl create namespace NAMESPACE

NAMESPACE 替換為命名空間名稱。例如 config-connector

選取分頁,選擇要讓 Config Connector 建立資源的位置。

專案

如要在特定專案中建立資源,請執行下列指令:

    kubectl annotate namespace \
    NAMESPACE cnrm.cloud.google.com/project-id=PROJECT_ID

取代下列項目:

  • NAMESPACE 替換為您的命名空間名稱。
  • PROJECT_ID 改成您的專案 ID。 Google Cloud

資料夾

如要在特定資料夾中建立資源,請執行下列指令:

    kubectl annotate namespace \
    NAMESPACE cnrm.cloud.google.com/folder-id=FOLDER_ID

取代下列項目:

  • NAMESPACE 替換為您的命名空間名稱。
  • FOLDER_ID 改成您的 Google Cloud 資料夾 ID。

機構

如要在特定機構中建立資源,請執行下列指令:

    kubectl annotate namespace \
    NAMESPACE cnrm.cloud.google.com/organization-id=ORGANIZATION_ID

取代下列項目:

  • NAMESPACE 替換為您的命名空間名稱。
  • ORGANIZATION_ID 改成您的 Google Cloud 機構 ID。

為命名空間加上註解時,Config Connector 會在對應的專案、資料夾或機構中建立資源。如要進一步瞭解 Config Connector 如何使用 Kubernetes 命名空間,請參閱「Kubernetes 命名空間和專案 Google Cloud 」。

驗證安裝

Config Connector 會在名為 cnrm-system 的命名空間中執行所有元件。如要確認 Pod 是否已準備就緒,請執行下列指令:

kubectl wait -n cnrm-system \
      --for=condition=Ready pod --all

如果 Config Connector 安裝正確,輸出內容會類似以下內容:

pod/cnrm-controller-manager-0 condition met

升級 Config Connector

如要下載及安裝最新版 Config Connector 運算子,請按照下列步驟操作:

gcloud storage cp gs://configconnector-operator/latest/release-bundle.tar.gz release-bundle.tar.gz
tar zxvf release-bundle.tar.gz
kubectl apply -f operator-system/configconnector-operator.yaml

降級 Config Connector

系統不支援完全降級 Config Connector。如要降級 Config Connector 運算子和 CRD,您必須解除安裝並重新安裝 Config Connector,然後重新套用資源。

在 Config Connector 1.123.1 以上版本中,您可以針對使用命名空間模式的安裝項目,還原運算子版本。在每個含有要回溯運算子的命名空間中,將 ConfigConnectorContext 物件中的 spec.version 欄位設為先前的 Config Connector 版本。

您最多可以將 Config Connector 控制器復原至 3 個次要版本。您一律必須復原到特定次要版本的最新修補程式版本。

解除安裝 Config Connector

使用 kubectl delete 移除 Config Connector CRD 和控制器元件:

kubectl delete ConfigConnector configconnector.core.cnrm.cloud.google.com \
    --wait=true

如要解除安裝 Config Connector 運算子,請執行下列指令:

kubectl delete -f operator-system/configconnector-operator.yaml  --wait=true

從非電信業者安裝的裝置升級

Config Connector 1.33.0 以上版本僅支援透過 GKE 外掛程式或運算子安裝。

如要升級至運算子 (並保留所有 Config Connector 資源),您必須移除 CRD 以外的所有 Config Connector 系統元件,然後安裝運算子。

  1. 執行下列指令,移除 Config Connector 系統非 CRD 元件:

    kubectl delete sts,deploy,po,svc,roles,clusterroles,clusterrolebindings --all-namespaces -l cnrm.cloud.google.com/system=true --wait=true
    kubectl delete validatingwebhookconfiguration abandon-on-uninstall.cnrm.cloud.google.com --ignore-not-found --wait=true
    kubectl delete validatingwebhookconfiguration validating-webhook.cnrm.cloud.google.com --ignore-not-found --wait=true
    kubectl delete mutatingwebhookconfiguration mutating-webhook.cnrm.cloud.google.com --ignore-not-found --wait=true
    
  2. 使用 GKE 外掛程式Operator 安裝 Config Connector。

從外掛程式切換為手動安裝

以外掛程式形式安裝時,Config Connector 的版本會直接與安裝的 GKE 版本綁定。

手動安裝可加快更新速度,但需要手動升級。

如要切換,同時安全地保留所有資源,請按照下列步驟操作:

  1. 停用外掛程式,但不要刪除任何 ConfigConnectorConfigConnectorContext 物件:

    gcloud container clusters update CLUSTER_NAME --update-addons ConfigConnector=DISABLED
    

    CLUSTER_NAME 換成您安裝 Config Connector 的叢集名稱。

  2. 安裝所選版本的手動運算子

    為避免發生潛在的 CRD 驗證錯誤 (例如 KNV2009: Invalid value: "v1beta1": must appear in spec.versions),所選手動運算子版本必須與外掛程式使用的版本相同或更新。降級手動運算子版本可能會導致錯誤 (例如 KNV2009),因為 GKE 外掛程式可能已將特定 CRD 升級至較新的 Config Connector 版本。

後續步驟