一、概述
Helm 針對(duì) Kubernetes 的 Helm 包管理器。Helm 的一般操作:
- helm search: ?? 搜索 chart
- helm pull: ??? 下載 chart 到本地目錄查看
- helm install: ?? 上傳 chart 到 Kubernetes
- helm list: ???? 列出已發(fā)布的 chart
#查看幫助
helm--help
官方文檔:https://helm.sh/zh/docs/helm/helm/
Helm 架構(gòu)和基礎(chǔ)語(yǔ)法講解可以參考這篇文章:2.4W 字 Helm 從入門(mén)到專家
二、Helm 倉(cāng)庫(kù)(helm repo)
1)添加 chart 倉(cāng)庫(kù)
helmrepoaddbitnamihttps://charts.bitnami.com/bitnami
2)列出已添加的倉(cāng)庫(kù)
helmrepolist
3)從 chart 倉(cāng)庫(kù)中更新本地可用 chart 的信息
helmrepoupdatebitnami
4)刪除一個(gè)或多個(gè)倉(cāng)庫(kù)
helmreporemovebitnami
三、創(chuàng)建 chart(helm create)
使用給定名稱創(chuàng)建新的 chart,該命令創(chuàng)建 chart 目錄和 chart 用到的公共文件目錄。
比如'helm create foo'會(huì)創(chuàng)建一個(gè)目錄結(jié)構(gòu)看起來(lái)像這樣:
$helmcreatefoo
foo/
├──.helmignore#ContainspatternstoignorewhenpackagingHelmcharts.
├──Chart.yaml#Informationaboutyourchart
├──values.yaml#Thedefaultvaluesforyourtemplates
├──charts/#Chartsthatthischartdependson
└──templates/#Thetemplatefiles
└──tests/#Thetestfiles
四、chart 包安裝(helm install)
該命令用于安裝 chart 包。安裝參數(shù)必須是 chart 的引用,一個(gè)打包后的 chart 路徑,未打包的 chart 目錄或者是一個(gè) URL。
要重寫(xiě) chart 中的值,使用--values
參數(shù)傳遞一個(gè)文件或者使用--set
參數(shù)在命令行傳遞配置,強(qiáng)制使用字符串要用--set-string
。當(dāng)值本身對(duì)于命令行太長(zhǎng)或者是動(dòng)態(tài)生成的時(shí)候,可以使用--set-file
設(shè)置獨(dú)立的值。
helminstall-fmyvalues.yamlmyredis./redis
helminstall--setname=prodmyredis./redis
helminstall--set-stringlong_int=1234567890myredis./redis
helminstall--set-filemy_script=dothings.shmyredis./redis
五、管理 chart 依賴(helm dependency)
- Helm chart 將依賴存儲(chǔ)在'charts/'。對(duì)于 chart 開(kāi)發(fā)者,管理依賴比聲明了所有依賴的'Chart.yaml'文件更容易。
- 依賴命令對(duì)該文件進(jìn)行操作,使得存儲(chǔ)在'charts/'目錄的需要的依賴和實(shí)際依賴之間同步變得很容易。
#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"
-
name
是 chart 名稱,必須匹配Chart.yaml
文件中名稱。 -
version
字段應(yīng)該包含一個(gè)語(yǔ)義化的版本或版本范圍。
從 2.2.0 開(kāi)始,倉(cāng)庫(kù)可以被定義為本地存儲(chǔ)的依賴 chart 的目錄路徑。路徑應(yīng)該以"file://"前綴開(kāi)頭,比如:
#Chart.yaml
dependencies:
-name:nginx
version:"1.2.3"
repository:"file://../dependency_chart/nginx"
1)列舉指定 chart 的依賴
#helmdependencylistCHART
helmdependencylistwordpress
2)依賴升級(jí)
基于 Chart.yaml 內(nèi)容升級(jí) charts/
#helmdependencyupdateCHART[flags]
helmdependencyupdatewordpress
六、Helm 列表(helm list)
- 列舉發(fā)布版本,該命令會(huì)列舉出指定命名空間的所有發(fā)布版本,(如果沒(méi)有指定命名空間,會(huì)使用當(dāng)前命名空間)。
-
默認(rèn)情況下,只會(huì)列舉出部署的或者失敗的發(fā)布,像
--uninstalled
或者--all
會(huì)修改默認(rèn)行為。這些參數(shù)可以組合使用:--uninstalled --failed
。 -
默認(rèn)情況下,最多返回
256
項(xiàng),使用--max
限制數(shù)量,--max
設(shè)置為0 不會(huì)返回所有結(jié)果,而是返回服務(wù)器默認(rèn)值,可能要比 256 更多。同時(shí)使用--max
和--offset
參數(shù)可以翻頁(yè)顯示。
#-A顯示所有
helmlist--max=10--offset=2-A
七、升級(jí)版本(helm upgrade)
該命令將發(fā)布升級(jí)到新版的 chart。升級(jí)參數(shù)必須是發(fā)布和 chart。chart 參數(shù)可以是:
chart引用('example/mariadb')
,chart目錄路徑
,打包的 chart 或者完整 URL。對(duì)于 chart 引用,除非使用'--version'參數(shù)指定,否則會(huì)使用最新版本。
helmupgrade--setfoo=bar--setfoo=newbarredis./redis
八、發(fā)布?xì)v史(helm history)
檢索發(fā)布?xì)v史,打印給定版本的歷史修訂。默認(rèn)會(huì)返回最大的
256
個(gè)歷史版本。設(shè)置--max
配置返回歷史列表的最大長(zhǎng)度。
歷史發(fā)布集合會(huì)被打印成格式化的表格,例如:
$helmhistoryangry-bird
REVISIONUPDATEDSTATUSCHARTAPPVERSIONDESCRIPTION
1MonOct310132016supersededalpine-0.1.01.0Initialinstall
2MonOct310132016supersededalpine-0.1.01.0Upgradedsuccessfully
3MonOct310132016supersededalpine-0.1.01.0Rolledbackto2
4MonOct310132016deployedalpine-0.1.01.0Upgradedsuccessfully
九、回滾版本(helm rollback)
回滾發(fā)布到上一個(gè)版本,回滾命令的第一個(gè)參數(shù)是發(fā)布的名稱,第二是修訂(版本)號(hào),如果省略此參數(shù),會(huì)回滾到上一個(gè)版本。
#helmrollback[REVISION][flags]
#先查看歷史版本
helmhistorymyharbor-nharbor
#不指定版本就回退上個(gè)版本
helmrollbackmyharbor1-nharbor
helmrollbackmyharbor-nharbor
十、展示 chart(helm show)
#helmshowall[CHART][flags]
#該命令檢查chart(目錄、文件或URL)并顯示所有的內(nèi)容(values.yaml,Chart.yaml,README)
helmshowallmysql
#helmshowvalues[CHART][flags]
#該命令檢查chart(目錄、文件或URL)并顯示values.yaml文件的內(nèi)容
helmshowvaluesmysql
十一、拉取 chart(helm pull)
從倉(cāng)庫(kù)下載并(可選)在本地目錄解壓。
#helmpull[chartURL|repo/chartname][...][flags]
#僅下載
helmpullbitnami/redis
#下載并解壓到當(dāng)前目錄
helmpullbitnami/redis--untar
十二、Helm 打包(helm package)
- 將 chart 目錄打包到 chart 歸檔中,該命令將 chart 打包成一個(gè) chart 版本包文件。如果給定路徑,就會(huì)在該路徑中查找 chart(必須包含 Chart.yaml 文件)然后將目錄打包。
-
要簽名一個(gè) chart,使用
--sign
參數(shù),在大多數(shù)場(chǎng)景中,也要提供--keyring path/to/secret/keys
和--key keyname
。
helmpackagemysql/
#Successfullypackagedchartandsaveditto:/opt/k8s/helm/mysql-9.3.1.tgz
如果想忽略 helm 中的文件,可以在
.helmignore
進(jìn)行匹配,該.helmignore 文件支持 Unix shell 全局匹配,相對(duì)路徑匹配和否定(以!前綴反向匹配)。每行僅考慮一種模式。示例如下:
#.helmignore
.git
*/temp*
*/*/temp*
temp?
十三、推送 chart 到 harbor(helm cm-push)
將 chart 推送到遠(yuǎn)程。
1)在線安裝
helmplugininstallhttps://github.com/chartmuseum/helm-push
2)離線安裝
下載地址:https://github.com/chartmuseum/helm-push/tags
#1、下載安裝包
wgethttps://github.com/chartmuseum/helm-push/releases/tag/v0.10.3
# 2、查看helm的plugin路徑:helm env
helmenv
#3、在該路徑下創(chuàng)建helm-push文件夾,并將安裝包拷貝到該文件夾下解壓即可
mkdir/root/.local/share/helm/plugins/helm-push
wgethttps://github.com/chartmuseum/helm-push/releases/download/v0.10.3/helm-push_0.10.3_linux_amd64.tar.gz
tarzxvf/root/.local/share/helm/plugins/helm-push/helm-push_0.10.3_linux_amd64.tar.gz-C/root/.local/share/helm/plugins/helm-push
查看插件
helmpluginlist
3)helm 增加 harbor repo
#chartrepo,固定參數(shù),bigdata自定義項(xiàng)目
helmrepoaddlocal-harbor--username=admin--password=Harbor12345https://myharbor.com/chartrepo/bigdata/--ca-file/opt/k8s/helm/ca.crt
證書(shū)直接在 harbor 上下載
4)示例演示
#查看幫助
helmcm-push--help
#推送,接【目錄】
helmcm-pushmysql/local-harbor--ca-file/opt/k8s/helm/ca.crt
#推送,接【壓縮包】
helmcm-pushwordpress-15.1.5.tgzlocal-harbor--ca-file/opt/k8s/helm/ca.crt
#推送,指定版本,--version
helmcm-pushmychart/--version="1.2.3"local-harbor--ca-file/opt/k8s/helm/ca.crt
#強(qiáng)制推送,--force
helmcm-push--forcemychart-0.3.2.tgzlocal-harbor
查看
十四、搜索 hub(helm search hub)
在Artifact Hub或自己的 hub 實(shí)例中搜索 chart。
Artifact Hub
是基于 web 頁(yè)面的應(yīng)用,支持 CNCF 項(xiàng)目的查找、安裝和發(fā)布包及配置項(xiàng),包括了公開(kāi)發(fā)布的 Helm chart。它是 CNCF 的沙盒項(xiàng)目。可以訪問(wèn)https://artifacthub.io/
#不帶參數(shù),列出所有
helmsearchhub
#指定chart
helmsearchhubmysql
十五、搜索倉(cāng)庫(kù)(helm search repo)
用 chart 中關(guān)鍵字搜索倉(cāng)庫(kù),搜索會(huì)讀取系統(tǒng)上配置的所有倉(cāng)庫(kù),并查找匹配。搜索這些倉(cāng)庫(kù)會(huì)使用存儲(chǔ)在系統(tǒng)中的元數(shù)據(jù)。它會(huì)展示找到最新穩(wěn)定版本的 chart。如果指定了
--devel
參數(shù),輸出會(huì)包括預(yù)發(fā)布版本。
#Searchforstablereleaseversionsmatchingthekeyword"nginx"
$helmsearchreponginx
#Searchforreleaseversionsmatchingthekeyword"nginx",includingpre-releaseversions
$helmsearchreponginx--devel
#Searchforthelateststablereleasefornginx-ingresswithamajorversionof1
$helmsearchreponginx-ingress--version^1.0.0
十六、驗(yàn)證 chart(helm lint)
該命令使用一個(gè) chart 路徑并運(yùn)行一系列的測(cè)試來(lái)驗(yàn)證 chart 的格式是否正確。如果遇到引起 chart 安裝失敗的情況,會(huì)觸發(fā)[ERROR]信息,如果遇到違反慣例或建議的問(wèn)題,會(huì)觸發(fā)[WARNING]。
#helmlintPATH[flags]
helmlint./mysql
十七、常用命令總結(jié)
helmversion//查看helm版本
helmcreatexxx//創(chuàng)建一個(gè)xxxcharts
helmlint./xxx//檢查包的格式或信息是否有問(wèn)題
helminstallxxx1./xxx//部署安裝xxx,設(shè)置名稱為xxx1
helmlist//列出已經(jīng)部署的charts
helmhistory//發(fā)布?xì)v史
helmupgrade//更新版本
helmrollback//回滾版本
helmpackage./xxx//打包c(diǎn)harts
helmrepoadd--usernameadmin--passwordpasswordmyharborxxx//增加repo
helmuninstallxxx1//卸載刪除xxx1
helmpull//拉取chart包
helmcm-push//推送chart包
helmrepoupdate//更新倉(cāng)庫(kù)資源
helm search hub //從 Artifact Hub 中查找并列出 helm charts。Artifact Hub中存放了大量不同的倉(cāng)庫(kù)
helm search repo //從你添加(使用 helm repo add)到本地 helm 客戶端中的倉(cāng)庫(kù)中進(jìn)行查找。該命令基于本地?cái)?shù)據(jù)進(jìn)行搜索,無(wú)需連接互聯(lián)網(wǎng)
Helm 常用命令(chart 安裝、升級(jí)、回滾、卸載等操作)就先到這里,有疑問(wèn)的小伙伴,歡迎給我留言哦!
審核編輯:湯梓紅
-
命令
+關(guān)注
關(guān)注
5文章
683瀏覽量
22011 -
chart
+關(guān)注
關(guān)注
0文章
2瀏覽量
1529 -
kubernetes
+關(guān)注
關(guān)注
0文章
224瀏覽量
8712
原文標(biāo)題:Helm 進(jìn)階到骨灰玩家,請(qǐng)收藏!
文章出處:【微信號(hào):magedu-Linux,微信公眾號(hào):馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。
發(fā)布評(píng)論請(qǐng)先 登錄
相關(guān)推薦
評(píng)論