- Helm是Kubernetes 应用包的管理工具,主要用来管理 Charts,类似Linux系统的yum。
- Helm Chart 是用来封装 Kubernetes 原生应用程序的一系列 YAML 文件。可以在你部署应用的时候自定义应用程序的一些 Metadata,以便于应用程序的分发。
- 对于应用发布者而言,可以通过 Helm 打包应用、管理应用依赖关系、管理应用版本并发布应用到软件仓库。
- 对于使用者而言,使用 Helm 后不用需要编写复杂的应用部署文件,可以以简单的方式在 Kubernetes 上查找、安装、升级、回滚、卸载应用程序。
- Helm 是 kubernetes 的包管理器,helm 仓库里面只有配置清单文件,而没有镜像,镜像还是由镜像仓库来提供,比如 hub.docker.com、私有仓库。
- 官方网址:https://helm.sh/zh/docs/intro/quickstart/
https://github.com/helm/helm/releases
Helm 针对 Kubernetes 的 Helm 包管理器。Helm 的一般操作:
helm search: 搜索 chart
helm pull: 下载 chart 到本地目录查看
helm install: 上传 chart 到 Kubernetes
helm list: 列出已发布的 chart
helm --help 查看帮助
Helm架构
- Helm——Helm 是一个命令行下的客户端工具。主要用于 Kubernetes 应用程序 Chart 的创建、打包、发布以及创建和管理本地和远程的 Chart 仓库。
- Chart——Chart 代表着 Helm 包。它包含在 Kubernetes 集群内部运行应用程序,工具或服务所需的所有资源定义。你可以把它看作是 Homebrew formula,Apt dpkg,或 Yum RPM 在 Kubernetes 中的等价物。
- Release——Release 是运行在 Kubernetes 集群中的 chart 的实例。一个 chart 通常可以在同一个集群中安装多次。每一次安装都会创建一个新的 release。
- Repoistory——Repository(仓库) 是用来存放和共享 charts 的地方。它就像 Perl 的 CPAN 档案库网络 或是 Fedora 的 软件包仓库,只不过它是供 Kubernetes 包所使用的。
- 官方网址:https://helm.sh/zh/docs/intro/quickstart/
https://github.com/helm/helm/releases
下载软件包:helm-v3.1.1-linux-amd64.tar.gz
[root@k8s2 ~]# tar zxf helm-v3.11.0-linux-amd64.tar.gz
[root@k8s2 ~]# cd linux-amd64/
[root@k8s2 linux-amd64]# mv helm /usr/local/bin/ ##移动二进制命令配置helm命令补齐
[root@k8s2 ~]# echo "source <(helm completion bash)" >> ~/.bashrc
[root@k8s2 ~]# source ~/.bashrc
[root@k8s2 ~]# helm version查询官方应用中心
[root@k8s2 ~]# helm search hub nginx添加第三方repo源
[root@k8s2 ~]# helm repo add my-repo https://charts.bitnami.com/bitnami
"my-repo" has been added to your repositories[root@k8s2 ~]# helm repo list
NAME URL
my-repo https://charts.bitnami.com/bitnami
官方页面和# helm search hub nginx效果一致:
[root@k8s2 ~]# mkdir helm
[root@k8s2 ~]# cd helm
[root@k8s2 helm]# helm pull my-repo/nginx
[root@k8s2 helm]# tar zxf nginx-13.2.29.tgz
[root@k8s2 helm]# cd nginx/
按需修改
[root@k8s2 nginx]# vim values.yaml
默认仓库:(也可以加入scerets)
暴露方式:
ingress方式暴露
上图由来见下图
上传对应的镜像
[root@k8s1 ~]# docker pull bitnami/nginx:1.23.3-debian-11-r33
[root@k8s1 ~]# docker tag bitnami/nginx:1.23.3-debian-11-r33 reg.westos.org/bitnami/nginx:1.23.3-debian-11-r33
[root@k8s1 ~]# docker push reg.westos.org/bitnami/nginx:1.23.3-debian-11-r33
[root@k8s2 nginx]# helm install myapp .
myapp是要安装的名称,“.”表示从当前目录读取
测试
再次修改配置
[root@k8s2 nginx]# vim values.yaml
资源定义:
激活hpa
[root@k8s2 nginx]# helm upgrade myapp .
查看应用
[root@k8s2 nginx]# helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
myapp default 1 2023-03-15 16:28:30.915305415 +0800 CST deployed nginx-13.2.29 1.23.3查看应用历史
[root@k8s2 helm]# helm history myapp
REVISION UPDATED STATUS CHART APP VERSION DESCRIPTION
1 Wed Mar 15 16:28:30 2023 superseded nginx-13.2.29 1.23.3 Install complete
2 Wed Mar 15 16:36:59 2023 deployed nginx-13.2.29 1.23.3 upgrade complete 回滚应用
[root@k8s2 nginx]# helm rollback myapp 1回收
[root@k8s2 helm]# helm uninstall myapp
[root@k8s2 helm]# helm create mychart
tree命令yum命令安装即可:显示目录结构
charts:目录里存放这个 chart 依赖的所有子 chart。
Chart.yaml:用于描述这个 Chart 的基本信息,包括名字、描述信息以及版本等。
values.yaml:用于存储 templates 目录中模板文件中用到变量的值。
Templates:目录里面存放所有 yaml 模板文件。
NOTES.txt :用于介绍 Chart 帮助信息,helm install 部署后展示给用户。例如:如何使用这个 Chart、 列出缺省的设置等。
_helpers.tpl:放置模板助手的地方,可以在整个 chart 中重复使用。
[root@k8s2 mychart]# vim Chart.yaml
v1是应用版本
[root@k8s2 mychart]# vim values.yaml
检测语法
[root@k8s2 helm]# helm lint mychart/
==> Linting mychart/
[INFO] Chart.yaml: icon is recommended1 chart(s) linted, 0 chart(s) failed打包
[root@k8s2 helm]# helm package mychart/
Successfully packaged chart and saved it to: /root/helm/mychart-0.1.0.tgz
[root@server2 ~]# du -sh mychart-0.1.0.tgz
4.0K mychart-0.1.0.tgz chart的封装是非常小的部署应用
[root@k8s2 helm]# helm install myapp mychart-0.1.0.tgz[root@k8s2 helm]# helm list
NAME NAMESPACE REVISION UPDATED STATUS CHART APP VERSION
myapp default 1 2023-03-15 16:51:35.456139491 +0800 CST deployed mychart-0.1.0 v1回收
[root@k8s2 helm]# helm uninstall myapp
上一篇:C++笔记——第三篇 模板 是什么板?照着写那种吗?
下一篇:【正点原子FPGA连载】 第三十三章基于lwip的tftp server实验 摘自【正点原子】DFZU2EG_4EV MPSoC之嵌入式Vitis开发指南