通过将自定义 Terraform 模块导入 Application Design Center,您可以将自己的可重用 Google Cloud 配置作为组件添加到应用模板中。导入 Terraform 模块后,App Design Center 会在您空间的目录中创建一个组件模板,以便开发者可以重复使用您已确立的设计决策和政策。
如需了解为 Google Cloud编写 Terraform 模块的背景信息,请参阅以下内容:
准备工作
如需执行本文档中的任务,请让管理员为您授予已启用应用的文件夹或管理项目的必要角色,如下表所示:
| 任务 | 所需的角色 |
|---|---|
| 将 Terraform 模块导入为自定义组件 | Application Design Center Admin (roles/designcenter.admin) 或Application Design Center User ( roles/designcenter.user) |
如需详细了解角色,请参阅使用 IAM 进行访问权限控制。
配置和导入模块
完成以下步骤以连接到 GitHub、创建元数据文件并导入 Terraform 模块。
使用 Developer Connect 连接到代码库
创建与存储 Google Cloud Terraform 模块的 GitHub 代码库的 Developer Connect 连接。您将在导入时使用此连接。
创建 Developer Connect 连接。
如需了解相关步骤,请参阅连接到 GitHub。
创建 Developer Connect 代码库链接。
如需了解相关步骤,请参阅向现有连接添加代码库链接。
可选:准备 Terraform 模块元数据
导入 Terraform 模块时,您可以提供自己的元数据,也可以让 App Design Center 为您创建元数据文件。
例如,以下是您可能为服务账号创建的 metadata.yaml 文件:
spec:
info:
actuationTool:
flavor: Terraform
version: ">= 1.3"
interfaces: # Optional
variables:
- name: service_account
connections:
- source:
source: github.com/terraform-google/terraform-google-service-accounts
version: ">= 4.4"
spec:
outputExpr: email
requirements:
roles: # Optional after IAM integrations
- level: Project
roles:
- roles/iam.serviceAccountUser
- roles/iap.admin
- roles/run.admin
- roles/iam.serviceAccountAdmin
providerVersions:
- source: hashicorp/google
version: ">= 6, < 7"
- source: hashicorp/google-beta
version: ">= 6, < 7"
ui: # Optional
input:
variables:
ca_root_module:
name: ca_root_module
title: CA Root Module
service_account:
name: service_account
title: Service Account
从代码库导入
您可以通过导入基于单个 Google Cloud 产品的 Terraform 模块来创建 App Design Center 组件。如果您在代码库中对 Terraform 模块进行了更改,请重复这些步骤以导入更改。
如需导入 Terraform 模块,请执行以下操作:
确定要在其中创建组件的目录。
gcloud design-center spaces catalogs list \ --project=PROJECT \ --location=LOCATION \ --space=SPACE替换以下内容:
PROJECT:您的管理项目 ID。LOCATION:您的地理位置 ID。SPACE:您的空间 ID。
如需了解详情,请参阅 gcloud design-center spaces catalogs list。
在空间的私有目录中创建目录模板。
gcloud design-center spaces catalogs templates create COMPONENT_TEMPLATE \ --project=PROJECT \ --catalog=CATALOG \ --location=LOCATION \ --space=SPACE \ --template-category=component-template替换以下内容:
COMPONENT_TEMPLATE:要创建的组件模板的模板 ID。PROJECT:您的管理项目 ID。CATALOG:您的目录 ID。LOCATION:您的地理位置 ID。SPACE:您的空间 ID。
如需了解详情,请参阅 gcloud design-center spaces catalogs templates create。
根据代码库中的 Terraform 模块创建目录模板修订版本。
gcloud design-center spaces catalogs templates revisions create REVISION \ --project=PROJECT \ --catalog=CATALOG \ --location=LOCATION \ --space=SPACE \ --template=COMPONENT_TEMPLATE \ --developer-connect-repo=DEVELOPER_CONNECT_REPO \ --developer-connect-repo-ref=DEVELOPER_CONNECT_REPO_REF \ --developer-connect-repo-dir=DEVELOPER_CONNECT_REPO_DIR \ --metadata=METADATA替换以下内容:
REVISION:要创建的修订版本的修订版本 ID。PROJECT:您的管理项目 ID。CATALOG:您的目录 ID。LOCATION:您的地理位置 ID。SPACE:您的空间 ID。COMPONENT_TEMPLATE:您在上一步中创建的模板 ID。DEVELOPER_CONNECT_REPO:要用作来源的 Developer Connect 代码库。例如projects/my-project/locations/us-central1/connections/my-connection/gitRepositoryLinks/my-repo。DEVELOPER_CONNECT_REPO_REF:代码库中的 Git 分支或标记。例如refs/tags/v1.0.0或refs/heads/main。DEVELOPER_CONNECT_REPO_DIR:代码库中的目录。例如modules/my-product。- 如需指定 Terraform 模块元数据,请执行以下操作之一:
- 如需使用您自己的元数据文件,请将
METADATA替换为您的metadata.yaml文件。 - 如需自动使用位于代码库中的元数据文件,请不要指定 --metadata 标志。
- 如需使用您自己的元数据文件,请将
如需了解详情,请参阅 gcloud design-center spaces catalogs templates revisions create。
与其他空间共享您的目录。
gcloud design-center spaces catalogs shares create SHARE \ --project=PROJECT \ --catalog=CATALOG \ --location=LOCATION \ --space=SPACE \ --destination-space=DESTINATION_SPACE替换以下内容:
SHARE:要创建的共享的共享 ID。PROJECT:您的管理项目 ID。CATALOG:您的目录 ID。LOCATION:您的地理位置 ID。SPACE:您的空间 ID。DESTINATION_SPACE:目标空间 ID。
如需了解详情,请参阅 gcloud design-center spaces catalogs shares create。
使用导入的组件创建应用模板
使用导入的组件和 Google 提供的组件创建应用模板。
创建新的应用模板。
gcloud design-center spaces application-templates create APPLICATION_TEMPLATE \ --project=PROJECT \ --location=LOCATION \ --space=SPACE替换以下内容:
APPLICATION_TEMPLATE:要创建的应用模板的模板 ID。PROJECT:您的管理项目 ID。LOCATION:您的地理位置 ID。SPACE:您的空间 ID。
如需了解详情,请参阅 gcloud design-center spaces application-templates create。
确定要添加到模板中的组件的模板修订版本 URI。
gcloud design-center spaces shared-templates list \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --uri替换以下内容:
PROJECT:您的管理项目 ID。LOCATION:您的地理位置 ID。SPACE:您的空间 ID。
如需了解详情,请参阅 gcloud design-center spaces shared-templates list。
向应用模板添加组件。
gcloud design-center spaces application-templates components create COMPONENT \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --application-template=APPLICATION_TEMPLATE \ --shared-template-revision-uri=SHARED_TEMPLATE_URI替换以下内容:
COMPONENT:要添加到模板中的组件的组件 ID。PROJECT:您的管理项目 ID。LOCATION:您的地理位置 ID。SPACE:您的空间 ID。APPLICATION_TEMPLATE:要添加组件的应用模板的模板 ID。SHARED_TEMPLATE_URI:组件共享模板 URI。例如projects/my-project/locations/us-central1/spaces/my-space/sharedTemplates/my-shared-template/revisions/rev1。
如需了解详情,请参阅 gcloud design-center spaces application-templates components create。
向模板中添加第二个组件。
gcloud design-center spaces application-templates components create COMPONENT_2 \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --application-template=APPLICATION_TEMPLATE \ --shared-template-revision-uri=SHARED_TEMPLATE_URI_2替换以下内容:
COMPONENT_2:要添加到模板中的第二个组件的组件 ID。PROJECT:您的管理项目 ID。LOCATION:您的地理位置 ID。SPACE:您的空间 ID。APPLICATION_TEMPLATE:要添加组件的应用模板的模板 ID。SHARED_TEMPLATE_URI_2:第二个组件共享模板 URI。例如projects/my-project/locations/us-central1/spaces/my-space/sharedTemplates/my-shared-template/revisions/rev1。
如需了解详情,请参阅 gcloud design-center spaces application-templates components create。
在两个组件之间创建连接。
gcloud design-center spaces application-templates components connections create CONNECTION \ --project=PROJECT \ --location=LOCATION \ --space=SPACE \ --application-template=APPLICATION_TEMPLATE \ --component=COMPONENT \ --destination-component-uri=SHARED_TEMPLATE_URI_2替换以下内容:
CONNECTION:要添加到模板中的连接的连接 ID。PROJECT:您的管理项目 ID。LOCATION:您的地理位置 ID。SPACE:您的空间 ID。APPLICATION_TEMPLATE:要添加组件的应用模板的模板 ID。SHARED_TEMPLATE_URI_2:第二个组件共享模板 URI。例如projects/my-project/locations/us-central1/spaces/my-space/sharedTemplates/my-shared-template/revisions/rev1。
如需了解详情,请参阅 gcloud design-center spaces application-templates components connections create。