停用混合组织

本文档概述从混合部署中停用组织的步骤。停用组织意味着从所有 Kubernetes 集群内的所有 Cassandra pod 中删除与组织相关的所有数据。

限制

一次只能停用一个组织。不支持同时停用多个组织。

获取组织名称

这些说明中的某些命令要求您使用格式正确的组织名称。

如需获取组织名称以在本页上的命令中使用,请执行以下操作:

  1. 从组织的 overrides.yaml 文件中检索组织名称。
  2. 如果组织名称包含任何短划线(“-”),请将其替换为下划线(“_”)。

说明

按照以下说明从混合部署中停用组织。

  1. 备份组织
    1. 如果尚未针对混合部署启用备份,请现在启用。在多区域设置中,请使用在主要区域中运行的混合部署。如需了解混合备份,请参阅 Cassandra 备份概览
    2. 使用以下命令触发混合备份作业:

      kubectl create job -n apigee --from=cronjob/apigee-cassandra-backup BACKUP_JOB_NAME

      BACKUP_JOB_NAME 可以是任何有效的容器名称。

    3. 备份作业完成后,使用监控备份中的“检查备份作业的状态”和“检查备份日志”来验证备份是否成功。

  2. (可选)如果您在要删除的组织上配置了 Apigee Telemetry(Metrics 和 Logger),请按照以下步骤重新进行配置,以便指标和日志数据应用于新的组织/项目。
    1. 为要向其发送数据的组织运行此命令。请务必使用组织的 overrides.yaml 文件。例如,如果要停用的组织是“test-dev”,则 overrides.yaml 文件应包含 org: test-dev 组织字段。
      helm upgrade telemetry apigee-telemetry/ \
        --namespace apigee \
        --atomic \
        -f OVERRIDES_FILE.yaml
      
    2. 运行此命令,确保使用正确的组织/项目:
      kubectl -n apigee get apigeetelemetry apigee-telemetry -oyaml | grep `gcpProjectID:`
  3. 从混合部署中删除组织的 Kubernetes 资源。
    1. 验证当前上下文是否为来源 Kubernetes 集群的正确上下文:
      kubectl config current-context

      如果需要,请设置 Kubernetes 上下文。

      列出当前上下文以查看每个集群的上下文名称:

      kubectl config get-contexts

      将上下文设置为要停用的集群和区域:

      kubectl config use-context CONTEXT_NAME

      其中,CONTEXT_NAME 是集群和区域的上下文名称。

      例如:

          kubectl config get-contexts
          CURRENT   NAME                                                   CLUSTER                                                AUTHINFO                                               NAMESPACE
                    gke_example-org-1_us-central1_example-cluster-1        gke_example-org-1_us-central1_example-cluster-1        gke_example-org-1_us-central1_example-cluster-1        apigee
          *         gke_example-org-1_us-central1_example-cluster-2        gke_example-org-1_us-central1_example-cluster-2        gke_example-org-1_us-central1_example-cluster-2        apigee
                    gke_example-org-1_us-west1_example-cluster-2           gke_example-org-1_us-west1_example-cluster-2           gke_example-org-1_us-west1_example-cluster-2           apigee
      
          kubectl config use-context gke_example-org-1_us-west1_example-cluster-2
    2. 删除虚拟主机。

      对每个环境组重复此步骤:

      helm -n apigee delete ENV_GROUP_NAME
      
    3. 删除环境。对每个环境重复此操作:
      helm -n apigee delete ENV_NAME
      
    4. 删除 Apigee 组织。
      helm -n apigee delete ORG_NAME
      
  4. 从混合部署中删除组织数据。完成此步骤后,所有组织数据都将从混合部署中移除。
    1. apigee-cassandra-default-0 pod 执行 exec:
      kubectl exec -it -n apigee apigee-cassandra-default-0 -- /bin/bash
      
    2. 执行以下命令: 复制输出中显示的所有名称的列表。 稍后需要用到此列表。
      find /opt/apigee/data/apigee-cassandra/ -iname '*ORG_NAME_hybrid' -type d -maxdepth 2 -printf "%f\n"

      如需了解如何查找和准备 ORG_NAME,请参阅获取组织名称

      apigee-cassandra-default-0 pod 中退出。

    3. 按照创建用于调试的客户端容器中的说明,创建 Cassandra 调试客户端 pod。 在看到 cqlsh 提示符后,继续执行下一步。
    4. cqlsh 提示符处,执行以下命令:
      desc keyspaces;

      确保此命令不返回任何错误。

      对于之前从 apigee apigee-cassandra-default-0 创建的列表中的每个名称,请运行以下命令:

      drop keyspace ;

      从 Cassandra 调试客户端 pod 中退出。

    5. 对所有 Cassandra pod 执行滚动重启。只要是一次重启一个 Cassandra pod,重启 Cassandra pod 可以按任何顺序完成。对于多区域部署,请对每个混合区域中的所有 Cassandra pod 执行滚动重启。

      运行以下命令并验证状态是否显示为“正在运行”:

      kubectl get apigeeds -n apigee

      使用以下命令重启单个 Cassandra pod:

      kubectl delete pod -n apigee CASSANDRA_POD_NAME

      使用以下命令等待 pod 达到 Running 状态:

      kubectl get pods -n apigee

      重启下一个 Cassandra pod。

    6. 执行 cqlsh 命令后,请在混合部署中的所有 Cassandra pod 上运行以下命令。对于多区域混合部署,请在所有混合区域的所有 Cassandra pod 上运行这些命令。
      kubectl exec -it -n apigee CASSANDRA_POD_NAME -- /bin/bash
      find /opt/apigee/data/apigee-cassandra/ -iname '*ORG_NAME_hybrid' -type d -maxdepth 2

      如需了解如何查找和准备 ORG_NAME,请参阅获取组织名称

      find /opt/apigee/data/apigee-cassandra/ -iname '*ORG_NAME_hybrid' -type d -maxdepth 2 -exec rm -rf {} +
    7. 从 Cassandra pod 中退出。