Skip to content

API 选择

先选最小的层。HelmSharp 拆成多个包,是为了让只做渲染的工具不必引用 Kubernetes 发布工作流。

应该从哪个包开始?

你想做什么建议起点原因
把 chart 渲染成 YAMLHelmSharp.Chart + HelmSharp.Engine最短路径:加载 chart、构建 values、渲染 manifests 和 NOTES。
在应用里提供 Helm 风格操作HelmSharp.Action一个 facade 覆盖 template、install、upgrade、rollback、uninstall、status、package、repo 等操作。
加载和检查 chartHelmSharp.ChartChart model、归档加载、values 合并、依赖元数据和 YAML helper。
提交已渲染资源HelmSharp.Kube资源识别、创建/更新/删除和 wait 行为。
保存 release 历史HelmSharp.Release基于 Kubernetes Secrets 的 Helm 风格 release 记录。
处理 chart repositoryHelmSharp.Repoindex、pull 和 repository helper。

只渲染

csharp
using HelmSharp.Chart;
using HelmSharp.Engine;

var chart = await HelmChartLoader.LoadAsync("/charts/my-chart", ct);
var values = await HelmValues.BuildAsync(chart, null, null, null, null, null, null, ct);
var renderer = new HelmTemplateRenderer(chart, "demo", "default", values);

var manifests = renderer.Render();
var notes = renderer.RenderNotes();

适合预览 API、校验系统、GitOps 生成器,以及永远不直接修改集群的工具。

类命令客户端

HelmClient 的多数操作返回 CommandResult。如果你的产品已经围绕命令、stdout/stderr、exit code 或 dry-run 输出组织流程,这个模型更顺手。

csharp
using HelmSharp.Action;

var client = new HelmClient(optionsProvider);

var template = await client.TemplateAsync(new HelmTemplateRequest
{
    ReleaseName = "demo",
    Namespace = "default",
    Chart = "/charts/my-chart"
});

var dryRun = await client.UpgradeInstallAsync(new HelmUpgradeInstallRequest
{
    ReleaseName = "demo",
    Namespace = "default",
    Chart = "/charts/my-chart",
    DryRun = true
});

常见 request object

Request用途
HelmTemplateRequest只渲染 manifests,不提交资源。
HelmUpgradeInstallRequestinstall 或 upgrade release,包括 dry-run。
HelmUninstallRequest删除 release 资源并更新 history。
HelmRollbackRequest回到旧 revision。
HelmPackageRequest创建 chart archive。
HelmPullRequest从 repository 相关来源拉取 chart。

常用渲染字段包括 ReleaseNameNamespaceChartValuesFileValuesFilesValuesContentSetValuesSetStringValuesSetJsonValuesSetFileValuesIncludeCRDsShowNotesKubeVersionApiVersions

Options provider

IHelmOptionsProvider 放在 request 之外,是为了让应用集中管理默认 namespace、field manager、kubeconfig 选择和租户策略。

生产服务通常从配置或请求上下文实现它。小工具可以用静态实现,并把它藏在程序启动附近。

错误处理

高层操作通过 CommandResult.ExitCodeCommandResult.StandardError 报告失败。低层渲染 API 会用普通 .NET exception 暴露解析或兼容性问题。

排查 chart 差异时,请保留 chart 路径、values 输入、HelmSharp 输出、Helm CLI 输出、HelmSharp 版本和 Helm CLI 版本。这样兼容性修复才有可复现目标。

基于 MIT License 发布。