Helm v3 入門


Helm應用包管理器

  1. 為什么需要Helm?

K8S上的應用對象,都是由特定的資源描述組成,包括deployment、service等。都保存各自文件中或者集中寫到一個配置文件。然后kubectl apply –f 部署。如果應用只由一個或幾個這樣的服務組成,上面部署方式足夠了。而對於一個復雜的應用,會有很多類似上面的資源描述文件,例如微服務架構應用,組成應用的服務可能多達十個,幾十個。如果有更新或回滾應用的需求,可能要修改和維護所涉及的大量資源文件,而這種組織和管理應用的方式就顯得力不從心了。且由於缺少對發布過的應用版本管理和控制,使Kubernetes上的應用維護和更新等面臨諸多的挑戰,主要面臨以下問題:

  • 如何將這些服務作為一個整體管理
  • 這些資源文件如何高效復用
  • 不支持應用級別的版本管理
  1. Helm 介紹

Helm是一個 Kubernetes 的包管理工具,就像Linux下的包管理器,如 yum/apt 等,可以很方便的將之前打包好的yaml文件部署到 kubernetes 上。

Helm有兩個重要概念:

  • helm:一個命令行客戶端工具,主要用於Kubernetes應用chart的創建、打包、發布和管理
  • Chart:應用描述,一系列用於描述 k8s 資源相關文件的集合
  • Release:基於Chart的部署實體,一個 chart 被 Helm 運行后將會生成對應的一個 release;將在k8s中創建出真實運行的資源對象
  1. Helm v3 變化

2019年11月13日,Helm團隊發布 Helm v3 的第一個穩定版本。

該版本主要變化如下:

  • 架構變化:最明顯的變化是 Tiller 的刪除
  • Release 名稱可以在不同命名空間重用
  • 支持將 Chart 推送至 Docker 鏡像倉庫中
  • 使用JSONSchema驗證chart values

Helm 客戶端

  1. 安裝 Helm 客戶端
src]# https://get.helm.sh/helm-v3.0.0-linux-amd64.tar.gz
src]# tar -xf helm-v3.0.0-linux-amd64.tar.gz 
src]# cp linux-amd64/helm  /usr/bin/
~]# helm version
version.BuildInfo{Version:"v3.0.0", GitCommit:"e29ce2a54e96cd02ccfce88bee4f58bb6e2a28b6", GitTreeState:"clean", GoVersion:"go1.13.4"}

2.Helm 常見命令

命令 描述
create 創建一個chart並指定名字
dependency 管理chart依賴
get 下載一個release。可用子命令:all、hooks、manifest、notes、values
history 獲取release歷史
install 安裝一個chart
list 列出release
package 將chart目錄打包到chart存檔文件中
pull 從遠程倉庫中下載chart並解壓到本地 # helm pull stable/mysql --untar
repo 添加,列出,移除,更新和索引chart倉庫。可用子命令:add、index、list、remove、update
rollback 從之前版本回滾
search 根據關鍵字搜索chart。可用子命令:hub、repo
show 查看chart詳細信息。可用子命令:all、chart、readme、values
status 顯示已命名版本的狀態
template 本地呈現模板
uninstall 卸載一個release
upgrade 更新一個release
version 查看helm客戶端版本

3、配置國內Chart倉庫

// 添加存儲庫
~]# helm repo add stable http://mirror.azure.cn/kubernetes/charts
~]# helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts 
~]# helm repo update
// 查看配置的存儲庫
~]# helm repo list 
NAME    URL                                                   
stable  http://mirror.azure.cn/kubernetes/charts              
aliyun  https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
~]# helm  search  repo  aliyun
// 刪除存儲庫
helm repo remove aliyun

Helm基本使用

  • 安裝: chart install
  • 升級: chart upgrade
  • 回滾: chart rollback

1 . 使用 chart 部署一個應用

  • 查找 chart
~]# helm search repo mysql
  • 查看 charts
~]# helm show values stable/mysql
  • 安裝 包
- ~]# helm install mydb stable/mysql
  • 查看 release 狀態
~]# helm list 
NAME    NAMESPACE       REVISION        UPDATED                                 STATUS          CHART           APP VERSION
mydb    default         1               2020-07-18 09:58:54.209184918 +0800 CST deployed        mysql-1.6.6     5.7.30    
  • 卸載
~]# helm uninstall mydb
  1. 安裝前自定義chart配置選項

上面部署的mysql並沒有成功,這是因為並不是所有的chart都能按照默認配置運行成功,可能會需要一些環境依賴,例如PV。所以我們需要自定義chart配置選項,安裝過程中有兩種方法可以傳遞配置數據。

  • - --values(或 -f ):指定帶有覆蓋的YAML文件。這可以多次指定,最右邊的文件優先
  • --set:在命令行上指定替代。如果兩者都用,--set優先級高

--values使用,先將修改的變量寫到一個文件中

~]# helm show values stable/mysql > config.yaml
~]# cat config.yaml
persistence:
  enabled: true
  storageClass: "managed-nfs-storage"
  accessMode: ReadWriteOnce
  size: 8Gi
mysqlUser: "k8suser"
mysqlPassword: "123456"
mysqlDatabase: k8sdb
~]# helm install mydb -f config.yaml stable/mysql

--set在命令行上指定替代

~]# helm install db --set persistence.storageClass="managed-nfs-storage" stable/mysql

也可以把chart包下載下來查看詳情:helm pull stable/mysql --untar


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM