<p>Let's say I have a simple deployment kubernetes config:</p>

<pre><code>kind: Deployment
apiVersion: extensions/v1beta1
metadata:
  name: backend
spec:
  replicas: 1
  template:
    metadata:
      name: backend
    spec:
      containers:
      - name: backend
        image: backend:1.0.0
        resources:
          limits:
            memory: "500Mi"
            cpu: "100m"
        imagePullPolicy: Always
</code></pre>

<p>And I want to have continuous deployment. </p>

<ul>
<li><p>One way to do it would be to simply use this file for creation, and for updates run something like <code>kubectl set image deployment/backend backend=backend:1.1.0</code>. But what if at some point later I wanted to change e.g. limits, I would have to find out the current version running, replace that in yaml file and apply it? Seems cumbersome</p></li>
<li><p>Google seems to use <code>sed</code> for replacing <a href="https://github.com/GoogleCloudPlatform/continuous-deployment-on-kubernetes/blob/master/sample-app/Jenkinsfile" rel="nofollow noreferrer">image version in their example</a>, and this kind of works fine if your kubernetes config files are stored in the same repo as your code. And what if they are stored elsewhere, or your build takes quite some time? So just to change a single property you would have to run through the whole build process, which might be too long</p></li>
<li><p>Have a script that autogenerates yaml file after each deployment based on version input, and always edit the template only (but then again, where do you store the last deployed version?)</p></li>
<li><p>Some third party tool?</p></li>
</ul>

<p>Helm charts become an increasingly popular way of managing kubernetes deployments. In short it allows you to generate deployments with only defining the variables that you need with a simple configuration and it has a built in upgrade mechanism as well. In other words it provides meta-deployments.</p>

<p>Refer to the following <a href="https://github.com/kubernetes/helm/blob/master/docs/using_helm.md#helm-upgrade-and-helm-rollback-upgrading-a-release-and-recovering-on-failure" rel="nofollow noreferrer">docs.</a></p>
