中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

F5與Openshift集成怎么實現灰度發布

發布時間:2021-11-23 21:31:04 來源:億速云 閱讀:171 作者:柒染 欄目:云計算

這期內容當中小編將會給大家帶來有關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/v1beta1
kind: Deployment
metadata:
  name: f5-bigip-ctlr-01
spec:
  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/v1beta1
kind: Deployment
metadata:
  name: f5-bigip-ctlr-02
spec:
  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 testapp
oc new-app harbor.example.com/public/nginx:1.14 --name=f5-nginx-v1 --allow-missing-images
oc expose dc/f5-test-v1 --port=8080oc expose svc/f5-test-v1 test1.apps.openshift.com
oc new-app harbor.example.com/public/nginx:1.14 --name=f5-nginx-v2 --allow-missing-images
oc 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集成怎么實現灰度發布了,如果剛好有類似的疑惑,不妨參照上述分析進行理解。如果想知道更多相關知識,歡迎關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

台北市| 民权县| 新平| 侯马市| 凤城市| 秀山| 临沂市| 无极县| 安平县| 江孜县| 磐石市| 景洪市| 乌审旗| 德阳市| 鸡泽县| 石狮市| 中方县| 西安市| 和顺县| 泰来县| 泰顺县| 亳州市| 崇义县| 梁山县| 华安县| 萝北县| 静海县| 海原县| 合阳县| 禹城市| 大同县| 金沙县| 慈利县| 廊坊市| 天峨县| 铅山县| 晋宁县| 舟山市| 绵阳市| 肃南| 城步|