CI/CD Architecture
プロジェクト管理
プロジェクトは、マルチクラスターの権限管理のためのメンバー、グループ、およびロールの管理を容易にします。また、アプリケーションおよびデプロイメントグループの管理をサポートし、アプリケーションのビルドとデプロイメントパイプラインの構造化を行います。
プロジェクト内では、複数のアプリケーションとデプロイメントグループを管理でき、それらの関係はM:N形式で構成されます。たとえば、開発環境と本番環境の両方に対応するアプリケーションは、デプロイメントグループの一部としてデプロイできます。
デプロイメントグループとデータプレーンクラスターの関係は、論理的にM:Nとして整理できます。1つのデプロイメントグループに複数のデータプレーンクラスターを登録して、GitOps方式でアプリケーションをデプロイできます。
アプリケーションビルド管理
モダナイゼーションプラットフォームは、開発チームからソースコードを取得し、Kubernetesデプロイメント用のDockerイメージを生成することで、アプリケーションビルドを効率化します。このプロセスにより、スクリプトを必要とせずにユーザーフレンドリーなUIを通じてパイプラインの構成が可能になります。さらに、プラットフォームは、ソース管理、ライブラリ管理、イメージストレージのための重要なツールであるGitea、Nexus、Harborを統合しています:
- Gitea (ソース管理): コードリポジトリを管理します。
- Nexus (バイナリ管理): 必要なライブラリを保存および管理します。
- Harbor (イメージレジストリ): ビルドされたコンテナイメージを保存します。
ビルドプロセスは以下のステップに従います:
- 開発者は、GiteaとNexusにソースコードとライブラリをアップロードします。
- Tektonビルドパイプラインは、アップロードされたリソースを使用してビルドをコンパイルします。
- 完了後、生成されたコンテナイメージはHarborイメージレジストリにアップロードされます。
このプロセス全体はユーザーコンソールを通じて管理され、CICDバックエンドがビルドパイプラインとイメージのアップロードを自動化します。
アプリケーションデプロイメント管理
Deployment Groupは、アプリケーションデプロイメントのためのターゲット環境で構成されています。これらの環境はKubernetesクラスターに対応し、AKS、EKS、IKS、およびNative Kubernetesを含むさまざまなKubernetesサービスと互換性があります。各デプロイメントグループでは、複数のKubernetesクラスターと指定されたネームスペースを選択できます。デプロイメントグループ内でデプロイメントがトリガーされると、アプリケーションは選択されたすべてのクラスターの指定されたネームスペースにデプロイされます。
デプロイメント管理の主な機能には以下が含まれます:
- デプロイメントグループ内で複数のアプリケーションをデプロイします。
- 各アプリケーションのためにデプロイメントタイプ(例:Kubernetesデプロイメント)を定義します。
- デプロイメント時にKubernetesデプロイメントマニフェスト(YAML)を自動的に生成します。
- YAMLマニフェストをGitサーバーに保存し、ArgoCDを介して適用します。
GitOpsベースのデプロイメント
Cloud ZCPコンソールを介したデプロイメントは、GitOps手法に従い、Gitがデプロイされたリソースを管理するための唯一の真実のソースとして機能します。CICDバックエンドは、アプリケーション構成に基づいてKubernetesマニフェストを生成し、それをGitOpsリポジトリにコミットします。ArgoCDは、GitOpsコントローラーとして、データプレーン内の指定されたネームスペースに対する変更を継続的に監視し、適用します。