ArgoCD と GitOps は、技術的視点より:エピソード 12 のトピックです。このビデオでは、クリス・ライト (Red Hat CTO) と エド・リー氏 (Intuit 社 デベロップメントプラットフォーム チーフアーキテクト) が、DevOps と GitOps、ArgoCD オープンソースプロジェクトの誕生などについて話しています。

ところで GitOps とは一体何でしょうか。また、ArgoCD はどのように役立つのでしょうか。

GitOps とは

GitOps は、インフラストラクチャやアプリケーション設定の管理に使用される一連の DevOps プラクティスです。Git オープンソースバージョンの管理システムを「信頼できる唯一の情報源 (Single Source of Truth)」として使用し、多くの場合 Kubernetes と併用されます。

Kubernetes は、世界で最も一般的なオープンソースプロジェクトの 1 つで、ソフトウェアの管理方法に大きな変化をもたらしました。しかし、その過程で開発者や管理者は、新たな複雑性に直面することにもなりました。

Kubernetes クラスタやアプリケーションのデリバリーは宣言的に管理する必要があり、これが Kubernetes で GitOps の使用が促進される理由になっています。

システムでは、望ましい状態を宣言的に記述する必要があり、その望ましい状態に対するバージョン管理と変更不可の適用、自動プル、継続的な調整が行われます。このすべてを維持するのが GitOps です。

GitOps には、ワークフローの標準化、ツールセットの単純化、潜在的な変数とエラーの削減、開発者の生産性の向上など、数多くの利点があります。

しかし、Intuit 社が明らかにしたとおり、Kubernetes には GitOps 専用のエンタープライズ・ツールセットがないため、内部プロジェクトとして ArgoCD が開発されました。

ArgoCD とは

ArgoCD は Kubernetes コントローラーとして実装され、実行中のアプリケーションを継続的に監視し、ライブ状態が Git で定義された望ましい状態と一致することを確認します。アプリケーションのライブ状態が望ましい状態から逸脱する場合、ArgoCD は差異を報告し、ライブ状態を自動的に同期して望ましい状態に一致させます。さらに、「信頼できる唯一の情報源 (Single Source of Truth)」への変更をターゲット環境に自動的に適用できます。

簡単に言えば、ArgoCD は開発チームがアプリケーションのデプロイや管理に使用できる使いやすいツールであり、使用に際して Kubernetes について多くを学ぶ必要はなく、また Kubernetes システムへのフルアクセスも必要ありません。これを使用することで、Kubernetes でのアプリケーション実行プロセスは大幅に単純化され、最終的にはセキュリティの強化と開発者の生産性向上を実現できます。

ArgoCD の誕生秘話

Intuit 社は、Kubernetes 導入の決定に際して、組織内における DevOps の運用について明確にする必要があると考えました。DevOps の実施について考えると、単に開発者に Kubernetes クラスタへのアクセス権限を付与し、独自アプリケーションの立案と稼働を指示することは、適切ではないと思われました」とリー氏は語ります。

代わりに Intuit 社は、Kubernates のエキスパートにならなくても、開発者が安全に使用でき、即座に生産性を高めることができるツールセットと環境の構築を決定しました。こうして ArgoCD が誕生しました。

オープンソース化の理由

Intuit 社は、ArgoCD が業界共通の問題に対応していると考え、プロジェクトのオープンソース化を決定しました。同社は既に Argo と呼ばれる別のオープンソースプロジェクトを順調に立ち上げており、必然的に ArgoCD は Argo を補完するプロジェクトになると考えられました。当然ながら、ArgoCD のオープンソース化により、他のユーザーもプロジェクトへの貢献が可能になり、ツールのさらなる向上と開発につながりました。

Intuit 社は、オープンな環境下でコミュニティと共に開発することで、プロジェクトの幅が広がり、より完全なものになることを発見しました。なぜなら他のユーザーは、ツールのさらなるユースケースを具体化するために、時間とリソースを費やす意思があり、また費やすことが可能だからです。

ライトはこう述べます。「プロジェクトをより大きなコミュニティに対してオープンにすることは、論理的に見ても理にかなっています。なぜなら、問題に対してより多くの人が迅速に対処できるだけでなく、多様なコミュニティに根付く創造性と革新性も促進できるからです。自分が必要とするものを作ることで、さらなる革新や関連技術の躍進への道が開かれるかもしれません」

ArgoCD の次のステップ

ArgoCD プロジェクトでの取り組みの 1 つが Argo Rollouts です。これは、ブルーグリーン、カナリア、カナリア分析、実験、プログレッシブデリバリー機能などの高度なデプロイメント機能を Kubernetes に提供する、Kubernetes コントローラーおよびカスタムリソース定義 (Custom Resource Definition;CRD) です。

Argo Rollouts は、Ingress コントローラーおよびサービスメッシュとの統合を目的としており、更新時にトラフィックを新バージョンへ段階的に移行できます。これは、いくつかの制限により、規模もボリュームも大きい実稼働環境での使用でリスクが増加する、ネイティブの Kubernetes RollingUpdate ストラテジとは対照的な点です。

ビデオ全編の視聴

ArgoCD の詳細や、ライトおよびリー氏の対話をすべて確認する場合は、こちらからエピソード全編をご視聴ください。

詳細情報