从原生Helm Release迁移至FluxCD HelmRelease的实现方法
原生Helm Release迁移至FluxCD HelmRelease步骤
1. 备份现有Helm Release信息
先导出当前运行的Helm Release全量配置,防止迁移过程中丢失关键参数:
- 导出Release完整配置:
helm get all <release-name> -n <namespace> > helm-release-backup.yaml - 导出当前生效的values配置(后续迁移要复用):
helm get values <release-name> -n <namespace> --output yaml > release-values.yaml - 记录Release使用的Chart版本和仓库地址:
helm list -n <namespace> | grep <release-name>
2. 确保FluxCD已部署并配置
如果集群还没装Flux,先完成基础部署和Git仓库关联:
- 安装Flux CLI并部署到集群:
flux install - 关联你的Git仓库作为Flux的配置源:
flux create source git <git-repo-alias> \ --url=<你的Git仓库地址> \ --branch=<主分支名> \ --interval=1m \ --namespace=flux-system
3. 创建Flux Helm仓库资源
对应原Helm Release使用的Chart仓库,创建Flux的HelmRepository(如果是OCI镜像仓库则用OCIRepository):
- 示例HelmRepository配置(保存为
helm-repo.yaml):apiVersion: source.toolkit.fluxcd.io/v1 kind: HelmRepository metadata: name: <仓库别名> namespace: flux-system spec: url: <原Helm仓库地址> interval: 1h # 定期同步仓库索引 - 将该文件提交到Git仓库,Flux会自动完成仓库同步。
4. 编写Flux HelmRelease资源
创建HelmRelease配置文件,完全匹配原Release的运行参数:
- 示例配置(保存为
helm-release.yaml):apiVersion: helm.toolkit.fluxcd.io/v2beta1 kind: HelmRelease metadata: name: <release-name> namespace: <原命名空间> spec: releaseName: <release-name> # 和原Release名称保持一致,避免冲突 chart: spec: chart: <原Chart名称> version: <原Chart版本> # 必须和原Release使用的版本一致 sourceRef: kind: HelmRepository name: <仓库别名> # 对应上面创建的HelmRepository namespace: flux-system interval: 5m # Flux定期检查配置同步 values: # 粘贴从release-values.yaml导出的所有配置 # 若原Release使用了Secret存储敏感值,可改用existingSecret引用: # existingSecret: # name: <原Secret名称> - 注意:必须保证这里的
values和原Release完全一致,否则会触发不必要的配置变更。
5. 同步配置并验证迁移结果
- 将
helm-release.yaml提交到Git仓库,手动触发Flux同步(可选,默认自动同步):flux reconcile source git <git-repo-alias> -n flux-system - 检查HelmRelease状态,确认部署成功:
flux get helmreleases -n <原命名空间> - 对比原Release和Flux管理的Release状态,确保Pod、服务等完全一致:
helm list -n <原命名空间> kubectl get pods -n <原命名空间>
6. 移除原生Helm Release(可选)
确认Flux已完全接管应用后,可删除原生的Helm Release:
helm uninstall <release-name> -n <原命名空间>
提示:如果担心服务中断,可先保留原Release,观察一段时间后再删除。
内容的提问来源于stack exchange,提问作者Nikhil
相关产品推荐
相关产品推荐

