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

Viewed 2070

It looks like Helm 3 is making this more difficult: https://github.com/databus23/helm-diff/issues/176

But I'm finding that using the helm-diff plugin OR just doing this: helm template releaseName chart | kubectl diff -f - | bat -l diff - I'm seeing ALL resources as new with "+" next to them. Why is this?

I'm running these commands:

# 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 -

I get output that shows the ENTIRE manifest is new- why is this?

2 Answers

You probably need -n derps on the diff too. If memory serves me, helm template --namespace doesn't actually inject the value.

did you try:

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 -

Related