【ふらっくすしーでぃー】

Flux CD とは?

最終更新:
💡 Gitに書いた「あるべき姿」にクラスターを合わせ続ける

Kubernetes向けのGitOpsツール。Gitリポジトリなどに置いた設定とクラスターの状態を照らし合わせ、差があれば設定どおりにそろえる。

📌 このページのポイント
Flux CD:GitOpsによる自動デプロイ Git リポジトリ manifests/ deployment.yaml service.yaml 監視 Flux CD 差分検知 → 自動同期 Reconciliation Loop 適用 Kubernetes Pod: app-v2 Service ConfigMap git push → 自動で反映される Gitの状態 = クラスタのあるべき状態(Single Source of Truth)
Flux CDによるGitOpsの流れ
ひよこ ひよこ
Flux CDって何をしてくれるの?
ペンギン先生 ペンギン先生
Kubernetesクラスターを、Gitリポジトリなどに置いた設定と同じ状態に保ってくれるツールだよ。「あるべき状態」を宣言的に書いてバージョン管理し、実際の環境がそれと一致するように自動で合わせる。このやり方をGitOpsと呼ぶんだ
ひよこ ひよこ
どうやって使うの?
ペンギン先生 ペンギン先生
まずflux bootstrapでFluxをクラスターに入れる。このときFlux自身の設定もGitリポジトリに保存されるよ。次に、GitRepositoryリソースで設定の置き場所を、Kustomizationリソースで適用する内容を指定する。あとはFluxが定期的に確認して、差があればクラスターに反映するんだ。flux get allで各リソースの状態を見られるよ
ひよこ ひよこ
Gitにpushしたら、すぐ反映されるの?
ペンギン先生 ペンギン先生
すぐとは限らないよ。Fluxは決めた間隔ごとに確認する作りで、間隔は.spec.intervalで設定するんだ。だからpushしてから反映まで、間隔のぶん待つことがある。早く反映したいときは、GitHubなどからの通知を受け取るReceiverを用意して、変更をFluxに知らせる方法があるよ
ひよこ ひよこ
Helmチャートも管理できる?
ペンギン先生 ペンギン先生
できるよ。HelmRepositoryでチャートの置き場所を登録して、HelmReleaseリソースで入れたいチャートと設定を宣言する。するとHelmコントローラーが、インストールやアップグレードといったHelmの操作を実行してくれるんだ。dependsOnを書くと、指定した別のHelmReleaseの準備ができてから進める、という順番も決められるよ
ひよこ ひよこ
Argo CDとどう違うの?
ペンギン先生 ペンギン先生
どちらもKubernetes向けのGitOpsツールで、CNCFの卒業プロジェクトだよ。Argo CDは、アプリの状況をリアルタイムに見られるWeb UIや、マルチテナンシーとRBACの機能を特徴として挙げている。Fluxは、ソースの取得・Kustomizeの適用・Helm・通知・イメージ更新の自動化といった役割ごとのコントローラーを組み合わせる作りなんだ。画面での操作を重視するか、部品を組み合わせる構成を重視するかが、選ぶときの目安になるね
ペンギン
まとめ:ざっくりこれだけ覚えればOK!
「Flux CD」って出てきたら「Gitの内容にKubernetesを合わせ続けるGitOpsツール」と思えればだいたいOK!
📖 おまけ:英語の意味
「Flux」 = 流れ・流動
💬 fluxは「流れ」という意味の英語だよ。プロジェクトの名前はFluxで、Flux CDとも呼ばれるんだ。名前の由来についての公式の説明は、ここでは確認していないよ

参考資料

← 用語集にもどる