Argo CD 渐进式发布能力怎样接入 GitOps 流程
把渐进式发布接入 Argo CD 的 GitOps 流程,通常是由 Git 保存发布声明,Argo CD 同步 Rollout 等资源,再由独立的 Argo Rollouts 控制器执行金丝雀或蓝绿策略。Argo CD 的 ApplicationSet Progressive Syncs 则解决多 Application 分批同步,两者不能当作同一个流量控制功能。
Argo CD 官方文档:https://argo-cd.readthedocs.io/en/stable/;Argo Rollouts 官方文档:https://argoproj.github.io/argo-rollouts/。本文是基于现有官方能力的工程解读,不是一条新版本公告。以下订单服务为设计场景,指标和门槛用于解释取舍,没有真实部署或压测结果。
先用指标定义一次小流量发布要证明什么
如果要给一个已有 GitOps 的订单服务增加灰度,我会先问:希望减少一次失败影响的请求量,还是希望发布更快?这两个目标不能用“启用渐进式发布”一句话替代。对我来说,优先目标应是限制暴露面,并给停止发布留下可靠依据。
我会在试点前准备稳定版本的基线:相同路由下的请求量、5xx 比例、p95 延迟,以及业务成功率。指标要能区分稳定版本和候选版本,否则全站平均值可能把少量候选流量的异常稀释掉。
| 观测对象 | 设计门槛示例 | 需要排除的误读 |
|---|---|---|
| 候选版本请求量 | 观察窗口至少取得预先约定的样本数 | 无流量不等于零错误 |
| 5xx 比例 | 例如不超过 1%,且与稳定版差异可接受 | 指标查询失败不能算通过 |
| p95 延迟 | 例如不超过匹配基线的 1.2 倍 | 不同请求类型不能直接混比 |
表中 1% 和 1.2 倍只是待评审的示例,不是 Argo 默认值,也不是生产通用标准。最小样本数、窗口长度和业务护栏应按服务负载预先确定。报告里的“结果”要保留实际观测值,不能只写绿灯。
把声明同步与灰度控制分给不同组件
最初容易混淆的地方,是把同步成功当成业务发布成功。Git 中的资源已被同步,只能说明声明交付到了集群;候选版本能否继续放量,还需要发布控制器及观测依据。
Argo CD 负责声明同步;Rollout 资源描述单应用发布策略;Argo Rollouts 管理相应 ReplicaSet,并可结合支持的流量组件控制金丝雀;AnalysisTemplate 描述分析定义,AnalysisRun 保存一次分析执行的状态与测量。Git 不应承担每次观测采样的运行时状态存储。

因此,接入前要确认 Rollouts 的 CRD 和控制器已安装,Argo CD 有权限管理目标命名空间,所需 Service、路由及观测服务可用。仅安装 Argo CD 不会自动安装 Rollouts,也不会把普通 Deployment 变成完整的金丝雀方案。
在 Git 中提交发布策略而不是临时改副本
我的取舍会是先试一个可回退的单应用,再考虑跨集群编排。把镜像固定到受控的不可变版本,在代码评审中一起提交策略修改。既有 Deployment 的迁移还涉及资源选择器、Service 选择器、容量和接管方式,不能只把 kind 改成 Rollout 就直接上线。
下面仅是已有 Rollout 的 spec.strategy 配置片段,用来解释暂停点;它不是可独立部署的完整清单,也未包含自动指标分析:
strategy:
canary:
# 示例权重与暂停点,完整资源仍需匹配实际服务配置
steps:
- setWeight: 20
# 不指定时长会保持暂停,等待明确的继续决策
- pause: {}
- setWeight: 50
- pause: {}
- setWeight: 100
没有流量管理组件时,setWeight 主要通过新旧副本数量尽力接近比例,不保证请求恰好按 20% 分配。长连接、会话粘性和负载分配都会影响实际请求分布。若要求细粒度流量比例,应选用 Rollouts 支持且团队能够运维的流量路由集成,并配置其必需资源。
另一个容易漏掉的边界是首次创建:没有已知稳定版本时,不能假设能像后续升级一样比较新旧版本。应先建立可用基线,再讨论候选版本的灰度发布。
让观测门槛决定继续、暂停或中止
手动暂停适合梳理最初的观测职责,却不会自动读取表里的阈值。要自动化,需定义 AnalysisTemplate,配置指标提供方、查询、判定条件、测量间隔与失败容忍,并在 Rollout 中引用。模板要随 Git 管理,执行结果则记录在 AnalysisRun 等运行态对象中。
我更看重这类设计留下的解释能力:候选版本、观测窗口、请求数量、错误率与延迟应能关联到同一次发布。查询应隔离候选流量;没有样本、返回空集合、超时和指标提供方错误,都要有明确处理策略,而不是被转成“错误率为零”。

