Obměna certifikátů Kubernetes pomocí modulu AKS ve službě Azure Stack Hub

Tento dokument obsahuje pokyny k obměně certifikátů v existujícím clusteru AKS Engine a doporučení pro použití aks-engine rotate-certs tohoto nástroje.

Požadavky

Tato příručka předpokládá, že jste už nasadili cluster pomocí modulu AKS a že je cluster v dobrém stavu.

Plánování obměně certifikátů

Při zvažování použití této funkce mějte na paměti, že během aktualizace, ověřování a restartování nebude k dispozici řídicí rovina Kubernetes. Naplánujte tuto operaci údržby odpovídajícím způsobem. Před pokusem o uvedení do produkčního prostředí naplánujte také provedení této operace v přípravném prostředí se stejnou konfigurací jako v produkčním prostředí.

Před pokusem o tuto operaci si projděte následující aspekty:

Poznámka

V případě AKSe verze 0.75.3 a vyšší začínají aks-engine-azurestack příkazy pro obměnu certifikátů na místo aks-engine.

  • Budete potřebovat přístup k modelu rozhraní API (apimodel.json), který byl vygenerován příkazy aks-engine deploy nebo aks-engine generate. Ve výchozím nastavení je tento soubor umístěn do relativního adresáře, například _output/<clustername>/.

  • Operace aks-engine rotate-certs způsobí výpadek serveru rozhraní API.

  • aks-engine rotate-certs očekává model rozhraní API, který odpovídá aktuálnímu stavu clusteru. aks-engine rotate-certs provádí vzdálené příkazy na uzlech clusteru a používá informace o modelu rozhraní API k navázání zabezpečeného připojení SSH. aks-engine rotate-certs spoléhá také na to, že některé prostředky budou pojmenovány v souladu s původním aks-engine nasazením, například virtuální počítače musí dodržovat názvy poskytované nástrojem aks-engine.

  • aks-engine rotate-certs spoléhá na funkční připojení k řídicí rovině clusteru během obměně certifikátů:

    • K ověření každého kroku procesu.
    • Restartování nebo opětovné vytvoření prostředků clusteru, jako jsou pody kube-system a tokeny účtu služby.

    Pokud obměníte certifikáty clusteru ve virtuální síti uzavřené pro přístup zvenčí, musíte spustit aks-engine rotate-certs z hostitelského virtuálního počítače, který má síťový přístup k řídicí rovině, například virtuální počítač jumpboxu, který se nachází ve stejné virtuální síti jako hlavní virtuální počítače.

  • Pokud používáte aks-engine rotate-certs v produkčním prostředí, doporučujeme v clusteru vytvořit test obměně certifikátů, který byl sestaven podle stejných specifikací. To znamená, že cluster je sestaven se stejnou konfigurací clusteru, stejnou verzí nástroje příkazového řádku modulu AKS a stejnou sadou povolených doplňků jako produkční cluster před provedením obměny certifikátů. Modul AKS podporuje různé konfigurace clusterů a rozsah kompletního testování, které tým modulu AKS provozuje, nemůže prakticky pokrýt všechny možné konfigurace. Proto doporučujeme, abyste se v přípravném prostředí před pokusem o operaci v produkčním clusteru ujistili, že vaše konkrétní konfigurace clusteru funguje aks-engine rotate-certs s.

  • aks-engine rotate-certsnezaručuje zpětnou kompatibilitu. Pokud jste nasadili aks-engine verze 0.60.x, měli byste dát přednost procesu obměně certifikátů s verzí 0.60.x.

  • Načtení nové sady certifikátů z Key Vault není v tuto chvíli podporováno.

  • Používejte spolehlivé síťové připojení. aks-engine rotate-certs vyžaduje spuštění několika vzdálených příkazů, u kterých dochází k možným chybám, většinou v případě, že připojení k uzlům clusteru není spolehlivé. Spuštění aks-engine rotate-certs z virtuálního počítače spuštěného na cílovém razítku služby Azure Stack může omezit výskyt přechodných problémů.

Parametry

Parametr Povinné Popis
--api-model ano Relativní cesta k modelu rozhraní API (definice clusteru), který deklaruje očekávanou konfiguraci clusteru.
--ssh-host ano Plně kvalifikovaný název domény (FQDN) nebo IP adresa naslouchacího procesu SSH, který se může spojit se všemi uzly v clusteru.
--linux-ssh-private-key ano Cesta k platnému privátnímu klíči SSH pro přístup k uzlům clusteru s Linuxem
--Umístění ano Umístění Azure, ve kterém je cluster nasazený.
--subscription-id ano Předplatné Azure, ve kterém je nasazená infrastruktura clusteru.
--resource-group ano Skupina prostředků Azure, ve které je nasazená infrastruktura clusteru.
--client-id Závisí ID klienta instančního objektu. Vyžaduje se, pokud je metoda auth-method nastavená na client_secret nebo client_certificate.
--client-secret Závisí Tajný klíč klienta instančního objektu. Vyžaduje se, pokud je metoda auth-method nastavená na client_secret.
--azure-env Závisí Název cílového cloudu. Volitelné, pokud je cílový cloud AzureCloud.
--certificate-profile ne Relativní cesta k souboru JSON obsahujícímu novou sadu certifikátů
--Síla ne Vynuťte spuštění i v případě, že server rozhraní API nereaguje.

Jednoduchý postup obměna certifikátů

V případě modulu AKS verze 0.75.3 a novějšího spusťte aks-engine-azurestack rotate-certs po přečtení všech požadavků příslušné argumenty (viz níže).

V případě modulu AKS verze 0.73.0 a novějších po přečtení všech požadavků spusťte aks-engine rotate-certs příkaz s příslušnými argumenty:

./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>

Příklad:

./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

Obměna front-proxy certifikátů

Poznámka

V případě AKSe verze 0.75.3 a vyšší začínají aks-engine-azurestack příkazy pro obměnu certifikátů na místo aks-engine.

Modul AKS vytvoří samostatnou infrastrukturu front-proxy veřejných klíčů pro jako součást procesu spouštění uzlu a doručí je do všech uzlů prostřednictvím etcd. K efektivnímu opakovanému použití této funkce rotate-certs je nutné nahradit certifikáty uložené v etcdnástroji . Platnost front-proxy certifikátů vyprší po 30 letech. aks-engine rotate-certs obměňuje front-proxy certifikáty.

Řešení potíží

Poznámka

V případě AKSe verze 0.75.3 a vyšší začínají aks-engine-azurestack příkazy pro obměnu certifikátů na místo aks-engine.

Pokud se proces obměně certifikátů zastaví před dokončením kvůli selhání nebo přechodnému problému, například kvůli síťovému připojení, je bezpečné ho spustit aks-engine rotate-certs znovu pomocí příznaku --force .

Všimněte si také, že aks-engine rotate-certs protokoluje výstup každého kroku v souboru /var/log/azure/rotate-certs.log (Linux) a c:\\k\\rotate-certs.log (Windows).

Další informace o tom, co se děje pod pokličkou při spuštění této operace nebo pro další přizpůsobení, najdete v tématu Pod kapotou.

Další kroky