卸载 Config Sync

本页面介绍如何从集群中卸载 Config Sync、停用舰队上的 Config Management 舰队功能,以及卸载 ConfigManagement Operator。

Config Management 舰队功能使用 ConfigManagement Operator 管理 Config Sync、Policy Controller 和层次结构控制器。由于采用这种架构,必须按以下顺序完成卸载步骤:

  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 Provider 中的 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 控制台中,转到舰队功能部分下的 GKE Enterprise 功能管理页面。

    转到“功能管理”

  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. 如果您仍在使用引用已移除的 google_gke_hub_featurefeature 字段定义 gke_hub_feature_membership 资源,也请移除该 gke_hub_feature_membership 资源。

  3. 应用 Terraform 配置:

    terraform apply
    

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

Config Connector

如果您使用 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 在集群中创建的任何 ClusterRole 和 ClusterRoleBinding 都将从集群中删除。
    • ConfigManagement Operator 安装的所有准入控制器配置都将被删除。
    • 除了 git-creds Secret 以外,config-management-system 命名空间的内容会被删除;对于 Policy Controller、Config Sync 和 Config Controller 版本(1.9.0 及以上版本)、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