<p>I have <strong>2 helm child charts</strong> and <strong>1 umbrella chart</strong> which depends on both childs.
Unfortunately the both child charts contain duplicated k8s objects (so they also share the <em>same name</em>).</p>
<p>So on doing <code>helm install release1 umbrella</code> I get <code>Error: configmaps &quot;x-1&quot; already exists</code>.</p>
<p>Hint:  We are the authors of the &quot;child&quot; charts (so we can change them) but we can not avoid name collisions.</p>
<p>Is it possible to do <code>helm install</code> despite some k8s objects are duplicated ? Could we adapt the &quot;child&quot; charts to make it possible (like &quot;consider this object only if not already defined&quot;)</p>
<p>I know it is possible doing it with plain <code>kubectl</code> since it will merge the duplicates without errors.</p>

mr.wolle
<p>A typical Helm convention is to name objects after both the release name and the chart name.  In a dependency-chart situation, each of the charts will have its own chart name, but all of the charts will share the same release name.</p>
<pre class="lang-yaml prettyprint-override"><code>metadata:
  name: {{ .Release.Name }}-{{ .Chart.Name }}-x-1
</code></pre>
<p>If you create a chart with <code>helm create</code>, it will include a <code>&quot;chartname.fullname&quot;</code> helper in <code>_helpers.tpl</code> that helps to construct this name in a standard way.</p>
<p>This approach will get you two separate, non-conflicting ConfigMaps, but they might have duplicated content.</p>
<p>If you want to have only one copy of the ConfigMap, you can move it into its own chart, and have the two &quot;child&quot; charts depend on that.  If the umbrella chart depends on A and B, and A and B both depend on some common dependency C, Helm will only install that dependency once.  The service charts A and B will still know the name of the ConfigMap, since they know the release name (the same as the current <code>.Release.Name</code>) and the chart name (the name of the common dependency chart).</p>
<pre class="lang-yaml prettyprint-override"><code>configMapRef:
  name: {{ .Release.Name }}-common-x-1
</code></pre>
