指標を使用してアプリケーションを分析する
このクイックスタートでは、Cloud Deploy を使用して、Google Cloud Observability の指標に基づいて、デプロイされた Cloud Run サービスを分析し、アプリケーションが想定どおりに動作していることを確認する方法について説明します。
このクイックスタートでは、以下の内容を行います。
1 つの Cloud Run サービスを作成してデプロイします。
この場合、Cloud Deploy を使用してデプロイすることはありません。
Google Cloud Observability で稼働時間チェックを作成します。
このチェックは、Cloud Run サービスが実行されていることを確認するためにモニタリングします。
Cloud Monitoring でアラート ポリシーを作成します。
デフォルトでは、Cloud Deploy 分析は Google Cloud Observability の多くの種類の指標を使用できます。このポリシーは、稼働時間チェックで問題が検出された場合にアラートを作成します。
Cloud Run サービスを識別する Skaffold 構成を作成します。
Cloud Deploy デリバリー パイプラインとターゲットを定義します。
このパイプラインには 1 つのステージのみが含まれ、1 つのターゲットのみが使用されます。また、分析ジョブの定義が含まれています。
リリースを作成します。リリースは自動的にターゲットにデプロイされます。
アプリケーションがデプロイされると、分析がロールアウトで ジョブとして実行されます。
サービスはターゲットに正常にデプロイされますが、アラート ポリシーによってアラートが生成されるため、ロールアウトは失敗します。
Cloud Run サービス定義を変更して、サービスのインスタンス数を増やし、新しいリリースを作成します。
今回はサービスが正常にデプロイされ、ロールアウトが正常に完了します。
始める前に
In the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
Verify that billing is enabled for your Google Cloud project.
Cloud Deploy、Cloud Build、Cloud Run、Cloud Storage API を有効にします。
API を有効にするために必要なロール
API を有効にするには、serviceusage.services.enable 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。ロールを付与する方法を確認する。
Google Cloud CLI をインストールします。
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud initIn the Google Cloud console, on the project selector page, select or create a Google Cloud project.
Roles required to select or create a project
- Select a project: Selecting a project doesn't require a specific IAM role—you can select any project that you've been granted a role on.
-
Create a project: To create a project, you need the Project Creator role
(
roles/resourcemanager.projectCreator), which contains theresourcemanager.projects.createpermission. Learn how to grant roles.
If you're using an existing project for this guide, verify that you have the permissions required to complete this guide. If you created a new project, then you already have the required permissions.
Verify that billing is enabled for your Google Cloud project.
Cloud Deploy、Cloud Build、Cloud Run、Cloud Storage API を有効にします。
API を有効にするために必要なロール
API を有効にするには、serviceusage.services.enable 権限を含む Service Usage 管理者 IAM ロール(roles/serviceusage.serviceUsageAdmin)が必要です。ロールを付与する方法を確認する。
Google Cloud CLI をインストールします。
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
gcloud CLI を初期化するには、次のコマンドを実行します。
gcloud init必要なロール
Cloud Deploy オペレーションを実行して Cloud Run にデプロイするために必要な権限が Cloud Deploy サービス アカウントに付与されるように、プロジェクトに対する次の IAM ロールを Cloud Deploy サービス アカウントに付与するよう管理者に依頼してください。
-
Cloud Run デベロッパー(
roles/run.developer) -
Cloud Deploy ランナー (
roles/clouddeploy.jobRunner) -
IAM サービス アカウント ユーザー (
roles/iam.serviceAccountUser) -
モニタリング アラート閲覧者 (
roles/monitoring.alertViewer) -
Service Usage ユーザー(
roles/serviceusage.serviceUsageConsumer)
ロールの付与については、プロジェクト、フォルダ、組織へのアクセス権の管理をご覧ください。
管理者は、カスタムロールや他の事前定義ロールを使用して、Cloud Deploy サービス アカウントに必要な権限を付与することもできます。
Cloud Deploy サービス アカウントの詳細については、こちらをご覧ください。
Cloud Run サービスをデプロイする
このクイックスタートでは、Cloud Run がすでに存在することを前提とするアラート ポリシーを使用します。ここでは 1 つのサービスをデプロイし、後のセクションで同じサービス名を使用して service.yaml を定義します。
次のコマンドを実行して、初期サービスを作成します。
gcloud run deploy my-analysis-run-service \
--image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a \
--project=PROJECT_ID \
--region=us-central1 \
--allow-unauthenticated
PROJECT_ID は、実際のプロジェクト ID に置き換えます。
Google Cloud Observability の稼働時間チェックを作成する
この稼働時間チェックは、実行中のサービスをモニタリングして、実行されていることを確認します。後のセクションでは、サービスで実行中の使用可能なインスタンスが 1 つもない場合にアラートを生成する Google Cloud Observability アラート ポリシーを作成します。
稼働時間チェックを作成するには、次のコマンドを実行します。
gcloud monitoring uptime create my-analysis-run-service-cloud-run-uptime-check \ --resource-type=cloud-run-revision \ --resource-labels="project_id=PROJECT_ID,location=us-central1,service_name=my-analysis-run-service" \ --project=PROJECT_ID \ --protocol=https \ --path="/" \ --port=443 \ --period=1 \ --timeout=10 \ --service-agent-auth="oidc-token" \ --status-classes="2xx"稼働時間チェック ID をコピーします。
実行したコマンドの出力に ID が含まれています。
Skaffold 構成とサービス定義を準備する
このクイックスタートでは、サンプル Cloud Run サービスのデプロイに使用するマニフェストを識別する skaffold.yaml ファイルを作成します。また、Cloud Run 自体を定義する service.yaml ファイルも定義します。
ターミナル ウィンドウを開きます。
新しいディレクトリを作成し、そのディレクトリに移動します。
mkdir deploy-analysis-run-quickstart
cd deploy-analysis-run-quickstart
- 次の内容のファイルを
skaffold.yamlという名前で作成します。
apiVersion: skaffold/v4beta7
kind: Config
manifests:
rawYaml:
- service.yaml
deploy:
cloudrun: {}
この構成ファイルの詳細については、skaffold.yaml リファレンスをご覧ください。
- 次の内容のファイルを
service.yamlという名前で作成します。
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
name: my-analysis-run-service
annotations:
run.googleapis.com/scalingMode: manual
run.googleapis.com/manualInstanceCount: 0
spec:
template:
spec:
containers:
- image: my-app-image
このファイルは Cloud Run サービス定義であり、アプリケーションのデプロイに使用されます。デプロイするコンテナ イメージは、プレースホルダ my-app-image としてここに設定されます。これは、リリースを作成するときに特定のイメージに置き換えられます。
スケーリング モードを手動に設定し、インスタンス数を 0 に設定していることに注意してください。つまり、デプロイされたサービスはトラフィックを受信できず、実行中のインスタンスがなくなるため、アラートがトリガーされます。このアラートは次の手順で構成します。
アラート ポリシーの作成
このクイックスタートでは、Google Cloud Observability アラート ポリシーを使用します。このアラート ポリシーは、Cloud Run サービスが先ほど作成した稼働時間チェックに失敗した場合にアラートを生成します。
deploy-analysis-run-quickstartディレクトリに、次の内容のpolicy.yamlというファイルを作成します。displayName: Cloud Run service uptime check userLabels: policy-for: analysis-run-pipeline combiner: OR conditions: - displayName: Failure of uptime check UPTIME_ID conditionThreshold: filter: metric.type="monitoring.googleapis.com/uptime_check/check_passed" AND metric.label.check_id="UPTIME_ID" AND resource.type="cloud_run_revision" aggregations: - alignmentPeriod: 60s crossSeriesReducer: REDUCE_COUNT_FALSE groupByFields: - resource.label.* perSeriesAligner: ALIGN_NEXT_OLDER comparison: COMPARISON_GT duration: 60s thresholdValue: 1.0UPTIME_IDは、以前に作成したアップタイム チェックの ID に置き換えます。次のコマンドを実行してポリシーを作成します。
gcloud monitoring policies create \ --policy-from-file=policy.yaml\ --project=PROJECT_IDPROJECT_IDは、実際のプロジェクト ID に置き換えます。実行したコマンドの出力からポリシー ID をコピーします。
今回は、パスを含むリソース ID 全体をコピーします。この ID は、次のセクションで、配信パイプラインの分析構成で使用します。
デリバリー パイプラインとターゲットを作成する
このデリバリー パイプラインには、1 つのターゲット(analysis-staging)に対して 1 つのステージがあります。
deploy-analysis-run-quickstartディレクトリに、次の内容を含む新しいclouddeploy.yamlファイルを作成します。apiVersion: deploy.cloud.google.com/v1 kind: DeliveryPipeline metadata: name: deploy-analysis-demo-app-run description: main application pipeline serialPipeline: stages: - targetId: analysis-staging profiles: [] strategy: standard: analysis: duration: 300s googleCloud: alertPolicyChecks: - id: check-1 alertPolicies: - ALERT_POLICY_ID --- apiVersion: deploy.cloud.google.com/v1 kind: Target metadata: name: analysis-staging description: staging Run service run: location: projects/PROJECT_ID/locations/us-central1この YAML で、
ALERT_POLICY_IDは以前に実行したgcloud monitoring policies listコマンドの出力に置き換え、PROJECT_IDは使用しているプロジェクトの ID に置き換えます。パイプラインとターゲットを Cloud Deploy サービスに登録します。
gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_IDこれで、1 つのターゲットを含むデリバリー パイプラインが作成され、アプリケーションをデプロイする準備が整いました。
パイプラインとターゲットを確認します。
Google Cloud コンソールで、Cloud Deploy の [デリバリー パイプライン] ページに移動し、使用可能なデリバリー パイプラインのリストを表示します。
作成したデリバリー パイプラインが表示され、[ターゲット] 列に 1 つのターゲットが表示されます。

