<p>I've checked out helm.sh of course, but at first glance the entire setup seems a little complicated (helm-client &amp; tiller-server). It seems to me like I can get away by just having a helm-client in most cases.</p>

<p><strong>This is what I currently do</strong></p>

<p>Let's say I have a project composed of 3 services viz. <code>postgres</code>, <code>express</code>, <code>nginx</code>.</p>

<p>I create a directory called <code>product-release</code> that is as follows:</p>

<pre><code>product-release/
    .git/
    k8s/
        postgres/
            Deployment.yaml
            Service.yaml
            Secret.mustache.yaml   # Needs to be rendered by the dev before use
        express/
            Deployment.yaml
            Service.yaml
        nginx/
            Deployment.yaml
            Service.yaml
    updates/
        0.1__0.2/
            Job.yaml    # postgres schema migration
            update.sh   # k8s API server scritps to patch/replace existing k8s objects, and runs the state change job
</code></pre>

<p>The usual git stuff can apply now. Everytime I make a change, I make changes to the spec files, test them, write the update scripts to help move from the last version to this current version and then commit it and tag it.</p>

<p><strong>Questions</strong>:</p>

<ol>
<li>This works for me so far, but is this "the right way"?</li>
<li>Why does <code>helm</code> have the tiller server? Isn't it simpler to do the templating on the client-side? Of course, if you want to separate the activity of the deployment from the knowledge of the application (like secrets) the templating would have to happen on the server, but otherwise why?</li>
</ol>

<p>Seems that <a href="https://redspread.com/" rel="nofollow noreferrer">https://redspread.com/</a> (open source) addresses this particular issue, but needs more development before it'll be production ready - at least from my team quick glance at it.</p>

<p>We'll stick with keeping yaml files in git together with the deployed application for now I guess. </p>
