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.
- API-servern har en kluster-CA som signerar certifikat för enkelriktad kommunikation från API-servern till kubelets.
- Varje kubelet skapar också en certifikatsigneringsbegäran (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 är signerad 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 och anmäl dig. 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. Exempel på textfil:-----BEGIN CERTIFICATE----- cert1 -----END CERTIFICATE----- -----BEGIN CERTIFICATE----- cert2 -----END CERTIFICATE-----
Installera certifikatutfärdare när nodpoolen skapas
Installera certifikatutfärdare när nodpoolen
az aks create
skapas med kommandot och ange textfilen för parametern--custom-ca-trust-certificates
.az aks create \ --resource-group <resource-group-name> \ --name <cluster-name> \ --node-count 2 \ --enable-custom-ca-trust \ --custom-ca-trust-certificates pathToFileWithCAs \ --generate-ssh-keys
CA-rotation för tillgänglighet under 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 <resource-group-name> \ --name <cluster-name> \ --custom-ca-trust-certificates pathToFileWithCAs
Kommentar
Den här åtgärden utlöser en modelluppdatering, vilket säkerställer att nya noder har de nyaste certifikatutfärdare 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. Den här metoden möjliggör certifikatrotation utan behov av att återskapa noder.
Skapa ett Kubernetes-hemligt 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 att den har skapatskube-system
i namnområdet. Om du installerar certifikatutfärdare med hjälp av hemlighetenkube-system
i namnområdet kan ca-rotation användas utan att noden behöver återskapas. 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 i enlighet med detta. Det kan ta några minuter innan ändringarna tillämpas.Kommentar
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 så att det använder en anpassad certifikatavfärdare med hjälp av
az aks create
kommandot med parametern--enable-custom-ca-trust
.az aks create \ --resource-group <resource-group-name> \ --name <cluster-name> \ --node-count 2 \ --enable-custom-ca-trust \ --generate-ssh-keys
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--custom-ca-trust-certificates
parametrarna--enable-custom-ca-trust
.az aks create \ --resource-group <resource-group-name> \ --name <cluster-name> \ --node-count 2 \ --enable-custom-ca-trust \ --custom-ca-trust-certificates pathToFileWithCAs \ --generate-ssh-keys
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 startas med kommandot
az aks update
med parametern--custom-ca-trust-certificates
.az aks update \ --resource-group <resource-group-name> \ --name <cluster-name> \ --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 hjälp av
az aks nodepool add
kommandot med parametern--enable-custom-ca-trust
.az aks nodepool add \ --cluster-name <cluster-name> \ --resource-group <resource-group-name> \ --name <node-pool-name> \ --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-avstämningsloopen. 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
az aks nodepool update
använder en anpassad ca med hjälp av kommandot med parametern--enable-custom-ca-trust
.az aks nodepool update \ --resource-group <resource-group-name> \ --cluster-name <cluster-name> \ --name <node-pool-name> \ --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-avstämningsloopen. 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.
Inaktivera anpassad certifikatfärdare i en nodpool
Inaktivera den anpassade CA-funktionen i en befintlig nodpool med hjälp av
az aks nodepool update
kommandot med parametern--disable-custom-ca-trust
.az aks nodepool update \ --resource-group <resource-group-name> \ --cluster-name <cluster-name> \ --name <node-pool-name> \ --disable-custom-ca-trust
Felsökning
Funktionen är aktiverad och hemligheten med certifikatutfärdare läggs till, men åtgärderna misslyckas med X.509-certifikatet 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).
Azure Kubernetes Service