一、helm3下载地址
https://get.helm.sh/helm-v3.5.3-linux-amd64.tar.gz
二、解压安装helm3
tar zxf helm-v3.5.3-linux-amd64.tar.gz
cp -pr linux-amd64/helm /usr/local/bin/
helm --help
三、helm3添加仓库
helm repo add 仓库名称 仓库地址
$ helm repo add azure http://mirror.azure.cn/kubernetes/charts
$ helm repo add aliyun https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts
helm repo list
四、helm3命令汇总
chart install: 部署
chart upgrade: 升级
chart rollback: 回滚
helm repo remove aliyun
helm install 安装之后名称 搜索到名称
五、创建helm chrt
- chart.yaml:当前chart属性配置信息
- templates:编写yaml文件放到这个目录中
- values.yaml:yaml文件可以使用全局变量
kubectl create mychart
$ cd ~/lesson/helm/
$ helm create mychart
$ tree mychart/
mychart/
├── charts #目录里存放这个chart依赖的所有子chart。
├── Chart.yaml #用于描述这个 Chart的基本信息,包括名字、描述信息以及版本等。
├── templates #目录里面存放所有yaml模板文件。
│ ├── deployment.yaml
│ ├── _helpers.tpl #放置模板助手的地方,可以在整个 chart 中重复使用
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── NOTES.txt #用于介绍Chart帮助信息, helm install 部署后展示给用户。例如:如何使用这个 Chart、列出缺省的设置等。
│ ├── serviceaccount.yaml
│ ├── service.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml #用于存储 templates 目录中模板文件中用到变量的值。
$ helm install web1 mychart #直接部署
kubectl create deployment web --image=nginx --dry-run -o yaml > deployment.yaml
kubectl expose deployment web --port=80 --target-port=80 --type=NodePort --dry-run -o yaml > service.yaml
helm install web mychaart/
helm upgrade web mychart/
六、helm实现高可用
实现yaml高效复用,通过传递参数,动态渲染模板,yaml内容动态传入参数生成。
在chart有values.yaml文件,定义yaml文件全局变量
- 在values.yaml定义变量和值
- 在具体yaml文件,获取定义变量值
镜像 image
标签 tag
副本数 replicas
资源限制 resource
环境变量 env
端口 port
资源名称 name
replicas: 1
image: nginx
tag: 1.16
label: nginx
port: 80
{{ .Values.变量名称}}
{{ 。Release.Name }}
$ cd ~/lesson/helm/
$ helm create mychart
$ tree mychart/
mychart/
├── charts #目录里存放这个chart依赖的所有子chart。
├── Chart.yaml #用于描述这个 Chart的基本信息,包括名字、描述信息以及版本等。
├── templates #目录里面存放所有yaml模板文件。
│ ├── deployment.yaml
│ ├── _helpers.tpl #放置模板助手的地方,可以在整个 chart 中重复使用
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── NOTES.txt #用于介绍Chart帮助信息, helm install 部署后展示给用户。例如:如何使用这个 Chart、列出缺省的设置等。
│ ├── serviceaccount.yaml
│ ├── service.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml #用于存储 templates 目录中模板文件中用到变量的值。
$ helm install web1 mychart #直接部署