安装:
下载地址:https://github.com/helm/helm/releases
#进入master节点
wget https://github.com/helm/helm/releases
tar -xvf helm-v3.9.0-linux-amd64.tar.gz
mv linux-amd64/helm /usr/local/bin/
helm version
helm help
部署完成
介绍:
Helm是一个kubernetes的包管理工具,就像Linux下的包管理器,如yum/apt等,可以很方便的将之前打包好的yaml文件部署到kubernetes上。
网上看了很多helm的安装教程,都是helm v2老版安装,还需要安装tiller客户端。在helm更新到v3以后,其删除了tiller客户端;release可以在不同命名空间重用;可将chart推送到docker仓库。
helm几大重要概念:
- helm : 是一个命令行客户端工具
- Chart: 把yaml 打包,是yaml的集合,采用 TAR 格式。类似于 APT 的 DEB 包或者 YUM 的 RPM 包,其包含了一组定义 Kubernetes 资源相关的 YAML 文件。
- Release: 使用 helm install 命令在 Kubernetes 集群中部署的 Chart 称为 Release。Helm 中提到的 Release 和我们通常概念中的版本有所不同,这里的 Release 可以理解为 Helm 使用 Chart 包部署的一个应用实例。
- Repository: Helm 的软件仓库,Repository 本质上是一个 Web 服务器,该服务器保存了一系列的 Chart 软件包以供用户下载,并且提供了一个该 Repository 的 Chart 包的清单文件以供查询。Helm 可以同时管理多个不同的 Repository。
设置helm仓库:
helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts #设置仓库
helm repo list #查看仓库
helm chart结构:
# 通过helm create命令创建一个新的chart包
$ helm create nginx
$ tree nginx
nginx/ ├── charts #依赖其他包的charts文件 ├── Chart.yaml # 该chart的描述文件,包括ico地址,版本信息等 ├── templates # #存放k8s模板文件目录 │ ├── deployment.yaml # 创建k8s资源的yaml 模板 │ ├── _helpers.tpl # 下划线开头的文件,可以被其他模板引用 │ ├── hpa.yaml # 配置服务资源CPU 内存 │ ├── ingress.yaml # ingress 配合service域名访问的配置 │ ├── NOTES.txt # 说明文件,helm install之后展示给用户看的内容 │ ├── serviceaccount.yaml # 服务账号配置 │ ├── service.yaml # kubernetes Serivce yaml 模板 │ └── tests # 测试模块 │ └── test-connection.yaml └── values.yaml # 给模板文件使用的变量
chart.yaml:
name: [必须] Chart的名称 version: [必须] Chart的版本号,版本号必须符合 SemVer 2:http://semver.org/ description: [可选] Chart的简要描述 keywords: - [可选] 关键字列表 home: [可选] 项目地址 sources: - [可选] 当前Chart的下载地址列表 maintainers: # [可选] - name: [必须] 名字 email: [可选] 邮箱 engine: gotpl # [可选] 模版引擎,默认值是gotpl icon: [可选] 一个SVG或PNG格式的图片地址
模板:
1)内置对象
对于模板来说,有几个是内置有的对象:
- Release,就是我们用 install 安装时候生成的,比如Release.Name就是我们用install安装的发布名称(release名称)
- Values,Chart.yaml文件内容。 Chart.yaml里的任意数据在这里都可以可访问的。比如 {{ .Chart.Name }}-{{ .Chart.Version }} 会打印出 mychart-0.1.0
- Chart,对应的是 Chart.yaml,用于获取 Chart 相关信息
2)values的三种来源
- chart的values.yaml文件
- 由helm install -f 或 helm upgrade -f提供的values文件
- 在执行helm install 或 helm upgrade 时传递给--set 或 --set-string 参数的values
优先级:--set >-f values_file>values.yaml
3)基础语法
模板中的变量都放在{{}}
中,比如:{{ .Values.images }}
表示 Values
对象下的images
字段
使用-删除空格和换行符
要想删除那行其他的空格和换行符可以用{{-
或者-}}
,一个是删除左边的空格和换行符,一个是删除右边的空格和换行符。
2、运算符
支持运算符:
eq: 等于(equal to) ne: 不等于(not equal to) lt: 小于(less than) le: 小于等于(less than or equal to) gt: 大于(greater than) ge: 大于等于(greater than or equal to)
3、条件语句
if/else 用法:
{{if 命令}}
...
{{else if 命令}}
...
{{else}}
...
{{end}}
比如:
{{if lt (default .Values.version 1) 5}}
Helm 简单使用
# 先查看,默认是没有配置仓库的 $ helm repo list # 如果设置了,就先移除原先的仓库 $ helm repo remove stable # 添加新的仓库地址(可以添加多个) $ helm repo add stable https://kubernetes.oss-cn-hangzhou.aliyuncs.com/charts # 仓库可用的charts $ helm repo update # 更新仓库 $ helm search repo # 指定仓库查看 $ helm search repo stable
helm使用示例:
templete里我们编写对应的yaml 文件, 外层values.yaml 里可以定义一些公共变量,供templete里的yaml文件使用
将weave的svc改成NodePort
参考文档:
https://www.cnblogs.com/liugp/p/16440583.html
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 阿里最新开源QwQ-32B,效果媲美deepseek-r1满血版,部署成本又又又降低了!
· SQL Server 2025 AI相关能力初探
· AI编程工具终极对决:字节Trae VS Cursor,谁才是开发者新宠?
· 开源Multi-agent AI智能体框架aevatar.ai,欢迎大家贡献代码
· Manus重磅发布:全球首款通用AI代理技术深度解析与实战指南