<p>I'm trying to get used to helm, and I'm having a problem while using helm upgrade. The question is, is it possible to have 0-downtime?</p>

<p>The things that I noticed is that helm/k8s removes the old pod before the new one is ready/live. Is it possible to say to remove the old one only when the new is up and running? it seems a very logical case, but I can't figure out how to do it.</p>

<p>NB: right now I'm forcing pod recreation with <code>helm upgrade --recreate-pods notes notes/</code>, can maybe be this?</p>

<p>Your applications should have <a href="https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/" rel="noreferrer">Livness and Readiness probes</a>, thus it will shut down the old ones only when Readiness probe on the new ones passed.
Also you can take a look at <a href="https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#strategy" rel="noreferrer">Deployment Strategy</a>. </p>

<p>Liveness and Readiness probes is a must when architecting applications for Kubernetes, as described in <a href="https://www.digitalocean.com/community/tutorials/architecting-applications-for-kubernetes#implementing-readiness-and-liveness-probes" rel="noreferrer">this article</a>.  </p>
