使用 Infrastructure Manager 部署基础架构

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

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

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

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

准备工作

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

授予特定于配置的权限

若要部署 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 配置示例和模板,请参阅 适用于 Google Cloud的 Terraform 模块和蓝图

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

控制台

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

  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 Storage 中 Cloud Build 日志和工件的存储位置。路径的格式为 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 \
            --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. 部署 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 \
            --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. 部署 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 \
            --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 部署的自由格式文本键值对。如需详细了解注释和标签的使用和限制,请参阅注释和标签

后续步骤