GO株式会社におけるArgoCDの導入と運用
GO株式会社 / quentinplessis
メンバー / SRE / 従業員規模: 501名〜1,000名
| 利用プラン | ツールの利用規模 | ツールの利用開始時期 |
|---|---|---|
OSS | 10名以下 | 2022年5月 |
| 利用プラン | OSS |
|---|---|
| ツールの利用規模 | 10名以下 |
| ツールの利用開始時期 | 2022年5月 |
アーキテクチャ

アーキテクチャの意図・工夫
こちらのブログに詳しく説明しているため是非ご参考にしてください
導入の背景・解決したかった問題
導入背景
GO株式会社では EKS と GKE クラスタを構成した Kubernetes インフラ基盤上で100以上のマイクロサービスが稼働しています。マニフェストのテンプレートエンジンとして Helm を使ったり、秘密情報の管理のために SOPS を使ったり、環境の差を最小限に抑えるために環境共通設定を設けていたりしている関係でマニフェストの適用方法が比較的に複雑です。マニフェストの適用を効率化するために Argo CD を導入しました。
ツール導入前の課題
Argo CD に移行する前、マニフェストを適用するには Helm をラップした独自の CLI を以下のようにローカルから実行していました。
customcli --cluster my-cluster --namespace my-namespace
裏では、その CLI がマニフェストの生成に必要な情報を取得したり helm dep update で Helm チャートの依存関係を更新したり、 helm diff で適用される設定の差分を出したりして最終的に helm upgrade で設定をクラスタに適用していました。
そのやり方に以下の課題がありました
- 適用のハードルが高かった:ローカル環境から手動でコマンドを実行する必要があったため、ローカル環境に依存していた
- 適用が遅かった:Helm チャートの依存関係を毎回更新する必要があったため、適用に数十秒かかっていた
- 差分が見づらかった:差分をターミナルで確認していたため、量が多い場合はかなり見づらかった
- 適用状況を把握できなかった:CLIを実行して差分を確認しないと設定の適用状況がわからなかったため、クラスタの全体状況が把握しづらくて drift が発生していた
- クラスタとネームスペースを横断した変更がやりづらかった:各クラスタとネームスペースごとに CLI を手動で実行する必要があった
- 自動化が難しかった:CLI を CI で実行することを考えたが、CIに強い権限を付与することになるためセキュリティ観点から諦めてた
どのような状態を目指していたか
- ローカルに依存しない形でマニフェストを適用できること
- HelmとSOPSとカスタムな処理をサポートできる仕組み
- マニフェストの適用状況とdriftを画面から確認できること
- マニフェストの適用を自動化できること
比較した軸
- 成熟度
- GUI、状況の可視化
- カスタマイズ性
選定理由
- 成熟度が高い:CNCFプロジェクトのgraduatedステータスを達成している
- 機能が充実している:RBAC、SSO、部分的同期、同期ウィンドウなどEnterpriseグレードの機能も提供している
- GUIが使いやすい:クラスタの状況を一発でわかるし、差分も見やすいし、全体的にGUIが自然
- 軽量性:CPUとメモリリソースをそこまで使用しない
- 単純な同期システム:いい意味で Argo CD は Kubernetes のマニフェストの同期しかしない単純なシステム。ビルドパイプラインなど必要としていない機能に混乱させられていなくて、やってほしいことをきちんとやってくれている
- カスタマイズ性:Helm/SOPS/共通設定を利用したりしている関係で、カスタムプラグインを作れるArgo CDが魅力的だった
導入の成果
改善したかった課題はどれくらい解決されたか
ほぼ全ての課題が解決になりました
- 適用のハードルが高かった:気軽に適用できるようになった ✅
- 適用が遅かった:数秒で適用できるようになった ✅
- 差分が見づらかった:GUIのお陰で量が多くても差分がとても見やすくなった ✅
- 適用状況を把握できなかった:GUIで状況を一発で分かるようになった ✅
- クラスタやネームスペースを横断した変更がやりづらかった:ボタンを押すだけで同期できるため、ネームスペースごとにゆっくり同期することも、並列で一気に同期することも可能になった ✅
マニフェストの適用の自動化が可能になりましたが、Helm/SOPS/カスタム処理を利用している関係で最終的な差分を確認しないで自動的に適用するのは少し危ないことと、適用タイミングを厳密にコントロールしたい時があるため現時点では適用を手動でトリガーしています。
どのような成果が得られたか
上記のメリット以外
- 適用が楽になったため新しいメンバーのonboardingが早くなった
- SRE以外のエンジニアからPRを出してもらって適用できるようになった
- 設定の同時変更を検知できるようになり、想定外な適用変更を防げるようになった
導入に向けた社内への説明
上長・チームへの説明
OSSツールのため検証環境を簡単に用意できて、そこからチームメンバーに触ってもらって印象が良かったため導入しました
活用方法
よく使う機能
- 同期状況/driftの確認
- マニフェストの変更の適用
- Slack通知
- PRへのコメント
ツールの良い点
- GUIが使いやすい
- バグに引っかかったことが今のところなくて、非常に安定している
- カスタマイズ性が高いため、会社や部署の戦略変更に柔軟に対応可能
- SSOを対応している
- OSSのためセルフホスティッドで安い
ツールの課題点
- マニフェストが多くなると重くなる、メモリを上げる必要がある
ツールを検討されている方へ
Argo CD を導入することでマニフェストをGitOpsで管理できるようになりました。適用フローが明確になり、適用のハードルが下がり、リードタイムが減少し、全体の効率が圧倒的に向上しました! 🎉
カスタムプラグイン機能のおかげで様々な利用方法が可能になり、セキュリティとコンプライアンスによる制約に柔軟に対応できます。
Kubernetesのマニフェスト管理に迷っている方へ、是非Argo CDを検討してみてください!
今後の展望
- パフォーマンス改善
- SOPS連携
GO株式会社 / quentinplessis
メンバー / SRE / 従業員規模: 501名〜1,000名
よく見られているレビュー
GO株式会社 / quentinplessis
メンバー / SRE / 従業員規模: 501名〜1,000名
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法


