CI/CD & GitOps Practical By Samson Tanimawo, PhD Published Oct 26, 2025 4 min read

GitOps Secret Management

Secrets in git? No. The pattern.

Idea

GitOps says "the desired state of the system is what is in git." That works beautifully for declarative resources like Deployments and Services. It runs into a wall at secrets, because the most basic security rule is "do not commit secrets to git." The reconciliation between these two principles produces the GitOps secret management pattern: encrypted secrets, decrypted only at deploy.

The two main implementations:

The pattern is widely adopted because it gives you the GitOps benefits (declarative state, reviewable changes, audit trail) without putting plaintext credentials in source control. The trade-off is a real but bounded operational complexity around key management.

Rotation

Encrypting at rest in git is the floor. The ceiling is automatic rotation: secrets that change on a schedule, with no human in the loop, sourced from a secret store that is the canonical owner. The pattern that does this well is External Secrets Operator (ESO).

The combination of encrypted-in-git for static secrets and ESO for dynamic ones covers most production needs. Each pattern has a place; treating them as alternatives instead of complementary tools is a common adoption mistake.

Avoid

The shortest section is also the most important one. Whatever else you do with secrets, do not do this.

The pattern is well-established and the tools are mature. Nova AI Ops integrates with SOPS, Sealed Secrets, and External Secrets Operator deployments, watches for accidental plaintext-secret commits via integration with secret scanners, and surfaces secret rotation cadence per service so the security and reliability teams have one view of how the credential lifecycle is actually working.