Delen via


Certificaatrotatie in Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) gebruikt certificaten voor verificatie met veel van de onderdelen. U moet deze certificaten regelmatig roteren om beveiligings- of beleidsredenen. In dit artikel leest u hoe certificaatrotatie werkt in uw AKS-cluster.

Belangrijk

Vanaf 30 maart 2026 biedt Azure Kubernetes Service (AKS) geen ondersteuning meer voor de aks-disable-kubelet-serving-certificate-rotation=true knooppuntgroeptag om KSCR (Kubelet Serving Certificate Rotation) uit te schakelen. U kunt nieuwe knooppuntgroepen maken met behulp van deze tag, maar AKS respecteert deze niet. Dit gedrag betekent dat de knooppuntgroepen worden gemaakt met KSCR ingeschakeld. Voor bestaande knooppuntgroepen wordt KSCR automatisch ingeschakeld bij de volgende reimagebewerking. Voor deze datum kunt u uw knooppuntgroepen bijwerken met behulp van de opdracht [az aks nodepool update][az-aks-nodepool-update] met de aks-disable-kubelet-serving-certificate-rotation=true tag. Om u voor te bereiden op de verwijdering, moet u uw workloads bijwerken met het juiste certificaatpad. Zie het probleem met Retirement GitHub voor meer informatie. Als u op de hoogte wilt blijven van aankondigingen en updates, volg de AKS-release-opmerkingen.

Vereiste voorwaarden

  • Voor dit artikel is Azure CLI versie 2.0.77 of hoger vereist. Controleer uw versie met behulp van de az --version opdracht. Als u Azure CLI 2.0 wilt installeren of upgraden, raadpleegt u Azure CLI 2.0 installeren.

  • Configureer kubectl om verbinding te maken met uw AKS-cluster met behulp van het az aks get-credentials commando:

    az aks get-credentials --resource-group <resource-group> --name <cluster-name>
    

AKS-certificaten, certificeringsinstanties en serviceaccounts

AKS genereert en gebruikt de volgende certificaten, certificeringsinstanties (CA) en serviceaccounts (SA):

  • De AKS-API-server maakt een CA met de naam Cluster-CA, die certificaten ondertekent voor eenrichtingscommunicatie van de API-server naar kubelet.
  • Elke kubelet maakt een AANVRAAG voor certificaatondertekening (CSR), die de cluster-CA ondertekent voor communicatie van de kubelet naar de API-server.
  • De API-aggregator gebruikt de cluster-CA om certificaten uit te geven voor communicatie met andere API's. De API-aggregator kan ook een eigen CA hebben voor het uitgeven van deze certificaten, maar momenteel wordt de cluster-CA gebruikt.
  • Elk agentknooppunt maakt gebruik van een SA-token, dat door de cluster-CA wordt ondertekend.
  • De kubectl client heeft een certificaat voor communicatie met het AKS-cluster.

Microsoft onderhoudt alle certificaten die in deze sectie worden genoemd, met uitzondering van het clustercertificaat.

Vervaldatums van certificaat

Belangrijk

De vervaldatum voor uw certificaten is afhankelijk van wanneer uw AKS-cluster is gemaakt:

  • AKS-clusters die vóór mei 2019 zijn gemaakt, hebben certificaten die na twee jaar verlopen.
  • AKS-clusters die na mei 2019 zijn gemaakt, hebben cluster-CA-certificaten die na 30 jaar verlopen.

U kunt controleren wanneer uw cluster is gemaakt met behulp van de kubectl get nodes opdracht, waarin u de Age agentknooppunten ziet.

Vervaldatum van clustercertificaat controleren

  • Controleer de vervaldatum van het clustercertificaat met behulp van de kubectl config view opdracht.

    kubectl config view --raw -o jsonpath="{.clusters[?(@.name == '')].cluster.certificate-authority-data}" | base64 -d | openssl x509 -text | grep -A2 Validity
    

Vervaldatum van API-servercertificaat controleren

  • Controleer de vervaldatum van het API-servercertificaat met behulp van de volgende curl opdracht:

    curl https://{apiserver-fqdn} -k -v 2>&1 | grep expire
    

De vervaldatum van het knooppuntcertificaat van de virtuele machine (VM) controleren

  • Controleer de vervaldatum van het knooppuntcertificaat van de VM-agent met behulp van de az vm run-command invoke opdracht.

    Belangrijke parameters in deze opdracht: - --resource-group <node-resource-group>: de resourcegroep die het VM-agentknooppunt bevat. - --name <vm-name>: De naam van het VM-agentknooppunt. - --scripts "openssl x509 -in /etc/kubernetes/certs/apiserver.crt -noout -enddate": het script waarmee de vervaldatum van het API-servercertificaat wordt opgehaald dat zich bevindt op /etc/kubernetes/certs/apiserver.crt.

    az vm run-command invoke --resource-group <node-resource-group> --name <vm-name> --command-id RunShellScript --query 'value[0].message' -otsv --scripts "openssl x509 -in /etc/kubernetes/certs/apiserver.crt -noout -enddate"
    

