はじめに
この記事は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
次回はロギングを考えてみたいと思います。