GitOps は、自動化、コラボレーション、継続的デリバリーを重視するモダンなインフラ管理アプローチです。Git を構成とコードの単一の真実の源として使うという発想に基づいています。GitOps では、インフラへのすべての変更がプルリクエストを通じて行われ、他のチームメンバーがレビュー・承認したうえで main ブランチにマージされます。
本記事では、いくつかのオープンソース GitOps ツールを概観します。
Terraform
Terraform は、インフラを安全かつ効率的に構築・変更・バージョン管理できるオープンソースの infrastructure as code (IaC) ツールです。対象は、計算インスタンス、ストレージ、ネットワークといった低レベルのコンポーネントから、DNS エントリや SaaS の機能のような高レベルのコンポーネントまで含みます。
Terraform は HashiCorp Configuration Language (HCL) を使い、構成記述には JSON もサポートしています。

GitOps を有効化するには、Terraform 構成を持つ Git リポジトリを作り、Terraform でインフラを定義し、パイプラインとプルリクエストで更新を管理します。

Pulumi
Pulumi は、好みの言語でクラウドインフラを作成・デプロイ・管理できるオープンソースの infrastructure as code ツールです。Terraform と異なり、Pulumi は Python、JavaScript、Go のような実プログラミング言語でインフラを定義します。

Terraform と同様に、Pulumi 構成を持つ Git リポジトリを作り、Pulumi でインフラを定義し、パイプラインとプルリクエストで更新を管理することで GitOps を実現できます。

ArgoCD
ArgoCD は、Kubernetes 向けの宣言的な GitOps 継続的デリバリーツールです。

Argo CD は、Git リポジトリを望ましいアプリケーション状態の真実の源として使うという GitOps パターンに従います。Kubernetes マニフェストは、kustomize アプリケーション、Helm chart、jsonnet ファイルなど、さまざまな形式で指定できます。
Argo CD は、指定された対象環境への望ましいアプリケーション状態のデプロイを自動化します。アプリケーションのデプロイは、ブランチやタグの更新を追跡することも、Git コミット時点のマニフェストの特定バージョンに固定することもできます。

Bruno
Bruno は、Postman、Insomnia などの現状を覆すことを狙う、高速で Git フレンドリーなオープンソース API クライアントです。

Bruno はコレクションをファイルシステム上のフォルダーに直接保存し、API リクエストの情報を Bru というプレーンテキストのマークアップ言語で記述します。
GitOps の観点では、Git や好みのバージョン管理を使って API コレクションを共同編集できます。

OPA
OPA (Open Policy Agent) は、スタック横断でポリシーを強制するために設計されたオープンソースのポリシーエンジンです。OPA 自体は GitOps ツールではありませんが、ポリシー強制とコンプライアンスチェックを提供することで GitOps ワークフローを補完できます。

GitOps の文脈では、OPA を CI/CD パイプラインや Kubernetes の admission controller に統合し、インフラやアプリケーションへの変更を検証できます。コードで定義されたポリシーを強制することで、適用前にすべての変更が組織の基準に準拠していることを保証し、GitOps プロセスのセキュリティと信頼性を高めます。
MDX
MDX は、Markdown ドキュメントの中で JSX を書けるようにするツールで、Markdown ファイル内に React コンポーネントを使ってインタラクティブで動的なコンテンツを作れるようにします。

MDX は伝統的な意味での GitOps ツールではありませんが、バージョン管理されたドキュメントを実現することで GitOps ワークフローを補完できます。これにより、ドキュメントがコードやインフラと並んで進化し、最新の変更との整合性を保てます。
Bytebase
Bytebase は、データベース DevSecOps と CI/CD のオールインワンソリューションです。GitHub/GitLab のように、開発者と DBA がデータベース変更について協働するための GUI ワークスペースを提供します。

直感的な UI ワークフローに加え、Bytebase はデータベース変更を管理する GitOps ワークフローもサポートしています。これにより、プルリクエスト経由でデータベースの Issue を起票できます。さらに、Bytebase は SQL レビュー、カスタム承認ワークフロー、ロールアウトポリシーを提供し、データベース変更を高度な GitOps スタイルで管理できるようにします。

まとめ
ここで紹介したオープンソース GitOps ツールは、インフラとアプリケーションのデプロイを管理するためのさまざまな選択肢を提供します。いずれも GitOps の原則に従い、指定された対象環境で望ましい状態を実現するためにデプロイプロセスを自動化します。
