helm-chart学习总结

文章介绍了HelmChart的基本概念,包括如何创建、部署和验证本地chart,以及Chart.yaml、values.yaml等关键文件的作用和使用方法。还详细讲解了模板语法和内置函数,提供了入门项目goods-service-chart作为实践示例。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

helm-chart学习总结

大纲

  • 概念
  • 创建chart
  • 配置chart
  • 入门项目goods-service-chart

概念

chart是Helm的核心。除了将它们安装到Kubernetes集群中或管理已安装的chart实例之外,还可以构建新chart或更改现有chart

创建chart

创建本地chart

Helm包含create命令,使你可以轻松地创建自己的chart

helm create 【自定义chart名称】
例如
helm create myapp
这样会创建一个新的Nginx chart 我们可以基于这个chart自己修改配置内容

在这里插入图片描述

#整个chart的文件类型目录各式   
#charts templates文件夹是保留文件夹
mychart
├── Chart.yaml
├── charts # 该目录保存其他依赖的 chart(子 chart)
├── templates # chart 配置模板,用于渲染最终的 Kubernetes YAML 文件
│   ├── NOTES.txt # 用户运行 helm install 时候的提示信息
│   ├── _helpers.tpl # 用于创建模板时的帮助类(主要是定义的一些模板)
│   ├── deployment.yaml # Kubernetes deployment 配置
│   ├── ingress.yaml # Kubernetes ingress 配置
│   ├── service.yaml # Kubernetes service 配置  
│   ├── serviceaccount.yaml # Kubernetes serviceaccount 配置
│   └── tests
│       └── test-connection.yaml
└── values.yaml # 定义 chart 模板中的自定义配置的默认值,可以在执行 helm install 或 helm update 的时候覆盖

或者直接按照以上文件夹格式创建内容

部署本地chart

helm install 【部署名称】 【本地chart 文件夹名称】
例如
helm install ngtest myapp

helm install 【部署名称】 【归档文件名】
helm install ngtest myapp.1.1.0.tgz

在这里插入图片描述

校验本地chart

在开发chart时,尤其是使用YAML模板时,很容易出错或遗漏某些内容

helm lint 【本地chart 文件夹名称】【本地chart 文件夹名称】
例如
helm lint app1 只校验一个
helm lint  app1 app2 校验多个

归档打包本地chart

helm package 【本地chart 即文件夹名称】
例如
helm package goodservice/
helm package goodservice/ --destination charts/ 把归档文件打包到指定文件夹

在这里插入图片描述

chart文件详细总结

Chart.yaml

Chart.yaml文件 主要是告知helm chart的基础信息数据

注意

  • 1文件首字母要大写
  • 2 apiVersion: v1 v2 v1对应helm2 v2对应helm3

详细配置说明见 《Chart-demo.yaml》

Chart.yaml 中的配置信息可以在模板中被使用 {{ .Chart.Version}}

NOTES.txt

当执行helm install 的时候,当部署完成后会打印NOTES.txt中的内容

NOTES.txt 也可以使用go模板读取values.yaml 中的配置值 使用 ** _helpers.tpl 中的模板** 基于配置值实现不同的展示效果

在这里插入图片描述

_helpers.tpl

此文件中可以定义很多的模板 基于golang模板的规则

模板各式
{{- define "模板名称" -}}
内容
{{- end -}}

例如:
_helpers.tpl 文件内容

在这里插入图片描述

deployment.yaml 文件内容

在这里插入图片描述
在这里插入图片描述

使用模板的注意事项

  • 1 使用include导入模板
  • 2 .yaml文件中使用模板 要注意yaml文件各式 否则导入模板后yaml文件各式错误
  • 3 使用 -号将模板内容首部的空格去掉 -号必须紧挨着{{-
  • 4 使用 nindent函数让模板中的内容换行并且在内容前面加指定数量的空格保证yaml文件各式正确 (nindent 6 表示加6个空格)
  • 5 NOTES.txt 中也可以使用模板

values.yaml

定义 chart 模板中的自定义配置的默认值 可以在/templates文件夹下的任意文件中使用

使用方式 {{ .Values 开头}} 注意开头的 . 表示当前作用域中的根对象 .Values是根对象的属性

{{ .Values.xxx}}

deployment.yaml 文件内容

在这里插入图片描述

values.yaml中的内容

在这里插入图片描述

.helmignore

此文件可以不存在
主要是放在chart文件夹下 类似于Git的.gitinore文件 把不希望包含在chart归档文件中的文件剔除

templates文件夹下的其他配置

  • service.yaml
  • deployment.yaml
  • service.yaml

这些都对应的K8S中的内容

注意: templates目录中以下划线(即_)开头的文件表示与K8S没有关系的清单
按照惯例,辅助模板和代码段位于**_.tpl和 _.yaml**文件中。

配置chart

chart配置说明

所有模板文件( /template文件夹下的 )都支持Go 模板语法 https://studygolang.com/pkgdoc (go模板使用见 golang测试项目templatetest1.go

语法包括
{{}}
{{if}}{{end}}
{{range .Var}} {{.}} {{end}} 
...

如果要使用 values.yaml 中的配置内容 则以.Values开头.【文件中的配置】

例如使用apv这个配置项

** values.yaml内容如下**
在这里插入图片描述

/template/deployment.yaml内容如下

在这里插入图片描述

注意 quote表示给字符串加双引号

使用管道方式

例如 deployment.yaml内容如下

name: {{ .Values.pro | default "mytestapp" | quote}}
解析
使用values.yaml 文件中pro的值 如果没有值就用 "mytestapp" 最后quote函数表示将字符串写入模板之前将其用引号括起来

在这里插入图片描述

测试结果

在这里插入图片描述
在这里插入图片描述

内置的一些可以使用的参数

除了使用vaules.yaml中的配置 还可以有关发布的信息

.Release.Name
发布版本的名称。
.Release.Namespace
包含将chart发布到的命名空间。
.Release.IsInstall
当发布版本是一个正在安装的工作负载时,设置为true。
Release.IsUpgrade
当发布版本是一个升级或回滚时,设置为true。
.Release.Service

Chart.yaml文件中的信息也可以使用

Chart.Name
包含chart的名称。
.Chart.Version
chart的版本。
.Chart.AppVersion
应用程序版本(如果已设置)。
.Chart.Annotations
包含注解的键/值列表

在这里插入图片描述
在这里插入图片描述

内置可使用的函数

https://masterminds.github.io/sprig/

toYaml (toYaml函数可将数据转换为YAML)

# 此函数在使用模板的时候特别总要 可以保证.yaml文件各式正确
nindent 【number】 (函数在接收到的文本的开头添加一个新行,然后缩进每一行)
nindent 8 

indent (indent函数不会在开头添加换行符)

include 函数可以导入_helpers.tpl中的模板

quote 函数可以让字符串加上“”引号

模板函数见 https://helm.sh/zh/docs/chart_template_guide/function_list/

入门项目goods-service-chart

见 /demo/goods-service-chart

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

寂寞的4角钱

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值