TT Lab
开始
学习 学习路径 课程

CAPA — Argo 项目认证助理

亲眼看金丝雀真的滚起来

在 TT Lab 中继续学习

本实验运行在真正的 Argo Rollouts 上

VM 中实际运行着 Rollouts 控制器。Pod 会真正启动, 分析会创建 Job 来作出判定,并在失败时真正回滚。

前一模块的 Rollouts 实验运行在模拟集群中。由于 Pod 不会启动, 无法观察金丝雀占多少比例;更重要的是,分析根本不会运行—— 分析需要创建 Job 并根据其结果作出判定,而 Job 无法运行,也就无从判定。 自动回滚是 CAPA 的核心,但此前的实验完全缺少这一环。

首次启动大约需要 3 分钟。

已准备的环境

네임스페이스   demo
컨트롤러       argo-rollouts 네임스페이스
CLI            kubectl argo rollouts
미리 받은 이미지 argoproj/rollouts-demo 의 blue · yellow · red, busybox:1.36

目标

从金丝雀发布到自动回滚,都通过实际运行来验证。

步骤

  1. 创建 Rollout,并将首次发布的不同之处记录到 /root/capa/first.txt。
  2. 更换镜像,并将金丝雀以实际 Pod 数量呈现的结果记录到 /root/capa/canary.txt。
  3. 继续已暂停的发布,并将过程记录到 /root/capa/promote.txt。
  4. 添加成功的分析,并将通过结果记录到 /root/capa/analysis.txt。
  5. 通过失败的分析触发自动回滚,并将结果记录到 /root/capa/rollback.txt。
  6. 将 abort 与 undo 的区别记录到 /root/capa/abort.txt。
  7. 使用蓝绿发布让两个版本同时运行,并将结果记录到 /root/capa/bluegreen.txt。
  8. 在 /root/capa/report.md 中写入 canary_pods=、auto_rollback=yes、bluegreen_paused=yes 三行及相关说明。

参考

首次发布会跳过金丝雀步骤

创建 Rollout,并将首次发布的不同之处记录到 /root/capa/first.txt。

如果没有可供比较的稳定版本,也就没有可以拆分的流量。

25% 对应多少个 Pod

更换镜像,并将金丝雀以实际 Pod 数量呈现的结果记录到 /root/capa/canary.txt。

权重表示流量比例,但没有流量路由时,会用 Pod 数量近似。

继续已暂停的发布

继续已暂停的发布,并将过程记录到 /root/capa/promote.txt。

promote 推进一个步骤,promote --full 则推进所有剩余步骤。

让系统代替人工作出判定

添加成功的分析,并将通过结果记录到 /root/capa/analysis.txt。

AnalysisTemplate 的 job 提供程序会创建 Job,并根据退出代码作出判定。

失败时自动回滚

通过失败的分析触发自动回滚,并将结果记录到 /root/capa/rollback.txt。

分析失败后,Rollout 会变为 Degraded 并回到稳定版本。规范仍保持不变。

abort 与 undo 并不相同

将 abort 与 undo 的区别记录到 /root/capa/abort.txt。

一个只恢复流量,另一个连规范也一起回滚。

两个版本同时运行

使用蓝绿发布让两个版本同时运行,并将结果记录到 /root/capa/bluegreen.txt。

创建 activeService 和 previewService 后,控制器会代为调整选择器。

回顾所学内容

在 /root/capa/report.md 中写入 canary_pods=、auto_rollback=yes、bluegreen_paused=yes 三行及相关说明。

写入 canary_pods=、auto_rollback=yes、bluegreen_paused=yes 三行及相关说明。