news 2026/7/24 23:04:52

templates/ 是 Helm Chart 的核心引擎室

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
templates/ 是 Helm Chart 的核心引擎室

templates/是 Helm Chart 的核心引擎室。你可以把它理解为:

一个"智能 YAML 工厂"—— 你写一次模板,Helm 根据values.yaml里的配置,自动"生产"出适合不同环境的 Kubernetes YAML。


与你学过的k8s/对比

Table

k8s/文件夹helm/templates/文件夹
性质静态 YAML,写死配置动态模板,用{{ }}语法占位
环境切换需要手动改多个文件换一份values-xxx.yaml即可
复用性低,每个环境复制一份高,模板只写一次
维护成本高,改一个地方要改多份低,改模板一处生效

templates/里每个文件的作用

结合你在这个项目里看到的文件:

Table

文件作用
_helpers.tpl模板"工具箱",定义可复用的代码片段(如生成统一标签、名称),不会直接生成 K8s 资源
deployment.yaml定义 Pod 怎么跑(镜像、副本数、环境变量、资源限制等)
service.yaml定义集群内怎么访问这些 Pod(ClusterIP/NodePort 等)
ingress.yaml定义外部流量怎么进来(域名、路径路由、TLS)
configmap.yaml把配置数据(如 API 地址)注入容器
secret.yaml把敏感数据(如密码、Token)注入容器
pvc.yaml定义持久化存储(数据库文件、上传文件不落盘)
hpa.yaml自动扩缩容规则(CPU > 80% 就多开 Pod)
resourcequota.yaml限制整个命名空间能用多少 CPU/内存
networkpolicy.yaml限制 Pod 之间谁能访问谁(安全隔离)
serviceaccount.yaml给 Pod 分配集群内的权限身份(RBAC)
monitoring.yaml监控相关配置(ServiceMonitor 等)
notes.txt安装完成后给用户看的提示信息(如访问地址)

核心语法:看一个例子就懂

假设templates/deployment.yaml里有这样一段:

yaml

spec: replicas: {{ .Values.replicaCount.backend }} template: spec: containers: - name: backend image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" resources: requests: memory: "{{ .Values.backend.resources.requests.memory }}"

然后values.yaml里配置:

yaml

replicaCount: backend: 3 image: repository: ghcr.io/xxx/camp-backend tag: "v1.0.0" backend: resources: requests: memory: "512Mi"

Helm 渲染后,就变成你熟悉的原生 K8s YAML:

yaml

spec: replicas: 3 template: spec: containers: - name: backend image: "ghcr.io/xxx/camp-backend:v1.0.0" resources: requests: memory: "512Mi"

一句话总结

templates/存放的是"带变量的 YAML 草稿",Helm 负责把values.yaml里的值填进去,生成最终交给 kubectl 执行的 Kubernetes 资源清单。

学习时建议你做这件事:

  1. 打开templates/deployment.yaml,找到所有{{ .Values.xxx }}的占位符

  2. values.yaml里找到对应的值

  3. 在脑子里"手动渲染"一遍,看看最终 YAML 长什么样

  4. 再对比k8s/backend-deployment.yaml(你学过的原生版本),体会差异

这样你就能真正理解 Helm 的价值了。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/24 23:03:36

RAG系统的工程化之路:检索、生成与质量评估

引言:从“能回答”到“可交付”的跨越 许多团队搭建RAG(检索增强生成)Demo只需要一天:加载文档、切分、向量化、接入LLM,一个能回答问题的原型就诞生了。但当这个Demo要变成企业级产品时,问题接踵而至&…

作者头像 李华
网站建设 2026/7/24 23:00:08

05 调大模型API和调支付宝接口一模一样

摘要:本文系统阐述了大模型API调用中的容错与高可用设计。核心思路是将大模型API视为不可靠的外部依赖,通过四层防护机制保障系统稳定性:1)线程池隔离,避免慢响应拖垮业务线程;2)智能重试&#…

作者头像 李华
网站建设 2026/7/24 22:59:39

Linux系统篇:基本指令Chapter 1:对文件的操作和认识

观众老爷们大家好 这里是邪修KING的独家频道本文属于系列Linux系统篇 ——操作指令一起学Linux的小伙伴可订阅专栏: Linux系统篇 前置准备:下载安装 XShell,购买云服务器,用XShell登陆主机进行远程操作,具体教程可参考…

作者头像 李华
网站建设 2026/7/24 22:58:09

如何在3分钟内搞定网易云音乐NCM文件转换:ncmdumpGUI完整教程

如何在3分钟内搞定网易云音乐NCM文件转换:ncmdumpGUI完整教程 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换,Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否遇到过这样的情况:…

作者头像 李华
网站建设 2026/7/24 22:54:16

为什么 SPACE 不占用目标文件的大小?

难度:★★ 本文首发于我的嵌入式技术号「OneChan」,未经授权禁止转载。 在启动文件里,你一定见过这样的代码: Stack_Size EQU 0x00000400AREA STACK, NOINIT, READWRITE, ALIGN=3 Stack_Mem SPACE Stack_Size __initial_sp这定义了一个 1KB 的栈空间。…

作者头像 李华