// the problem
Nobody knows who holds the admin kubeconfig.
The usual setup is one admin kubeconfig passed around, or a ServiceAccount made by hand for each person. Nobody knows who uses it or when it expires. kubelatch puts an owner, an expiry and a record behind every credential.
Without kubelatch
admin.conf
# shared in #platform, copied to five laptops
users:
- name: kubernetes-admin
user:
client-certificate-data: LS0tLS1CRUdJTi…
client-key-data: LS0tLS1CRUdJTiBSU0Eg…
- Nobody knows who has a copy.
- It stays valid as long as its certificate: a year or more.
- The API server sees
kubernetes-admin for everyone.
- Taking it back means rotating credentials on the whole cluster.
With kubelatch
credentials
owner name cluster expires last used
ana laptop prod-eu in 12 d 2 min ago
luis k9s all in 27 d 1 h ago
bot:shop-api github-actions prod-eu in 58 min just now
- Every credential has an owner and a name.
- It expires on its own, in days, not years.
- Every request is recorded as that person.
- Revoke it and the next
kubectl gets 401.
// what you get
Access you can explain to an auditor.
A credential of your own
A klt_ token and its kubeconfig for each person or pipeline, with an expiry, revoked instantly. GitHub Actions workflows get theirs without storing a secret in GitHub.
kubeconfig · klt_3fQ9… · expires in 30 d
Tiered permissions
Six fixed tiers over a namespace or a whole cluster. kubelatch keeps each cluster's RBAC in sync, so nobody writes a RoleBinding by hand.
viewer · developer · debugger · secrets-reader · admin · cluster-admin
Inventory
Who each credential belongs to, which clusters it reaches, until when it is valid and when it was last used.
ana · laptop · 12 d left · used 2 min ago
Per-request audit
Every request to the API server with who, what, where and the result, including exec and port-forward.
ana exec web-7f9c (shop) 101
Any cluster
Managed or self-managed, it works the same: kubelatch only uses the standard Kubernetes API.
EKS · GKE · AKS · kubeadm · k3s · RKE2 · Talos
One binary and Postgres
A web UI, an API, the proxy and the RBAC reconciler in a single Go binary. Sign in with GitHub, or with local accounts.
kubelatch + postgres
// how it works
kubectl talks to kubelatch. kubelatch talks to your cluster as you.
-
An admin grants a tier
For example developer on the shop namespace of prod-eu, with an expiry if it should end.
-
You sign in and get a kubeconfig
Issue a credential in the web UI and use it with kubectl, k9s, Lens or Helm. Nothing to install.
-
Every request goes through kubelatch
It checks the token, forwards the request to the cluster impersonating you, and records it.
kubectl, k9s, Helm, CIklt_ token
own credential
kubelatchproxy · RBAC · audit
acts as you
Your clustersKubernetes API
works with
EKSGKEAKSkubeadmk3sRKE2Talos