1、helm3基礎使用

最新helm3 https://helm.sh/docs/

1、Helm 介紹

Helm是一個Kubernetes的包管理工具,就像Linux下的包管理器,如yum/apt等,可以很方便的將之前打包好的yaml文件部署到kubernetes上。
Helm有兩個重要概念:
helm:一個命令行客戶端工具,主要用於Kubernetes應用chart的創建、打包、發佈和管理。
Chart:應用描述,一系列用於描述 k8s 資源相關文件的集合。
Release:基於Chart的部署實體,一個 chart 被 Helm 運行後將會生成對應的一個 release;將在k8s中創建出真實運行的資源對象。

2、部署Helm客戶端

Helm客戶端下載地址:https://github.com/helm/helm/releases
解壓移動到/usr/bin/目錄即可。

wget https://get.helm.sh/helm-v3.0.0-linux-amd64.tar.gz
tar zxvf helm-v3.0.0-linux-amd64.tar.gz 
mv linux-amd64/helm /usr/bin/

3、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客戶端版本

4、配置國內Chart倉庫

  • 微軟倉庫(http://mirror.azure.cn/kubernetes/charts/)這個倉庫強烈推薦,基本上官網有的chart這裏都有。
  • 阿里雲倉庫(https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts )
  • 官方倉庫(https://hub.kubeapps.com/charts/incubator)官方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
helm search repo stable

刪除存儲庫:

helm repo remove aliyun

5、Helm基本使用

主要介紹三個命令:

  • chart install
  • chart update
  • chart rollback

1、使用chart部署一個應用

查找chart:

helm search repo
helm search repo mysql

爲什麼mariadb也在列表中?因爲他和mysql有關。

查看chart信息:

helm show chart stable/mysql

安裝包:

helm install db stable/mysql

查看發佈狀態:

 helm status db 

2、安裝前自定義chart配置選項

上面部署的mysql並沒有成功,這是因爲並不是所有的chart都能按照默認配置運行成功,可能會需要一些環境依賴,例如PV。

所以我們需要自定義chart配置選項,安裝過程中有兩種方法可以傳遞配置數據:

  • –values(或-f):指定帶有覆蓋的YAML文件。這可以多次指定,最右邊的文件優先
  • –set:在命令行上指定替代。如果兩者都用,–set優先級高
    –values使用,先將修改的變量寫到一個文件中
    我們找到pvc相關的信息
helm show values stable/mysql
## Persist data to a persistent volume
persistence:
  enabled: true
  ## database data Persistent Volume Storage Class
  ## If defined, storageClassName: <storageClass>
  ## If set to "-", storageClassName: "", which disables dynamic provisioning
  ## If undefined (the default) or set to null, no storageClassName spec is
  ##   set, choosing the default provisioner.  (gp2 on AWS, standard on
  ##   GKE, AWS & OpenStack)
  ##
  # storageClass: "-"
  accessMode: ReadWriteOnce
  size: 8Gi
  annotations: {}

找到我們的nfs-storage

[root@master ~]# kubectl get sc
NAME                  PROVISIONER       AGE
k8s-cephfs            ceph.com/cephfs   34d
managed-nfs-storage   fuseim.pri/ifs    13m

先卸載:

helm uninstall db

命令行替代變量安裝mysql:

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

安裝完畢後mysql就正常運行了。
我們還可以使用yaml文件來定義變量安裝:
我們先導出模板然後修改:

helm show values stable/mysql > config.yaml
[root@master demo]# cat config.yaml
mysqlRootPassword: testing
mysqlUser: liaochao
mysqlPassword: k8s
mysqlDatabase: k8s
persistence:
  enabled: true
  storageClass: "managed-nfs-storage"
  accessMode: ReadWriteOnce
  size: 8Gi

以上將創建具有名稱的默認MySQL用戶liaochao,並授予此用戶訪問新創建的k8s數據庫的權限,但將接受該圖表的所有其餘默認值。
指定yaml文件安裝mysql:

helm install db2 -f config.yaml stable/mysql

該helm install命令可以從多個來源安裝:
chart存儲庫

  • 本地chart存檔(helm install foo-0.1.1.tgz)
  • chart目錄(helm install path/to/foo)
  • 完整的URL(helm install https://example.com/charts/foo-1.2.3.tgz)

我們安裝mysql的時候可以把chart包下載下來查看詳情:

helm pull stable/mysql --untar
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章