Helm 兼容性
HelmSharp 不是命令行模拟器。它要解决的是:.NET 应用在进程内渲染 chart、管理 release 时,需要哪些可观测的 Helm 行为。
Helm CLI 只作为测试基准使用,消费者运行时不需要安装 Helm。
验证范围
CI 会将聚焦测试用 Chart 和选定公开 Chart 与 helm template 进行比较。它们覆盖辅助模板、嵌套 values、.Files、capabilities 和格式细节,这些情况很难由手写小 Chart 覆盖。这是对已覆盖行为的回归测试,不是通用兼容性认证;若 Chart 依赖少见 Helm 行为,仍应单独验证。
模板函数的精确范围请参阅维护中的模板函数兼容性矩阵。其中记录上游版本、每个 Helm 可见函数和缺口的明确处置。
兼容性契约
一个行为会被视为已支持,需要满足:
- 可以通过文档化的托管 API 使用;
- 有聚焦的自动化测试覆盖;
- 在
net8.0、net9.0、net10.0上表现一致; - 对用户可见的渲染输出、release 状态或失败行为与 Helm 语义一致。
CLI 颜色、进度文案、终端格式和插件执行不是目标,除非它们影响 chart 输出或自动化流程。
能力快照
| 区域 | 当前级别 | 对用户意味着什么 |
|---|---|---|
从目录和 .tgz 加载 Chart | 已支持 | 可以从渲染和打包工具开始使用,并由测试用 Chart 与公开 Chart 测试覆盖。 |
values 文件和 --set 风格覆盖 | 部分支持 | 常见流程可用;部分类型转换边界仍在补齐。 |
| Helm 风格模板渲染 | 已支持 | 常见解析、控制流、命名模板、内置对象、空白裁剪和部分 Sprig 函数有聚焦测试。未实现的函数会产生包含模板路径的渲染诊断。 |
| Chart 打包和仓库 | 部分支持 | 已有可用 API;归档和仓库边界仍需扩展。 |
| 安装、升级、回滚、卸载 | 已支持 | 托管生命周期会持久化 deployed、superseded、failed 以及保留历史的卸载 revision,并支持操作级超时、原子恢复、回滚预留和确定性 hook;不支持的 Helm 选项会在变更前失败。 |
| Kubernetes 提交、删除、等待 | 部分支持 | 常见资源使用静态客户端;其他 API 资源会从目标集群发现后执行提交/删除。就绪判断仍只覆盖选定资源。 |
| Kubernetes Secrets 发布历史 | 已支持 | 不依赖 Helm CLI 也能保存发布记录。 |
| OCI 注册表和来源证明 | 计划中 | API 或方向存在,但还不是完整生产对齐。 |
已知边界
如果生产流程依赖以下行为,接入前应先验证:
- 少见 values 类型转换和 list 语法;
- OCI 认证和注册表流程;
- 来源证明校验;
- 实现范围之外的 Sprig 函数或 Go-template 行为;
- 少见 Kubernetes 资源类型的就绪判断;
- Helm plugin 的安全替代模型。
基准输出测试只证明其实际覆盖的行为。新的 Chart 仍可能暴露未实现函数、解析边界或清单差异,因此兼容性报告应包含最小 Chart 和等价 Helm CLI 命令。
报告兼容性差异
请提交包含以下信息的兼容性 issue:
- Helm CLI 和 HelmSharp 版本;
- 最小 Chart 和 values 输入;
- 精确 Helm 命令和输出;
- 等价 HelmSharp API 调用和输出;
- 差异是否影响渲染、发布状态或集群变更。
小而可复现的 Chart 比截图或大型私有 Chart 更有价值。
持续验证
基准输出测试结果会在每次推送和拉取请求中通过 CI 工作流 验证。CI 运行器会在 .NET SDK 旁安装 Helm CLI(v4.2.2),并执行完整的基准输出测试套件,包括测试用 Chart 和公开 Chart 对比。JSON 报告会作为每次工作流运行的产物发布。