我的编程空间,编程开发者的网络收藏夹
学习永远不晚

F5与Openshift集成怎么实现灰度发布

短信预约 -IT技能 免费直播动态提醒
省份

北京

  • 北京
  • 上海
  • 天津
  • 重庆
  • 河北
  • 山东
  • 辽宁
  • 黑龙江
  • 吉林
  • 甘肃
  • 青海
  • 河南
  • 江苏
  • 湖北
  • 湖南
  • 江西
  • 浙江
  • 广东
  • 云南
  • 福建
  • 海南
  • 山西
  • 四川
  • 陕西
  • 贵州
  • 安徽
  • 广西
  • 内蒙
  • 西藏
  • 新疆
  • 宁夏
  • 兵团
手机号立即预约

请填写图片验证码后获取短信验证码

看不清楚,换张图片

免费获取短信验证码

F5与Openshift集成怎么实现灰度发布

这期内容当中小编将会给大家带来有关F5与Openshift集成怎么实现灰度发布,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。

一、为什么要使用灰度发布
F5与Openshift集成怎么实现灰度发布

  • 什么是灰度发布
    灰度发布是指在黑与白之间,能够平滑过渡的一种发布方式。ABtest就是一种灰度发布方式,让一部分用户继续用A,一部分用户开始用B,如果用户对B没有什么反对意见,那么逐步扩大范围,把所有用户都迁移到B上面来。灰度发布可以保证整体系统的稳定,在初始灰度的时候就可以发现、调整问题,以保证其影响度。

  • 灰度发布的价值
    使用灰度发布可以在产品正式上线前针对特定一些目标用户进行开放,获得这些目标用户的反馈,及早发现问题,修复问题,完善产品的不足。如果发现新的版本价值不大,能够及早更换思路,避免产品直接上线后产生不好的影响。

  • Openshift Route自带的灰度发布功能

    Openshift Route自带的灰度发布,是通过Route下“挂载”两个或两个以上Service,并调整各个Service的权值进行控制流量的分布。

    例如应用有两个服务,分别为service-v1和service-v2,其中service-v2为新版本。通过不断放大service-v2的权值,观察用户的反馈,及时发现service-v2中的问题,并完善修复,最终service-v2承载所有service-v1的流量,实现服务的升级。通过这种方式,可以大大地降低service-v2中的问题对客户产生的影响。

    Openshift Route对Service分流使用非常方便,一些普通的业务完全可以使用这个特性达到测试的目的。但是它的简单也带来了一些不足,就是它只能对请求进行概率地划分流量,并不能定向到用户。

    例如,以下需求Openshift Route目前还无法实现。产品新版本正式发布前,我们希望对产品进行一些测试,只允许指定的一批用户或者一些网段的ip下的用户才能访问新版本。

二、F5与Openshift集成实现灰度发布

  • 流量到达F5时,F5会优先对请求进行iRule下的匹配检查,定向到对应的Pool

  • 如果iRule下未匹配,则会控制vs下绑定的Polices规则进行匹配

  • 在上篇中,我们知道Openshift上的F5控制器会自动在F5上生成Polices规则,来满足Openshift Route的功能。那么只需要将它与自定义的iRule结合就能够实现既满足服务的分流,又能控制用户对服务的定向访问。

F5与Openshift集成配置与部署(实现灰度发布)

准备工作(详细见上篇:Openshift-F5集成(南北流量走F5))

  • 创建新的HostSub

  • Local Traffic -> Virtual Servers

  • Name:VS名字

  • Destination Address/Mask:VS的IP地址

  • Service Port:HTTP

  • HTTP Profile:http

  • Source Address Translation:Auto Map

  • HTTPS

    • Name:VS名字

    • Destination Address/Mask:VS的IP地址

    • Service Port:HTTPS

    • HTTP Profile:http

    • SSL Profile (Client):/Common/clientssl

    • Source Address Translation:Auto Map

设置VS中的cccl-whitelist为1

  • 对应每台F5设备创建一个Deployment

  • Deployment中的 --bigip-url 为设备的IP

  • Deployment中的 --bigip-partition为之前F5下创建的Partition,Openshift

  • Deployment中的--route-http-vserver为手动创建的HTTP VS

  • Deployment中的--route-https-vserver为手动创建的HTTPS VS

  • Deployment中的--route-label为给Controller打的标签(对于一组F5不需要配置,多组F5通过它打Label,并在Route中设置label f5type:label来指定使用的F5)

apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: f5-bigip-ctlr-01spec:  replicas: 1  template:    metadata:      name: k8s-bigip-ctlr      labels:        app: k8s-bigip-ctlr    spec:      # Name of the Service Account bound to a Cluster Role with the required      # permissions      serviceAccountName: bigip-ctlr      containers:        - name: k8s-bigip-ctlr          # replace the version as needed          image: "f5networks/k8s-bigip-ctlr:1.5.1"          env:            - name: BIGIP_USERNAME              valueFrom:                secretKeyRef:                  # Replace with the name of the Secret containing your login                  # credentials                  name: bigip-login                  key: username            - name: BIGIP_PASSWORD              valueFrom:                secretKeyRef:                  # Replace with the name of the Secret containing your login                  # credentials                  name: bigip-login                  key: password          command: ["/app/bin/k8s-bigip-ctlr"]          args: [            # See the k8s-bigip-ctlr documentation for information about            # all config options            # http://clouddocs.f5.com/products/connectors/k8s-bigip-ctlr/latest            "--bigip-username=$(BIGIP_USERNAME)",            "--bigip-password=$(BIGIP_PASSWORD)",            "--bigip-url=192.168.200.82",            "--bigip-partition=OpenShift",            "--pool-member-type=cluster",            "--openshift-sdn-name=/Common/openshift_vxlan",            '--manage-routes=true'            '--route-http-vserver=testroute'            '--route-https-vserver=testroute_https'            ]---apiVersion: extensions/v1beta1kind: Deploymentmetadata:  name: f5-bigip-ctlr-02spec:  replicas: 1  template:    metadata:      name: k8s-bigip-ctlr      labels:        app: k8s-bigip-ctlr    spec:      # Name of the Service Account bound to a Cluster Role with the required      # permissions      serviceAccountName: bigip-ctlr      containers:        - name: k8s-bigip-ctlr          # replace the version as needed          image: "f5networks/k8s-bigip-ctlr:1.5.1"          env:            - name: BIGIP_USERNAME              valueFrom:                secretKeyRef:                  # Replace with the name of the Secret containing your login                  # credentials                  name: bigip-login                  key: username            - name: BIGIP_PASSWORD              valueFrom:                secretKeyRef:                  # Replace with the name of the Secret containing your login                  # credentials                  name: bigip-login                  key: password          command: ["/app/bin/k8s-bigip-ctlr"]          args: [            # See the k8s-bigip-ctlr documentation for information about            # all config options            # http://clouddocs.f5.com/products/connectors/k8s-bigip-ctlr/latest            "--bigip-username=$(BIGIP_USERNAME)",            "--bigip-password=$(BIGIP_PASSWORD)",            "--bigip-url=192.168.200.83",            "--bigip-partition=OpenShift",            "--pool-member-type=cluster",            "--openshift-sdn-name=/Common/openshift_vxlan",            '--manage-routes=true'            '--route-http-vserver=testroute'            '--route-https-vserver=testroute_https'            ]

给vs手动绑定Policies

  • Openshift F5控制器创建好后,在F5上会自动创建两条Policies, 分别为:openshift_insecure_routes、openshift_secure_routes。

  • openshift_insecure_routes为HTTP应用服务

  • openshift_secure_routes为HTTPS应用服务。

     

    F5与Openshift集成怎么实现灰度发布

    绑定Policies与iRule

创建应用(Project名为testapp,Service名为f5-nginx-v1与f5-nginx-v2)

oc new-project testappoc new-app harbor.example.com/public/nginx:1.14 --name=f5-nginx-v1 --allow-missing-imagesoc expose dc/f5-test-v1 --port=8080oc expose svc/f5-test-v1 test1.apps.openshift.comoc new-app harbor.example.com/public/nginx:1.14 --name=f5-nginx-v2 --allow-missing-imagesoc expose dc/f5-test-v2 --port=8080

创建iRule,并绑定到VS F5

说明:请求域名test1.apps.openshift.com时,如果客户端IP为192.168.100.23,则访问testapp项目下的f5-nginx-v2服务,否则访问testapp项目下的f5-nginx-v1服务
注意:iRule规则需要在Common的Partition下创建

when HTTP_REQUEST { if { [HTTP::host] equals "test1.apps.openshift.com" }{  log local0.info [HTTP::host]   if {[IP::addr [IP::client_addr] equals 192.168.100.23/32 ]} {  log local0.info "enter 2 pool before"  log local0.info [HTTP::host]  pool /f5-openShift/openshift_testapp_f5-nginx-v2  log local0.info "enter 2 pool later"  } else {  log local0.info "enter 3"   pool /f5-openShift/openshift_testapp_f5-nginx-v1  } }}

测试访问服务

本地(192.168.100.23)与另一台非192.168.100.23的机器上绑定hosts

VS的IP地址 test1.apps.openshift.com

再访问test1.apps.openshift.com,查看页面显示,访问不同的Service。

上述就是小编为大家分享的F5与Openshift集成怎么实现灰度发布了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网行业资讯频道。

免责声明:

① 本站未注明“稿件来源”的信息均来自网络整理。其文字、图片和音视频稿件的所属权归原作者所有。本站收集整理出于非商业性的教育和科研之目的,并不意味着本站赞同其观点或证实其内容的真实性。仅作为临时的测试数据,供内部测试之用。本站并未授权任何人以任何方式主动获取本站任何信息。

② 本站未注明“稿件来源”的临时测试数据将在测试完成后最终做删除处理。有问题或投稿请发送至: 邮箱/279061341@qq.com QQ/279061341

F5与Openshift集成怎么实现灰度发布

下载Word文档到电脑,方便收藏和打印~

下载Word文档

猜你喜欢

