官网:https://helm.sh/zh/docs/helm/
Helm
helm #查看helm基本操作命令
helm version #查看helm的版本
helm env #查看环境变量
helm create chartName #创建chart目录(含基本配置文件和目录)
helm package chartDir #将chart目录打包
helm template chartName #渲染template目录下的模板文件(即将这些模板文件的字段内容用values.yaml填充,然后直接输出到终端)
helm search repo keyword #根据关键字检索chart包
helm search hub keyword
#上面2个命令仅仅在第3个字段有区别,repo表示在本地所添加的仓库中进行检索;hub表示在Helm Hub中进行检索。
helm list #查看发布到k8s中的chart对应的release
helm push chart.tgz repoName 上传chart到chart仓库
例:helm push demo.tgz harbor-10.30.12.211 --username=admin --password=Harbor12345
#有些仓库是有账号密码验证的,所以需要加上账号、密码的参数(比如Harbor提供的chart仓库功能,可参考下面的私有仓库搭建先搭建一个私有仓库出来,再进行仓库相关命令的测试)
命令:helm pull repoName/keyword #从chart仓库中拉取chart到本地
例:helm pull harbor-10.30.12.211/demo
#harbor-10.30.12.211/demo的结构是本地起的仓库名/chart包的名字前缀,只要在harbor-10.30.12.211仓库中含有demo为前缀的chart包,就会被下载到本地
helm lint chartName #检查chart包中的文件内容是否正确(即该chart包去k8s中是否能够成功安装部署)
#包可以是chart目录、chart压缩包
helm install releaseName chartName #将chart包发布到k8s集群中安装部署
#releaseName为release的名字,chartName为chart包名,chart可以是未打包的chart,也可以是打包的chart,也可以是仓库中的chart。【chart和release的关系可以大致理解为程序和进程的关系,一个是静态的,一个是动态的】
helm install chartName --generate-name
#可以不指定release的名字,只需要指定–generate-name即可随机生成一个名字
#创建完后可以使用helm list查看是否有对应的release
helm uninstall releaseName #将部署到k8s中的release卸载掉
#卸载完后使用helm list查看relDemo是否被删除了,同时可以使用kubectl get pods查看相应的pod等与release相关的资源是否全部删除干净
helm upgrade releaseName chartName #将部署到k8s中的release升级,即相当于应用升级
#relName指定一个release,该release对应一个k8s中的应用,chartName指定一个chart包,整个过程为直接使用指定的chart包替换部署release。就helm而言release还是原来那个,不过对应的chart包被替换了。对k8s而言,仅仅是将原先资源删除,然后用新的chart包创建资源。
#使用helm list查看release的CHART字段是否更新,同时可以使用kubectl get pods查看相应的pod等与release相关的资源是否全部更新(看名字、运行时间)
helm rollback releaseName revision #将release回退到前一个或若干个版本(k8s中会同步回退)
#revision为第几个版本,1表示第一个版本,2表示第二个版本,以此类推。通常回滚会搭配helm history releaseName使用,通过该命令查看所有的关于本release的发布历史,然后选择回退到哪个版本
#回滚成功后使用helm list查看该release的CHART和APP VERSION是否更新(具体得看chart中的chart.yaml中的version和appVersion有没有相应的修改),同时可以使用kubectl get pods查看相应的pod等与release相关的资源是否全部更新(看名字、运行时间)
helm history releaseName #查看release的发布历史(包括安装、升级、回滚)
helm status releaseName #查看release的基本信息
helm show —— 查看chart包文件内容
helm show chart chartName #查看chart包中的chart.yaml文件内容
#chart包可以是本地的未打包的chart目录(即helm create 创建出来的chart目录),也可以是打包的chart压缩包(由helm package打包),也可以是保存在仓库中的chart包
helm show values chartName #查看chart包中的values.yaml文件内容
#包同上有3种选择
helm show readme chartName #查看chart包中README文件内容
#包同上有3种选择
helm show all chartName #查看chart包中chart.yaml、values.yaml、README文件内容
#包同上有3种选择
helm get —— 查看release指定内容(与helm show作用、格式相同)
helm get notes releaseName #查看release的说明信息(相当于chart中的NOTES.TXT)
helm get manifest releaseName #查看release在k8s中创建出来的资源
helm get hooks releaseName #查看release的回调创建资源
helm get values releaseName #查看release的values配置
helm get all releaseName #查看上述所有内容
helm plugin —— 插件管理
helm plugin list #查看本地安装好的插件 (插件管理)
helm plugin install pluginURL #安装插件
例:helm plugin install https://github.com/chartmuseum/helm-push
#最后的url地址为插件的下载地址,可参考 https://github.com/chartmuseum/helm-push
helm plugin uninstall pluginName #卸载插件
helm plugin update pluginName #更新插件,将插件升级到最新版本
#在下载插件的时候会保存插件及其下载地址,更新的时候使用原本的下载地址直接下载最新版本替换
helm repo —— 仓库管理
helm repo list #(仓库管理)查看添加的chart仓库,可在这些chart仓库中拉取chart(实际上就相当于一个应用的安装包)
helm repo add repoName repoURL #本地添加chart仓库
例:helm repo add abc http://mirror.azure.cn/kubernetes/charts/
#repoName是你自己起的一个名字,用来代表这个repoURL,后续操作仓库的命令中直接用repoName来代替repoURL,只要指定了repoName,就表示要去操作repoName指向的repoURL的仓库
helm repo remove repoName #本地删除chart仓库
helm repo update #将本地所添加的chart仓库的最新信息缓存到本地
#helm search命令是检索某仓库中的chart包,假设仓库中一开始是没有所指定的chart包,所以helm search是检索不到的。这时候如果将chart包上传至该仓库,本地需要执行一遍helm repo update以更新本地的缓存数据才能检索到该指定的chart,因为helm search就是读取本地缓存数据的
helm repo index repoDir --url=repoURL #根据指定仓库目录下的chart包生成index.yaml索引文件
例:helm repo index repo --url=http://192.168.0.1:8080/
#repoDir指定一个仓库的目录,该目录用来存放chart包及索引文件index.yaml。url指定仓库的访问路径,生成的索引文件中会以该url为地址前缀拼接上chart包名作为chart包的访问路径
helm 私有仓库搭建(以Harbor为例)
......