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 expirationSeconds lä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.