Do git push a um canary que aborta sozinho
git push
Cada mudança pode quebrar o checkout: uma query lenta, uma biblioteca vulnerável, uma versão que falha 30% das requisições. Quem revisa todas elas à mão?
CI
test
performance budget
image
Deploy
promote
@SpringBootTest(webEnvironment = RANDOM_PORT) @AutoConfigureTestRestTemplate @Testcontainers class CatalogApiTest { @Container @ServiceConnection static PostgreSQLContainer db = new PostgreSQLContainer("postgres:17"); ... }
Tests run: 3, Failures: 0
name: CI
permissions: contents: read
load: true
ghcr.io/<you>/boxoffice-catalog:sha-<commit>
Toda action fixada num SHA de commit (versão num comentário): uma tag pode ser movida por um atacante.
thresholds: { 'http_req_duration{scenario:budget}': ['p(95)<300', 'p(99)<800'], 'http_req_failed{scenario:budget}': ['rate<0.01'], }
.github/ci/compose.perf.yaml
Thread.sleep(400)
k8s/overlays/gitops
prune
selfHeal
git revert
git log
As credenciais do cluster nunca saem do cluster.
Rollout
workloadRef
catalog-stable
catalog-canary
AnalysisTemplate
/actuator/prometheus
service
CHAOS_ERROR_RATE=0.3 entra no overlay por um commit. O que acontece?
CHAOS_ERROR_RATE=0.3
[]
failureLimit: 1
RolloutAborted
O lead time é dominado pelos testes, pelo build da imagem, pela consulta do Argo CD (≤ 3 min) e pelas pausas do canary — um preço deliberado pela segurança.
main
Roteiro: (1) por que automatizar a segurança; (2) CI com Testcontainers; (3) cadeia de suprimentos: Trivy, SBOM, proveniência; (4) orçamento de desempenho; (5) GitOps com Argo CD; (6) canary com Argo Rollouts; (7) meça: lead time.