Obróć certyfikaty Kubernetes w centrum Azure Stack

Ten dokument zawiera wskazówki dotyczące sposobu rotacji certyfikatów w istniejącym klastrze aparatu AKS i zalecenia dotyczące korzystania z aks-engine rotate-certs niego jako narzędzia.

Ważne

Ta funkcja jest obecnie w publicznej wersji zapoznawczej. Ta wersja zapoznawcza nie jest objęta umową dotyczącą poziomu usług i nie zalecamy korzystania z niej w przypadku obciążeń produkcyjnych. Niektóre funkcje mogą być nieobsługiwane lub ograniczone. Aby uzyskać więcej informacji, zobacz Uzupełniające warunki korzystania z wersji zapoznawczych platformy Microsoft Azure.

Wymagania wstępne

W tym przewodniku przyjęto założenie, że klaster został już wdrożony przy użyciu aparatu AKS, a klaster jest w dobrej kondycji.

Planowanie rotacji certyfikatów

Rozważając korzystanie z tej funkcji, należy pamiętać, że płaszczyzna kontroli Kubernetes będzie niedostępna podczas kroków aktualizacji, walidacji i ponownego uruchamiania. Zaplanuj odpowiednią operację konserwacji. Należy również zaplanować wykonanie tej operacji w środowisku przejściowym z taką samą konfiguracją do środowiska produkcyjnego przed próbą produkcji.

Przed podjęciem próby wykonania tej operacji zapoznaj się z następującymi kwestiami:

  • Będziesz potrzebować dostępu do modelu API ( apimodel.json ), który został wygenerowany przez polecenia aks-engine deploy lub aks-engine generate . Domyślnie ten plik jest umieszczany w katalogu względnym, na przykład _output/<clustername>/ .

  • aks-engine rotate-certsOperacja powoduje przestoje serwera interfejsu API.

  • aks-engine rotate-certs oczekuje modelu interfejsu API, który jest zgodny z bieżącym stanem klastra. aks-engine rotate-certs wykonuje polecenia zdalne w węzłach klastra i używa informacji o modelu interfejsu API w celu nawiązania bezpiecznego połączenia SSH. aks-engine rotate-certs Program opiera się również na niektórych zasobach, które mają być nazwane zgodnie z oryginalnym aks-engine wdrożeniem, na przykład w przypadku maszyn wirtualnych należy przestrzegać nazw dostarczonych przez program aks-engine .

  • aks-engine rotate-certs polega na działającym połączeniu z płaszczyzną kontroli klastra podczas rotacji certyfikatu:

    • Aby sprawdzić poprawność każdego kroku procesu.
    • Aby ponownie uruchomić/utworzyć zasoby klastra, takie jak polecenia-systemowe i tokeny konta usługi.

    Jeśli obracasz certyfikaty klastra w sieci wirtualnej zamkniętej do dostępu poza dostępem, musisz uruchomić aks-engine rotate-certs z poziomu maszyny wirtualnej hosta, która ma dostęp do sieci do płaszczyzny kontroli, na przykład maszynę wirtualną serwera przesiadkowego, która znajduje się w tej samej sieci wirtualnej, co główne maszyny wirtualne.

  • W przypadku korzystania aks-engine rotate-certs z programu w środowisku produkcyjnym zaleca się przemieszczenie testu rotacji certyfikatu w klastrze, który został zbudowany w oparciu o te same specyfikacje. Oznacza to, że klaster jest zbudowany z tą samą konfiguracją klastra, tą samą wersją narzędzia wiersza polecenia aparatu AKS i tym samym zestawem włączonych dodatków jako klaster produkcyjny przed przeprowadzeniem rotacji certyfikatu. Aparat AKS obsługuje różne konfiguracje klastrów i zakres kompleksowych testów, które są uruchamiane przez zespół aparatu AKS, nie mogą praktycznie obsłużyć każdej możliwej konfiguracji. Dlatego zaleca się, aby aks-engine rotate-certs przed podjęciem próby wykonania operacji w klastrze produkcyjnym upewnić się, że w środowisku przejściowym działa określona konfiguracja klastra.

  • aks-engine rotate-certs nie gwarantuje zgodności z poprzednimi wersjami. W przypadku wdrożenia z AKS-Engine w wersji 0.60. x należy wykonać proces rotacji certyfikatu z wersją 0.60. x.

  • Pobieranie nowego zestawu certyfikatów z Key Vault nie jest obsługiwane w tym momencie.

  • Używaj niezawodnego połączenia sieciowego. aks-engine rotate-certs wymaga wykonania wielu poleceń zdalnych, które podlegają potencjalnym awariom, przede wszystkim wtedy, gdy połączenie z węzłami klastra nie jest niezawodne. Uruchamianie aks-engine rotate-certs z poziomu maszyny wirtualnej działającej w docelowej sygnaturze Azure Stack może zmniejszyć liczbę problemów przejściowych.

