Capítulo 3.3 - Labels e Selectors
Objetivos de Aprendizagem
Ao final deste capítulo, você será capaz de:
- Compreender o papel dos Labels
- Criar e utilizar Labels
- Selecionar recursos com Selectors
- Organizar seus recursos de forma eficiente
O que é um Label?
Um Label é um par chave-valor anexado a um recurso do Kubernetes para identificá-lo e organizá-lo.
Por que Usar Labels?
Organização
Os Labels permitem:
- Agrupar recursos logicamente
- Filtrar e selecionar recursos
- Organizar por ambiente, aplicação, versão, etc.
Exemplos de Labels
labels:
app: my-application # Nome da aplicação
env: production # Ambiente
tier: frontend # Camada (frontend/backend)
version: v1.2.3 # Versão
team: backend-team # Equipe responsável
component: api-server # Componente
Declaração de Labels
No YAML
apiVersion: v1
kind: Pod
metadata:
name: web-pod
labels:
app: web
env: production
tier: frontend
version: v1
spec:
containers:
- name: nginx
image: nginx:1.20
Via kubectl
# Adicionar um label
kubectl label pod web-pod team=backend
# Modificar um label existente
kubectl label pod web-pod env=staging --overwrite
# Remover um label
kubectl label pod web-pod team-
Selectors
Os Selectors permitem selecionar recursos com base em seus Labels.
Selectors Simples
selector:
matchLabels:
app: web
env: production
Selectors com Expressões
selector:
matchExpressions:
- key: env
operator: In
values:
- production
- staging
- key: version
operator: NotIn
values:
- v1
Operadores:
In: O valor está na listaNotIn: O valor não está na listaExists: A chave existeDoesNotExist: A chave não existe
Uso no kubectl
Filtrar com Labels
# Pods com um label específico
kubectl get pods -l app=web
# Pods com múltiplos labels
kubectl get pods -l app=web,env=production
# Pods sem um label
kubectl get pods -l '!env'
# Pods com um label em uma lista
kubectl get pods -l 'env in (production,staging)'
Selectors Complexos
# Expressão AND
kubectl get pods -l app=web,env=production
# Expressão OR (via múltiplas requisições)
kubectl get pods -l app=web
kubectl get pods -l app=api
Caso de Uso: Services
Os Services usam Selectors para encontrar os Pods:
apiVersion: v1
kind: Service
metadata:
name: web-service
spec:
selector:
app: web
tier: frontend
ports:
- port: 80
targetPort: 8080
Boas Práticas
Convenções de Nomeação
- Use nomes curtos e descritivos
- Evite caracteres especiais (exceto
-e_) - Use valores em minúsculas
- Máximo de 63 caracteres por label
Labels Recomendados
labels:
app.kubernetes.io/name: my-app
app.kubernetes.io/instance: my-app-prod
app.kubernetes.io/version: "1.2.3"
app.kubernetes.io/component: frontend
app.kubernetes.io/part-of: my-system
app.kubernetes.io/managed-by: helm
Resumo
Neste capítulo, você aprendeu:
Labels: Pares chave-valor para organizar recursos
Selectors: Selecionar recursos com base em Labels
Uso: Services, Deployments, ReplicaSets utilizam Selectors
Comandos: kubectl label, filtragem com -l
Boas práticas: Convenções de nomeação e labels recomendados
Próximos Passos
Agora que você domina os Labels:
Capítulo 3.4: Ciclo de Vida dos Pods
Capítulo 3.5: ReplicaSets
Capítulo criado em: Dezembro de 2024