<p>These are the best practises for a helm deployment which I figured out so far:</p>
<ol>
<li>Use versioned images, because deploying via latest tag is not sufficient, as this may not trigger a pod recreate (see <a href="https://stackoverflow.com/questions/64290972/when-does-kubernetes-helm-trigger-a-pod-recreate/64291282">When does kubernetes helm trigger a pod recreate?</a>).</li>
<li>Use hashed configmap metadata to restart pods on configmap changes
(see <a href="https://helm.sh/docs/howto/charts_tips_and_tricks/" rel="nofollow noreferrer">https://helm.sh/docs/howto/charts_tips_and_tricks/</a>)</li>
</ol>
<p>In a development environment new images are created often. Because I don't want to trash my container registry, I'd prefer using latest tags.</p>
<p>The only solution - I can think of - is to use versioned imaged and a cleanup job to remove old image from the registry. But this is quite complicated.</p>
<p>So what are your best practises for helm deployments in a development environment?</p>

Matthias M
<p>Indeed, using <code>:latest</code> will mean that your deployments will be mutable.</p>
<p>AWS ECR allows you to keep limited number of latest images according to certain regex. So you can use <code>dev-</code> prefix for your non-production deployments (for example triggered outside of <code>master</code> branch) and keep only 10 latest of them.</p>
