You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Quarkus-Helm集成Gradle:如何添加自定义Helm Chart模板?

解决Quarkus Helm插件自定义模板被覆盖的问题

针对你遇到的自定义Helm模板被构建过程覆盖、kubernetes/common.yml不支持Helm变量的问题,提供以下几种可行方案:

方案一:利用Quarkus Helm插件的额外模板目录功能(推荐)

Quarkus Helm插件原生支持指定额外的模板目录,生成Chart时会自动将该目录下的文件合并到最终的templates目录,无需手动写复制任务,也不会被覆盖。

在application.properties中添加配置:

quarkus.helm.extra-templates-dir=src/main/helm/templates

或者在application.yml中配置:

quarkus:
  helm:
    extra-templates-dir: src/main/helm/templates

将你的networkpolicy-deny-all.yaml放在src/main/helm/templates目录下,插件构建时会自动将其包含到生成的Helm Chart中,Helm变量(如{{ .Values.namespace }})也能正常解析。

方案二:调整Gradle复制任务的执行时机

如果不想修改Quarkus配置,可以通过调整Gradle任务顺序,确保复制操作在Quarkus生成Helm Chart之后执行,避免文件被覆盖。

修改你的Gradle任务:

// 重命名任务避免与默认copy任务冲突
tasks.register('copyNetworkPolicy', Copy) {
    from file("src/main/helm/templates/networkpolicy-deny-all.yaml")
    into layout.buildDirectory.dir("helm/kubernetes/my-app/templates")
}

// 让Quarkus生成Helm Chart的任务执行完成后自动运行复制任务
tasks.named('quarkusHelmBuild').configure {
    finalizedBy('copyNetworkPolicy')
}

// 确保build任务依赖复制任务,保证构建流程中执行
tasks.named('build').configure {
    dependsOn('copyNetworkPolicy')
}

注:Quarkus Helm插件的生成任务名称可能为quarkusHelm或quarkusHelmBuild,可通过./gradlew tasks命令查看具体名称。

关于kubernetes/common.yml的说明

kubernetes/common.yml用于定义静态Kubernetes资源,不支持Helm模板语法(如{{ .Values.* }}),因此不适合存放需要动态渲染的网络策略模板,必须使用Helm模板文件放在templates目录下。

内容的提问来源于stack exchange,提问作者javanoob

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.14 04:11:10