一、Helm 架构¶

- Helm -- Helm 是一个命令行下的客户端工具。主要用于 Kubernetes 应用程序 Chart 的创建、打包、发布以及创建和管理本地和远程的 Chart 仓库。
- Chart -- Chart 代表着 Helm 包。一系列用于描述 k8s 资源相关文件的集合。
- Release -- Release 是运行在 Kubernetes 集群中的 chart 的实例。一个 chart 通 常可以在同一个集群中安装多次。每一次安装都会创建一个新的 release。
二、Helm 安装¶
Helm所有版本下载地址:https://github.com/helm/helm/releases
Helm3.11版本下载地址:https://github.com/helm/helm/releases?page=4
说明:我用的Kubernetes版本为1.26.9,考虑到后期会升级Kubernetes版本,所以helm版本为3.11
[root@master01 ~]# k get no
NAME STATUS ROLES AGE VERSION
master01 Ready control-plane 11d v1.26.9
master02 Ready control-plane 11d v1.26.9
master03 Ready control-plane 11d v1.26.9
node01 Ready <none> 11d v1.26.9
node02 Ready <none> 11d v1.26.9
下载二进制包
[root@master01 3]# wget https://get.helm.sh/helm-v3.11.3-linux-amd64.tar.gz
解压,改名并做软链接
[root@master01 3]# tar zxf helm-v3.11.3-linux-amd64.tar.gz -C /opt/
[root@master01 3]# mv /opt/linux-amd64/ /opt/helm
[root@master01 3]# ln -s /opt/helm/helm /bin/
验证软链接
[root@master01 3]# ll /bin/helm
lrwxrwxrwx 1 root root 14 Oct 5 22:00 /bin/helm -> /opt/helm/helm
测试,查看helm版本
[root@master01 3]# helm version
version.BuildInfo{Version:"v3.11.3", GitCommit:"323249351482b3bbfc9f5004f65d400aa70f9ae7", GitTreeState:"clean", GoVersion:"go1.20.3"}
三、Helm 开发入门¶
基本操作
$ helm create #创建Chart示例
$ helm install #部署
$ helm upgrade #更新
$ helm rollback #回滚
$ helm uninstall #卸载
创建一个示例chart
[root@master01 3]# helm create myapp
[root@master01 3]# tree myapp
myapp
├── charts
├── Chart.yaml
├── templates
│ ├── deployment.yaml
│ ├── _helpers.tpl
│ ├── hpa.yaml
│ ├── ingress.yaml
│ ├── NOTES.txt
│ ├── serviceaccount.yaml
│ ├── service.yaml
│ └── tests
│ └── test-connection.yaml
└── values.yaml
3 directories, 10 files
如果你查看一下 mychart/templates/ 目录,你会注意到那里已经有一些文件了。
- charts:目录里存放这个chart依赖的所有子chart。
- Chart.yaml:用于描述这个 Chart的基本信息,包括名字、描述信息以及版本等。(只用于描述)
- values.yaml :用于存储 templates 目录中模板文件中用到变量的值。
- templates: 目录里面存放所有yaml模板文件。(deployment.yaml service.yaml ingress.yaml等)
- NOTES.txt :用于介绍Chart帮助信息, helm install 部署后展示给用户。例如:如何使用这个Chart、列出缺省的设置等。
- _helpers.tpl:放置模板的地方,可以在整个chart中重复使用。