使用 Infrastructure Manager 部署基础架构

本页面介绍了如何使用 Infrastructure Manager 预配一组 Google Cloud 资源,这些资源在 Terraform 配置中定义。

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

您可以部署到多个项目和多个位置。服务帐号需要对资源以及部署资源的项目的权限。如需查看 权限列表,请参阅使用 IAM 进行 访问权限控制。

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

准备工作

  1. 启用 Infra Manager
  2. 确保您拥有创建部署所需的 IAM 权限:roles/config.admin
  3. 确保您拥有具有所需权限的服务帐号。如需了解 详情,请参阅 配置服务账号
  4. 确定要部署的 Terraform 配置。确保此 Terraform 配置符合限制条件。 具体而言,请确保配置不包含敏感数据。
  5. 如果您想在配置资源之前预览部署,请参阅 预览部署
  6. 确认您的组织针对与预期基础架构关联的产品的配额。如果预期基础架构超出组织针对部署所用产品的配额,您可能会遇到部署错误。如需了解详情,请参阅配额和限制

  7. Infra Manager 使用 Cloud Build 来 创建、更新或预览部署。创建和更新部署的超时时间为 2 小时,而预览部署的超时时间为 1 小时。

    如果您在单个配置中管理多个超出此限制的资源,则应将配置拆分为多个部署。

授予特定于配置的权限

如需部署 Terraform 配置中指定的 Google Cloud 资源,您用于调用 Infra Manager 的服务帐号需要具有特定于您要 部署的资源所需的权限。

除了使用 Infra Manager 服务所需的权限之外,还需要这些权限。

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

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

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

使用 Terraform 配置创建部署

您可以通过多种方式使用 Infra Manager 部署 Terraform 配置:

  • 推荐:在 Google Cloud 控制台中使用 Infra Manager 选择来源、查看 部署详情、预览和部署 Terraform 配置。您可以在 控制台中使用 Google Cloud Infra Manager 从 Cloud Storage 存储分区和 Git 代码库进行部署。
  • 在 Google Cloud CLI 中使用 Infra Manager 从以下位置部署 Terraform 配置:
    • Cloud Storage 存储分区
    • Git 代码库
    • 本地目录

如需查看可与 Infra Manager 搭配使用的示例和模板 Terraform 配置,请参阅适用于的 Terraform 模块和蓝图 Google Cloud

选择包含您所选工作流的标签页,详细了解如何创建部署。

控制台

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

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

    前往 Infra Manager

  2. 点击创建 以创建新部署。
  3. 部署详情 页面上,为部署设置初始参数。

    替换:

    • 部署 ID:在部署 ID字段中,为部署输入描述性名称。 如需详细了解命名限制,请参阅部署名称文档。
    • 区域:从下拉列表中选择受支持的区域
    • Terraform 版本:从下拉列表中选择受支持的 Terraform 版本。系统会根据您选择的区域 自动填充可用 Terraform 版本的列表。
    • 服务账号:选择现有服务帐号或创建新服务账号。Infra Manager 会根据 Terraform 配置中列出的基础架构自动验证权限。如需详细了解如何使用服务账号和 Infra Manager,请参阅配置服务账号
    • Terraform 配置的来源:点击切换开关,选择 GitCloud Storage 作为要部署的 Terraform 配置的来源。
      • 对于 Git ,请替换:
        • Git 代码库:提供公开或私有的 Git 代码库网址、分支或标记。
          如果您提供私有 Git 代码库,请确保您已将主机和代码库连接到 Cloud Build
        • 可选:Git 目录:Git 代码库中包含 Terraform 配置的目录。
        • 可选:Git 引用:配置的 Git 引用。如果您未指定引用,则使用 Git 代码库的默认配置分支。
      • 对于 Cloud Storage 存储桶,请替换:
        • 来源:存储配置的存储桶的名称。

    点击继续

  4. Terraform 详情 页面上,使用 字段填充 Terraform 配置中的输入值列表。

    这些值可以是 Terraform 配置中的任何输入值,包括默认情况下未定义的值。如果所有输入值都在 Terraform 配置中默认定义,则这些值是可选的。点击继续

  5. 高级详情 页面上,为部署设置可选参数。

    替换:

    • 标签:标签和注释是包含自由格式文本的键值对。您可以使用它们来附加 任意信息关联的资源。如需了解详情,请参阅注释文档。
    • 工作器池:Cloud Build 作业将在其中执行的工作器池资源。 工作器池的格式为 projects/{project}/locations/{location}/workerPools/{workerPoolId}
    • 工件 Cloud Storage 存储桶:Cloud Build 日志和工件在 Cloud Storage 中的位置。路径的格式为 gs://{bucket}/{folder}
  6. 点击创建部署 以启动 Terraform 配置的部署。在部署 页面上,您的部署将添加到列表中,并显示其状态
  7. 如需详细了解部署,请选择您的部署以转到部署详情 页面。
  8. 大功告成!您已使用 Infra Manager 部署 Terraform 配置。

