Kubernetes Helm 架構
Helm Chart簡介
Helm是一個用於Kubernetes的包管理工具。
每一個包稱爲一個Chart,一個Chart是一個目錄(通常狀況下會將目錄進行打包壓縮,造成name-version.tgz格式的單一文件,方便傳輸和存儲)。
一個Chart是Kubernetes部署文件的集合,使用Chart能夠方便的在Kubernetes中部署一組應用。html
Helm組件
Helm:架構
Helm是一個cli客戶端,能夠完成以下內容:工具
- 建立Chart
- 打包Chart,打包成name-version.tgz格式
- 調試Chart
- 建立本地Chart倉庫
- 管理本地和遠程Chart倉庫
- 與Tiller通訊並完成Chart的安裝,升級,刪除,回滾,查看等操做
Tiller
Tiller是一個Chart管理服務端,Tiller接收Helm的請求,並根據Chart生成Kubernetes的部署文件(稱爲一個Release),而後提交給Kubernetes建立應用。
Tiller有以下功能:spa
- 監聽來自Helm的請求
- 根據請求提交的Chart與Config生成一個Release
- 將Release提交給Kubernetes,而且跟蹤Release的狀態
- 提供Release的升級,刪除,回滾等功能
Helm通訊過程
Chart Install 過程:調試
- Helm從指定的目錄或者tgz文件中解析出Chart結構信息
- Helm將指定的Chart結構和Values信息經過gRPC傳遞給Tiller
- Tiller根據Chart和Values生成一個Release
- Tiller將Release發送給Kubernetes用於生成Release
Chart Update過程:htm
- Helm從指定的目錄或者tgz文件中解析出Chart結構信息
- Helm將要更新的Release的名稱和Chart結構,Values信息傳遞給Tiller
- Tiller生成Release並更新指定名稱的Release的History
- Tiller將Release發送給Kubernetes用於更新Release
Chart Rollback過程:部署
- Helm將要回滾的Release的名稱傳遞給Tiller
- Tiller根據Release的名稱查找History
- Tiller從History中獲取上一個Release
- Tiller將上一個Release發送給Kubernetes用於替換當前Release
Chart依賴說明:
Tiller在處理Chart時,直接將Chart以及其依賴的全部Charts合併爲一個Release,同時傳遞給Kubernetes。所以Tiller並不負責管理依賴之間的啓動順序。Chart中的應用須要可以自行處理依賴關係。get