1. Helm 基础回顾:架构、Chart 结构与 Release 生命周期
在深入日志平台根因定位之前,必须先夯实 Helm 的核心概念。Helm 是 Kubernetes 的包管理器,它将应用及其依赖打包为 Chart,通过模板化与参数化实现可重复的部署。本节从架构、Chart 结构和 Release 生命周期三个维度进行回顾。
1.1 Helm 架构:Tiller 已死,v3 直连 API
Helm v3 移除了服务端组件 Tiller,客户端直接通过 kubeconfig 与 Kubernetes API Server 交互。这一变化大幅简化了安全模型与部署流程。
架构要点: Helm v3 客户端 → kubeconfig → Kubernetes API Server → 创建/更新/删除资源对象。不再需要集群内 Tiller 服务,权限控制回归 RBAC。
1.2 Chart 结构:标准化的应用包
一个 Helm Chart 是遵循特定目录结构的文件集合。理解每个文件和目录的职责,是编写和调试 Chart 的基础。
| 路径 / 文件 | 必需 | 说明 |
|---|---|---|
Chart.yaml |
是 | Chart 元数据:名称、版本、apiVersion、描述、依赖等。 |
values.yaml |
是 | 默认配置值,供模板引用。用户可通过 --set 或自定义 values 文件覆盖。 |
templates/ |
是 | Go 模板文件目录,渲染后生成 Kubernetes 资源清单(Deployment、Service、ConfigMap 等)。 |
charts/ |
否 | 子 Chart 依赖目录,存放被依赖的 Chart 包。 |
crds/ |
否 | 自定义资源定义(CRD)目录,Helm 在安装时优先安装 CRD。 |
templates/NOTES.txt |
否 | 安装成功后输出的提示信息,如访问地址、默认密码等。 |
templates/_helpers.tpl |
否 | 模板辅助函数定义,通过 define 和 template 复用逻辑。 |
实战提示: 在日志平台场景中,
values.yaml 通常包含 Elasticsearch 副本数、Loki 存储配置、Fluentd 日志源路径等参数。合理组织 values 层级结构,能大幅提升 Chart 的可维护性。
1.3 Release 生命周期管理
Release 是 Chart 的一次部署实例。Helm 通过 Release 记录(存储在 Secret 中)追踪每次操作,支持安装、升级、回滚和删除。
1.4 核心命令速查
以下命令覆盖 Release 生命周期的关键操作,在日志平台排障时经常使用。
# 安装 Chart(生成 Release)
helm install my-release ./log-platform -f values-prod.yaml
# 升级 Release(创建新 revision)
helm upgrade my-release ./log-platform --set replicaCount=3
# 查看 Release 历史
helm history my-release
# 回滚到指定 revision
helm rollback my-release 2
# 卸载 Release(保留历史记录)
helm uninstall my-release
# 查看 Release 状态
helm status my-release
注意:
helm uninstall 默认会删除 Release 记录。如需保留历史用于审计,可使用 --keep-history 标志。在日志平台根因定位场景中,保留历史有助于追溯配置变更。