在没有helm之前,需自定义deployment、service、ingress,helm的作用是通过打包的方式,把deployment、service、ingress打包在一块,一键式部署服务,类似于yum功能。这是官方提供的类似于安装仓库的功能,可以实现一键化部署应用
(1)chart:helm的软件包,包括deployment、service、ingress,是一些定义好的yaml资源,类似于yum的rpm包
(2)release:可以理解为版本或在安装过程中给部署的应用起一个名称
(3)repository:仓库,提供一个包含chart资源的服务器。yaml资源的保存地址
docker官网下载镜像,github官网下载源码包
添加补齐命令
source <(helm completion bash)
2、添加常用仓库
helm repo add bitnami https://charts.bitnami.com/bitnami
helm repo add stable http://mirror.azure.cn/kubernetes/charts
helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts不推荐
helm repo add incubator https://charts.helm.sh/incubator官网
4、更新仓库资源
helm repo update
5、查看仓库资源
查找指定仓库是否包含nginx的资源
helm search repo bitnami | grep nginx
6、查看chart的详细信息
helm show chart bitnami/nginx(chart信息)
helm show all bitnami/nginx(所有信息)
9、部署chart资源
helm install my-nginx bitnami/nginx -n default
my-nginx |
安装的名称或版本 |
bitnami |
仓库名 |
nginx |
指的是chart,一系列yaml资源的集合 |
-n default |
指定命名空间 |
10、删除chart资源
helm uninstall my-nginx
11、随机生成一个chart资源
helm install bitnami/nginx --generate-name
--generate-name |
随机生成一个release名称 |
12、查看当前安装的release版本
1 |
表示回滚 |
13、helm组织结构
14、自定义chart资源
①创建nginx模板
charts |
存储依赖环境。若这个chart依赖其他chart,依赖文件会保存在这个目录中 |
Chart.yaml |
helm chart的元数据文件,包含这个chart的名称、版本和维护者信息等 |
templates |
包含清单模板的目录 |
deployment.yaml |
部署应用的模板文件 |
_helpers.tpl |
帮助文档,告诉用户如何定义模板的值 |
hpa.yaml |
定义应用程序副本数的自动扩缩容行为 |
ingress.yaml |
定义外部流量如何转发到应用程序 |
NOTES.txt |
注意事项 |
serviceaccount.yaml |
应用程序的服务账号 |
service.yaml |
集群内部的访问配置 |
tests |
测试目录和文件,chart部署完成后可以用来测试的文件 |
test-connection.yaml |
|
values.yaml 【核心】 |
自定义的值,都是通过values.yaml文件,把自定义的数据覆盖到安装的chart |
②helm自定义访问
这些自定义的值会传给template目录中的各个文件
③验证语法helm lint nginx(在nginx的上一层目录执行此命令)
⑤部署
• 测试:helm install nginx-11 ./nginx --dry-run --debug
nginx-11 |
release版本号 |
./nginx |
当前目录下的nginx的chart |
--dry-run --debug |
这个集群不会部署到集群中,进行参数验证,测试chart的配置的是否正确 |
• 安装
第一种方式helm install nginx-11 ./nginx -n default
第二种方式 helm install nginx-11 ./nginx -n default
• 部署ingress(基于deployment+nodeport模式)
wget https://gitee.com/mirrors/ingress-nginx/raw/nginx-0.30.0/deploy/static/mandatory.yaml
wget https://gitee.com/mirrors/ingress-nginx/raw/nginx-0.30.0/deploy/static/provider/baremetal/service-nodeport.yaml
15、测试访问
16、修改chart文件后重新部署
①修改service类型nodeport,并且不生成ingress
②重新定义chart名称
③验证chart语法
④更新chart资源并访问
17、回滚
版本2取消了ingress,回滚到版本1验证是否存在ingress即可确认回滚成功与否
18、上传harbor仓库
③指定位置安装helm-push
mkdir -p ~/.local/share/helm/plugins/helm-push
cd ~/.local/share/helm/plugins/helm-push
④测试
docker login -u admin -p 123456 https://hub.test.com
⑤打包更新后的nginx
helm package nginx
⑥上传到仓库
helm push nginx-0.2.0.tgz oci://hub.test.com/chart
原因:harbor仓库是https登录的
解决:跳过tls验证
helm push nginx-0.2.0.tgz oci://hub.test.com/chart --insecure-skip-tls-verify
⑦删除所有,从仓库中拉取镜像
helm pull oci://hub.test.com/chart/nginx --version 0.2.0 --insecure-skip-tls-verify
helm常用命令 |
|
helm repo add 仓库名称 url仓库地址 |
添加仓库 |
helm repo update |
不加仓库名,就是更新所有仓库 |
helm repo list(=helm repo ls) |
仓库列表 |
helm repo remove 仓库名称 |
删除仓库 |
helm show chart stable/nginx |
查看chart信息 |
helm show all stable/nginx |
查看详细信息 |
helm install nginx-11 stable/nginx -n lucky-cloud |
安装chart,安装官网的默认版本 |
helm uninstall nginx-11 |
删除安装好的chart |
helm list |
查看已安装的chart |
自定义模板 |
|
helm create nginx |
创建一个自定义的chart模板(其中value.yaml最重要,这里的值会传给templates中的yaml文件) |
安装 |
|
helm install nginx-11 ./nginx |
目录 |
helm install nginx-11 ./nginx-0.1.0.tgz |
路径 |
helm packge nginx |
打包 |
回滚 |
|
helm history nginx-11 |
|
helm rollback nginx-11 1 |