🚀

Fargate上のGitLab起点でGitOpsを実現するパターンのまとめ

2024/01/10に公開

はじめに

この記事はDevOps on AWS大全 実践編の一部です。
DevOps on AWS大全 実践編の一覧はこちら

この記事ではFargate上のGitLab起点で起動するCICDパイプラインのアーキテクチャのまとめを解説しています。

具体的には以下流れで説明します。

  • 解決した課題の整理
  • アーキテクチャの策定
  • 策定したアーキテクチャで達成できたこと

AWSの区分でいう「Level 400 : 複数のサービス、アーキテクチャによる実装でテクノロジーがどのように機能するかを解説するレベル」の内容です。

この記事を読んでほしい人

  • DevOpsエンジニアがアーキテクチャを決めるときにどのような思考フローを踏んでいるか知りたい人
  • Fargate上のGitLab起点で起動するCICDパイプラインのアーキテクチャを知りたい人
  • AWS Certified DevOps Engineer Professionalを目指している人

前回までの流れ

こちらの記事で以下のアーキテクチャを策定しました。

解決した課題の整理

現在、解決した課題は以下になります。

  • GitLabにコミットしたCloudFormationテンプレートを使ってGitOpsを実現したい
  • GitLabにコミットしたECSの定義を使ってGitOpsを実現したい
  • GitLabにコミットしたLambdaの定義を使ってGitOpsを実現したい
  • GitLabにコミットしたEC2 ImageBuilderの定義を使ってGitOpsを実現したい
  • 管理用アカウントにあるCodeCommitを起点にして、開発用アカウントのGitOpsを実現したい
  • CICDパイプラインを実行した後、実行完了までの間はマネジメントコンソールを見たくない

ということで、これをどうやって解決したか考えていきましょう。

アーキテクチャの策定

ここからはこれまで策定してきたアーキテクチャを整理していきます。

Fargate上のGitLab起点でCloudFormationを更新するGitOps

以下のようなアーキテクチャを作成しました。

Fargate上のGitLab起点でECSを更新するGitOps

以下のようなアーキテクチャを作成しました。

Fargate上のGitLab起点でLambdaを更新するGitOps

以下のようなアーキテクチャを作成しました。

Fargate上のGitLab起点でEC2を更新するGitOps

以下のようなアーキテクチャを作成しました。

まとめ

本記事ではFargate上のGitLab起点でGitOpsを実現するパターンをまとめました。

これらのパイプラインを1つの図にまとめるとわかりにくいので分けて書きましたが、本来は1つのCodeCommitに対してこれらのような複数のパターンのパイプラインが刺さっているアーキテクチャになります。

また、連携先のチャットも当然ですが1つです。

今回策定したアーキテクチャで実現できたのは以下の項目です。

  • Fargate上のGitLabを起点にCloudFormation、ECS、Lambda、EC2を更新するGitOps
  • 1つのGitLabを起点としてマルチアカウントのCodePipelineを動作させるCICDパイプライン
  • マネジメントコンソールを確認する必要があるタイミングでチャットに通知を飛ばすChatOps

次回はロギングを考えてみたいと思います。

Discussion