Kubernetes TokenRequest ist eine API des API-Servers, mit der ein ServiceAccount kurzlebige, an eine Zielgruppe gebundene JSON-Web-Tokens (JWT) anfordern kann. Anders als frühere, nie ablaufende Token-Secrets sind diese Tokens an ein Objekt wie einen Pod gebunden, laufen automatisch ab und werden vom Kubelet rechtzeitig erneuert.
So funktioniert das TokenRequest
- Ein Client (etwa der Kubelet oder ein Operator) schickt eine TokenRequest an den API-Server und nennt dabei eine
audience(Zielgruppe) und eine gewünschte Gültigkeitsdauer. - Standardmäßig läuft ein Token nach einer Stunde ab; mit
expirationSecondslässt sich die Lebensdauer anpassen. - Das Token ist an den ausstellenden ServiceAccount gebunden und wird vom API-Server bei jeder Anfrage anhand der konfigurierten Audiences geprüft.
- Wird das Token über die Bound-ServiceAccount-Token-Volume-Projektion in einen Pod eingehängt, endet seine Gültigkeit spätestens mit dem Pod – der Kubelet rotiert es vor dem Ablauf automatisch.
Token in der Praxis
# Token für einen ServiceAccount im Namespace anfordern (Kubernetes 1.24+)
kubectl -n monitoring create token prometheus --duration=6h
Das Kommando kubectl create token nutzt intern die TokenRequest-API und ist seit Kubernetes 1.24 die empfohlene Alternative zu statischen Secret-Tokens, die nie ablaufen und nicht rotiert werden. Wer die Rechte eines ServiceAccount ansehen will, nutzt RBAC; die Cluster-Identität für Workloads kann alternativ über OIDC laufen.
Praxis-Tipps
- Für Pods die Volume-Projektion nutzen, nicht manuell erzeugte Secret-Tokens weiterreichen.
- Kurze Lebensdauern wählen – Tokens lassen sich jederzeit neu ausstellen.
- Die Issuer- und Audience-Konfiguration des API-Servers (
--service-account-issuer,--service-account-audiences) muss zur Validierung passen.
Verwandte Grundlagen: CertificateSigningRequest, Kubernetes, kubectl-Befehle.