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

2021-07-14  本文已影响0人  一个大大大坑

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

蓝绿发布:

灰度发布:

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 中存在的负载均衡:

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

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

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

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

参考:

上一篇下一篇

猜你喜欢

热点阅读