コンポーネントをインポートする

Application Design Center は、アプリケーションにコンポーネントとして追加できる複数の Google Cloud プロダクトをサポートしています。これらのコンポーネントの独自のバージョンを使用するか、他のコンポーネントを追加するには、Terraform モジュールを App Design Center にインポートします。

Terraform モジュールは、 Google Cloud プロダクトの再利用可能な構成です。Terraform モジュールをインポートすると、次のことができます。

  • アプリケーション開発を加速し、管理します。
  • App Design Center で既存の設計上の決定を再利用します。
  • アプリ デベロッパーが確立された設計ポリシーを遵守できるようにします。

Terraform モジュールをインポートすると、App Design Center はスペースのカタログに該当するコンポーネント テンプレートを作成します。このテンプレートは、アプリケーション テンプレート設計のコンポーネントとして使用できます。

Google Cloudでの Terraform については、以下をご覧ください。

始める前に

アプリ対応フォルダまたは管理プロジェクトに対する次のロールのいずれかを付与するよう管理者に依頼してください。

  • App Design Center 管理者(roles/designcenter.admin)。
  • App Design Center ユーザー(roles/designcenter.user)。

モジュールを構成してインポートする

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 | --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.0refs/heads/main です。
    • DEVELOPER_CONNECT_REPO_DIR: リポジトリ内のディレクトリ。例: modules/my-product
    • Terraform モジュールのメタデータを指定するには、次のいずれかを行います。
      • 独自のメタデータ ファイルを使用するには、METADATAmetadata.yaml ファイルに置き換えます。
      • リポジトリにメタデータ ファイルを自動的に生成するには、--use-repo フラグを指定します。

    詳細については、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. テンプレートに 2 つ目のコンポーネントを追加します。

      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: テンプレートに追加する 2 番目のコンポーネントのコンポーネント ID。
    • PROJECT: 管理プロジェクト ID。
    • LOCATION: ロケーション ID。
    • SPACE: スペース ID。
    • APPLICATION_TEMPLATE: コンポーネントを追加するアプリケーション テンプレートのテンプレート ID。
    • SHARED_TEMPLATE_URI_2: 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. 2 つのコンポーネント間に接続を作成します。

      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: 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 をご覧ください。

次のステップ