Chuyển đến nội dung chính

レッスン 36: ARGOCD と FLUX を使用した GITOPS

GitOps の原則: Git は唯一の真実の情報源です。 ArgoCD 3.x ハブアンドスポーク マルチクラスター、Flux 2.x 分散プルベース。 GitHub Actions + ArgoCD/Flux を使用した CI/CD パイプライン。アプリのアプリパターン。

🎯 レッスンの目的

GitOps の原則、ArgoCD と Flux のセットアップ方法、2 つのツールの違い、GitOps を使用した CI/CD パイプライン、GitOps ワークフローでのシークレット管理を理解します。

GitOps with ArgoCD & Flux - Workflow Diagram

1. GitOps 原則 (OpenGitOps)

GitOps は、Git を「信頼できる唯一の情報源」として使用するアプリケーションのデプロイと操作の方法です:

  • 宣言: 望ましい状態は Git のコードとして記述されます (Kubernetes マニフェスト)
  • バージョン管理と不変: Git 履歴は完全な監査証跡
  • 自動的にプル: GitOps エージェントは、CI/CD からプッシュされるのではなく、Git から変更をプルします
  • 継続的に調整: エージェントは継続的にドリフトをチェックして修正します (誰かがクラスター内で直接変更します)

利点: セキュリティ (クラスターには CI/CD 資格情報は必要ありません)、監査証跡、単純なロールバック (git revert)、ドリフト検出。

2. ArgoCD 3.x

2.1 アーキテクチャ

  • API サーバー: REST/gRPC API、Web UI、CLI
  • Repo サーバー: Git から Kubernetes マニフェストをクローンしてレンダリング
  • アプリケーション コントローラー: K8s リソースの監視、ドリフトの検出、同期

2.2 ArgoCD のインストール

___コードブロック_0___

2.3 アプリケーション CRD

___コードブロック_1___

2.4 アプリのアプリパターン

___コードブロック_2___

2.5 ApplicationSet — アプリケーションを動的に生成

___コードブロック_3___

3. Flux 2.x

3.1 Flux アーキテクチャ

Flux は分散型 GitOps です。クラスターは中央ハブを使用せず、Git から自身をプルします。

  • ソース コントローラー: Git リポジトリ、Helm リポジトリ、OCI アーティファクトを監視
  • コントローラーをカスタマイズ: カスタマイズ リソースを適用
  • Helm コントローラー: CRD 経由で Helm リリースを管理
  • 通知コントローラー: Slack、Teams、GitHub にアラートを送信
  • 画像オートメーション コントローラー: Git の画像タグを自動更新

3.2 Flux のインストール

___コードブロック_4___

3.3 GitRepository とカスタム化

___コードブロック_5___

3.4 HelmRelease

___コードブロック_6___

4. GitOps を使用した CI/CD パイプライン

___コードブロック_7___

5. GitOps の秘密

プレーンテキストのシークレットを Git にコミットしないでください。解決策:

  • Sealed Secrets: 公開キーで暗号化します。クラスター内のコントローラーのみが復号化できます
  • SOPS: Mozilla SOPS + KMS (AWS KMS、GCP KMS、Azure Key Vault)
  • _外部シークレット オペレーター: 外部シークレット ストアからの同期 (推奨)
___コードブロック_8___

6. ArgoCD 対 Flux

___コードブロック_9___

概要

  • GitOps: Git = 信頼できる唯一の情報源、プルベース、ドリフト検出
  • _ArgoCD: 一元化された優れた UI、ハブアンドスポーク マルチクラスタ
  • Flux: 分散型、Git からのクラスタープル、組み込みの画像自動化
  • App of Apps (ArgoCD): 1 つのルート アプリで複数のアプリを管理
  • シークレット: プレーンテキストをコミットせず、Sealed Secret、SOPS、または ESO を使用してください