You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

无需Git/Helm仓库,通过Argo CD部署动态生成应用可行吗?

可以实现,以下是几种适配你现有架构的方案

方案1:Jenkins生成清单后通过Argo CD API/CLI提交部署

完全贴合你当前的Jenkins工作流,仅把helm install/upgrade替换为Argo CD的部署调用:

  • 保留Jenkins从PostgreSQL拉取环境值、密钥的逻辑,继续用Helm渲染出最终的Kubernetes清单(用helm template命令)。
  • 借助Argo CD的CLI(argocd)或REST API,直接创建/更新一个使用inline源的Application,把渲染好的清单内容嵌入到Application定义中,不需要存储到任何Git/Helm仓库。
  • 示例CLI命令:
    # 从PostgreSQL拉取配置并渲染Helm清单到临时文件
    helm template my-app ./chart --values <(psql -t -c "SELECT config FROM env_config WHERE app='my-app'") > rendered.yaml
    # 创建Argo CD Application,用inline方式加载清单
    argocd app create my-app \
      --project default \
      --dest-server https://kubernetes.default.svc \
      --dest-namespace my-namespace \
      --inline rendered.yaml
    # 触发同步部署
    argocd app sync my-app
    
  • 后续更新时,重新渲染清单后执行argocd app set my-app --inline new-rendered.yaml,再同步即可。

方案2:让Argo CD直接对接PostgreSQL完成动态渲染

把Helm渲染逻辑从Jenkins转移到Argo CD,减少中间环节:

  • 仅将通用的基础Helm Chart(不含动态配置的模板)放在极简的Git/Helm仓库(无需存储动态生成的清单)。
  • 用External Secrets Operator (ESO) 从PostgreSQL同步环境值、密钥到集群的Secrets/ConfigMaps中。
  • 在Argo CD的Application配置里,引用这些Secrets/ConfigMaps作为Helm的values参数,让Argo CD自动完成模板渲染和部署。
  • 优势:无需Jenkins参与渲染,Argo CD全程负责从数据源拉取配置、渲染、部署,不存储动态生成的清单。

方案3:一次性临时部署(适合无需持续同步的场景)

如果你的应用不需要Argo CD持续维护状态,仅用它替代helm命令做部署:

  • Jenkins生成清单后,创建带有applyOnce: true同步策略的Argo CD Application,部署完成后Argo CD不会持续监控同步状态。
  • 可选部署后删除该临时Application,避免Argo CD应用列表冗余。

注意事项

  • 确保Jenkins拥有Argo CD的操作权限(通过token认证),并配置好argocd CLI或API调用环境。
  • Inline源的清单有大小限制(默认约1MB),若应用清单过大,建议拆分或改用方案2。
  • 若需要Argo CD持续同步应用状态,每次配置更新后需重新提交最新的inline清单到Application中。

内容的提问来源于stack exchange,提问作者Shailendra Sharma

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.21 13:07:19