Kommentar
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Den här artikeln beskriver hur du hanterar och roterar certifikat i Azure Kubernetes Service (AKS) kluster för att upprätthålla säker kommunikation mellan komponenter och säkerställa efterlevnad.
Förutsättningar
- Azure CLI version 2.0.77 eller senare. Kontrollera din version med hjälp
az --versionav kommandot . Information om hur du installerar eller uppgraderar finns i Installera Azure CLI.
Kontrollera certifikatets förfallodatum för klustercertifikatutfärdare
Kontrollera utgångsdatumet för klustrets CA-certifikat med kommandot kubectl config view.
kubectl config view --raw -o jsonpath="{.clusters[?(@.name == '')].cluster.certificate-authority-data}" | base64 -d | openssl x509 -text | grep -A2 Validity
Kontrollera förfallodatum för API-servercertifikat
Kontrollera förfallodatumet för API-servercertifikatet med hjälp av följande curl kommando:
curl https://{apiserver-fqdn} -k -v 2>&1 | grep expire
Kontrollera förfallodatum för VMSS-agentens nodcertifikat
Kontrollera förfallodatumet för agentnodcertifikatet för skalningsuppsättningen för virtuella maskiner med kommandot az vmss run-command invoke.
az vmss run-command invoke \
--resource-group <node-resource-group> \
--name <vmss-name> \
--command-id RunShellScript \
--instance-id 1 \
--scripts "openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -enddate" \
--query "value[0].message"
Kontrollera förfallodatum för fristående VM-certifikat
Kontrollera förfallodatumet för en fristående virtuell dator med kommandot az vm run-command invoke .
az vm run-command invoke \
--resource-group <resource-group> \
--name <vm-name> \
--command-id RunShellScript \
--scripts "openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -enddate" \
--query "value[0].message"
Rotera klustrets CA-certifikat manuellt
När du byter ut klustrets CA-certifikat uppdateras även följande underliggande certifikat:
- Tjänstkontotoken (SA)
- API-servercertifikat
- Kubelet-klientcertifikat
- Kubelet-servercertifikat (om kubelet som hanterar certifikatrotation är aktiverat i klustret)
Varning
När du roterar dina certifikat med az aks rotate-certs skapas alla dina noder, VM-skalningsuppsättningar och diskar på nytt. Den här processen kan orsaka upp till 30 minuters stilleståndstid för ditt AKS-kluster. Om kommandot misslyckas innan det slutförs använder du kommandot az aks show för att kontrollera att klustrets status visas som Certificate Rotating. Om klustret är i ett feltillstånd, kör az aks rotate-certs för att rotera dina certifikat igen.
Anslut till klustret med kommandot
az aks get-credentials.az aks get-credentials --resource-group <resource-group> --name <cluster-name>Rotera alla certifikat, certifikatutfärdare och serviceavtal i klustret med hjälp av
az aks rotate-certskommandot .az aks rotate-certs --resource-group <resource-group> --name <cluster-name>Kontrollera att de gamla certifikaten inte längre är giltiga med något
kubectlkommando, till exempelkubectl get nodes.kubectl get nodesOm du inte har uppdaterat certifikaten som används av
kubectlvisas ett fel som liknar följande exempelutdata:Unable to connect to the server: x509: certificate signed by unknown authority (possibly because of "crypto/rsa: verification error" while trying to verify candidate authority certificate "ca")
Uppdatera kubectl klientcertifikat
Uppdatera klientcertifikatet med kommandot
az aks get-credentialsmed flaggan--overwrite-existing.az aks get-credentials --resource-group <resource-group> --name <cluster-name> --overwrite-existingKontrollera att certifikaten har uppdaterats med hjälp av
kubectl getkommandot .kubectl get nodesNote
Om du har tjänster som körs ovanpå AKS kan du behöva uppdatera deras certifikat.
Kontrollera att kubelet som betjänar certifikatrotation är aktiverat
Varje nod med funktionen aktiverad får automatiskt etiketten kubernetes.azure.com/kubelet-serving-ca=cluster. Kontrollera att etiketterna är inställda genom att använda kommandot kubectl get nodes -L kubernetes.azure.com/kubelet-serving-ca.
kubectl get nodes -L kubernetes.azure.com/kubelet-serving-ca
Kontrollera att kubelet går igenom TLS-bootstrappingprocessen
När du aktiverar den här funktionen går varje kubelet som kör noderna igenom TLS-startprocessen.
Kontrollera att bootstrapping-processen pågår med kommandot kubectl get för att hämta de aktuella CSR-objekten i klustret.
kubectl get csr --field-selector=spec.signerName=kubernetes.io/kubelet-serving
Alla aktuella CSR:er är i tillståndet Approved,Issued, vilket innebär att CSR:n godkändes och att ett signerat certifikat utfärdades. Server-CSR:er har ett undertecknarnamn på kubernetes.io/kubelet-serving. Ett exempel:
NAME AGE SIGNERNAME REQUESTOR REQUESTEDDURATION CONDITION
csr-1ab2c 113s kubernetes.io/kube-apiserver-client-kubelet system:bootstrap:abcd1e none Approved,Issued
csr-defgh 111s kubernetes.io/kubelet-serving system:node:akswinp1000000 none Approved,Issued
csr-ij3kl 46m kubernetes.io/kubelet-serving system:node:akswinp2000000 none Approved,Issued
csr-mn4op 46m kubernetes.io/kube-apiserver-client-kubelet system:bootstrap:ab1cde none Approved,Issued
Kontrollera att kubelet använder ett certifikat som hämtats från serverns TLS-start
Kontrollera om nodens kubelet använder ett servercertifikat som signerats av klustercertifikatutfärdaren med kommandot [kubectl debug][kubectl-debug] för att undersöka innehållet i kubelets PKI-katalog.
kubectl debug node/<node> -ti --image=mcr.microsoft.com/azurelinux/base/core:3.0 -- ls -l /host/var/lib/kubelet/kubelet-server-current.pem
Om det finns en kubelet-server-current.pem symlink startar kubelet och roterar sitt eget servercertifikat via TLS-startprocessen och signeras av klustercertifikatutfärdaren.
Inaktivera kubelet som betjänar certifikatrotation
Inaktivera kubelet som betjänar certifikatrotation genom att uppdatera nodpoolen
az aks nodepool updatemed kommandot och ange taggenaks-disable-kubelet-serving-certificate-rotation=true.az aks nodepool update \ --cluster-name <cluster-name> \ --resource-group <resource-group> \ --name <node-pool-name> \ --tags aks-disable-kubelet-serving-certificate-rotation=trueÅterskapa noderna med hjälp av en nodbilduppgradering eller genom att skala poolen till noll instanser och sedan justera tillbaka till önskat värde.
Relaterat innehåll
Mer information om AKS-säkerhet finns i följande artiklar: