更新部署

本页介绍了如何使用 Infrastructure Manager 更新部署。您可能需要更新部署的情况包括:

  • 将基础架构恢复为所选状态。

    创建部署后,资源可能会在过段时间后发生变化。例如,某些资源可能已被在控制台中工作的用户修改。您可以使用原始 Terraform 配置更新部署,将其恢复为所选状态。

  • 实现基础架构更改。

    创建部署后,您可能需要修改基础架构。例如,添加新资源或更改部分配置。您可以使用描述新基础架构的 Terraform 配置更新部署。

本页假定您熟悉 Terraform。如需了解详情,请参阅 Terraform 和 Infra Manager

准备工作

  1. 确保已启用 Infra Manager
  2. 确保您拥有创建部署所需的 IAM 权限:roles/config.admin
  3. 确保您拥有具有所需权限的服务账号。如需了解详情,请参阅配置服务账号
  4. 确定要更新的 Infra Manager 部署。
  5. 确定要为更新部署的 Terraform 配置。任何配置都可以用于修订版本。此配置通常是已部署配置的完全相同或更新版本。

    确保此 Terraform 配置符合限制,包括配置不包含敏感数据。

  6. 确认贵组织与预期基础架构相关联的产品的配额。如果您预期的基础架构超出了贵组织在所用产品方面的配额,则可能会出现部署错误。如需了解详情,请参阅配额和限制

  7. 请为您要修改的资源执行所有必要的数据迁移或服务连续性步骤。

  8. 如果您想在配置资源之前预览更新,请参阅预览部署更新

授予特定于配置的权限

如需部署 Terraform 配置中指定的 Google Cloud 资源,您用于调用 Infra Manager 的服务账号需要具备特定于以下各项的权限:

  • 您用于修订的配置中定义的Google Cloud 资源。

  • 如果您为修订版本使用的配置定义的资源与用于部署的配置定义的资源不同,则您需要对这两种配置中定义的资源拥有相应权限。

除了服务账号使用 Infra Manager 服务所需的权限之外,服务账号还需要拥有对配置中定义的资源的特定权限。

如需详细了解如何为 Google Cloud 资源授予权限,以及如何确保您有权访问所需的项目,请参阅配置服务账号

将私有 Git 代码库和主机连接到 Cloud Build

如果您要从私有 Git 代码库部署 Terraform 配置,则需要将 Git 主机和代码库连接到 Cloud Build。

更新部署

如需更新部署,您可以使用相同的部署名称部署配置,这会创建一个修订版本。如需了解详情,请参阅部署和修订版本概览

如果您没有现有部署,请参阅使用 Infra Manager 部署基础架构

如需在不预配资源的情况下预览更新,请参阅预览部署

选择您选择的工作流对应的标签页,详细了解如何更新部署。

控制台

本部分介绍了如何在 Google Cloud 控制台中使用 Infra Manager 更新 Terraform 配置。

部署配置并创建修订版本:

  1. 在 Google Cloud 控制台中,前往 Infra Manager 页面。

    前往 Infra Manager

  2. 部署页面上,查看 ID 列,然后点击要更新的部署。
  3. 在标题为部署 ID 的页面上,点击修改
  4. 部署详情页面上,您可以修改 Terraform 版本服务账号Terraform 配置来源字段。如果您提供私有 Git 代码库,请确保您已将主机和代码库连接到 Cloud Build

    点击继续

  5. Terraform 详情页面上,您可以修改 Terraform 配置的输入值。点击继续
  6. 高级详情页面上,您可以修改标签和注释工作器池工件 Cloud Storage 存储桶字段。
  7. 对所做的部署更改感到满意后,点击更新以开始更新流程。

如需详细了解部署参数及其格式,请参阅部署资源文档。

gcloud CLI

本部分介绍了如何部署存储在 Cloud Storage 存储桶中的 Terraform 配置。借助存储桶,您可以控制对配置的访问权限。

  1. 确保 Terraform 配置位于 Cloud Storage 存储桶中。如需了解详情,请参阅将配置上传到存储桶
  2. 如果存储桶位于与运行 Infra Manager 的项目不同的项目中,则您需要确保 Infra Manager 的服务账号对该存储桶拥有读取权限。如需了解详情,请参阅配置服务账号

    如果存储桶与 Infra Manager 位于同一项目中,则系统已为该存储桶启用读取权限。

  3. 部署配置并创建修订版本:

    gcloud infra-manager deployments apply projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \
            --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \
            --gcs-source gs://BUCKET_NAME/OBJECT_NAME \
            --quota-validation=QUOTA_VALIDATION \
            --input-values=INPUT_1_NAME=VALUE,INPUT_2_NAME=VALUE \
            --tf-version-constraint=TERRAFORM_VERSION \
            --annotation="ANNOTATION_KEY=ANNOTATION_VALUE"
            
