<p>I plan to use Helm for deploying purposes. I have three applications/pods p1,p2,p3 and each of these has 2 enivronments dev, prod and in each environment there is a configmap.yml and deployment.yml.</p>
<p>I plan on using helm, however how can I structure these. Do I need three helm charts?, one per application or is it possible to pack everything in one helm, considering the constraints.</p>
<p>I thought of the following structure.</p>
<pre><code>+-- charts
|   \-- my-chart
|       +-- Chart.yaml        # Helm chart metadata
|       +-- templates
        |   \-- p1
             +-- configmap1.yml
             +-- dep1.yaml
............................ similiary for p2,p3

|       +-- values.yaml       # default values
|       +-- values.dev.p1.yaml   # development override values
|       +-- values.dev.p2.yaml 
|       +-- values.dev.p3.yaml  
|       +-- values.prod.p1.yaml   # production override values
|       +-- values.prod.p2.yaml  
|       +-- values.prod.p3.yaml  
</code></pre>
<p>Now if I want to deploy p1 in prod , then I simply</p>
<pre><code>helm install -f values.prod.p1.yaml helm-app 
</code></pre>
<p>Would this work is this the general convention?</p>

Arnav Singh
<p>You can use the single helm chart to manage all the deployment and config map.</p>
<p>Create the <strong>tpl</strong> for deployment and service so this single tpl (template) will use to generate the multiple deployment YAML configs.</p>
<p>So you will get the 3 YAML deployment file as output while you will be managing a single template file.</p>
<p>For configmap also you can follow same and keep in single helm chart is it's working fine for you.</p>
<p>For different environment you can mange the different <strong>values</strong> into <strong>values.yaml</strong> file like <strong>dev-values.yaml</strong> &amp; <strong>prod-values.yaml</strong></p>
<pre><code>helm install -f values.prod.p1.yaml helm-app 
</code></pre>
