Jump to section

GitOps とは

URL をコピー

GitOps は、Git リポジトリを信頼できる唯一の情報源として使用し、インフラストラクチャをコードとして提供します。登録されたコードは CI プロセスをチェックし、CD プロセスではセキュリティやコードとしてのインフラストラクチャ (IaC、Infrastructure as Code)、またはアプリケーションフレームワークに設定される境界線に関する要件がチェックし、適用します。コードの変更はすべて追跡されるため、アップデートが容易になると同時に、ロールバックが必要な場合のバージョン管理も可能です。

GitOps が提供するもの:

  • アプリケーション開発のための標準的なワークフロー
  • アプリケーション要件を事前に設定することによるセキュリティの向上
  • Git による可視化とバージョン管理で信頼性を向上
  • あらゆるクラスタ、クラウド、オンプレミス環境における一貫性

GitOps フレームワークの構築には、他にも多くのツールを併用できます。たとえば、git リポジトリ、KubernetesCI/CD (継続的インテグレーション / 継続的デリバリー) ツール、構成管理ツールなどです。

Kubernetes 上での継続的デリバリーのための GitOps アプローチ

詳細は、隔週木曜日午後 3 時 (米国東部標準時)、OpenShift.tv の GitOps Guide to the Galaxy でご覧ください

GitOps は、DevOps 文化に投資する人たちに約束された哲学とアプローチを採用し、その成果を実現し始めるためのフレームワークを提供します。年次レポートの「State of DevOps Report」によると、DevOps を実践している組織は、アプリケーションとコードの革新の速度および安定性に大きな改善を実現しています。 

GitOps は、開発者が慣れ親しんでいる Git ベースのワークフローを使用することで、アプリケーションの開発からデプロイ、アプリケーションのライフサイクル管理、インフラストラクチャの構成まで、既存のプロセスを拡張します。アプリケーションのライフサイクルを通じたすべての変更は、Git リポジトリで追跡され、監査が可能です。Git を使って変更を加えることができるため、開発者は運用チームによるリソースの割り当てや承認を待つことなく、自分のペースでコードを書くことができるようになります。

運用チームにとっては、変更が可視化できれば、問題を迅速に追跡し再現でき、全体的なセキュリティを向上させることができます。最新の監査証跡があれば、企業は不要な変更のリスクを低減させ、プロダクションでの稼動の前に修正することができます。 

このように、開発から実稼働に至るまでのコードの変更により、組織はビジネスや競争環境の変化に俊敏に対応できるようになります。

Kubernetes ネイティブの統合 GitOps CI/CD ワークフローの活用方法 (動画)

GitOps を始めるには、宣言的に管理できるインフラストラクチャが必要です。このため、GitOps は Kubernetes およびクラウドネイティブ・アプリケーション開発のオペレーティングモデルとしてよく使用され、Kubernetes の継続的デプロイメントを可能にします。

しかし、Kubernetes を使用することは GitOps の要件ではありません。GitOps は、他のインフラストラクチャおよびデプロイメント・パイプラインにも適用できる手法です。   

Kubernetes と同様に、Ansible は、従来の IT システムを宣言的にモデリングできる望ましい状態のエンジンであるため、GitOps に使用することができます。Ansible ユーザーは、Ansible モジュールを使用して、コントロールプレーンから Kubernetes、既存の IT インフラストラクチャ、またはその両方でアプリケーションを管理できます。

GitOps を使用して、開発パイプラインの構築、アプリケーションのコーディング、構成の管理、Kubernetes クラスタのプロビジョニング、Kubernetes またはコンテナレジストリへのデプロイメントを行うことができます。

Ansible と Red Hat Ansible Automation Platform の違いとは?

Red Hat® OpenShift® は、管理者が GitOps の原則を使用して構成と管理を行える宣言型 Kubernetes プラットフォームです。Kubernetes ベースのインフラストラクチャとアプリケーション内で作業することで、クラスタと開発ライフサイクル全体に一貫性を適用できます。Red Hat OpenShift は、オンプレミスおよびパブリッククラウド・リソースに分散されたアプリケーションの管理を統合し、以下を実行します。

  • クラスタが同様の状態 (構成、監視、ストレージ) であることを確認し、開発サイクルの早い段階でアプリケーションの制約を把握する。
  • クラスタを既知の状態から回復させることで、複数のクラスタにまたがるコードの変更をロールバックする。
  • Git に提出された変更を複数の Red Hat OpenShift クラスタにロールアウトする。
  • テンプレート化された構成をハイブリッドクラウド全体で関連付ける。

 

GitOps Red Hat OpenShift Kubernetes diagram
 

Red Hat は ArgoCDTekton といったオープンソース・プロジェクトと協力し、GitOps のためのフレームワークを実装しています。Red Hat OpenShift Pipelines の Operator をインストールして、既存の Red Hat OpenShift デプロイメント内で GitOps を管理するために Red Hat OpenShift GitOps Operator が Argo を使用して新しいツールを開発する方法を確認できます。

Red Hat OpenShift GitOps Operator の仕組み (動画)


Red Hat Advanced Cluster Management for Kubernetes は、Kubernetes クラスタのライフサイクルのマルチクラスタ管理を提供します。Red Hat Advanced Cluster Management は、サブスクリプションとチャネルのフレームワークを配置ルールとともに使用して、複数のクラスタにわたって希望の状態モデルでアプリケーションを自動的に配置します。


