Helm 進階到骨灰玩家,收藏版!

作者:liugp

出處:https://u.kubeinfo.cn/X0OWbz

一、概述

Helm 針對 Kubernetes 的 Helm 包管理器。Helm 的一般操作:

# 查看幫助
helm --help


官方文檔:https://helm.sh/zh/docs/helm/helm/
Helm 架構和基礎語法講解可以參考這篇文章:2.4W 字 Helm 從入門到專家

二、Helm 倉庫(helm repo)

添加、列出、刪除、更新和索引 chart 倉庫。

1)添加 chart 倉庫

helm repo add bitnami https://charts.bitnami.com/bitnami

2)列出已添加的倉庫

helm repo list

3)從 chart 倉庫中更新本地可用 chart 的信息

helm repo update bitnami

4)刪除一個或多個倉庫

helm repo remove bitnami

三、創建 chart(helm create)

使用給定名稱創建新的 chart,該命令創建 chart 目錄和 chart 用到的公共文件目錄。

比如'helm create foo'會創建一個目錄結構看起來像這樣:

$ helm create foo
foo/
├── .helmignore   # Contains patterns to ignore when packaging Helm charts.
├── Chart.yaml    # Information about your chart
├── values.yaml   # The default values for your templates
├── charts/       # Charts that this chart depends on
└── templates/    # The template files
    └── tests/    # The test files

四、chart 包安裝(helm install)

該命令用於安裝 chart 包。安裝參數必須是 chart 的引用,一個打包後的 chart 路徑未打包的 chart 目錄或者是一個 URL

要重寫 chart 中的值,使用--values參數傳遞一個文件或者使用--set參數在命令行傳遞配置,強制使用字符串要用--set-string。當值本身對於命令行太長或者是動態生成的時候,可以使用--set-file設置獨立的值。

helm install -f myvalues.yaml myredis ./redis

helm install --set name=prod myredis ./redis

helm install --set-string long_int=1234567890 myredis ./redis

helm install --set-file my_script=dothings.sh myredis ./redis

五、管理 chart 依賴(helm dependency)

比如 Chart.yaml 聲明瞭兩個依賴:

# Chart.yaml
dependencies:
- name: nginx
    version: "1.2.3"
    repository: "https://example.com/charts"
- name: memcached
    version: "3.2.1"
    repository: "https://another.example.com/charts"

從 2.2.0 開始,倉庫可以被定義爲本地存儲的依賴 chart 的目錄路徑。路徑應該以 "file://" 前綴開頭,比如:

# Chart.yaml
dependencies:
- name: nginx
    version: "1.2.3"
    repository: "file://../dependency_chart/nginx"

1)列舉指定 chart 的依賴

# helm dependency list CHART
helm dependency list wordpress

2)依賴升級

基於 Chart.yaml 內容升級 charts/

# helm dependency update CHART [flags]
helm dependency update wordpress

六、Helm 列表(helm list)

# -A顯示所有
helm list --max=10 --offset=2 -A

七、升級版本(helm upgrade)

該命令將發佈升級到新版的 chart。升級參數必須是發佈和 chart。chart 參數可以是:chart引用('example/mariadb')chart目錄路徑,打包的 chart 或者完整 URL。對於 chart 引用,除非使用'--version'參數指定,否則會使用最新版本。

helm upgrade --set foo=bar --set foo=newbar redis ./redis

八、發佈歷史(helm history)

檢索發佈歷史,打印給定版本的歷史修訂。默認會返回最大的256個歷史版本。設置--max配置返回歷史列表的最大長度。

歷史發佈集合會被打印成格式化的表格,例如:

$ helm history angry-bird
REVISION    UPDATED                     STATUS          CHART             APP VERSION     DESCRIPTION
1           Mon Oct 3 10:15:13 2016     superseded      alpine-0.1.0      1.0             Initial install
2           Mon Oct 3 10:15:13 2016     superseded      alpine-0.1.0      1.0             Upgraded successfully
3           Mon Oct 3 10:15:13 2016     superseded      alpine-0.1.0      1.0             Rolled back to 2
4           Mon Oct 3 10:15:13 2016     deployed        alpine-0.1.0      1.0             Upgraded successfully

九、回滾版本(helm rollback)

回滾發佈到上一個版本,回滾命令的第一個參數是發佈的名稱,第二是修訂(版本)號,如果省略此參數,會回滾到上一個版本。

# helm rollback <RELEASE> [REVISION] [flags]
# 先查看歷史版本
helm history myharbor -n harbor
# 不指定版本就回退上個版本
helm rollback myharbor 1 -n harbor
helm rollback myharbor -n harbor

十、展示 chart(helm show)

# helm show all [CHART] [flags]
# 該命令檢查chart(目錄、文件或URL)並顯示所有的內容(values.yaml, Chart.yaml, README)
helm show all mysql

# helm show values [CHART] [flags]
# 該命令檢查chart(目錄、文件或URL)並顯示values.yaml文件的內容
helm show values mysql

十一、拉取 chart(helm pull)

從倉庫下載並(可選)在本地目錄解壓。

# helm pull [chart URL | repo/chartname] [...] [flags]
# 僅下載
helm pull bitnami/redis
# 下載並解壓到當前目錄
helm pull bitnami/redis --untar

