Como usar o Kustomize no Kubernetes
Olá pessoal, hoje no blog da 4Linux, vamos falar de uma sensacional para Kubernetes chamada Kustomize. Bora lá!!
O que é o Kustomize?
O Kustomize é uma ferramenta nativa do Kubernetes que facilita o gerenciamento e a customização de arquivos de configuração YAML. Ele permite criar configurações reutilizáveis e flexíveis, eliminando a necessidade de duplicar arquivos YAML para diferentes ambientes, como desenvolvimento, staging ou produção.
Desde a versão 1.14 do Kubernetes, o Kustomize está integrado diretamente ao comando kubectl, tornando-o uma solução eficiente e acessível para gerenciar configurações.
Para que serve o Kustomize?
- Gerenciar diferentes ambientes: Configurar ambientes como desenvolvimento, staging e produção de forma centralizada.
- Customizar recursos: Permite modificar arquivos YAML sem editar os originais, mantendo um único conjunto de configurações base.
- Simplificar alterações: Adicionar rótulos, anotações, substituir imagens ou ajustar parâmetros de recursos de forma declarativa.
Vantagens do Kustomize
O nosso querido Kustomize, possui algumas vantagens que ajuda na administração da criação de objetos no K8s. Abaixo eu separei algumas que a tornam tão atrativa:
Reutilização: arquivos base podem ser aplicados a múltiplos ambientes com personalizações específicas.
Simplicidade: Evita a complexidade de templating (como no Helm), utilizando apenas YAML puro e modificável.
Sem dependências: Integrado ao Kubernetes, sem necessidade de instalar ferramentas adicionais.
Flexibilidade: Suporte a patching, geração de ConfigMaps, Secrets e substituição de imagens.
Integração com “kubectl”: Use diretamente com comandos como kubectl apply -k.
Como é a estrutura do Kustomize
O Kustomize utiliza um arquivo chamado kustomization.yaml para definir as bases e as customizações de um conjunto de recursos. Aqui estão os principais elementos que você pode usar:
resources: Lista de arquivos YAML que contêm os recursos base.
patches: Modificações aplicadas aos recursos.
images: Substituição de imagens de contêiner.
configMapGenerator: Gera ConfigMaps dinamicamente.
secretGenerator: Gera Secrets dinamicamente.
Kustomize na prática
Agora que já vimos a parte teórica do Kustomize, vamos colocar a mão na massa e ver na prática como ele se fuciona.
Vamos criar um exemplo para gerenciar diferentes ambientes (desenvolvimento e produção) para uma aplicação Nginx.
Vem comigo!!
Estrutura de Diretórios
app/
├── base/
│ ├── deployment.yaml
│ ├── service.yaml
│ └── kustomization.yaml
├── overlays/
│ ├── development/
│ │ ├── kustomization.yaml
│ │ └── patch-deployment.yaml
│ └── production/
│ ├── kustomization.yaml
│ └── patch-deployment.yaml
O diretório base/ contém os arquivos YAML padrão da aplicação.
deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 1
selector:
matchLabels:
app: nginx
template:
metadata:
labels:
app: nginx
spec:
containers:
- name: nginx
image: nginx:1.19
ports:
- containerPort: 80
service.yaml
apiVersion: v1
kind: Service
metadata:
name: nginx
spec:
selector:
app: nginx
ports:
- protocol: TCP
port: 80
targetPort: 80
type: ClusterIP
kustomization.yaml
resources:
- deployment.yaml
- service.yaml
Diretório Overlays (Ambientes)
Cada subdiretório em overlays/ representa um ambiente (por exemplo, development e production). Eles contêm customizações aplicadas sobre os recursos do diretório base.
development/kustomization.yaml
resources:
- ../../base
patches:
- patch-deployment.yaml
images:
- name: nginx:1.21
development/patch-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 2
production/kustomization.yaml
resources:
- ../../base
patches:
- patch-deployment.yaml
images:
- name: nginx:1.21
production/patch-deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
replicas: 5
Aplicando Configurações
Para aplicar as configurações para o ambiente desejado, use o comando kubectl com a opção -k e o diretório do overlay correspondente.
Para segregar, crie dois namespaces. um chamado development e outro chamado production:
kubectl create ns development
kubectl create ns production
Development
kubectl -n development apply -k overlays/development/
output
kubectl -n development get pods,svc
NAME READY STATUS RESTARTS AGE
pod/nginx-5bd9d7bb49-b9htz 1/1 Running 0 50s
pod/nginx-5bd9d7bb49-kmzcn 1/1 Running 0 50s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/nginx ClusterIP 10.96.138.174 <none> 80/TCP 51s
Production
kubectl -n production apply -k overlays/production/
output
kubectl -n production get pods,svc
NAME READY STATUS RESTARTS AGE
pod/nginx-5bd9d7bb49-5fq8f 1/1 Running 0 7s
pod/nginx-5bd9d7bb49-f9cmj 1/1 Running 0 7s
pod/nginx-5bd9d7bb49-gh448 1/1 Running 0 7s
pod/nginx-5bd9d7bb49-k59zx 1/1 Running 0 7s
pod/nginx-5bd9d7bb49-kj7bh 1/1 Running 0 7s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/nginx ClusterIP 10.96.79.136 <none> 80/TCP 7s
Conclusão
O Kustomize é uma ferramenta poderosa para gerenciar configurações do Kubernetes de forma eficiente e organizada. Ele ajuda a evitar duplicidade de arquivos, facilita a customização para diferentes ambientes e é extremamente simples de usar. Com ele, você pode centralizar a gestão de seus manifestos YAML e garantir maior consistência e facilidade de manutenção no seu cluster Kubernetes.
Por hoje é só pessoal, nos vemos no próximo post no blog.
Abraços
Referências
About author
Você pode gostar também
Dominando o Docker: Guia completo para iniciantes em containerização
Primeiros passos com Docker Apesar do termo container ter se popularizado nos dias de hoje com a ferramenta Docker, o conceito já era empregado com utilizações de containers Linux e
Desbravando o OpenTofu: Parte 02 – Provisionando uma VM na GCP
Olá pessoal, hoje no blog, vamos realizar um deploy na GCP com uma ferramenta em potencial de Infra as Code chamada OpenTofu, um fork do Terraform. Bora lá! Antes de
Compartilhando conhecimento em IA – IA não corrige bagunça, ela só acelera o estrago!
Se a casa está organizada, ela vira amplificador. Se está bagunçada, ela vira microfone aberto para o caos. O State of AI-Assisted Software Development 2025 crava o essencial: IA amplifica









