下载并部署 Terraform

本文档介绍如何为在 App Design Center 中设计的模板或应用下载 Terraform。如果您想使用自己的 CI/CD 工具部署应用,请使用此选项。

如果您使用自己的工具下载和部署此代码,则导出的 Terraform 文件包含用于在 App Hub 中自动注册应用的逻辑。此功能可在 Security Command Center中启用运行时监控。

不过,由于您是在外部部署应用,因此该应用会被视为非托管应用。因此,您无法使用 以应用为中心的 Google Cloud 功能(仅适用于托管应用),例如 设计时安全评估 以及将安全发现结果追溯到其来源 以解决根本原因。

如果您想充分利用 App Design Center 中的应用生命周期管理功能并使用所有以应用为中心的 Google Cloud 功能, 请使用 App Design Center 部署应用

系统会生成以下 Terraform 文件:

  • main.tf:基础架构代码,其中包含模板中每个组件的模块。
  • outputs.tf:公开有关已部署基础架构组件的信息。
  • variables.tf:为 main.tf 文件中使用的变量声明名称、类型和说明。
  • input.tfvars:为 main.tf 文件中使用的变量定义值。
  • providers.tf:定义 有助于 Terraform 与 Google Cloud API 和资源交互的标签。

如需了解背景信息,请参阅 Terraform on 概览 Google Cloud

准备工作

如需执行本文档中的任务,请让您的管理员为您授予已启用应用功能的文件夹管理项目的 必要角色,如下表所示:

任务 所需角色
在本地或源代码控制代码库中导出生成的 Terraform 代码 Application Admin (roles/designcenter.applicationAdmin),或
Application Editor (roles/designcenter.applicationEditor)

如需详细了解角色,请参阅使用 IAM 进行访问权限控制

导出 Terraform 代码

如果您想在 Google Cloud之外维护模板和应用, 可以生成 Terraform 并导出到本地机器或代码 库。

在本地导出

您可以导出从模板或应用生成的 Terraform 代码。

模板

  1. 在 Google Cloud 控制台中,打开模板页面。

    打开“模板”

  2. 点击要导出的模板 ID

  3. 点击获取代码

    系统会将一个 zip 文件下载到您的本地计算机。您可以使用自己的部署工具和工作流部署应用。

应用

  1. 在 Google Cloud 控制台中,打开应用页面。

    打开“应用”

  2. 点击要导出的应用名称

  3. 点击获取代码

    系统会将一个 zip 文件下载到您的本地计算机。您可以使用自己的部署工具和工作流部署应用。

导出到代码库

如需通过源代码管理代码库维护模板,您可以将模板和应用导出到 GitHub。然后,您可以使用现有的版本控制工作流,并使用自己的 CI/CD 流水线触发构建、测试和部署。

连接到代码库

如需在 GitHub 代码库 和您的 管理项目之间创建 Developer Connect 连接,请执行以下操作:

  1. 更改组织政策,将以下服务添加到许可名单:

    1. developerconnect.googleapis.com
    2. secretmanager.googleapis.com

    如需了解更改组织政策的步骤,请参阅使用限制资源服务使用情况限制条件

  2. 创建与 GitHub 代码库的 Developer Connect 连接,包括以下内容:

    1. 选择启用数据驻留
    2. 关联要将应用导出到的代码库。

    如需了解创建连接和关联代码库的步骤,请参阅连接 GitHub

  3. 如需复制代码库 URI,请执行以下操作:

    1. 打开 Developer Connect Git 代码库 页面。
    2. 代码库 表格中,点击更多选项 ,然后选择复制资源路径

生成并导出

如需生成 Terraform 代码并导出到 GitHub 代码库,请执行以下操作:

模板

  1. 确定您的空间 ID。

    gcloud design-center spaces list \
        --project=PROJECT \
        --location=LOCATION
    

    替换以下内容:

    • PROJECT:您的管理项目 ID。
    • LOCATION:您的位置 ID。
  2. 确定要导出的模板的模板 ID。

    gcloud design-center spaces application-templates list \
        --space=SPACE \
        --project=PROJECT \
        --location=LOCATION
    

    替换以下内容:

    • SPACE:您的空间 ID。
    • PROJECT:您的管理项目 ID。
    • LOCATION:您的位置 ID。
  3. 生成模板的 Terraform 代码,并导出到 GitHub。

    gcloud design-center spaces application-templates generate APPLICATION_TEMPLATE \
        --space=SPACE \
        --project=PROJECT \
        --location=LOCATION \
        --developer-connect-export-config-repo-uri=DEVELOPER_CONNECT_EXPORT_CONFIG_REPO_URI \
        --developer-connect-export-config-dir=DEVELOPER_CONNECT_EXPORT_CONFIG_DIR \
        --developer-connect-export-config-branch=DEVELOPER_CONNECT_EXPORT_CONFIG_BRANCH
    

    替换以下内容:

    • APPLICATION_TEMPLATE:要导出的模板的模板 ID。
    • SPACE:您的空间 ID。
    • PROJECT:您的管理项目 ID。
    • LOCATION:您的位置 ID。
    • DEVELOPER_CONNECT_EXPORT_CONFIG_DIR:相对于 GitHub 代码库的目录。
    • DEVELOPER_CONNECT_EXPORT_CONFIG_BRANCH:GitHub 代码库中的分支。

    如需了解详情,请参阅 gcloud design-center spaces application-templates generate

  4. 查看代码库,验证模板是否已成功导出。

应用

  1. 确定您的空间 ID。

    gcloud design-center spaces list \
        --project=PROJECT \
        --location=LOCATION
    

    替换以下内容:

    • PROJECT:您的管理项目 ID。
    • LOCATION:您的位置 ID。
  2. 确定要导出的应用的应用 ID。

    gcloud design-center spaces applications list \
        --space=SPACE \
        --project=PROJECT \
        --location=LOCATION
    

    替换以下内容:

    • SPACE:您的空间 ID。
    • PROJECT:您的管理项目 ID。
    • LOCATION:您的位置 ID。
  3. 生成应用的 Terraform 代码,并导出到 GitHub。

    gcloud design-center spaces applications generate APPLICATION \
        --space=SPACE \
        --project=PROJECT \
        --location=LOCATION \
        --developer-connect-export-config-repo-uri=DEVELOPER_CONNECT_EXPORT_CONFIG_REPO_URI \
        --developer-connect-export-config-dir=DEVELOPER_CONNECT_EXPORT_CONFIG_DIR \
        --developer-connect-export-config-branch=DEVELOPER_CONNECT_EXPORT_CONFIG_BRANCH
    

    替换以下内容:

    • APPLICATION:要导出的应用的应用 ID。
    • SPACE:您的空间 ID。
    • PROJECT:您的管理项目 ID。
    • LOCATION:您的位置 ID。
    • DEVELOPER_CONNECT_EXPORT_CONFIG_DIR:相对于 GitHub 代码库的目录。
    • DEVELOPER_CONNECT_EXPORT_CONFIG_BRANCH:GitHub 代码库中的分支。

    如需了解详情,请参阅 gcloud design-center spaces applications generate

  4. 查看代码库,验证应用是否已成功导出。

后续步骤