验证舵图内容

时间:2018-02-07 13:34:59

标签: debugging kubernetes kubernetes-helm

我正在开发一个图表,但我发错了 - {错误地放置imagePullSecrets。当我尝试通过

安装它时
helm install ./mychart

错位的元素被忽略了,我想知道出了什么问题。

当我做的时候

helm template ./mychart | kubectl apply --dry-run -f -
而是打印出来的:

error: error validating "STDIN": error validating data: ValidationError(Deployment.spec.template.spec.containers[0]): unknown field "imagePullSecrets" in io.k8s.api.core.v1.Container

清楚地表明出了什么问题。我不确定它是否与分蘖实际对扩展模板的作用相匹配。

但如果我只是做一个

helm install --dry-run --debug ./mychart

它只显示扩展的模板,看起来没问题。

那么如何正确验证我的所有模板与helm相匹配的模式?

2 个答案:

答案 0 :(得分:0)

您可以通过转到helm lint ./mychart来对图表进行整理,如果发现问题,则应打印以下内容:

$ helm lint ./mychart
==> Linting ./mychart
[ERROR] Chart.yaml: version is required
[INFO] Chart.yaml: icon is recommended

Error: 1 chart(s) linted, 1 chart(s) failed

请参见helm lint

答案 1 :(得分:0)

使用kubeval

helm template ./mychart | kubeval --strict

如果您有CRD,则可能需要使用kubeval --ignore-missing-schemas。我建议提供架构版本:kubeval -v 1.18

建议:专门对图表进行验证。示例如下。

简单:

helm template --set some.key="val" | kubeval --strict

复杂:

VALUES_FILE=$(cat << EOF
some:
  key: "val"

another:
  key:
    another: "val"
EOF
)
# It is important to quote "$VALUES_FILE" to ensure line breaks and indentation are preserved
echo "$VALUES_FILE" | helm template -f - | kubeval --strict