Overview
O que a plataforma k3s faz e como hospeda os serviços internos
Plataforma GitOps que provisiona e opera uma instância isolada de cada aplicação por cliente, em um cluster k3s de 4 nodes. Hoje hospeda o checklist-mobile (multi-cliente, um namespace por cliente) e o license-manager (instância única, domínio próprio).
Stack
- k3s — por que k3s e não Kubernetes vanilla, e como o cluster decide onde e como rodar cada coisa: orchestration-fundamentals
- ArgoCD (GitOps/CD), Helm — mecanismo de reconciliação e o
ApplicationSetque gera um cliente por arquivo: gitops-argocd - CloudNativePG — Postgres por cliente, operator pattern: postgres-operator
- Traefik — ingress e terminação TLS
- cert-manager — certificado wildcard via Cloudflare DNS-01
- Sealed Secrets — segredos versionáveis em Git, cifrados: secrets-encryption
- MinIO — storage de aplicação e destino de backup de banco
- Loki + Promtail — agregação de logs
- kube-prometheus-stack — métricas e Grafana
- buildkitd nativo por arquitetura (amd64 e arm64) — build de imagem dentro do próprio cluster: image-builds
NetworkPolicy, HPA e PriorityClass (isolamento e escala por cliente) estão em network-and-scaling.
Como uma aplicação é hospedada
Um chart Helm único (charts/app) serve qualquer aplicação Laravel. Cada aplicação é declarada uma vez em apps/<nome>.yaml (repositório fonte, extensões PHP necessárias, imagem, variáveis de ambiente próprias). Cada cliente instancia essa aplicação em clients/<slug>.yaml, apontando platform.app: <nome> — o ApplicationSet do ArgoCD combina os dois arquivos e gera um namespace por cliente.
A plataforma também é dona do Dockerfile: nenhuma aplicação precisa manter configuração Docker própria. runtime/laravel/Dockerfile builda qualquer projeto Laravel, detectando se tem assets de frontend e se usa Octane.
Ver topology para a infraestrutura compartilhada e commands para o dia a dia de operação.