Flux 架构与使用
当 Kubernetes 成为容器编排的事实标准时,GitOps 理念也随之兴起。ArgoCD 之外,Flux 是另一个不容忽视的选择。
Flux 由 Weaveworks 于 2016 年创建,最初是一个简单的 Git 同步工具。经过多年演进,Flux v2 已经成为一个功能完整的 GitOps 平台,被广泛用于生产环境。如果你需要在 Kubernetes 中实现声明式基础设施,Flux 是一个值得认真考虑的选择。
Flux v2 架构
核心组件
Flux v2 由多个控制器组成,每个控制器负责特定功能:
GitOps Toolkit
Flux v2 基于 GitOps Toolkit 构建,允许你按需安装和扩展功能:
Flux
Source 资源
GitRepository
GitRepository
HelmRepository
HelmRepository
Kustomize 部署
Kustomization 资源
Kustomization
Kustomize Overlay
Kustomization
kustomization.yaml
Helm Release
HelmRelease 资源
HelmRelease
多租户隔离
RBAC 配置
多租户
租户隔离的 Kustomization
租户隔离
镜像自动化
ImagePolicy
ImagePolicy
ImageUpdateAutomation
ImageUpdateAutomation
事件通知
Provider 配置
通知
Alert 配置
Alert
与 ArgoCD 对比
常见问题与反模式
问题一:Source 认证失败
错误:Git 仓库无法拉取。
正确做法:创建 Secret 存储凭证,使用 secretRef 引用。
问题二:循环依赖
错误:Kustomization A 依赖 Kustomization B,B 又依赖 A。
正确做法:确保依赖关系是 DAG(非循环图)。
问题三:权限过大
错误:使用 cluster-admin 角色。
正确做法:使用最小权限原则,为每个租户配置专门的 RBAC。
延伸思考
Flux 和 ArgoCD 都是优秀的 GitOps 工具,选择哪一个取决于你的具体需求:
- 如果你需要细粒度的多租户支持,Flux 的 RBAC 模型可能更适合
- 如果你需要一个完整的 Web UI,ArgoCD 可能更直观
- 如果你已经在使用 Weave Cloud,Flux 是自然选择
无论选择哪个工具,GitOps 的核心原则都是相同的:让 Git 成为唯一的真相源,让自动化成为默认行为。