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 接続を作成します。この接続は、インポート時に使用します。
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 | --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-repoDEVELOPER_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 をご覧ください。
テンプレートに 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 をご覧ください。
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 をご覧ください。
次のステップ
- デプロイする前に、アプリケーションを作成します。
- コンソールからデプロイする。
- Terraform コードをエクスポートします。