2022年3月21日

DevOps

Continuous Integration

Continuous Delivery

GitOps:DevOps界の新入り!

GitOps:真実の唯一の情報源、as codeの伝道者、CI/CD自動化の実現者。GitOpsの早分かりをどうぞ!

gitops new kid devops block.webp

長年にわたり、ソフトウェア開発の方法論は、ウォーターフォールモデルからアジャイル、そして今日私たちがDevOpsと呼ぶものへと変化してきました。これらの方法論は主に文化的な側面に焦点を当てていますが、いずれも強力なツールやテクノロジーに支えられており、以前よりも作業が容易になりました。DockerとKubernetesがコンテナ化を容易にすることでDevOpsの採用を促進したように、私たちは今、GitOpsがGitを中心としたアプローチで人気を博しているのを目撃しています。

 

この記事では、GitOpsを探求していきます。なぜ使われるのでしょうか。どのように機能するのでしょうか。

なぜGitOpsなのか

今日、多くの企業が、インフラストラクチャーとアプリケーションをバージョン管理するこの新しい手法を採用しています。GitOpsは、エンジニアリングチームが問題により早く対応して修正を迅速に行うことを支援し、よりアジャイルなデプロイメントを実現します。特筆すべき利点は、全ての変更履歴を追跡できるため、デバッグやロールバックが容易になることです。また、より迅速に変更を加えることができ、デプロイメントプロセス中に自分が何をしているかを他の人に知らせることで、コラボレーションを向上させることができます。さらに、デプロイは、何か問題が起きたときに簡単に元に戻すことができます。

 

GitOpsでは、分からないことやうまくいかないことがあっても、複雑なログを調べて問題をデバッグする必要はありません。コミット履歴を見れば全てが一目瞭然ですし、以前に知られていた安定版リリースにロールバックすることも可能です。

 

GitOpsは、デリバリーパイプラインの中心にGitを活用することで、複雑さを軽減しています。開発者は真新しいツールを学ぶ代わりに、Gitコマンドの知識を活用することができます。

どのように機能するのか

多くの組織が新機能のリリースに苦労しているのは、ダウンタイムの増加や開発者の意欲に影響する複雑なリリースプロセスが原因です。デプロイに何時間も要する何百もの機能を一晩でデプロイできても解決にはなりません。GitOpsは、そのようなデプロイを管理するために、必要な力仕事を自動化し、誤操作をなくすための方法です。

 

GitOpsの中心的な考え方は、プロジェクトのコードをGitリポジトリー(アプリケーションコード、ファイル、依存関係、マニフェストなど)に保管し、リポジトリーの状態をKubernetesクラスターの状態と同期させることです。これを成功させるためには、エージェントがマニフェストファイルの変更や開発者による新しいコードのプッシュを追跡します。エージェントは、何が変更されたかを確認し、期待される/望ましい状態に一致するように同期させることができます。

 

GitOpsは、プッシュとプルの2つのモデルで動作します。プッシュ型は、CI/CDツールが変更を本番環境にプッシュする方法です。プルベースの方法では、全てのクラスターにエージェントがインストールされる必要があります。エージェントが変更を追跡し、必要な構成と不一致があるたびにそれをプルします。FluxCD、Argo CDJenkins Xは、GitOpsの分野を切り開いた三大プラットフォームです。

 

アプリケーションの全コードを格納したGitリポジトリーと、適切に設定されたCIパイプラインがあると仮定しましょう。開発者が新しいコードをGitHubにプッシュすると、それが検証され、CIサーバーが指定されたテストを実行して全てが良好であるかどうかをチェックしてビルドします。次に、コンテナイメージが作成され、イメージレジストリーにプッシュされます。新しい変更はGitオペレーターによってプル/ピックされ、現在の状態と希望する状態が一致するかどうかスキャンされます。もし現在の状態と希望する状態とが一致しない場合は、希望する状態を維持するためにプロビジョニングが行われます。最後に、デプロイが行われます。

GitOpsとDevOpsの違いとは

DevOpsもGitOpsも、核心としてはソフトウェアのデプロイを容易にすることを推進していますが、運用方法にはそれぞれ違いがあります。両者の比較を見てみましょう。

 

  • GitOpsは、DevOpsの自動化原則に適合しています。GitOpsは、企業がソフトウェアを頻繁に、かつ迅速に、段階的にデプロイすることを支援します。
  • DevOpsが開発者と運用者の間のサイロを壊すことに重点を置いているのに対し、GitOpsは運用者のインテリジェント化と自動化に重点を置いています。
  • DevOpsはプッシュ型のアプローチでCI/CDの自動化を推進しますが、GitOpsはプル型のアプローチで継続的デリバリーを主に推進します。
  • DevOpsは、デプロイメントに宣言的アプローチと命令的アプローチの両方を含みますが、GitOpsは宣言的なIaCを可能にします。
  • GitOpsは、主要なツールとしてGitに集中的に焦点を当てています。これに対して、DevOpsはツールには焦点を当てません。その代わり、開発部門と運用部門のコラボレーションを促進するために、文化的な側面に焦点を当てます。
  • GitOpsは、GitやKubernetesなどのツールを使ってデプロイを容易にするため、より開発者中心になる傾向があります。これに対し、DevOpsは組織横断的な方法論であるため、特定のツールで説明することはできません。
  • DevOpsの範囲は、CI/CDやソフトウェア配信の正しさだけに留まりません。これに対してGitOpsは、ソフトウェアを正しい方法で継続的にデリバリーすることに主眼が置かれています。

結論

GitOpsを見ると、多くの利点があることが分かります。開発者とDevOpsエンジニアがソフトウェアのデリバリープロセスを自動化するのに役立ちます。ソフトウェアを開発からテスト、ステージング、そして最終的に本番へと移行させることで、これを実現します。開発者はすでにこのアプローチを気に入っており、クラウドネイティブの領域でGitOpsの人気が高まり続けるように思われます。

 

今日のGitOpsの1つの懸念点は、組織が標準的なアプローチとして使用できるような、本格的なエンドツーエンドのツール/プラットフォームがないことです。そこでHarnessでは、GitOpsを実現するために、高度なCIおよびCD機能を備えたHarness GitOpsを発表しました。Harness GitOpsをご自身でお試しください!


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

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

お問い合わせ