如何在Grafana Tanka中跳过Helm测试资源的部署?
忽略Helm Chart测试资源的三种方法
方法1:通过Tanka的helm.template参数跳过测试渲染
Helm的helm template命令支持--skip-tests选项,Tanka的helm.template可直接传递skipTests参数启用该功能,这是最直接的解决方式:
local tanka = import 'github.com/grafana/jsonnet-libs/tanka-util/main.libsonnet'; local helm = tanka.helm.new(std.thisFile); { myChart: helm.template('chart', '../../charts/mychart', { namespace: 'mychart', values: { // 保留原有的values配置 }, skipTests: true, // 新增此参数,跳过所有测试资源渲染 }), }
方法2:用Jsonnet过滤测试资源
如果skipTests参数不生效,或需要自定义过滤规则,可在Tanka中手动过滤测试资源。比如筛选掉名称含test的Job、或带有特定测试注解的资源:
local tanka = import 'github.com/grafana/jsonnet-libs/tanka-util/main.libsonnet'; local helm = tanka.helm.new(std.thisFile); // 先渲染完整的Chart资源 local rawChartResources = helm.template('chart', '../../charts/mychart', { namespace: 'mychart', values: { // 保留原有的values配置 }, }); // 过滤测试资源,可根据实际场景调整条件 { myChart: std.filter(function(res) { // 示例:排除名称含"test"的Job,或带有helm测试专属注解的资源 local isTestJob = res.kind == 'Job' and std.strContains(res.metadata.name, 'test'); local isTestAnnotated = res.metadata.annotations and res.metadata.annotations['helm.sh/chart-test'] == 'true'; return !isTestJob and !isTestAnnotated; }, rawChartResources), }
方法3:通过Chart的Values禁用测试资源
多数Helm Chart自带禁用测试资源的配置项,通常为tests.enabled: false,直接在values中配置即可从源头关闭测试资源渲染:
local tanka = import 'github.com/grafana/jsonnet-libs/tanka-util/main.libsonnet'; local helm = tanka.helm.new(std.thisFile); { myChart: helm.template('chart', '../../charts/mychart', { namespace: 'mychart', values: { // 保留原有的values配置 tests: { enabled: false, // 禁用Chart内置的测试资源 }, }, }), }
内容的提问来源于stack exchange,提问作者Lukas Ignatavičius
相关产品推荐
相关产品推荐

