TL

Cloud Service

Cloud Run / GKE

Google Cloud のコンテナ実行基盤。Cloud Run はサーバー管理不要でコンテナを実行し、GKE はマネージド Kubernetes でより細かく制御する。AWS の ECS / Fargate・EKS に相当。

中級運用上の優秀性コスト最適化信頼性パフォーマンス効率
最終更新: 2026-06-03公式ドキュメント ↗
TL;DR要点だけ先に
  • 1.Cloud Run はコンテナを置くだけで起動・スケール・HTTPS 公開まで自動化。
  • 2.リクエストが無ければ0まで縮退し、1インスタンスが複数を同時処理して増減。
  • 3.細かい制御や K8s 前提の複雑構成が要るならマネージドな GKE を選ぶ。

解決する課題

  • コンテナを本番で安定運用したい(落ちたら再起動、負荷で自動増減)
  • サーバー(VM)やクラスターの管理をしたくないCloud Run
  • アイドル時はコストをゼロにしたい(ゼロスケール)→ Cloud Run
  • Kubernetes の API・エコシステム(Helm / Operator / Istio など)を使いつつ、運用は任せたい → GKE
  • マイクロサービスをスケーラブルかつ移植性高く動かしたい

主要概念と用語

Cloud Run

  • サービス(Service): HTTPS エンドポイントを持つ常駐型ワークロード。リクエスト駆動で自動スケール
  • ジョブ(Job): 実行して完了する処理(バッチ/データ処理)。エンドポイントは持たない
  • リビジョン(Revision): デプロイごとに作られる不変のスナップショット。トラフィックを割り当ててカナリア/ロールバック
  • 同時実行数(concurrency): 1 インスタンスが同時に捌くリクエスト数(既定 80、最大 1000)。Fargate との大きな違い
  • min/max インスタンス: 最小(常時起動でコールドスタート回避)と最大(上限)

GKE

  • クラスター: コントロールプレーン(Google 管理)+ノード群
  • Autopilot / Standard: Pod 単位課金でノード運用も任せる Autopilot と、ノードプールを自分で管理する Standard
  • ノードプール: 同一構成ノードの束(マシンタイプ/Spot 等を指定)
  • Pod / Deployment / Service / Ingress: Kubernetes 標準リソース
  • Workload Identity: Pod に Google サービスアカウントを安全に紐付ける仕組み

仕様・制限・クォータ

Cloud Run

  • コンテナは HTTP/gRPC でリッスンし、環境変数 PORT(既定 8080)で待ち受ける必要がある
  • リクエストタイムアウトは最大 60 分。インスタンスあたり最大 8 vCPU / 32 GiB メモリ
  • リージョン単位のサービス。スケールは 0〜最大インスタンス数まで自動
  • CPU 割り当て: 「リクエスト処理中のみ」か「常時割り当て(always-on)」を選択

GKE

  • リージョン × ゾーンに配置。コントロールプレーンの可用性に応じて Zonal / Regional を選択
  • 1 クラスターあたりのノード数・Pod 数に上限(バージョン/構成で変動)
  • vCPU・IP アドレス等にプロジェクト/リージョンクォータがあり、引き上げ申請が可能

内部の仕組み

Cloud Run はコンテナイメージからリビジョンを作り、受信リクエスト量に応じてインスタンス数を自動調整します。トラフィックが無ければ 0 までスケールイン(ゼロスケール)するため、アイドル時の課金が発生しません。基盤は Google の内製サーバーレス基盤(gVisor によるサンドボックス)上で動き、ノードのプロビジョニング・パッチ・スケールはすべて Google 側が担います。1 インスタンスが複数リクエストを同時処理できる点が、1 タスク=処理単位に近い Fargate と異なります。

GKE は Google が コントロールプレーン(API サーバー / etcd / スケジューラ)を完全マネージドで運用し、ワークロードは Pod としてノード上で動きます。Autopilot モードでは Google がノードの数・サイズ・スケールまで管理し、ユーザーは Pod のリソース要求を書くだけ。Standard モードではノードプールを自分で持ち、より細かい制御やコスト最適化ができます。

Cloud Run と GKE の使い分け

Cloud Run=サーバーレスでシンプル・ゼロスケールGKE=マネージド Kubernetes(移植性/エコシステム/きめ細かい制御)。 ステートレスな HTTP/ジョブなら Cloud Run、Kubernetes 前提の複雑構成や DaemonSet・StatefulSet が要るなら GKE。

設計パターン / ベストプラクティス

  • 運用を最小化するなら Cloud Run、Kubernetes が必要なら GKE(まずは Autopilot)
  • リビジョン+トラフィック分割でカナリアリリース/即時ロールバック
  • コールドスタートが問題なら min インスタンスを 1 以上に設定
  • 同時実行数(concurrency)は、ワークロードの CPU/メモリ特性に合わせて調整(重い処理は小さく)
  • 権限は 専用サービスアカウント(Cloud Run)/ Workload Identity(GKE)で最小限に
  • 内部通信のみなら Ingress を internal に絞り、外部公開しない

