删除私有云

私有云由一个或多个 vSphere 集群组成。删除私有云会删除整个私有云。私有云的所有组件都会被删除,包括所有私有云节点。

私有云的组件包括:

  • 节点
  • 虚拟机
  • 管理 VLANs 和子网
  • 工作负载子网
  • 存储在私有云中的所有用户数据
  • 所有外部访问规则

删除私有云分为两个阶段:软删除和永久删除。每个阶段会发生以下情况:

  1. 软删除:私有云进入为期 7 天的软删除状态。 在此阶段,会发生以下情况:
    • 系统会立即停止计费。
    • 与 NSX 网段和工作负载的所有连接均已断开。
    • 对私有云的界面和 API 的访问权限已停用。
    • 外部 IP 地址已停用。
    • 私有云的配置和数据会保留,并且您的虚拟机会继续运行。
    • 您可以将私有云恢复到之前的状态。
  2. 永久删除:7 天后,私有云及其资源会被永久删除。如果您想在 7 天期限结束之前永久删除处于软删除状态的私有云,可以使用 Privileged Access Manager 或联系支持团队

准备工作

如果要保留任何数据,请将数据备份到其他私有云、Google Cloud 存储空间或本地存储或其他存储空间。

gcloud 和 API 要求

如需使用 gcloud 命令行工具或 API 管理 VMware Engine 资源,我们建议您按下文所述配置工具。

gcloud

  1. 设置默认项目 ID:

    gcloud config set project PROJECT_ID
    
  2. 设置默认地区和区域:

    gcloud config set compute/region REGION
    
    gcloud config set compute/zone ZONE
    

如需详细了解 gcloud vmware 工具,请参阅 Cloud SDK 参考文档

API

本文档集中的 API 示例使用 cURL 命令行工具来查询 API。cURL 请求中需要有效的访问令牌。获取有效访问令牌的方法有很多种:以下步骤使用 gcloud 工具生成访问令牌:

  1. 登录 Google Cloud:

    gcloud auth login
    
  2. 生成访问令牌并导出到 TOKEN:

    export TOKEN=`gcloud auth print-access-token`
    
  3. 验证 TOKEN 设置正确:

    echo $TOKEN
    

现在,在对 API 的请求中使用授权令牌。例如:

curl -X GET -H "Authorization: Bearer \"$TOKEN\"" -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations

Python

本文档中的 Python 代码示例使用 VMware Engine 库与 API 进行通信。为了能够使用此方法,需要安装该库并配置应用默认凭据

  1. 下载并安装 Python 库:

    pip install google-cloud-vmwareengine
    
  2. 通过在 shell 中执行这些命令来配置 ADC 信息:

    gcloud auth application-default login
    

    或者,使用服务账号密钥文件:

    export GOOGLE_APPLICATION_CREDENTIALS="FILE_PATH"
    

如需详细了解该库,请访问参考页面或查看 GitHub 上的代码示例

删除私有云

如果您希望工作负载网络 IP CIDR 立即可用,请在开始删除私有云之前关闭私有云中的所有虚拟机。

控制台

  1. 在 Google Cloud 控制台中,前往私有云页面。

    前往“Private Cloud”页面

  2. 点击选择项目,然后选择要删除私有云的组织、文件夹或项目。

  3. 选择您想要删除的私有云。

  4. 在摘要页面上,点击删除此私有云

  5. 在确认页面上,系统会提示您验证删除操作的所有结果。请仔细阅读这些说明,只有在您准备好接受结果后才能继续删除。准备好接受结果后,选中所有复选框。

  6. 输入运行删除前的等待时间(1-8 小时)。在此期限内,您可以点击取消以取消删除。

  7. 要验证您知道要删除哪个私有云,请输入要删除的私有云的名称。

  8. 点击删除,将私有云标记为进行删除。

删除过程会在指定的延迟时间(以小时为单位)之后开始,一直持续到结束。

gcloud

如需使用 Google Cloud CLI 删除私有云,请使用 gcloud vmware private-clouds delete 命令

  gcloud vmware private-clouds delete PRIVATE_CLOUD_ID \
     --location=ZONE [--delay-hours=HOURS]

替换以下内容:

  • PRIVATE_CLOUD_ID:相应请求的私有云 ID
  • ZONE:此私有云的可用区
  • HOURS:延迟此请求的小时数。默认情况下,此值设置为 3 小时,但您可以将其设置为 0 到 8 小时。将此值设置为 0 表示删除请求将立即开始。

API

如需使用 VMware Engine API 删除私有云,请发出 DELETE 请求:

curl -X DELETE -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/privateClouds?privateCloudId=PRIVATE_CLOUD_ID&mps;delayHours=HOUR

替换以下内容:

  • TOKEN:此请求的授权令牌。
  • PROJECT_ID:此请求的项目
  • ZONE:私有云的可用区
  • PRIVATE_CLOUD_ID:私有云的私有云 ID
  • HOUR:延迟此请求的小时数;默认值为 3。您可以设置为 0 到 8 个小时。 将此值设置为 0 会立即启动删除请求。

Python

