ブループリントは、Open Container Initiative(OCI)イメージとしてパッケージ化された Terraform 構成です。Terraform 構成では、SaaS Runtime がデプロイするインフラストラクチャとアプリケーションを指定します。 Google Cloud
このページでは、既存の Terraform 構成から OCI イメージを作成し、SaaS Runtime にアップロードする方法について説明します。
これらの Terraform 構成の詳細については、SaaS ランタイムのブループリントをご覧ください。
始める前に
- SaaS ランタイムが有効になっていることを確認します。
- SaaS Runtime に使用しているプロジェクトで、Docker 形式に設定された Artifact Registry リポジトリがあることを確認します。詳細については、SaaS ランタイムのリポジトリを作成するをご覧ください。
- SaaS Runtime を使用してデプロイする Terraform 構成を特定します。
- ブループリントを使用して SaaS サービスをモデル化する方法を決定する方法の詳細については、SaaS サービスのモデルを決定するをご覧ください。
- Terraform 構成の要件の詳細については、ブループリントの要件をご覧ください。
ブループリントを作成してアップロードする
SaaS ランタイムを使用して Terraform 構成を Google Cloud にデプロイするには、次の操作を行う必要があります。
- Terraform 構成を OCI イメージにパッケージ化します。これらの OCI イメージはブループリントと呼ばれます。
- これらの OCI イメージを、特定または設定した Artifact Registry リポジトリに配置します。
ブループリントの作成とアップロードの方法に応じて、すべての手順を手動で行うことも、SaaS ランタイムで一部の手順を実行することもできます。
OCI イメージを作成してリポジトリにアップロードするには、次のいずれかの方法を使用します。
Terraform 構成を含む zip アーカイブをアップロードします。SaaS Runtime は、この ZIP アーカイブを使用して OCI イメージを作成します。
詳しくは、次のセクション(ZIP アーカイブをアップロードする)をご覧ください。
Terraform ファイルを含む Git リポジトリを接続します。SaaS ランタイムは、これらのファイルを使用して OCI イメージを作成します。SaaS Runtime は、リポジトリを更新するたびに 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 Runtime は、zip アーカイブを使用して必要な OCI イメージを作成し、Artifact Registry リポジトリに push します。
Git リポジトリに接続する
Terraform 構成を Git リポジトリに保存する場合は、SaaS Runtime をこのリポジトリに接続できます。SaaS Runtime は、ユニットの種類を作成するときやリリースを作成するときに、これらのファイルを使用して必要な OCI イメージを作成します。
Git リポジトリを使用してブループリントを指定する手順は次のとおりです。
- Terraform ファイルが Git リポジトリのルート ディレクトリにあることを確認します。
- リリースを作成するとき、またはユニットの種類を作成するときに、Git リポジトリを SaaS ランタイムに接続します。
SaaS Runtime は、Developer Connect を使用して Git リポジトリに接続します。Developer Connect の詳細については、Developer Connect のドキュメントをご覧ください。
SaaS Runtime は、Git リポジトリの Terraform ファイルを使用して必要な OCI イメージを作成し、Artifact Registry リポジトリに push します。
この統合により、リポジトリで Terraform コードを更新するたびにブループリントの作成プロセスが自動化されます。リンクされた Git リポジトリに変更があると、SaaS Runtime は変更されたファイルを使用して新しい 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 サービスを作成するをご覧ください。