Kubernetes
Definição de Namespace
Todo namespace carrega a chave semântica completa como labels, além de labels de rastreabilidade do Backstage e ArgoCD.
apiVersion: v1
kind: Namespace
metadata:
name: payments-prod-api
labels:
# Segmentos da convenção
project: payments
env: prod
service: api
team: team-payments
# Labels semânticas do Backstage
backstage.io/domain: payments
backstage.io/system: gateway
backstage.io/component: gateway-api
# Rastreabilidade ArgoCD
argocd/app: gateway-api-prod
argocd/app-set: gateway
argocd/project: payments
Consultando Entre Dimensões
kubectl get ns -l project=payments # todos os namespaces de um domínio
kubectl get ns -l env=prod # todos os namespaces de prod
kubectl get ns -l backstage.io/component=gateway-api # todos os envs de um component
kubectl get ns -l argocd/app=gateway-api-prod # namespace de uma Application
kubectl get ns --show-labels # visão completa de labels
NetworkPolicy — Isolamento por Projeto
apiVersion: networking.k8s.io/v1
kind: NetworkPolicy
metadata:
name: default-isolation
namespace: payments-prod-api
spec:
podSelector: {}
policyTypes: [Ingress, Egress]
ingress:
- from:
- namespaceSelector:
matchLabels:
project: payments
- from:
- namespaceSelector:
matchLabels:
project: platform
service: ingress
egress:
- to:
- namespaceSelector:
matchLabels:
project: payments
- to:
- namespaceSelector:
matchLabels:
project: platform
- ports:
- {protocol: UDP, port: 53}
- {protocol: TCP, port: 53}
ResourceQuota — Dimensionado por Ambiente
Gerado automaticamente pelo template create-service:
| Env | CPU req | Mem req | CPU limit | Mem limit | Pods |
|---|---|---|---|---|---|
| dev | 500m | 512Mi | 1 | 1Gi | 5 |
| staging | 2 | 4Gi | 4 | 8Gi | 10 |
| prod | 4 | 8Gi | 8 | 16Gi | 20 |
Padrões de Segurança de Carga de Trabalho
Todo Deployment gerado pelo create-service inclui:
spec.securityContext:
runAsNonRoot: true
runAsUser: 1000
fsGroup: 1000
containers[*].securityContext:
allowPrivilegeEscalation: false
readOnlyRootFilesystem: true
capabilities:
drop: [ALL]
O HPA escala réplicas por ambiente (dev: 1→2, staging: 2→5, prod: 3→10).
PodDisruptionBudget (minAvailable: 1) é aplicado em prod.
ignoreDifferences em /spec/replicas evita que o ArgoCD sobrescreva o HPA.