DevOpsInterviewPrep logo
DevSecOps & Supply Chain Security / 06
hardNewRazorpayJPMorgan ChaseGoldman Sachs

Sealed Secrets, External Secrets, SOPS or Vault CSI? Pick one for a regulated environment.

Four tools that solve the same sentence and differ on one question: where does the plaintext end up? In a regulated environment that question decides the answer.

Updated Sep 2026 · Grounded in researched DevOps, SRE and platform engineering interview loops, written to a senior-engineer editorial bar, and never padded to hit a word count.

TL;DR: They differ on where plaintext lands and who can read it. Sealed Secrets and External Secrets both create a normal Kubernetes Secret, so their values enter the API object store, protected at rest only when storage encryption is configured. SOPS encrypts general-purpose files; a Kubernetes deployment may render those into Secrets. The Vault CSI driver mounts secrets into the pod filesystem without creating a Secret object when optional Secret synchronization is disabled, which is why it wins when etcd is in scope for audit.

How to approach it

State the axis that separates them before comparing features, then answer for the environment the question specified. Regulated is doing work in that sentence: it means etcd contents and access audit are in scope.

A strong answer

The axis is where plaintext exists and who can read it. Everything else is ergonomics.

rendering diagram…

Sealed Secrets encrypts a value with a cluster-specific public key, so the sealed form is safe to commit to Git. A controller in the cluster decrypts it and creates an ordinary Secret. The decrypted Secret enters API storage, with at-rest protection depending on cluster encryption, and anyone with get secrets in that namespace can read it. The ciphertext is bound to one cluster, so disaster recovery means either backing up the sealing key or resealing everything, which is a real operational cost people discover late.

External Secrets Operator uses an external source of truth: it reads from a real secrets manager (Vault, AWS Secrets Manager, Azure Key Vault) and syncs the value into a Kubernetes Secret. Configured refresh policies propagate upstream changes; verify the interval and application reload path. The Secret is persisted in API storage; encryption at rest depends on the cluster.

SOPS encrypts individual values inside a YAML or JSON file using supported key services or recipients such as KMS, age or PGP, so the file is readable in Git with only the values hidden and diffs stay meaningful. It is portable across clusters and clouds, which Sealed Secrets is not. It can also decrypt non-Kubernetes configuration; only a workflow creating a Secret puts its values in Kubernetes storage.

Vault CSI provider takes a different path. The secret is fetched at pod start and mounted as a file in a tmpfs volume. With optional sync-to-Secret disabled, no Kubernetes Secret object is created. Confirm the Vault provider’s supported secret engines, lease/renewal behavior and rotation version before relying on dynamic credentials. Enabling Secret synchronization creates a persisted copy.

For a regulated environment I would take Vault with the CSI provider. The reasoning: etcd contents are in audit scope, Kubernetes Secrets are only base64-encoded at rest unless you have configured encryption at rest with a supported encryption provider, and RBAC on secrets is coarse. Keeping secret values out of etcd reduces exposure through API storage; mounted files and node access still need controls. Vault also gives per-access audit logging and dynamic short-lived credentials, which is usually what the auditor actually wants: not "the secret is encrypted" but "show me who read it and when, and prove it expires".

The costs are real and should be stated: Vault is infrastructure you now operate, including unseal and disaster recovery, and configured Secrets Store CSI auto-rotation can update mounted files without a pod restart. The application must reread them; environment variables and subPath mounts do not automatically refresh. CSI rotation.

Where I would not choose it: a small team with no Vault and no regulatory driver is better served by External Secrets against their cloud provider's manager, which gets rotation and central management for a fraction of the operational load. Choosing Vault because it is the sophisticated answer is how teams acquire a system nobody can unseal at 3am.

What interviewers probe next

"Are Kubernetes Secrets encrypted?" Base64 is encoding, not encryption. At rest they are plaintext in etcd unless EncryptionConfiguration with a supported encryption provider is enabled, which is off by default on self-managed clusters.

"How do you handle rotation?" Upstream in the manager, with the sync or lease propagating. The hard part is the application picking it up, which needs a reload path or a restart.

"What about secrets in CI?" OIDC federation for cloud access so no long-lived cloud key needs to be stored, and short-lived tokens for everything else.

Common mistakes

Comparing convenience without tracing whether the selected workflow creates a Kubernetes Secret.

Treating base64 encoding as encryption.

Choosing Vault for a team that cannot operate it, which trades a secrets problem for an availability problem.

That one was free, and so are 10 answers per topic without an account. Signing in doubles that to 20, keeps your bookmarks, and tracks which topics you keep getting wrong.one Google click · no card · nothing to cancel
HOW DID IT GO?
0
UP NEXT ON YOUR JOURNEY
DISCUSSION · 0

Nothing here yet. Say how you would answer it.