kubernetes基于nginx-ingress进行蓝绿部署/金丝雀发布
测试结果汇总分析:
1、正式/灰度各一个pod ,canary权重设置 30%
发送500个请求 ,canary占147个
发送1000个请求,canary占293个

2、正式pod1个/canary 2个 ,canary权重占比 30%
发送500个请求,canary占71+72=143个
发送1000个请求,canary占139 + 138 = 277个

[root@master1 test]# cat xc-test-ingress.yaml
# source: kubernetes/templates/ingress.yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:name: ops-sre-ngconf2namespace: yidian-prodannotations:kubernetes.io/ingress.class: ingress-nginx1nginx.ingress.kubernetes.io/configuration-snippet: |add_header Cache-Control no-cache;access_log /var/log/nginx/test.int.test.com.access.log upstreaminfo;error_log  /var/log/nginx/test.int.test.com.error.log;
spec:rules:- host: "test.int.test.com"http:paths:- path: /backend:serviceName: ops-sre-ngconf2servicePort: 80
[root@master1 test]# cat xc-test-canary-ingress.yaml
# source: kubernetes/templates/ingress.yaml
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:name: ops-sre-ngconf2-canarynamespace: yidian-prodannotations:kubernetes.io/ingress.class: ingress-nginx1nginx.ingress.kubernetes.io/canary: "true"nginx.ingress.kubernetes.io/canary-weight: "30"nginx.ingress.kubernetes.io/configuration-snippet: |access_log /var/log/nginx/test.int.test.com.access.log upstreaminfo;error_log  /var/log/nginx/test.int.test.com.error.log;
spec:rules:- host: "test.int.test.com"http:paths:- path: /backend:serviceName: ops-sre-ngconf2-canaryservicePort: 80

----------------------------------

3、要求:所有带有“version:canary”请求头的请求,都打到灰度的pod上面

实现逻辑:

  1. 在ingress的配置文件中添加配置

    nginx.ingress.kubernetes.io/canary-by-header: "version"
    nginx.ingress.kubernetes.io/canary-by-header-value: "canary"
  2. 测试的ingress配置文件
    [root@master1 test]# cat xc-test-canary-ingress.yaml
    # source: kubernetes/templates/ingress.yaml
    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:name: ops-sre-ngconf2-canarynamespace: yidian-prodannotations:kubernetes.io/ingress.class: ingress-nginx1nginx.ingress.kubernetes.io/canary: "true"nginx.ingress.kubernetes.io/canary-by-header: "version"nginx.ingress.kubernetes.io/canary-by-header-value: "canary"nginx.ingress.kubernetes.io/canary-weight: "30"nginx.ingress.kubernetes.io/configuration-snippet: |access_log /var/log/nginx/test.int.test.com.access.log upstreaminfo;error_log  /var/log/nginx/test.int.test.com.error.log;
    spec:rules:- host: "test.int.test.com"http:paths:- path: /backend:serviceName: ops-sre-ngconf2-canaryservicePort: 80

    3、测试命令及结果

    命令:curl -H "version:canary" test.int.test.com/index.html

    结果:压测500次,所有请求都打到了灰度的pod上面

4、要求:对请求头的内容进行正则匹配

实现逻辑:

  1. 在ingress的配置文件中添加配置

    nginx.ingress.kubernetes.io/canary-by-header-pattern: "canary*"⚠️:当使用正则进行配置时,一定要将canary-by-header-value去掉,否则正则匹配将被忽略
  2. 测试的ingress配置文件
    [root@master1 test]# cat xc-test-canary-ingress.yaml
    # source: kubernetes/templates/ingress.yaml
    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:name: ops-sre-ngconf2-canarynamespace: yidian-prodannotations:kubernetes.io/ingress.class: ingress-nginx1nginx.ingress.kubernetes.io/canary: "true"nginx.ingress.kubernetes.io/canary-by-header: "version"#nginx.ingress.kubernetes.io/canary-by-header-value: "canary"nginx.ingress.kubernetes.io/canary-by-header-pattern: "canary*"nginx.ingress.kubernetes.io/canary-weight: "30"nginx.ingress.kubernetes.io/configuration-snippet: |access_log /var/log/nginx/test.int.test.com.access.log upstreaminfo;error_log  /var/log/nginx/test.int.test.com.error.log;
    spec:rules:- host: "test.int.test.com"http:paths:- path: /backend:serviceName: ops-sre-ngconf2-canaryservicePort: 80
  3. 测试命令及结果

    命令:for  i in `seq 100`;do curl -H "version:canary123123" test.int.test.com/index.html ;done
    结果:压测500次,所有请求都打到了灰度的pod上面

