2022年5月31日

DevOps

5つのGitOpsの誤解を解く

GitOpsはまだ新しいものですが、非常に大きな利点があります。GitOpsにまつわる誤解をいくつか見てきました。今日はそれらを解明しましょう。

62d0ef385f70f408d2d80320_01.-Design_Blog-header-24.png

ソフトウェア開発やデプロイをできるだけ簡単にするために、企業がクラウドネイティブ技術を採用し始めると、新しいアプローチが登場しました。その中でも特に注目されているアプローチがGitOpsです。Kubernetesがコンテナーオーケストレーションの標準ツールになりつつある中、GitOpsはKubernetes関連のデプロイメントを行うためのデフォルトアプローチとして人気を集めています。GitOpsはまだ新しいものですが、非常に大きな利点があります。さらに、GitOpsの誤解がいくつか広まっているようなので、今日はそれを解消していきましょう。

1. GitOpsは単なるバズワード

2009年にDevOpsという言葉が生まれたとき、それは単なるバズワードの一つに過ぎないように思えました。しかし、この10年の間に、地球上のほぼ全ての企業がDevOpsの原則を取り入れ、ソフトウェアデリバリープロセスのスピードアップという目標を達成したいと考えている現実を目の当たりにしているのです。DevOpsを取り上げたのは、話題になるに値する用語の良い例であり、GitOpsは全てDevOpsであるため、さらに話題性があるからです。GitOpsを単なるバズワードとみなしたがる人もいますが、なぜそれが誇大広告に値するのかを探ってみましょう。

GitOpsは既に驚異的な受け入れを誇ります。5月に開催されたKubecon EU 2021では、GitOpsのトピックへの関心が非常に高く、CD Conference(CNCFが運営)がGitOps Conferenceを別に立ち上げる必要があったほどです。

また、2021年のDORAレポートの調査結果では、GitOpsのアプローチと原則が、トップパフォーマンスを発揮するチームに不可欠であることが明らかになりました。2021年に開催されたGitOpsを中心としたバーチャルカンファレンス「ArgoCon」は、多くの優秀なスピーカーと世界中の参加者を集め、大成功を収めました。さらに、昨年は「GitOps」というキーワードの検索関心度が飛躍的に高まりました。

62d0ef379db3ddb3adfc783d_image-35.png

出典:Keywords Everywhere

クラウドコンピューティングのリーダーとして広く尊敬を集めているKelsey Hightower氏は、「GitOpsはConfiguration as Code以来の最高のものだ」とツイートしています。最後に、昨年のAWS Container Security Surveyでは、回答者の64.5%が既にGitOpsを採用していることが明らかになりました。これらは、GitOpsが単なるバズワードではなく、ソフトウェア界を支配するためにここにとどまることを意味しています。

2. GitOpsはKubernetes関連のデプロイメントにのみ適用される

これは、GitOpsの誤解の中でも群を抜いて大きなものです。GitOpsは、Kubernetes関連のデプロイメントに限ったものではありません。GitOpsは、Kubernetesからクラウドベンダーまで、あるいは手打ちのシェルスクリプトまで、あらゆるインフラ自動化タイプのワークフローに適したアプローチです。インフラの自動化とアプリケーションのデプロイの両方をGitOpsで行うことができるのです。さらに、GitOpsはTerraformのような宣言型テキスト形式をインフラとするものにも適用することができます。

GitOpsとKubernetesは永遠の親友のようなもので、相性が良いのですが、お互いになくても存在できます。GitOpsの中核となる原則、つまり真実の唯一の情報源としてGitを維持することで、このアプローチはどんなワークフローにも適用できます。

3. GitOpsとDevOpsは同じである

DevOpsは文化的な現象です。DevOpsは、コラボレーションを強化し、サイロを排除することによって、開発チームと運用チームの間のギャップを埋めるためのアプローチです。GitOpsは、DevOpsのサブセットとみなすことができ、Gitを信頼できる唯一の情報源として使うことによって、開発者と運用者の間のコラボレーションを促進します。DevOpsに該当するツールは数多くありますが、Gitもその一つです。簡単に言えば、GitOpsはアプリケーションのデプロイを効率化するものです。

DevOpsとGitOpsを区別しても意味がありません。DevOpsの道を歩む企業だけが、開発プロセスの充実と強化のためにGitOpsを受け入れていることが既に分かっているからです。このようにまとめることができます。全てのGitOpsはDevOpsですが、全てのDevOpsがGitOpsというわけではありません。

4. GitOpsはGitの使い方の全て

GitOpsは単なるGitではありません。もしそうなら、私たちは皆、既にGitOpsを実践しているはずです。GitOpsでは、全ての設定ファイルとアーティファクトはソースコントロールリポジトリーに保存されます。実際の状態と望ましい状態をスキャンするために、クラスター内でエージェントのようなシステムをホストするCDツールが必要です。開発者によるコミットでドリフトや変更が起こるたびに、エージェントはこの変更を検出し、状態を均等に保つためにそれらをプルします(実際の状態と望ましい状態)。

GitOpsはGitを超えるものです。信頼できる唯一の情報源、宣言的記述、ドリフト/差異の検出、プルリクエストによる変更、自動的な変更承認など、確固たる原則に基づいて機能します。

5. GitOpsはPushとPullの両方のモデルで行われる

GitOpsは、前述したようにGitを使うことが全てだと考えているため、一部の人に誤解されています。また、CI/CDは既にGitOpsモデルを使っていると考えている人もいますが、これも間違いです。CI/CDはプッシュモデルを採用しており、開発者はソースコード管理システム(SCM)にコードをプッシュし、それがCIサーバーのトリガーとなってテストとビルドが行われます。そして、アプリケーションのDockerイメージが作成され、Dockerレジストリーにプッシュされます。

全てはプッシュプロセスから始まりますが、これはGitOpsの基本原則の一つに反しています。GitOpsでは、セキュリティー上の理由から全ての変更はプルモデルで行われます。プル型のアプローチは、外部のクライアントがクラスタにアクセスできないため安全であり、内部から来る全てのアップデートが信頼できるため、好まれます。プッシュベースのアプローチは、クラスターの認証情報がビルドシステム内にあるため、推奨されません。

おわりに GitOpsの誤解を解こう

GitOpsはまだ新しく、進化しています。クラウドネイティブの領域を破壊する可能性を秘めています。もしあなたがKubernetesを採用する予定があり、しっかりとしたソフトウェアデリバリーの目標があるのなら、インフラやアプリケーションのデプロイを自動化するだけでなく、ワークフローにGitOpsを導入するようにしましょう。

開発者と企業の両方が、コラボレーションの強化、シンプルなワークフロー、安定性の向上、コンプライアンス、インフラとデプロイメントの自動化による回復力といった、GitOpsの付加的な利点を高く評価しているのです。

上記で挙げたGitOpsについての真実が、あなたのGitOpsの旅を正しい方向へ導いてくれることを願っています。今すぐ無料のHarness GitOpsベータ版にサインアップするのを忘れないでください。


この記事はHarness社のウェブサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです。

Harnessに関するお問い合わせはお気軽にお寄せください。

お問い合わせ