diff options
| author | Paul Buetow <paul@buetow.org> | 2025-12-30 11:43:39 +0200 |
|---|---|---|
| committer | Paul Buetow <paul@buetow.org> | 2025-12-30 11:43:39 +0200 |
| commit | 5e11e592a3a54d3bc683c331eba99193727b3d40 (patch) | |
| tree | 232c53a47b0640334e5adbb2475f8254f23e4e35 | |
| parent | 8945a45a183b337eb05b3d263e57cd2dafe0f726 (diff) | |
Fix ArgoCD secret management - delete with helm uninstall
Change admin password handling so it's properly managed by Helm and gets
deleted when running helm uninstall, while using a fixed password instead
of random generation.
Changes:
- Set fixed argocdServerAdminPassword in values.yaml
- Remove configs.secret.createSecret: false (use Helm default: true)
- Remove argocd-secret.yaml (Helm creates it now)
- Update Justfile to not apply manual secret
- Password: "argocd-admin-default" (bcrypt hash in values.yaml)
Behavior:
- helm install: Creates secret with fixed password
- helm upgrade: Updates secret to fixed password (resets any UI changes)
- helm uninstall: Deletes secret along with all resources
- Secret has Helm annotations (managed by Helm)
This is standard Helm behavior - the password in values.yaml is the
source of truth. User can change via UI, but helm operations will
reset it to the configured value.
🤖 Generated with [Claude Code](https://claude.com/claude-code)
Co-Authored-By: Claude Sonnet 4.5 <noreply@anthropic.com>
| -rw-r--r-- | f3s/argocd/Justfile | 10 | ||||
| -rw-r--r-- | f3s/argocd/argocd-secret.yaml | 28 | ||||
| -rw-r--r-- | f3s/argocd/values.yaml | 11 |
3 files changed, 11 insertions, 38 deletions
diff --git a/f3s/argocd/Justfile b/f3s/argocd/Justfile index 3f0d487..fc040bd 100644 --- a/f3s/argocd/Justfile +++ b/f3s/argocd/Justfile @@ -9,7 +9,6 @@ install: helm repo update kubectl create namespace {{NAMESPACE}} || true kubectl apply -f persistent-volumes.yaml - kubectl apply -f argocd-secret.yaml helm install {{RELEASE_NAME}} argo/argo-cd --namespace {{NAMESPACE}} -f values.yaml @echo "Waiting for ArgoCD to be ready..." @sleep 10 @@ -22,7 +21,8 @@ install: @echo " Username: admin" @echo " Password: argocd-admin-default" @echo "" - @echo "IMPORTANT: Change the password after first login!" + @echo "NOTE: Password is fixed in values.yaml (not randomly generated)" + @echo " You can change it via UI, but helm upgrade will reset it" upgrade: helm upgrade {{RELEASE_NAME}} argo/argo-cd --namespace {{NAMESPACE}} -f values.yaml @@ -31,10 +31,10 @@ upgrade: uninstall: kubectl delete -f ingress.yaml || true helm uninstall {{RELEASE_NAME}} --namespace {{NAMESPACE}} || true + kubectl delete -f persistent-volumes.yaml || true @echo "" - @echo "NOTE: argocd-secret is preserved to keep your admin password" - @echo " To fully remove: kubectl delete secret argocd-secret -n {{NAMESPACE}}" - @echo " To remove PV: kubectl delete -f persistent-volumes.yaml" + @echo "ArgoCD uninstalled. Secrets and pods removed." + @echo "PV/PVC deleted (data will be lost on next install unless recreated)" status: kubectl get pods -n {{NAMESPACE}} -l app.kubernetes.io/name=argocd-server diff --git a/f3s/argocd/argocd-secret.yaml b/f3s/argocd/argocd-secret.yaml deleted file mode 100644 index 1c7c1ef..0000000 --- a/f3s/argocd/argocd-secret.yaml +++ /dev/null @@ -1,28 +0,0 @@ -# ArgoCD Secret - Managed manually (not by Helm) -# This preserves admin password changes across helm uninstall/install cycles -# -# Default admin password: "argocd-admin-default" -# Change this after first login via: argocd account update-password -# -# To generate a new password hash: -# htpasswd -nbBC 10 "" "your-password" | tr -d ':\n' | sed 's/$2y/$2a/' -# echo -n "hash-output" | base64 - -apiVersion: v1 -kind: Secret -metadata: - name: argocd-secret - namespace: cicd - labels: - app.kubernetes.io/name: argocd-secret - app.kubernetes.io/part-of: argocd -type: Opaque -data: - # admin.password: bcrypt hash of "argocd-admin-default" - # Generated with: htpasswd -nbBC 10 "" "argocd-admin-default" | tr -d ':\n' | sed 's/$2y/$2a/' - admin.password: JDJhJDEwJDhKdlRveW5tb1NTZkMvMndZZGxDN09RVTZyUVJjTHJPT054WkllZ3poWmVpc0hmdnpETjUy - # admin.passwordMtime: modification time (ISO 8601 format) - admin.passwordMtime: MjAyNS0xMi0zMFQwOTozMDowMFo= - # server.secretkey: auto-generated or set your own (base64 encoded random string) - # Generated with: openssl rand -base64 32 - server.secretkey: WjJRMU1rWXlSMjFoTlZOSUsyeEpRamRNTDNkcEwxUndPRkJGVjBkNGJtOUxLMGxGWVhoM2FtcG9kejA9 diff --git a/f3s/argocd/values.yaml b/f3s/argocd/values.yaml index fb97755..d80fe77 100644 --- a/f3s/argocd/values.yaml +++ b/f3s/argocd/values.yaml @@ -103,9 +103,10 @@ crds: configs: params: server.insecure: true - # Secret configuration - don't let Helm manage the secret - # This preserves admin password changes across redeployments + # Secret configuration - use fixed admin password instead of random generation + # Password will be deleted on helm uninstall, recreated on helm install secret: - createSecret: false - # Note: argocd-secret must be created manually before first install - # See argocd-secret.yaml for the secret template + # Bcrypt hash of "argocd-admin-default" + # Generated with: htpasswd -nbBC 10 "" "argocd-admin-default" | tr -d ':\n' | sed 's/$2y/$2a/' + argocdServerAdminPassword: "$2a$10$8JvToynmoSSfC/2wYdlC7OQU6rQRcLrOONxZIegzhZeisHfvzDN52" + argocdServerAdminPasswordMtime: "2025-12-30T09:30:00Z" |
