解除安裝 Config Sync

本頁面說明如何從叢集解除安裝 Config Sync、停用機群的 Config Management 機群功能,以及解除安裝 ConfigManagement Operator。

本頁面適用於負責管理基礎技術架構生命週期的 IT 管理員和作業人員。如要進一步瞭解我們在 Google Cloud 內容中提及的常見角色和範例工作,請參閱「常見的 GKE Enterprise 使用者角色和工作」。

Config Management 車隊功能會使用 ConfigManagement Operator 管理 Config Sync。由於這種架構,解除安裝步驟必須依下列順序完成:

  1. 從叢集解除安裝 Config Sync
  2. 在機群上停用 Config Management 功能
  3. 從叢集解除安裝 ConfigManagement Operator

從叢集解除安裝 Config Sync

控制台

您無法只使用 Google Cloud 控制台解除安裝 Config Sync。請改用 Google Cloud CLI。

gcloud

  1. 使用 Google Cloud CLI 開啟您在安裝期間建立的 applySpec 資訊清單

  2. 在 applySpec 資訊清單中,將 spec.configSync.enabled 設為 false

    applySpecVersion: 1
    spec:
      configSync:
        enabled: false
    ...
    
  3. 套用變更:

      gcloud beta container fleet config-management apply \
          --membership=MEMBERSHIP_NAME \
          --config=CONFIG_YAML \
          --project=PROJECT_ID
    

    更改下列內容:

    • MEMBERSHIP_NAME:新增要套用這項設定的已註冊叢集。如果您在Google Cloud 控制台中註冊叢集,成員名稱會與叢集名稱相同。

    • CONFIG_YAML:新增 apply-spec.yaml 檔案的路徑。

    • PROJECT_ID:新增專案 ID。

Terraform

如果您使用 Terraform,透過 Google Cloud Platform Providergke_hub_feature_membership 資源安裝 Config Sync,請更新該資源以解除安裝 Config Sync。請勿使用 terraform destroy 指令。terraform destroy 指令無法完全解除安裝 Config Sync,部分元件仍會保留。

  1. 在 Terraform 設定檔中找出已填入 configmanagement 引數的 gke_hub_feature_membership 資源。

  2. 更新 gke_hub_feature_membership 資源,從 configmanagement 中移除 config_sync 引數。

    例如:

    resource "google_gke_hub_feature_membership" "feature_member" {
      location = "global"
      feature = google_gke_hub_feature.feature.name
      membership = google_gke_hub_membership.membership.membership_id
      membership_location = google_gke_hub_membership.membership.location
      configmanagement {
        version = "1.20.0"
      }
    }
    
  3. 套用 Terraform 設定:

    terraform apply
    

    輸入 yes,確認要套用所述動作。

設定連接器

如果您使用 Config Connector,透過 GKEHubFeatureMembership 資源安裝 Config Sync,請更新該資源來解除安裝 Config Sync。

  1. 找出叢集上已填入 .spec.configmanagement.configSync 欄位的 GKEHubFeatureMembership 資源物件。

  2. 修補 GKEHubFeatureMembership 資源物件,將 .spec.configmanagement.configSync 欄位設為空值,即可移除該欄位:

    kubectl patch GKEHubFeatureMembership FEATURE_MEMBERSHIP_OBJECT_NAME \
        --namespace FEATURE_MEMBERSHIP_OBJECT_NAMESPACE \
        -p '{"spec":{"configmanagement":{"configSync": null}}}'
    

    更改下列內容:

    • FEATURE_MEMBERSHIP_OBJECT_NAME:新增您先前建立的 GKEHubFeatureMembership 資源物件名稱。

    • FEATURE_MEMBERSHIP_OBJECT_NAMESPACE:加入包含先前建立的 GKEHubFeatureMembership 資源物件的命名空間。

在車隊中停用 Config Management

控制台

  1. 前往 Google Cloud 控制台的「Feature Manager」頁面。

    前往功能管理工具

  2. 在「功能」表格的「設定管理」列中,按一下「詳細資料」。系統會顯示「狀態摘要」頁面。

  3. 按一下「停用 Config Management」。系統會顯示確認頁面。

  4. 在確認頁面上,按一下「停用 Config Management」

