Answer
Because plaintext secrets can't live in Git, common patterns are: Bitnami Sealed Secrets (encrypt secrets that only the in-cluster controller can decrypt), the External Secrets Operator (sync from Vault/AWS/GCP secret managers), or SOPS with age/KMS to store encrypted secrets in Git. ArgoCD applies the encrypted/referencing resource and the operator resolves the real value.
# SealedSecret committed to Git; controller decrypts in-cluster
kind: SealedSecret
spec:
encryptedData:
password: AgB2b3c...Real-world example The team commits SealedSecrets to Git; only the cluster's controller can decrypt them, keeping the repo safe to share.