Skip to content

Helm 兼容性

HelmSharp 不是命令行模拟器。它要解决的是:.NET 应用在进程内渲染 chart、管理 release 时,需要哪些可观测的 Helm 行为。

Helm CLI 只作为测试基准使用,消费者运行时不需要安装 Helm。

验证范围

CI 会将聚焦测试用 Chart 和选定公开 Chart 与 helm template 进行比较。它们覆盖辅助模板、嵌套 values、.Files、capabilities 和格式细节,这些情况很难由手写小 Chart 覆盖。这是对已覆盖行为的回归测试,不是通用兼容性认证;若 Chart 依赖少见 Helm 行为,仍应单独验证。

模板函数的精确范围请参阅维护中的模板函数兼容性矩阵。其中记录上游版本、每个 Helm 可见函数和缺口的明确处置。

兼容性契约

一个行为会被视为已支持,需要满足:

  • 可以通过文档化的托管 API 使用;
  • 有聚焦的自动化测试覆盖;
  • net8.0net9.0net10.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 报告会作为每次工作流运行的产物发布。

基于 MIT License 发布。