Helm3常用操作命令

时间:2024-10-13 08:10:03

官网:/zh/docs/helm/

helm

作用:查看helm基本操作命令
命令:helm

作用:查看helm的版本
命令:helm version

作用:查看环境变量
命令:helm env

作用:创建chart目录(含基本配置文件和目录)
命令:helm create chartName
举例:helm create abc

作用:将chart目录打包
命令:helm package chartDir
举例:helm package abc
说明:chartDir为chart目录

作用:渲染template目录下的模板文件(即将这些模板文件的字段内容用填充,然后直接输出到终端)
命令:helm template chartName
举例:helm template abc

作用:根据关键字检索chart包
命令1:helm search repo keyword
举例1:helm search repo demo
命令2:helm search hub keyword
举例2:helm search hub demo
说明:上面2个命令仅仅在第3个字段有区别,repo表示在本地所添加的仓库中进行检索;hub表示在Helm Hub中进行检索。

作用:查看发布到k8s中的chart对应的release
命令:helm list

作用:上传chart到chart仓库
命令:helm push repoName
举例:helm push harbor-10.30.12.211 --username=admin --password=Harbor12345
说明:有些仓库是有账号密码验证的,所以需要加上账号、密码的参数(比如Harbor提供的chart仓库功能,可参考下面的私有仓库搭建先搭建一个私有仓库出来,再进行仓库相关命令的测试)

作用:从chart仓库中拉取chart到本地
命令:helm pull repoName/keyword
举例:helm pull harbor-10.30.12.211/demo
说明: harbor-10.30.12.211/demo的结构是本地起的仓库名/chart包的名字前缀,只要在harbor-10.30.12.211仓库中含有demo为前缀的chart包,就会被下载到本地

作用:检查chart包中的文件内容是否正确(即该chart包去k8s中是否能够成功安装部署)
命令:helm lint chartName
举例:helm lint demo-0.1.
说明:包可以是chart目录、chart压缩包

作用:将chart包发布到k8s集群中安装部署
命令1:helm install releaseName chartName
举例1:helm install relDemo demo-0.1.
说明1:releaseName为release的名字,chartName为chart包名,chart可以是未打包的chart,也可以是打包的chart,也可以是仓库中的chart。【chart和release的关系可以大致理解为程序和进程的关系,一个是静态的,一个是动态的】
命令2:helm install chartName --generate-name
举例2:helm install demo-0.1. --generate-name
说明2:可以不指定release的名字,只需要指定–generate-name即可随机生成一个名字
验证:创建完后可以使用helm list查看是否有对应的release

作用:将部署到k8s中的release卸载掉
命令:helm uninstall releaseName
举例:helm uninstall relDemo
验证:卸载完后使用helm list查看relDemo是否被删除了,同时可以使用kubectl get pods查看相应的pod等与release相关的资源是否全部删除干净

作用:将部署到k8s中的release升级,即相当于应用升级
命令:helm upgrade releaseName chartName
举例:helm upgrade relDemo demo-1.0.
说明:relName指定一个release,该release对应一个k8s中的应用,chartName指定一个chart包,整个过程为直接使用指定的chart包替换部署release。就helm而言release还是原来那个,不过对应的chart包被替换了。对k8s而言,仅仅是将原先资源删除,然后用新的chart包创建资源。
验证:使用helm list查看release的CHART字段是否更新,同时可以使用kubectl get pods查看相应的pod等与release相关的资源是否全部更新(看名字、运行时间)

作用:将release回退到前一个或若干个版本(k8s中会同步回退)
命令:helm rollback releaseName revision
举例:helm rollback relDemo 1
说明:revision为第几个版本,1表示第一个版本,2表示第二个版本,以此类推。通常回滚会搭配helm history releaseName使用,通过该命令查看所有的关于本release的发布历史,然后选择回退到哪个版本
验证:回滚成功后使用helm list查看该release的CHART和APP VERSION是否更新(具体得看chart中的中的version和appVersion有没有相应的修改),同时可以使用kubectl get pods查看相应的pod等与release相关的资源是否全部更新(看名字、运行时间)

作用:查看release的发布历史(包括安装、升级、回滚)
命令:helm history releaseName
举例:helm history relDemo

作用:查看release的基本信息
命令:helm status releaseName
举例:helm status relDemo

helm show——查看chart包文件内容

作用:查看chart包中的文件内容
命令:helm show chart chartName
举例1:helm show chart demo
举例2:helm show chart
举例3:helm show chart harbor-10.30.12.211/demo
说明:chart包可以是本地的未打包的chart目录(即helm create 创建出来的chart目录),也可以是打包的chart压缩包(由helm package打包),也可以是保存在仓库中的chart包

作用:查看chart包中的文件内容
命令:helm show values chartName
说明:包同上有3种选择

作用:查看chart包中README文件内容
命令:helm show readme chartName
说明:包同上有3种选择

作用:查看chart包中、、README文件内容
命令:helm show all chartName
说明:包同上有3种选择

helm get——查看release指定内容(与helm show作用、格式相同)

