【云原生】Helm 常用命令(chart 安装、升级、回滚、卸载等操作)
文章目錄
- 一、概述
- 二、Helm 倉庫(helm repo)
- 1)添加chart倉庫
- 2)列出已添加的倉庫
- 3)從chart倉庫中更新本地可用chart的信息
- 4)刪除一個或多個倉庫
- 三、創建chart(helm create)
- 四、chart 包安裝(helm install)
- 五、管理chart依賴(helm dependency)
- 1)列舉指定chart的依賴
- 2)依賴升級
- 六、Helm 列表(helm list)
- 七、升級版本(helm upgrade)
- 八、發布歷史(helm history)
- 九、回滾版本(helm rollback)
- 十、展示chart(helm show)
- 十一、拉取chart(helm pull)
- 十二、Helm 打包(helm package)
- 十三、推送chart到harbor(helm cm-push)
- 1)在線安裝
- 2)離線安裝
- 3)helm 增加harbor repo
- 4)示例演示
- 十四、搜索 hub(helm search hub)
- 十五、搜索倉庫(helm search repo)
- 十六、驗證chart(helm lint)
- 十七、常用命令總結
一、概述
Helm 針對Kubernetes的Helm包管理器。Helm的一般操作:
- helm search: ??搜索chart
- helm pull: ???下載chart到本地目錄查看
- helm install: ??上傳chart到Kubernetes
- helm list: ????列出已發布的chart
官方文檔:https://helm.sh/zh/docs/helm/helm/
Helm 架構和基礎語法講解可以參考我這篇文章:【云原生】Helm 架構和基礎語法詳解
二、Helm 倉庫(helm repo)
添加、列出、刪除、更新和索引chart倉庫。
1)添加chart倉庫
helm repo add bitnami https://charts.bitnami.com/bitnami2)列出已添加的倉庫
helm repo list3)從chart倉庫中更新本地可用chart的信息
helm repo update bitnami4)刪除一個或多個倉庫
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 ./redishelm install --set name=prod myredis ./redishelm install --set-string long_int=1234567890 myredis ./redishelm install --set-file my_script=dothings.sh myredis ./redis五、管理chart依賴(helm dependency)
- Helm chart將依賴存儲在’charts/'。對于chart開發者,管理依賴比聲明了所有依賴的’Chart.yaml’文件更容易。
- 依賴命令對該文件進行操作,使得存儲在’charts/'目錄的需要的依賴和實際依賴之間同步變得很容易。
比如Chart.yaml聲明了兩個依賴:
# Chart.yaml dependencies: - name: nginxversion: "1.2.3"repository: "https://example.com/charts" - name: memcachedversion: "3.2.1"repository: "https://another.example.com/charts"-
name 是chart名稱,必須匹配Chart.yaml文件中名稱。
-
version 字段應該包含一個語義化的版本或版本范圍。
從2.2.0開始,倉庫可以被定義為本地存儲的依賴chart的目錄路徑。路徑應該以"file://"前綴開頭,比如:
# Chart.yaml dependencies: - name: nginxversion: "1.2.3"repository: "file://../dependency_chart/nginx"1)列舉指定chart的依賴
# helm dependency list CHART helm dependency list wordpress2)依賴升級
基于Chart.yaml內容升級charts/
# helm dependency update CHART [flags] helm dependency update wordpress六、Helm 列表(helm list)
-
列舉發布版本,該命令會列舉出指定命名空間的所有發布版本,(如果沒有指定命名空間,會使用當前命名空間)。
-
默認情況下,只會列舉出部署的或者失敗的發布,像--uninstalled或者--all會修改默認行為。這些參數可以組合使用:--uninstalled --failed。
-
默認情況下,最多返回256項,使用--max限制數量,--max設置為0不會返回所有結果,而是返回服務器默認值,可能要比256更多。 同時使用--max和--offset參數可以翻頁顯示。
七、升級版本(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)
- 將chart目錄打包到chart歸檔中,該命令將chart打包成一個chart版本包文件。如果給定路徑,就會在該路徑中查找chart(必須包含Chart.yaml文件)然后將目錄打包。
- 要簽名一個chart,使用--sign參數,在大多數場景中,也要提供--keyring path/to/secret/keys和--key keyname。
如果想忽略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-push2)離線安裝
下載地址: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-pushwget https://github.com/chartmuseum/helm-push/releases/download/v0.10.3/helm-push_0.10.3_linux_amd64.tar.gztar 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 list3)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的沙盒項目??梢栽L問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 安裝、升級、回滾、卸載等操作)就先到這里,有疑問的小伙伴,歡迎給我留言哦,后面會有大量的企業案例,請耐心等待哦~
總結
以上是生活随笔為你收集整理的【云原生】Helm 常用命令(chart 安装、升级、回滚、卸载等操作)的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: php如何显示默认图片,图片不存在就显示
- 下一篇: 想成为一个Java软件工程师,谁能带我学