Documentation/Buki/Kustomize/ skills /kustomize-basics

📖 kustomize-basics

Use when customizing Kubernetes configurations without templates using Kustomize overlays and patches.



Overview

Kubernetes configuration customization without templates.

Basic Structure

app/
├── base/
│   ├── kustomization.yaml
│   ├── deployment.yaml
│   └── service.yaml
└── overlays/
    ├── development/
    │   └── kustomization.yaml
    └── production/
        └── kustomization.yaml

Base Kustomization

# base/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - deployment.yaml
  - service.yaml

commonLabels:
  app: myapp
  
namePrefix: myapp-

images:
  - name: myapp
    newTag: v1.0.0

Overlay Kustomization

# overlays/production/kustomization.yaml
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

bases:
  - ../../base

replicas:
  - name: myapp-deployment
    count: 5

images:
  - name: myapp
    newTag: v2.0.0

patches:
  - patch: |-
      apiVersion: apps/v1
      kind: Deployment
      metadata:
        name: myapp-deployment
      spec:
        template:
          spec:
            containers:
            - name: myapp
              resources:
                limits:
                  memory: "1Gi"
                  cpu: "1000m"

Common Commands

# Build kustomization
kustomize build base/

# Build overlay
kustomize build overlays/production/

# Apply with kubectl
kubectl apply -k overlays/production/

# Diff before apply
kubectl diff -k overlays/production/

Transformers

Common Labels

commonLabels:
  app: myapp
  environment: production

Name Prefix/Suffix

namePrefix: prod-
nameSuffix: -v2

Namespace

namespace: production

Config Map Generator

configMapGenerator:
  - name: app-config
    files:
      - config.properties
    literals:
      - LOG_LEVEL=info

Secret Generator

secretGenerator:
  - name: app-secrets
    literals:
      - password=secret123

Best Practices

Use Bases for Common Configuration

Keep common configuration in base and environment-specific in overlays.

Strategic Merge Patches

patches:
  - path: patch-deployment.yaml

JSON Patches

patchesJson6902:
  - target:
      group: apps
      version: v1
      kind: Deployment
      name: myapp
    patch: |-
      - op: replace
        path: /spec/replicas
        value: 3