AWS上課(第二節)
自動化部屬
- 避免業務中斷,每次部屬一點點,降低每次部屬的痛
- 可以退版以及指定版本,或是有相依性的專案也一併退
- 有稽核功能
CodeDeploy
自動化部屬相關主機、Lambda、Container
EKS、K8s 可以使用GitOps模式來部屬
其實就是有一個GitOps 跟 k8s 檢查是否狀態一致,不一樣就會自動部屬過去。
有提供指標來觀察
指標的來源:
部屬策略選擇
- Rolling Update(漸進部屬)
好處:資源成本低、改變較少
壞處:部屬速度慢、過程中有不同版本同時存在
實作
CodeDeploy 為例子
可以設定指定部屬過程,要確保有多少資源來維持現有服務
EKS為例子
限制:
- 是否可以部屬過程只看到一個版本?
- 如何用滾動式降低風險,觀察指標沒問題,再轉過去?
- 如果一些測試,是否有辦法自動化退版?
以上都無法提供這些困惱。
- Blud/Green Deployment (藍綠部屬)
- 直接起一個主機部屬完之後,再直接切換
- 切換無誤後,關閉舊的
好處:切換的過程版本是一致的、版本回退非常容易又快
壞處:成本高、運算容量高
實現
ECS:
Lambda 不需要特別指定,他有對應的參數做指定
EKS
Container 部屬步驟
- Canary Or One-Box DeployMent(金絲雀部屬)
優點:指定5% 或10%的流量來到新的機器,如果沒問題,再慢慢擴展到50%,確認沒問題就直接100%。
缺點;設計複雜,部屬比較久
CodeDeploy
EKS
總結
選擇自動化方式:CodeDeploy 或 GitOPS
監控:延遲或錯誤率、測試或是告警、或是藉由CloudWatch或普羅米修斯
部屬策略:漸進式、藍綠、金絲雀
更多資訊
https://www.eksworkshop.com
https://bit.ly/3azcNrg