運用・監視・トラブルシュート

  • Cloud Monitoring / Cloud Logging でメトリクス(リクエスト数・レイテンシ・インスタンス数)とログを監視。標準出力ログは自動収集
  • Cloud Run のリビジョンが起動しない → PORT でリッスンしているか、イメージ取得権限(Artifact Registry)、メモリ不足を確認
  • デプロイ後にエラー → リビジョンのトラフィックを直前リビジョンへ戻すだけでロールバック
  • GKE の Pod が CrashLoopBackOffkubectl logs / kubectl describe pod でイベントとログを確認

コスト

サービス/オプション課金の考え方向いている用途
Cloud Run(リクエストベース)リクエスト処理中の vCPU/メモリ×時間+リクエスト数。アイドルは0イベント/可変トラフィックの HTTP・ジョブ
Cloud Run(インスタンスベース)min〜稼働インスタンスの稼働時間で常時課金コールドスタートを避けたい常駐 API
GKE AutopilotPod が要求した vCPU/メモリ×時間(ノード運用込み)Kubernetes だが運用は任せたい
GKE Standardノード(Compute Engine)の費用+クラスター管理料集約効率・特殊要件でコスト最適化
Spot(GKE)最大〜91% 割引のプリエンプティブルノード中断許容のバッチ/ステートレス

セキュリティ

  • 専用サービスアカウントを Cloud Run サービス/ GKE の Workload Identity で割り当て、鍵のハードコードを避ける(AWS の IAM ロール/タスクロール相当)
  • イメージは Artifact Registry に保存し、脆弱性スキャンを有効化。Binary Authorization で署名済みイメージのみデプロイ
  • シークレットは Secret Manager で管理し、環境変数や Volume として注入
  • Cloud Run の Ingress を内部限定にし、認証は Cloud IAM(IAM Invoker) や IAP で制御。GKE は Network Policy で Pod 間通信を最小化
アンチパターン

広すぎる権限(例: Editor 相当)のサービスアカウントを Cloud Run / Pod に付けるのは NG。 さらに認証不要(--allow-unauthenticated)の内部 API を放置するのも危険。用途ごとに最小権限必要な場合のみ公開が原則です。

関連サービス・比較(AWS との対応)

観点Cloud RunGKEAWS の対応
位置づけサーバーレスコンテナマネージド KubernetesFargate(+App Runner) / EKS
スケール単位リクエスト(同時実行数)Pod(HPA/オートスケール)タスク / Pod
ゼロスケール対応(アイドルは0)原則ノード常駐(Pod は0可)Fargate は常駐課金
権限付与サービスアカウントWorkload Identityタスクロール / IRSA
イメージ管理Artifact RegistryArtifact RegistryAmazon ECR
向きHTTP/ジョブ・可変負荷複雑構成・移植性常駐コンテナ / K8s 前提

ハンズオン / CLI例

# Cloud Run: コンテナイメージからサービスをデプロイ(HTTPS 自動付与)
gcloud run deploy web \
  --image=asia-northeast1-docker.pkg.dev/PROJECT_ID/repo/web:latest \
  --region=asia-northeast1 \
  --service-account=web-sa@PROJECT_ID.iam.gserviceaccount.com \
  --concurrency=80 \
  --min-instances=1 \
  --max-instances=10 \
  --no-allow-unauthenticated

# Cloud Run: 新リビジョンへ段階的にトラフィックを移す(カナリア 10%)
gcloud run services update-traffic web \
  --region=asia-northeast1 \
  --to-revisions=LATEST=10

# GKE: Autopilot クラスターを作成し、認証情報を取得して Deployment を作成
gcloud container clusters create-auto demo-cluster \
  --region=asia-northeast1
gcloud container clusters get-credentials demo-cluster \
  --region=asia-northeast1
kubectl create deployment web \
  --image=asia-northeast1-docker.pkg.dev/PROJECT_ID/repo/web:latest

Google Cloud Service

Cloud Run / GKEを実務で読む

TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。

解決すること

コンピューティング

比較で見る軸

クラウド: Google Cloud / カテゴリ: コンピューティング / 難易度: intermediate

導入後に効く点

リクエストが無ければ0まで縮退し、1インスタンスが複数を同時処理して増減。

先に潰すリスク

サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。

数字・仕様の読み方
クラウド
Google Cloud
カテゴリ
コンピューティング
難易度
intermediate
関連資格
設計柱
operational / cost / reliability / performance

判断チェックリスト

  • 自社の用途が「コンピューティング / operational」に近いか確認する。
  • 強みである「Cloud Run はコンテナを置くだけで起動・スケール・HTTPS 公開まで自動化。」が本当に評価軸になるか確認する。
  • 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
  • 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
  • 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
  • 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。

次に確認する観点

コンピューティングoperationalcostreliabilityperformance

他クラウドの同等サービス

役割が近いサービスです。設計の置き換えや比較検討の参考に。