Skip to content

模板渲染

你在解决什么问题

模板渲染把已加载的 Chart 和合并后的 values 转成 Kubernetes 清单。HelmSharp 在测试中用 Helm CLI 输出作为兼容性参照,而应用代码直接调用托管渲染器。

安装哪些包

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

完整最小代码

csharp
public static async Task<string> RenderForTargetClusterAsync(
    string chartPath,
    CancellationToken cancellationToken)
{
    var chart = await HelmChartLoader.LoadAsync(chartPath, cancellationToken);
    var values = await HelmValues.BuildAsync(
        chart,
        valuesFiles: null,
        valuesContent: null,
        setValues: null,
        setFileValues: null,
        setStringValues: null,
        setJsonValues: null,
        cancellationToken: cancellationToken);

    var renderer = new HelmTemplateRenderer(
        chart,
        releaseName: "preview",
        releaseNamespace: "platform",
        values: values,
        kubeVersion: "1.30.0",
        apiVersions:
        [
            "monitoring.coreos.com/v1",
            "policy/v1"
        ],
        isUpgrade: false);

    return renderer.Render();
}

关键 API 为什么这样用

HelmTemplateRenderer 向模板暴露 .Release.Chart.Values.Capabilities.Files.Template、命名模板、includetpl 和常见 Helm/Sprig 函数。kubeVersionapiVersions 用于预览目标集群的输出。

生产环境注意事项

  • 已知目标集群时显式传入 kubeVersionapiVersions
  • 用户可见的说明用 RenderNotes() 单独渲染。
  • 使用 HelmClient.TemplateAsyncIncludeCRDs = true 可获得类命令输出。

下一步

需要安装、升级、历史或回滚行为时阅读 发布工作流

基于 MIT License 发布。