Rotera Kubernetes-certifikat med hjälp av AKS-motorn på Azure Stack Hub

Det här dokumentet innehåller vägledning om hur du roterar certifikat i ett befintligt AKS-motorkluster och rekommendationer för att använda som aks-engine rotate-certs ett verktyg.

Förutsättningar

Den här guiden förutsätter att du redan har distribuerat ett kluster med AKS-motorn och att klustret är i ett felfritt tillstånd.

Planera för certifikatrotation

När du överväger att använda den här funktionen bör du vara medveten om att Kubernetes-kontrollplanet inte kommer att vara tillgängligt under uppdaterings-, validerings- och omstartsstegen. Planera den här underhållsåtgärden i enlighet med detta. Planera även att utföra den här åtgärden i en mellanlagringsmiljö med samma konfiguration som produktionsmiljön innan du försöker i produktion.

Granska följande överväganden innan du försöker utföra den här åtgärden:

Anteckning

För AKSe version 0.75.3 och senare börjar kommandona för certifikatrotation med aks-engine-azurestack i stället aks-engineför .

  • Du behöver åtkomst till API-modellen (apimodel.json) som genererades av kommandona aks-engine deploy eller aks-engine generate. Som standard placeras den här filen i en relativ katalog, till exempel _output/<clustername>/.

  • En aks-engine rotate-certs åtgärd orsakar api-serverns stilleståndstid.

  • aks-engine rotate-certs förväntar sig en API-modell som överensstämmer med klustrets aktuella tillstånd. aks-engine rotate-certs kör fjärrkommandon på klusternoderna och använder API-modellinformationen för att upprätta en säker SSH-anslutning. aks-engine rotate-certs förlitar sig också på att vissa resurser namnges i enlighet med den ursprungliga aks-engine distributionen, till exempel måste virtuella datorer följa namngivningen som tillhandahålls av aks-engine.

  • aks-engine rotate-certs förlitar sig på en fungerande anslutning till klusterkontrollplanet under certifikatrotationen:

    • Verifiera varje steg i processen.
    • Starta om/återskapa klusterresurser som kube-systempoddar och tjänstkontotoken.

    Om du roterar certifikaten för ett kluster i ett virtuellt nätverk som är stängt för extern åtkomst måste du köra aks-engine rotate-certs från en virtuell värddator som har nätverksåtkomst till kontrollplanet, till exempel en virtuell jumpbox-dator som finns i samma virtuella nätverk som de virtuella huvuddatorerna.

  • Om du använder aks-engine rotate-certs i produktion rekommenderar vi att du mellanlagrar ett certifikatrotationstest i ett kluster som har skapats enligt samma specifikationer. Klustret skapas med samma klusterkonfiguration, samma version av kommandoradsverktyget för AKS-motorn och samma uppsättning aktiverade tillägg som ditt produktionskluster innan certifikatrotationen utförs. AKS-motorn stöder olika klusterkonfigurationer och omfattningen av slutpunkt till slutpunkt-testning som AKS-motorteamet kör kan inte praktiskt taget täcka alla möjliga konfigurationer. Därför rekommenderar vi att du i en mellanlagringsmiljö som din specifika klusterkonfiguration fungerar med aks-engine rotate-certs innan du försöker utföra åtgärden i produktionsklustret.

  • aks-engine rotate-certs garanterar inte bakåtkompatibilitet. Om du har distribuerat med aks-engine version 0.60.x bör du föredra att köra certifikatrotationsprocessen med version 0.60.x.

  • Det går inte att hämta en ny uppsättning certifikat från Key Vault just nu.

  • Använd en tillförlitlig nätverksanslutning. aks-engine rotate-certs kräver körning av flera fjärrkommandon, som kan misslyckas, främst om anslutningen till klusternoderna inte är tillförlitlig. Om du kör aks-engine rotate-certs från en virtuell dator som körs på Azure Stack-målstämpeln kan du minska förekomsten av tillfälliga problem.

Parametrar

Parameter Krävs Beskrivning
--api-model ja Relativ sökväg till DEN API-modell (klusterdefinition) som deklarerar den förväntade klusterkonfigurationen.
--ssh-host ja Fullständigt kvalificerat domännamn (FQDN) eller IP-adress för en SSH-lyssnare som kan nå alla noder i klustret.
--linux-ssh-private-key ja Sökväg till en giltig privat SSH-nyckel för åtkomst till klustrets Linux-noder.
--Plats ja Azure-plats där klustret distribueras.
--subscription-id ja Azure-prenumeration där klusterinfrastrukturen distribueras.
--resource-group ja Azure-resursgrupp där klusterinfrastrukturen distribueras.
--client-id Beror Klient-ID för tjänstens huvudnamn. Krävs om autentiseringsmetoden är inställd på client_secret eller client_certificate.
--client-secret Beror Klienthemligheten för tjänstens huvudnamn. Krävs om autentiseringsmetoden är inställd på client_secret.
--azure-env Beror Namnet på målmolnet. Valfritt om målmolnet är AzureCloud.
--certificate-profile nej Relativ sökväg till en JSON-fil som innehåller den nya uppsättningen certifikat.
--Kraft nej Framtvinga körning även om API-servern inte svarar.

Enkla steg för att rotera certifikat

När du har läst alla krav för AKS-motorversionerna 0.75.3 och senare kör aks-engine-azurestack rotate-certs du med lämpliga argument (se nedan).

När du har läst alla krav för AKS-motorversionerna 0.73.0 och senare kör aks-engine rotate-certs du med lämpliga argument:

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

Exempel:

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

Rotera front-proxy certifikat

Anteckning

För AKSe version 0.75.3 och senare börjar kommandona för certifikatrotation med aks-engine-azurestack i stället aks-engineför .

AKS-motorn skapar en separat PKI för som en del av startprocessen för front-proxy noder och levererar dem till alla noder via etcd. För att effektivt återanvända den här funktionen rotate-certs måste du ersätta certifikaten som lagras i etcd. Certifikaten front-proxy upphör att gälla efter 30 år. aks-engine rotate-certs roterar klientproxycertifikaten.

Felsökning

Anteckning

För AKSe version 0.75.3 och senare börjar kommandona för certifikatrotation med aks-engine-azurestack i stället aks-engineför .

Om certifikatrotationsprocessen stoppas innan den slutförs på grund av ett fel eller ett tillfälligt problem, till exempel nätverksanslutning, är det säkert att köra aks-engine rotate-certs om med hjälp av --force flaggan.

Observera också att aks-engine rotate-certs loggar utdata från varje steg i filen /var/log/azure/rotate-certs.log (Linux) och c:\\k\\rotate-certs.log (Windows).

Mer information om vad som händer under huven när du kör den här åtgärden eller för ytterligare anpassning finns under Huven.

Nästa steg