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.