iis服务器助手广告广告
返回顶部
首页 > 资讯 > 精选 >F5与Openshift集成怎么实现灰度发布
  • 294
分享到

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

2023-06-04 17:06:02 294人浏览 八月长安
摘要

这期内容当中小编将会给大家带来有关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 PortHttp

  • 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集成怎么实现灰度发布了,如果刚好有类似的疑惑,不妨参照上述分析进行理解。如果想知道更多相关知识,欢迎关注编程网精选频道。

--结束END--

本文标题: F5与Openshift集成怎么实现灰度发布

本文链接: https://www.lsjlt.com/news/238633.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

本篇文章演示代码以及资料文档资料下载

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

下载Word文档
猜你喜欢
  • F5与Openshift集成怎么实现灰度发布
    这期内容当中小编将会给大家带来有关F5与Openshift集成怎么实现灰度发布,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。一、为什么要使用灰度发布什么是灰度发布灰度发布是指在黑与白之间,能够平滑过渡的一...
    99+
    2023-06-04
  • springboot怎么实现接口灰度发布
    这篇文章主要介绍“springboot怎么实现接口灰度发布”,在日常操作中,相信很多人在springboot怎么实现接口灰度发布问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”springboot怎么实现接口灰...
    99+
    2023-06-29
  • SpringCloud如何实现灰度发布
    这篇文章主要讲解了“SpringCloud如何实现灰度发布”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“SpringCloud如何实现灰度发布”吧!1.什么是灰度发布?灰度发布又称金丝雀发布...
    99+
    2023-06-30
  • java灰度发布如何实现
    Java灰度发布是指在发布新版本时,只将一部分用户引流到新版本,以验证新版本的稳定性和性能,最终再将全部用户引流到新版本。下面是几种...
    99+
    2023-10-27
    java
  • SpringCloud实现灰度发布的方法步骤
    目录1.什么是灰度发布?2.灰度发布有什么作用?3.灰度发布的实现方式:网关到服务,服务到服务3.1网关到服务代码实现3.2网关到服务代码实现1.什么是灰度发布? 灰度发布又称金丝雀...
    99+
    2024-04-02
  • springboot 实现接口灰度发布的实例详解
    目录前言最小化改造方式springmvc接口请求原理HandlerMapping简介RequestCondition接口定义代码实现过程1、添加一个自定义注解用于标注接口类以及接口方...
    99+
    2024-04-02
  • 使用Docker Compose、Nginx和MariaDB实现PHP应用程序的灰度发布
    灰度发布是一种软件发布的策略,通过在生产环境中逐步引入新版本,来缓解发布带来的风险。在实际应用中,我们可以通过使用Docker Compose来管理容器化的应用程序,结合Nginx负载均衡和MariaDB来实现灰度发布。Docker Com...
    99+
    2023-10-21
    Docker nginx mariadb
  • SpringBoot集成redis与session实现分布式单点登录
    目录单点登录 SSO(Single Sign On)什么是单点登录?实现方式开发技术单点登录实现流程实现案例看效果前言: 由于考虑到cookie的安全性问题,就有了下面这个版本的ss...
    99+
    2024-04-02
  • JavaScript如何与Java集成以实现分布式架构?
    分布式架构是当今互联网系统架构中的一种流行趋势。它可以让系统更加可靠、可扩展、可维护和可升级。在分布式架构中,系统的不同部分可以在不同的机器上运行,通过网络进行通信和协作。而JavaScript和Java是两种广泛使用的编程语言,它们在分...
    99+
    2023-09-10
    unix 分布式 javascript
  • SpringBoot怎么集成ShedLock实现分布式定时任务
    本文小编为大家详细介绍“SpringBoot怎么集成ShedLock实现分布式定时任务”,内容详细,步骤清晰,细节处理妥当,希望这篇“SpringBoot怎么集成ShedLock实现分布式定时任务”文章能帮助大家解决疑惑,下面跟着小编的思路...
    99+
    2023-07-05
  • Spring事件发布与监听怎么实现
    这篇文章主要讲解了“Spring事件发布与监听怎么实现”,文中的讲解内容简单清晰,易于学习与理解,下面请大家跟着小编的思路慢慢深入,一起来研究和学习“Spring事件发布与监听怎么实现”吧!  一、事件监听相关概念介绍  1、流程分析  事...
    99+
    2023-06-02
  • 监控Agent集成Lua引擎怎么实现多维度日志采集
    监控Agent集成Lua引擎怎么实现多维度日志采集,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。在监控系统中,日志处理就是采集服务运行时生成的原始日志,根据用户配置的解析规...
    99+
    2023-06-05
  • 怎么用HTML5组件Canvas实现图像灰度化
    今天小编给大家分享一下怎么用HTML5组件Canvas实现图像灰度化的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下...
    99+
    2024-04-02
  • Nginx怎么实现简单的前端灰度系统
    本篇内容主要讲解“Nginx怎么实现简单的前端灰度系统”,感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习“Nginx怎么实现简单的前端灰度系统”吧!写在前面的话灰度这个概念,来自数字图像领域,最初是描...
    99+
    2023-07-05
  • Spring集成Mybatis怎么实现
    这篇文章主要介绍“Spring集成Mybatis怎么实现”,在日常操作中,相信很多人在Spring集成Mybatis怎么实现问题上存在疑惑,小编查阅了各式资料,整理出简单好用的操作方法,希望对大家解答”Spring集成Mybatis怎么实现...
    99+
    2023-07-05
  • 怎么实现Java开发SpringBoot集成接口文档
    本篇内容介绍了“怎么实现Java开发SpringBoot集成接口文档”的有关知识,在实际案例的操作过程中,不少人都会遇到这样的困境,接下来就让小编带领大家学习一下如何处理这些情况吧!希望大家仔细阅读,能够学有所成!swagger vs sm...
    99+
    2023-06-25
  • Web网站都变成灰色怎么快速实现
    这篇“Web网站都变成灰色怎么快速实现”文章的知识点大部分人都不太理解,所以小编给大家总结了以下内容,内容详细,步骤清晰,具有一定的借鉴价值,希望大家阅读完这篇文章能有所收获,下面我们一起来看看这篇“Web网站都变成灰色怎么快速实现”文章吧...
    99+
    2023-07-04
  • 基于Qt OpenCV怎么实现图像灰度化像素
    这篇文章主要介绍了基于Qt OpenCV怎么实现图像灰度化像素的相关知识,内容详细易懂,操作简单快捷,具有一定借鉴价值,相信大家阅读完这篇基于Qt OpenCV怎么实现图像灰度化像素文章都会有所收获,下面我们一起来看看吧...
    99+
    2023-07-02
  • Java中怎么实现单元测试与集成测试
    Java中怎么实现单元测试与集成测试,针对这个问题,这篇文章详细介绍了相对应的分析和解答,希望可以帮助更多想解决这个问题的小伙伴找到更简单易行的方法。Maven测试代码结构的组织我们知道在Maven工程结构中“src/test”目录是专门用...
    99+
    2023-06-16
  • 怎么利用Jedis实现Redis的订阅与发布
    怎么利用Jedis实现Redis的订阅与发布?很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。什么是Redis发布订阅Redis发布订阅是一种消息通信模式,发送者通...
    99+
    2023-05-31
    redis jedis
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作