Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
W tym artykule wyjaśniono, jak zarządzać certyfikatami i wymieniać je w klastrach Azure Kubernetes Service (AKS) w celu zapewnienia bezpiecznej komunikacji między składnikami i zapewnienia zgodności.
Wymagania wstępne
- Azure CLI w wersji 2.0.77 lub nowszej. Sprawdź swoją wersję za pomocą polecenia
az --version. Aby zainstalować lub uaktualnić, zobacz Install Azure CLI.
Sprawdzanie daty wygaśnięcia certyfikatu urzędu certyfikacji klastra
Sprawdź datę wygaśnięcia certyfikatu CA klastra za pomocą polecenia kubectl config view.
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 curl polecenia:
curl https://{apiserver-fqdn} -k -v 2>&1 | grep expire
Sprawdzanie daty wygaśnięcia certyfikatu węzła agenta usługi VMSS
Sprawdź datę wygaśnięcia certyfikatu węzła agenta zestawu skalowania maszyn wirtualnych przy użyciu az vmss run-command invoke polecenia .
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"
Sprawdzanie daty wygaśnięcia certyfikatu autonomicznej maszyny wirtualnej
Sprawdź datę wygaśnięcia autonomicznej maszyny wirtualnej przy użyciu az vm run-command invoke polecenia .
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"
Ręcznie rotuj certyfikaty CA klastra
Po obróceniu certyfikatu CA klastra następujące certyfikaty podrzędne również zostają odnowione:
- Tokeny konta usługi (SA)
- Certyfikaty serwera interfejsu API
- Certyfikaty klienta kubelet
- Certyfikaty serwera Kubelet (jeśli rotacja certyfikatów usługi Kubelet jest włączona w klastrze)
Warning
Rotacja certyfikatów przy użyciu az aks rotate-certs powoduje ponowne utworzenie wszystkich węzłów, zestawów skalowania maszyn wirtualnych i dysków. Ten proces może spowodować do 30 minut przestoju klastra usługi AKS. Jeśli polecenie zakończy się niepowodzeniem przed ukończeniem, użyj az aks show polecenia , aby sprawdzić stan klastra wyświetla rotację certyfikatów. Jeśli klaster jest w stanie niepowodzenia, uruchom az aks rotate-certs ponownie, aby ponownie obrócić certyfikaty.
Połącz się z klastrem za pomocą polecenia
az aks get-credentials.az aks get-credentials --resource-group <resource-group> --name <cluster-name>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>Sprawdź, czy stare certyfikaty nie są już prawidłowe przy użyciu dowolnego
kubectlpolecenia, takiego jakkubectl 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")
Aktualizowanie kubectl certyfikatów klienta
Zaktualizuj certyfikat klienta za pomocą polecenia
az 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 nodesNote
Jeśli masz jakiekolwiek usługi uruchomione na platformie AKS, może być konieczne dokonanie aktualizacji ich certyfikatów.
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 są ustawione przy użyciu kubectl get nodes -L kubernetes.azure.com/kubelet-serving-ca polecenia .
kubectl get nodes -L kubernetes.azure.com/kubelet-serving-ca
Zweryfikuj, czy narzędzie kubelet przechodzi przez proces inicjalizacji protokołu TLS
Po włączeniu tej funkcji każdy kubelet działający na Twoich węzłach przechodzi przez proces bootstrapowania TLS.
Sprawdź, czy trwa proces inicjalizacji, używając polecenia kubectl get, aby wyświetlić bieżące obiekty CSR w Twoim klastrze.
kubectl get csr --field-selector=spec.signerName=kubernetes.io/kubelet-serving
Wszystkie obsługiwane żądania CSR mają stan Approved,Issued, co oznacza, że żądanie CSR zostało zatwierdzone i wydano podpisany certyfikat. Konsultanci działu obsługi klienta mają nazwę sygnatariusza kubernetes.io/kubelet-serving. Przykład:
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
Sprawdź, czy narzędzie kubelet używa certyfikatu uzyskanego z uruchamiania protokołu TLS serwera
Sprawdź, czy kubelet węzła używa certyfikatu serwera podpisanego przez klastrowy urząd certyfikacji, używając polecenia [kubectl debug][kubectl-debug] do zbadania zawartości katalogu PKI kubeleta.
kubectl debug node/<node> -ti --image=mcr.microsoft.com/azurelinux/base/core:3.0 -- ls -l /host/var/lib/kubelet/kubelet-server-current.pem
Jeśli istnieje dowiązanie symboliczne kubelet-server-current.pem, kubelet inicjuje i odnawia własny certyfikat serwera w procesie bootstrapu TLS, a certyfikat jest podpisywany przez CA klastra.
Wyłącz rotację certyfikatów serwera kubelet
Wyłącz rotację certyfikatów serwera kubelet, aktualizując pulę węzłów za pomocą polecenia
az aks nodepool updatei podając tagaks-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=trueUtwó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.
Treści powiązane
Aby uzyskać więcej informacji na temat zabezpieczeń usługi AKS, zobacz następujące artykuły: