この記事は、CYBOZU SUMMER BLOG FES '25の記事です。
はじめに
こんにちは。クラウド基盤本部の野島です。
サイボウズの Kubernetes 基盤では Argo CD が標準的なデプロイツールとして使われています。 Argo CD は Kubernetes 向けの GitOps ツールであり、Git リポジトリに保存されたマニフェストファイルと Kubernetes クラスタの実際の状態を継続的に同期し、宣言的な設定管理を実現します。
私達にとって Argo CD は非常に重要なツールですが、そのシンプルさゆえに、チュートリアルから本番運用までのギャップが大きいように感じています。 実際のサービスをデプロイする際には、マニフェストのテンプレート化や複数環境(dev, staging, prod)への対応など、考えなければならないことが多くあります。 そこで、そのギャップを埋めるべく、Argo CD を基礎から実践まで段階的に学べるハンズオン資料を作成しました。
この資料はサイボウズ社内で数年間研修資料として使われてきましたが、この度外部に公開することにしました。
この記事では、公開したハンズオン資料について紹介します。
ハンズオン資料について
今回公開したハンズオン資料は、以下のリンクで参照できます:
資料の構成
ハンズオン資料は、Argo CD を全く知らない人を対象に、導入から応用までを段階的に学べるようにしています。
最初は単純な Web サーバーをデプロイするところから始まり、要件を徐々に追加していきます:
- GitHub 上で Web サーバーのソースコードを更新したときに、自動的に Kubernetes クラスタ上の Web サーバーを更新する。
- dev, staging, prod の3つの環境に異なる設定で Web サーバーをデプロイする。また、dev → staging → prod と段階的にリリースする。
- Application リソース自体も Argo CD で管理する「app-of-apps」パターンを導入し、手動オペレーションを最小限に抑える。
最後まで進むと、Argo CD を使って Web サービスを本番環境にデプロイできる知識が身についているはずです。
このハンズオンはすべてのステップを手元のマシンで実行できるようにしています。 外部の Kubernetes クラスタやコンテナレジストリなどを用意する必要はありません。 ただし、GitHub は使うのでそのアカウントは必要です。
この資料では、単に Argo CD の機能を機械的に説明するのではなく、なぜこのような設計にするのかを各ステップで説明したつもりです。 各ステップで jsonnet を導入したり TLAs を使ったり app-of-apps を導入したりと様々な工夫をしますが、これらがどのような要件から生じているのかを知ることで、新たな要件と遭遇したときも応用が効くのではないかと考えています。
注意点
このハンズオン資料で紹介している手法は、あくまで一例です。 サイボウズ社内では、より複雑な要件に対応するために異なる手法を採用しているチームもあります。 ただし、今回紹介した手法があなたのサービスに使えなかったとしても、考える土台にはなるのではないかと思っています。
また、このハンズオンは Argo CD の機能を網羅的に説明する資料ではありません。 このハンズオンでは説明していない機能が数多くあります。 興味を持った方は、公式ドキュメントを参照してみるとよいでしょう。
おわりに
Argo CD は GitOps を実践する上で非常に強力なツールです。 今回公開したハンズオン資料が、Argo CD を学び始める方々の一助となれば幸いです。