十二、Helm 打包(helm package)

helm package mysql/
# Successfully packaged chart and saved it to: /opt/k8s/helm/mysql-9.3.1.tgz

如果想忽略 helm 中的文件,可以在.helmignore進行匹配,該. helmignore 文件支持 Unix shell 全局匹配,相對路徑匹配和否定(以!前綴反向匹配)。每行僅考慮一種模式。示例如下:

# .helmignore
.git
*/temp*
*/*/temp*
temp?

十三、推送 chart 到 harbor(helm cm-push)

將 chart 推送到遠程。

1)在線安裝

helm plugin install https://github.com/chartmuseum/helm-push

2)離線安裝

下載地址:https://github.com/chartmuseum/helm-push/tags

# 1、下載安裝包
wget https://github.com/chartmuseum/helm-push/releases/tag/v0.10.3

# 2、查看helm的plugin路徑:helm env
helm env

# 3、在該路徑下創建helm-push文件夾,並將安裝包拷貝到該文件夾下解壓即可
mkdir /root/.local/share/helm/plugins/helm-push

wget https://github.com/chartmuseum/helm-push/releases/download/v0.10.3/helm-push_0.10.3_linux_amd64.tar.gz

tar zxvf /root/.local/share/helm/plugins/helm-push/helm-push_0.10.3_linux_amd64.tar.gz -C /root/.local/share/helm/plugins/helm-push

查看插件

helm plugin list

3)helm 增加 harbor repo

# chartrepo,固定參數,bigdata自定義項目
helm repo add local-harbor --username=admin --password=Harbor12345 https://myharbor.com/chartrepo/bigdata/ --ca-file /opt/k8s/helm/ca.crt

證書直接在 harbor 上下載

4)示例演示

# 查看幫助
helm cm-push --help

# 推送,接【目錄】
helm cm-push mysql/ local-harbor --ca-file /opt/k8s/helm/ca.crt

# 推送,接【壓縮包】
helm cm-push wordpress-15.1.5.tgz local-harbor --ca-file /opt/k8s/helm/ca.crt

# 推送,指定版本,--version
helm cm-push mychart/ --version="1.2.3" local-harbor --ca-file /opt/k8s/helm/ca.crt

# 強制推送,--force
helm cm-push --force mychart-0.3.2.tgz local-harbor

查看

十四、搜索 hub(helm search hub)

在 Artifact Hub 或自己的 hub 實例中搜索 chart。

Artifact Hub基於 web 頁面的應用,支持 CNCF 項目的查找、安裝和發佈包及配置項,包括了公開發布的 Helm chart。它是 CNCF 的沙盒項目。可以訪問 https://artifacthub.io/

# 不帶參數,列出所有
helm search hub

# 指定chart
helm search hub mysql

十五、搜索倉庫(helm search repo)

用 chart 中關鍵字搜索倉庫,搜索會讀取系統上配置的所有倉庫,並查找匹配。搜索這些倉庫會使用存儲在系統中的元數據。它會展示找到最新穩定版本的 chart。如果指定了--devel參數,輸出會包括預發佈版本。

# Search for stable release versions matching the keyword "nginx"
$ helm search repo nginx

# Search for release versions matching the keyword "nginx", including pre-release versions
$ helm search repo nginx --devel

# Search for the latest stable release for nginx-ingress with a major version of 1
$ helm search repo nginx-ingress --version ^1.0.0

十六、驗證 chart(helm lint)

該命令使用一個 chart 路徑並運行一系列的測試來驗證 chart 的格式是否正確。如果遇到引起 chart 安裝失敗的情況,會觸發 [ERROR] 信息,如果遇到違反慣例或建議的問題,會觸發[WARNING]。

# helm lint PATH [flags]
helm lint ./mysql


十七、常用命令總結

helm version                            // 查看helm版本
helm create xxx                         // 創建一個xxx charts
helm lint ./xxx                         // 檢查包的格式或信息是否有問題
helm install xxx1 ./xxx                 // 部署安裝xxx,設置名稱爲xxx1
helm list                               // 列出已經部署的charts
helm history                            // 發佈歷史
helm upgrade                            // 更新版本
helm rollback                           // 回滾版本
helm package ./xxx                      // 打包charts
helm repo add --username admin --password password myharbor xxx  // 增加repo
helm uninstall xxx1                     // 卸載刪除xxx1
helm pull                                // 拉取chart包
helm cm-push                            // 推送chart包
helm repo update                        // 更新倉庫資源
helm search hub                         // 從 Artifact Hub 中查找並列出 helm charts。Artifact Hub中存放了大量不同的倉庫
helm search repo                        // 從你添加(使用 helm repo add)到本地 helm 客戶端中的倉庫中進行查找。該命令基於本地數據進行搜索,無需連接互聯網

Helm 常用命令(chart 安裝、升級、回滾、卸載等操作)就先到這裏,有疑問的小夥伴,歡迎給我留言哦!

本文由 Readfog 進行 AMP 轉碼,版權歸原作者所有。
來源https://mp.weixin.qq.com/s/6BwRhFQnKubs2BgUMWajuw