Ir para o conteúdo principal
ArchPrompts
Voltar ao blog
Caderno técnico / Nota de campo

Radar Tech: Quay.io entrou em read-only e travou os pushes — a lição de arquitetura sobre separar write-path de read-path

Corrupção em tabelas de metadados deixou o Quay.io em modo somente-leitura por cerca de 15 horas: push bloqueado, pull intacto. Por que nada do que já estava rodando caiu — e o que isso ensina sobre separar o plano de build do plano de execução.

João Gabriel
5 min de leitura
Leitura principal

A notícia que dominou as conversas de infraestrutura nas últimas 24 horas é pequena em manchete e enorme em consequência: o Quay.io, registry de containers da Red Hat, entrou em modo somente-leitura. Durante cerca de 15 horas, publicar uma imagem nova foi impossível. Servir as imagens que já existiam, não.

O que aconteceu, segundo as fontes

A página oficial de status da Red Hat registra o incidente como "Initial: Quay.io Push/Pull Degraded", aberto em 14 de setembro de 2026, às 13:34 UTC. A causa reportada foi corrupção em tabelas do banco de metadados do serviço.

A cronologia, direto dos updates oficiais, é reveladora:

  • 00:39 UTC (15/set) — "2 de 3 tabelas afetadas foram atualizadas. A última está rodando. Quay.io permanece em modo somente-leitura. Image pulls continuam funcionando, mas pushes e outras operações de escrita estão temporariamente indisponíveis."
  • 02:49 UTC — tabelas atualizadas, ainda restaurando o tráfego de leitura/escrita completo.
  • 04:05 UTC — "A correção foi implantada. Quay.io está servindo requisições de leitura/escrita. Seguimos monitorando."
  • 04:31 UTC — "Push e pull funcionando normalmente. Continuamos monitorando a saúde do serviço. O scan de vulnerabilidades Clair está temporariamente desabilitado."

No mesmo painel da Red Hat apareceu, no mesmo intervalo, uma parcial indisponibilidade do catalog.redhat.com e um registro de "AWS Outage: me-central" — três sinais de que o dia foi de degradação em camadas, não de um evento isolado.

O detalhe que quase todo mundo pula

O detalhe mais importante está em uma frase que passa batido: pushes pararam, pulls continuaram.

Isso não é sorte — é arquitetura. Um registry de artefatos tem dois caminhos com SLOs diferentes:

  • o write-path (push): autenticação → autorização → validação → gravação de metadados → gravação de blob;
  • o read-path (pull): resolução de manifest → leitura de blob → entrega.

Quando o banco de metadados adoece, faz sentido do ponto de vista de integridade fechar a escrita e preservar a leitura. O provedor escolheu fail-closed: melhor recusar o artefato novo do que gravar metadado inconsistente.

E por que o mundo não parou? Por dois mecanismos que já estavam no lugar:

  1. Digests são imutáveis. Se o manifesto de produção aponta para sha256:... e não para uma tag mutável, o conteúdo é verificável independentemente do que o registry faz no write-path.
  2. Cache de nó. O kubelet já tem a imagem no disco. Subir um pod existente ou reiniciar um container não toca o registry.

Traduzindo: o pull funcionou para quem já tinha o artefato. A dor ficou inteira no plano de build — CI travado, promoções congeladas, releases atrasadas — e quase nula no plano de execução.

As perguntas de arquitetura que sobram

Se você opera um registry (Quay, Harbor, Artifactory, ECR, GAR) ou depende de um, o incidente deixa perguntas concretas:

  • Qual é o seu tempo até o impacto? Se o push parar agora, quantos minutos até um release crítico travar?
  • Você sabe separar os dois planos? Sabe dizer, hoje, o que continua funcionando quando o write-path morre?
  • Seus manifestos usam digest ou tag mutável? Se for tag, você acabou de perder a imutabilidade junto com o registry.
  • Existe um caminho de contingência de primeira classe? Publicar num registry secundário é plano de emergência ou improviso?
  • Se houve corrupção de metadados, você confia no que foi publicado na janela? Verificar integridade retroativa não é paranoia — é o único jeito de saber.
  • E o scan desabilitado? Quando o Clair sai do ar, o que acontece com a sua política de admissão? Ela continua exigindo assinatura e SBOM, ou alguém "destrava" o deploy?

