OSSで実現する効率化・コスト削減

KubernetesとArgo CDによるGitOps導入事例:デプロイ自動化と運用コスト削減を実現

Tags: Kubernetes, Argo CD, GitOps, CI/CD, 運用効率化

Kubernetes環境におけるデプロイと運用の課題

多くの組織でクラウドネイティブ化が進み、Kubernetesはアプリケーション実行基盤として広く採用されています。Kubernetesは高いスケーラビリティとレジリエンスを提供しますが、その一方で、デプロイメントや設定管理の複雑さが増大するという課題も抱えています。

従来のCI/CDパイプラインでは、CIツールがアプリケーションビルド後にKubernetesクラスタに対して直接デプロイコマンドを実行したり、マニフェストファイルを適用したりする手法が一般的でした(Push型アプローチ)。しかし、このアプローチでは以下のような問題が生じがちです。

これらの課題は、特にマイクロサービスのように頻繁なデプロイが必要な環境において、運用チームの負荷を増大させ、結果として運用コストの上昇や開発速度の低下を招いていました。

GitOpsによるアプローチとArgo CDの選定

このような課題を解決するために注目されるのが、GitOpsという運用アプローチです。GitOpsでは、「Gitリポジトリをシステム構成の唯一の真実(Single Source of Truth)とする」という原則に基づき、すべてのインフラおよびアプリケーションの宣言的な構成をGitで管理します。そして、専用のツールがGitリポジトリの状態を監視し、実際のクラスタの状態をそれに一致させるように自動的に調整します。これはKubernetesのコントローラーパターンと非常に親和性が高い考え方です。

このGitOpsを実現するためのツールとして、私たちは複数の選択肢を検討しました。その結果、Kubernetesネイティブな設計思想を持ち、高機能かつ活発なコミュニティを持つオープンソースソフトウェアであるArgo CDを選定しました。

Argo CDはPull型のアプローチを採用しています。CIパイプラインはアプリケーションイメージをビルドし、新しいマニフェストをGitリポジトリにプッシュするまでを行います。その後、Argo CDがGitリポジトリの変更を検知し、Kubernetesクラスタに定義された状態を反映させます。この仕組みにより、CIツールが直接クラスタにアクセスする必要がなくなり、セキュリティリスクの低減にも繋がります。

Argo CDを選定した主な理由は以下の点です。

意思決定においては、GitOpsという新しい概念の導入に対する組織内の理解促進や、既存CIツールとの連携方法、学習コストなどが懸念点として挙がりました。これに対しては、少数のパイロットプロジェクトから開始し、段階的に適用範囲を広げるアプローチを取り、導入チームによるArgo CDのワークショップ実施やドキュメント整備で対応を進めました。

Argo CDを活用した具体的な導入プロセス

実際の導入では、まずアプリケーションのKubernetesマニフェストを、アプリケーションコードとは別のGitリポジトリ(またはモノレポ内の専用ディレクトリ)に集約しました。そして、CIパイプラインの最後にこのマニフェストリポジトリに対して、新しいイメージタグを含むマニフェストをコミット&プッシュする処理を追加しました。

次に、Kubernetesクラスタ内にArgo CDをインストールし、マニフェストリポジトリを監視対象として登録しました。Argo CDは定期的にリポジトリの状態をポーリングするか、Webhookを利用して変更を検知します。変更が検出されると、Argo CDは現在のクラスタの状態とGitリポジトリの理想状態を比較し、差分があればKubernetes APIを通じてクラスタの状態を自動的に理想状態に同期させます。

具体的なワークフローは以下のようになりました。

  1. 開発者がアプリケーションコードを変更し、CIでビルド、コンテナイメージを生成し、コンテナレジストリにプッシュ。
  2. CIパイプラインの終盤で、新しいイメージタグを反映したKubernetesマニフェストを生成または更新し、アプリケーションマニフェスト用Gitリポジトリにコミット&プッシュ。
  3. Argo CDがマニフェストリポジトリの変更を検知。
  4. Argo CDがKubernetesクラスタの現在の状態とGitリポジトリの理想状態(新しいマニフェスト)を比較。
  5. 差分があれば、Argo CDがクラスタに対して必要なAPIコールを実行し、アプリケーションをデプロイまたは更新。
  6. Argo CDのUIでデプロイ状況やアプリケーションのヘルス状態を確認。

このプロセスにより、CIとCDの役割が明確に分離され、CIはビルドとテスト、CD(Argo CD)はデプロイと状態管理に責務を持つようになりました。

導入によって得られた成果とコスト削減

Argo CDとGitOpsワークフローの導入は、期待以上の成果をもたらしました。最も顕著な効果は、運用効率の劇的な向上とそれによるコスト削減です。

具体的な成果は以下の通りです。

これらの成果を総合的に見ると、特に運用チームの人件費換算でのコスト削減効果、およびデプロイ失敗や障害によるビジネス機会損失の削減効果は非常に大きいものとなりました。特定のアプリケーション群においては、年間数百万円規模の運用コスト削減に繋がったと試算しています。

直面した課題と克服

導入プロセスにおいて、いくつかの課題にも直面しました。

これらの課題は、PoCを通じて技術的な実現性を確認し、小さく開始して徐々に適用範囲を広げるスモールスタート戦略、そして関係者間での継続的な情報共有と学習を通じて克服していきました。

まとめと今後の展望

Kubernetes環境におけるGitOpsとArgo CDの導入は、デプロイと運用管理のプロセスを根本から改善し、明確な効率化とコスト削減を実現する強力な手段となり得ます。Gitを核とした宣言的な管理は、システムの安定性を高めるだけでなく、監査性やロールバック容易性を向上させ、変化に強い開発・運用体制を築く基盤となります。

本事例から得られる示唆として、OSSを活用した効率化・コスト削減は、単に既存ツールの代替にとどまらず、GitOpsのような新しい運用思想を取り入れることで、より抜本的なプロセス改善と大きな成果に繋がるという点が挙げられます。

今後は、Argo CD Rolloutsによるカナリアリリースやプログレッシブデリバリーの実現、Argo CD ApplicationSetによるマルチテナント・マルチクラスタ管理の効率化など、Argo CDのより高度な機能を活用することで、さらなる運用効率化とコスト最適化を目指していく予定です。Kubernetes環境の運用課題に直面している組織にとって、GitOpsとArgo CDは検討に値する強力な選択肢となるでしょう。