🔧 步骤 1:安装 Flux CLI(本地机器)
Flux CLI 是操作 Flux 的核心工具,替代 ArgoCD UI/ArgoCD CLI。
FluxCD和k8s集群/Gitlab仓库是一一对应的关系,每个k8s集群都要安装Flux,并对应一个专属的Gitlab仓库
# Linux/macOS 一键安装(官方脚本,安全可控)
curl -s https://fluxcd.io/install.sh | sudo bash
# 验证安装(输出版本即成功,当前稳定版 v2.8.6)
flux --version
# (可选)补全命令(方便后续操作)
. <(flux completion bash) # bash
# . <(flux completion zsh) # zsh
🔧 步骤 2:初始化 Flux 到 Kubernetes 集群
这一步会在集群中安装 Flux 核心组件(仅 4 个 Pod,轻量),且默认禁用自动同步(符合手动同步需求)。
# 1. 检查集群是否满足安装条件(前置校验,避免踩坑)
flux check --pre
# 2. 初始化 Flux(核心命令,安装所有组件到 flux-system 命名空间)
flux install \
--namespace flux-system \
--network-policy=false \
--components-extra=image-reflector-controller,image-automation-controller # 可选:如需镜像更新功能
# 3. 立即查看 Pod 状态(1分钟内会从 Pulling → Running)
kubectl get pods -n flux-system -w
# 4. 验证 Flux 组件状态(所有 Pod 为 Running 即成功)
kubectl get pods -n flux-system
🔧 步骤 3:将 Git 仓库接入 Flux(关联业务代码仓)
目录结构参考:
mix-project Git 仓库
└── mix-cn-gz/
└── gitlab/
├── gitlab-hr.yaml
└── gitlab-kustomization.yaml
# 1. (可选)创建 Git 仓库认证 Secret(私有仓库专用)
kubectl create secret generic gitlab-group-auth \
-n flux-system \
--from-literal=username=gitrobot-token \
--from-literal=password=glpat-avMjcqg5X80Q6RSrfMYWxG86MQp1OmEH.01.0w18tv3sh
# 2. 添加业务 Git 仓库
flux create source git mix-project \
--namespace flux-system \
--url=https://gitlab.infraserviceonline.com/infra-team/mix-project.git \
--branch=main \
--interval=5m \
--secret-ref=gitlab-group-auth
# 3. 创建 Kustomization 统一纳管
flux create kustomization gitlab \
--namespace flux-system \
--source=mix-project \
--path="./mix-cn-gz/gitlab" \
--prune=true \
--interval=1m
# 4. 验证 Git 仓库源状态
flux get sources git -n flux-system
🔧 步骤 4:创建 Helm 源 & 纳管 GitLab 应用
方式一:使用官方 GitLab Helm 源
flux create source helm gitlab-official \
--namespace flux-system \
--url=https://charts.gitlab.io \
--interval=1h
方式二:内网 Harbor OCI 私有 Helm 源
# 1. 登录 Harbor 仓库
helm registry login harbor.infraserviceonline.com
# 2. 拉取官方 Chart 本地缓存
helm pull gitlab/gitlab --version 9.10.3
# 3. 推送至内网 Harbor OCI
helm push gitlab-9.10.3.tgz oci://harbor.infraserviceonline.com/helm-charts
# 4. 创建 Harbor 认证 Secret
kubectl create secret generic harbor-creds \
-n flux-system \
--from-literal=username=admin \
--from-literal=password=<你的Harbor密码>
HelmRepository OCI 资源清单
apiVersion: source.toolkit.fluxcd.io/v1
kind: HelmRepository
metadata:
name: gitlab-internal
namespace: flux-system
spec:
interval: 1h
type: oci
url: oci://harbor.infraserviceonline.com/helm-charts
secretRef:
name: harbor-creds
FluxCD 标准流转
git push → reconcile source → reconcile kustomization → reconcile hr
# 验证 HelmRelease 状态
flux get helmreleases -n gitlab
🔧 步骤 5:手动同步应用(替代 ArgoCD Sync)
# 1. 强制刷新 Git 仓库源
flux reconcile source git mix-project
# 2. 强制刷新 Kustomization
flux reconcile kustomization gitlab
# 3. 临时开启自动同步
flux resume helmrelease gitlab -n gitlab
# 4. 手动触发 Helm 应用更新
flux reconcile helmrelease gitlab -n gitlab
# 5. 查看 HelmRelease 完整配置
kubectl get helmrelease gitlab -n gitlab -o yaml
# 6. 预览 Flux 最终渲染配置
flux build helmrelease gitlab -n gitlab | grep -i runner
# 7. 查看同步运行日志
flux logs --namespace gitlab --kind=HelmRelease --name=gitlab
# 8. 查看全部 Kustomization 资源
flux get kustomizations -A
🔍 配置一致性对比(判断是否配置漂移)
方法1:世代号比对(最精准)
kubectl get helmrelease gitlab -n gitlab -o yaml | grep -E "generation|observedGeneration"
- generation = 配置版本
- observedGeneration = 已落地生效版本
- 两者一致:配置完全同步无漂移
方法2:检查资源漂移标记
kubectl describe helmrelease gitlab -n gitlab | grep -A5 -B5 Drifted
方法3:导出 Values 差异化对比
# 导出 Flux 生效 values
kubectl get helmrelease gitlab -n gitlab -o jsonpath={.spec.values} > flux-values.yaml
# 导出集群实际运行 values
helm get values gitlab -n gitlab -o yaml > real-values.yaml
# 差异对比
diff flux-values.yaml real-values.yaml
⚙️ 生产环境高可用&安全参数
# 生产高可用加固配置
install:
remediation:
retries: -1
createNamespace: true
upgrade:
remediation:
retries: -1
test:
enable: true
ignoreFailures: false
# 开启配置漂移检测
driftDetection:
mode: enabled
关键参数说明
-
suspend: true
【 更新前确认】作用:更新前把关,防止乱更 作用:更新前把关,防止乱更
修改 Git values → 不自动更新 → 必须手动确认才更新- 禁用自动更新,仅手动触发发布
- 变更需人工确认,规避自动发布风险
-
driftDetection: enabled
【更新后保护】作用:更新后保护,防止自动覆盖故障修复
手动改了集群里的配置→ Flux 发现不一致 → 不自动覆盖回去- 检测集群人为修改的配置漂移
- 不会自动强制覆盖,保障生产临时修复
-
设置资源禁止删除annotationshelm.toolkit.fluxcd.io/ignore-policy: "delete" -
设置资源禁止更新/覆盖annotationshelm.toolkit.fluxcd.io/ignore: "true"
🧹 FluxCD 完整卸载回滚
# 前置:所有应用设置暂停同步
# 修改所有 HelmRelease / Kustomization 中 suspend: true
# 卸载集群内 Flux 所有组件
flux uninstall --namespace flux-system
📝 总结
- 部署流程:安装CLI → 集群初始化 → 对接Git仓库 → 配置Helm源 → 交付应用
- 核心优势:手动触发同步、配置渲染可预览、支持漂移检测、最小权限可控
- 适配场景:GitLab Helm、Istio/Kustomize、中间件全场景纳管
- 官方文档参考:https://fluxcd.io/flux/components/helm/api/v2/#HelmReleaseSpec