【正解】A
【0からの解説】
①前提知識:
・Cloud Deploy は、パイプラインに定義したターゲット(dev、prod など)へ順番にリリースを昇格させるマネージドな継続的デリバリー サービスで、レンダリングとデプロイには Skaffold を使います。
・Skaffold のプロファイル(profiles):skaffold.yaml の中で環境ごとに異なる設定を定義する仕組みです。Cloud Deploy では、パイプラインの各ターゲット(ステージ)にどのプロファイルを使うかを指定できます。
・Kustomize:共通のマニフェスト(base)と、環境ごとの差分だけを記述した overlay を組み合わせて最終的なマニフェストを生成するツールです。レプリカ数のような差分だけを overlay に書けば、それ以外の設定は base を共有します。
・rawYaml:プレーンな Kubernetes マニフェストをそのまま使う方式で、差分を表現する仕組みはありません。
②要件の整理:(a) dev は 2 レプリカ、prod は 5 レプリカと環境ごとに値を変える、(b) それ以外の設定は環境間で一貫させる、(c) 将来のマニフェスト更新時の開発オーバーヘッドを最小にする、の 3 点です。
③正解の理由:環境ごとに異なる設定を出し分けるには、環境ごとのプロファイル(dev 用・prod 用の複数)が必要です。各プロファイルの manifests.kustomize に環境ごとの overlay を指定すれば、共通設定は base の 1 か所だけで管理され、レプリカ数だけが overlay で上書きされます。共通部分の変更は base を 1 回直すだけで全環境に反映されるため、一貫性の確保と更新時のオーバーヘッド最小化の両方を満たします。
【誤りの選択肢】
B:プロファイルが 1 つしかないと、ターゲットごとに異なる構成(overlay)を選び分けられず、dev と prod でレプリカ数を変えることができません。
C:複数プロファイルで環境を分けることはできますが、rawYaml では環境ごとに完全なマニフェストを別々に用意する必要があります。共通設定が重複するため、変更のたびに複数ファイルを同じように直す必要があり、設定のずれ(不一致)も起こりやすく、要件 (b)(c) に反します。
D:単一プロファイルかつ rawYaml では、環境ごとにレプリカ数を変えること自体ができません。
【参考】
Cloud Deploy でマニフェストを管理するCloud Deploy で Skaffold を使用する