Openshift-F5整合(總結)——與Router方案對比

dapan發表於2021-09-09

這篇文章來自9月份自己在F5年度會議上分享的PPT,感謝過程中幫忙一起聯調的小夥伴。

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: 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的配置

圖片描述

Route.png

Openshift Router的不足

  • Router無法支援灰度釋出 (可以引入)

  • 對外所有南北流量都走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並存



作者:潘曉華Michael
連結:


來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/758/viewspace-2820630/,如需轉載,請註明出處,否則將追究法律責任。

相關文章