ビットキー bitkey platform における Argo CD の導入と運用
株式会社ビットキー / おーたかこーたろー
メンバー / バックエンドエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 51名〜100名
| 利用プラン | ツールの利用規模 | ツールの利用開始時期 | 事業形態 |
|---|---|---|---|
OSS | 10名以下 | 2022年12月 | B to B B to C |
| 利用プラン | OSS |
|---|---|
| ツールの利用規模 | 10名以下 |
| ツールの利用開始時期 | 2022年12月 |
| 事業形態 | B to B B to C |
アーキテクチャ

アーキテクチャの意図・工夫
- 開発環境・ステージング環境・本番環境それぞれ構成は同じです
- 環境ごとに Google Cloud プロジェクトを用意しています
- 開発環境・ステージング環境・本番環境それぞれリリースサイクルを変えています
- 本番ミラー環境も Argo CD を用いて構築可能な状態としています
- 週に1度ミラー環境を構築・破棄していましたが、この自動化に対するコストが高かったのでやめました
導入の背景・解決したかった問題
導入背景
ビットキーの bitkey platform は認証認可およびスマートロックに欠かせないデジタルキーを管理する機能を提供しています。 我々は DevOps をすべて自分たちで行います。 運用を行う中でリリース作業に課題があったため Argo CD の導入を行いました。
ツール導入前の課題
マイクロサービスごとに Jenkins からスクリプトを用いて kubectl apply (helm update) を実行しデプロイしていました。デプロイ作業はスクリプトだけでなく手作業が必要な箇所もありました。(ときどきリリースに失敗して環境自体を破壊してしまうこともありました)このようなスクリプト管理も含め、リリースに対する認知コストが高い状況でした。
どのような状態を目指していたか
認知コストおよび管理コストが低いリリースおよびロールバックの構築を目指しました。 また、リリースやロールバックにかかる時間の短縮(実30分以内)も目指しました。
比較検討したサービス
- Jenkins による CIOps(既存)
- Argo CD による GitOps
- Flux による GitOps(実際に環境構築をして PoC を行ったわけではないです)
比較した軸
- デプロイ作業の認知コストを抑えられるか
- Web UI によってユーザーフレンドリーに扱えるか
選定理由
Argo プロジェクトが CNCF を Graduated となったことは後押しとなりました。 The Cloud Native Computing Foundation Announces Argo has Graduated
導入の成果
改善したかった課題はどれくらい解決されたか
- ツール導入前の課題は概ね解消されました
どのような成果が得られたか
- リリース時間が2時間から5分へ短縮されました
- リリーススクリプトの管理および手動リリース作業から解放されました
導入時の苦労・悩み
- (Argo CD を採択したことによる影響ではないですが) Argo CD の環境を本番に構築した際に Load Balancer ( Kubernetes Ingress ) の設定が一部削除されてしまい 404 エラーを引き起こしました
- 開発環境・ステージング環境では上記設定の運用を行なっていなかったため検証できていませんでした
導入に向けた社内への説明
上長・チームへの説明
Argo CD 導入後のリリース作業の変化について、必要な要件をもとに Argo CD を導入すれば解消できることを説明しました。
活用方法
- リリース作業時に Web UI にアクセスして操作しています
- 環境ごとに以下の使い分けを行っています
- 開発環境 … 自動シンクによりリリースしています(基本的に Web UI へアクセスはしません)
- ステージング環境 … 毎日手動シンクによりリリースしています
- 本番環境 … 週に1度手動シンクによりリリースしています
- ステージング環境へのリリースはデイリースタンドアップで実施しチームメンバーが誰でも操作できるように意識しています
- ロールバック時には Web UI により操作しています
よく使う機能
- シンク機能による GitOps ベースのリリース
- Web UI によるログの確認
- Web UI 操作によるロールバック
ツールの良い点
- GitOps が実現できます
- Web UI による直感的な操作ができます
- ロールバックが Web UI から簡単に実行できます
- リリースに関してベンダーロックインが避けられます
ツールの課題点
- 構築してしまえば Argo CD 利用に対する認知コストは低いが Argo CD 自体の管理・認知コストは高いです(いまだに使いこなせていない機能があります)
- 稀にアプリケーションがデプロイできなくなります
- 参考:Argo CD を stable で管理するということ
- デプロイができなくなった際には非カスケード削除などを活用してアプリケーションを作り直すなどして対応しています
- 参考: App Deletion
- kubectl port-fowrard による Argo CD へのログインだと不安定です
ツールを検討されている方へ
- チームトポロジーにおけるプラットフォームエンジニアリングチームが機能を提供するために Argo CD を採用するのは適していると思いますが、アプリケーション開発チームが運用改善のために Argo CD を採用するのは少々負荷が高い気がしています(ほかのサービスを利用して比較したわけではないです)
- コンテナデリバリーや manifest の更新は各自工夫をする必要があります
- App Of Apps Pattern を知っているとマイクロサービスの依存関係を意識したリリース順を制御できます
- Argo CD のリリースフローに合わせてフロントエンドのリリースも manifest 管理しようとすると複雑度が上がるのでやめた方がよいです
- 私が以前執筆したArgo CD に合わせたフロントエンドの DevOpsはアンチパターンのため、アンチパターンとしてご参考にしてください
- 現在はシンプルに CIOps でフロントエンドはリリースしています
今後の展望
ビットキーはメインクラウドとして Google Cloud にてプロダクトを運用しています。 今後、マルチクラウド対応が必要となった場合には Argo CD を活用しているため AWS や Azure AD に環境を構築するとなっても Argo CD を構築することが可能かと思っています。その際には Argo CD を採用していてよかったと感じるかもしれません。 一方で、現在のチーム状況やアプリケーション管理を考えるとそもそも Kubernetes で管理する必要があるのかということも考えています。それに伴い Argo CD からの脱却も視野に入れています。
株式会社ビットキー / おーたかこーたろー
メンバー / バックエンドエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 51名〜100名
よく見られているレビュー
株式会社ビットキー / おーたかこーたろー
メンバー / バックエンドエンジニア / 従業員規模: 101名〜300名 / エンジニア組織: 51名〜100名
レビューしているツール
目次
- アーキテクチャ
- 導入の背景・解決したかった問題
- 活用方法