F5与Openshift集成怎么实现灰度发布

这期内容当中小编将会给大家带来有关F5与Openshift集成怎么实现灰度发布,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、为什么要使用灰度发布什么是灰度发布灰度发布是指在黑与白之间,能够平滑过渡的一
2023-06-04

springboot怎么实现接口灰度发布

这篇文章主要介绍“springboot怎么实现接口灰度发布”,在日常操作中,相信很多人在springboot怎么实现接口灰度发布问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”springboot怎么实现接口灰
2023-06-29

Docker与Nginx结合实现网站灰度发布(如何利用Docker和Nginx实现网站的灰度发布?)

利用Docker和Nginx,可实现网站灰度发布。首先构建新旧版本容器镜像。部署旧版本,配置Nginx代理。随后部署新版本,修改Nginx配置路由部分流量。测试新版本,逐步增加流量。当新版本稳定后,完全切换。Docker灰度发布优势包括隔离性、可移植性、可扩展性和自动化。最佳实践包括谨慎监控、明确回滚策略、逐步增加流量和全面测试。
Docker与Nginx结合实现网站灰度发布(如何利用Docker和Nginx实现网站的灰度发布?)
2024-04-02

Spring事件发布与监听怎么实现

这篇文章主要讲解了“Spring事件发布与监听怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring事件发布与监听怎么实现”吧!  一、事件监听相关概念介绍  1、流程分析  事
2023-06-02

SpringBoot怎么集成ShedLock实现分布式定时任务

本文小编为大家详细介绍“SpringBoot怎么集成ShedLock实现分布式定时任务”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot怎么集成ShedLock实现分布式定时任务”文章能帮助大家解决疑惑,下面跟着小编的思路
2023-07-05

监控Agent集成Lua引擎怎么实现多维度日志采集

监控Agent集成Lua引擎怎么实现多维度日志采集,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在监控系统中,日志处理就是采集服务运行时生成的原始日志,根据用户配置的解析规
2023-06-05

怎么实现Java开发SpringBoot集成接口文档

本篇内容介绍了“怎么实现Java开发SpringBoot集成接口文档”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!swagger vs sm
2023-06-25

怎么利用Jedis实现Redis的订阅与发布

怎么利用Jedis实现Redis的订阅与发布?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。什么是Redis发布订阅Redis发布订阅是一种消息通信模式,发送者通
2023-05-31

Java中怎么实现单元测试与集成测试

Java中怎么实现单元测试与集成测试,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Maven测试代码结构的组织我们知道在Maven工程结构中“src/test”目录是专门用
2023-06-16

JavaScript怎么实现简单版的留言发布与删除

本篇内容介绍了“JavaScript怎么实现简单版的留言发布与删除”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!首先用户在输入框中输入内容,
2023-06-29

SpringBoot怎么集成Nacos实现注册中心与配置中心

这篇文章主要介绍“SpringBoot怎么集成Nacos实现注册中心与配置中心”的相关知识,小编通过实际案例向大家展示操作过程,操作方法简单快捷,实用性强,希望这篇“SpringBoot怎么集成Nacos实现注册中心与配置中心”文章能帮助大
2023-07-05

python中sub-pub机制怎么实现Redis的订阅与发布

本篇内容介绍了“python中sub-pub机制怎么实现Redis的订阅与发布”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!先介绍一下red
2023-07-05

编程热搜

  • Python 学习之路 - Python
    一、安装Python34Windows在Python官网(https://www.python.org/downloads/)下载安装包并安装。Python的默认安装路径是:C:\Python34配置环境变量:【右键计算机】--》【属性】-
    Python 学习之路 - Python
  • chatgpt的中文全称是什么
    chatgpt的中文全称是生成型预训练变换模型。ChatGPT是什么ChatGPT是美国人工智能研究实验室OpenAI开发的一种全新聊天机器人模型,它能够通过学习和理解人类的语言来进行对话,还能根据聊天的上下文进行互动,并协助人类完成一系列
    chatgpt的中文全称是什么
  • C/C++中extern函数使用详解
  • C/C++可变参数的使用
    可变参数的使用方法远远不止以下几种,不过在C,C++中使用可变参数时要小心,在使用printf()等函数时传入的参数个数一定不能比前面的格式化字符串中的’%’符号个数少,否则会产生访问越界,运气不好的话还会导致程序崩溃
    C/C++可变参数的使用
  • css样式文件该放在哪里
  • php中数组下标必须是连续的吗
  • Python 3 教程
    Python 3 教程 Python 的 3.0 版本,常被称为 Python 3000,或简称 Py3k。相对于 Python 的早期版本,这是一个较大的升级。为了不带入过多的累赘,Python 3.0 在设计的时候没有考虑向下兼容。 Python
    Python 3 教程
  • Python pip包管理
    一、前言    在Python中, 安装第三方模块是通过 setuptools 这个工具完成的。 Python有两个封装了 setuptools的包管理工具: easy_install  和  pip , 目前官方推荐使用 pip。    
    Python pip包管理
  • ubuntu如何重新编译内核
  • 改善Java代码之慎用java动态编译

目录