Helm3

自建helm仓库
使用 chartmuseum
下载地址
启动命令
1 | nohup /usr/local/bin/chartmuseum --debug --port=38080 --storage="local" --storage-local-rootdir="./chartstorage" > run.log & |
1 | [root@lqz-test-demo chartmuseum]/usr/local/bin/chartmuseum --debug --port=38080 --storage="local" --storage-local-rootdir="./chartstorage" |
使用heml
创建编写一个chart
1 | helm create mychart |
configmap.yaml
1 | apiVersion: v1 |
创建 chart 实例
1 | [root@master test]# helm install myconfigmap ./mychart/ |
删除 chart 实例
1 | helm uninstall myconfigmap |
1 | [root@master test]# helm list |
修改配置文件中引入变量
configmap.yaml
1 | apiVersion: v1 |
重写 mychart/values.yaml 内容
1 | MY_VALUE: "HELLO WORLD" |
1 | [root@master test]# cat mychart/values.yaml |
删除 configmap2
1 | helm uninstall myconfigmap2 |
测试模板是否正确, 不真正的运行
1 | helm install myconfigmap2 ./mychart/ --debug --dry-run |
1 | [root@master test]# helm install myconfigmap2 ./mychart/ --debug --dry-run |
helm 通过各种类型chart包安装一个release实例名来部署k8s相关的资源
从加入到本地的chart官方仓库 安装release实例
将chart仓库拉下来的压缩包进行安装release实例
将从chart仓库蜡下来的压缩包解压后 从解压目录安装release实例
从一个网络地址仓库压缩包直接安装release实例
1 |
|
卸载release
1 | helm uninstall release实例名 |
helm3 内置对象
Release 对象
Values 对象
Chart 对象
Capabilities 对象
Template 对象
Release对象
Helm 3中的内置对象Release描述了Helm版本发布本身的信息,它包含了以下属性:
- Release.Name:版本发布的名称
- Release.Namespace:版本发布的命名空间(如果manifest没有覆盖的话)
- Release.IsUpgrade:如果当前操作是升级或回滚,则该值被设置为true
- Release.IsInstall:如果当前操作是安装,则该值被设置为true
- Release.Revision:此次修订的版本号。安装时是1,每次升级或回滚都会自增
- Release.Service:渲染当前模板的服务名称,在Helm中始终是Helm
Values对象
在Helm 3中,Values对象是用来描述values.yaml文件中的内容的,它允许用户访问在该文件中定义的任何变量值。Values对象的内容可以来自以下几个来源
- chart中的values.yaml文件:这是默认的配置文件,包含了chart的默认配置值
- 子chart的values.yaml文件:如果当前chart是一个子chart,那么它也会从父chart的values.yaml文件中继承配置
- 通过-f或–values指定的值文件:用户可以在执行helm install或helm upgrade时通过-f或–values参数指定额外的values.yaml文件来覆盖默认值
- 通过–set选项传入的值:用户可以在执行helm install或helm upgrade时通过–set选项直接传入键值对来覆盖默认值
Values对象的使用方式如下:
对于简单的键值对,可以直接通过.Values.key来访问 。
对于嵌套的键值对,可以通过点.来访问嵌套的值,例如.Values.info.name2来访问info对象下的name2字段
Values对象使得用户可以灵活地自定义和覆盖chart中的配置,以适应不同的部署需求。
Chart 对象
它包含了当前正在渲染的 chart 的信息。这个对象提供了一些有用的字段,可以帮助你在模板中引用 chart 的属性。以下是 Chart
对象的一些常用属性:
- Chart.Name:chart 的名称。
- Chart.Home:chart 的主页链接。
- Chart.Version:chart 的版本号。
- Chart.AppVersion:chart 应用的版本号,通常用于表示应用的版本,而不是 chart 本身的版本。
- Chart.Description:chart 的描述。
- Chart.Keywords:chart 的关键字列表。
- Chart.Sources:chart 源代码的链接列表。
- Chart.Icon:chart 的图标链接。
这些属性可以在 Helm 的模板文件中被引用,以便在 Kubernetes 清单文件中动态地插入 chart 的信息。例如,
你可以在 Kubernetes 的 Pod 定义中使用 Chart.Name 作为环境变量,或者在服务的注解中使用 Chart.Version。
Capabilities对象
它提供了关于 Kubernetes 集群支持的功能信息。以下是 Capabilities 对象的一些常用属性和描述:
- Capabilities.APIVersions:返回 Kubernetes 集群支持的 API 版本信息集合。
- Capabilities.APIVersion.Has $version:用于检测指定的版本或资源在 Kubernetes 集群中是否可用。
- Capabilities.KubeVersion:提供了查找 Kubernetes 版本的方法。可以获取到
Major,Minor,GitVersion,GitCommit,GitTreeState,BuildDate,GoVersion,Compiler 和 Platform。 - Capabilities.KubeVersion.Version:获取 Kubernetes 的版本号。
- Capabilities.KubeVersion.Major:获取 Kubernetes 主版本号。
- Capabilities.KubeVersion.Minor:获取 Kubernetes 小版本号。
Template 对象
它提供了关于当前正在执行的模板的信息。以下是 Template 对象的一些属性和功能:
- Template.Name:表示当前模板的名称。这个名称对应于模板文件的路径,例如 mychart/templates/mytemplate.yaml 中的 mytemplate。
- Template.BasePath:表示模板文件的基路径。这通常是 mychart/templates,其中 mychart 是 chart 的名称
演示样例
1 | apiVersion: v1 |
helm 常用命令
命令 | 说明 | 参数 |
---|---|---|
helm search |
搜索 Helm charts | --version : 指定版本搜索--keyword : 指定关键字搜索--limit : 限制搜索结果的数量--repo : 指定特定的 Helm 仓库 |
helm pull |
从仓库中拉取一个 chart 包 | --repo : 指定 chart 所在的仓库--version : 指定 chart 的版本--untar : 拉取后解压到当前目录--untardir : 指定解压目录 |
helm install |
安装一个新的 Helm release | --namespace : 指定安装的命名空间--values : 指定自定义的 values 文件--set : 覆盖 values 文件中的值--version : 指定 chart 的版本--wait : 安装后等待所有 Pods 就绪--timeout : 设置等待的超时时间 |
helm list |
列出已安装的 Helm releases | --all-namespaces : 列出所有命名空间的 releases--namespace : 指定命名空间--filter : 通过模式过滤 releases |
helm upgrade |
升级一个已存在的 Helm release | --namespace : 指定安装的命名空间--values : 指定自定义的 values 文件--set : 覆盖 values 文件中的值--install : 如果 release 不存在,则执行安装操作--wait : 升级后等待所有 Pods 就绪--timeout : 设置等待的超时时间 |
helm rollback |
回滚到之前的 release 版本 | --wait : 回滚后等待所有 Pods 就绪--timeout : 设置等待的超时时间 |
helm uninstall |
卸载一个 Helm release | --namespace : 指定命名空间 |
helm get |
获取 release 的信息 | helm get all [RELEASE_NAME] : 获取指定 release 的所有信息helm get values [RELEASE_NAME] : 获取指定 release 的 values--all-namespaces : 获取所有命名空间的 releases 信息 |
helm repo |
管理 Helm 仓库 | helm repo add : 添加一个新的 Helm 仓库helm repo list : 列出已添加的 Helm 仓库helm repo remove : 移除一个 Helm 仓库helm repo update : 更新仓库的缓存 |
添加chart仓库
1 | [root@master test]# helm repo add myrepo http://192.168.16.110:38080 |
从仓库拉去chart包
1 | helm pull myrepo/mychart --version 0.1.0 --untar |