内容转自https://blog.csdn.net/jj_tyro/article/details/80136316, 并不断补充,感谢作者.

1.蓝绿部署

蓝绿部署实现的是全流量切换,适合于在测试完部署的服务新版本后,最少时间将流量切换到新的服务版本。

切换路由带来的问题是,如果一个请求尚未完成,能否实现graceful switch

针对服务生成Route

oc expose service serviceA --name=service
apiVersion: route.openshift.io/v1
kind: Route
name: bluegreen
namespace: bluegreen
spec:
host: service.192.168.42.65.nip.io
port:
targetPort: -tcp
to:
kind: Service
name: serviceA
weight:

在ServiceB测试没有问题的时候把路由切换成B

# switch service to serviceB
$ oc patch route/service -p '{"spec":{"to":{"name":"serviceB"}}}' # switch back to serviceA again
$ oc patch route/service -p '{"spec":{"to":{"name":"serviceA"}}}'

2.A/B部署

A/B部署得名于将应用功能新版本做为整体部署一部分、与旧版本并存线上进行测试的能力。通过这种方式,可以创建一个假定,执行A/B部署,测试假定是正确还是错误,以及回滚到初始应用部署(A)还是继续新版本应用部署(B)

分别创建route指到各自服务,然后进行测试

oc expose service serviceAroute --name=serviceA -l name='serviceA'
oc expose service serviceBroute --name=serviceB -l name='serviceB'

创建总体路由 serviceRoute,并指定分发策略

$ oc expose service serviceA --name='serviceroute' -l name='serviceroute'
$ oc annotate route/serivceroute haproxy.router.openshift.io/balance=roundrobin
$ oc set route-backends serviceroute serviceA= serviceB=

可以通过命令调整分发策略

oc set route-backends serviceroute --adjust serviceB=+%

界面上的设置如下

找到一个Route,然后在TLS下点击Edit

选择Alernate Service,会出现其他服务,默认的权重是50%,设定权重即可

3.金丝雀部署

金丝雀部署是一种类似于A/B部署的技术,可将变更缓慢地向部分用户推出,然后再将其推出到整个基础架构,并提供给所有人使用。

金丝雀部署策略可以根据具体的场景制定

  • 一个简单的策略是针对随机抽样用户来使用新版本 —— 这是A/B部署策略
  • 将新版本提供给内部测试人员,直接把他们流量导入serviceB路由,以进行测试
  • 在OpenShift里创建一个测试项目做为金丝雀,在测试通过之后再发布
  • 更复杂的方法是根据用户的个人资料和其他人口统计资料选择用户。

OpenShift蓝绿及灰度部署的更多相关文章

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

    出处:https://www.baidu.com/link?url=QjboallwNm_jxcL3fHG57wEakiBfAs_3-TChTGu1eBXstlHEsGBc-NDA7AKTqsiroB ...

  2. 蓝绿部署、A/B测试以及灰度发布(金丝雀发布)

    过去的10多年里,很多大公司都在使用蓝绿部署,安全.可靠是这种部署方式的特点.蓝绿部署虽然算不上”Sliver Bullet“,但确实很实用.在有关于“微服务”.“DevOps”.“Cloud-nat ...

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

    本文转载自蓝绿部署.金丝雀发布(灰度发布).A/B测试的准确定义 概述 蓝绿部署.A/B测试.金丝雀发布,以及灰度发布.流量切分等,经常被混为一谈,影响沟通效率. 根本原因是这些名词经常出现,人们耳熟 ...

  4. 蓝绿部署、滚动部署、金丝雀(Canary)发布、灰度发布、A/B测试

    最近看到Canary发布,一时没有反应过来是什么,一查才发现就是鼎鼎有名的金丝雀发布,发现经常一起出现的还有灰度发布.蓝绿部署.滚动部署.A/B测试,故一起学习一下这几个概念. 1. 蓝绿部署 目的: ...

  5. Contour 学习笔记(二):使用级联功能实现蓝绿部署和金丝雀发布

    上篇文章介绍了 Contour 分布式架构的工作原理,顺便简单介绍了下 IngressRoute 的使用方式.本文将探讨 IngressRoute 更高级的用法,其中级联功能是重点. 1. Ingre ...

  6. 手把手教你在 TKE 集群中实现简单的蓝绿发布和灰度发布

    概述 如何在腾讯云 Kubernetes 集群实现蓝绿发布和灰度发布?通常要向集群额外部署其它开源工具来实现,比如 Nginx Ingress,Traefik 等,或者让业务上 Service Mes ...

  7. Kubernetes 中的渐进式交付:蓝绿部署和金丝雀部署

    渐进式交付是持续交付的下一步, 它将新版本部署到用户的一个子集,并在将其滚动到全部用户之前对其正确性和性能进行评估, 如果不匹配某些关键指标,则进行回滚. 这里有一些有趣的项目,使得渐进式交付在 Ku ...

  8. 持续部署入门:基于 Kubernetes 实现蓝绿发布

    前言 软件世界比以往任何时候都更快.为了保持竞争力,需要尽快推出新的软件版本,而不会中断活跃用户访问,影响用户体验.越来越多企业已将其应用迁移到 Kubernetes. 在 Kubernetes 中有 ...

  9. 蓝 / 绿部署(Blue/Green) 金丝雀发布(Canary Release) 功能标记(Feature Flagging)

    https://www.cnblogs.com/apanly/p/8784096.html 最终,我选择了 GraphQL 作为企业 API 网关 蓝 / 绿部署(Blue/Green) 金丝雀发布( ...

