<p>I'm building a cluster visualization tool for Kubernetes that runs inside users' clusters. </p>

<p>My goal is to make this tool freely available. The most obvious way to distribute it is to tell people to <code>kubectl apply -f www.ourgithub/our-configs.yaml</code>, which pulls our images and voila. </p>

<p>That's all fine. Now the problem is how do we push updates? </p>

<p>I've considered these options but none seem very good:</p>

<ul>
<li><p>Using something like <a href="https://github.com/chartmuseum/helm-push" rel="nofollow noreferrer">https://github.com/chartmuseum/helm-push</a></p></li>
<li><p>Having the apps themselves check for updates and "restart" themselves (i.e <code>imagePullPolicy=always</code> scale to 0)</p></li>
<li><p>Having users download an executable on their machines that periodically checks for updates</p></li>
</ul>

<p>I want to be able to push updates reliably so I want to make sure I'm using the most robust method there is. </p>

<p>What is the best practice for this?</p>

<p>Separate CI/CD pipeline for building and testing docker images and separate pipeline for deploying.</p>

<p>Your pipeline should deploy an application in a version that's is already running on the environment, deploy a new one, run e2e tests to verify everything is correct and then push a new version to the desired cluster. </p>
