k8s---helm
根据自己的需求定义chart。根据自定义模板部署到集群当中去。通过tree查看文件包含哪些内容这时官方提供的安装包我们可以自己自定义一个安装包nginx/├── charts组织结构解析:charts:用于存储依赖。如果这个chart依赖于其他的chart,依赖文件保存在这个目录Chart.yaml:helm chart的元数据文件,包含了这个chart的名称,版本,维护者信息等等template
Helm是什么?
在没有helm之前。部署一个服务,需要deployment、service、ingress、挂在卷等等相关配置都需要人工来配置。
helm的作用就是通过打包的方式,把需要人工编写的配置集成在一起。是一键式的部署服务。类似于yum功能。
由官方提供的一个类似于安装仓库的功能,开源实现以简化部署应用。
helm由哪些部分组成?
helm由三个部分组成:
-
chart:helm的软件包、部署包、service、ingress。是一些定义好的yaml资源。类似于yum的rpm包
-
Release:可以理解为版本。也可以理解为在安装过程中,给部署的应用起一个名字。
-
Repository:仓库,提供一个服务器,这个服务器当中包含chart的资源,提供yaml资源的保存地址。
由于helm2已经被淘汰了。helm3成为主流。以下均是对helm3的讨论
helm3是纯命令行方式
安装helm:
1. 安装helm:
tar -xf helm-v3.12.0-linux-amd64.tar.gz
cd linux-amd64/
mv helm /usr/local/bin/helm
source <(helm completion bash)
source /etc/profile
helm version
#查看helm版本v3.12
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
命令行命令:
helm repo list
#查看仓库列表
helm repo update
#如何更新仓库的资源
语法: helm search repo aliyun | grep 服务名称
helm search repo aliyun | grep nginx
#过滤查找你需要的服务
语法: helm show chart 仓库名/应用名
helm show chart bitnami/nginx
#查看简要信息
helm show all bitnami/nginx
#查看详细信息
语法:helm install 名称 仓库名/应用名 -n 指定命名空间
helm install my-nginx bitnami/nginx -n default
#helm install:安装
#my-nginx:release安装的名称或者版本
#bitnami/nginx: bitnami是仓库名。nginx就是chart一些列yaml的资源的结合
#安装一个版本叫my-nginx的服务从bitnami仓库下载。指定的chart是nginx
#-n:指定命名空间
这个资源包里面包含nginx的pod、deployment、service
语法:helm uninstall 名称
helm uninstall my-nginx
#一键删除所有
helm install bitnami/nginx --generate-name
#--generate-name:随机生成一个release名称
helm ls
helm list
#查看当前安装的所有release
如何在helm当中自定义模板
根据自己的需求定义chart。根据自定义模板部署到集群当中去。
实验举例:
helm pull stable/mysql
tar -xf mysql-1.6.9.tgz
通过tree查看文件包含哪些内容
这时官方提供的安装包
我们可以自己自定义一个安装包
helm create nginx
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。
vim Chart.yaml
version: 0.1.0
#部署完之后如果打包,那么版本就是0.1.0版本
实现自定义访问:
cd nginx/
vim values.yaml
所有在这里定义的值都会传参到各个yaml文件中
修改一些内容
replicaCount: 3
#表示会创建几个副本,传入一个值定义副本数为3个
tag: "1.22"
#指定nginx镜像的版本,可以自定义
create: true
enabled: true
- host: www.lucky-cloud.com
pathType: Prefix
limits:
cpu: 1000m
memory: 512Mi
helm lint nginx
#验证语法。需要在chart目录的上一层检测。如果在目录内检测会报错
helm package nginx/
#将自定义的chart文件打包
Successfully packaged chart and saved it to: /opt/helm/nginx-0.1.0.tgz
helm install nginx-11 ./nginx --dry-run --debug
#helm install:安装chart
#nginx-11:release版本号
#./nginx:当前目录下的nginx的chart
#--dry-run --debug:这个chart不会被部署到集群当中,验证参数,测试chart的配置是否正确。
方法1:基于目录安装
helm install nginx-11 ./nginx -n default
#一键部署当前目录下的nginx-chart取名叫nginx-11并且指定命名空间
helm uninstall nginx-11
#一键删除
方法2:基于目录打包好的压缩包安装
helm install nginx-11 /opt/helm/nginx-0.1.0.tgz -n default
#使用压缩包安装
修改chart之后如何重新部署
vim values.yaml
修改一些内容做为区分
service:
type: NodePort
port: 80
nodePort: 31000
ingress:
enabled: false
vim service.yaml
nodePort: {{.Values.service.nodePort}}
#go语言的语法将values.yaml中定义的端口传到service.yaml文件中
vim Chart.yaml
version: 0.2.0
#修改版本号做区分
helm upgrade nginx-11 nginx
如何回滚
helm history nginx-11
#查看chart的回滚点
helm rollback nginx-11 1
#回滚
如何上传到harbor仓库
vim harbor.yml
./install.sh
#执行重新安装仓库
harbor_admin_password: 123456
chart:
absolute_url: enabled
#在chart当中使用绝对路径的URL例如:http://hub.test.com/charts
$chart上传不支持相对路径
mkdir -p ~/.local/share/helm/plugins/helm-push
#创建一个helm插件的目录
docker login -u admin -p 123456 https://hub.test.com
#登录docker-hub仓库测试
helm package nginx
#打包nginx为压缩包
helm push nginx-0.2.0.tgz oci://hub.test.com/charts --insecure-skip-tls-verify
#--insecure-skip-tls-verify:跳过tls验证
上传成功
重新从hub仓库拉取测试:
helm pull oci://hub.test.com/charts/nginx --version 0.2.0 --insecure-skip-tls-verify
helm install nginx-22 ./nginx-0.2.0.tgz
#直接通过安装包安装即可
总结
helm就是一个部署微服务的工具,可以跳过繁琐的自定义yaml过程,一键式拉取和部署号素有自定义或者模板自定义的服务
helm的常用命令:
helm repo add 仓库名 url地址:添加仓库
helm repo update 不加仓库名:就是更新所有仓库
helm repo list:仓库列表
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模板
values.yaml:这里的值会传递给templates里面的yaml真贱
helm install nginx-11 ./nginx
helm install nginx-11 ./nginx-0.1.0.tgz
两种安装部署chart的方式都可以
helm package nginx:打包创建好的chart
回滚:
helm history nginx-11
helm rollback nginx-11 1:回滚 1表示指定回滚点
更多推荐
所有评论(0)