K8s em Exemplos: Fundamentos do Kustomize

Kustomize customiza YAML sem templates. Componha recursos, adicione labels, mude imagens, tudo declarativamente. Integrado ao kubectl desde v1.14.

kustomization.yaml

Arquivo Kustomization lista recursos para incluir. Todos os recursos referenciados são combinados em uma única saída. Pode referenciar arquivos locais ou URLs remotas.

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - deployment.yaml
  - service.yaml
  - configmap.yaml
kustomization-labels.yaml

Adicione labels e annotations comuns a todos recursos. Ótimo para tagging consistente entre ambientes. Labels também são adicionados a selectors automaticamente.

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

resources:
  - deployment.yaml
  - service.yaml

commonLabels:
  app.kubernetes.io/name: my-app
  app.kubernetes.io/managed-by: kustomize

commonAnnotations:
  owner: platform-team
kustomization-images.yaml

Mude namespace para todos recursos. Sobrescreva tags de imagem sem editar manifestos. newName muda registry, newTag muda versão.

apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization

namespace: production

resources:
  - deployment.yaml

images:
  - name: my-app
    newTag: v1.2.3
  - name: nginx
    newName: my-registry/nginx
    newTag: "1.25"
kustomization-generators.yaml

Gere ConfigMaps e Secrets de arquivos ou literais. Kustomize adiciona sufixo hash para rollouts automáticos quando conteúdo muda.

configMapGenerator:
  - name: app-config
    literals:
      - LOG_LEVEL=info
      - DEBUG=false
    files:
      - config.json

secretGenerator:
  - name: app-secrets
    literals:
      - API_KEY=secret123
    files:
      - credentials.json
terminal

Aplique com kubectl ou visualize mudanças. kubectl kustomize mostra YAML renderizado na stdout. Flag -k diz ao kubectl para processar kustomization. kubectl diff -k mostra o que mudaria.

$ kubectl kustomize ./base

$ kubectl apply -k ./base
configmap/app-config-abc123 created
deployment.apps/my-app created
service/my-app created

$ kubectl diff -k ./base

Índice | GitHub | Use as setas do teclado para navegar |