Parametry

Parametr Wymagane Opis
--Model interfejsu API tak Ścieżka względna do modelu API (definicja klastra), która deklaruje oczekiwaną konfigurację klastra.
--SSH-Host tak W pełni kwalifikowana nazwa domeny (FQDN) lub adres IP odbiornika SSH, który może nawiązać połączenie ze wszystkimi węzłami w klastrze.
--Linux-SSH-Private-Key tak Ścieżka do prawidłowego prywatnego klucza SSH w celu uzyskania dostępu do węzłów systemu Linux w klastrze.
--Lokalizacja tak Lokalizacja platformy Azure, w której wdrożono klaster.
--Subscription-ID tak Subskrypcja platformy Azure, w której jest wdrożona infrastruktura klastra.
--Grupa zasobów tak Grupa zasobów platformy Azure, w której jest wdrożona infrastruktura klastra.
--Client-ID zależy od Identyfikator klienta nazwy głównej usługi. Wymagane, jeśli metoda auth-Method ma wartość client_secret lub client_certificate.
--Client-Secret zależy od Klucz tajny klienta jednostki usługi. Wymagane, jeśli metoda auth-Method ma wartość client_secret.
— Azure — ENV zależy od Nazwa chmury docelowej. Opcjonalne, jeśli docelowa chmura to AzureCloud.
--profil certyfikatu nie Ścieżka względna do pliku JSON zawierającego nowy zestaw certyfikatów.
--Wymuś nie Wymuś wykonywanie nawet wtedy, gdy serwer interfejsu API nie odpowiada.

Proste kroki umożliwiające obracanie certyfikatów

Po przeczytaniu wszystkich wymagańnależy uruchomić polecenie aks-engine rotate-certs z odpowiednimi argumentami:

./bin/aks-engine rotate-certs \
  --location <resource-group-location> \
  --api-model <generated-apimodel.json> \
  --linux-ssh-private-key <private-SSH-key> \
  --ssh-host <apiserver-URI> \
  --resource-group <resource-group-name> \
  --client-id <service-principal-id> \
  --client-secret <service-principal-secret> \
  --subscription-id <subscription-id> \
  --azure-env <cloud-name>

Na przykład:

./bin/aks-engine rotate-certs \
  --location "westus2" \
  --api-model "_output/my-cluster/apimodel.json" \
  --linux-ssh-private-key "~/.ssh/id_rsa" \
  --ssh-host "my-cluster.westus2.cloudapp.azure.com"\
  --resource-group "my-cluster" \
  --client-id "12345678-XXXX-YYYY-ZZZZ-1234567890ab" \
  --client-secret "12345678-XXXX-YYYY-ZZZZ-1234567890ab" \
  --subscription-id "12345678-XXXX-YYYY-ZZZZ-1234567890ab" \
  --azure-env "AzureStackCloud" # optional if targeting AzureCloud

Rozwiązywanie problemów

Jeśli proces rotacji certyfikatu zostanie zatrzymany przed ukończeniem z powodu błędu lub przejściowego problemu, na przykład z łącznością sieciową, można bezpiecznie ponownie uruchomić polecenie aks-engine rotate-certs przy użyciu --force flagi.

Zauważ również, że aks-engine rotate-certs rejestruje dane wyjściowe każdego kroku w pliku /var/log/azure/rotate-certs.log (Linux) i c:\\k\\rotate-certs.log (Windows).

Aby uzyskać więcej informacji na temat tego, co się dzieje w obszarze okapu podczas uruchamiania tej operacji lub do dalszej dostosowania, zobacz pod okapem.

Następne kroki