← Back to Kube-Zen

Zero-Knowledge Secret Manager for Kubernetes

Kubernetes-native secret manager with Zero-Knowledge encryption for GitOps workflows

Coming SoonOpen Source

What is zen-lock?

zen-lock is a Kubernetes controller that implements Zero-Knowledge secret storage. ZenLock CRDs store only ciphertext (source-of-truth). During Pod injection, zen-lock decrypts in the webhook and creates an ephemeral Kubernetes Secret containing plaintext, which is mounted into the Pod.

Protect ephemeral Secrets via RBAC and etcd encryption-at-rest. Perfect for GitOps workflows where encrypted manifests can be safely committed to Git.

Key Features

πŸ”’

Zero-Knowledge

ZenLock CRDs store only ciphertext - API server/etcd cannot read the encrypted payload

⚑

Ephemeral Lifecycle

Decrypted secrets stored in ephemeral Kubernetes Secrets, cleaned up when Pods terminate

πŸ“

GitOps Ready

Encrypted manifests can be safely committed to Git repositories

☸️

Kubernetes-Native

Uses standard CRDs and Mutating Webhooks - no external databases required

πŸ”

Age Encryption

Uses modern, easy-to-use encryption (age) by default

βœ…

AllowedSubjects

Restrict secret access to specific ServiceAccounts for fine-grained control

Quick Start

1

Generate Keys

zen-lock keygen --output private-key.age
2

Encrypt a Secret

zen-lock encrypt \
  --pubkey $(cat public-key.age) \
  --input secret.yaml \
  --output encrypted-secret.yaml
3

Deploy and Inject

kubectl apply -f encrypted-secret.yaml
# Annotate Pod with zen-lock/inject: "secret-name"

Get Started

zen-lock is coming soon! Check out the repository and feel free to contribute.