內容轉自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里創建一個測試項目做為金絲雀,在測試通過之后再發布
- 更復雜的方法是根據用戶的個人資料和其他人口統計資料選擇用戶。