Helm是k8s的應用程序管理器(the package manager for k8s), 類似Linux上的yum
或apt-get
, 是一個將手動部署自動化的應用概念, 可以用來幫助用戶查找, 分享及使用K8s應用程序, 核心打包功能組件稱為chart
, 可支援變數替換和條件判斷式, 服務升級和回滾等, 並能支援部署後測試。
Helm將K8s資源(Deployments, Services, ConfigMap 等)應用相關的配置打包到一個Chatrs
中, 它透過Charts來管理操作, 使用Charts管理流程, 包括從0開始創建Charts, 將Charts與其關聯的文件打包成統一格式, 把Charts儲存在倉庫中等等, 完成測試後會將各個Charts保存到Charts倉庫進行儲存和分發, 同時也支援版控, Helm簡化了部署過程中的版本控制, 打包, 發布, 刪除和更新等操作。
Helm 概念
Helm 優點
helm rollback
就可以輕鬆的實現快速回滾。Lifecycle hooks
helm 部署結構
這是我們專案內部署的helm結構:
我們專案目前使用的是helm 3, 這是參考的書籍【kubernetes 進階實戰】使用的還是helm 2, helm 2 和 helm 3最大差別在Tiller的移除。
Helm 2 主要由Helm Client, Tiller Server和Charts repository 組成; 採用Go語言編寫並基於GRPC協議與Tiller server 溝通。Tiller用來接收來自Helm Client的請求並與K8s API Server進行溝通來完成以下任務:
Helm 3 只有Client和Charts repository 組成,它能讓Client 端直接和K8s API Server溝通, 相較於helm 2操作更加簡單, 並且提高了安全性和可用性
我們K8s架構是由我旁邊強大的同事完成的, 可以參考他的Helm分享
[Day 21] Oops!Helm - 起手式
[Day 22] Oops!Helm Template and Value
[Day 23] Oops!Helm - 2 to 3
[Day 24] Oops!Helm - Can Not Upgrade Release
[Day 25] Oops!Helm - 容器化實作
讀完HELM, 我由衷感謝團隊裡強大的同事們建構了一個非常方便的k8s環境讓我們使用!