# Helm 🆚 Kustomize

> Helm or Kustomize, which one to use?

Source: https://extim.su/blog/helm-🆚-kustomize/

<p><i class="nf nf-dev-helm"></i> Helm or Kustomize, which one to use?</p>
<p>➡ If you primarily use raw Kubernetes manifest files, your best option is to utilize Kustomize as much as possible. Kustomize is not only integrated into Kubernetes, but it's also included in many GitOps tools.</p>
<pre class="language-yaml"><code class="language-yaml"><span class="token key atrule">apiVersion</span><span class="token punctuation">:</span> kustomize.config.k8s.io/v1beta1
<span class="token key atrule">kind</span><span class="token punctuation">:</span> Kustomization
<span class="token key atrule">resources</span><span class="token punctuation">:</span>
<span class="token punctuation">-</span> ../../base
<span class="token key atrule">patches</span><span class="token punctuation">:</span>
<span class="token punctuation">-</span> <span class="token key atrule">target</span><span class="token punctuation">:</span>
<span class="token key atrule">name</span><span class="token punctuation">:</span> nginx
<span class="token key atrule">group</span><span class="token punctuation">:</span> apps
<span class="token key atrule">kind</span><span class="token punctuation">:</span> Deployment
<span class="token key atrule">patch</span><span class="token punctuation">:</span> <span class="token punctuation">|</span>
<span class="token punctuation">-</span> <span class="token key atrule">op</span><span class="token punctuation">:</span> replace
<span class="token key atrule">path</span><span class="token punctuation">:</span> /spe</code></pre>
<p>💡 When it comes to manifest templating and patching, if you need to parameterize certain configurations or are coming from the Helm ecosystem, you might want to focus entirely on Helm or consider starting to write Helm charts.
Helm is particularly useful for parameterizing your configurations rather than patching them. Generally, parameterization is warranted when you're unsure about specific cluster details ahead of time, such as the Ingress “host” field in the YAML.
With Helm, you can parameterize the configuration and supply values that are specific to each deployment.</p>
<pre class="language-yaml"><code class="language-yaml">$ helm repo add akuity<span class="token punctuation">-</span>demos https<span class="token punctuation">:</span>//akuity.github.io/demo<span class="token punctuation">-</span>helm<span class="token punctuation">-</span>charts/
"akuity<span class="token punctuation">-</span>demos" has been added to your repositories
$ helm install myapp <span class="token punctuation">-</span><span class="token punctuation">-</span>create<span class="token punctuation">-</span>namespace <span class="token punctuation">-</span><span class="token punctuation">-</span>namespace example <span class="token punctuation">-</span><span class="token punctuation">-</span>set
replicaCount=3 akuity<span class="token punctuation">-</span>demos/simple<span class="token punctuation">-</span>go
<span class="token key atrule">NAME</span><span class="token punctuation">:</span> myapp
<span class="token key atrule">LAST DEPLOYED</span><span class="token punctuation">:</span> Mon Sep 18 16<span class="token punctuation">:</span>16<span class="token punctuation">:</span>53 2023
<span class="token key atrule">NAMESPACE</span><span class="token punctuation">:</span> example
<span class="token key atrule">STATUS</span><span class="token punctuation">:</span> deployed
<span class="token key atrule">REVISION</span><span class="token punctuation">:</span> <span class="token number">1</span>
<span class="token key atrule">TEST SUITE</span><span class="token punctuation">:</span> None
<span class="token key atrule">NOTES</span><span class="token punctuation">:</span>
Simple Go App deployed<span class="token tag">!</span>
$ kubectl get pods <span class="token punctuation">-</span>n example
NAME READY STATUS RESTARTS AGE
myapp<span class="token punctuation">-</span>simple<span class="token punctuation">-</span>go<span class="token punctuation">-</span>64c587f7b4<span class="token punctuation">-</span>6htcs 1/1 Running 0 8s
myapp<span class="token punctuation">-</span>simple<span class="token punctuation">-</span>go<span class="token punctuation">-</span>64c587f7b4<span class="token punctuation">-</span>f2bmc 1/1 Running 0 8s
myapp<span class="token punctuation">-</span>simple<span class="token punctuation">-</span>go<span class="token punctuation">-</span>64c587f7b4<span class="token punctuation">-</span>r6tdg 1/1 Running 0 8s</code></pre>
<p>❕ It's important to note that this is not a question of choosing between Kustomize and Helm; rather, it's about using both together. In many cases, you will be using them in tandem.</p>

