Cloud Service
Cloud Deployment Manager
Google Cloud 独自のテンプレートでインフラを宣言的に定義し、リソースをまとめて作成・更新・削除できる従来型の IaC サービス。AWS CloudFormation に近い位置づけだが、新規採用は後継の Infrastructure Manager が推奨される。
- 1.YAML やテンプレートで Google Cloud リソースを宣言し、デプロイ単位でまとめて管理する従来型の IaC サービス。
- 2.AWS の CloudFormation に相当するが、新規プロジェクトでは Terraform ベースの Infrastructure Manager への移行が推奨される。
- 3.Jinja や Python でテンプレートを動的に組み立て、構成を再利用・パラメータ化できる。
解決する課題
Google Cloud のリソースを画面やコマンドで手作業に積み上げると、構成が属人化し再現が難しくなります。Cloud Deployment Manager は、構成を宣言的なテンプレートとして記述し、リソース群を 1 つのデプロイとしてまとめて作成・更新・削除できるようにします。
- ネットワーク・Compute・ストレージなどを一括で再現可能にプロビジョニングしたい
- 環境(本番・検証)ごとの差分をパラメータで切り替え、同じ構成を流用したい
- 手作業による構成のばらつき(ドリフト)を避け、コードとして履歴管理したい
- 既存資産が Deployment Manager に依存しており、維持・読み解きが必要
Cloud Deployment Manager は成熟した既存サービスですが、Google Cloud は新しい IaC として Infrastructure Manager(Terraform ベース) を案内しています。新規構築では後継サービスや Terraform を第一候補とし、Deployment Manager は既存資産の維持を中心に捉えるのが現実的です。
主要概念と用語
- デプロイ(Deployment): 管理対象のリソースを束ねる単位。1 つの構成に対応し、作成・更新・削除のライフサイクルを持つ
- 構成(Configuration): デプロイの起点となる YAML ファイル。どのリソースをどの設定で作るかを宣言する
- リソース(Resource): 構成内で定義する個々の Google Cloud オブジェクト。
typeに Compute やネットワークなどの種類を指定する - テンプレート(Template): 構成を再利用・パラメータ化するための部品。Jinja2 や Python で動的に組み立てられる
- プロパティ(Properties): 各リソースに渡す設定値。マシンタイプやリージョンなどを指定する
- タイプ(Type): 作成するリソースの種別。Google Cloud の API リソースを参照する基本タイプや、テンプレートを指す合成タイプがある
- マニフェスト(Manifest): デプロイ時に展開された最終構成のスナップショット。実際に適用された内容を確認できる
- プレビュー(Preview): 実際に適用する前に、作成・変更されるリソースを試算する操作
仕様・制限・クォータ
- 記述言語: 構成は YAML。テンプレートは Jinja2 または Python で記述し、変数や繰り返しで動的に組み立てられる
- 対象リソース: Google Cloud の多くの API リソースを
typeで参照して作成できる。利用できるタイプは公式ドキュメントを参照する - 更新の挙動: リソースによっては更新時に**置換(再作成)**が必要なものがあり、更新ポリシーで扱いを制御する
- プロジェクト/グローバル: デプロイはプロジェクトに紐づくグローバルなリソースとして管理される
- クォータ: デプロイ数や 1 デプロイあたりのリソース数などにプロジェクト単位の上限があり、必要に応じて引き上げ申請ができる
- 新規開発の位置づけ: 後継の Infrastructure Manager が案内されているため、長期の新規投資先としては慎重に判断する
内部の仕組み
Deployment Manager は、構成とテンプレートをまず展開(expand)して最終的なリソース定義を確定し、それを Google Cloud の各 API 呼び出しへ変換してプロビジョニングします。確定した内容はマニフェストとして記録されます。
- 構成内のテンプレート(Jinja2/Python)を評価し、変数や条件を解決してフラットなリソース一覧に展開する
- 展開結果から各リソースの依存関係を解決し、参照(
$(ref.…))に基づいて作成順序を決める - 各リソースを対応する Google Cloud API へ作成・更新・削除のリクエストとして送る
- 更新時は既存デプロイと新しい構成を比較し、追加・変更・削除の差分を算出する
- 操作は Cloud Audit Logs に記録され、誰がいつどのデプロイを変更したかを追跡できる
リソース間の依存は $(ref.リソース名.プロパティ) という参照で表現します。これにより Deployment Manager が作成順序を自動で解決するため、手で順序を指定する必要がありません。たとえばサブネットがネットワークを参照する形にしておくと、ネットワークが先に作られます。
設計パターン / ベストプラクティス
- 構成は Git で管理し、変更のレビューと履歴を残す(手作業の構成変更を排除する)
- 共通部品はテンプレート化して再利用し、環境差分は**プロパティ(入力)**で切り替える
- 適用前に必ずプレビューで差分を確認し、想定外の削除や置換を検知する
- Python テンプレートに複雑なロジックを盛り込みすぎず、可読性と保守性を優先する
- 新規構築では後継サービス(Infrastructure Manager)や Terraform を第一候補とし、Deployment Manager は既存資産の維持に用いる
運用・監視
- デプロイの**状態(適用中・完了・失敗)**とマニフェストを確認し、失敗時はエラー内容から原因を追う
- 適用が失敗する場合は、API の有効化漏れや実行主体の IAM 権限不足、リソース固有の制約を疑う
- 操作は Cloud Audit Logs(Admin Activity/Data Access)に記録されるため、変更追跡と棚卸しに使う
- 構成ドリフト(手動変更による実態とのずれ)が疑われる場合は、プレビューや差分で把握する
- 不要になったデプロイは削除し、管理対象リソースをまとめて整理する
デプロイを削除すると、そのデプロイが管理しているリソースもまとめて破棄されるのが基本です。共有リソースや本番データを含むデプロイの削除は影響範囲を必ず確認してから実行しましょう。
コスト
Deployment Manager 自体は構成を適用するための仕組みであり、課金の主体はデプロイによって作成された Google Cloud リソースです。Compute やネットワーク、ストレージなどの実費が、それぞれのサービスの料金に従って発生します。
| 項目 | 課金の考え方 | コスト最適化のヒント |
|---|---|---|
| サービス操作 | デプロイの作成・更新・削除操作自体の課金体系は公式情報を確認 | 不要なデプロイを残さず整理する |
| 作成リソース | デプロイで作った Compute やネットワーク等の実費 | 環境ごとにサイズをプロパティで最適化する |
| 監査・ログ | 操作ログの保管に伴うストレージ費用 | ログの保持期間を運用要件に合わせて見直す |
セキュリティ
- デプロイの作成・更新・削除を IAM で制御し、本番デプロイを操作できる主体を限定する
- 実行に使う ID の権限が作用範囲の上限になるため、広すぎる権限を避け最小権限に保つ
- 機密値はテンプレートへ直書きせず、Secret Manager 等を参照する形にして平文の散在を避ける
- 構成・テンプレートを置く Cloud Storage バケットや Git リポジトリも保護し、改ざんを防ぐ
- 操作は Cloud Audit Logs で監査し、誰がどのデプロイを変更したかを追跡できるようにする
万能な権限を持つ ID でデプロイを使い回すのは NG。1 つの構成ミスや権限漏洩がプロジェクト全体に波及します。 デプロイの操作権限は作用範囲に絞って割り当て、機密値はテンプレートに直書きせず Secret Manager 等を参照しましょう。
関連サービス・比較
最も近い関連サービスは後継の Infrastructure Manager です。エンジンと記述言語が異なり、新規採用では後継側が案内されます。
| 観点 | Cloud Deployment Manager | Infrastructure Manager |
|---|---|---|
| 位置づけ | 従来型の Google Cloud 独自 IaC | 後継のマネージド IaC |
| 記述言語/エンジン | YAML + Jinja2 / Python テンプレート | Terraform(HCL) |
| 管理単位 | デプロイ + マニフェスト | デプロイ + リビジョン |
| 状態管理 | サービス内でデプロイ状態を保持 | マネージドな tfstate |
| 変更の事前確認 | プレビュー | プレビュー(plan 相当) |
| 新規採用の推奨度 | 既存資産の維持が中心 | 新規構築の第一候補 |
| 相当する AWS | CloudFormation | CloudFormation(エンジンは Terraform) |
ハンズオン / CLI例
# 必要な API を有効化
gcloud services enable deploymentmanager.googleapis.com
# 構成ファイル(YAML)からデプロイを作成
gcloud deployment-manager deployments create web-stack \
--config config.yaml
# 適用前に変更内容をプレビューしてから反映する
gcloud deployment-manager deployments update web-stack \
--config config.yaml \
--preview
gcloud deployment-manager deployments update web-stack
# デプロイの状態と展開後のマニフェストを確認
gcloud deployment-manager deployments describe web-stack
gcloud deployment-manager manifests list --deployment web-stack
# デプロイが管理するリソースの一覧を確認
gcloud deployment-manager resources list --deployment web-stack
# 不要になったデプロイを削除(管理対象リソースもまとめて破棄される)
gcloud deployment-manager deployments delete web-stack
Google Cloud Service
Cloud Deployment Managerを実務で読む
TL;DRは入口です。実際に選ぶ・使う段階では、何を解決するか、何と比較するか、導入後にどこで詰まるかまで見る必要があります。
解決すること
管理・ガバナンス
比較で見る軸
クラウド: Google Cloud / カテゴリ: 管理・ガバナンス / 難易度: intermediate
導入後に効く点
AWS の CloudFormation に相当するが、新規プロジェクトでは Terraform ベースの Infrastructure Manager への移行が推奨される。
先に潰すリスク
サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。
- クラウド
- Google Cloud
- カテゴリ
- 管理・ガバナンス
- 難易度
- intermediate
- 関連資格
- —
- 設計柱
- operational / reliability
判断チェックリスト
- 自社の用途が「管理・ガバナンス / operational」に近いか確認する。
- 強みである「YAML やテンプレートで Google Cloud リソースを宣言し、デプロイ単位でまとめて管理する従来型の IaC サービス。」が本当に評価軸になるか確認する。
- 注意点の「サービス単体ではなく、権限、ネットワーク、監視、課金、バックアップを含めて設計する必要がある。」を運用で吸収できるか確認する。
- 公開値や仕様値は、対象プラン・対象機種・対象リージョンまで確認する。
- 既存システム、ID、ネットワーク、監視、バックアップとの接続方法を先に洗い出す。
- 小さく試してから、本番移行、権限設計、障害時手順、コスト監視を決める。