2022年4月5日
DevOps
GitOpsをご検討中ですか?この投稿では、GitOpsを始めるときに実践できるベストプラクティスを紹介します。
GitOpsは、自動化、コンテナ化、オーケストレーション技術の助けを借りて本番環境を管理する、比較的新しいアプローチです。GitOpsの背後にある考え方は、コードを本番環境にプッシュする前に、必要なインフラストラクチャーコンポーネントを全て稼働させておくことです。このような自動デプロイメント技術により、全ての変更が予測可能な方法でデプロイされます。しかし、誰もがこの新しいアプローチを経験しているわけではありませんし、それがどのように機能するのかさえ理解していません。そこで、より良い成果とより生産的なコラボレーションのために、この新しいアプローチを始めるのに使える GitOps のベストプラクティスを6つ紹介します。
GitOpsは、ソフトウェアの管理やデプロイのた めの新しい手法です。Gitだけでなく、ワークフロー全体が対象です。GitOpsは、より信頼性が高く、再現可能で、効率的なソフトウェアをデプロイするのに役立つ一連のプラクティスです。GitOpsは比較的新しいので、その機能の仕組みや、あなたのチームでどのように役立つかを理解するのは難しいかもしれません。基本的には、全てのマニフェストファイルを保存するためのGitと、アプリケーションをデプロイするためのKubernetesが含まれます。企業は、予測可能な方法でアプリケーションをデプロイするために、DevOps以外に目を向ける必要があります。車輪の再発明ではなく、GitOpsは基本的にGitのようなシンプルなツールを使ってデプロイメントを管理することです。
GitOpsを使えば、開発者の時間と労力を活用し、開発者が重要なことに集中できるようになります。例えば、多数のツールを理解し、カスタムスクリプトで互いに接続し、それらを動作させるのではなく、顧客が求める豊富な機能に取り組むことができるようになるのです。あなたのソフトウェアデリバリーアプローチを自動化することができるGitOpsは救世主です。GitOpsは、開発者を運用に迎え入れ、開発者がインフラストラクチャーチームの重要な一員であることを認識します。
GitOpsのもう1つの重要な利点は、アプリケーションスタック全体をより可視化し、より大きな自動化を実現することで、デプロイ時間の短縮につながることです。
このモデルの主なメリットを一言で言うと、次のようになります。
早くからDevOpsの原則を採用してきた企業にとっては、GitOpsは既にやっていたことの発展形かもしれません。しかし、これからGitOpsを始める人にとっては、小さく始めてそこから積み上げていくのが一番です。
GitOpsを前進させるための最初のステップに本当に感謝します。あなたは正しく素晴らしい道を歩んでいます。この旅を続ける前に、あなたがGitHubのよう なソース管理システムでコードをホストしていること、そしてあなたの目標の1つがKubernetesでのデプロイであることを確認しておいてください。あなたのワークフローに既にKubernetesが採用されていることを確認してください。
次のステップは、GitOpsで企業の目標を達成するのに役立つツール/プラットフォームを特定することです。そして、選択したツールをワークフローの範囲内でどのように連携させるかを決定します。各フェーズを一歩ずつ進めながら、全てを文書化しましょう。将来的には、この方法を再現したり、この手順を他の人と共有したりして試してみるのもよいでしょう。ドキュメントを作成することで、他の人があなたのやっていることを理解し、GitOpsがどのように機能するのかを理解できるようになります。ここから、いよいよデプロイです!
GitOpsはエキサイティングです。以下のシンプルで実行可能な要素を考慮すれば、始めるのはずっと簡単です。
GitOpsを機能させるには、組織全体が正しいマインドセットを持つ必要があります。残念ながら、企業がGitOpsを使い始めたときに犯す最大の失敗の1つは、GitOpsを導入しておいて、プロセスに関わる全員になぜそれをやるのか、最終目標は何なのかを理解させないことです。小さなことに思えるかもしれませんが、このステップをおろそかにすると失敗につながります。
例えば、あなたのチームで20人が働いていて、5人が自動化スクリプトを実行する責任者だとしましょう。この5人がGitOpsの本当の意味を知らなければ、自動デプロイを成功させることはできないでしょう。これは、フラストレーションやミス、そして多くの時間の浪費につながります。開発者向けに定期的にトレーニングセッションを開き、組織で正しい方法でGitOpsを行う方法を説明し、全員が共通認識を持てるようにしましょう。
GitOpsがあなたの組織に適していることを確認したら、徐々に飛躍していくときです。自動化、オーケストレーション、コンテナ化技術に関する経験が既にあるかどうかに関わらず、GitOpsは小さく始めることが一番です。複雑な環境から始めて、全てを自動化しようとする必要はありません。その代わり、継続的デリバリーやデプロイの自動化など、GitOps の基本的なプラクティスを導入しましょう。
任意のクラウドプロバイダー上にシンプルなKubernetesクラスターをセットアップし、Gitリポジトリーをインフラと同期させ、まずはシンプルなNginxサーバーをデプロイしてみましょう。こうすることで、物事がどのように動くかを学ぶことができます。
GitOpsを活用する目的の1つは、デプロイの自動化です。これは、あなたが書いたスクリプトやコードが、人手を介さずに変更を自動的にデプロイすることを意味します。その結果、コードの変更や更新を本番環境に反映させるための、より再現性の高い、信頼性の高い、予測可能な方法となります。CI/CDツールは、他のどの方法よりも、この自動化を実現します。しかし、始める前に、これらのツールがどのように動作し、どのような種類のタスクができるのかを理解した上で、自動化を行う必要があります。CI/CDツールの中には、デプロイの自動化に重点を置いているものもあれば、デプロイに重点を置いていないものもあります。しかし、設定やコンパイルなど、健全なGitOpsワークフローに不可欠な多くの作業を自動化することはできます。
継続的デリバリーは、GitOpsの基本的なコンセプトの1つです。この考え方は、常にデプロイ可能で新しいコードのリリースをサポートできる本番環境を用意することです。継続的デリバリーは、新しい機能が完成したらすぐにデプロイされることを認識しながら、新しい機能をより速く開発するのに役立ちます。Harness CDのような強力なツールは、この作業をシームレスに行うことを支援します。開発チームは、自分たちのコードを何度でも本番環境にデプロイすることができ、他の誰にも影響を与えません。さらに、新しい変更をプッシュするたびに、他の全ての変更が自動的にロールバックされるため、ダウンタイムやサービス停止が発生する心配もありません。
組織でGitOpsの実装をより成熟させるには、特定の事柄を標準化して全員が同じ認識を持つようにする必要があります。重要な注意点の1つは、クラスターやインフラの変更を強制する方法です。次に、GitOpsのプル型とプッシュ型のどちらの手法を活用するかを決めることです。ベストプラクティスは、main/masterブランチに直接何かをプッシュしないことです。その代わり、プル型を採用することを強くお勧めします。プルリクエストは、ワークフローを通じて変更を体系的かつ安全に進めるためのアプリケーションとして機能します。また、人の手を介さずに繰り返し行える作業を自動化することにも注意が必要です。
GitOpsはかなり新しいかもしれませんが、その知名度は上がってきています。多くの組織は、この手法からどのような利益を得られるか実験することを好みます。しかし、学習曲線が単純であるため、今後数カ月のうちに、光速のソフトウェアデリバリーのための有力な手法となることは間違いないでしょう。GitOpsの夢を実現するためのツールやプラットフォームを考えることも重要です。FluxCD、Argo CD、Jenkins Xなどの著名なツールは、GitOpsのセットアップを容易にし、ソフトウェアのデプロイをより速くするものです。また、オープ ンソースのArgo CD GitOpsアプローチを持つHarnessのようなプラットフォームもあり、高いセキュリティ、可視性、高度なダッシュボードなどの利点も加わって、GitOpsを簡単に実現することができるのです。
GitOpsは、そのシンプルさ、セットアップの容易さ、そして学習曲線の短さから、間違いなく世界中の開発者の憧れの的となりつつあります。GitOpsは、DevOpsの拡張版と考えることができます。GitOpsはまだ新しいアプローチですが、既に開発者コミュニティーの間で大きな人気を博しています。
GitOpsは、開発者が機能の開発やアプリケーションの作成に集中できるよう支援します。インフラストラクチャーの設定や複雑な運用関連のタスクを管理する開発者の時間を削減します。GitOpsは、Argo CD、FluxCD、Jenkins X、Harnessのようなシンプルなツールで実現可能です。一度試してみてください。きっと気に入るはずです。
Harness GitOpsベータ版への参加を希望される方は、フォームに必要事項をご記入くだ さい。
この記事はHarness社のウェブサイトで公開されているものをDigital Stacksが日本語に訳したものです。無断複製を禁じます。原文はこちらです。