F5與Openshift集成怎么實(shí)現(xiàn)灰度發(fā)布-創(chuàng)新互聯(lián)

這期內(nèi)容當(dāng)中小編將會給大家?guī)碛嘘P(guān)F5與Openshift集成怎么實(shí)現(xiàn)灰度發(fā)布,文章內(nèi)容豐富且以專業(yè)的角度為大家分析和敘述,閱讀完這篇文章希望大家可以有所收獲。

創(chuàng)新互聯(lián)于2013年創(chuàng)立,是專業(yè)互聯(lián)網(wǎng)技術(shù)服務(wù)公司,擁有項(xiàng)目成都網(wǎng)站設(shè)計(jì)、做網(wǎng)站網(wǎng)站策劃,項(xiàng)目實(shí)施與項(xiàng)目整合能力。我們以讓每一個(gè)夢想脫穎而出為使命,1280元鄉(xiāng)寧做網(wǎng)站,已為上家服務(wù),為鄉(xiāng)寧各地企業(yè)和個(gè)人服務(wù),聯(lián)系電話:028-86922220

一、為什么要使用灰度發(fā)布
F5與Openshift集成怎么實(shí)現(xiàn)灰度發(fā)布

  • 什么是灰度發(fā)布
    灰度發(fā)布是指在黑與白之間,能夠平滑過渡的一種發(fā)布方式。ABtest就是一種灰度發(fā)布方式,讓一部分用戶繼續(xù)用A,一部分用戶開始用B,如果用戶對B沒有什么反對意見,那么逐步擴(kuò)大范圍,把所有用戶都遷移到B上面來。灰度發(fā)布可以保證整體系統(tǒng)的穩(wěn)定,在初始灰度的時(shí)候就可以發(fā)現(xiàn)、調(diào)整問題,以保證其影響度。

  • 灰度發(fā)布的價(jià)值
    使用灰度發(fā)布可以在產(chǎn)品正式上線前針對特定一些目標(biāo)用戶進(jìn)行開放,獲得這些目標(biāo)用戶的反饋,及早發(fā)現(xiàn)問題,修復(fù)問題,完善產(chǎn)品的不足。如果發(fā)現(xiàn)新的版本價(jià)值不大,能夠及早更換思路,避免產(chǎn)品直接上線后產(chǎn)生不好的影響。

  • Openshift Route自帶的灰度發(fā)布功能

    Openshift Route自帶的灰度發(fā)布,是通過Route下“掛載”兩個(gè)或兩個(gè)以上Service,并調(diào)整各個(gè)Service的權(quán)值進(jìn)行控制流量的分布。

    例如應(yīng)用有兩個(gè)服務(wù),分別為service-v1和service-v2,其中service-v2為新版本。通過不斷放大service-v2的權(quán)值,觀察用戶的反饋,及時(shí)發(fā)現(xiàn)service-v2中的問題,并完善修復(fù),最終service-v2承載所有service-v1的流量,實(shí)現(xiàn)服務(wù)的升級。通過這種方式,可以大大地降低service-v2中的問題對客戶產(chǎn)生的影響。

    Openshift Route對Service分流使用非常方便,一些普通的業(yè)務(wù)完全可以使用這個(gè)特性達(dá)到測試的目的。但是它的簡單也帶來了一些不足,就是它只能對請求進(jìn)行概率地劃分流量,并不能定向到用戶。

    例如,以下需求Openshift Route目前還無法實(shí)現(xiàn)。產(chǎn)品新版本正式發(fā)布前,我們希望對產(chǎn)品進(jìn)行一些測試,只允許指定的一批用戶或者一些網(wǎng)段的ip下的用戶才能訪問新版本。

二、F5與Openshift集成實(shí)現(xiàn)灰度發(fā)布

  • 流量到達(dá)F5時(shí),F(xiàn)5會優(yōu)先對請求進(jìn)行iRule下的匹配檢查,定向到對應(yīng)的Pool

  • 如果iRule下未匹配,則會控制vs下綁定的Polices規(guī)則進(jìn)行匹配

  • 在上篇中,我們知道Openshift上的F5控制器會自動(dòng)在F5上生成Polices規(guī)則,來滿足Openshift Route的功能。那么只需要將它與自定義的iRule結(jié)合就能夠?qū)崿F(xiàn)既滿足服務(wù)的分流,又能控制用戶對服務(wù)的定向訪問。

F5與Openshift集成配置與部署(實(shí)現(xiàn)灰度發(fā)布)

準(zhǔn)備工作(詳細(xì)見上篇:Openshift-F5集成(南北流量走F5))

  • 創(chuàng)建新的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

設(shè)置VS中的cccl-whitelist為1

  • 對應(yīng)每臺F5設(shè)備創(chuàng)建一個(gè)Deployment

  • Deployment中的 --bigip-url 為設(shè)備的IP

  • Deployment中的 --bigip-partition為之前F5下創(chuàng)建的Partition,Openshift

  • Deployment中的--route-http-vserver為手動(dòng)創(chuàng)建的HTTP VS

  • Deployment中的--route-https-vserver為手動(dòng)創(chuàng)建的HTTPS VS

  • Deployment中的--route-label為給Controller打的標(biāo)簽(對于一組F5不需要配置,多組F5通過它打Label,并在Route中設(shè)置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手動(dòng)綁定Policies

  • Openshift F5控制器創(chuàng)建好后,在F5上會自動(dòng)創(chuàng)建兩條Policies, 分別為:openshift_insecure_routes、openshift_secure_routes。

  • openshift_insecure_routes為HTTP應(yīng)用服務(wù)

  • openshift_secure_routes為HTTPS應(yīng)用服務(wù)。

     

    F5與Openshift集成怎么實(shí)現(xiàn)灰度發(fā)布

    綁定Policies與iRule

創(chuàng)建應(yīng)用(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

創(chuàng)建iRule,并綁定到VS F5

說明:請求域名test1.apps.openshift.com時(shí),如果客戶端IP為192.168.100.23,則訪問testapp項(xiàng)目下的f5-nginx-v2服務(wù),否則訪問testapp項(xiàng)目下的f5-nginx-v1服務(wù)
注意:iRule規(guī)則需要在Common的Partition下創(chuàng)建

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
  }
 }
}

測試訪問服務(wù)

本地(192.168.100.23)與另一臺非192.168.100.23的機(jī)器上綁定hosts

VS的IP地址 test1.apps.openshift.com

再訪問test1.apps.openshift.com,查看頁面顯示,訪問不同的Service。

上述就是小編為大家分享的F5與Openshift集成怎么實(shí)現(xiàn)灰度發(fā)布了,如果剛好有類似的疑惑,不妨參照上述分析進(jìn)行理解。如果想知道更多相關(guān)知識,歡迎關(guān)注創(chuàng)新互聯(lián)-成都網(wǎng)站建設(shè)公司行業(yè)資訊頻道。

標(biāo)題名稱:F5與Openshift集成怎么實(shí)現(xiàn)灰度發(fā)布-創(chuàng)新互聯(lián)
網(wǎng)頁URL:http://bm7419.com/article6/hedog.html

成都網(wǎng)站建設(shè)公司_創(chuàng)新互聯(lián),為您提供標(biāo)簽優(yōu)化、做網(wǎng)站、關(guān)鍵詞優(yōu)化全網(wǎng)營銷推廣、虛擬主機(jī)、面包屑導(dǎo)航

廣告

聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時(shí)間刪除。文章觀點(diǎn)不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時(shí)需注明來源: 創(chuàng)新互聯(lián)

成都網(wǎng)站建設(shè)公司