Anpassad certifikatutfärdare (CA) i Azure Kubernetes Service (AKS) (förhandsversion)
AKS genererar och använder följande certifikat, certifikatutfärdare (CA) och tjänstkonton (SA):
- AKS API-servern skapar en ca som kallas kluster-CA:n.
- API-servern har en kluster-CA som signerar certifikat för enkelriktad kommunikation från API-servern till kubelets.
- Varje kubelet skapar också en begäran om certifikatsignering (CSR), som signeras av klustercertifikatutfärdaren, för kommunikation från kubelet till API-servern.
- API-aggregatorn använder klustercertifikatutfärdaren för att utfärda certifikat för kommunikation med andra API:er. API-aggregatorn kan också ha en egen certifikatutfärdare för att utfärda dessa certifikat, men den använder för närvarande klustercertifikatutfärdaren.
- Varje nod använder en SA-token som signeras av kluster-CA:en.
- Klienten
kubectl
har ett certifikat för kommunikation med AKS-klustret.
Du kan också skapa anpassade certifikatutfärdare som gör att du kan upprätta förtroende mellan dina Azure Kubernetes Service-kluster (AKS) och arbetsbelastningar, till exempel privata register, proxyservrar och brandväggar. En Kubernetes-hemlighet lagrar certifikatutfärdarens information och skickas sedan till alla noder i klustret. Den här funktionen tillämpas per nodpool, så du måste aktivera den på nya och befintliga nodpooler.
Den här artikeln visar hur du skapar anpassade certifikatutfärdare och tillämpar dem på dina AKS-kluster.
Förutsättningar
- En Azure-prenumeration. Om du inte har någon Azure-prenumeration kan du skapa ett kostnadsfritt konto.
- Azure CLI installerat (version 2.43.0 eller senare).
- En base64-kodad certifikatsträng eller en textfil med certifikat.
Begränsningar
- Den här funktionen stöds för närvarande inte för Windows-nodpooler.
Installera Azure CLI-tillägget aks-preview
Viktigt
AKS-förhandsversionsfunktioner är tillgängliga via självbetjäning. Förhandsversioner tillhandahålls "som är" och "som tillgängliga" och de undantas från serviceavtalen och den begränsade garantin. AKS-förhandsversioner omfattas delvis av kundsupport på bästa sätt. Därför är dessa funktioner inte avsedda för produktionsanvändning. Mer information finns i följande supportartiklar:
Installera aks-preview-tillägget med kommandot
az extension add
.az extension add --name aks-preview
Uppdatera till den senaste versionen av tillägget med kommandot
az extension update
.az extension update --name aks-preview
Registrera funktionsflaggan CustomCATrustPreview
Registrera funktionsflaggan
CustomCATrustPreview
az feature register
med kommandot .az feature register --namespace "Microsoft.ContainerService" --name "CustomCATrustPreview"
Det tar några minuter för statusen att visa Registrerad.
Kontrollera registreringsstatusen
az feature show
med kommandot .az feature show --namespace "Microsoft.ContainerService" --name "CustomCATrustPreview"
När statusen visar Registrerad uppdaterar du registreringen av resursprovidern Microsoft.ContainerService med hjälp av
az provider register
kommandot .az provider register --namespace Microsoft.ContainerService
Anpassad CA-installation på AKS-nodpooler
Installera certifikatutfärdare i AKS-nodpooler
Om din miljö kräver att dina anpassade certifikatutfärdare läggs till i nodförtroendearkivet för korrekt etablering måste du skicka en textfil som innehåller upp till 10 tomma radavgränsade certifikat under
az aks create
elleraz aks update
åtgärder. Exempeltextfil:-----BEGIN CERTIFICATE----- cert1 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- cert2 -----END CERTIFICATE-----
Installera certifikatutfärdare när nodpoolen skapas
Installera certifikatutfärdare när nodpoolen skapas med parametern [
az aks create][az-aks-create] command and specifying your text file for the
--custom-ca-trust-certificates.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 2 \ --enable-custom-ca-trust \ --custom-ca-trust-certificates pathToFileWithCAs
CA-rotation för tillgänglighet vid start av nodpool
Uppdatera certifikatutfärdare som skickas till klustret under start med kommandot
az aks update
och ange textfilen för parametern--custom-ca-trust-certificates
.az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --custom-ca-trust-certificates pathToFileWithCAs
Anteckning
Den här åtgärden utlöser en modelluppdatering, vilket säkerställer att nya noder har de senaste certifikatutfärdarna som krävs för korrekt etablering. AKS skapar ytterligare noder, tömmer befintliga noder, tar bort dem och ersätter dem med noder som har den nya uppsättningen certifikatutfärdare installerade.
Installera certifikatutfärdare när nodpoolen har skapats
Om din miljö kan etableras utan dina anpassade certifikatutfärdare kan du ange certifikatutfärdarna genom att distribuera en hemlighet i kube-system
namnområdet. Med den här metoden kan du rotera certifikat utan att behöva återskapa noderna.
Skapa ett [Kubernetes-hemlighet][kubernetes-secrets] YAML-manifest med din base64-kodade certifikatsträng i fältet
data
.apiVersion: v1 kind: Secret metadata: name: custom-ca-trust-secret namespace: kube-system type: Opaque data: ca1.crt: | {base64EncodedCertStringHere} ca2.crt: | {anotherBase64EncodedCertStringHere}
Data från den här hemligheten används för att uppdatera certifikatutfärdare på alla noder. Kontrollera att hemligheten heter
custom-ca-trust-secret
och skapas ikube-system
namnområdet. Genom att installera certifikatutfärdare med hjälp av hemlighetenkube-system
i namnområdet kan ca-rotation användas utan att nodernas rekreation behövs. Om du vill uppdatera eller ta bort en ca kan du redigera och tillämpa YAML-manifestet. Klustret söker efter ändringar och uppdaterar noderna därefter. Det kan ta några minuter innan ändringarna tillämpas.Anteckning
omstart av containern på noden kan krävas för att certifikatutfärdarna ska kunna hämtas korrekt. Om det verkar som om certifikatutfärdare inte läggs till korrekt i nodens förtroendearkiv kan du utlösa en omstart med hjälp av följande kommando från nodens gränssnitt:
systemctl restart containerd
Konfigurera ett nytt AKS-kluster för att använda en anpassad certifikatavfärdare
Konfigurera ett nytt AKS-kluster för att använda en anpassad certifikatavfärdare
az aks create
med kommandot med parametern--enable-custom-ca-trust
.az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 2 \ --enable-custom-ca-trust
Konfigurera ett nytt AKS-kluster för att använda en anpassad certifikatutfärdare med certifikatutfärdare installerade innan noden startas
Konfigurera ett nytt AKS-kluster för att använda anpassad certifikatutfärdare med certifikatutfärdare installerade innan noden startar med
az aks create
kommandot och--enable-custom-ca-trust
--custom-ca-trust-certificates
parametrarna .az aks create \ --resource-group myResourceGroup \ --name myAKSCluster \ --node-count 2 \ --enable-custom-ca-trust \ --custom-ca-trust-certificates pathToFileWithCAs
Konfigurera ett befintligt AKS-kluster så att anpassade certifikatutfärdare installeras innan noden startas
Konfigurera ett befintligt AKS-kluster så att dina anpassade certifikatutfärdare läggs till i nodens förtroendearkiv innan det startar med
az aks update
kommandot med parametern--custom-ca-trust-certificates
.az aks update \ --resource-group myResourceGroup \ --name myAKSCluster \ --custom-ca-trust-certificates pathToFileWithCAs
Konfigurera en ny nodpool så att den använder en anpassad CERTIFIKAT
Konfigurera en ny nodpool så att den använder en anpassad ca med
az aks nodepool add
kommandot med parametern--enable-custom-ca-trust
.az aks nodepool add \ --cluster-name myAKSCluster \ --resource-group myResourceGroup \ --name myNodepool \ --enable-custom-ca-trust \ --os-type Linux
Om det inte finns några andra nodpooler med funktionen aktiverad måste klustret stämma av inställningarna för att ändringarna ska börja gälla. Den här åtgärden sker automatiskt som en del av AKS stämlingsloop. Före åtgärden visas inte daemonuppsättningen och poddarna i klustret. Du kan utlösa en omedelbar stämningsåtgärd med kommandot
az aks update
. Daemonuppsättningen och poddarna visas när uppdateringen har slutförts.
Konfigurera en befintlig nodpool så att den använder en anpassad CERTIFIKAT
Konfigurera en befintlig nodpool så att den använder en anpassad ca med
az aks nodepool update
kommandot med parametern--enable-custom-trust-ca
.az aks nodepool update \ --resource-group myResourceGroup \ --cluster-name myAKSCluster \ --name myNodepool \ --enable-custom-ca-trust
Om det inte finns några andra nodpooler med funktionen aktiverad måste klustret stämma av inställningarna för att ändringarna ska börja gälla. Den här åtgärden sker automatiskt som en del av AKS stämlingsloop. Före åtgärden visas inte daemonuppsättningen och poddarna i klustret. Du kan utlösa en omedelbar stämningsåtgärd med kommandot
az aks update
. Daemonuppsättningen och poddarna visas när uppdateringen har slutförts.
Felsökning
Funktionen är aktiverad och hemlighet med certifikatutfärdare läggs till, men åtgärderna misslyckas med X.509-certifikat signerat av okänd utfärdare
Felaktigt formaterade certifikat som skickats i hemligheten
AKS kräver att certifikat som skickas i den användarskapade hemligheten är korrekt formaterade och base64-kodade. Kontrollera att certifikatutfärdarna som du skickade är korrekt base64-kodade och att filer med certifikatutfärdare inte har CRLF-radbrytningar.
Certifikat som skickas till --custom-ca-trust-certificates
bör inte vara base64-kodade.
containerd har inte hämtat nya certifikat
Från nodens gränssnitt kör du systemctl restart containerd
. När containern har startats om hämtas de nya certifikaten korrekt av containerkörningen.
Nästa steg
Mer information om metodtips för AKS-säkerhet finns i Metodtips för klustersäkerhet och uppgraderingar i Azure Kubernetes Service (AKS).