美文网首页
蓝绿发布/灰度发布与Argo Rollouts

蓝绿发布/灰度发布与Argo Rollouts

作者: 一个大大大坑 | 来源:发表于2021-07-14 17:17 被阅读0次

    蓝绿发布/灰度发布与Argo Rollouts

    蓝绿发布:

    • 当前版本 v1 正常运行
    • 将新版本 v2 所有副本全部准备完成后
    • 切换负载均衡器所有流量指向 v2
    • 如果一切正常,则删除 v1,完成更新
    • 如果发生错误,则将所有流量切换回 v1,并停止本次更新。

    灰度发布:

    • 当前版本 v1 正常运行
    • 准备新版本 v2 (少量副本),将流量部分(百分比)切至 v2
    • 如果一切正常,则逐步增加流向 v2 版本的流量;直至全部流量切换至 v2,删除 v1 版本。
    • 如果发生错误,则减少流向 v2 版本的流量或停止本次升级;

    argo rollout

    argo rollout
    定义了一种新的资源Rollout,旨在代替 Deployment 功能,通过控制不同版本 replicasets 副本数量来实现策略化更新。

    其定义和 Deployment 极为相似,仅区别于strategy字段,可以理解为 Rollout 对 Deployment 的 strategy 功能进行了扩展。

    apiVersion: argoproj.io/v1alpha1 # Changed from apps/v1
    kind: Rollout # Changed from Deployment
    metadata:
      name: rollouts-demo
    spec:
      selector:
        matchLabels:
          app: rollouts-demo
      template:
        metadata:
          labels:
            app: rollouts-demo
        spec:
          containers:
            - name: rollouts-demo
              image: argoproj/rollouts-demo:blue
              ports:
                - containerPort: 8080
      strategy:
        canary: # Changed from rollingUpdate or recreate
          steps:
            - setWeight: 20
            - pause: {}
    

    https://argoproj.github.io/argo-rollouts/migrating/#convert-deployment-to-rollout

    argo rollout 支持从现有 Deployment 引用定义,以方便快速集成至 Rolllout。

    https://argoproj.github.io/argo-rollouts/migrating/#reference-deployment-from-rollout

    与 Deployment 相同 Rollout 借用了 kubernetes 原生资源 Service 来完成版本更新。

    Service 根据标签选择后端 Pod IPs,并对进入的请求进行负载均衡到 pod。回顾一下 Service 中存在的负载均衡:

    • 如果是基于 iptables 的 Service,service 使用了 iptables-extensions statistic 模块对所有 pod 设置权重。iptables 根据权重进行负载均衡。
    • 如果是基于 ipvs 的 Service,则是默认使用了 ipvs 的 rr 轮询算法进行负载均衡。

    在策略设置为蓝绿发布时:

    • 对 Rollout 中 pod 定义进行修改以触发更新
    • Rollout 创建新 Replicaset
    • 在新版本全部准备就绪后更新 Service 将所有流量切换至新 ReplicaSet。

    在策略设置为灰度发布时:

    • 在 Rollout 中灰度比例以及灰度调整间隔时间等
    • 对 Rollout 中 pod 定义进行修改以触发更新
    • Rollout 创建新 Replicaset,根据配置设置新旧副本数量比例。此时 Service 后端包含不同比例的副本数量。
    • 按照策略继续执行灰度更新,直至完全更新。

    除了上述的策略外,argo rollout 还提供了基于监控反馈的灰度更新等其他辅助功能。

    argo rollout 还提供了配置支持在 rollout 过程中进行 preview,即提供 preview service 对新版本进行访问以进行监控采样等工作。

    参考:

    相关文章

      网友评论

          本文标题:蓝绿发布/灰度发布与Argo Rollouts

          本文链接:https://www.haomeiwen.com/subject/sngypltx.html