nginx-ingress蓝绿部署权重测试相关推荐

  1. nginx应用:使用nginx进行蓝绿部署

    这篇文章介绍一下蓝绿部署以及使用nginx如何最简单地模拟一下蓝绿部署的方式 蓝绿部署 蓝绿部署的重点在于如下特点 1. 蓝色版本和绿色版本同时存在 2. 实际运行的环境为蓝或则绿,只能为其中之一,通 ...

  2. 蓝绿部署、红黑部署、AB测试、灰度发布、金丝雀发布、滚动发布的概念与区别

    在有关微服务.DevOps.Cloud-native.系统部署等的讨论中,蓝绿部署.A/B 测试.灰度发布.滚动发布.红黑部署等概念经常被提到,它们有什么区别呢?通过搜索相关资料,做一个简单的辨析,如 ...

  3. 微服务下蓝绿部署、红黑部署、AB测试、灰度发布、金丝雀发布、滚动发布的概念与区别...

    更多内容关注微信公众号:fullstack888 在有关微服务.DevOps.Cloud-native的迭代过程中,不可避免的需要"上线",上线就需要部署,需要部署就意味着有修改, ...

  4. 蓝绿部署、红黑部署、AB测试、灰度发布、金丝雀发布、滚动发布的概念与区别...

    蓝绿部署.红黑部署.AB测试.灰度发布.金丝雀发布.滚动发布的概念与区别 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/wangyinghong_2 ...

  5. 科普:蓝绿部署、金丝雀发布(灰度发布)、A/B测试

    蓝绿部署(Blue-green Deployments) 蓝绿部署的目的是减少发布时的中断时间.能够快速撤回发布. It's basically a technique for releasing y ...

  6. 蓝绿部署、AB测试、灰度发布、⾦丝雀发布、滚 动发布的概念与区别

    ⼀.蓝绿部署(Blue/Green Deployment) 过去的 10 年⾥,很多公司都在使⽤蓝绿部署(发布)来实现热部署,这种部署⽅式具有安全.可靠的特点.蓝绿部署虽然算不上" Sliv ...

  7. 蓝绿部署、金丝雀发布(灰度发布)、A/B测试的准确定义

    作者: 李佶澳   转载请保留:原文地址   发布时间:2018/10/23 14:02:00 说明 蓝绿部署 金丝雀发布 A/B测试 参考 说明 蓝绿部署.A/B测试.金丝雀发布,以及灰度发布.流量 ...

  8. 【项目实战】正确辨析蓝绿部署、金丝雀发布(灰度发布)、滚动发布、A/B测试

    一.背景 蓝绿部署.A/B测试.金丝雀发布,以及灰度发布.流量切分等,经常被混为一谈,影响沟通效率. 根本原因是这些名词经常出现,人们耳熟能详能够熟练地谈起,对这些术语的理解却没有达成一致. 下面是从 ...

  9. 蓝绿部署、金丝雀发布(灰度发布)、AB测试……

    点击关注公众号,Java干货及时送达 来源 | https://www.jianshu.com/p/0df88fe4a1e3 随着微服务架构的普及,线上服务越来越多,随之而来的就是部署越来越频繁:随着 ...

最新文章

  1. numpy使用[]语法索引二维numpy数组中指定数据列的数值内容(accessing the specific column in numpy array)
  2. opengl纹理示例
  3. Oracle数据库的性能调整
  4. less编译工具koala(考拉)和rem的使用
  5. petshop学习笔记(1)
  6. BZOJ3172lg3966 TJOI单词(广义后缀自动机)
  7. 《Linux就该这么学》培训笔记_ch18_使用MariaDB数据库管理系统
  8. 12)hInstance和hWnd写进子类
  9. (转)任正非圣诞文章:千古兴亡多少事,一江春水向东流,为轮值CEO鸣锣开道...
  10. c语言调用DOS命令删除文件,DOS删除命令怎么使用?用DOS命令删除文件的方法
  11. iconfont下载的本地文件的ttf、woff、woff2转换成base64位后引入iconfont.css使用
  12. python multiprocessing dummy Pool 使用
  13. 二级分销系统开发源码可以用多久?
  14. 2020年11月 工信部考试——Hadoop(数据应用技术)中级认证 1
  15. IFA与“色“俱进,三星“量子点+曲面”如何掀起新变革?
  16. python爬取网易云音乐百强榜单
  17. 干货!手把手教你穿透内网
  18. 『现学现忘』Shell编程 — 22、基础正则表达式
  19. 有趣的黑掉卫星Hack-A-Sat CTF比赛——模拟卫星视角beckley
  20. 猛学亚马逊:顾客至上 Obsession over customers

热门文章

  1. 水之城 Aquatico V1.009.0 官方中文 免安装【4.04G】
  2. linux离线安装svn客户端和通过命令行使用svn
  3. SpringCloud-alibaba-Nacos 从理论到落地使用
  4. 软件测试思想者 - 中国科学院院士、人体病理学家卞修武开讲有感
  5. charles 手机安装证书无下载提示
  6. 工作方法和习惯的打磨与总结
  7. 何不动手搭建一个家庭服务器?记录期间的遇到的各种坑
  8. disown,fg,bg
  9. Excel的某列拼成逗号分隔的字符串
  10. Vscode 配置 matlab 环境