Conceitos · Extensão

CRDs & Operators

Como o Kubernetes é estendido com tipos customizados. O padrão Operator é o que faz ferramentas como ArgoCD, cert-manager e Karpenter funcionarem.

📋 CRD — Custom Resource Definition

Um CRD ensina o Kubernetes a entender um novo tipo de recurso. Depois de instalado, você pode usar kubectl get, kubectl apply e RBAC nesse novo tipo exatamente como faria com um Pod ou Service.

# Depois de instalar o cert-manager:
kubectl get certificates -A
kubectl describe certificate meu-tls -n prod

# O K8s "aprendeu" o tipo Certificate
# e o cert-manager controller o processa

⚙️ Operator Pattern

Um Operator = CRD + Controller. O CRD define o novo tipo de recurso. O Controller (um pod rodando no cluster) observa esses recursos e age para atingir o estado desejado — exatamente como o Deployment Controller gerencia ReplicaSets.

Você cria Certificate
Controller detecta
Chama Let's Encrypt
Cria Secret TLS
Renova automaticamente

Operators essenciais para EKS

// os que você vai usar no dia a dia
🔄ArgoCDGitOps

Sincroniza o cluster com repositórios Git. Tudo que está no Git é aplicado no cluster automaticamente.

CRDs instalados
Application, AppProject, ApplicationSet
🔐cert-managerSegurança

Gerencia ciclo de vida de certificados TLS: cria, renova e distribui automaticamente via Let's Encrypt ou ACM.

CRDs instalados
Certificate, Issuer, ClusterIssuer
🔑External SecretsSegurança

Sincroniza secrets do AWS Secrets Manager, Parameter Store e Vault para Kubernetes Secrets automaticamente.

CRDs instalados
ExternalSecret, SecretStore, ClusterSecretStore
🚀KarpenterAutoscaling

Provisiona e remove nodes EC2 automaticamente baseado em pods Pending. Mais rápido e eficiente que Cluster Autoscaler.

CRDs instalados
NodePool, NodeClass, NodeClaim
📬KEDAAutoscaling

Escala Deployments baseado em eventos externos (SQS, Kafka, Datadog). Suporta scale-to-zero.

CRDs instalados
ScaledObject, ScaledJob, TriggerAuthentication
📊Prometheus OperatorObservabilidade

Simplifica o deploy e configuração do Prometheus. Define targets de scrape como CRDs.

CRDs instalados
Prometheus, ServiceMonitor, PodMonitor, PrometheusRule
🌊FluxGitOps

Alternativa ao ArgoCD para GitOps. Mais modular e nativo ao ecossistema Kubernetes.

CRDs instalados
GitRepository, Kustomization, HelmRelease, HelmRepository
🕸️IstioService Mesh

Service mesh: mTLS automático entre services, traffic shaping, observabilidade sem mudar código.

CRDs instalados
VirtualService, DestinationRule, Gateway, ServiceEntry

Comandos úteis para CRDs

kubectl get crdsListar todos os CRDs instalados no cluster
kubectl get crds | grep argoVer CRDs de um operator específico
kubectl explain certificate.specDocumentação do CRD direto no terminal
kubectl get certificates -AUsar o CRD como qualquer outro recurso
kubectl api-resources | grep argoprojVer todos os recursos de um grupo de API