𝕏 f B! L
案件・求人数 12,345
案件を探す(準備中) エージェントを探す(準備中) お役立ち情報 ログイン
案件・求人数 12,345
Google Cloud Deploy CI/CDパイプライン完全ガイド|GKE・Cloud Runへの安全なデリバリー

Google Cloud Deploy CI/CDパイプライン完全ガイド|GKE・Cloud Runへの安全なデリバリー

Google CloudCloud DeployCI/CDGKEDevOps
目次

「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 CI/CDパイプラインの全体像

Google Cloud Deployとは

Google Cloud Deployは、2022年にGA(一般提供)となったマネージドのContinuous Deliveryサービスです。「どこに」「どの順番で」「どの条件で」デプロイするかをYAMLで宣言的に定義し、再現可能なデリバリーパイプラインを構築します。

主要コンポーネント

コンポーネント役割説明
Delivery Pipelineパイプライン定義複数ターゲットへの配信順序を定義
Targetデプロイ先GKEクラスタ・Cloud Runサービス等
Releaseリリース単位デプロイするアーティファクトの集合
Rollout実行単位特定ターゲットへのデプロイ実行
Automation自動化ルールプロモーション・ロールバックの自動化

なぜCloud Deployなのか

  1. マネージド: Jenkins/ArgoCD等のCD基盤の管理が不要
  2. 宣言的: YAMLでパイプラインを定義し、GitOpsと親和性が高い
  3. 段階的ロールアウト: Canary・ブルーグリーン戦略をネイティブサポート
  4. 承認フロー: 本番デプロイ前の手動承認をパイプラインに組み込み
  5. 自動検証: デプロイ後のヘルスチェック・メトリクス検証
  6. 監査ログ: 全デプロイの記録が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デプロイをネイティブでサポートしています。

  1. 10%: 新バージョンにトラフィックの10%を流す
  2. 検証: エラーレート・レイテンシをチェック
  3. 25%: 問題なければ25%に引き上げ
  4. 50%→75%→100%: 段階的に全トラフィックを移行
  5. 自動ロールバック: 異常検知時は前バージョンに戻す

検証(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案件での大きな競争優位になります。


まとめ

  1. Cloud Deployで宣言的デリバリーパイプライン — YAML定義でGitOps対応
  2. Canaryデプロイで安全なリリース — 段階的トラフィック移行 + 自動検証
  3. 承認フローでガバナンスを確保 — 本番デプロイの手動承認 + IAM権限管理
  4. Automation機能で運用を自動化 — 自動プロモーション + 自動ロールバック
  5. Cloud Build/Artifact Registryと統合 — E2EのCI/CDを構築

Google Cloud Deployを活用すれば、安全で効率的なデリバリーパイプラインを構築できます。SES案件でのDevOps・SRE需要は引き続き高水準——Cloud Deployの実践スキルで差別化を図りましょう。

関連記事

SES案件をお探しですか?

SES記事をもっと読む →
🏗️

SES BASE 編集長

SES業界歴10年以上のメンバーが在籍する編集チーム。SES企業での営業・エンジニア経験、フリーランス独立経験を持つメンバーが、業界のリアルな情報をお届けします。

📊 業界データに基づく記事制作 🔍 IPA・経済産業省データ参照 💼 SES実務経験者が執筆・監修