コンテナ化されたアプリを開発して提供するための CI / CD パイプライン

Last reviewed 2022-11-18 UTC

このドキュメントでは、アプリケーションを開発して Google Kubernetes Engine(GKE)へデプロイするために使用できる、開発、継続的インテグレーション(CI)、継続的デリバリー(CD)のためのシステムを設定するための Google Cloud ツールの統合セットについて説明します。このリファレンス アーキテクチャのドキュメントは、ソフトウェア デベロッパーとオペレーターの両方を対象としています。Google Cloud での gcloud コマンドの実行と、アプリケーション コンテナの GKE へのデプロイに精通していることを前提としています。

アーキテクチャ

次の図は、このアーキテクチャで使用されるリソースを示しています。

システムの開発とデプロイには、Cloud Code、Cloud Build、Artifact Registry、Cloud Deploy、GKE を使用します。

このアーキテクチャには次のコンポーネントが含まれています。

  1. 開発ワークスペースとしての Cloud Code。このワークスペースの一部として、minikube で実行される開発クラスタの変更を確認できます。Cloud Shell で Cloud Code と minikube クラスタを実行します。Cloud Shell は、ブラウザからアクセスできるオンライン開発環境です。コンピューティング リソース、メモリ、統合開発環境(IDE)があり、Cloud Code もインストールされています。
  2. アプリケーションのビルドとテストのための Cloud Build(パイプラインの「CD」部分)

    パイプラインのこの部分には、次のアクションがあります。

    • Cloud Build が Cloud Build トリガーを使用してソース リポジトリに対する変更をモニタリングします。
    • メインブランチに変更が commit されると、Cloud Build トリガーは次の処理を行います。
      • アプリケーション コンテナを再構築します。
      • ビルド アーティファクトを Cloud Storage バケットに配置します。
      • アプリケーション コンテナを Artifact Registry に配置します。
      • コンテナでテストを実行します。
      • Cloud Deploy を呼び出してコンテナをステージング環境にデプロイします。この例では、ステージング環境は Google Kubernetes Engine クラスタです。
    • ビルドとテストが成功したら、Cloud Deploy を使用して、ステージング環境から本番環境にコンテナを昇格できます。
  3. デプロイを管理するための Cloud Deploy(パイプラインの「CD」部分)パイプラインのこの部分では Cloud Deploy が次の処理を行います。

    • デリバリー パイプラインターゲットを登録します。ターゲットは、ステージング クラスタと本番環境クラスタを表します。
    • Cloud Storage バケットを作成し、Skaffold レンダリング ソースとレンダリングされたマニフェストを作成したバケットに保存します。
    • ソースコードを変更するたびに新しいリリースを生成します。
    • アプリケーションを本番環境にデプロイします。この本番環境へのデプロイでは、オペレーター(またはその他の指定された担当者)がデプロイを手動で承認します。このアーキテクチャでは、本番環境は Google Kubernetes Engine クラスタです。

このアーキテクチャでは、Kubernetes ネイティブ アプリケーションの継続的な開発を容易にするコマンドライン ツールである Skaffold を使用して、開発環境、ステージング環境、本番環境の間で構成が共有されます。

Google Cloud は、アプリケーションのソースコードを GitHub に保存します。

このアーキテクチャでは、システムのほとんどのコンポーネントで Google Cloud プロダクトを使用し、Skaffold でシステムを統合しています。Skaffold はオープンソースであるため、このような原則で Google Cloud、社内コンポーネント、サードパーティ コンポーネントを組み合わせて同様のシステムを作成できます。このソリューションはモジュール方式を採用しているため、開発パイプラインとデプロイ パイプラインの一部として段階的に導入できます。

ユースケース

この統合システムの主な特徴は次のとおりです。

  • 開発とデプロイが迅速になります

    デベロッパー ワークスペースで変更を検証できるため、開発ループが効率的です。自動化された CI/CD システムと環境間のパリティの向上により、本番環境に変更を展開する際に、より多くの問題を検出できるため、デプロイが高速化されます。

  • 開発、ステージング、本番環境全体で一貫性の向上によるメリットを享受できます

    このシステムのコンポーネントでは、共通の Google Cloud ツールセットが使用されます。

  • さまざまな環境で構成を再利用します

    こうした再利用は Skaffold を使用して行われますが、Skaffold は異なる環境に対して共通の構成形式を認めます。また、デベロッパーとオペレーターが同じ構成を更新して使用することもできます。

  • ワークフローの早い段階でガバナンスを適用します。

    このシステムでは、本番環境、CI システム、開発環境でガバナンスに関する検証テストが適用されます。開発環境では、ガバナンスを適用することで、問題を検出し、早期に修正できます。

  • 独自性の高いツールでソフトウェア デリバリーを管理します。

    継続的デリバリーはフルマネージドであり、CD パイプラインのステージをレンダリングやデプロイの細部から分離します。

配備

このアーキテクチャをデプロイするには、CI / CD パイプラインを使用したコンテナ化されたアプリの開発とデプロイをご覧ください。

次のステップ