导入组件

通过将自定义 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 连接。您将在导入时使用此连接。

  1. 创建 Developer Connect 连接。

    如需了解相关步骤,请参阅连接到 GitHub。

  2. 创建 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 模块,请执行以下操作:

  1. 确定要在其中创建组件的目录。

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

    替换以下内容:

    • PROJECT:您的管理项目 ID。
    • LOCATION:您的地理位置 ID。
    • SPACE:您的空间 ID。

    如需了解详情,请参阅 gcloud design-center spaces catalogs list。

  2. 在空间的私有目录中创建目录模板。

      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。

  3. 根据代码库中的 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。

  4. 与其他空间共享您的目录。

      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 提供的组件创建应用模板。

  1. 创建新的应用模板。

      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。

  2. 确定要添加到模板中的组件的模板修订版本 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。

  3. 向应用模板添加组件。

      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。

  4. 向模板中添加第二个组件。

      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。

  5. 在两个组件之间创建连接。

      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。

后续步骤