作用:查看release的说明信息(相当于chart中的NOTES.TXT)
命令:helm get notes releaseName
举例:helm get notes relDemo

作用:查看release在k8s中创建出来的资源
命令:helm get manifest releaseName
举例:helm get manifest relDemo

作用:查看release的回调创建资源
命令:helm get hooks releaseName
举例:helm get hooks relDemo

作用:查看release的values配置
命令:helm get values releaseName
举例:helm get values relDemo

作用:查看上述所有内容
命令:helm get all releaseName
举例:helm get all relDemo

helm plugin——插件管理

作用:查看本地安装好的插件
命令:helm plugin list

作用:安装插件
命令:helm plugin install pluginURL
举例:helm plugin install /chartmuseum/helm-push
说明:最后的url地址为插件的下载地址,可参考 /chartmuseum/helm-push

作用:卸载插件
命令:helm plugin uninstall pluginName
举例:helm plugin uninstall push

作用:更新插件,将插件升级到最新版本
命令:helm plugin update pluginName
举例:helm plugin update push
说明:在下载插件的时候会保存插件及其下载地址,更新的时候使用原本的下载地址直接下载最新版本替换

helm repo——仓库管理

作用:查看添加的chart仓库,可在这些chart仓库中拉取chart(实际上就相当于一个应用的安装包)
命令:helm repo list

作用:本地添加chart仓库
命令:helm repo add repoName repoURL
举例:helm repo add abc /kubernetes/charts/
说明:repoName是你自己起的一个名字,用来代表这个repoURL,后续操作仓库的命令中直接用repoName来代替repoURL,只要指定了repoName,就表示要去操作repoName指向的repoURL的仓库

作用:本地删除chart仓库
命令:helm repo remove repoName
举例:helm repo remove abc

作用:将本地所添加的chart仓库的最新信息缓存到本地
命令:helm repo update
说明:helm search命令是检索某仓库中的chart包,假设仓库中一开始是没有所指定的chart包,所以helm search是检索不到的。这时候如果将chart包上传至该仓库,本地需要执行一遍helm repo update以更新本地的缓存数据才能检索到该指定的chart,因为helm search就是读取本地缓存数据的

作用:根据指定仓库目录下的chart包生成索引文件
命令:helm repo index repoDir --url=repoURL
举例:helm repo index repo --url=http://192.168.0.1:8080/
说明:repoDir指定一个仓库的目录,该目录用来存放chart包及索引文件。url指定仓库的访问路径,生成的索引文件中会以该url为地址前缀拼接上chart包名作为chart包的访问路径

helm 私有仓库搭建(以Harbor为例)

Harbor安装流程:/QianLiStudent/article/details/107224292

先安装好Harbor,并在harbor安装目录下执行./prepare --with-chartmuseum即可将私有chart仓库功能集成到Harbor中。然后使用docker-compose up -d启动相关容器,并在浏览器访问Harbor UI,进入项目后即可看到多了一个Helm Charts功能。

在这里插入图片描述
测试一下本地push一个chart到harbor中,需要事先安装一个push组件。
命令:helm plugin install /chartmuseum/helm-push
查看:helm push -h
在这里插入图片描述

把harbor中的将要作为chart仓库的项目添加到本地helm。
命令:helm repo add repoName http://127.0.0.1:80/chartrepo/projectName
说明:repoName为你自己起的仓库名,后续对仓库的操作都用这个仓库名来代表指定地址的仓库。命令后面的URL地址为仓库的地址,结构:http://127.0.0.1:80(harbor的nginx容器运行位置,当然这里是端口映射),chartrepo为固定uri前缀(因为nginx中会用/chartrepo作为uri进行匹配然后做请求转发处理),projectName为harbor中实现创建好的公有的项目。

将chart目录打包得到一个.tgz的压缩包。
命令:helm package chartDir
说明:chartDir是事先创建好的一个chart包,使用命令:helm create abc 创建

将chart包push到harbor中的chart仓库中(该chart仓库需要事先本地添加过)
命令:helm push repoName --username=admin --password=Harbor12345
说明:为chart包,repoName为之前添加到本地的chart仓库(该仓库名对应一个chart仓库地址),username为harbor账号,password为密码

FAQ

Q:执行命令:helm repo add harbor-10.30.12.211 http://10.30.12.211/chartrepo/charts,
报错如下:Error: looks like “http://10.30.12.211/chartrepo/charts” is not a valid chart repository or cannot be reached: failed to fetch http://10.30.12.211/chartrepo/charts/ : 401 Unauthorized
在这里插入图片描述
A:检查url地址有没有写对,尤其是chartrepo这个uri前缀是固定的,且最后的charts是harbor中已经事先存在的公开的项目。

Q:执行命令:helm push demo-0.1. harbor-10.30.12.211,
报错如下:Error: 401: could not properly parse response JSON: {“errors”:[{“code”:“UNAUTHORIZED”,“message”:“UnAuthorized”}]}
在这里插入图片描述
A:错误提示未认证,这里需要输入账号和密码参数。
在这里插入图片描述
如果habor配置了https访问,则需要相应地指定证书等参数。
在这里插入图片描述