使用 Rancher 進行首次金絲雀部署

過去,可憐的金絲雀會作爲試驗品,用來測試煤礦中甲烷的含量。用繩子將裝有金絲雀的籠子放入礦井一段時間,再拉上來,如果金絲雀還活着,礦井就可以安全開採;如果金絲雀死亡,則不能開採。現在,這種方法早已棄用,因爲這對動物太不人道了。

金絲雀總是在礦工身邊徘徊,如果它停止鳴叫,則表示礦工必須離開礦井。

金絲雀部署是指兩個版本的應用共存,新版本在開始時規模較小,處理的負載流量也較少。隨着對新部署的分析,所有請求逐漸切換到新版本,而舊版本應用被移除。

人們普遍認爲,管理這些部署的流量需要使用一個 Service Mesh,然而,要管理入站流量,你只需在 nginx ingress controller 上設置 annotations 即可:

這種方法的缺點是必須手動管理。爲了實現自動化,我們可以使用 Argo Rollouts (https://argoproj.github.io/argo-rollouts/)。

運行 Argo Rollouts

添加 helm-repo: https://argoproj.github.io/argo-helm

argo-rollouts chart:

Helm-values:

修改 Deployment 並運行 Rollouts CRD

ScaleDown deployment,設置 Replicas 0:

運行 service

運行 Rollouts CRD

由於我們不想更改 Deployment,因此在 Rollout manifest 中引用它:workloadRef.kind: Deployment, workloadRef.name

運行 manifest 將創建額外 ingress:

Argo Rollouts 儀表板

CD-pipeline 中的其他步驟

在. drone.yml 中添加提升步驟:

添加 Keel 審批:

結  論

金絲雀部署或綠 / 藍部署一點都不難 - 它將提高生產環境的可靠性,並在出現任何設計錯誤時減少受影響的區域。將來,我會在服務器上添加 RAM,而且有可能啓用 Prometheus 監控和 Istio,並嘗試執行分析和實驗階段,以實現 Argo Rollouts。

來源:Rancher 原文鏈接

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/NbU2w8t7PkXPsSf7i8e8cw