美文网首页Openshift:可靠的Kubernetes发行版
Openshift-F5集成(总结)——与Router方案对比

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

作者: 潘晓华Michael | 来源:发表于2018-11-25 16:03 被阅读43次

    这篇文章来自9月份自己在F5年度会议上分享的PPT,感谢过程中帮忙一起联调的小伙伴。
    PPT也分享出来,地址如下:openshift与F5的联合解决方案
    Openshift-F5集成(南北流量走F5)
    Openshift-F5集成(续)——实现灰度发布

    Openshift的基础概念

    Openshift简介

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

    Openshift Pod

    • Pod是Openshift调度的最小单元
    • 一个Pod包含一个或多个容器
    • Pod内的容器共享网络,IP不固定


      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可以任意伸缩,而不影响业务


      Service

    实例:

    apiVersion: v1
    kind: Service
    metadata:
      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的配置
    Route.png

    Openshift Router的不足

    • Router无法支持灰度发布 (可以引入Nginx/Haproxy实现灰度发布)
    • 对外所有南北流量都走Router,随着流量增加,Router的压力也不断增加
    • 生产环境中,面对突发流量,Router的可靠性与稳定性是一个挑战
    • 全站SSL的性能压力如何解决

    F5与Openshift集成架构与实践

    F5与Openshift集成架构

    F5与Openshift集成架构

    F5与Openshift中的Service集成

    • 通过对应的应用配置ConfigMap(Openshift的配置资源)为每个ConfigMap自动创建对应的Virtual Server并与Pool映射
    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
    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


      灰度

      实例:

    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节点是可以并存,同时为应用提供对外服务,并不会产生冲突。

    F5与Router并存

    相关文章

      网友评论

      本文标题:Openshift-F5集成(总结)——与Router方案对比

      本文链接:https://www.haomeiwen.com/subject/ccbpqqtx.html