Mímisbrunnr知恵の泉

← クラウドインフラ 一覧

🎓 レベル:発展 | 重要度:B(推奨)

📎 前提:CI/CDとは・パイプライン | 関連:Kubernetesの全体像(宣言的・調整ループ)IaCとは・宣言的構成

要点(BLUF)

概念 ── git が真実の源

これまで見た2つの「宣言と収束」——K8s(望ましい状態へ収束)とIaC(コードへ収束)——を、git リポジトリという1点に束ねるのが GitOps です。クラスタの「あるべき姿」を全部 git に置き、git=正とする。人は git を変えるだけ。反映はエージェントがやる。

flowchart LR
    dev["開発者"] -->|"PR → merge"| repo["git(望ましい状態の真実)"]
    agent["クラスタ内エージェント(Argo CD等)"] -->|"git を監視"| repo
    agent -->|"差分を検知して適用(pull)"| cluster["Kubernetes クラスタ"]
    cluster -->|"現状を読む"| agent
    agent -->|"手で変えられたら git へ戻す(自動是正)"| cluster

仕組み ── push型 と pull型

従来CIのpush型:CI パイプライン(CI/CDとは・パイプライン)がクラスタの認証情報を持ち、外から kubectl apply押し込む。CI が本番への強い権限を持つのがリスク。

GitOpsのpull型:クラスタのエージェント(Argo CD・Flux 等・要最新確認)が git を監視し、差分があれば自分で取り込んで適用する。クラスタの権限が外に出ず、誰がいつ何を変えたかは git 履歴が語る。

push型(従来CD)pull型(GitOps)
適用の主体外部のCIクラスタ内エージェント
クラスタ権限CIが保持(外に出る)クラスタ内に留まる
ドリフト是正手動/別途自動(gitへ収束)
監査CIログgit履歴がそのまま監査

仕組み ── 自動同期とドリフト是正

GitOps エージェントは調整ループを回し続けます。「git の宣言」と「クラスタの現実」を比較し、ズレたら git 側へ寄せる。誰かが手で kubectl edit してもエージェントがgit の状態へ戻すので、ドリフト(IaCとは・宣言的構成)が構造的に起きません。

ロールバックも「git を前のコミットに戻す(revert)」だけ。デプロイの履歴=gitの履歴になり、git revert が即ロールバックになります。

なぜ GitOps なのか

⚠️ よくある誤解・落とし穴

対応ラボ

なし(運用設計トピック)。土台となる宣言は Pod・Deployment・ReplicaSetTerraformの基礎(HCL・state) のラボ。GitOps エージェント(Argo CD/Flux)の導入はクラスタ前提のため参照に留める(要最新確認)。

関連

第6章 CI/CD 目次