A tentação perigosa

Todo incidente de registry traz a mesma pressão: alguém vai pedir para desabilitar a verificação de assinatura "só durante a crise". É exatamente o erro que transforma um problema de disponibilidade em um incidente de segurança. Degradação de disponibilidade não pode produzir degradação de segurança — a política de admissão, o RBAC, o SBOM e a assinatura precisam sobreviver ao modo degradado, porque é justamente quando ninguém está olhando que uma janela explorável vale mais.

O caminho correto não é afrouxar: é espelhar, reduzir escopo e reconciliar depois. Publicar no registry secundário pelo mesmo digest, drenar a fila de builds quando o write-path voltar e reapontar tags divergentes para o digest assinado canônico.

O que dá para fazer esta semana

  • Congele promoções automaticamente quando a taxa de erro de push passar de um limiar — não dependa de alguém perceber.
  • Meça o pull como SLO separado do push. Eles falham por motivos diferentes e merecem orçamentos de erro diferentes.
  • Torne a assinatura um invariante não degradável. Nenhuma exceção, nem em incidente.
  • Escreva o runbook do modo degradado com critério de saída binário ("só retome promoções quando 100% das tags apontarem para o mesmo digest, por 30 min").
  • Planeje a verificação retroativa para qualquer evento de corrupção de metadados: recalcule digests e revalide assinaturas de tudo que foi publicado na janela afetada.

Resumo do dia, em uma linha

O Quay.io ficou 15 horas sem aceitar imagem nova por corrupção de metadados, e o mundo não parou — porque pull e push são caminhos diferentes, e porque digests não mentem. Quem confunde os dois planos descobre a diferença no pior momento possível.

Este post acompanha o prompt "Resiliência de Registry de Artefatos — Write-Path Degradado" no catálogo da ArchPrompts: um pacote de 6 arquivos (prompt, guardrails, exemplos, harness de verificação, templates e runbook) para levar um LLM a projetar exatamente essa contingência — com gatilhos numéricos, ADRs prontos e a invariante de que a contingência nunca afrouxa a assinatura.

Fontes: página oficial de status da Red Hat (incidente "Initial: Quay.io Push/Pull Degraded", 14–15/set/2026) e a discussão do item no Hacker News (14/set/2026, 22:56 UTC).

Do conceito à execução

Ferramentas práticas para levar as decisões desta nota ao seu próximo projeto.

12 / selecionados
SPA tradicional (REST + JSON) vs HTML over WebSockets: quem renderiza, quem guarda o estado e onde mora a latência em cada abordagem.
Event-Driven
01 / 03

HTML over WebSockets vs SPA — Pacote Multi-Arquivo para ADR de Adoção de Server-Driven UI (Event-Driven) — 5 Arquivos

por João Gabriel

gpt-4GPT-4oClaude+3
(0)
0 vendas
R$ 54,90
Diagrama do ataque: backdoor time-release em modelo open-source. O harness injeta a data no system prompt a cada turno; nos dias normais o modelo responde normalmente, mas no dia-gatilho um comando malicioso substitui a resposta e é executado pelo shell do agente sem confirmação.
Segurança
01 / 02

Revisão de Segurança e ADR de Adoção de Modelo de IA de Código (contra weight poisoning e backdoor time-release)

por João Gabriel

gpt-4ClaudeGemini+1
(0)
0 vendas
R$ 59,90
Fluxo de redefinição de credenciais: jornada legítima x jornada do atacante explorando o bypass (CVE-2026-18963, CVSS 9.1).
Segurança
01 / 02

ADR de Mitigação de Vulnerabilidade no Fluxo de Redefinição de Credenciais (CVE-2026-18963) — Pacote 5 Arquivos

por João Gabriel

