OpenShift藍綠及灰度部署


內容轉自https://blog.csdn.net/jj_tyro/article/details/80136316, 並不斷補充,感謝作者.

1.藍綠部署

藍綠部署實現的是全流量切換,適合於在測試完部署的服務新版本后,最少時間將流量切換到新的服務版本。

 

 

 切換路由帶來的問題是,如果一個請求尚未完成,能否實現graceful switch

針對服務生成Route

oc expose service serviceA --name=service

 

apiVersion: route.openshift.io/v1
kind: Route
  name: bluegreen
  namespace: bluegreen
spec:
  host: service.192.168.42.65.nip.io
  port:
    targetPort: 8080-tcp
  to:
    kind: Service
    name: serviceA
    weight: 100

在ServiceB測試沒有問題的時候把路由切換成B

# switch service to serviceB
$ oc patch route/service -p '{"spec":{"to":{"name":"serviceB"}}}'

# switch back to serviceA again
$ oc patch route/service -p '{"spec":{"to":{"name":"serviceA"}}}'

 

2.A/B部署

A/B部署得名於將應用功能新版本做為整體部署一部分、與舊版本並存線上進行測試的能力。通過這種方式,可以創建一個假定,執行A/B部署,測試假定是正確還是錯誤,以及回滾到初始應用部署(A)還是繼續新版本應用部署(B)

分別創建route指到各自服務,然后進行測試

oc expose service serviceAroute --name=serviceA -l name='serviceA'
oc expose service serviceBroute --name=serviceB -l name='serviceB'

創建總體路由 serviceRoute,並指定分發策略

$ oc expose service serviceA --name='serviceroute' -l name='serviceroute'
$ oc annotate route/serivceroute haproxy.router.openshift.io/balance=roundrobin
$ oc set route-backends serviceroute serviceA=100 serviceB=0

可以通過命令調整分發策略

oc set route-backends serviceroute --adjust serviceB=+10%

 

界面上的設置如下

找到一個Route,然后在TLS下點擊Edit

 

選擇Alernate Service,會出現其他服務,默認的權重是50%,設定權重即可

 

3.金絲雀部署

金絲雀部署是一種類似於A/B部署的技術,可將變更緩慢地向部分用戶推出,然后再將其推出到整個基礎架構,並提供給所有人使用。

金絲雀部署策略可以根據具體的場景制定

  • 一個簡單的策略是針對隨機抽樣用戶來使用新版本 —— 這是A/B部署策略
  • 將新版本提供給內部測試人員,直接把他們流量導入serviceB路由,以進行測試
  • 在OpenShift里創建一個測試項目做為金絲雀,在測試通過之后再發布
  • 更復雜的方法是根據用戶的個人資料和其他人口統計資料選擇用戶。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM