删除环境

本主题介绍如何删除 Apigee Hybrid 中的环境。请参阅环境和环境组简介。

关于环境删除

环境删除是环境创建的逆过程,包括以下任务:

  • 从集群中移除环境的运行时组件,并从替换文件中移除环境。
  • 使用 Apigee 界面或删除环境 API 从管理平面删除环境。

如何删除环境

假设您有两个环境,即 test 和 prod。在您的替换文件中,定义可能如下所示:

...
envs:
  - name: test
    serviceAccountPaths:
      synchronizer: "your_keypath/PROJECT_ID-apigee-synchronizer.json"
      runtime: "your_keypath/PROJECT_ID-apigee-runtime.json"
  - name: prod
    serviceAccountPaths:
      synchronizer: "your_keypath/PROJECT_ID-apigee-synchronizer.json"
      runtime: "your_keypath/PROJECT_ID-apigee-runtime.json"
...

要删除 prod 环境,请执行以下步骤:

  1. 获取 gcloud 身份验证凭证:
    TOKEN=$(gcloud auth print-access-token)
  2. 为安全起见,请将环境与其关联的每个环境组分离。这样可以防止在移除环境的运行时组件之前将流量路由到该环境。
    1. 列出环境组的连接,并记下 environment 为 prod 的连接的 name(连接 ID):

      无数据驻留

      curl -H "Authorization: Bearer $TOKEN" \
        "https://apigee.googleapis.com/v1/organizations/ORG_NAME/envgroups/ENV_GROUP/attachments"

      数据驻留

      curl -H "Authorization: Bearer $TOKEN" \
        "https://CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/ORG_NAME/envgroups/ENV_GROUP/attachments"

      输出类似于以下内容:

      {
        "environmentGroupAttachments": [
          {
            "name": "f6f2958f-a0a1-4260-b9e9-80eead82ff1d",
            "environment": "prod",
            "createdAt": "1789700385118",
            "environmentGroupId": "ENV_GROUP"
          }
        ]
      }
    2. 删除连接:

      无数据驻留

      curl -X DELETE -H "Authorization: Bearer $TOKEN" \
        "https://apigee.googleapis.com/v1/organizations/ORG_NAME/envgroups/ENV_GROUP/attachments/ATTACHMENT_ID"

      数据驻留

      curl -X DELETE -H "Authorization: Bearer $TOKEN" \
        "https://CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/ORG_NAME/envgroups/ENV_GROUP/attachments/ATTACHMENT_ID"

    其中:

    • ORG_NAME 是您的 Apigee 组织的名称。
    • ENV_GROUP 是环境组的名称。
    • ATTACHMENT_ID 是上一步中返回的附件 name。这是生成的 ID,而不是环境名称。
    • 如果您使用数据驻留,CONTROL_PLANE_LOCATION 是您组织的控制平面位置。

    对该环境关联到的每个环境组重复执行这些步骤。

  3. 执行试运行以测试移除运行时组件的操作:
    helm delete ENV_RELEASE_NAME -n APIGEE_NAMESPACE --dry-run
    
    • ENV_RELEASE_NAME 是您之前为此环境安装 apigee-env 图表时使用的名称。这通常与环境名称相同。如需列出命名空间中的版本名称,请运行 helm list -n APIGEE_NAMESPACE。
    • APIGEE_NAMESPACE 是您安装 Apigee Hybrid 的命名空间,默认为 apigee。

    --dry-run 选项会模拟卸载,而不移除任何内容,其输出与实际卸载的输出相同。与 helm upgrade 不同,helm delete 不接受 --dry-run 的值,例如 --dry-run=server。例如:

    helm delete prod -n apigee --dry-run
    release "prod" uninstalled
  4. 如果试运行无错误,请移除运行时组件:
    helm delete ENV_RELEASE_NAME -n APIGEE_NAMESPACE
    
  5. 打开替换文件并从 envs 中移除 prod 环境定义,从而只保留 test 定义。例如:
    ...
    envs:
      - name: test
        serviceAccountPaths:
          synchronizer: "your_keypath/PROJECT_ID-apigee-synchronizer.json"
          runtime: "your_keypath/PROJECT_ID-apigee-runtime.json"
    ...
  6. 保存文件。
  7. 从管理平面删除环境。您可以使用 Apigee 界面或删除环境 API。

    Apigee 界面

    1. 在 Google Cloud 控制台中,前往 Apigee > 管理 > 环境页面。

      前往环境

    2. 选择 Apigee 组织的项目。
    3. 在 prod 环境所在的行中,依次点击 操作 > 删除。

    API

    无数据驻留:

    curl -X DELETE -H "Authorization: Bearer $TOKEN" \
      "https://apigee.googleapis.com/v1/organizations/ORG_NAME/environments/prod"

    数据驻留:

    curl -X DELETE -H "Authorization: Bearer $TOKEN" \
      "https://CONTROL_PLANE_LOCATION-apigee.googleapis.com/v1/organizations/ORG_NAME/environments/prod"

    该调用会返回一个长时间运行的操作。删除操作可能需要几分钟才能完成。