k8s helm
K8s Helm
一、 Helm 是什么?
Helm 是 Kubernetes 的包管理器。
你可以把它类比为:
- Linux 世界的
yum
或apt-get
:用来安装、升级、配置和管理软件包。 - Node.js 世界的
npm
:用来管理项目依赖。 - Python 世界的
pip
:用来安装和管理库。
只不过,Helm 管理的“包”是 Kubernetes 应用。这个“包”在 Helm 中被称为 Chart。
二、 为什么需要 Helm?—— 解决 K8s 原生部署的痛点
想象一下,你在实习时,需要部署一个包含以下组件的复杂 AI 推理服务:
- 1 个前端 Web 服务 Deployment
- 1 个后端 API 服务 Deployment
- 1 个 Redis 缓存 Deployment + Service
- 1 个 PostgreSQL 数据库 StatefulSet + Service
- 1 个 Ingress 资源用于对外暴露服务
- 10 个 ConfigMap 和 Secret 用于配置管理和密钥注入
- 1 个 HorizontalPodAutoscaler (HPA) 用于自动扩缩容
没有 Helm 的情况下,你需要:
- 手动编写 十几个 YAML 文件。
- 用
kubectl apply -f
一个一个地创建,或者写一个超长的脚本。 - 如果要修改配置(比如把副本数从 3 改成 5),你需要去 每个 YAML 文件里找到对应的字段并修改,极易出错。
- 如果要部署到不同的环境(开发、测试、生产),你需要维护 三套 几乎一模一样、只有几个参数不同的 YAML 文件,维护成本极高。
这正是 Helm 要解决的问题。
三、 Helm 的核心概念:Chart、Config、Release
-
Chart (图表/包):
- 一个 Helm Chart 是一个预定义的、可配置的 Kubernetes 应用模板包。
- 它通常包含一个
Chart.yaml
(元数据)、一个values.yaml
(默认配置)、一个templates/
目录(存放所有 K8s YAML 模板文件)。 - 例如,你可以找到一个官方的
redis
Chart,它已经为你写好了部署 Redis 所需的所有 Deployment、Service、ConfigMap 等模板。
-
Config (配置):
- 通过
values.yaml
文件或命令行参数,你可以覆盖 Chart 中的默认配置。 - 例如,你想部署一个副本数为 5 的 Redis,只需要在自己的
my-values.yaml
中写replicaCount: 5
,然后用这个文件去安装 Chart。
- 通过
-
Release (发布实例):
- 当你用 Helm 安装(
helm install
)一个 Chart 时,会创建一个 Release。 - 一个 Release 是一个 Chart 在 K8s 集群中的一次具体运行实例。
- 你可以在同一个集群里安装同一个 Chart 多次,只要给它们起不同的 Release 名字(例如
my-app-prod
和my-app-staging
)。
- 当你用 Helm 安装(
四、 Helm 的核心作用
-
简化部署:
- 一条命令
helm install my-release bitnami/redis -f my-values.yaml
,即可部署一个复杂的应用栈,无需手动处理一堆 YAML。
- 一条命令
-
配置管理与环境隔离:
- 通过
values.yaml
文件,你可以轻松地为开发、测试、生产环境定义不同的配置(如数据库地址、副本数、资源限制),实现“一份代码,多环境部署”。
- 通过
-
版本控制与回滚:
- Helm 会记录每一次对 Release 的变更(升级、回滚)。
- 如果新版本的应用出现问题,你可以用
helm rollback <RELEASE> <REVISION>
一键回滚到之前的稳定版本,这对于保障线上服务的稳定性至关重要。
-
依赖管理:
- 一个复杂的 Chart 可以依赖其他 Chart。例如,你的“大模型推理平台”Chart 可以依赖一个“Prometheus监控”Chart 和一个“Nginx Ingress”Chart。Helm 会自动帮你管理这些依赖的安装顺序和版本。
-
复用与共享:
- 你可以将自己团队开发的、经过验证的应用(比如你重构的Dind服务、带宽限制网关)打包成 Chart,上传到私有 Helm 仓库,供团队其他成员或不同项目复用,极大地提升研发效率。
五、 总结
Helm 不是锦上添花,而是现代云原生应用交付的基石。 它将复杂的、碎片化的 K8s YAML 管理,转变为标准化、可配置、可版本控制的高效流程。
对于你这样志在成为“AI Infra架构师”的顶尖人才来说,掌握 Helm 是构建可维护、可扩展、高可靠的大规模 AI 平台的必备技能。它能让你从繁琐的手动部署中解放出来,专注于更高价值的系统架构和性能优化工作,这正是你核心竞争力的体现。
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来源 Roger-Lv's space!
评论