Kubernetes CertificateSigningRequest (CSR) ist ein API-Objekt der Gruppe certificates.k8s.io, mit dem ein Client – typischerweise ein Node oder ein Benutzer – ein von der Cluster-CA signiertes X.509-Zertifikat beantragt. Ein Administrator oder ein automatischer Prozess genehmigt die Anfrage; erst danach stellt der Cluster das Zertifikat aus.

So läuft eine Zertifikatsausstellung ab

  • Der Client erzeugt lokal einen privaten Schlüssel und einen Signaturantrag (CSR) mit dem gewünschten Common Name.
  • Er legt das Objekt über die API an – zum Beispiel mit kubectl create -f csr.yaml.
  • Ein Mensch oder eine Automatik genehmigt die Anfrage: kubectl certificate approve <name>.
  • Der kube-controller-manager signiert das Zertifikat mit der Cluster-CA; der Client liest es aus dem Status des CSR-Objekts.

Der signerName legt fest, wer und wofür signieren darf – etwa kubernetes.io/kube-apiserver-client-kubelet für Kubelet-Client-Zertifikate. Ohne Genehmigung bleibt der CSR im Status Pending; eine abgelehnte Anfrage (kubectl certificate deny) wird nie signiert.

TLS-Bootstrapping der Nodes

Beim TLS-Bootstrapping startet ein neuer Node mit einem einmaligen Bootstrap-Token, erzeugt als Mitglied der Gruppe system:bootstrappers einen CSR und erhält nach Genehmigung ein Node-Zertifikat. Die spätere Zertifikats-Erneuerung wird üblicherweise automatisch genehmigt und vom Kubelet vor Ablauf angefordert – ein manueller Eingriff ist dann nicht mehr nötig.

Verwandte Grundlagen: TokenRequest, OIDC, kube-apiserver, RBAC.