#Argo Rollouts中的分析(Analysis)是用于根据阶段性交付效果的测量结果来推动渐进式交付的机制
◼ 分析机制通过分析模板(AnalysisTemplate CRD)定义,而后在Rollout中调用它
◼ 运行某次特定的交付过程时,Argo Rollouts会将该Rollout调用的AnalysisTemplate实例化为AnalysisRun(CRD)
![]()
AnalysisTemplate CRD资源规范
#AnalysisTemplate期望状态中的可用字段
◼ metrics <[]Object>:必选字段,定义用于对交付效果进行分析的指标,常用的嵌套字段有如下几个
◆name <string>:指标名称,必选字段;
◆provider <Object>:指标供应方,支持prometheus、web、job和graphite等,使用prometheus时支持嵌套如下字段
⚫ address <string>:Prometheus服务的访问入口
⚫ query <string>:向Prometheus服务发起的查询请求(PromQL)
◆successCondition <string>:测试结果为“成功”的条件表达式
◆interval <string>:多次测试时的测试间隔时长
◆count <integer>:总共测试的次数
◼ args <[]Object>:模板参数,模板内部引用的格式为“{{args.NAME}}”;可在调用该模板时对其赋值;
◆name <string>
◆value <string>
◆valueFrom <Object>
◼ dryRun <[]Object>:运行于dryRun模式的metric列表,这些metric的结果不会影响最终分析结果
◆metricName <string>
◼ measurementRetention <[]Object>:测量结果历史的保留数,dryRun模式的参数也支持历史结果保留
◆metricName <string>:指标名称
◆limit <integer>:保留数量
AnalysisTemplate资源与AnalysisRun CRD
#示例说明
◼ 定义了一个名为service-name的参数
◆用于传递要测量的服务的名称
◼ 定义了success-rate指标
◆测试指定服务的请求成功率
◼ 每隔20s查询一次prometheus服务,共执行三次
◼ 成功条件为:第1个指标(下标为0)的结果值大于等于0.95
◼ 遇到3次错误即终止进一步的测试
#AnalysisRun CRD
◼ 配置格式与AnalysisTemplaste大致相同,所不同的是,AnalysisRun用于调用并实例化分析模板