什么是helm??
在没有这个helm之前,deployment service ingress helm的作用就是通过打包的方式,把deployment service ingress 这些打包在一块,一键式部署服务,类似于yum
官方提供的一个类似于安装仓库的功能,可以实现一键化部署应用。
helm的概念:
三个部分组成:
cahrt:helm软件包,service ingress ,定义好的yaml资源,类似于yum的rpm包。
Release:可以理解为版本,也可以理解为在安装过程中,给这个部署的应用起一个名称。
Repository:仓库,提供一个服务器,这个服务器中包含chart的资源。yaml的资源保存地址。
常用命令
#查看仓库
helm repo list
#更新仓库资源
helm repo update
#搜索bitnami仓库中nginx
helm search repo bitnami | grep nginx
#查看chart信息
helm show chart bitnami/nginx
#查看详细信息
helm show all bitnami/nginx
#查看helm所有的安装
helm list
helm部署
tar -xf helm-v3.12.0-linux-amd64.tar.gz
cd linux-amd64/
mv helm /usr/local/bin/helm
helm version
vim /etc/profile
***
source <(helm completion bash)
***
source /etc/profile
#添加仓库
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
#helm安装
法一:
helm insatll my-nginx bitnami/nginx -n 指定命名空间
helm install: 安装
my-nginx: release 安装的名称或者版本
bitnami/nginx:bitnami仓库名,nginx就是chart 一系列yaml资源的集合
法二---随机命名
helm install bitnami/nginx --generate-name
#卸载
helm uninstall my-nginx
helm自定义模版
根据自己的需求,定义chart。然后部署到集群当中去。
从stable仓库拉取mysql
helm pull stable/mysql
命令行创建
helm create nginx
[root@master01 helm]# tree nginx/
nginx/
├── charts
├── Chart.yaml
├── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── NOTES.txt
│ ├── serviceaccount.yaml
│ ├── service.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
charts: 用于存储依赖,如果这个chart依赖于其他的chart,依赖文件保存在这个目录。
Chart.yaml: helm chart 的元数据文件,包含了这个chart的名称,版本,维护者信息等等
templates: 包含清单模版的目录。
deployment.yaml:部署应用的模版文件
helpers.tpl: 帮助文档,告诉用户如何来定义模版的值
hpa.yaml: 定义了应用程序副本数的扩缩容行为
ingress.yaml: 定义了外部流量如何转发到用于程序
NOTES.txt:注意事项
serviceaccount.yaml: 应用程序的服务账号
service.yaml: 集群内部的访问
tests test-connection.yaml: 测试的目录和文件,部署完chart之后,用来测试的文件
values.yaml: 核心文件,自定义的值,都是通过values.yaml,把我们数据看盖到安装的chart
语法检测
helm lint nginx
[root@master01 helm]# helm lint nginx
==> Linting nginx
[INFO] Chart.yaml: icon is recommended
1 chart(s) linted, 0 chart(s) failed
[root@master01 helm]
vim Chart.yaml
vim values.yaml
#将修改的nginx封装
helm package nginx
测试
helm install nginx-1.11 ./nginx --dry-run --debug
helm install 安装chart
nginx-11: release 版本号
./nginx:当前目录下的nginx的chart
-dry-run --debug: 这个chart不会被部署到集群当中,参数验证,测试chart的配置是否正确.
安装
[root@master01 helm]# helm install nginx-11 ./nginx -n default
查看
[root@master01 helm]# kubectl get pod
修改chart之后重新部署
vim values.yaml
vim templates/service.yaml
检测语法
helm lint nginx
更新
helm upgrade nginx-11 nginx
查看service
kubectl get svc
回滚
查看历史更新
helm history nginx-11
回滚
helm rollback nginx-11 1
上传仓库
./install
创建路径
mkdir -p ~/.local/share/helm/plugins/helm-push
解压
tar -xf helm-push_0.8.1_linux_amd64.tar.gz -C ~/.local/share/helm/plugins/helm-push/
登录
docker login -u admin -p123456 https://hub.test.com
压缩成包
helm package nginx
上传
helm push nginx-0.2.0.tgz oci://hub.test.com/charts --insecure-skip-tls-verify
--insecure-skip-tls-verify 跳过tls验证
下载
helm pull oci://hub.test.com/charts/nginx --version 0.2.0 --insecure-skip-tls-verify
--insecure-skip-tls-verify 跳过tls验证
总结:
helm一键部署微服务的工具,可以跳过繁琐的自定义的yaml过程,一健式的拉取和部罢好所有自定义或者模版定义的服务。
helm的常用命令:
添加仓库
helm repo add 仓库名 url地址
helm repo remove 仓库名
helm repo update 不加仓库名,就是更新所有仓库
helm repo list 仓库列表
helm show chart stable/nginx 查看chart信息
helm show all stable/nginx 查看详细信息
helm install nginx-11 table/nginx -n lucky-cloud 安装chart,安装官网的默认版本
helm uninstall nginx-11 删除安装好的chart
helm list 查看已经安装chart
helm lint nginx 检测语法
自定义模版:
helm create nginx 创建一个自定义的chart模版
values.yaml: 这里值会传给templates里面的yaml文件
helm install nginx-11 ./nginx
helm install nginx-11 ./nginx-0.1.0.tgz
如何打包创建好的chart:
helm package nginx
回滚:
helm history nginx-11
helm rollback nginx-11 1