为了账号安全,请及时绑定邮箱和手机立即绑定

Openshift-F5集成(总结)——与Router方案对比

标签:
Kubernetes

这篇文章来自9月份自己在F5年度会议上分享的PPT,感谢过程中帮忙一起联调的小伙伴。

Openshift的基础概念

Openshift简介

红帽® OpenShift 是一款性能强大的开源企业级PaaS产品。不仅是企业级的Kubernetes,可以构建、部署与管理容器应用,还提供从开发到投入生产的整个应用生命周期内使用的完整解决方案,帮助客户享受快速创新带来的收益,同时保持企业级平台的稳定性、可靠性和安全性。
Openshift支持多种环境下部署,无论是在企业内部,公共云,或是托管环境中。

Openshift Pod

  • Pod是Openshift调度的最小单元

  • 一个Pod包含一个或多个容器

  • Pod内的容器共享网络,IP不固定


    webp

    Pod

实例:

apiVersion: v1
kind: Pod
metadata:
  name: MyApp     
  labels:
    app: MyApp    
spec:
  containers:
  - name: myapp
    image: app/myapp:latest
    ports:
    - containerPort: 9376

Openshift Service

  • Service是一个内部负均衡器,能将流量代理转发到一组pod中

  • Service能提供一个稳定可靠的内部IP

  • Service标识的一组pod可以任意伸缩,而不影响业务


    webp

    Service

实例:

apiVersion: v1kind: Servicemetadata:  name: MyAppService     spec:  selector:                  
    app: MyApp
  clusterIP: 172.30.136.123   
  ports:  - port: 9376               
    protocol: TCP
    targetPort: 9376

Openshift Router与Route

Router组件是解决外部访问Openshift集群中应用的一种解决方案

  • Router节点上运行一个特殊定制的Haproxy

  • Route为Openshift中的资源对象,配置对应的Service及域名

  • Service更新会自动更新Haproxy的配置

webp

Route.png

Openshift Router的不足

  • Router无法支持灰度发布 (可以引入Nginx/Haproxy实现灰度发布)

  • 对外所有南北流量都走Router,随着流量增加,Router的压力也不断增加

  • 生产环境中,面对突发流量,Router的可靠性与稳定性是一个挑战

  • 全站SSL的性能压力如何解决

F5与Openshift集成架构与实践

F5与Openshift集成架构

webp

F5与Openshift集成架构

F5与Openshift中的Service集成

  • 通过对应的应用配置ConfigMap(Openshift的配置资源)为每个ConfigMap自动创建对应的Virtual Server并与Pool映射

webp

F5与Service

实例:

kind: ConfigMap
apiVersion: v1
metadata:
  name: myApp.vs
  labels:
    f5type: virtual-server
data:
  schema: "f5schemadb://bigip-virtual-server_v0.1.7.json"
  data: |
    {      "virtualServer": {        "backend": {          "servicePort": 9376,          "serviceName": "myAppService"
          }]
        },       "frontend": {          "virtualAddress": {            "port": 8080,            "bindAddr": "99.248.82.220"
          },          "partition": "openshift",          "balance": "round-robin",          "mode": "http"
        }
      }

F5与Openshift中的Route集成

  • F5代替了Openshift中的Router组件的功能

  • Bigip-ctl启动配置中添加参数:
    --manage-routes=true,
    --route-vserver-addr=99.248.82.220

  • Bigip-ctl一启动就会在F5上创建好Virtual Server:80与Virtual Server:443

webp

Route

实例:

apiVersion: route.openshift.io/v1
kind: Route
metadata:
  labels:
    name: f5-test
  name: f5-test
  annotations:    virtual-server.f5.com/balance: least-connections-node
spec:
  host: f5-test.example.com
  port:
    targetPort: 8080
  to:
    kind: Service
    name: f5-test

F5与Openshift实现灰度发布

  • 手动创建Virtual Server 80(testroute)与443(testroute_https)

  • Bigip-ctl启动配置中添加参数:
    --manage-routes=true,
    --route-http-vserver=testroute,
    --route-https-vserver=testroute_https,
    --route-vserver-addr=99.248.82.220

  • 手动创建iRule规则应用到Virtual Server


    webp

    灰度


    实例:

when HTTP_REQUEST { if { [HTTP::host] equals "test1.apps.openshift.com" }{   if {[IP::addr [IP::client_addr] equals 192.168.100.23/32 ]} {
  pool /f5-openShift/openshift_testapp_myapp-v2
  } else {
   pool /f5-openShift/openshift_testapp_myapp-v1
  }
 }
}

使用F5实现灰度发布的不足

  • 自定义iRule无法通过控制器自动下发,所以需要在F5端手动创建VServer及添加iRule来实现灰度发布

F5与Openshift的集成与Openshift的Router可以并存

F5与Router节点是可以并存,同时为应用提供对外服务,并不会产生冲突。

webp

F5与Router并存



作者:潘晓华Michael
链接:https://www.jianshu.com/p/d883857e7af3


点击查看更多内容
TA 点赞

若觉得本文不错,就分享一下吧!

评论

作者其他优质文章

正在加载中
  • 推荐
  • 评论
  • 收藏
  • 共同学习,写下你的评论
感谢您的支持,我会继续努力的~
扫码打赏,你说多少就多少
赞赏金额会直接到老师账户
支付方式
打开微信扫一扫,即可进行扫码打赏哦
今天注册有机会得

100积分直接送

付费专栏免费学

大额优惠券免费领

立即参与 放弃机会
意见反馈 帮助中心 APP下载
官方微信

举报

0/150
提交
取消