文章都可以转载、引用,标明转载出处即可。

K8S蓝绿发布

Kubernetes Mr.c 337℃ 0评论

蓝绿原理:创建新旧两套deployment和service,通过ingress层面直接进行权重分流,验证无误后将流量完全导向新服务
ingress上的配置如下:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  annotations:
    nginx.ingress.kubernetes.io/service-weight: |
      cnyunwei-svc:100,cnyunwei-new:50
  name: cnyunwei.cc-ingress
  namespace: qa
spec:
  rules:
    - host: www.cnyunwei.cc
      http:
        paths:
          - backend:
              serviceName: cnyunwei-svc
              servicePort: 8002
            path: /
          - backend:
              serviceName: cnyunwei-new
              servicePort: 8002
            path: /

这里只是实现了ingress层面分流,实际应用中需要结合CI/CD 实现自动化。

灰度发布

灰度发布的原理是类似的,灰度不过是需要长期保留两个版本,且灰度发布需要请求方配合,一般是需要在请求的header增加参数或者cookie 上定义,ingress匹配到响应参数分流到新的服务上。

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: gray-release
  annotations:
    # 请求头中满足正则匹配foo=bar的请求才会被路由到新版本服务cnyunwei-new中
    nginx.ingress.kubernetes.io/service-match: | 
      cnyunwei-new: header("foo", /^bar$/)
  namespace: qa
spec:
  rules:
    - host: www.cnyunwei.cc
      http:
        paths:
        #老版本
          - backend:
              serviceName: cnyunwei-svc
              servicePort: 8002
            path: /
         #新版本
          - backend:
              serviceName: cnyunwei-new
              servicePort: 8002
            path: /

转载请注明:菜鸟运维网 » K8S蓝绿发布

喜欢 (263)
发表我的评论
取消评论

表情

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址