Cloud Run を使用すると、サーバーレス環境でステートレス イメージを実行できます。Cloud Build を使用すると、Artifact Registry から Cloud Run にイメージをデプロイできます。既存のイメージのデプロイ、イメージのビルドとデプロイ、デプロイの自動化が可能です。
始める前に
-
Enable the Cloud Build, Cloud Run, Artifact Registry, and Resource Manager APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM role (
roles/serviceusage.serviceUsageAdmin
), which contains theserviceusage.services.enable
permission. Learn how to grant roles.
アプリケーションのソースコードを用意します。 ソースコードは、GitHub や Bitbucket などのリポジトリに保存する必要があります。
このページで
gcloud
コマンドを実行するには、Google Cloud CLI をインストールします。VPC Service Controls を使用している場合は、VPC Service Controls の境界にプライベート プールを設定します。また、VPC Service Controls 用に Cloud Run を構成する必要があります。
必要な Identity and Access Management 権限
-
Google Cloud コンソールで、settings Cloud Build の [権限] ページに移動します。
指定した Cloud Build サービス アカウントまたはデフォルトの Cloud Build サービス アカウントで、次のロールのステータスを [有効] に設定します。
- Cloud Run 管理者(
roles/run.admin
)| Cloud Build が新しいサービスを Cloud Run にデプロイできるようにします。- [サービス アカウント ユーザーのロールを割り当てる] パネルで、権限を借用するサービス アカウントを選択し、[権限を付与] をクリックします。
- ストレージ管理者(
roles/storage.admin
)| Cloud Storage からの読み取りと書き込みを有効にします。 - Artifact Registry 書き込み(
roles/artifactregistry.writer
)| Artifact Registry からのイメージの pull と Artifact Registry への書き込みを許可します。 - ログ書き込み(
roles/logging.logWriter
)| ログエントリを Cloud Logging に書き込むことができます。 - Cloud Build 編集者(
roles/cloudbuild.builds.editor
)| サービス アカウントでビルドを実行できます。
- Cloud Run 管理者(
イメージのビルドとデプロイ
Cloud Build を使用すると、イメージをビルドして Artifact Registry にビルドイメージを保存し、そのイメージを Cloud Run にデプロイできます。
イメージをビルドしてデプロイするには:
プロジェクトのルート ディレクトリに、
cloudbuild.yaml
という名前で構成ファイルを作成します。ビルド構成ファイルで、イメージをビルドする
docker
ビルドステップを追加し、イメージを Artifact Registry に push します。さらに、gcloud run deploy
コマンドを呼び出すgcloud
ビルドステップを追加し、Cloud Run にイメージをデプロイします。steps: # Build the image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE', '.'] # Push the image to Artifact Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE'] # Deploy image to Cloud Run - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: gcloud args: ['run', 'deploy', 'SERVICE_NAME', '--image', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE', '--region', 'SERVICE_REGION'] images: - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE'
ここで
REPOSITORY
は、イメージをデプロイする Artifact Registry リポジトリの名前です。LOCATION
は、Artifact Registry リポジトリのロケーションです(例:us-east1
)。PROJECT_ID
は、イメージが保存されている Google Cloudプロジェクト ID です。SERVICE_NAME
は、Cloud Run サービスの名前です。SERVICE_REGION
は、デプロイする Cloud Run サービスのリージョンです。IMAGE
は、Artifact Registry 内のイメージの名前です。
プロジェクトのルート ディレクトリに移動し、次のコマンドを実行します。
LOCATION
は、サポートされているビルド リージョンのいずれかで、ビルドを実行します。gcloud builds submit --region=LOCATION
正常に完了すると、デプロイされたサービスの URL が成功のメッセージと一緒に表示されます。
継続的デプロイ
Cloud Build トリガーを作成すると、ソフトウェアの Cloud Run へのデプロイを自動化できます。トリガーを構成すると、ソースコードを更新するたびにイメージをビルドしてデプロイできます。
デプロイを自動化するには:
リポジトリのルートに、イメージをビルドするステップを含む
cloudbuild.yaml
という名前の構成ファイルを追加し、イメージを Artifact Registry に push して、gcloud run deploy
コマンドを呼び出します。steps: # Build the image - name: 'gcr.io/cloud-builders/docker' args: ['build', '-t', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA', '.'] # Push the image to Artifact Registry - name: 'gcr.io/cloud-builders/docker' args: ['push', 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'] # Deploy image to Cloud Run - name: 'gcr.io/google.com/cloudsdktool/cloud-sdk' entrypoint: gcloud args: - 'run' - 'deploy' - 'SERVICE_NAME' - '--image' - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA' - '--region' - 'SERVICE_REGION' images: - 'LOCATION-docker.pkg.dev/PROJECT_ID/REPOSITORY/IMAGE/SERVICE_NAME:$COMMIT_SHA'
ここで
REPOSITORY
は、イメージをデプロイする Artifact Registry リポジトリの名前です。LOCATION
は、Artifact Registry リポジトリのロケーションです(例:us-east1
)。PROJECT_ID
は、イメージが保存されている Google Cloudプロジェクト ID です。SERVICE_NAME
は、Cloud Run サービスの名前です。SERVICE_REGION
は、デプロイする Cloud Run サービスのリージョンです。IMAGE
は、Artifact Registry 内のイメージの名前です。
$COMMIT_SHA
置換変数は、Git リポジトリからトリガーされたときに Cloud Build によって設定されます。前のステップで作成した構成ファイルを使用して、ビルドトリガーを作成します。
[トリガー] ページを開く
[トリガーを作成] をクリックします。
[名前] 欄にトリガーの名前を入力します。
[リージョン] で、トリガーのリージョンを選択します。
[イベント] で、リポジトリ イベントを選択してトリガーを開始します。
[ソース] で、トリガーを開始するリポジトリとブランチまたはタグ名を選択します。自動ビルドのブランチを指定する方法については、ビルドトリガーの作成をご覧ください。
[構成] で [Cloud Build 構成ファイル(YAML または JSON)] を選択します。
[Cloud Build 構成ファイルの場所] フィールドで、
/
の後に「cloudbuild.yaml
」と入力します。[作成] をクリックして、ビルドトリガーを保存します。
リポジトリに新しいコードを push すると、Cloud Build がビルドを呼び出し、サービスを Cloud Run にデプロイします。
Cloud Build トリガーの作成方法については、ビルドトリガーの作成と管理をご覧ください。
コードの例
以下では、いくつかのサンプル リポジトリを紹介します。各リポジトリには、サンプル アプリケーションと、Cloud Run にアプリケーションをデプロイするためのビルド構成ファイルが含まれています。
- deploy-prebuilt: ビルド済みのイメージを Cloud Run にデプロイするコードの例。
- run-example-builddeploy: イメージをビルドして Cloud Run にデプロイするコードの例。
次のステップ
- Cloud Deploy を使用して Cloud Run にデプロイする方法を学習する。
- GKE にデプロイする方法を学習する。
- Cloud Run functions にデプロイする方法を学習する。
- App Engine にデプロイする方法を学習する。
- Firebase にデプロイする方法を学習する。
- Compute Engine で Blue/Green デプロイを実行する方法を学習する。
- ビルドエラーをトラブルシューティングする方法について学習する。