应用设计中心支持多种 Google Cloud 产品,您可以将这些产品作为组件添加到应用中。如需使用您自己的这些组件版本或添加其他组件,请将 Terraform 模块导入到 App Design Center。
Terraform 模块是适用于 Google Cloud 产品的可重复使用的配置。导入 Terraform 模块有助于您执行以下操作:
- 加快应用开发速度并提升治理水平。
- 在 App Design Center 中重复使用您现有的设计决策。
- 帮助应用开发者遵守您制定的设计政策。
导入 Terraform 模块时,应用设计中心会在您空间的目录中创建相应的组件模板。然后,您就可以在应用模板设计中将该模板用作组件。
如需了解 Google Cloud上的 Terraform,请参阅以下内容:
准备工作
请让您的管理员为您授予已启用应用的文件夹或管理项目的以下角色之一:
- Application Design Center Admin (
roles/designcenter.admin)。 - Application Design Center User (
roles/designcenter.user)。
配置和导入模块
完成以下步骤,连接到 GitHub、创建元数据文件并导入 Terraform 模块。
使用 Developer Connect 连接到代码库
创建与 GitHub 代码库的 Developer Connect 连接,您可以在该代码库中存储 Google Cloud Terraform 模块。您将在导入时使用此连接。
创建 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 模块,从而创建应用设计中心组件。如果您在代码库中更改了 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 | --use-repo替换以下内容:
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文件。 - 如需在代码库中自动生成元数据文件,请指定
--use-repo标志。
- 如需使用您自己的元数据文件,请将
如需了解详情,请参阅 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。