Skip to content

第一次渲染

你在解决什么问题

如果应用只需要 Kubernetes YAML,用于预览、校验、策略检查、GitOps 或漂移检测,就先走只渲染路径。

安装哪些包

powershell
dotnet add package HelmSharp.Chart --version 1.1.0
dotnet add package HelmSharp.Engine --version 1.1.0

完整最小代码

csharp
public static async Task<RenderedChartPreview> RenderFirstChartAsync(
    string chartPath,
    string valuesPath,
    CancellationToken cancellationToken)
{
    var chart = await HelmChartLoader.LoadAsync(chartPath, cancellationToken);

    var values = await HelmValues.BuildAsync(
        chart: chart,
        valuesFiles: [valuesPath],
        valuesContent: null,
        setValues: new Dictionary<string, string>
        {
            ["image.tag"] = "1.25.3",
            ["replicaCount"] = "2"
        },
        setFileValues: null,
        setStringValues: null,
        setJsonValues: null,
        cancellationToken: cancellationToken);

    var renderer = new HelmTemplateRenderer(chart, "demo", "default", values);

    return new RenderedChartPreview(
        Manifest: renderer.Render(),
        Notes: renderer.RenderNotes());
}

关键 API 为什么这样用

HelmChartLoader.LoadAsync 加载 Chart 元数据、values、templates、CRDs、文件、依赖和子 Chart。HelmValues.BuildAsync 按 Helm 风格合并 values。HelmTemplateRenderer.Render() 返回清单,RenderNotes() 返回 NOTES.txt

生产环境注意事项

  • 从服务边界传入绝对 chart 路径,便于复现问题。
  • 保存每次预览使用的 values 输入。
  • 排查差异时可使用 对比工具 或 Helm CLI 基准输出测试。

下一步

阅读 值配置(Values),正确建模用户覆盖项。

基于 MIT License 发布。