freeeにおけるEKSのCI/CDとArgoCD
レビュー投稿日の情報になります
フリー株式会社 / Tomoki Yamaguchi
開発部長 / EM
最終更新日投稿日
利用プラン | 利用機能 | ツールの利用開始時期 | 事業形態 |
---|---|---|---|
OSS | 全て | 2021年 | B to B |
利用プラン | OSS |
---|---|
利用機能 | 全て |
ツールの利用開始時期 | 2021年 |
事業形態 | B to B |
アーキテクチャ

アーキテクチャの意図・工夫
ArgoCDと関係ない部分もあるが、CI/CDの全体像を図示した。
- アプリケーションリポジトリの各種イベント(Release, WorkflowDispatch, PR Merge)をトリガーに、マニフェストリポジトリに変更を反映してデプロイを実行できる
- 開発者はマニフェストリポジトリのApproveを行えば、あとはArgoCDが自動的にアプリケーションクラスタにデプロイしてくれる
導入の背景・解決したかった問題
導入背景
ツール導入前の課題
内製ツールを使って、CircleCIを用いたhatOpsを用いてEKSにデプロイしていたため、以下の課題があった
- 内製ツールの改修・保守運用
- CI/CD上でChatOpskubectl applyするのが怖い。diffが見づらい
- CI/CD上でkubectl applyする安全策としてlock機構などを実装する必要があった
- K8s Resourceの状態を確認するのにkubectlコマンドを打つ必要がある
- 権限統制がしづらい
- ちょうどOSSでK8s向けのデプロイエコシステムが成熟してきていた
どのような状態を目指していたか
- GitOps: GitHubがSingle Source of Truthであること。Codeと実態に差分があれば検知できること
- セルフサービス化: 開発者がGUIベースでK8sの日常運用を回せる
- 権限統制: 適切なアクターが適切な権限を持つ
比較検討したサービス
- flux
- Tekton
比較した軸
- セルフサービス化が実現可能なこと(開発者に権限移譲ができる、わかりやすいGUI)
- 既存のchatopsで使っていたツール(helmfileなど)との互換性
選定理由
利用実績がある。安定している。GUIがある
導入の成果
改善したかった課題はどれくらい解決されたか
- デプロイ差分に確信を持ってapplyできる
- K8sリソースの状態をGUIベースでタイムリーに把握でき、日々のデバッグや障害対応が高速化する
- 適切な権限設定ができるようになった
どのような成果が得られたか
- セルフサービス化によるリリース速度・障害対応速度の向上
- 権限統制による、監査法人への説明の容易化
導入時の苦労・悩み
- 既存とのIaC repositoryでの互換性の担保
- プロダクトチームへの周知(ドキュメント整備・Enabling)
導入に向けた社内への説明
上長・チームへの説明
- GUIベースで開発者体験の向上になる
- 既存のCI/CDがわかりにくいことによって生じた障害が低減できる
- セキュリティ要件: 適切なRBACができること(会計の開発者のみが会計のデプロイができるなど)
活用方法
日常的なデプロイからインフラの設定変更反映まで全てArgoCDを通して実行している
よく使う機能
- デプロイ
- リソース状態確認・ログ確認
- ArgoCDから実行できるAction(Pod Restart, CronJob手動実行, Canary Rollback/Promote, ...)
ツールの良い点
- GitOpsが実現できる
- GUIベース
- 開発が活発
ツールの課題点
- マニフェストが巨大なmonorepoになった場合のパフォーマンス問題(特にcustom pluginを使っている場合は追加のオーバーヘッドがかかる)
- 良くも悪くも強大な権限を持つので、事故ると大変(ApplicationSetsのPreserveResourcesOnDeletionとか)
ツールを検討されている方へ
- スケーラブルな実装にするために、ApplicationSetやApp of Appsパターンなどの実装パターンを把握しておく
- リスクの高い操作(Syncそのもの、Application/ApplicationSetsの削除など)について、どのような動作をしてどのようなオプションがあるのか把握しておく
- Application分割単位を軽視しない(Hookの順序制御などをしたくなった時に困る)
- リスクの高い変更をする場合は、ArgoCDのAutoSyncを切ったり、ArgoCD自体の権限を絞るなどする 参考
今後の展望
- パフォーマンス改善
- v3から採用されたより細かな権限制御を用いた開発者体験向上
- Rollouts/Workflowsなど他のArgoプロダクトとの連携による生産性向上 ArgoRollouts, ArgoWorkflows(インターンの方のブログ)
フリー株式会社 / Tomoki Yamaguchi
開発部長 / EM
よく見られているレビュー
フリー株式会社 / Tomoki Yamaguchi
開発部長 / EM
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法