卸载 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. (仅对使用 Config Sync 自动升级的集群才需要)在 applySpec 清单中,将 spec.upgrades 设置为 auto

    applySpecVersion: 1
    spec:
      upgrades: auto
      configSync:
        enabled: false
    ...
    
  4. 应用更改:

      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 提供程序gke_hub_feature_membership 资源安装 Config Sync,请更新该资源以卸载 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.17.0"
      }
    }
    
  3. 应用 Terraform 配置:

    terraform apply
    

    输入 yes,确认您要应用所述操作。

Config Connector

如果您已使用 Config Connector 通过 GKEHubFeatureMembership 资源安装 Config Sync,请更新该资源以卸载 Config Sync。

  1. 识别集群上已填充 .spec.configmanagement.configSync 字段的 GKEHubFeatureMembership 资源对象。

  2. 修补 GKEHubFeatureMembership 资源对象,将 .spec.configmanagement.configSync 字段设为 null 以将其移除:

    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 页面。

    前往 Feature Manager

  2. 功能表的 Config Management 行中,点击详细信息。此时会显示状态摘要页面。

  3. 点击停用 Config Management。此时会显示一个确认页面。

  4. 在确认页面上,点击停用 Config Management

gcloud

  1. 如需在舰队中的所有集群上停用 Config Management,请运行以下命令:

    gcloud beta container fleet config-management disable
    

Terraform

如果您已使用 Terraform 通过来自 Google Cloud Platform 提供程序google_gke_hub_feature 资源在舰队上启用 Config Management 功能,请更新该资源,以在舰队中的所有集群上停用 Config Management。

  1. 更新包含 google_gke_hub_feature 资源的 HCL 文件以移除 google_gke_hub_feature 资源。

  2. 如果您仍定义了 gke_hub_feature_membership 资源,且 feature 字段引用了已移除的 google_gke_hub_feature,请一并移除该 gke_hub_feature_membership 资源。

  3. 应用 Terraform 配置:

    terraform apply
    

    输入 yes,确认您要应用所述操作。

Config Connector

如果您已使用 Config Connector 通过 GKEHubFeature 资源在舰队上启用 Config Management 功能,请更新该资源,以在舰队中的所有集群上停用 Config Management。

  1. 识别集群上 .spec.resourceID 值为 configmanagementGKEHubFeature 资源对象。

  2. 如果您仍定义了 GKEHubFeatureMembership 资源对象,并且该对象包含引用 GKEHubFeature 资源对象的 .spec.featureRef 字段,请将其删除:

    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 在集群中创建的任何 ClusterRole 和 ClusterRoleBinding 都将从集群中删除。
    • ConfigManagement Operator 安装的任何准入控制器配置都将被删除。
    • 除了 git-creds Secret 以外,config-management-system 命名空间的内容都将被删除,而对于从 1.9.0 开始的 Config Sync 版本,config-management-operator Deployment 和 config-management-operator Pod 也要排除在外。如果没有 config-management-system 命名空间,ConfigManagement Operator 将无法运行。由 ConfigManagement Operator 控制器创建或修改的任何 CustomResourceDefinition (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