Aula 14: Orquestração com Kubernetes e Runners ☸️
🎯 Nossa Missão
- Entender a necessidade da orquestração.
- Conhecer a arquitetura do Kubernetes (K8s).
- Descobrir o que são Pods, Nodes e Clusters.
- Compreender o papel dos Runners em CI/CD.
🤔 Por que Kubernetes?
O Docker é ótimo para 1 servidor. E para 1000? * Quem reinicia o contêiner se ele cair? * Como dividir o tráfego entre 10 cópias do app? * Como atualizar o sistema sem tirar ninguém do ar? * O Kubernetes é o maestro dessa orquestra.
🏗️ Arquitetura do Cluster
mermaid graph TD CP[Control Plane - Cerebro] --> N1[Worker Node 1] CP --> N2[Worker Node 2] N1 --> P1[Pod] N1 --> P2[Pod] N2 --> P3[Pod]
🧠 Control Plane vs Worker Nodes
- Control Plane: Toma decisões (agendamento, detecção de falhas).
- Worker Nodes: Os servidores que carregam o peso (onde o app roda).
📦 O que é um Pod?
A menor peça do quebra-cabeça. * Um Pod pode ter um ou mais contêineres colados. * Eles compartilham o mesmo IP e o mesmo volume. * O Kubernetes gerencia Pods, não contêineres isolados.
🛠️ Objetos Essenciais
- Deployment: Define como seu app deve rodar (quantas cópias).
- Service: Cria um IP fixo para acessar seus Pods.
- Ingress: A porta de entrada do cluster (o que o mundo vê).
🩹 Auto-Cura (Self-Healing)
- Se um contêiner morre, o K8s reinicia.
- Se um servidor morre, o K8s move os Pods para outro servidor disponível.
- Seu sistema fica sempre online (High Availability).
🪜 Auto-Escala (Scaling)
- HPA: Aumenta o número de Pods se o tráfego subir.
- VPA: Dá mais CPU/RAM se o processo estiver pesado.
- Cluster Autoscaler: Compra mais servidores reais na Amazon/Google se precisar de mais espaço.
🚀 Deployment Estratégico
Como atualizar o código sem erros? * Rolling Update: Troca um por um, sem downtime. * Canary Deployment: Libera a versão nova apenas para 5% dos usuários primeiro. * Blue/Green: Sobe o novo app ao lado do antigo e vira a chave.
📄 Manifestos YAML
Tudo no K8s é declarado em arquivos.
apiVersion: apps/v1
kind: Deployment
metadata:
name: meu-app
spec:
replicas: 3
template:
spec:
containers:
- name: web
image: meu-app:v2
🐚 kubectl: O Controle Remoto
A ferramenta de linha de comando para falar com o K8s. * kubectl get pods: Ver quem está vivo. * kubectl logs <pod>: Ver os erros. * kubectl apply -f arquivo.yml: Enviar ordens para o cluster.
🏃♂️ O que são Runners?
Conectando a Orquestração com o CI/CD. * Runners são as máquinas que executam seus testes. * Eles podem ser contêineres rodando dentro do seu próprio Kubernetes! * Self-hosted Runners: Mais segurança e controle de custos.
🏢 K8s Gerenciado (Cloud)
Instalar o K8s do zero é muito difícil! * AWS EKS * Google GKE * Azure AKS * A nuvem cuida do Control Plane pra você.
🌐 Networking e DNS
No K8s, um serviço pode achar outro apenas pelo nome: * api-service consegue falar com db-service sem saber o IP real!
🛡️ RBAC: Segurança no Cluster
- Quem pode criar Pods?
- Quem pode ver os logs?
- O Kubernetes permite controle total de permissões por usuário.
🏆 Checklist de Orquestração Pro
- Entende o papel do Control Plane.
- Sabe que um Pod é a unidade mínima.
- Compreende o conceito de Réplicas e Auto-Cura.
- Sabe para que serve o
kubectl.
📝 Prática de Hoje
- Explorar a arquitetura visual de um cluster K8s.
- Analisar um manifesto YAML de Deployment.
- Diferenciar o papel do Runner no GitHub Actions.
🏁 Dúvidas?
Bem-vindo ao mundo da alta disponibilidade! ☸️🚀