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-engine
för .
Du behöver åtkomst till API-modellen (
apimodel.json
) som genererades av kommandonaaks-engine deploy
elleraks-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 ursprungligaaks-engine
distributionen, till exempel måste virtuella datorer följa namngivningen som tillhandahålls avaks-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 medaks-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öraks-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-engine
fö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-engine
fö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
- Läs mer om AKS-motorn på Azure Stack Hub
Feedback
https://aka.ms/ContentUserFeedback.
Kommer snart: Under hela 2024 kommer vi att fasa ut GitHub-problem som feedbackmekanism för innehåll och ersätta det med ett nytt feedbacksystem. Mer information finns i:Skicka och visa feedback för