<p>I am just wondering if anyone has figured out a declarative way to have helm charts installed/configured as part of a cluster initiation and that could be checked into source control. Using Kuberenetes I have very much gotten used to the "everything as code" type of workflow and I realize that installing and configuring helm is based mostly on imperative workflows via the CLI.</p>

<p>The reason I am asking is because currently we have our cluster in development and will be recreating it in production. Most of our configuration has been done declaratively via the deployment.yaml file. However we have spent a significant amount of time installing and configuring certain helm charts (e.g. prometheus, grafana etc.)</p>

<p>There a tools like <a href="https://github.com/roboll/helmfile" rel="nofollow noreferrer">helmfile</a> or <a href="https://github.com/Praqma/helmsman" rel="nofollow noreferrer">helmsman</a> which allow you to declare to be installed Helm releases as code. </p>

<p>Here is an example from a <code>helmfile.yaml</code> doing so:</p>

<pre><code>releases:
  # Published chart example
  - name: promnorbacxubuntu         # name of this release
    namespace: prometheus              # target namespace
    chart: stable/prometheus             # the chart being installed to create this release, referenced by `repository/chart` syntax
    set:                                   # values (--set)
      - name: rbac.create
        value: false
</code></pre>

<p>Running <code>helmfile charts</code> will then ensure that all listed releases are installed</p>
