「GKEやCloud Runへのデプロイを自動化したいけれど、安全性が心配」「ステージング→本番のプロモーションフローを構築したい」「ロールバックの仕組みを整えたい」——クラウドネイティブなデプロイ自動化を進める際に、多くのSREやDevOpsエンジニアが直面する課題です。
Google Cloud Deployは、GKE・Cloud Run・GKE Enterpriseへのデリバリーパイプラインをマネージドで構築できるサービスです。段階的なロールアウト・承認フロー・自動ロールバックを組み込んだ本番品質のCI/CDパイプラインが構築できます。
この記事を3秒でまとめると
- Cloud Deployはマネージドのデリバリーパイプラインサービス(GKE/Cloud Run対応)
- 段階的ロールアウト・承認フロー・自動検証で安全なデプロイを実現
- Cloud Build/Artifact Registryとの統合でE2EのCI/CDが構築可能

Google Cloud Deployとは
Google Cloud Deployは、2022年にGA(一般提供)となったマネージドのContinuous Deliveryサービスです。「どこに」「どの順番で」「どの条件で」デプロイするかをYAMLで宣言的に定義し、再現可能なデリバリーパイプラインを構築します。
主要コンポーネント
| コンポーネント | 役割 | 説明 |
|---|---|---|
| Delivery Pipeline | パイプライン定義 | 複数ターゲットへの配信順序を定義 |
| Target | デプロイ先 | GKEクラスタ・Cloud Runサービス等 |
| Release | リリース単位 | デプロイするアーティファクトの集合 |
| Rollout | 実行単位 | 特定ターゲットへのデプロイ実行 |
| Automation | 自動化ルール | プロモーション・ロールバックの自動化 |
なぜCloud Deployなのか
- マネージド: Jenkins/ArgoCD等のCD基盤の管理が不要
- 宣言的: YAMLでパイプラインを定義し、GitOpsと親和性が高い
- 段階的ロールアウト: Canary・ブルーグリーン戦略をネイティブサポート
- 承認フロー: 本番デプロイ前の手動承認をパイプラインに組み込み
- 自動検証: デプロイ後のヘルスチェック・メトリクス検証
- 監査ログ: 全デプロイの記録がCloud Audit Logsに保存
パイプラインの設計と構築
Delivery Pipeline定義
Cloud Deployのパイプラインはclouddeploy.yamlで定義します。
# clouddeploy.yaml
apiVersion: deploy.cloud.google.com/v1
kind: DeliveryPipeline
metadata:
name: ses-base-pipeline
description: SES BASE アプリケーションのデリバリーパイプライン
serialPipeline:
stages:
- targetId: dev
profiles: [dev]
- targetId: staging
profiles: [staging]
strategy:
canary:
runtimeConfig:
cloudRun:
automaticTrafficControl: true
canaryDeployment:
percentages: [25, 50, 75]
verify: true
- targetId: production
profiles: [production]
strategy:
canary:
runtimeConfig:
cloudRun:
automaticTrafficControl: true
canaryDeployment:
percentages: [10, 25, 50, 75]
verify: true
deployParameters:
- values:
minInstances: "2"
matchTargetLabels:
env: production
---
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: dev
description: 開発環境
run:
location: projects/ses-base-project/locations/asia-northeast1
---
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: staging
description: ステージング環境
run:
location: projects/ses-base-project/locations/asia-northeast1
requireApproval: false
---
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: production
description: 本番環境
run:
location: projects/ses-base-project/locations/asia-northeast1
requireApproval: true
パイプラインの登録
# パイプラインとターゲットを登録
gcloud deploy apply --file=clouddeploy.yaml \
--region=asia-northeast1 \
--project=ses-base-project
重要: requireApproval: true を設定すると、そのターゲットへのデプロイ前に手動承認が必要になります。本番環境には必ず設定しましょう。承認はGoogle Cloud Console、gcloud CLI、またはAPIから行えます。
Cloud Buildとの統合
CI/CDパイプラインの全体像
Cloud Build(CI)→ Cloud Deploy(CD)の連携で、ビルドからデプロイまでの一貫したパイプラインを構築します。
# cloudbuild.yaml
steps:
# 1. テスト実行
- name: 'node:20'
entrypoint: 'npm'
args: ['ci']
- name: 'node:20'
entrypoint: 'npm'
args: ['test']
# 2. コンテナイメージのビルド
- name: 'gcr.io/cloud-builders/docker'
args:
- 'build'
- '-t'
- '${_REGION}-docker.pkg.dev/${PROJECT_ID}/ses-base/${_SERVICE_NAME}:${SHORT_SHA}'
- '.'
# 3. Artifact Registryにプッシュ
- name: 'gcr.io/cloud-builders/docker'
args:
- 'push'
- '${_REGION}-docker.pkg.dev/${PROJECT_ID}/ses-base/${_SERVICE_NAME}:${SHORT_SHA}'
# 4. Cloud Deployでリリース作成
- name: 'gcr.io/cloud-builders/gcloud'
args:
- 'deploy'
- 'releases'
- 'create'
- 'release-${SHORT_SHA}'
- '--delivery-pipeline=ses-base-pipeline'
- '--region=${_REGION}'
- '--images=${_SERVICE_NAME}=${_REGION}-docker.pkg.dev/${PROJECT_ID}/ses-base/${_SERVICE_NAME}:${SHORT_SHA}'
substitutions:
_REGION: asia-northeast1
_SERVICE_NAME: ses-base-api
options:
logging: CLOUD_LOGGING_ONLY
Skaffoldの設定
Cloud Deployは内部でSkaffoldを使用してデプロイを実行します。
# skaffold.yaml
apiVersion: skaffold/v4beta6
kind: Config
metadata:
name: ses-base-api
profiles:
- name: dev
manifests:
rawYaml:
- k8s/dev/*.yaml
deploy:
cloudrun: {}
- name: staging
manifests:
rawYaml:
- k8s/staging/*.yaml
deploy:
cloudrun: {}
- name: production
manifests:
rawYaml:
- k8s/production/*.yaml
deploy:
cloudrun: {}
Canaryデプロイ戦略
段階的なトラフィック移行
Cloud DeployはCloud RunのCanaryデプロイをネイティブでサポートしています。
- 10%: 新バージョンにトラフィックの10%を流す
- 検証: エラーレート・レイテンシをチェック
- 25%: 問題なければ25%に引き上げ
- 50%→75%→100%: 段階的に全トラフィックを移行
- 自動ロールバック: 異常検知時は前バージョンに戻す
検証(Verify)の設定
デプロイの各段階で自動検証を実行する設定:
# skaffold.yaml 内の verify セクション
verify:
- name: health-check
container:
name: health-checker
image: curlimages/curl:latest
command: ['sh']
args:
- '-c'
- |
for i in $(seq 1 10); do
status=$(curl -s -o /dev/null -w "%{http_code}" ${CLOUD_RUN_URL}/health)
if [ "$status" != "200" ]; then
echo "Health check failed: $status"
exit 1
fi
sleep 5
done
echo "Health check passed"
- name: smoke-test
container:
name: smoke-tester
image: node:20-slim
command: ['node']
args: ['tests/smoke.js']
env:
- name: API_URL
value: ${CLOUD_RUN_URL}
Cloud Deployの検証フェーズは、各Canaryステップの後に自動実行されます。検証に失敗すると、自動的にロールアウトが停止し、ロールバックオプションが表示されます。
承認フローと権限管理
IAMロールの設定
# 開発者: dev環境にはデプロイ可能、staging以降は閲覧のみ
gcloud projects add-iam-policy-binding ses-base-project \
--member="group:[email protected]" \
--role="roles/clouddeploy.developer"
# SRE: 本番承認権限
gcloud projects add-iam-policy-binding ses-base-project \
--member="group:[email protected]" \
--role="roles/clouddeploy.approver"
# 本番デプロイの承認
gcloud deploy rollouts approve rollout-abc123 \
--delivery-pipeline=ses-base-pipeline \
--release=release-abc123 \
--region=asia-northeast1
承認ポリシーの設計
| 環境 | 承認要否 | 承認者 | Canary段階 |
|---|---|---|---|
| dev | 不要 | — | なし(即全量) |
| staging | 不要 | — | 25%→50%→75%→100% |
| production | 必要 | SREチーム | 10%→25%→50%→75%→100% |
自動化(Automation)の設定
Cloud DeployのAutomation機能を使うと、プロモーションやロールバックを自動化できます。
# automation.yaml
apiVersion: deploy.cloud.google.com/v1
kind: Automation
metadata:
name: auto-promote-dev-to-staging
labels:
app: ses-base
description: dev環境で成功したらstaging環境に自動プロモーション
selector:
targets:
- id: dev
rules:
- promoteReleaseRule:
id: promote-to-staging
wait: 600s # 10分間安定していたらプロモーション
destinationTargetId: staging
---
apiVersion: deploy.cloud.google.com/v1
kind: Automation
metadata:
name: auto-rollback-production
description: 本番環境でデプロイ失敗時に自動ロールバック
selector:
targets:
- id: production
rules:
- advanceRolloutRule:
id: auto-rollback
wait: 300s
sourcePhases: ["canary-25", "canary-50"]
監視とトラブルシューティング
Cloud Monitoringとの連携
# デプロイ後のメトリクス監視アラート
displayName: "High Error Rate After Deploy"
conditions:
- displayName: "Error rate > 1%"
conditionThreshold:
filter: >
resource.type = "cloud_run_revision"
AND metric.type = "run.googleapis.com/request_count"
AND metric.labels.response_code_class = "5xx"
aggregations:
- alignmentPeriod: 60s
crossSeriesReducer: REDUCE_SUM
perSeriesAligner: ALIGN_RATE
comparison: COMPARISON_GT
thresholdValue: 0.01
duration: 300s
よくある問題と対処法
| 問題 | 原因 | 対処法 |
|---|---|---|
| リリース作成失敗 | Skaffold設定エラー | skaffold diagnose で検証 |
| 承認タイムアウト | 承認者が未対応 | Slack/PagerDuty通知を設定 |
| Canary検証失敗 | ヘルスチェック設定不備 | タイムアウト・リトライ設定を調整 |
| ロールバック失敗 | 前バージョンのリビジョン不足 | リビジョン保持数を増やす |
GKEへのデプロイ対応
GKEクラスタをターゲットに設定
apiVersion: deploy.cloud.google.com/v1
kind: Target
metadata:
name: production-gke
description: 本番GKEクラスタ
gke:
cluster: projects/ses-base-project/locations/asia-northeast1/clusters/production
requireApproval: true
GKE Gateway APIとの連携
Cloud Deploy + GKE Gateway APIを組み合わせることで、より高度なトラフィック制御が可能になります。HTTPRouteのweightフィールドを使ったCanaryデプロイや、ヘッダーベースのルーティング(特定のテスターのみ新バージョンにルーティング)などが実現できます。
SES案件でのCI/CD需要
市場動向
| スキル | 需要レベル | 案件特性 |
|---|---|---|
| Cloud Build + Cloud Deploy | ★★★★★ | GCP環境のCI/CD案件 |
| GKEデプロイ自動化 | ★★★★★ | コンテナ基盤案件 |
| Cloud Runデプロイ自動化 | ★★★★ | サーバーレス案件 |
| Canary/ブルーグリーン設計 | ★★★★ | 高可用性要件案件 |
| マルチ環境管理 | ★★★★ | エンタープライズ案件 |
単価相場(2026年目安)
| レベル | 月額単価目安 | 求められるスキル |
|---|---|---|
| CI/CD初級 | 55〜70万円 | 基本的なパイプライン構築 |
| CI/CD中級 | 70〜90万円 | Canary・承認フロー・監視連携 |
| CI/CD上級 | 90〜120万円 | マルチクラウド・カスタム検証・SRE |
CI/CDパイプラインの設計・構築スキルは、ほぼ全てのクラウド案件で必要とされます。Google Cloud Deployを使いこなせることは、GCP案件での大きな競争優位になります。
まとめ
- Cloud Deployで宣言的デリバリーパイプライン — YAML定義でGitOps対応
- Canaryデプロイで安全なリリース — 段階的トラフィック移行 + 自動検証
- 承認フローでガバナンスを確保 — 本番デプロイの手動承認 + IAM権限管理
- Automation機能で運用を自動化 — 自動プロモーション + 自動ロールバック
- Cloud Build/Artifact Registryと統合 — E2EのCI/CDを構築
Google Cloud Deployを活用すれば、安全で効率的なデリバリーパイプラインを構築できます。SES案件でのDevOps・SRE需要は引き続き高水準——Cloud Deployの実践スキルで差別化を図りましょう。