🎯 レッスンの目的
GitOps の原則、ArgoCD と Flux のセットアップ方法、2 つのツールの違い、GitOps を使用した CI/CD パイプライン、GitOps ワークフローでのシークレット管理を理解します。
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)
- _外部シークレット オペレーター: 外部シークレット ストアからの同期 (推奨)
6. ArgoCD 対 Flux
___コードブロック_9___概要
- GitOps: Git = 信頼できる唯一の情報源、プルベース、ドリフト検出
- _ArgoCD: 一元化された優れた UI、ハブアンドスポーク マルチクラスタ
- Flux: 分散型、Git からのクラスタープル、組み込みの画像自動化
- App of Apps (ArgoCD): 1 つのルート アプリで複数のアプリを管理
- シークレット: プレーンテキストをコミットせず、Sealed Secret、SOPS、または ESO を使用してください