3.2. 部署推出部署
作为集群管理员,您可以将 Argo Rollouts 配置为逐渐将用户流量的子集路由到新应用程序版本。然后您可以测试应用程序是否部署并正常工作。
以下示例步骤会创建一个 rollouts-demo
rollout 和 service。然后,推出部署会将 20% 的流量路由到应用程序的 canary 版本,等待手动提升,然后执行多个自动化提升,直到其将整个流量路由到新应用程序版本。
流程
-
在 Web 控制台的 Administrator 视角中,点 Operators
Installed Operators Red Hat OpenShift GitOps Rollout。 -
从 Project 下拉菜单中选择您要创建和配置
Rollout
自定义资源(CR)的项目。 点 Create Rollout,然后在 YAML 视图中输入以下配置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- rollout 必须使用的部署策略。
- 2
- 指定推出部署的步骤。这个示例逐步将 20%、40%、60% 和 80% 的流量路由到 Canary 版本。
- 3
- 必须定向到 Canary 版本的流量百分比。20 表示 20% 的流量被定向到 Canary 版本。
- 4
- 指定 Argo Rollouts 控制器,以无限期暂停,直到找到用于提升的请求。
- 5
- 指定 Argo Rollouts 控制器在 45 秒期间暂停 45 秒。您可以以秒为单位设置持续时间值(
s
)、分钟(m
)或小时(h
)。例如,您可以指定1h
,表示一小时。如果没有指定值,则持续时间值默认为 seconds。 - 6
- 指定要创建的 pod。
点 Create。
注意为确保推出部署在创建时快速可用,Argo Rollouts 控制器会自动将
argoproj/rollouts-demo:blue
初始容器镜像(在.spec.template.spec.containers.image
字段中指定)视为稳定版本。在初始实例中,Rollout
资源的创建会将所有流量路由到应用程序的稳定版本,并跳过流量发送到 canary 版本的部分。但是,对于所有后续应用程序升级,对.spec.template.spec.containers.image
字段进行修改,Argo Rollouts 控制器照常执行 canary 步骤。运行以下命令验证您的 rollout 是否已正确创建:
oc argo rollouts list rollouts -n <namespace>
$ oc argo rollouts list rollouts -n <namespace>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定定义
Rollout
资源的命名空间。
输出示例
NAME STRATEGY STATUS STEP SET-WEIGHT READY DESIRED UP-TO-DATE AVAILABLE rollouts-demo Canary Healthy 8/8 100 5/5 5 5 5
NAME STRATEGY STATUS STEP SET-WEIGHT READY DESIRED UP-TO-DATE AVAILABLE rollouts-demo Canary Healthy 8/8 100 5/5 5 5 5
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建以
rollouts-demo
rollout 为目标的 Kubernetes 服务。-
在 Web 控制台的 Administrator 视角中,点 Networking
Services。 点 Create Service,然后在 YAML 视图中输入以下配置:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 点 Create。
rollouts 会自动使用 canary
ReplicaSet
的 pod 模板哈希更新创建的服务。例如:rollouts-pod-template-hash: 687d76d795
。
-
在 Web 控制台的 Administrator 视角中,点 Networking
运行以下命令监控推出部署的进度:
oc argo rollouts get rollout rollouts-demo --watch -n <namespace>
$ oc argo rollouts get rollout rollouts-demo --watch -n <namespace>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定定义
Rollout
资源的命名空间。
输出示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 创建推出部署后,您可以验证 rollout 的 Status 字段显示 Phase: Healthy。
在 Rollout 选项卡中,验证
rollouts-demo
rollout 的 Status 字段显示为 Phase: Healthy。提示另外,您可以运行以下命令来验证 rollout 是否健康:
oc argo rollouts status rollouts-demo -n <namespace>
$ oc argo rollouts status rollouts-demo -n <namespace>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定定义
Rollout
资源的命名空间。
输出示例
Healthy
Healthy
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
现在,您可以执行 Rollout
CR 的 Canary 部署。