跳到主要内容

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 对比

维度ArgoCDFlux
架构集中式(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。

相关链接