Skip to content

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)"]