Kloak is a Kubernetes controller that replaces real secrets with placeholders and uses eBPF to inject them at TLS connection time, per allowed host.
Key Takeaways
Kloak swaps secrets in K8s workloads for harmless placeholder “kloaked secrets”; the real values never live in pod memory or env vars at rest.
eBPF intercepts outbound TLS handshakes and substitutes the real secret only when the destination matches an allowed host list.
Currently supports OpenSSL 3.0-3.5 (static and dynamic linking) and go-tls (Go 1.25 and 1.26); GnuTLS and BoringSSL support is planned.
The model eliminates the standard attack path where an attacker with pod shell access or in-cluster read permissions can dump live secrets.
Hacker News Comment Review
The eBPF-at-TLS approach draws comparisons to API proxy/gateway patterns, where a sidecar adds auth transparently; commenters noted Kloak operates deeper in the stack, at the library level rather than the network edge.
There is an open design question around string-replacement edge cases: if a placeholder value appears legitimately in a request body that is not a secret, Kloak could incorrectly substitute it, and the thread did not surface a resolution.
Commenters flagged relevance to agentic AI workflows, where LLM-driven processes need credentials but keeping those credentials out of the model context or prompt pipeline is an unsolved ops problem.
Notable Comments
@anthonyskipper: flags cloud-managed K8s fit (AKS/EKS) as the key open question for production adoption.
@jackdecker: proposes extending the pattern with LD_PRELOAD to intercept getenv so secrets never enter process memory even transiently.