Intermitência 401 Unauthorized - Pós-reset de senha
Problema
Este guia foca na resolução de problemas de intermitência (falha/sucesso) de 401 Unauthorized que ocorrem após a alteração da senha ou token de um usuário do Container Registry.
O comportamento "ora funciona, ora falha" é um sintoma claro de que existem tanto credenciais válidas (novas) quanto inválidas (antigas) sendo usadas simultaneamente no ambiente.
Causas possíveis
- Secrets desatualizados persistentes: Um ou mais workloads (
Pods,Deployments,StatefulSets,JobsouCronJobs), em qualquer cluster ou namespace, continuam a utilizar a Secret contendo a credencial antiga do registry. - Impacto na autenticação (mecanismo de congelamento): Tentativas repetidas de autenticação com a credencial inválida ativam um mecanismo de atraso temporário (cerca de 1,5 s) no processamento do login. Este atraso afeta o desempenho da autenticação de todos os usuários que tentam se autenticar no mesmo período, gerando a intermitência 401 percebida no cluster.
Diagnóstico
Para resolver a intermitência, é necessário localizar workloads que ainda utilizam credenciais antigas.
Identificação da origem da falha
- É necessário localizar qual workload está usando credencial antiga.
- O serviço de registro não expõe qual Pod/Host causou o 401. Caso necessário, é possível solicitar ao time de operações da Magalu Cloud os endereços IP dos nós que estão realizando tentativas inválidas.
- Realize uma auditoria completa em todos os clusters e namespaces, revisando Deployments, Jobs e StatefulSets criados antes do reset da senha, e conferindo a Secret usada por cada um.
Solução
Procedimento: eliminar todas as credenciais antigas
-
Identificação da workload com credencial antiga
Revise cada workload, cluster e namespace para localizar qualquer recurso que ainda utilize a Secret com a credencial antiga. -
Atualização da credencial e reinício das workloads
Atualização da Secret central:
Atualize, em todos os namespaces relevantes, a Secret do tipokubernetes.io/dockerconfigjsoncontendo a nova credencial.Forçar rollout/redeploy das workloads:
Todos os Pods afetados devem ser reiniciados para que o runtime releia a Secret atualizada.Deployments / StatefulSets:
kubectl rollout restart deployment <nome-do-deployment> -n <namespace>