Ce face kubectl certificate și CertificateSigningRequest
Un CertificateSigningRequest (CSR) este o cerere ca autoritatea de certificare a clusterului să semneze un certificat. Cu semnatarul kubernetes.io/kube-apiserver-client, certificatul rezultat servește la autentificarea unui utilizator: câmpul CN devine numele utilizatorului, iar fiecare O un grup, folosite apoi în regulile RBAC.
kubectl certificate approve aprobă cererea, iar deny o respinge; după aprobare, certificatul semnat apare în status.certificate. Kubernetes nu poate revoca certificatele de client, deci alege o durată scurtă cu expirationSeconds și dă drepturi unui grup, nu direct utilizatorului.
Parametri
| Parametru | Descriere |
|---|---|
approve CSR |
Aprobă cererea. |
deny CSR |
Respinge cererea. |
spec.signerName |
Semnatarul: kubernetes.io/kube-apiserver-client pentru utilizatori. |
spec.expirationSeconds |
Durata cerută a certificatului (minimum 600 de secunde). |
spec.usages |
Utilizări; pentru utilizatori client auth. |
kubectl get csr |
Listează cererile și starea lor. |
Exemple
Exemplul 1: Cheie și cerere de certificat pentru Ana
Ana își generează cheia (care nu părăsește calculatorul ei) și o cerere cu numele ana și grupul dezvoltatori.
openssl genrsa -out ana.key 2048
openssl req -new -key ana.key -out ana.csr -subj "/CN=ana/O=dezvoltatori"
kubectl apply -f - <<EOF
apiVersion: certificates.k8s.io/v1
kind: CertificateSigningRequest
metadata:
name: ana
spec:
request: $(base64 < ana.csr | tr -d '\n')
signerName: kubernetes.io/kube-apiserver-client
expirationSeconds: 2592000
usages: ["client auth"]
EOF
Ieșire în terminal
certificatesigningrequest.certificates.k8s.io/ana created
Exemplul 2: Aprobarea și extragerea certificatului
Administratorul aprobă cererea; certificatul semnat se adaugă apoi în kubeconfig-ul Anei.
kubectl certificate approve ana
kubectl get csr ana
kubectl get csr ana -o jsonpath='{.status.certificate}' | base64 -d > ana.crt
kubectl config set-credentials ana --client-key=ana.key --client-certificate=ana.crt --embed-certs=true
Ieșire în terminal
certificatesigningrequest.certificates.k8s.io/ana approved
NAME AGE SIGNERNAME REQUESTOR REQUESTEDDURATION CONDITION
ana 40s kubernetes.io/kube-apiserver-client kubernetes-admin 30d Approved,Issued
User "ana" set.
Greșeli frecvente
- Aprobarea cererilor fără a verifica
CNșiOdin cerere (openssl req -in ana.csr -noout -subject): cineva poate cere un certificat în grupulsystem:masters, cu acces total. - Certificate cu durată de ani pentru oameni: când cineva pleacă din echipă, certificatul rămâne valabil. Folosește durate scurte sau autentificare printr-un furnizor de identitate (OIDC).
Comenzi înrudite
kubectl auth can-i: Verifică dacă tu (sau alt utilizator ori ServiceAccount) ai voie să faci o anumită acțiune în cluster, conform regulilor RBAC.kubectx și kubens: Unelte mici pentru schimbarea rapidă a contextului (clusterului) și a namespace-ului implicit din kubeconfig.