gcloud

  1. 如要停用機群中所有叢集的 Config Management,請執行下列指令:

    gcloud beta container fleet config-management disable
    

Terraform

如果您使用 Terraform,透過 Google Cloud Platform Providergoogle_gke_hub_feature 資源,在車隊中啟用 Config Management 功能,請更新該資源,在車隊的所有叢集中停用 Config Management。

  1. 更新包含 google_gke_hub_feature 資源的 HCL 檔案,移除 google_gke_hub_feature 資源。

  2. 如果仍有 gke_hub_feature_membership 資源定義包含參照已移除 google_gke_hub_featurefeature 欄位,請一併移除該 gke_hub_feature_membership 資源。

  3. 套用 Terraform 設定:

    terraform apply
    

    輸入 yes,確認要套用所述動作。

設定連接器

如果您使用 Config Connector,透過 GKEHubFeature 資源在叢集上啟用 Config Management 功能,請更新該資源,在叢集中的所有叢集上停用 Config Management。

  1. 找出叢集上 .spec.resourceID 值為 configmanagementGKEHubFeature 資源物件。

  2. 如果您仍有使用參照該 GKEHubFeature 資源物件的 .spec.featureRef 欄位定義的 GKEHubFeatureMembership 資源物件,請刪除該物件:

    kubectl delete GKEHubFeatureMembership FEATURE_MEMBERSHIP_OBJECT_NAME \
        --namespace FEATURE_MEMBERSHIP_OBJECT_NAMESPACE
    

    更改下列內容:

    • FEATURE_MEMBERSHIP_OBJECT_NAME:新增您先前建立的 GKEHubFeatureMembership 資源物件名稱。

    • FEATURE_MEMBERSHIP_OBJECT_NAMESPACE:加入包含先前建立的 GKEHubFeatureMembership 資源物件的命名空間。

  3. 從叢集中刪除 GKEHubFeature 資源:

    kubectl delete GKEHubFeature FEATURE_OBJECT_NAME \
        --namespace FEATURE_OBJECT_NAMESPACE
    

    更改下列內容:

    • FEATURE_OBJECT_NAME:新增您先前建立的 GKEHubFeature 資源物件名稱。

    • FEATURE_OBJECT_NAMESPACE:加入包含先前建立的 GKEHubFeature 資源物件的命名空間。

解除安裝 ConfigManagement Operator

在機群上停用 Config Management 功能,或從機群取消註冊叢集後,請使用 kubectl 刪除 ConfigManagement Operator。

如要移除 ConfigManagement Operator,請執行下列指令:

  1. 刪除叢集中的 ConfigManagement 物件:

    kubectl delete configmanagement --all
    

    執行這項指令後,會發生下列情況:

    • ConfigManagement Operator 在叢集中建立的所有 ClusterRoles 和 ClusterRoleBindings 都會遭到刪除。
    • ConfigManagement Operator 安裝的所有許可控制器設定都會遭到刪除。
    • config-management-system 命名空間的內容會遭到刪除 (git-creds Secret 除外)。如果是 1.9.0 以上版本的 Config Sync,config-management-operator Deployment 和 config-management-operator Pod 也會遭到刪除。沒有 config-management-system命名空間,ConfigManagement Operator 就無法運作。ConfigManagement Operator 控制器建立或修改的所有 CustomResourceDefinitions (CRD),都會從它們建立或修改時所在的叢集中移除。執行 ConfigManagement Operator 所需的 CRD 會繼續存在,因為從 Kubernetes 的角度來看,它們是由安裝 ConfigManagement Operator 的使用者新增的。我們將在下一個步驟說明如何移除這些元件。
  2. 如需保留 git-creds Secret,請立即執行下列操作:

    kubectl -n config-management-system get secret git-creds -o yaml
    
  3. 刪除 config-management-system 命名空間:

    kubectl delete ns config-management-system
    
  4. 刪除 config-management-monitoring 命名空間:

    kubectl delete ns config-management-monitoring
    
  5. 刪除 ConfigManagement CustomResourceDefinition:

    kubectl delete crd configmanagements.configmanagement.gke.io