Red Hat Ansible Automation Platform® は、現在の状態に関係なく、システムを望ましい状態にする作業を行います。YAML で作成される Ansible Playbook は、システムの望ましい状態を記述します。これらは通常、ソース管理で保持されます。 

Ansible Automation Platform を使用すると、Kubernetes に加えて、ネットワーキング、クラウド、ベアメタルなどの従来の IT システムに GitOps プラクティスを適用できます。Automation Webhook は Ansible Automation Platform に組み込まれており、IaC および GitOps プラクティスをサポートします。Webhook を使用すると、Git リポジトリと Ansible Automation Platform をネイティブにリンクできます。リポジトリリンクが設定されると、Ansible Automation Platform は Git システムから Git コミットを取得し、それらのイベントを使用して自動化ジョブをトリガーし、プロジェクトを更新してインベントリーを管理し、デプロイメントを実行します。

Red Hat Advanced Cluster Management、Red Hat OpenShift GitOps、Red Hat Ansible Automation Platform の統合により、DevOps チームは、CI/CD パイプラインを改善するために構成を大規模に管理および維持することができます。

Red Hat OpenShift GitOps を今すぐ使い始めるには

 

GitOps は、インフラストラクチャ構成のバージョン管理システムとして Git を使用する IaC (Infrastructure as Code) における進化と見なすことができます。IaC は多くの場合、システムの望ましい状態を定義してシステムの実際の状態を追跡することにより、インフラストラクチャ管理への宣言型アプローチに従います。

IaC と同様に、GitOps ではシステムの望ましい状態を宣言的に記述する必要があります。宣言型ツールを使用することで、すべての構成ファイルとソースコードを Git でバージョン管理できます。

CI/CD パイプラインは通常、コードがリポジトリにプッシュされるなどの外部イベントによってトリガーされます。GitOps ワークフローでは、Git リポジトリの状態を修正するプルリクエストを使用して変更が行われます。 

GitOps ワークフローを使用して新しいリリースをロールアウトするには、Git でプルリクエストを行います。それにより、クラスタの宣言された状態に変更が加えられます。GitOps パイプラインとオーケストレーション・システムの間に位置する GitOps オペレーターは、Git からコミットを取得して新しい状態の宣言をプルします。  

変更が承認されてマージされると、ライブ・インフラストラクチャに自動的に適用されます。開発者は、標準のワークフローと (CI/CD) のプラクティスを引き続き使用できます。

Kubernetes で GitOps を使用する場合、オペレーターはたいてい Kubernetes Operator になります。オペレーターは、リポジトリ内の望ましい状態を、デプロイされたインフラストラクチャの実際の状態と比較します。そして、実際の状態とリポジトリ内に存在するものの間に違いが見られるたびに、インフラストラクチャを更新します。また、コンテナ・イメージ・リポジトリを監視し、同じ方法で更新を行って新しいイメージをデプロイすることもできます。

GitOps においては、可観測性、つまりシステムが観察可能であることが重要な概念となります。GitOps の可観測性により、望ましい状態と観測された状態 (または実際の状態) が同じであることを確認できます。

プルリクエストと Git のようなバージョン管理システムを使用すると、デプロイメントプロセスに可視性がもたらされます。システムに加えられた変更を表示および追跡し、監査証跡を提供し、何かが壊れた場合には変更をロールバックすることができます。

GitOps ワークフローは、システムの安定性と信頼性を向上させながら、生産性と開発およびデプロイメントの速度を向上することができます。

GitOps と DevOps の原則と目標には一部共通点があります。DevOps は文化的な変化に関するものであり、開発チームと運用チームがコラボレーティブに連携する方法を提供します。

GitOps は、コラボレーション、CI/CD、バージョン管理などの DevOps プラクティスを採用し、それらをインフラストラクチャの自動化とアプリケーションのデプロイメントに適用するためのツールとフレームワークを提供します。開発者は既知のコードリポジトリを使って作業し、運用担当がその他の必要なものを導入します。

関連資料

ブログ

Red Hat OpenShift Pipelines と OpenShift GitOps の一般提供開始

Red Hat OpenShift Pipelines と OpenShift GitOps は、Red Hat OpenShift Container Platform 上でのクラウドネイティブな CI/CD と GitOps の基礎となります。

記事

CI/CD とは

CI/CD によって、統合およびテストのフェーズからデリバリー、デプロイメントに至る、アプリケーションのライフサイクル全体を通じて、継続的な自動化と継続的な監視が導入されます。

ブログ

Red Hat Advanced Cluster Management での GitOps を理解する

GitOps が複数のクラウドにまたがってより多くのアプリケーションをデプロイするためにどのように役立つかをご覧ください。

DevOps の詳細はこちら

製品

Red Hat のエキスパートによる徹底的かつ集中的な研修。アジャイルの方法論とオープンソースツールを使用して、社内業務の課題に対処する方法について学びます。

Red Hat の戦略的アドバイザーが、企業組織の全体像を把握しながら課題を分析し、包括的かつコスト効率に優れたソリューションで課題を解決できるようお手伝いします。

リソース