官方分析机制区分测量失败、执行错误以及不能明确下结论等情况,具体如何影响发布,取决于分析挂载方式和对应配置。不要把“暂停等待人判断”与“分析判定失败”混为一谈。想中止新版本时,应按既定处置方式操作,同时记录导致中止的证据。
对于试点,我会同时比较稳定与候选在匹配窗口下的数据,并在报告中留出“尚未取得结果”状态。只有真实观察后,才填写放量前后的差异;本文没有执行这些试验,因此不提供看似精确的改善百分比。
把回退和多应用扩展留在同一份交付记录里
Argo Rollouts 不会因回退而自动改写 Git。发布失败后,它可以按机制回到稳定版本的副本或流量安排,但 Rollout 的期望声明仍可能指向失败版本,资源健康状态也会反映发布未成功。不能简单推断 Argo CD 会因此无限重复发布:Rollouts 管理的运行状态与 Git 中的声明不是同一层。
后续应通过受控提交修复并向前发布,或按团队策略在 Git 中明确恢复已知可用声明。数据库迁移、外部消息及已经发生的业务写入并不会随容器回退自动撤销。我会把这些外部兼容条件写入发布评审,而不是交给一个回退按钮承担。
扩展到多个 Application 时,再考虑 ApplicationSet 的 RollingSync:它按标签选择应用分组,以健康状态和 maxUpdate 等条件限制同步推进;它不是单应用请求的流量百分比。官方文档还说明 RollingSync 会关闭生成应用的 autosync,使用前必须按部署版本确认能力状态、启用条件和现有同步策略的相容性。
适合这套组合的,是已有 GitOps 基础、能区分版本指标、能够维护流量组件与回退流程的团队。对暂时没有可信指标的小服务,我会先保留人工暂停,把观测与职责补齐,而不是直接给它套一层自动放量。这是工程判断,不是实测证明自动化一定降低事故率。
Argo CD 的 Synced 是否代表金丝雀已成功?
不是。还要看 Rollout 健康、分析状态、业务指标与发布是否完成。资源声明相符不能替代业务验收。
只用 sync waves 能否做到请求级灰度?
不能把同步顺序当成流量策略。sync waves 管理同步次序,单应用的副本与流量控制需要相应发布控制器和路由能力。
发生回退后是否必须让控制器提交 Git?
不是 Rollouts 的内置职责。应按团队的 GitOps 变更流程记录修复或恢复意图,避免让未经授权的控制器拥有仓库写权限。
官方参考:Rollouts 与 Argo CD 的集成和回退职责、金丝雀策略、指标分析机制、ApplicationSet Progressive Syncs。
KubeEdge 边缘节点离线场景怎样保持任务状态
- 上一篇
- KubeEdge 边缘节点离线场景怎样保持任务状态
- 下一篇
- Knative 自动扩缩容事件怎样影响冷启动设计
-
- 科技周边 · 业界新闻 | 1小时前 | 事件驱动 CloudEvents 跨服务订阅 事件格式
- CloudEvents 事件格式标准化后怎样统一跨服务订阅
- 324浏览 收藏
-
- 科技周边 · 业界新闻 | 1小时前 | 自动扩缩容 冷启动 Knative scale-to-zero Activator
- Knative 自动扩缩容事件怎样影响冷启动设计
- 454浏览 收藏
-
- 科技周边 · 业界新闻 | 1小时前 | KubeEdge 任务状态 EdgeCore MetaManager DeviceTwin 边缘节点离线
- KubeEdge 边缘节点离线场景怎样保持任务状态
- 349浏览 收藏
-
- 科技周边 · 业界新闻 | 1小时前 | kubernetes · Kubernetes Falco 运行时安全 安全规则 告警接入 Falcosidekick
- Falco 运行时安全规则更新怎样接入现有告警
- 309浏览 收藏
-
- 科技周边 · 业界新闻 | 1小时前 |
- Backstage 插件生态变化后怎样治理目录数据
- 151浏览 收藏
-
- 科技周边 · 业界新闻 | 1小时前 | prometheus 原生直方图 指标迁移 native histograms
- Prometheus 原生直方图演进后怎样规划指标迁移
- 262浏览 收藏
-
- 科技周边 · 业界新闻 | 1小时前 | Kubernetes 网络策略 云原生网络 Cilium
- Cilium 网络策略生态更新后怎样评估替换成本
- 439浏览 收藏
-
- 科技周边 · 业界新闻 | 1小时前 | 迁移 · kubernetes · Kubernetes ingress Gateway API 云原生网络
- Kubernetes Gateway API 进入新阶段后怎样理解迁移影响
- 368浏览 收藏
-
- 前端进阶之JavaScript设计模式
- 设计模式是开发人员在软件开发过程中面临一般问题时的解决方案,代表了最佳的实践。本课程的主打内容包括JS常见设计模式以及具体应用场景,打造一站式知识长龙服务,适合有JS基础的同学学习。
- 543次学习
-
- GO语言核心编程课程
- 本课程采用真实案例,全面具体可落地,从理论到实践,一步一步将GO核心编程技术、编程思想、底层实现融会贯通,使学习者贴近时代脉搏,做IT互联网时代的弄潮儿。
- 516次学习
-
- 简单聊聊mysql8与网络通信
- 如有问题加微信:Le-studyg;在课程中,我们将首先介绍MySQL8的新特性,包括性能优化、安全增强、新数据类型等,帮助学生快速熟悉MySQL8的最新功能。接着,我们将深入解析MySQL的网络通信机制,包括协议、连接管理、数据传输等,让
- 500次学习
-
- JavaScript正则表达式基础与实战
- 在任何一门编程语言中,正则表达式,都是一项重要的知识,它提供了高效的字符串匹配与捕获机制,可以极大的简化程序设计。
- 487次学习
-
- 从零制作响应式网站—Grid布局
- 本系列教程将展示从零制作一个假想的网络科技公司官网,分为导航,轮播,关于我们,成功案例,服务流程,团队介绍,数据部分,公司动态,底部信息等内容区块。网站整体采用CSSGrid布局,支持响应式,有流畅过渡和展现动画。
- 485次学习
-
- PubMedQA
- 深入了解PubMedQA生物医学问答数据集,涵盖其核心功能、使用方法及在临床决策、药物研发等场景的应用,助力提升NLP模型性能。
- 664次使用
-
- H2O EvalGPT
- H2O EvalGPT是H2O.ai推出的开源LLM评估平台,提供详细的大模型性能排行榜、行业特定基准测试及A/B测试功能,助您快速选择最适合项目的高性能大语言模型。
- 682次使用
-
- LMArena
- LMArena是加州大学伯克利分校推出的AI模型匿名评测平台。通过盲测投票机制,用户可对比不同大模型回答并生成实时排行榜,助力开发者优化模型及用户选择最佳AI工具。
- 727次使用
-
- HELM
- 深入了解斯坦福推出的HELM(Holistic Evaluation of Language Models)大模型评测体系。本文解析其核心功能、安装配置步骤及应用场景,涵盖准确性、公平性、鲁棒性等多维度指标,助力开发者全面优化语言模型性能。
- 697次使用
-
- MMBench
- MMBench是由上海人工智能实验室等机构联合推出的多模态基准测试平台,提供细粒度能力评估、大规模数据集及VLMEvalKit工具。本文详细介绍其核心功能、安装使用方法及应用场景,助力开发者全面评估多模态模型性能。
- 529次使用
-
- 蒙面演唱引争议,旺仔小乔被平台封禁
- 2025-08-08 501浏览
-
- openGauss向量驱动升级,RAC多写突破内核
- 2025-07-30 501浏览
-
- 安普瑞斯工厂放假,电芯供应受影响
- 2025-07-04 501浏览
-
- 农产品APP开发优势与功能全解析
- 2025-04-30 501浏览
-
- 开店省钱妙招,外卖系统同城配送运营攻略
- 2025-04-26 501浏览