Controleren of het certificaat verloopt voor het azure Virtual Machine Scale Set-agentknooppunt

  • Controleer de vervaldatum van het knooppuntcertificaat van de Azure Virtual Machine Scale Set-agent met behulp van de az vmss run-command invoke opdracht.

    Belangrijke parameters in deze opdracht: - --resource-group <node-resource-group>De resourcegroep die het knooppunt van de Azure Virtual Machine Scale Set-agent bevat. - --name <vmss-name>: de naam van de virtuele machineschaalset van Azure. - --instance-id 1: de instantie-id van het knooppunt van de Azure Virtual Machine Scale Set-agent. - --scripts "openssl x509 -in  /var/lib/kubelet/pki/kubelet-client-current.pem -noout -enddate": Het script waarmee de vervaldatum van het kubelet-clientcertificaat wordt opgehaald dat zich bevindt op /var/lib/kubelet/pki/kubelet-client-current.pem.

    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"
    

Uw clustercertificaten handmatig roteren

  1. Roteren alle certificaten, CA's en SA's in uw cluster met behulp van de az aks rotate-certs opdracht.

    az aks rotate-certs --resource-group <resource-group> --name <cluster-name>
    

    Belangrijk

    Met de az aks rotate-certs opdracht worden alle agentknooppunten, Azure Virtual Machine Scale Sets en schijven opnieuw gemaakt. Deze opdracht kan ook tot 30 minuten downtime veroorzaken voor uw AKS-cluster. Als de opdracht mislukt voordat deze is voltooid, gebruikt u de [az aks show][az-aks-show] opdracht om de status van het cluster te controleren, die Certificate Rotating is. Als het cluster de status Mislukt heeft, voert u de az aks rotate-certs opdracht opnieuw uit om uw certificaten opnieuw te draaien.

  2. Controleer of de oude certificaten niet meer geldig zijn met behulp van een kubectl opdracht. In het volgende voorbeeld wordt de kubectl get nodes opdracht gebruikt:

    kubectl get nodes
    

    Als u de gebruikte certificaten van kubectl niet hebt bijgewerkt, ziet u een fout zoals in de volgende voorbeelduitvoer:

    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")
    
  3. Werk het certificaat bij dat wordt gebruikt met kubectl behulp van de az aks get-credentials opdracht met de --overwrite-existing vlag.

    az aks get-credentials --resource-group <resource-group> --name <cluster-name> --overwrite-existing
    
  4. Controleer of de certificaten zijn bijgewerkt met behulp van de kubectl get opdracht.

    kubectl get nodes
    

Als u services hebt die boven op AKS worden uitgevoerd, moet u mogelijk ook hun certificaten bijwerken.

Het kubelet-servercertificaat vernieuwen

Wanneer u het kubelet-servicecertificaat roteert, staat AKS kubelet server Transport Layer Security (TLS) Bootstrapping toe voor zowel bootstrapping- als roterende servicecertificaten die zijn ondertekend door de cluster-CA.

Beperkingen voor de rotatie van kubelet-certificaten

  • Ondersteund op Kubernetes versie 1.27 en hoger.
  • Niet ondersteund wanneer de knooppuntgroep een momentopname van een knooppuntgroep gebruikt op basis van een knooppuntinstallatiekopie die ouder is dan 202501.12.0.
  • U kunt deze functie niet handmatig inschakelen. Kubelet voor certificaatrotatie is standaard ingeschakeld voor bestaande knooppuntgroepen wanneer ze hun eerste upgrade uitvoeren naar kubernetes versie 1.27 of hoger. Kubelet voor certificaatrotatie is standaard ingeschakeld voor nieuwe knooppuntgroepen met Kubernetes versie 1.27 of hoger. Om te zien of kubelet-serve certificaatrotatie is ingeschakeld in uw regio, controleer dan de AKS-releases.

Controleren of kubelet-certificaatrotatie is ingeschakeld

Elk knooppunt waarvoor de functie is ingeschakeld, krijgt automatisch het label kubernetes.azure.com/kubelet-serving-ca=cluster.

  • Controleer of de labels zijn ingesteld met behulp van de kubectl get nodes -L kubernetes.azure.com/kubelet-serving-ca opdracht.

    kubectl get nodes -L kubernetes.azure.com/kubelet-serving-ca
    

    In de uitvoer moet het label kubernetes.azure.com/kubelet-serving-ca worden weergegeven met de waarde cluster voor elk agentknooppunt.

