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:

  1. Installera aks-preview-tillägget med kommandot az extension add .

    az extension add --name aks-preview
    
  2. Uppdatera till den senaste versionen av tillägget med kommandot az extension update .

    az extension update --name aks-preview
    

Registrera funktionsflaggan CustomCATrustPreview

  1. Registrera funktionsflaggan CustomCATrustPreviewaz feature register med kommandot .

    az feature register --namespace "Microsoft.ContainerService" --name "CustomCATrustPreview"
    

    Det tar några minuter för statusen att visa Registrerad.

  2. Kontrollera registreringsstatusen az feature show med kommandot .

    az feature show --namespace "Microsoft.ContainerService" --name "CustomCATrustPreview"
    
  3. 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 eller az 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 i kube-system namnområdet. Genom att installera certifikatutfärdare med hjälp av hemligheten kube-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).