gcloud CLI

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

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

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

  3. 部署 Terraform 配置:

    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 \
            --annotations="ANNOTATION_KEY=ANNOTATION_VALUE"
            --provider-source=SERVICE_MAINTAINED
            
替换:
  • PROJECT_ID:运行 Infra Manager 的项目的 ID。
  • LOCATION:运行 Infra Manager 的位置。如需查看有效位置的列表,请参阅 Infra Manager 位置
  • DEPLOYMENT_ID:您指定的部署标识符。如需详细了解部署标识符的限制,请参阅部署名称
  • SERVICE_ACCOUNT_PROJECT_ID 是服务帐号的项目 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:Infra Manager 用于创建部署的 Terraform 版本。如需查看受支持版本的列表,请参阅受支持的 Terraform 版本。如果您移除此可选标志,则使用最新受支持的 Terraform 版本。
  • 可选:ANNOTATION_KEYANNOTATION_VALUE 表示可以附加到 Infra Manager 部署的自由格式文本的键值对。如需详细了解注释和标签的使用和限制,请参阅注释和标签
  • 可选:PROVIDER_SOURCE:确定部署使用哪个适用于 Google Cloud 的 Terraform 提供程序。设置为 SERVICE_MAINTAINED 可使用 Infra Manager 维护的 Terraform 提供程序。省略此字段可使用由 HashiCorp 维护的 Terraform 提供程序。如需了解详情,请参阅使用 Google Cloud的 Terraform 提供程序

gcloud CLI

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

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

    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 \
            --annotations="ANNOTATION_KEY=ANNOTATION_VALUE"
            --provider-source=SERVICE_MAINTAINED
            
替换:
  • PROJECT_ID:运行 Infra Manager 的项目的 ID。
  • LOCATION:运行 Infra Manager 的位置。如需查看有效位置的列表,请参阅 Infra Manager 位置
  • DEPLOYMENT_ID:您指定的部署标识符。如需详细了解部署标识符的限制,请参阅部署名称
  • SERVICE_ACCOUNT_PROJECT_ID 是服务帐号的项目 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:Infra Manager 用于创建部署的 Terraform 版本。如需查看受支持版本的列表,请参阅受支持的 Terraform 版本。如果您移除此可选标志,则使用最新受支持的 Terraform 版本。
  • 可选:ANNOTATION_KEYANNOTATION_VALUE 表示可以附加到 Infra Manager 部署的自由格式文本的键值对。如需详细了解注释和标签的使用和限制,请参阅注释和标签
  • 可选:PROVIDER_SOURCE:确定部署使用哪个适用于 Google Cloud 的 Terraform 提供程序。设置为 SERVICE_MAINTAINED 可使用 Infra Manager 维护的 Terraform 提供程序。省略此字段可使用由 HashiCorp 维护的 Terraform 提供程序。如需了解详情,请参阅使用 Google Cloud的 Terraform 提供程序

gcloud CLI

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

  1. 如果您使用 Cloud Shell,则需要将配置上传到 Cloud Shell。如需了解详情,请参阅使用 Cloud Shell 管理文件
  2. 部署 Terraform 配置:

    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 \
            --annotations="ANNOTATION_KEY=ANNOTATION_VALUE"
            --provider-source=SERVICE_MAINTAINED
            
替换:
  • PROJECT_ID:运行 Infra Manager 的项目的 ID。
  • LOCATION:运行 Infra Manager 的位置。如需查看有效位置的列表,请参阅 Infra Manager 位置
  • DEPLOYMENT_ID:您指定的部署标识符。如需详细了解部署标识符的限制,请参阅部署名称
  • SERVICE_ACCOUNT_PROJECT_ID 是服务帐号的项目 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:Infra Manager 用于创建部署的 Terraform 版本。如需查看受支持版本的列表,请参阅受支持的 Terraform 版本。如果您移除此可选标志,则使用最新受支持的 Terraform 版本。
  • 可选:ANNOTATION_KEYANNOTATION_VALUE 表示可以附加到 Infra Manager 部署的自由格式文本的键值对。如需详细了解注释和标签的使用和限制,请参阅注释和标签
  • 可选:PROVIDER_SOURCE:确定部署使用哪个适用于 Google Cloud 的 Terraform 提供程序。设置为 SERVICE_MAINTAINED 可使用 Infra Manager 维护的 Terraform 提供程序。省略此字段可使用由 HashiCorp 维护的 Terraform 提供程序。如需了解详情,请参阅使用 Google Cloud的 Terraform 提供程序

后续步骤