DevOps / ArgoCD interview questions
How does ArgoCD integrate with external secret management tools like Vault or Sealed Secrets?
ArgoCD deliberately does not manage secrets natively — it stores no sensitive values and recommends keeping plaintext secrets out of Git. Two widely adopted patterns bridge ArgoCD with secret management:
1. Sealed Secrets (Bitnami)
Sealed Secrets encrypts a Kubernetes Secret into a SealedSecret CRD safe to commit to Git. The sealed-secrets-controller decrypts it back into a standard Secret using a cluster-side private key. From ArgoCD's perspective, a SealedSecret is just another manifest to sync.
kubeseal --fetch-cert > pub-cert.pem kubectl create secret generic db-pass --from-literal=password=s3cr3t \ --dry-run=client -o yaml | kubeseal --cert pub-cert.pem -o yaml > sealed-db-pass.yaml # Commit sealed-db-pass.yaml to Git; ArgoCD syncs it; controller decrypts
2. External Secrets Operator (ESO)
ESO introduces ExternalSecret and SecretStore CRDs. You commit these CRDs (which contain no secret values — only references like Vault paths or AWS Secrets Manager ARNs) to Git. ArgoCD syncs them; ESO fetches actual values from the external provider and creates a native Kubernetes Secret.
| Dimension | Sealed Secrets | ESO |
|---|---|---|
| Secret storage | Encrypted ciphertext in Git | External vault; only references in Git |
| Rotation support | Manual re-seal required | Automatic via refreshInterval |
| Multi-provider | No (cluster key only) | Yes (Vault, AWS, GCP, Azure, etc.) |
More Related questions...