云容器引擎 CCE-ELB Ingress配置灰度发布:灰度发布服务部署
时间:2024-05-31 08:37:31
灰度发布服务部署
- 部署原服务。
- 部署名为origin-server的工作负载。
- 部署名为origin-service的service,关联刚创建的origin-server工作负载。(CCE Standard集群创建nodeport类型Service,Turbo集群创建ClusterIP类型Service)
- 部署名为origin-ingress的Ingress,关联刚创建的origin-service服务。
Ingress的配置如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: origin-ingress namespace: default annotations: kubernetes.io/elb.port: '81' kubernetes.io/elb.id: e491f4e7-2351-4984-ad0a-8569e5e964a3 kubernetes.io/elb.class: performance spec: rules: - host: nginx1.com http: paths: - path: / backend: service: name: origin-service port: number: 81 property: ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH pathType: ImplementationSpecific ingressClassName: cce
- 灰度发布新版本服务。
部署新版本工作负载、服务和Ingress,使得流量能够通过权重或者头域导流到新版本服务上。
- 部署名为canary-server的工作负载。
- 部署名为canary-service的服务,关联刚创建的canary-server工作负载。(CCE Standard集群创建nodeport类型Service,Turbo集群创建ClusterIP类型Service)
- 部署名为canary-weight-ingress的Ingress,关联刚创建的canary-service服务,实现权重灰度发布。
Ingress的配置如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: canary-weight-ingress namespace: default annotations: kubernetes.io/elb.canary: 'true' // 设置为true,表示启用canary注解功能。 kubernetes.io/elb.canary-weight: '40' // 权重值设置,表示对应请求40%的流量将被导流到新版本服务上。 kubernetes.io/elb.class: performance // 仅独享型ELB支持灰度发布 kubernetes.io/elb.id: e491f4e7-2351-4984-ad0a-8569e5e964a3 kubernetes.io/elb.port: '81' spec: ingressClassName: cce rules: - host: nginx1.com http: paths: - path: / pathType: ImplementationSpecific backend: service: name: canary-service port: number: 81 property: ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
- 部署名为canary-header-ingress的Ingress,关联刚创建的canary-service服务,实现Header灰度发布。
Ingress的配置如下:
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: canary-header-ingress namespace: default annotations: kubernetes.io/elb.canary: 'true' kubernetes.io/elb.canary-by-header: 'location' // header的key值设置为location kubernetes.io/elb.canary-by-header-value: '{"values":["hz","sz","sh"]}' // header的value值设置为hz、sz、sh kubernetes.io/elb.class: performance kubernetes.io/elb.id: e491f4e7-2351-4984-ad0a-8569e5e964a3 kubernetes.io/elb.port: '81' spec: ingressClassName: cce rules: - host: nginx1.com http: paths: - path: / pathType: ImplementationSpecific backend: service: name: canary-service port: number: 80 property: ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH
- 查看灰度发布新版本服务是否成功。
- 查看Ingress创建:
$ kubectl get ingress NAME CLASS HOSTS ADDRESS PORTS AGE canary-header-ingress cce nginx1.com 88.88.88.165 80 46s canary-weight-ingress cce nginx1.com 88.88.88.165 80 117s origin-ingress cce nginx1.com 88.88.88.165 80 2m25s
- 查看ELB生成规则:
- 服务请求返回结果:
- 使用location:hz请求头的请求访问服务:
$ curl -H "Host: nginx1.com" -H "location: hz" http://88.88.88.165:81/
- 预期结果:
$ new
多次访问,返回结果均为new
- 不使用请求头的请求访问服务:
$ curl -H "Host: nginx1.com" http://88.88.88.165:81/
- 预期结果:返回值40%为new,60%为old。
- 使用location:hz请求头的请求访问服务:
- 查看Ingress创建:
- 老版本服务下线。
新版本服务运行稳定后,需要下线老版本服务。下线流程将原服务Ingress中的Service修改为新版本服务的Service,使流量都路由到新版本服务上,然后删除灰度Ingress。
- 将原服务Ingress关联的Service更新为新版本Service。
apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: origin-ingress namespace: default annotations: kubernetes.io/elb.port: '81' kubernetes.io/elb.id: e491f4e7-2351-4984-ad0a-8569e5e964a3 kubernetes.io/elb.class: performance spec: rules: - host: nginx1.com http: paths: - path: / backend: service: name: canary-service port: number: 81 property: ingress.beta.kubernetes.io/url-match-mode: STARTS_WITH pathType: ImplementationSpecific ingressClassName: cce
- 验证老版本服务是否下线完成。
- 使用带header和不带header的请求,多次访问。
$ curl -H "Host: nginx1.com" -H "location: hz" http://88.88.88.165:81/ $ curl -H "Host: nginx1.com" http://88.88.88.165:81/
- 预期结果:输出均为new,无old返回。
- 使用带header和不带header的请求,多次访问。
- 确认老版本服务下线完成后,删除灰度发布Ingress。
$ kubectl delete ingress canary-weight-ingress canary-header-ingress
- 将原服务Ingress关联的Service更新为新版本Service。
support.huaweicloud.com/usermanual-cce/cce_10_0736.html
看了此文的人还看了
CDN加速
GaussDB
文字转换成语音
免费的服务器
如何创建网站
域名网站购买
私有云桌面
云主机哪个好
域名怎么备案
手机云电脑
SSL证书申请
云点播服务器
免费OCR是什么
电脑云桌面
域名备案怎么弄
语音转文字
文字图片识别
云桌面是什么
网址安全检测
网站建设搭建
国外CDN加速
SSL免费证书申请
短信批量发送
图片OCR识别
云数据库MySQL
个人域名购买
录音转文字
扫描图片识别文字
OCR图片识别
行驶证识别
虚拟电话号码
电话呼叫中心软件
怎么制作一个网站
Email注册网站
华为VNC
图像文字识别
企业网站制作
个人网站搭建
华为云计算
免费租用云托管
云桌面云服务器
ocr文字识别免费版
HTTPS证书申请
图片文字识别转换
国外域名注册商
使用免费虚拟主机
云电脑主机多少钱
鲲鹏云手机
短信验证码平台
OCR图片文字识别
SSL证书是什么
申请企业邮箱步骤
免费的企业用邮箱
云免流搭建教程
域名价格
推荐文章