替换:
  • PROJECT_ID:Infra Manager 运行所在的项目 ID。
  • LOCATION:Infra Manager 的运行位置。如需查看有效位置的列表,请参阅Infra Manager 位置
  • DEPLOYMENT_ID:您指定的部署标识符。如需详细了解部署标识符的限制,请参阅部署名称
  • SERVICE_ACCOUNT_PROJECT_ID 是服务账号的项目 ID。通常,此项目与 Infra Manager 运行的项目相同。
  • SERVICE_ACCOUNT:您用于调用 Infra Manager 的服务账号的名称。
  • BUCKET_NAME:存储配置的存储桶的名称。
  • OBJECT_NAME:配置文件的对象名称。此对象可以是目录或 ZIP 文件,但不能是 Terraform 文件。如果您使用的是对象版本控制,还可以指定对象的世代号。如需了解详情,请参阅使用具有版本控制的对象

    如果存储桶是 Terraform 配置的根路径,则 OBJECT_NAME 是可选的。

  • 可选:QUOTA_VALIDATION:此值用于确定在您创建部署时,是否启用或强制执行 Terraform 配置文件中资源的配额验证。可能的值包括:
    • ENABLED:为 Terraform 配置文件中的资源启用计算配额验证。让您可以了解配额不足的资源。
    • ENFORCED:强制执行配额验证,以便在 Terraform 配置文件中定义的基础架构没有足够的配额时,部署会失败。

    如果未定义 QUOTA_VALIDATION,系统将停用 Terraform 配置文件的配额验证。此设置为默认值。 配额验证适用于部分 Google Cloud 资源。如需了解详情,请参阅配额和限制

  • INPUT_1_NAMEINPUT_2_NAME:Terraform 配置中的任何输入值,包括默认未定义的值。例如,您可以将要部署资源的项目指定为 project_id=my-project

    如果配置中默认定义了所有输入值,则此标志为可选。

  • 可选:TERRAFORM_VERSION:Infrastructure Manager 用于创建部署的 Terraform 版本。如需查看受支持的版本列表,请参阅受支持的 Terraform 版本。如果您移除此可选标志,系统会使用最新的受支持 Terraform 版本。
  • 可选:ANNOTATION_KEYANNOTATION_VALUE 表示可附加到 Infra Manager 部署的自由格式文本键值对。如需详细了解注释和标签的使用和限制,请参阅注释和标签

gcloud CLI

本部分介绍了如何使用存储在 Git 代码库中的 Terraform 配置。

  1. 确保您已安装 Git。
  2. 如果您的 Terraform 配置存储在私有 Git 代码库中,请确保将 Git 主机和代码库连接到 Cloud Build
  3. 部署配置并创建修订版本:

    gcloud infra-manager deployments apply projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \
            --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \
            --git-source-repo="GIT_REPO" \
            --git-source-directory="DIRECTORY" \
            --git-source-ref="REF" \
            --quota-validation=QUOTA_VALIDATION \
            --input-values=INPUT_1_NAME=VALUE,INPUT_2_NAME=VALUE \
            --tf-version-constraint=TERRAFORM_VERSION \
            --annotation="ANNOTATION_KEY=ANNOTATION_VALUE"
            
