如何将 Helm 模板与现有 deployment/release 进行比较?

How do I diff a Helm template against an existing deployment/release?

看起来 Helm 3 使这变得更加困难:https://github.com/databus23/helm-diff/issues/176

但我发现使用 helm-diff 插件或只是这样做:helm template releaseName chart | kubectl diff -f - | bat -l diff - 我看到所有资源都是新的,旁边有“+”。这是为什么?

我运行这些命令:

# upgrade
helm upgrade --install --create-namespace \
    --namespace derps -f helm/deploy-values.yaml \
    --set 'parentChart.param1=sdfsdfsdfdsf' \
    --set 'parentChart.param2=sdfsdfsdfdsf' \
    --set 'parentChart.param3=sdfsdfsdfdsf' \
    --set 'parentChart.param4=sdfsdfsdfdsf' \
    --set 'parentChart.param5=sdfsdfsdfdsf' \
    myapp helm/mychart

# make no changes and try to diff
helm template \
    --namespace derps -f helm/deploy-values.yaml \
    --set 'parentChart.param1=sdfsdfsdfdsf' \
    --set 'parentChart.param2=sdfsdfsdfdsf' \
    --set 'parentChart.param3=sdfsdfsdfdsf' \
    --set 'parentChart.param4=sdfsdfsdfdsf' \
    --set 'parentChart.param5=sdfsdfsdfdsf' \
    myapp helm/mychart | kubectl diff -f - | bat -l diff -

我得到的输出显示整个清单是新的 - 这是为什么?

您可能还需要 -n derps 差异。如果没记错的话,helm template --namespace 实际上并没有注入值。

你试过了吗:

helm template \
    --namespace derps --no-hooks --skip-tests \
    -f helm/deploy-values.yaml \
    --set 'parentChart.param1=sdfsdfsdfdsf' \
    --set 'parentChart.param2=sdfsdfsdfdsf' \
    --set 'parentChart.param3=sdfsdfsdfdsf' \
    --set 'parentChart.param4=sdfsdfsdfdsf' \
    --set 'parentChart.param5=sdfsdfsdfdsf' \
    myapp helm/mychart | kubectl diff --namespace derps -f - | bat -l diff -