ログイン / 登録 アカウント
Jump to section

GitOps とは

URL をコピー

GitOps は、オープンソースのバージョン管理システムである Git を使用して、インフラストラクチャとアプリケーションの構成を管理するための一連のプラクティスです。GitOps は、Git を宣言的インフラストラクチャおよびアプリケーションの一元化ソースとして使用して機能します。

GitOps は、Git プルリクエストを使用して、インフラストラクチャのプロビジョニングとデプロイメントを自動的に管理します。Git リポジトリにはシステムの全体の状態が含まれているため、システム状態の変更の追跡情報が表示され、監査可能になります。

GitOps は開発者の経験に基づいて構築されており、チームはソフトウェア開発に使うのと同じツールやプロセスを使用してインフラストラクチャを管理できます。Git 以外にも、GitOps では必要なツールを選択できます。

GitOps という語は Weaveworks が最初に提唱しました。

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

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

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

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

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

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

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

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

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

Kubernetes で GitOps を使用する場合、オペレーターはたいてい Kubernetes Operator になります。

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

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

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

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

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

GitOps は、コラボレーション、CI/CD、バージョン管理などの DevOps プラクティスを採用し、それらをインフラストラクチャの自動化とアプリケーションのデプロイメントに適用するためのツールとフレームワークを提供します。 

開発者はすでに知っているコードリポジトリで作業し、運用者がその他の必要なものを導入します。

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

Red Hat OpenShift GitOps は Red Hat OpenShift のアドオンで、Argo CD などのツールを提供し、チームがクラスタ構成やアプリケーション提供のための GitOps ワークフローを実装できるようにします。 

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

Ansible Automation Platform を使用すると、Kubernetes に加えて、ネットワーキング、クラウド、ベアメタルなどの従来の IT システムに GitOps プラクティスを適用できます。Automation Webhook は Ansible Automation Platform に組み込まれており、IaC および GitOps プラクティスをサポートします。 

Webhook を使用すると、Git リポジトリと Ansible Automation Platform をネイティブにリンクできます。リポジトリリンクが設定されると、Ansible Automation Platform は Git システムから Git コミットをキャッチし、それらのイベントを使用して自動化ジョブをトリガーし、プロジェクトを更新してインベントリーを管理し、デプロイメントを実行します。

さらに詳しく

記事

CI/CD とは

CI/CD とは、アプリケーション開発のステージに自動化を取り入れて、顧客にアプリケーションを提供する頻度を高める手法です。CI/CD から発生した主なコンセプトは、継続的インテグレーション、継続的デリバリー、継続的デプロイメントです。

記事

IaC (Infrastructure as Code) とは

IaC (Infrastructure as Code) は、手動のプロセスではなく、コードを使用してインフラストラクチャの管理とプロビジョニングを行うことを言います。IaC を使用すると、インフラストラクチャ仕様を含む設定ファイルが作成され、設定の編集と配信が容易になります。 

トピック

DevOps について理解する

DevOps とは、高品質かつ迅速なサービス提供によりビジネス価値や対応スピードを向上することを目的とした、企業文化、自動化、およびプラットフォームの設計に対するアプローチです。このアプローチでは、開発チームと運用チームのコラボレーションが必要です。

GitOps ソリューションを始める

Red Hat OpenShift

エンタープライズ対応の Kubernetes コンテナ・プラットフォームで、ハイブリッドクラウド、マルチクラウド、エッジのデプロイメントを管理するフルスタックの自動運用機能を備えています。 

Red Hat Ansible Automation Platform

組織全体で自動化を構築し、運用するための基盤です。このプラットフォームには、エンタープライズ全体で自動化を実装するために必要なすべてのツールが含まれています。