リリースを作成する
リリースは Cloud Deploy リソースの中心で、デプロイの変更を表します。デリバリー パイプラインは、そのリリースのライフサイクルを定義します。このライフサイクルの詳細については、Cloud Deploy のサービス アーキテクチャをご覧ください。
deploy-analysis-run-quickstart ディレクトリから次のコマンドを実行して、デプロイするコンテナ イメージを表す release リソースを作成します。
gcloud deploy releases create test-release-001 \
--project=PROJECT_ID \
--region=us-central1 \
--delivery-pipeline=deploy-analysis-demo-app-run \
--images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a
--images= フラグに注目してください。このフラグは、サービス定義のプレースホルダ(my-app-image)を特定の SHA 修飾イメージに置き換えるために使用します。Google は、この方法でサービス定義をテンプレート化し、リリース作成時に SHA 修飾イメージ名を使用することをおすすめします。
すべてのリリース(--disable-initial-rollout を含むものを除き)において、Cloud Deploy ではロールアウト リソースも自動的に作成されます。アプリケーションは、このデリバリー パイプライン用に構成された 1 つのターゲットに自動的にデプロイされます。
Google Cloud コンソールで結果を表示する
数分後、リリースがターゲット ランタイムにデプロイされます。表示できます。
Google Cloud コンソールで、Cloud Deploy の [デリバリー パイプライン] ページに移動し、デリバリー パイプライン(「deploy-analysis-demo-app-run」)を表示します。
デリバリー パイプラインの名前(「deploy-analysis-demo-app-run」)をクリックします。
可視化されたパイプラインでは、アプリのデプロイ ステータスが表示されます。パイプラインには 1 つのステージしかないため、可視化されたパイプラインにはノードが 1 つだけ表示されます。