Verifiëren dat kubelet TLS Bootstrapping werkt

  • Controleer of het opstartproces plaatsvindt met behulp van de kubectl get opdracht.

    kubectl get csr --field-selector=spec.signerName=kubernetes.io/kubelet-serving
    

    In de uitvoer moeten alle actieve CSR's de Approved,Issued status hebben, wat aangeeft dat de CSR is goedgekeurd en een ondertekend certificaat heeft ontvangen. De dienende CSRs hebben een ondertekenaarsnaam van kubernetes.io/kubelet-serving. Voorbeeld:

    NAME        AGE    SIGNERNAME                                    REQUESTOR                    REQUESTEDDURATION   CONDITION
    csr-1ab2c   113s   kubernetes.io/kube-apiserver-client-kubelet   system:bootstrap:uoxr9r      none              Approved,Issued
    csr-defgh   111s   kubernetes.io/kubelet-serving                 system:node:akswinp7000000   none              Approved,Issued
    csr-ij3kl   46m    kubernetes.io/kubelet-serving                 system:node:akswinp6000000   none              Approved,Issued
    csr-mn4op   46m    kubernetes.io/kube-apiserver-client-kubelet   system:bootstrap:ho7zyu      none              Approved,Issued
    

Controleer of kubelet gebruikmaakt van een certificaat dat is verkregen van TLS Bootstrapping van de server

  • Controleer of de kubelet een servicecertificaat gebruikt dat is ondertekend door de cluster-CA met behulp van de kubectl debug opdracht.

    kubectl debug node/<node> -ti --image=mcr.microsoft.com/azurelinux/base/core:3.0 -- ls -l /host/var/lib/kubelet/kubelet-server-current.pem
    

    Als er een kubelet-server-current.pem symlink bestaat, dan heeft de kubelet zijn eigen servercertificaat gebootstrapped/ vernieuwd en de Cluster-CA heeft het ondertekend.

Kubelet-certificaatrotatie uitschakelen

  • Schakel kubelet-certificaatrotatie uit door de knooppuntgroep bij te werken met behulp van de az aks nodepool update opdracht met de aks-disable-kubelet-serving-certificate-rotation=true tag.

    az aks nodepool update --cluster-name <cluster-name> --resource-group <resource-group> --name <node-pool-name> --tags aks-disable-kubelet-serving-certificate-rotation=true
    
  1. Stel uw knooppunten opnieuw in met behulp van een upgrade van een knooppuntinstallatiekopie of door de pool te schalen naar nul exemplaren en vervolgens een back-up te maken van de gewenste waarde.

Automatische rotatie van certificaat

Houd rekening met de volgende overwegingen bij het gebruik van automatischerotatie van certificaten:

  • Als u een bestaand cluster hebt, moet u dat cluster upgraden om automatischerotatie van certificaten in te schakelen.
  • Schakel TLS Bootstrap niet uit om automatischerotatie van certificaten ingeschakeld te houden.
  • Als het cluster een gestopte status heeft tijdens automatische rotatie van certificaten, worden alleen de certificaten van de control plane geroteerd. In dit geval moet u de knooppuntgroep opnieuw maken na certificaatrotatie om de certificaatrotatie van de knooppuntgroep te initiëren.
  • Voor AKS-clusters die na maart 2022 zijn gemaakt of bijgewerkt, roteert AKS automatisch certificaten die geen CA-certificaten zijn op zowel het besturingsvlak als de agentknooppunten binnen 80% van de geldigheidstermijn van het clientcertificaat voordat ze verlopen, zonder downtime voor het cluster.

Controleren of TLS Bootstrapping is ingeschakeld voor de huidige agentknooppuntgroep

  1. Controleer of TLS Bootstrapping is ingeschakeld voor uw cluster door naar een van de volgende paden te gaan:

    • Op een Linux-knooppunt: /var/lib/kubelet/bootstrap-kubeconfig of /host/var/lib/kubelet/bootstrap-kubeconfig
    • Op een Windows-knooppunt: C:\k\bootstrap-config

    Zie Verbinding maken met AKS-clusterknooppunten (Azure Kubernetes Service) voor onderhoud of probleemoplossing voor meer informatie.

    Notitie

    Het bestandspad kan veranderen naarmate kubernetes-versies zich ontwikkelen.

  2. Zodra een regio is geconfigureerd, maakt u een nieuw cluster of werkt u een bestaand cluster bij om automatischerotatie van certificaten in te stellen voor het clustercertificaat. U moet het besturingsvlak en de knooppuntgroep upgraden om deze functie in te schakelen.