The Uptime Engineer

👋 Hi, I am Yoshik Karnawat

Don’t scroll past, this week’s 180 second read might just save you hours at work.

Facts

  • Helm has over 1,800 production-ready charts in its official repository. The largest Kubernetes package ecosystem

  • Kustomize ships native in kubectl since Kubernetes 1.14

  • 73% of teams using both tools report using Helm for third-party apps and Kustomize for internal customization

  • The Kubernetes package ecosystem grew from 100 to 800+ packages in just 3 years

Teams overengineer Helm charts with 50+ values for a simple app.​

Or they copy-paste repetitive Kustomize overlays that should've been templated.

Engineers are often confused.

Here's what you need to know.

How they work

Helm = Package Manager + Templating Engine

Helm packages Kubernetes apps into versioned "charts" with Go templates.​

You define variables in values.yaml, and Helm renders them into final manifests.​

Think of it like npm for Kubernetes except it also handles deployments, rollbacks, and dependency management.​

Kustomize = Patch-Based Configuration

Kustomize uses a "base + overlays" approach.​

You maintain one base configuration, then create overlays that specify only what changes per environment.​

No templating. No variables. Just plain YAML with patches applied on top.

The real differences

Aspect

Helm

Kustomize

Approach

Templating with Go syntax

Overlays on raw YAML

Native kubectl

No (requires Helm CLI)

Yes (built into kubectl)

Packaging

Yes (versioned charts)

No

Rollbacks

Built-in with release history

Manual

Complexity

High (template logic gets messy)

Low (just YAML patches)

Community

1,800+ prebuilt charts

No chart ecosystem

Learning Curve

Steep (must learn Go templating)

Shallow (if you know YAML, you're ready)

When to use Helm

Deploying third-party applications​

Helm's chart repository has prebuilt packages for databases, monitoring tools, ingress controllers.​

Why write YAML from scratch?​

Complex applications with dependencies​

If your app requires multiple services with interdependencies, Helm's dependency management saves you from coordination hell.​

You need versioning and rollbacks​

Helm tracks every release.​

One command rolls back to any previous version.​

Distributing applications across teams​

If you're building internal platforms, Helm lets you package apps once and let other teams deploy with custom values.​

When to use Kustomize

Multi-environment deployments

Same app, different configs per environment?​

Kustomize's overlays prevent config duplication.​

Development environments might need reduced resource limits to save costs, while production needs enhanced security settings and monitoring.​

You want readable, debuggable manifests

No templating logic means no debugging cryptic Go syntax.​

What you see is what you deploy.​

GitOps workflows

Kustomize integrates natively with ArgoCD and Flux.​

No extra tooling needed.​

Modifying third-party Helm charts without forking

Deploy a Helm chart, then use Kustomize to patch it, add labels, change resource limits, inject secrets.​

The strategy most production teams use

Helm for packaging. Kustomize for customization.

Use Helm to deploy the application (handles dependencies, versioning, lifecycle).​

Use Kustomize overlays to apply environment-specific changes (namespaces, resource limits, security policies).​

Example workflow:​

helm template myapp ./chart > base.yaml kustomize build overlays/production | kubectl apply -f -

This gives you Helm's package management plus Kustomize's transparency.

Keep Reading

No posts found