リリースが [デリバリー パイプラインの詳細] の下の [リリース] タブに表示されます。
[デリバリー パイプラインの詳細] の [ロールアウト] タブをクリックします。
ロールアウト名をクリックして、ロールアウトの詳細を表示します。
[分析] がジョブとして一覧表示されます。

分析の失敗
配信パイプライン構成で指定した分析ジョブは、アプリケーションのデプロイ後にこのロールアウトの一部として実行されます。アラート ポリシーでアラートがトリガーされるため、この分析は失敗するはずです。この分析の失敗により、ロールアウトは失敗します。
変更を加えてから別のリリースを作成すると、成功するはずです。
サービス定義を変更して新しいリリースを作成する
次に、サービス定義のインスタンス数を変更して、サービスの実行中のインスタンスが存在するようにします。これにより、アラートはトリガーされなくなります。
Cloud Run 定義ファイル
service.yamlを編集して、run.googleapis.com/manualInstanceCountの値を0から1に変更します。同じ
deploy-analysis-run-quickstartディレクトリから次のコマンドを実行して、別のreleaseを作成します。gcloud deploy releases create test-release-002 \ --project=PROJECT_ID \ --region=us-central1 \ --delivery-pipeline=deploy-analysis-demo-app-run \ --images=my-app-image=us-docker.pkg.dev/cloudrun/container/hello@sha256:95ade4b17adcd07623b0a0c68359e344fe54e65d0cb01b989e24c39f2fcd296a
今回はロールアウトが成功するはずです。これは、Cloud Run サービスに実行中のインスタンスが 1 つあるため、稼働時間チェックでアラート ポリシーからアラートが呼び出されないためです。
クリーンアップ
このページで使用したリソースについて、 Google Cloud アカウントに課金されないようにするには、次の手順を実施します。
Cloud Run サービスを削除します。
gcloud run services delete my-analysis-run-service \ --region=us-central1 \ --project=PROJECT_IDデリバリー パイプライン、ターゲット、リリース、ロールアウトを削除するには、デリバリー パイプライン定義を含むディレクトリから次のコマンドを実行します。
gcloud deploy delete --file=clouddeploy.yaml \ --force \ --region=us-central1 \ --project=PROJECT_IDGoogle Cloud Observability アラート ポリシーを削除します。
gcloud monitoring policies delete ALERT_POLICY_IDCloud Deploy によって作成された Cloud Storage バケットを削除します。
1 つは
_clouddeployで終わり、もう 1 つは[region].deploy-artifacts.[project].appspot.comで終わります。
これでクイックスタートの演習はすべて終了です。
次のステップ
Cloud Deploy のチュートリアルをお試しください。