指標を使用してアプリケーションを分析する
このクイックスタートでは、Cloud Deploy を使用して、デプロイされた Cloud Run サービスを Google Cloud Observability の指標に基づいて分析し、アプリケーションが期待どおりに動作していることを確認する方法について説明します。
このクイックスタートでは、以下の内容を行います。
1 つの Cloud Run サービスを作成してデプロイします。
この場合、Cloud Deploy を使用してデプロイすることはありません。
Google Cloud Observability で稼働時間チェックを作成します。
このチェックでは、Cloud Run サービスが実行されていることを確認します。
Cloud Monitoring でアラート ポリシーを作成します。
デフォルトでは、Cloud Deploy 分析では、Google Cloud Observability の多くの種類の指標を使用できます。このポリシーでは、稼働時間チェックで問題が検出された場合にアラートが生成されます。
Skaffold 構成を作成して、Cloud Run サービスを 識別します。
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.
Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM
role (roles/serviceusage.serviceUsageAdmin), which
contains the serviceusage.services.enable permission. Learn how to grant
roles.
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.
Enable the Cloud Deploy, Cloud Build, Cloud Run, and Cloud Storage APIs.
Roles required to enable APIs
To enable APIs, you need the Service Usage Admin IAM
role (roles/serviceusage.serviceUsageAdmin), which
contains the serviceusage.services.enable permission. Learn how to grant
roles.
Google Cloud CLI をインストールします。
外部 ID プロバイダ(IdP)を使用している場合は、まず連携 ID を使用して gcloud CLI にログインする必要があります。
gcloud CLI を初期化するには、次のコマンドを実行します:
gcloud init必要なロール
Cloud Deploy サービス アカウントに Cloud Deploy オペレーションを実行して Cloud Run にデプロイするために必要な 権限があることを確認するには、 プロジェクトの Cloud Deploy サービス アカウントに次の IAM ロールを付与するよう管理者に依頼してください:
-
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パイプラインとターゲットを Cloud Deploy サービスに登録します。
gcloud deploy apply --file=clouddeploy.yaml --region=us-central1 --project=PROJECT_IDこれで、1 つのターゲットを含むデリバリー パイプラインが用意され、アプリケーションをデプロイする準備が整いました。
次のように、パイプラインとターゲットを確認します。
コンソールで、Cloud Deploy の [**デリバリー パイプライン**] ページに移動し、使用可能なデリバリー パイプラインのリストを表示します。 Google Cloud
作成したデリバリー パイプラインが表示され、[ターゲット] 列に 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 修飾
イメージに置き換えます。このようにサービス定義をテンプレート化し、リリース作成時に 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で終わります。
これでクイックスタートの演習はすべて終了です。