ブループリントは、Open Container Initiative(OCI)イメージとしてパッケージ化された Terraform 構成です。Terraform 構成では、SaaS ランタイムがデプロイするインフラストラクチャとアプリケーションを指定します。 Google Cloud
このページでは、既存の Terraform 構成から OCI イメージを作成し、SaaS ランタイムにアップロードする方法について説明します。
これらの Terraform 構成の詳細については、 SaaS ランタイムのブループリントをご覧ください。
始める前に
- SaaS ランタイムが 有効になっていることを確認します。
- SaaS ランタイムで使用しているプロジェクトで、Docker 形式に設定された Artifact Registry リポジトリがあることを確認します。詳細については、 SaaS ランタイムのリポジトリを作成するをご覧ください。
- SaaS ランタイムを使用してデプロイする Terraform 構成を特定します。
- ブループリントを使用して SaaS サービスをモデリングする方法については、SaaS サービスのモデルを決定するをご覧ください。
- Terraform 構成の要件の詳細については、 ブループリントの要件をご覧ください。
ブループリントを作成してアップロードする
SaaS ランタイムを使用して Terraform 構成を Google Cloud にデプロイするには、 次の操作を行う必要があります。
- Terraform 構成を OCI イメージにパッケージ化します。これらの OCI イメージはブループリントと呼ばれます。
- これらの OCI イメージを、特定または設定した Artifact Registry リポジトリに配置します。
ブループリントの作成とアップロードの方法に応じて、すべての手順を手動で行うことも、SaaS ランタイムで一部の手順を実行することもできます。
次のいずれかの方法で OCI イメージを作成してリポジトリにアップロードできます。
Terraform 構成を含む zip アーカイブをアップロードします。 SaaS ランタイムは、zip アーカイブを使用して OCI イメージを作成します。
詳細については、次のセクションの zip アーカイブをアップロードするをご覧ください。
Terraform ファイルを含む Git リポジトリを接続します。SaaS ランタイムは、このファイルを使用して OCI イメージを作成します。リポジトリを更新すると、SaaS ランタイムは Cloud Build を使用してブループリントをビルドしてアップロードします。
詳細については、次のセクションの Git リポジトリに接続するをご覧ください。
OCI イメージをローカルでビルドし、Artifact Registry のリポジトリに push します。
詳細については、次のセクションの イメージを手動でビルドして push するをご覧ください。
OCI イメージの作成と Artifact Registry のリポジトリへの push を自動化します。このプロセスを自動化すると、SaaS ランタイムを CI/CD パイプラインに組み込むことができます。
詳細については、次のセクションの ブループリントの作成を自動化するをご覧ください。
zip アーカイブをアップロードする
Terraform ファイルの zip アーカイブを作成できます。このアーカイブは、リリースまたはユニットの種類を作成するときに SaaS ランタイムにアップロードします。SaaS ランタイムは、zip アーカイブを使用して必要な OCI イメージを作成します。
zip アーカイブを使用してブループリントを提供するには、次の操作を行います。
- Terraform プロジェクト ディレクトリに移動します。
- Terraform 構成を含む zip アーカイブを作成します。
- 次のことを確認します。
- zip アーカイブには Terraform ファイルのみが含まれています。たとえば、
main.tf、variables.tf、outputs.tf、versions.tf、モジュールなどです。 - zip アーカイブに不要なファイル(
.gitディレクトリや Dockerfile など)が含まれていない。
- zip アーカイブには Terraform ファイルのみが含まれています。たとえば、
- zip アーカイブを作成するコマンドは、
zip terraform-files.zip main.tf outputs.tf variables.tf versions.tfのようになります。
- 次のことを確認します。
- リリースを作成するとき、またはユニットの種類を作成するときに、zip アーカイブをアップロードします。
SaaS ランタイムは、zip アーカイブを使用して必要な OCI イメージを作成し、Artifact Registry リポジトリに push します。
Git リポジトリに接続する
Terraform 構成を Git リポジトリに保存している場合は、SaaS ランタイムをこのリポジトリに接続できます。SaaS ランタイムは、ユニットの種類を作成するとき、またはリリースを作成するときに、このファイルを使用して必要な OCI イメージを作成します。
Git リポジトリを使用してブループリントを提供するには、次の操作を行います。
- Terraform ファイルが Git リポジトリのルート ディレクトリにあることを確認します。
- リリースを作成するとき、またはユニットの種類を作成するときに、Git リポジトリを SaaS ランタイムに接続します。
SaaS ランタイムは Developer Connect を使用して Git リポジトリに接続します。Developer Connect の詳細については、 Developer Connect のドキュメントをご覧ください。
SaaS ランタイムは、Git リポジトリの Terraform ファイルを使用して必要な OCI イメージを作成し、Artifact Registry リポジトリに push します。
この統合により、リポジトリの Terraform コードを更新するたびに、ブループリントの作成プロセスが自動化されます。リンクされた Git リポジトリに変更があると、SaaS ランタイムは変更されたファイルを使用して新しい OCI イメージを自動的にビルドし、Artifact Registry リポジトリに push します。
イメージを手動でビルドして push する
この方法では、ブループリントの作成プロセスを細かく制御できます。
ブループリントを手動で作成する手順は次のとおりです。
Terraform ファイルのルート ディレクトリに、次の内容の
Dockerfileという名前のファイルを作成します。# syntax=docker/dockerfile:1-labs FROM scratch COPY --exclude=Dockerfile --exclude=.git --exclude=.gitignore . /この
Dockerfileは最小限のベースイメージ(scratch)を使用します。関連性のないファイル(次のようなファイル)を除外するために、dockerignoreをコマンドに含めることを検討してください。Dockerfile自体.gitディレクトリ.gitignoreファイル
Docker ビルダーがない場合は、次のコマンドを使用して
docker buildxでdocker-containerビルダーを作成します。docker buildx create --name container --driver=docker-containerTerraform ディレクトリから次の
docker buildx buildコマンドを実行して、ブループリントをビルドして Artifact Registry に push します。IMAGE_NAME=us-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:TAG ENGINE_TYPE=inframanager ENGINE_VERSION=TERRAFORM_VERSION docker buildx build -t $IMAGE_NAME \ --builder=container \ --push \ --annotation "com.easysaas.engine.type=$ENGINE_TYPE" \ --annotation "com.easysaas.engine.version=$ENGINE_VERSION" \ --provenance=false .次のように置き換えます。
PROJECT_ID: プロジェクト ID。REPOSITORY_NAME: Artifact Registry リポジトリの名前。IMAGE_NAME: ブループリント イメージの名前。TAG: イメージ バージョンのタグ(latest、v1.0.0など)。説明的なタグを選択すると、ブループリントのバージョンを効果的に管理できます。TERRAFORM_VERSION: 使用する Terraform のサポート対象バージョン。Infrastructure Manager でサポートされているバージョンのリストについては、 サポートされている Terraform バージョン をご覧ください。
コマンドは次の例のようになります。
IMAGE_NAME=us-docker.pkg.dev/saas-docs-testing/blueprints-repo/my-terraform-blueprint:v1.0.0 ENGINE_TYPE=inframanager ENGINE_VERSION=1.5.7 docker buildx build -t $IMAGE_NAME \ --builder=container \ --push \ --annotation "com.easysaas.engine.type=$ENGINE_TYPE" \ --annotation "com.easysaas.engine.version=$ENGINE_VERSION" \ --provenance=false .
OCI イメージは Artifact Registry リポジトリにあります。
このイメージを SaaS ランタイムで使用するには、リリースを作成するとき またはユニットの種類を作成するときにこのイメージを選択します。
ブループリントの作成を自動化する
Cloud Build を使用すると、OCI イメージの作成と Artifact Registry への push を自動化できます。Terraform コードが変更されるたびに、OCI イメージが自動的にビルドされて Artifact Registry に push されるようにトリガーを設定できます。
この自動化を設定するには、次の操作を行います。
Terraform リポジトリのルートに、次の構成の
cloudbuild.yamlファイルを作成します。steps: - id: 'Create Dockerfile' name: 'bash' args: ['-c', 'echo -e "# syntax=docker/dockerfile:1-labs\nFROM scratch\nCOPY --exclude=Dockerfile.Blueprint --exclude=.git --exclude=.gitignore . /" > Dockerfile.Blueprint'] - id: 'Create docker-container driver' name: 'docker' args: ['buildx', 'create', '--name', 'container', '--driver=docker-container'] - id: 'Build and Push docker image' name: 'docker' args: ['buildx', 'build', '-t', '${_IMAGE_NAME}', '--builder=container', '--push', '--annotation', 'com.easysaas.engine.type=${_ENGINE_TYPE}','--annotation', 'com.easysaas.engine.version=${_ENGINE_VERSION}', '--provenance=false','-f', 'Dockerfile.Blueprint', '.'] serviceAccount: '${_SERVICE_ACCOUNT}' substitutions: _SERVICE_ACCOUNT: 'projects/PROJECT_ID/serviceAccounts/CLOUD_BUILD_SERVICE_ACCOUNT' _IMAGE_NAME: 'us-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:latest' _ENGINE_TYPE: 'inframanager' _ENGINE_VERSION: 'TERRAFORM_VERSION' options: logging: CLOUD_LOGGING_ONLY次のように置き換えます。
PROJECT_ID: プロジェクト ID。CLOUD_BUILD_SERVICE_ACCOUNT: Cloud Build サービス アカウントの完全名。SaaS ランタイムとサービス アカウントの詳細については、 SaaS ランタイム サービス アカウントをご覧ください。REPOSITORY_NAME: Artifact Registry リポジトリの名前。IMAGE_NAME: ブループリント イメージの名前。TAG: イメージ バージョンのタグ(latest、v1.0.0など)。説明的なタグを選択すると、ブループリントのバージョンを効果的に管理できます。TERRAFORM_VERSION: 使用する Terraform のサポート対象バージョン。Infrastructure Manager でサポートされているバージョンのリストについては、 サポートされている Terraform バージョン をご覧ください。
cloudbuild.yamlファイルを含むディレクトリからgcloud builds submitコマンドを使用して、Cloud Build ジョブを開始します。gcloud builds submit --config=cloudbuild.yaml --substitutions=_IMAGE_NAME='us-docker.pkg.dev/PROJECT_ID/REPOSITORY_NAME/IMAGE_NAME:TAG'次のように置き換えます。
PROJECT_ID: プロジェクト ID。REPOSITORY_NAME: Artifact Registry リポジトリの名前。IMAGE_NAME: ブループリント イメージの名前TAG: イメージ バージョンのタグ(latest、v1.0.0など)。説明的なタグを選択すると、ブループリントのバージョンを効果的に管理できます。
Terraform コードが変更されるたびに、 OCI イメージが自動的にビルドされて Artifact Registry に push されるようにトリガーを設定できます。詳細については、 ビルドトリガーの作成と管理をご覧ください。
OCI イメージが Artifact Registry リポジトリに保存されました。
このイメージを SaaS ランタイムで使用するには、リリースを作成するとき またはユニットの種類を作成するときにこのイメージを選択します。
次のステップ
- SaaS ランタイムの詳細については、 SaaS ランタイムの概要をご覧ください。
- ブループリントの詳細については、 SaaS ランタイムのブループリントをご覧ください。
- SaaS ランタイムの使用を開始するには、 SaaS オファリングを作成するから始めます。