Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Usługa Azure Kubernetes Service (AKS) używa certyfikatów do uwierzytelniania w interakcji z wieloma składnikami. Należy okresowo wymieniać te certyfikaty ze względów bezpieczeństwa lub zasad. W tym artykule pokazano, jak działa rotacja certyfikatów w klastrze usługi AKS.
Wymagania wstępne
Ten artykuł wymaga interfejsu wiersza polecenia platformy Azure w wersji 2.0.77 lub nowszej. Sprawdź wersję przy użyciu polecenia
az --version. Jeśli konieczna będzie instalacja lub uaktualnienie, zobacz Instalowanie interfejsu wiersza polecenia platformy Azure.Skonfiguruj
kubectldo połączenia z klastrem usługi AKS przy użyciu poleceniaaz aks get-credentials.az aks get-credentials --resource-group <resource-group> --name <cluster-name>
Certyfikaty AKS, Urzędy Certyfikacji i Konta Usługi
Usługa AKS generuje i używa następujących certyfikatów, Urzędów Certyfikacji (CA) i Kont Usług (SA):
- Serwer API AKS tworzy urząd certyfikacji o nazwie Urząd certyfikacji klastra, który podpisuje certyfikaty dla jednokierunkowej komunikacji z serwera API do kubeleta.
- Każdy kubelet tworzy żądanie podpisania certyfikatu (CSR), które jest podpisywane przez urząd certyfikacji klastra, umożliwiając komunikację z kubeleta do serwera API.
- Agregator interfejsów API używa Urzędu Certyfikacji (CA) klastra do wystawiania certyfikatów na potrzeby komunikacji z innymi interfejsami API. Agregator interfejsu API może również mieć własny urząd certyfikacji do wystawiania tych certyfikatów, ale obecnie używa urzędu certyfikacji klastra.
- Każdy węzeł agenta używa tokenu SA, który podpisuje urząd certyfikacji klastra.
- Klient
kubectlma certyfikat do komunikowania się z klastrem usługi AKS.
Firma Microsoft utrzymuje wszystkie certyfikaty wymienione w tej sekcji, z wyjątkiem certyfikatu klastra.
Daty wygaśnięcia certyfikatu
Ważne
Data wygaśnięcia certyfikatów zależy od momentu utworzenia klastra usługi AKS:
- Klastry usługi AKS utworzone przed majem 2019 r. mają certyfikaty, które wygasają po dwóch latach.
- Klastry usługi AKS utworzone po maju 2019 r. mają certyfikaty CA klastra, które wygasają po 30-letnim okresie ważności.
Możesz zweryfikować, kiedy klaster został utworzony, używając polecenia kubectl get nodes, które pokazuje węzły agenta Age.
Sprawdzanie daty wygaśnięcia certyfikatu klastra
Sprawdź datę wygaśnięcia certyfikatu klastra przy użyciu
kubectl config viewpolecenia .kubectl config view --raw -o jsonpath="{.clusters[?(@.name == '')].cluster.certificate-authority-data}" | base64 -d | openssl x509 -text | grep -A2 Validity
Sprawdzanie daty wygaśnięcia certyfikatu serwera interfejsu API
Sprawdź datę wygaśnięcia certyfikatu serwera interfejsu API przy użyciu następującego
curlpolecenia:curl https://{apiserver-fqdn} -k -v 2>&1 | grep expire
Sprawdź datę wygaśnięcia certyfikatu agenta maszyny wirtualnej (VM)
Sprawdź datę wygaśnięcia certyfikatu węzła agenta VM przy użyciu
az vm run-command invokepolecenia.Kluczowe parametry w tym poleceniu: - :
--resource-group <node-resource-group>Grupa zasobów zawierająca węzeł agenta maszyny wirtualnej. ---name <vm-name>: nazwa węzła agenta maszyny wirtualnej. ---scripts "openssl x509 -in /etc/kubernetes/certs/apiserver.crt -noout -enddate": skrypt, który pobiera datę wygaśnięcia certyfikatu serwera interfejsu API zlokalizowanego w lokalizacji/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"
Sprawdź wygaśnięcie certyfikatu dla węzła agenta w zestawie skalowania maszyn wirtualnych platformy Azure
Sprawdź datę wygaśnięcia certyfikatu agenta zestawu skalowania maszyn wirtualnych platformy Azure przy użyciu
az vmss run-command invokepolecenia .Kluczowe parametry w tym poleceniu: - :
--resource-group <node-resource-group>Grupa zasobów zawierająca węzeł agenta zestawu skalowania maszyn wirtualnych platformy Azure. ---name <vmss-name>: nazwa zestawu skalowania maszyn wirtualnych platformy Azure. ---instance-id 1: identyfikator instancji węzła agenta zestawu skalowania maszyn wirtualnych Azure. ---scripts "openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -enddate": Skrypt, który pobiera datę wygaśnięcia certyfikatu klienta kubelet umiejscowionego w/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"
Ręczna rotacja certyfikatów klastra
Przeprowadź rotację wszystkich certyfikatów, urzędów certyfikacji i kont usługowych w klastrze, używając polecenia
az aks rotate-certs.az aks rotate-certs --resource-group <resource-group> --name <cluster-name>Ważne
Polecenie
az aks rotate-certsponownie tworzy wszystkie węzły agenta, zestawy skalowania maszyn wirtualnych platformy Azure i dyski. To polecenie może również spowodować nawet 30 minut przestoju klastra AKS. Jeśli polecenie zakończy się niepowodzeniem przed ukończeniem, użyj polecenia [az aks show][az-aks-show], aby sprawdzić, czy stan klastra toCertificate Rotating. Jeśli klaster jest w stanie niepowodzenia, uruchom ponownie polecenieaz aks rotate-certs, aby odnowić certyfikaty.Sprawdź, czy stare certyfikaty nie są już prawidłowe przy użyciu dowolnego
kubectlpolecenia. W poniższym przykładzie użyto poleceniakubectl get nodes:kubectl get nodesJeśli certyfikaty używane przez
kubectlprogram nie zaktualizowano, zostanie wyświetlony błąd podobny do następujących przykładowych danych wyjściowych: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")Zaktualizuj certyfikat używany przez
kubectl, korzystając z poleceniaaz aks get-credentialsz flagą--overwrite-existing.az aks get-credentials --resource-group <resource-group> --name <cluster-name> --overwrite-existingSprawdź, czy certyfikaty są aktualizowane przy użyciu
kubectl getpolecenia .kubectl get nodes
Jeśli masz jakiekolwiek usługi, które działają na AKS, może być konieczne zaktualizowanie ich certyfikatów.
Rotacja certyfikatu generowanego przez kubelet
Podczas rotacji certyfikatu obsługującego kubelet, AKS zezwala na proces bootstrappingu Transport Layer Security (TLS) na potrzeby inicjalizacji i rotacji certyfikatów serwisowych podpisanych przez nadrzędny urząd certyfikacji klastra.
Ograniczenia dotyczące rotacji certyfikatów serwisowych kubeleta
- Obsługiwane na platformie Kubernetes w wersji 1.27 lub nowszej.
- Nie jest obsługiwane, gdy pula węzłów używa migawki puli węzłów na podstawie dowolnego obrazu węzła starszego niż
202501.12.0. - Nie można ręcznie włączyć tej funkcji. Rotacja certyfikatów obsługi Kubelet jest domyślnie włączona w istniejących pulach węzłów przy pierwszym uaktualnieniu do dowolnej wersji Kubernetes 1.27 lub nowszej. Rotacja certyfikatów obsługujących usługę Kubelet jest domyślnie włączona w nowych pulach węzłów przy użyciu platformy Kubernetes w wersji 1.27 lub nowszej. Aby sprawdzić, czy rotacja certyfikatów usługi Kubelet jest włączona w Twoim regionie, sprawdź wersje usługi AKS.
Sprawdź, czy włączono rotację certyfikatów używanych przez kubelet
Każdy węzeł z włączoną funkcją automatycznie otrzymuje etykietę kubernetes.azure.com/kubelet-serving-ca=cluster.
Sprawdź, czy etykiety zostały ustawione przy użyciu
kubectl get nodes -L kubernetes.azure.com/kubelet-serving-capolecenia .kubectl get nodes -L kubernetes.azure.com/kubelet-serving-caDane wyjściowe powinny zawierać etykietę
kubernetes.azure.com/kubelet-serving-caz wartościąclusterdla każdego węzła agenta.
Sprawdź, czy TLS Bootstrap kubeleta działa
Sprawdź, czy proces bootstrapping odbywa się przy użyciu polecenia
kubectl get.kubectl get csr --field-selector=spec.signerName=kubernetes.io/kubelet-servingW danych wyjściowych wszystkie obsługujące żądania CSR powinny znajdować się w
Approved,Issuedstanie, co wskazuje, że CSR został zatwierdzony i wystawiono podpisany certyfikat. Konsultanci działu obsługi klienta mają nazwę sygnatariuszakubernetes.io/kubelet-serving. Przykład: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
Sprawdź, czy narzędzie kubelet używa certyfikatu uzyskanego z serwera tls bootstrapping
Upewnij się, że kubelet używa certyfikatu usługowego podpisanego przez urząd certyfikacji klastra, przy użyciu polecenia
kubectl debug.kubectl debug node/<node> -ti --image=mcr.microsoft.com/azurelinux/base/core:3.0 -- ls -l /host/var/lib/kubelet/kubelet-server-current.pemkubelet-server-current.pemJeśli istnieje symlink, to kubelet zainicjował/odnowił własny certyfikat usługowy, a Urząd CA klastra go podpisał.
Wyłącz rotację certyfikatów serwera kubelet
Aby wyłączyć rotację certyfikatów obsługujących kubelet, zaktualizuj pulę węzłów, używając polecenia
az aks nodepool updatez tagiemaks-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
- Utwórz ponownie obraz węzłów przy użyciu uaktualnienia obrazu węzła lub skalując pulę do zera wystąpień, a następnie wykonaj kopię zapasową żądanej wartości.
Autorotacja certyfikatu
Podczas korzystania z automatycznej rotacji certyfikatów należy pamiętać o następujących kwestiach:
- Jeśli masz istniejący klaster, musisz uaktualnić ten klaster, aby włączyć autorotytację certyfikatu.
- Nie wyłączaj Bootstrap TLS, aby zachować włączoną autorotację certyfikatu.
- Jeśli klaster jest w stanie zatrzymanym podczas autoryzacji certyfikatów, obracane są tylko certyfikaty warstwy kontrolnej. W takim przypadku należy ponownie utworzyć pulę węzłów po odnowieniu certyfikatów, aby zainicjować proces odnowienia certyfikatów puli węzłów.
- W przypadku wszystkich klastrów AKS utworzonych lub zaktualizowanych po marcu 2022 r. usługa AKS automatycznie rotuje certyfikaty inne niż CA zarówno na płaszczyźnie kontrolnej, jak i na węzłach agenta, w okresie do 80% ważności certyfikatu klienta przed ich wygaśnięciem, nie powodując przestojów w klastrze.
Sprawdź, czy Bootstrapping TLS jest włączony w bieżącej puli zasobów węzłów agenta
Sprawdź, czy klaster ma włączoną funkcję bootstrapping TLS, przechodząc do jednej z poniższych ścieżek:
-
W węźle systemu Linux:
/var/lib/kubelet/bootstrap-kubeconfiglub/host/var/lib/kubelet/bootstrap-kubeconfig -
Na węźle systemu Windows:
C:\k\bootstrap-config
Aby uzyskać więcej informacji, zobacz Nawiązywanie połączenia przy użyciu protokołu SSH z węzłami klastra usługi Azure Kubernetes Service w celu konserwacji lub rozwiązywania problemów.
Uwaga / Notatka
Ścieżka pliku może ulec zmianie w miarę rozwoju wersji platformy Kubernetes.
-
W węźle systemu Linux:
Po skonfigurowaniu regionu utwórz nowy klaster lub uaktualnij istniejący klaster, aby ustawić autorotytację certyfikatu dla certyfikatu klastra. Aby włączyć tę funkcję, należy uaktualnić płaszczyznę sterowania i pulę węzłów.