<p>I installed my app like this:</p>
<pre class="lang-sh prettyprint-override"><code>helm install my-app my-application/ --set externalName.namespace=app-layer
</code></pre>
<p>Checking the pods and services, everything installed correctly.</p>
<p>I then tried a <code>dry-run</code> expecting to get a conflict but it simply printed out the YAML and some info about the previous install.</p>
<pre class="lang-sh prettyprint-override"><code>helm install my-app my-application/ --set externalName.namespace=app-layer --dry-run
</code></pre>
<p>The above printed out:</p>
<pre><code>NAME: my-app
LAST DEPLOYED: Tue Dec 22 19:52:33 2020
NAMESPACE: default
STATUS: pending-install
REVISION: 1
TEST SUITE: None
USER-SUPPLIED VALUES:
externalName:
  namespace: app-layer

COMPUTED VALUES:
#...elided by me...

HOOKS:
MANIFEST:
---
#...elided by me...
</code></pre>
<p><strong>However</strong>, when I try to install I get this error:</p>
<pre><code>Error: cannot re-use a name that is still in use
</code></pre>
<p>Why doesn't the dry run catch that?</p>

Don Rhummy
<p>In dry-run mode, the <code>availableName</code> check <a href="https://github.com/helm/helm/blob/bfc575dec2f6ed5ce897c38d0d89b0fe936606c0/pkg/action/install.go#L421-L423" rel="nofollow noreferrer">explicitly stops</a> before actually checking if the name you've provided is in use.  You'll still get a complaint if you explicitly give an empty name or if the name is longer than 53 characters.</p>
<p>Practically, I tend to use <code>helm upgrade --install</code> instead of <code>helm install</code> most of the time, since that will work even if the chart is already installed.</p>
