Lesson 3: Manifest Management (Helm vs Kustomize)
🧠 The Concept (Explain Like I'm 5)
- Helm (The Mad Libs Book): You have a template with blanks (e.g.,
replicas: {{ .Values.replicaCount }}). You provide a values.yaml file to fill in the blanks.
- Kustomize (The Sticker Book): You have a complete, normal Kubernetes YAML file. Kustomize slaps "stickers" (patches) over it to change things for different environments without altering the original file.
🏢 The Enterprise Context
- Helm: Best for packaging and sharing complex third-party apps (like deploying Datadog or Prometheus).
- Kustomize: Best for internal microservices where you don't want to maintain thousands of Go-template brackets, but just want a base YAML and a
prod-patch.yaml.
- Platform Architects often combine them: Using Kustomize to patch a Helm chart after it's rendered!
🗺️ Visual Architecture: Kustomize Overlays
flowchart TD
subgraph Base ["Base (Common for all envs)"]
BaseDep["deployment.yaml<br/>(replicas: 1)"]
BaseSvc["service.yaml"]
end
subgraph Dev ["Dev Overlay"]
DevPatch["kustomization.yaml<br/>(No patches)"]
end
subgraph Prod ["Prod Overlay"]
ProdPatch["patch.yaml<br/>(replicas: 50, limits: 4Gi)"]
end
Base --> Dev
Base --> Prod
Prod --> Output["Final Prod YAML<br/>(replicas: 50)"]