替换:
  • PROJECT_ID:Infra Manager 运行所在的项目 ID。
  • LOCATION:Infra Manager 的运行位置。如需查看有效位置的列表,请参阅Infra Manager 位置
  • DEPLOYMENT_ID:您指定的部署标识符。如需详细了解部署标识符的限制,请参阅部署名称
  • SERVICE_ACCOUNT_PROJECT_ID 是服务账号的项目 ID。通常,此项目与 Infra Manager 运行的项目相同。
  • SERVICE_ACCOUNT:您用于调用 Infra Manager 的服务账号的名称。
  • GIT_REPO:Git 代码库。
  • DIRECTORY:包含 Terraform 配置的目录。
  • 可选:REF:配置的 Git 引用。引用是可选的。如果您未指定引用,则系统会使用 Git 代码库的默认配置分支。
  • 可选:QUOTA_VALIDATION:此值用于确定在您创建部署时,是否启用或强制执行 Terraform 配置文件中资源的配额验证。可能的值包括:
    • ENABLED:为 Terraform 配置文件中的资源启用计算配额验证。让您可以了解配额不足的资源。
    • ENFORCED:强制执行配额验证,以便在 Terraform 配置文件中定义的基础架构没有足够的配额时,部署会失败。

    如果未定义 QUOTA_VALIDATION,系统将停用 Terraform 配置文件的配额验证。此设置为默认值。 配额验证适用于部分 Google Cloud 资源。如需了解详情,请参阅配额和限制

  • INPUT_1_NAMEINPUT_2_NAME:Terraform 配置中的任何输入值,包括默认未定义的值。例如,您可以将要部署资源的项目指定为 project_id=my-project

    如果配置中默认定义了所有输入值,则此标志为可选。

  • 可选:TERRAFORM_VERSION:Infrastructure Manager 用于创建部署的 Terraform 版本。如需查看受支持的版本列表,请参阅受支持的 Terraform 版本。如果您移除此可选标志,系统会使用最新的受支持版本的 Terraform。
  • 可选:ANNOTATION_KEYANNOTATION_VALUE 表示可附加到 Infra Manager 部署的自由格式文本键值对。如需详细了解注释和标签的使用和限制,请参阅注释和标签

gcloud CLI

本部分介绍如何使用存储在本地机器上的 Terraform 配置。

  1. 如果您使用的是 Cloud Shell,则需要将配置上传到 Cloud Shell。如需了解详情,请参阅使用 Cloud Shell 管理文件
  2. 部署配置并创建修订版本:

    gcloud infra-manager deployments apply projects/PROJECT_ID/locations/LOCATION/deployments/DEPLOYMENT_ID \
            --service-account projects/SERVICE_ACCOUNT_PROJECT_ID/serviceAccounts/SERVICE_ACCOUNT \
            --local-source="LOCAL_DIRECTORY" \
            --quota-validation=QUOTA_VALIDATION \
            --input-values=INPUT_1_NAME=VALUE,INPUT_2_NAME=VALUE \
            --tf-version-constraint=TERRAFORM_VERSION \
            --annotation="ANNOTATION_KEY=ANNOTATION_VALUE"
            
替换:
  • PROJECT_ID:Infra Manager 运行所在的项目 ID。
  • LOCATION:Infra Manager 的运行位置。如需查看有效位置的列表,请参阅Infra Manager 位置
  • DEPLOYMENT_ID:您指定的部署标识符。如需详细了解部署标识符的限制,请参阅部署名称
  • SERVICE_ACCOUNT_PROJECT_ID 是服务账号的项目 ID。通常,此项目与 Infra Manager 运行的项目相同。
  • SERVICE_ACCOUNT:您用于调用 Infra Manager 的服务账号的名称。
  • LOCAL_DIRECTORY:存储 Terraform 配置的本地目录。如果您使用的是 Cloud Shell,则这是 Cloud Shell 中存储配置的目录。
  • 可选:QUOTA_VALIDATION:此值用于确定在您创建部署时,是否启用或强制执行 Terraform 配置文件中资源的配额验证。可能的值包括:
    • ENABLED:为 Terraform 配置文件中的资源启用计算配额验证。让您可以了解配额不足的资源。
    • ENFORCED:强制执行配额验证,以便在 Terraform 配置文件中定义的基础架构没有足够的配额时,部署会失败。

    如果未定义 QUOTA_VALIDATION,系统将停用 Terraform 配置文件的配额验证。此设置为默认值。 配额验证适用于部分 Google Cloud 资源。如需了解详情,请参阅配额和限制

  • INPUT_1_NAMEINPUT_2_NAME:Terraform 配置中的任何输入值,包括默认未定义的值。例如,您可以将部署资源的项目指定为 project_id=my-project

    如果配置中默认定义了所有输入值,则此标志为可选。

  • 可选:TERRAFORM_VERSION:Infrastructure Manager 用于创建部署的 Terraform 版本。如需查看受支持的版本列表,请参阅受支持的 Terraform 版本。如果您移除此可选标志,系统会使用最新的受支持版本的 Terraform。
  • 可选:ANNOTATION_KEYANNOTATION_VALUE 表示可附加到 Infra Manager 部署的自由格式文本键值对。如需详细了解注释和标签的使用和限制,请参阅注释和标签

后续步骤