2016-08-16 90 views
0

我知道我可以有兩種不同的策略時,我想在Openshift部署。的部署策略

  • 滾動式的戰略: Openshift等待新的吊艙成爲縮減生產豆莢前準備好。

  • 重新創建策略: Openshift將刪除舊的實例,並將開始新的實例。獲取503 HTTP錯誤的意思。對於db或兩個或更多實例不能共存時。

要恰克部署配置:

oc edit dc/mydeploy-conf -o json 

"spec": { 
    "strategy": { 
     "type": "Recreate/Rolling" 
    }, 

編輯1 - 添加在Openshift V3,但可以 https://github.com/openshift/origin/blob/master/examples/deployment/README.md

不包括策略由克萊頓建議項目GitHub的信息手動完成。

  • 藍 - 綠部署

藍綠色的部署涉及在同一時間運行的應用程序的兩個版本和舊版本將生產業務到新版本(更多關於藍光綠色部署)。有幾種方法可以在OpenShift中實施藍綠色部署。

創建示例應用程序

oc new-app openshift/deployment-example:v1 --name=bluegreen-example-old 
oc new-app openshift/deployment-example:v2 --name=bluegreen-example-new 

創建指向舊的服務

oc expose svc/bluegreen-example-old --name=bluegreen-example 

編輯路線的路線的兩個副本,改變服務到藍綠,例如新

oc edit route/bluegreen-example 
  • A/B部署

A/B的部署通常暗示在同一時間進行測試或實驗目的運行的應用程序代碼或應用程序配置的兩個(或更多)的版本。

的A/B的部署最簡單形式是分隔兩個或更多個不同的碎片之間的生產流量 - 和均勻配置和代碼實例的一個組。

更復雜的A/B部署可能涉及專門的代理或負載均衡器,它根據用戶或應用程序的信息將流量分配給特定的分片(所有「測試」用戶都發送到B分片,但常規用戶發送到A分片)。 A/B的部署可以被認爲類似於A/B測試,雖然一個A/B部署意味着代碼和配置,其中作爲A/B測試常常使用一個基本代碼與應用特定檢查多個版本。

實施例: 一個服務中,多個部署設定

OpenShift,通過標籤和部署配置,可以同時支持多個碎片通過相同的服務被暴露。對於使用者來說,碎片是不可見的。最簡單的可能的分片的一個例子如下所述:

創建基於示例部署圖像

oc new-app openshift/deployment-example --name=ab-example-a --labels=ab-example=true SUBTITLE="shard A" 

編輯新創建的碎片設置標籤AB-示例=真,該應用程序的第一碎片將共同所有的碎片:

oc edit dc/ab-example-a 

在編輯器中,添加行AB-例如:「真」 spec.selector和spec.template.metadata.labels下方沿着現有的deploymentconfig = AB-例 - 一個標籤。保存並退出編輯器。

觸發第一個碎片的重新部署,以獲取新的標籤:

oc deploy ab-example-a --latest 

創建使用通用標籤服務:通過

oc expose dc/ab-example-a --name=ab-example --selector=ab-example=true 

讓應用程序可用route

oc expose svc/ab-example 

根據相同的s創建第二個分片烏爾斯河形象爲第一分片,但不同的標記的形式,並設置一個獨特的價值:

oc new-app openshift/deployment-example:v2 --name=ab-example-b --labels=ab-example=true SUBTITLE="shard B" COLOR="red" 

編輯新創建的碎片設置標籤AB-例如=真,這將是共同所有的碎片:

oc edit dc/ab-example-b 

在編輯器中,將spec.selector和spec.template.metadata.labels下面的行ab-example:「true」添加到現有deploymentconfig = ab-example-b標籤旁邊。保存並退出編輯器。

觸發第二個碎片的重新部署到拿起新的標籤:

oc deploy ab-example-b --latest 

此時,路線下被服務艙的兩個集合。但是,由於兩個瀏覽器(通過斷開連接)和路由器(默認情況下通過cookie)將嘗試保留到後端服務器的連接,因此您可能看不到兩個碎片都會返回給您。要強制瀏覽器以一種或另一種碎片,使用縮放命令:

oc scale dc/ab-example-a --replicas=0 

oc scale dc/ab-example-a --replicas=1; oc scale dc/ab-example-b --replicas=0 

回答