3.3. 更新推出部署
当您使用对 .spec.template.spec
字段的修改来更新 Rollout
自定义资源(CR)时,例如容器镜像版本,然后使用更新的容器镜像版本通过 ReplicaSet
创建新的 pod。
流程
通过修改推出部署中部署的容器镜像,模拟应用程序的新 canary 版本。
-
在 Web 控制台的 Administrator 视角中,进入 Operators
Installed Operators Red Hat OpenShift GitOps Rollout。 -
选择现有的
rollouts-demo
rollout,并在 YAML 视图中修改.spec.template.spec.containers.image
值从argoproj/rollouts-demo:blue
改为argoproj/rollouts-demo:yellow
。 单击 Save,然后单击 Reload。
在 rollout 中部署的容器镜像会被修改,rollout 会启动新的 canary 部署。
注意根据
Rollout
CR 的.spec.strategy.canary.steps
字段中定义的setWeight
属性,最初到路由的 20% 到达 canary 版本,并且 rollout 会无限期暂停,直到收到提升请求为止。带有 20% 的流量路由到 canary 版本和 rollout 的路由会无限期暂停,直到后续步骤中指定用于提升的请求
spec: replicas: 5 strategy: canary: 1 steps: 2 - setWeight: 20 3 - pause: {} 4 # (...)
-
在 Web 控制台的 Administrator 视角中,进入 Operators
运行以下命令监控推出部署的进度:
$ oc argo rollouts get rollout rollouts-demo --watch -n <namespace> 1
- 1
- 指定定义
Rollout
CR 的命名空间。
输出示例
Name: rollouts-demo Namespace: spring-petclinic Status: ॥ Paused Message: CanaryPauseStep Strategy: Canary Step: 1/8 SetWeight: 20 ActualWeight: 20 Images: argoproj/rollouts-demo:blue (stable) argoproj/rollouts-demo:yellow (canary) Replicas: Desired: 5 Current: 5 Updated: 1 Ready: 5 Available: 5 NAME KIND STATUS AGE INFO ⟳ rollouts-demo Rollout ॥ Paused 9m51s ├──# revision:2 │ └──⧉ rollouts-demo-6cf78c66c5 ReplicaSet ✔ Healthy 99s canary │ └──□ rollouts-demo-6cf78c66c5-zrgd4 Pod ✔ Running 98s ready:1/1 └──# revision:1 └──⧉ rollouts-demo-687d76d795 ReplicaSet ✔ Healthy 9m51s stable ├──□ rollouts-demo-687d76d795-75k57 Pod ✔ Running 9m50s ready:1/1 ├──□ rollouts-demo-687d76d795-jsxg8 Pod ✔ Running 9m50s ready:1/1 ├──□ rollouts-demo-687d76d795-rsgtv Pod ✔ Running 9m50s ready:1/1 └──□ rollouts-demo-687d76d795-xrmrj Pod ✔ Running 9m50s ready:1/1
rollout 现在处于暂停状态,因为 rollout 的更新策略配置中没有指定暂停持续时间。
重复上一步来测试新部署的应用程序版本,并确保它按预期工作。例如,通过浏览器与应用交互并尝试运行测试或观察容器日志来验证应用。
推出部署将保持暂停,直到您将其提升到下一步。
验证新版本应用程序是否按预期工作后,您可以决定是否继续提升或中止推出部署。因此,请按照 "Promoting the rollout" 或 "Manually abort the rollout" 中的说明进行操作。