Obměně certifikátů v Azure Kubernetes Service (AKS)

Azure Kubernetes Service (AKS) používá certifikáty k ověřování u mnoha svých součástí. Clustery s podporou RBAC vytvořené po březnu 2022 mají povolenou automatickou obměnu certifikátů. Možná budete muset tyto certifikáty pravidelně obměňovat z důvodů zabezpečení nebo zásad. Můžete mít například zásadu pro obměně všech certifikátů každých 90 dní.

Poznámka

Automatická obměně certifikátů je ve výchozím nastavení povolená jenom pro clustery AKS s podporou RBAC.

V tomto článku se dozvíte, jak ve vašem clusteru AKS funguje obměně certifikátů.

Než začnete

Tento článek vyžaduje Azure CLI verze 2.0.77 nebo novější. Verzi zjistíte spuštěním příkazu az --version. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI.

Certifikáty AKS, certifikační autority a účty služeb

AKS generuje a používá následující certifikáty, certifikační autority (CA) a účty služeb (SA):

  • Server rozhraní API AKS vytvoří certifikační autoritu s názvem CA clusteru.
  • Server rozhraní API má certifikační autoritu clusteru, která podepisuje certifikáty pro jednosměrnou komunikaci ze serveru rozhraní API do kubeletů.
  • Každý kubelet vytvoří žádost o podepsání certifikátu (CSR), kterou podepíše certifikační autorita clusteru pro komunikaci z kubeletu na server rozhraní API.
  • Agregátor rozhraní API používá certifikační autoritu clusteru k vydávání certifikátů pro komunikaci s jinými rozhraními API. Agregátor rozhraní API může mít také vlastní certifikační autoritu pro vystavování těchto certifikátů, ale v současné době používá certifikační autoritu clusteru.
  • Každý uzel používá token SA, který podepisuje certifikační autorita clusteru.
  • Klient kubectl má certifikát pro komunikaci s clusterem AKS.

Microsoft udržuje všechny certifikáty uvedené v této části s výjimkou certifikátu clusteru.

Poznámka

  • Clustery AKS vytvořené před květnem 2019 mají certifikáty, jejichž platnost vyprší po dvou letech.
  • Clustery AKS vytvořené po květnu 2019 mají certifikáty ca clusteru, jejichž platnost po 30 letech vyprší.

Pomocí příkazu , který ukazuje stáří fondů uzlů, můžete ověřit, kdy byl cluster vytvořenkubectl get nodes.

Kontrola dat vypršení platnosti certifikátu

Kontrola data vypršení platnosti certifikátu clusteru

  • Zkontrolujte datum vypršení platnosti certifikátu clusteru kubectl config view pomocí příkazu .

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

Kontrola data vypršení platnosti certifikátu serveru rozhraní API

  • Pomocí následujícího curl příkazu zkontrolujte datum vypršení platnosti certifikátu serveru rozhraní API.

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

Kontrola data vypršení platnosti certifikátu uzlu agenta VMAS

  • Zkontrolujte datum vypršení platnosti certifikátu uzlu agenta VMAS pomocí az vm run-command invoke příkazu .

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

Kontrola data vypršení platnosti certifikátu uzlu agenta škálovací sady virtuálních počítačů

  • Zkontrolujte datum vypršení platnosti certifikátu uzlu agenta škálovací sady virtuálních az vm run-command invoke počítačů pomocí příkazu .

    az vmss run-command invoke --resource-group "MC_rg_myAKSCluster_region" --name "vmss-name" --command-id RunShellScript --instance-id 1 --scripts "openssl x509 -in /etc/kubernetes/certs/apiserver.crt -noout -enddate" --query "value[0].message"
    

Automatická obměně certifikátu

Aby služba AKS automaticky obměněla certifikáty jiné než certifikační autority, musí mít cluster zaváděcí protokol TLS, který je ve výchozím nastavení ve všech oblastech Azure povolený.

Poznámka

  • Pokud máte existující cluster, musíte ho upgradovat, aby se povolila automatická obměně certifikátů.
  • Nezakazujte bootstrap, aby byla povolená automatická rotace.
  • Pokud je cluster během automatické obměně certifikátů v zastaveném stavu, obměňují se pouze certifikáty řídicí roviny. V takovém případě byste měli fond uzlů po obměně certifikátů znovu vytvořit, abyste zahájili obměnu certifikátů fondu uzlů.

U všech clusterů AKS vytvořených nebo upgradovaných po březnu 2022 Azure Kubernetes Service automaticky obměňuje certifikáty bez certifikační autority na uzlech řídicí roviny i agenta během 80 % doby platnosti klientského certifikátu před vypršením jejich platnosti bez výpadků clusteru.

Jak zkontrolovat, jestli je ve fondu uzlů aktuálního agenta povolené spouštění tls?

  1. Přejděte na jednu z následujících cest a ověřte, jestli má váš cluster povolené spouštění tls:

    • Na uzlu s Linuxem: /var/lib/kubelet/bootstrap-kubeconfig nebo /host/var/lib/kubelet/bootstrap-kubeconfig
    • Na uzlu Windows: C:\k\bootstrap-config

    Další informace najdete v tématu Připojení k uzlům clusteru Azure Kubernetes Service za účelem údržby nebo řešení potíží.

    Poznámka

    Cesta k souboru se může měnit s tím, jak se vyvíjejí verze Kubernetes.

  2. Po nakonfigurování oblasti vytvořte nový cluster nebo upgradujte existující cluster a nastavte pro certifikát clusteru automatickou obměnu. Abyste tuto funkci povolili, musíte upgradovat řídicí rovinu a fond uzlů.

Ruční obměna certifikátů clusteru

Upozornění

Obměně certifikátů pomocí nástroje az aks rotate-certs znovu vytvoří všechny uzly, Virtual Machine Scale Sets a disky a může způsobit až 30minutový výpadek clusteru AKS.

  1. Připojte se ke clusteru az aks get-credentials pomocí příkazu .

    az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
    
  2. Pomocí příkazu obměňte všechny certifikáty, certifikační autority a certifikáty SA v clusteru az aks rotate-certs .

    az aks rotate-certs --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
    

    Důležité

    Dokončení může trvat až 30 minut az aks rotate-certs . Pokud se příkaz před dokončením nezdaří, pomocí příkazu az aks show ověřte, že stav clusteru je Rotace certifikátu. Pokud je cluster ve stavu selhání, znovu spusťte az aks rotate-certs a znovu obměňte certifikáty.

  3. Pomocí libovolného kubectl příkazu, například kubectl get nodes, ověřte, že staré certifikáty už nejsou platné.

    kubectl get nodes
    

    Pokud jste neaktualizovali certifikáty používané nástrojem kubectl, zobrazí se chyba podobná následujícímu příkladu výstupu:

    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")
    
  4. Aktualizujte certifikát použitý příkazem kubectlaz aks get-credentials s příznakem --overwrite-existing .

    az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME --overwrite-existing
    
  5. Pomocí příkazu ověřte, že se certifikáty aktualizovaly kubectl get .

    kubectl get nodes
    

    Poznámka

    Pokud máte nějaké služby, které běží v AKS, možná budete muset aktualizovat jejich certifikáty.

Další kroky

V tomto článku se dozvíte, jak automaticky obměňovat certifikáty clusteru, certifikační autority a certifikační autority. Další informace najdete v tématu Osvědčené postupy pro zabezpečení a upgrady clusterů v Azure Kubernetes Service (AKS).