随机推荐

  1. Hibernate检索策略与检索方式

    hibernate的Session在加载Java对象时,一般都会把鱼这个对象相关联的其他Java对象也都加载到缓存中,以方便程序的调用.但很多情况下,我们不需要加载太多无用的对象到缓存中,一来会占用大 ...

  2. lnmp的安装--php

    1.下载php源码 wget http://cn2.php.net/distributions/php-5.6.3.tar.gz tar zxvf php-5.6.3.tar.gz cd php-5. ...

  3. GZIP压缩占用CPU大吗?

    http://blog.csdn.net/hguisu/article/details/7793038 Filter之——GZIP全站压缩 http://www.cnblogs.com/jbelial ...

  4. magento后台语言

    Magento后台自身携带了一个语言切换的功能,见后台左下角 你会发现长长的一串,其中绝大多数语言你可能根本没有机会用到,而你想要从中文切换到英文时,每次都要瞪大眼睛去找英文在下拉框的哪个位置,所以精 ...

  5. C# CreateProcess的测试

    很奇怪的一个现象,在C#中使用Process来启动进程,启动文件名必须是系统指定的扩展名.EXE,而我使用原生的Win32API ::CreateProcess ()并没有这个限制,以后遇到类似的问题 ...

  6. POJ3468 A Simple Problem with Interger [树状数组,差分]

    题目传送门 A Simple Problem with Integers Time Limit: 5000MS   Memory Limit: 131072K Total Submissions: 1 ...

  7. 【我要学python】面对对象编程之继承和多态

    class animal(object): def run(): print('animal is running...') class dog(animal): def run(self): pri ...

  8. 【应用】wamp3.x.x设置,让外网能够访问本服务器

    开始教程前,先来看一看本机的运行环境. WAMP 32位版 3.0.6 WIN7 x86 企业版 其他VC运行库全部安装,NET装了3.5以及4.0,还有一些运行库这里省略 ——我是华丽的分割线——— ...

  9. Ajax使用进阶

    关于Ajax的概念不再做解释了,我想通过三个小例子来让大家对Ajax有个清晰的认识.要学习它,必须从最基础最原始的方式开始认识,然后通过使用框架来提升效率,逐步认识它. 一.原生js版(注册的用户名是 ...

  10. 洛谷——P1958 上学路线_NOI导刊2009普及(6)

    P1958 上学路线_NOI导刊2009普及(6) 题目描述 你所在城市的街道好像一个棋盘,有a条南北方向的街道和b条东西方向的街道.南北方向的a条街道从西到东依次编号为l到a,而东西方向的b条街道从 ...