Skip to main content

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

  1. Secrets desatualizados persistentes: Um ou mais workloads (Pods, Deployments, StatefulSets, Jobs ou CronJobs), em qualquer cluster ou namespace, continuam a utilizar a Secret contendo a credencial antiga do registry.
  2. 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

  1. 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.

  2. Atualização da credencial e reinício das workloads

    Atualização da Secret central:
    Atualize, em todos os namespaces relevantes, a Secret do tipo kubernetes.io/dockerconfigjson contendo 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>