3.3. 更新推出部署


当您使用对 .spec.template.spec 字段的修改来更新 Rollout 自定义资源(CR)时,例如容器镜像版本,然后使用更新的容器镜像版本通过 ReplicaSet 创建新的 pod。

流程

  1. 通过修改推出部署中部署的容器镜像,模拟应用程序的新 canary 版本。

    1. 在 Web 控制台的 Administrator 视角中,进入 Operators Installed Operators Red Hat OpenShift GitOps Rollout
    2. 选择现有的 rollouts-demo rollout,并在 YAML 视图中修改 .spec.template.spec.containers.image 值从 argoproj/rollouts-demo:blue 改为 argoproj/rollouts-demo:yellow
    3. 单击 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
        # (...)

      1
      rollout 必须使用的部署策略。
      2
      推出部署的步骤。这个示例逐步将 20%、40%、60% 和 80% 的流量路由到 Canary 版本。
      3
      必须定向到 Canary 版本的流量百分比。20 表示 20% 的流量被定向到 Canary 版本。
      4
      Argo Rollouts 控制器的规格,以无限期暂停,直到找到用于提升的请求。
  2. 运行以下命令监控推出部署的进度:

    $ 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 的更新策略配置中没有指定暂停持续时间。

  3. 重复上一步来测试新部署的应用程序版本,并确保它按预期工作。例如,通过浏览器与应用交互并尝试运行测试或观察容器日志来验证应用。

    推出部署将保持暂停,直到您将其提升到下一步。

验证新版本应用程序是否按预期工作后,您可以决定是否继续提升或中止推出部署。因此,请按照 "Promoting the rollout" 或 "Manually abort the rollout" 中的说明进行操作。

Red Hat logoGithubRedditYoutubeTwitter

学习

尝试、购买和销售

社区

关于红帽文档

通过我们的产品和服务,以及可以信赖的内容,帮助红帽用户创新并实现他们的目标。

让开源更具包容性

红帽致力于替换我们的代码、文档和 Web 属性中存在问题的语言。欲了解更多详情,请参阅红帽博客.

關於紅帽

我们提供强化的解决方案,使企业能够更轻松地跨平台和环境(从核心数据中心到网络边缘)工作。

© 2024 Red Hat, Inc.