模擬問題集 › GCP-PCDOE › 練習問題 9

GCP-PCDOE 練習問題 9|Google Cloud 組織のブートストラップと維持

Professional Cloud DevOps Engineer・無料公開(全 200 問中 15 問を無料公開中)

問題
あなたの会社には、12 個のマイクロサービスで構成されるアプリケーションが Google Kubernetes Engine(GKE)にデプロイされています。複数のチームが、Dev、Staging、Prod の 3 つの環境にまたがってさまざまな機能を並行して開発しています。開発者からは、共有の Dev GKE クラスタに複数のフィーチャー ブランチからデプロイが行われるため、依存関係のテストが失敗したり、リリースが遅れたりしているという報告があります。開発者が、他の開発作業から隔離された安定した開発環境でマイクロサービスの機能をテストできる、費用対効果の高いソリューションを実装する必要があります。どうすればよいですか?

選択肢と解説

  • 1
    Cloud Build を使用して CI パイプラインを自動化し、main ブランチへのマージ リクエストからコンテナ イメージの作成と Kubernetes マニフェストの更新を行う。Config Sync と統合して、自動スケーリングを有効にした Dev GKE クラスタ上に動的に作成される Namespace で新しいイメージをテストする。テスト後に Namespace をクリーンアップする処理を実装する。
  • 2
    Cloud Build を使用して CI パイプラインを自動化し、コミットごとにコンテナ イメージを作成して Kubernetes マニフェストを更新する。Cloud Deploy を使用して、Dev、Staging、Prod の GKE クラスタへのプログレッシブ デリバリーを行う。Config Sync を有効にして、環境間で一貫した Kubernetes 構成を維持する。
  • ✓
    Cloud Build を使用して CI パイプラインを自動化し、フィーチャー ブランチのコミットから Kubernetes マニフェスト ファイルを更新する。Config Sync と統合して、自動スケーリングを有効にした Dev GKE クラスタ上に動的に作成される Namespace で新しいイメージをテストする。テスト後に Namespace をクリーンアップする処理を実装する。
  • 4
    Cloud Build を使用して CI パイプラインを自動化し、フィーチャー ブランチのコミットから Kubernetes マニフェスト ファイルを更新する。Config Sync と統合して、フィーチャー ブランチごとに動的に作成される Dev GKE クラスタで新しいイメージをテストし、マージ リクエスト時にそのクラスタを削除する。

解説

【正解】C

【0からの解説】
①前提知識
・Cloud Build は Google Cloud のマネージド CI サービスで、Git リポジトリへの push などを契機にコンテナ イメージのビルドやマニフェストの更新を自動化できます。
・Config Sync は GitOps のツールで、Git リポジトリに置いた Kubernetes の構成(マニフェスト)を GKE クラスタに自動で同期します。Namespace 単位でのリソース配置も Git から宣言的に管理できます。
・Kubernetes の Namespace は、1 つのクラスタ内でリソースを論理的に分離する単位です。GKE のマルチテナンシーの考え方では、チームや用途ごとに Namespace を分け、リソース割り当てやアクセス制御で互いに干渉しないようにします。クラスタを丸ごと増やすより、はるかに安価で素早く分離環境を作れます。
・一時環境(エフェメラル環境)とは、テストのためだけに作成し、終わったら削除する環境のことです。使った分だけ費用がかかり、環境の汚染も残りません。

②要件と制約語の整理
・問題: 共有 Dev クラスタに複数のフィーチャー ブランチがデプロイされ、互いに干渉している。
・要件: 各開発者がフィーチャー(機能)を「他の開発作業から隔離された安定した開発環境」でテストできること。
・制約語: 「費用対効果が高い(cost-effective)」。

③正解の根拠
C は、フィーチャー ブランチへのコミットを契機に Cloud Build でマニフェストを更新し、Config Sync で既存の Dev GKE クラスタ上に動的に作成した Namespace へデプロイしてテストします。ブランチごとに Namespace が分かれるため他の開発作業と干渉せず、テスト後に Namespace を削除するので環境が残り続けることもありません。クラスタは 1 つを共有し、自動スケーリングで必要なときだけノードが増えるため、費用も最小限です。「隔離」と「費用対効果」の両方を満たすのは C です。

【誤りの選択肢】
A:main ブランチへのマージ リクエストを契機にしているため、フィーチャー ブランチの段階では隔離されたテストができません。開発者が求めているのは「マージ前に自分の機能を隔離環境でテストすること」であり、main への統合を前提にすると干渉の問題を解決できません。
B:コミットごとに Dev、Staging、Prod へのプログレッシブ デリバリーを行う構成で、共有 Dev クラスタに複数ブランチがデプロイされて干渉するという根本の問題を解決していません。フィーチャーごとの隔離された環境が用意されないため、要件を満たしません。
D:フィーチャー ブランチごとに GKE クラスタを丸ごと作成すると、隔離は実現できますが、クラスタの管理手数料やノードの費用、作成に要する時間がブランチ数だけ増えます。Namespace による分離で十分に隔離できる状況では費用対効果が低く、「費用対効果が高い」という制約に反します。

【参考】
クラスタ マルチテナンシー | Google Kubernetes Engine (GKE)
Config Sync の概要
ビルドトリガーの作成と管理 | Cloud Build
← 練習問題 8練習問題 10 →
GCP-PCDOE の模擬問題集は全 200 問

本番形式の練習テスト 4 回を、試験モード/演習モードで受験できます。 全問に解説付き、ドメイン別の弱点分析にも対応。模試プラン(月額 ¥980)からご利用いただけます。

GCP-PCDOE の模試を受ける料金プランを見る

GCP-PCDOE の無料公開問題

問題 1問題 2問題 3問題 4問題 5問題 6問題 7問題 8問題 9問題 10問題 11問題 12問題 13問題 14問題 15