Skip to main content

Atualizar uma repository secret do ArgoCD

Use este procedimento quando o ArgoCD perder acesso a um repositório privado — por exemplo, após rotacionar um token de acesso pessoal (PAT) ou chave SSH.


Pré-requisitos​

  • kubectl configurado com acesso ao cluster
  • O novo token ou chave SSH disponível

Procedimento​

1. Identificar a secret existente​

As repository secrets ficam no namespace argocd e possuem a label argocd.argoproj.io/secret-type: repository.

kubectl get secrets -n argocd -l argocd.argoproj.io/secret-type=repository

Identifique o nome da secret correspondente ao repositório que deseja atualizar.

2. Verificar o conteúdo atual​

kubectl get secret <nome-da-secret> -n argocd -o yaml

Os valores são encodados em base64. Para decodificar:

kubectl get secret <nome-da-secret> -n argocd \
-o jsonpath='{.data.url}' | base64 -d

3. Atualizar o token ou chave​

Para autenticação via HTTPS (token):

kubectl patch secret <nome-da-secret> -n argocd \
--type='json' \
-p='[{"op": "replace", "path": "/data/password", "value": "'$(echo -n "<novo-token>" | base64)'"}]'

Para autenticação via SSH (chave privada):

kubectl patch secret <nome-da-secret> -n argocd \
--type='json' \
-p='[{"op": "replace", "path": "/data/sshPrivateKey", "value": "'$(base64 -w0 < ~/.ssh/id_ed25519)'"}]'

4. Forçar o ArgoCD a recarregar​

O ArgoCD detecta a mudança automaticamente em alguns segundos. Se o erro persistir, force o refresh manualmente:

kubectl rollout restart deployment argocd-repo-server -n argocd

5. Verificar​

No ArgoCD UI, acesse Settings → Repositories e confirme que o status do repositório está Successful. Alternativamente:

kubectl logs -n argocd -l app.kubernetes.io/name=argocd-repo-server --tail=50

Criar uma nova secret do zero​

Se a secret não existir, crie-a com o seguinte manifesto:

apiVersion: v1
kind: Secret
metadata:
name: repo-<nome-descritivo>
namespace: argocd
labels:
argocd.argoproj.io/secret-type: repository
type: Opaque
stringData:
type: git
url: https://github.com/Invasor-de-Fronteiras/<repo>.git
username: <usuario-github>
password: <token>
kubectl apply -f repo-secret.yaml
warning

Nunca commite esse arquivo. Use-o apenas localmente e delete após aplicar.


argocd-repo-homelab​

Comando pronto para atualizar o token do repositório homelab:

kubectl patch secret argocd-repo-homelab -n argocd \
--type='json' \
-p='[{"op": "replace", "path": "/data/password", "value": "'$(echo -n "<novo-token>" | base64 -w0)'"}]'

Substitua <novo-token> pelo PAT gerado no GitHub com permissão repo.

warning

Nunca compartilhe o token em chats, issues ou logs. O GitHub possui secret scanning ativo e revoga automaticamente tokens expostos publicamente — inclusive em ferramentas de IA. Gere o token e execute o comando acima diretamente no terminal.


Referência​