Flux
安装
# 安装 Flux CLI
curl -s https://fluxcd.io/install.sh | sudo bash
# Bootstrap(将 Flux 组件提交到 Git 仓库)
flux bootstrap github \
--owner=my-org \
--repository=fleet-infra \
--branch=main \
--path=clusters/production \
--personal
核心资源
GitRepository
git-repo.yaml
apiVersion: source.toolkit.fluxcd.io/v1
kind: GitRepository
metadata:
name: my-app
namespace: flux-system
spec:
interval: 1m # 每分钟检查 Git 变更
url: https://github.com/org/k8s-manifests.git
ref:
branch: main
secretRef:
name: git-credentials # 私有仓库凭证
Kustomization
kustomization.yaml
apiVersion: kustomize.toolkit.fluxcd.io/v1
kind: Kustomization
metadata:
name: my-app
namespace: flux-system
spec:
interval: 5m
targetNamespace: production
sourceRef:
kind: GitRepository
name: my-app
path: ./apps/my-app/overlays/production
prune: true # 自动清理
healthChecks: # 部署后健康检查
- apiVersion: apps/v1
kind: Deployment
name: my-app
namespace: production
HelmRelease
helm-release.yaml
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
name: nginx
namespace: production
spec:
interval: 10m
chart:
spec:
chart: nginx
version: ">=15.0.0"
sourceRef:
kind: HelmRepository
name: bitnami
values:
replicaCount: 3
service:
type: ClusterIP
ArgoCD vs Flux 对比
| 维度 | ArgoCD | Flux |
|---|---|---|
| 架构 | 集中式(Web UI + API Server) | 分布式(多个 Controller) |
| UI | 内置 Web UI | 需额外安装 Weave GitOps |
| 多集群 | ApplicationSet | 多 Flux 实例 |
| Helm 支持 | 原生 | HelmRelease CRD |
| 镜像自动更新 | 不支持 | Image Automation Controller |
| 学习曲线 | 较低(UI 友好) | 较高(全 YAML) |
| 适合场景 | 需要 UI 和审批流程 | 纯 GitOps、自动化程度高 |
常见面试问题
Q1: ArgoCD 和 Flux 如何选择?
答案:
- 选 ArgoCD:需要可视化 UI、多人协作审批、较低的学习曲线、多集群中央管理
- 选 Flux:追求纯 GitOps、需要镜像自动更新、偏好 CRD 原生方式、轻量级部署
两者都是 CNCF 毕业项目,生产可用。小团队推荐 ArgoCD(UI 友好),大规模自动化推荐 Flux。