与使用 Google Cloud 控制台相比,使用 Google Cloud VMware Engine 库删除私有云的过程只有一个步骤。在调用私有云删除方法时要非常小心。

from google.api_core import operation
from google.cloud import vmwareengine_v1


def delete_private_cloud_by_full_name(cloud_name: str) -> operation.Operation:
    """
    Deletes VMware Private Cloud.

    Args:
        cloud_name: identifier of the Private Cloud you want to delete.
            Expected format:
            projects/{project_name}/locations/{zone}/privateClouds/{cloud}

    Returns:
        An Operation object related to started private cloud deletion operation.
    """
    client = vmwareengine_v1.VmwareEngineClient()
    request = vmwareengine_v1.DeletePrivateCloudRequest()
    request.force = True
    request.delay_hours = 3
    request.name = cloud_name
    return client.delete_private_cloud(request)


def delete_private_cloud(
    project_id: str, zone: str, cloud_name: str
) -> operation.Operation:
    """
    Deletes VMWare Private Cloud.

    Args:
        project_id: name of the project hosting the private cloud.
        zone: zone in which the private cloud is located in.
        cloud_name: name of the private cloud to be deleted.

    Returns:
        An Operation object related to started private cloud deletion operation.
    """
    return delete_private_cloud_by_full_name(
        f"projects/{project_id}/locations/{zone}/privateClouds/{cloud_name}"
    )

使用 Privileged Access Manager 加快私有云删除速度

您可以使用 Privileged Access Manager 获取短期有效的特权访问权限,以永久删除处于软删除状态的私有云,而无需等待 7 天的软删除期限结束。如需详细了解 Privileged Access Manager,请参阅 Privileged Access Manager 概览

如需使用 Privileged Access Manager 加快私有云删除速度,您需要拥有使用权,该使用权定义了您可以请求的角色、可以提出请求的用户以及可以批准请求的用户。如需了解详情,请参阅在 Privileged Access Manager 中创建使用权

授权必须授予包含删除 Google Cloud VMware Engine 私有云的权限的角色,例如 vmwareengine.privateClouds.delete。例如,roles/vmwareengine.vmwareengineAdmin 角色包含此权限。

如需请求、批准和撤消提供临时访问权限的授权,请参阅请求和管理授权。申请公益广告时,您必须提供理由,并且公益广告必须获得指定审批者的批准。授权在指定期限内有效。

获得具有所需权限的有效授权后,您可以使用控制台、Google Cloud CLI 或 API 步骤(如删除私有云中所述)永久删除软删除的私有云。如果私有云已处于软删除状态,则删除该私有云会永久删除该私有云及其资源。

取消删除私有云

您可以在软删除期内取消删除私有云。 按照以下步骤操作:

控制台

  1. 在 Google Cloud 控制台中,前往私有云页面。

前往“Private Cloud”页面

  1. 选择已标记为删除的私有云。
  2. 在摘要页面上,点击取消删除以取消删除私有云。

gcloud

如需使用 Google Cloud CLI 取消删除私有云,请使用 gcloud vmware private-clouds undelete 命令

  gcloud vmware private-clouds undelete PRIVATE_CLOUD_ID \
     --location=ZONE

替换以下内容:

  • PRIVATE_CLOUD_ID:相应请求的私有云 ID
  • ZONE:此私有云的可用区

API

如需使用 VMware Engine API 取消删除私有云,请发出 POST 请求:

curl -X POST -H "Authorization: Bearer TOKEN"  -H "Content-Type: application/json; charset=utf-8" https://vmwareengine.googleapis.com/v1/projects/PROJECT_ID/locations/ZONE/privateClouds?privateCloudId=PRIVATE_CLOUD_ID:undelete

替换以下内容:

  • TOKEN:此请求的授权令牌。
  • PROJECT_ID:此请求的项目 ID
  • ZONE:私有云的可用区
  • PRIVATE_CLOUD_ID:相应请求的私有云 ID

Python

from google.api_core import operation
from google.cloud import vmwareengine_v1


def cancel_private_cloud_deletion_by_full_name(cloud_name: str) -> operation.Operation:
    """
    Cancels in progress deletion of VMware Private Cloud.

    Args:
        cloud_name: identifier of the Private Cloud you want to cancel deletion for.
            Expected format:
            projects/{project_name}/locations/{zone}/privateClouds/{cloud}

    Returns:
        An Operation object related to canceling private cloud deletion operation.
    """
    client = vmwareengine_v1.VmwareEngineClient()
    request = vmwareengine_v1.UndeletePrivateCloudRequest()
    request.name = cloud_name
    return client.undelete_private_cloud(request)


def cancel_private_cloud_deletion(
    project_id: str, zone: str, cloud_name: str
) -> operation.Operation:
    """
    Cancels in progress deletion of VMWare Private Cloud.

    Args:
        project_id: name of the project hosting the private cloud.
        zone: zone in which the private cloud is located in.
        cloud_name: name of the private cloud to cancel deletion for.

    Returns:
        An Operation object related to canceling private cloud deletion operation.
    """
    return cancel_private_cloud_deletion_by_full_name(
        f"projects/{project_id}/locations/{zone}/privateClouds/{cloud_name}"
    )