gpt-4GPT-4oClaude+3
(0)
0 vendas
R$ 59,90
Arquitetura de isolamento KVM antes do patch — o caminho do escape guest→host via Januscape (CVE-2026-53359)
ADR
01 / 03

Mitigação de Escape KVM Guest-to-Host — CVE-2026-53359 (Januscape)

por João Gabriel

gpt-4GPT-4oclaude-3-opus+3
(0)
0 vendas
R$ 23,94
Cadeia do ataque de supply-chain ao LiteLLM: comprometimento em cascata via PyPI, scraping de memória, exfiltração de 195 TB e a lição do caso Trivy (rotacionar ≠ revogar).
Segurança
01 / 02

ADR de Segurança de Supply-Chain: documentando decisões de gestão de segredos e mitigando vazamentos de credenciais em CI/CD (pacote multi-arquivo)

por João Gabriel

gpt-4ClaudeGemini+1
(0)
0 vendas
R$ 49,90
State machine por tópico da migração: REJECT → PROXY → MIGRATING → COMPLETE, com rollback automático por timeout.
Event-Driven
01 / 03

ADR de Migração de Produtores Kafka com Zero Downtime: pacote multi-arquivo para projetar corte reversível e sem perda de mensagens em sistemas orientados a eventos

por João Gabriel

GPT-4oclaude-3-7-sonnetgemini-2.0-flash
(0)
0 vendas
R$ 56,90
Arquitetura geral: Stripe e PayPal conectados via barramento de eventos, com microsserviços downstream, Event Store (Kafka + Schema Registry) e CQRS Read Models.
Event-Driven
01 / 03

Integração de Plataformas de Pagamento via Event-Driven Architecture e Strangler Fig — Pacote Premium para Arquitetos de Software

por João Gabriel

gpt-4gpt-4-turboclaude-3-opus+3
(0)
0 vendas
R$ 29,94
Diagrama do ataque CVE-2026-53359: VM convidada maliciosa explora bug de emulação MMIO no KVM para escapar ao Ring 0 do host e acessar memória de outras VMs.
Segurança
01 / 03

Defesa em Profundidade Contra Guest Escape em Ambientes Virtuais Multi-Tenant

por João Gabriel

gpt-4ClaudeGemini+2
(0)
0 vendas
R$ 23,94
Fluxo da exploração de SSRF em uma tool de fetch de agente de IA: usuário/modelo controlam a URL, o fetcher sem validação alcança o metadata service interno.
Segurança
01 / 03

ADR de segurança para fetchers de agentes de IA: mitigando SSRF com defesa em profundidade (allowlist, anti-DNS-rebinding, egresso segmentado e sanitização de resposta)

por João Gabriel

gpt-4ClaudeGemini+1
(0)
0 vendas
R$ 49,90
Arquitetura em 3 camadas do Gateway Multi-Modelo: Aplicação → Orquestração (roteamento, cache, fallover, billing) → Modelos
Agentes
01 / 03

Gateway Multi-Modelo para Agentes de IA — Roteamento Inteligente, Resiliência e Otimização de Custos entre Provedores de LLM

por João Gabriel

GPT-4ogpt-4o-miniclaude-4-sonnet+4
(0)
0 vendas
R$ 59,90
O antipadrão: uma chave de plataforma única no gateway multi-tenant gera blast radius global.
Segurança
01 / 03

ADR de Gestão de Segredos Multi-Tenant — Elimine Chaves de Plataforma, Reduza o Blast Radius (com Rotação SaaS e Runbook de Incidente)

por João Gabriel

gpt-4ClaudeGemini
(0)
0 vendas
R$ 59,90
Cadeia de ataque agêntico: dataset malicioso → code-exec → movimento lateral → impacto (datasets/credenciais), com lições da disclosure da Hugging Face (jul/2026).
Segurança
01 / 03

Pacote de Remediação: Defesa de Plataformas IA/ML contra Ataques Agênticos (ADR + Runbook IR + Matriz de Controles)

por João Gabriel

GPT-4oclaude-sonnet-4gemini-2.5-pro
(0)
0 vendas
R$ 49,90