4.2. 使用 OpenShift 路由将 Argo Rollouts 配置为路由流量
您可以使用 OpenShift Routes 配置 Argo Rollouts 来创建路由、推出部署和服务。
以下示例步骤会创建一个路由、推出部署和两个服务。然后,它会将流量增加的百分比路由到应用的 canary 版本,然后该 Canary 状态标记为成功,并成为新的稳定版本。
先决条件
- 以管理员身份登录到 OpenShift Container Platform 集群。
- 您已在 OpenShift Container Platform 集群上安装了 Red Hat OpenShift GitOps。
- 您已在 OpenShift Container Platform 集群中安装了 Argo Rollouts。如需更多信息,请参阅"创建 RolloutManager 自定义资源"。
- 您已在系统上安装了 Red Hat OpenShift GitOps CLI。如需更多信息,请参阅"安装 GitOps CLI"。
- 您已在系统中安装了 Argo Rollouts CLI。如需更多信息,请参阅"Argo Rollouts CLI 概述"。
流程
创建
Route
对象。-
在 Web 控制台的 Administrator 视角中,点 Networking
Routes。 - 点击 Create Route。
在 Create Route 页面中,点 YAML 视图 并添加以下片断:以下示例创建一个名为
rollouts-demo-route
的路由:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 单击 Create 以创建路由。然后,它会在 Routes 页面中显示。
-
在 Web 控制台的 Administrator 视角中,点 Networking
创建要在路由中引用的服务 Canary 和 stable。
-
在 Web 控制台的 Administrator 视角中,点 Networking
Services。 - 点 Create Service。
在 Create Service 页面上,单击 YAML 视图 并添加以下代码片段:以下示例创建一个名为
argo-rollouts-canary-service
的 canary 服务。Canary 流量定向到此服务。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要确保
Route
对象中指定的 canary 服务的名称与Service
对象中指定的 Canary 服务的名称匹配。单击 Create 以创建 Canary 服务。
rollouts 会自动使用 canary
ReplicaSet
的 pod 模板哈希更新创建的服务。例如:rollouts-pod-template-hash: 7bf84f9696
。重复这些步骤以创建 stable 服务:以下示例创建一个名为
argo-rollouts-stable-service
的 stable 服务。稳定的流量定向到此服务。Copy to Clipboard Copied! Toggle word wrap Toggle overflow 重要确保
Route
对象中指定的稳定服务名称与Service
对象中指定的 stable 服务的名称匹配。点 Create 创建 stable 服务。
rollouts 会自动使用 stable
ReplicaSet
的 pod 模板哈希更新创建的服务。例如:rollouts-pod-template-hash: 1b6a7733
。
-
在 Web 控制台的 Administrator 视角中,点 Networking
创建
Rollout
CR 以引用Route
和Service
对象。-
在 Web 控制台的 Administrator 视角中,进入 Operators
Installed Operators Red Hat OpenShift GitOps Rollout。 在 Create Rollout 页面上,点 YAML view 并添加以下代码片段:以下示例创建一个名为
rollouts-demo
的Rollout
CR:Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 点 Create。
- 在 Rollout 选项卡中,验证 rollout 的 Status 字段显示 Phase: Healthy。
-
在 Web 控制台的 Administrator 视角中,进入 Operators
验证路由是否将 100% 的流量定向到应用程序的稳定版本。
注意创建
Rollout
资源的第一个实例时,rollout 规定了定向到 stable 和 canary 应用程序版本的流量数量。在初始实例中,Rollout
资源的创建会将所有流量路由到应用程序的稳定版本,并跳过流量发送到 canary 版本的部分。通过修改推出部署中部署的容器镜像,模拟应用程序的新 canary 版本。
-
在 Web 控制台的 Administrator 视角中,进入 Operators
Installed Operators Red Hat OpenShift GitOps Rollout。 选择现有的 Rollout 并将
.spec.template.spec.containers.image
值从argoproj/rollouts-demo:blue
改为argoproj/rollouts-demo:yellow
。因此,在 rollout 中部署的容器镜像会被修改,rollout 会启动新的 canary 部署。
注意根据
Rollout
资源的.spec.strategy.canary.steps
字段中定义的setWeight
属性,最初向路由的流量达到 canary 版本,70% 的流量被定向到稳定版本。rollout 在有 30% 的流量被定向到 Canary 版本后暂停。带有 30% 的流量的路由会定向到 Canary 版本,70% 定向到稳定版本。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
-
在 Web 控制台的 Administrator 视角中,进入 Operators
在 Argo Rollouts CLI 中运行以下命令来模拟另一个新的 canary 版本:
oc argo rollouts promote rollouts-demo -n <namespace>
$ oc argo rollouts promote rollouts-demo -n <namespace>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定定义
Rollout
资源的命名空间。
在 stable 版本中,这会将 canary 版本和 40% 的流量权重增加到 60%。
带有 60% 的流量的路由定向到 Canary 版本,40% 定向到稳定版本。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 运行以下命令,将 canary 版本中的流量权重增加到 100%,并丢弃应用程序的旧稳定版本中的流量:
oc argo rollouts promote rollouts-demo -n <namespace>
$ oc argo rollouts promote rollouts-demo -n <namespace>
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定定义
Rollout
资源的命名空间。
带有 0% 的流量的示例路由定向到 Canary 版本,100% 定向到稳定版本。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow