Aangepaste certificeringsinstantie (CA) in Azure Kubernetes Service (AKS) (preview)

AKS genereert en gebruikt de volgende certificaten, certificeringsinstanties (CA's) en serviceaccounts (SA's):

  • De AKS API-server maakt een CA met de naam cluster-CA.
  • De API-server heeft een cluster-CA, die certificaten ondertekent voor communicatie in één richting van de API-server naar kubelets.
  • Elke kubelet maakt ook een aanvraag voor certificaatondertekening (CSR), die is ondertekend door de cluster-CA, voor communicatie van de kubelet naar de API-server.
  • De API-aggregator gebruikt de cluster-CA om certificaten uit te geven voor communicatie met andere API's. De API-aggregator kan ook een eigen CA hebben voor het verlenen van deze certificaten, maar momenteel wordt de cluster-CA gebruikt.
  • Elk knooppunt maakt gebruik van een SA-token, dat is ondertekend door de cluster-CA.
  • De kubectl client heeft een certificaat voor communicatie met het AKS-cluster.

U kunt ook aangepaste certificeringsinstanties maken, waarmee u een vertrouwensrelatie tot stand kunt brengen tussen uw AKS-clusters (Azure Kubernetes Service) en workloads, zoals privéregisters, proxy's en firewalls. In een Kubernetes-geheim worden de gegevens van de certificeringsinstantie opgeslagen en vervolgens doorgegeven aan alle knooppunten in het cluster. Deze functie wordt toegepast per knooppuntgroep, dus u moet deze inschakelen voor nieuwe en bestaande knooppuntgroepen.

In dit artikel wordt beschreven hoe u aangepaste CA's maakt en deze toepast op uw AKS-clusters.

Vereisten

  • Een Azure-abonnement. Als u nog geen abonnement op Azure hebt, maakt u een gratis account aan.
  • Azure CLI geïnstalleerd (versie 2.43.0 of hoger).
  • Een base64-gecodeerde certificaattekenreeks of een tekstbestand met certificaat.

Beperkingen

  • Deze functie wordt momenteel niet ondersteund voor Windows-knooppuntgroepen.

aks-preview De Azure CLI-extensie installeren

Belangrijk

AKS-preview-functies zijn beschikbaar op basis van selfservice, opt-in. Previews worden geleverd 'in de staat waarin' en 'zoals beschikbaar' en zijn uitgesloten van de serviceovereenkomsten en beperkte garantie. AKS-previews worden gedeeltelijk gedekt door klantondersteuning op basis van best effort. Daarom zijn deze functies niet bedoeld voor productiegebruik. Zie de volgende ondersteuningsartikelen voor meer informatie:

  1. Installeer de extensie aks-preview met behulp van de az extension add opdracht .

    az extension add --name aks-preview
    
  2. Werk bij naar de nieuwste versie van de extensie met behulp van de az extension update opdracht .

    az extension update --name aks-preview
    

CustomCATrustPreview De functievlag registreren

  1. Registreer de CustomCATrustPreview functievlag met behulp van de az feature register opdracht .

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

    Het duurt enkele minuten voordat de status Geregistreerd wordt weergegeven.

  2. Controleer de registratiestatus met behulp van de az feature show opdracht .

    az feature show --namespace "Microsoft.ContainerService" --name "CustomCATrustPreview"
    
  3. Wanneer de status Geregistreerd aangeeft, vernieuwt u de registratie van de resourceprovider Microsoft.ContainerService met behulp van de az provider register opdracht .

    az provider register --namespace Microsoft.ContainerService
    

Aangepaste CA-installatie in AKS-knooppuntgroepen

CA's installeren in AKS-knooppuntgroepen

  • Als uw omgeving vereist dat uw aangepaste CA's worden toegevoegd aan het vertrouwensarchief van knooppunten voor de juiste inrichting, moet u een tekstbestand doorgeven met maximaal 10 lege, door regels gescheiden certificaten tijdens az aks create of az aks update bewerkingen. Voorbeeld van tekstbestand:

    -----BEGIN CERTIFICATE-----
    cert1
    -----END CERTIFICATE-----
    
    -----BEGIN CERTIFICATE-----
    cert2
    -----END CERTIFICATE-----
    

CA's installeren tijdens het maken van een knooppuntgroep

  • Installeer CA's tijdens het maken van een knooppuntgroep met behulp van de parameter [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-rotatie voor beschikbaarheid tijdens het opstarten van de knooppuntgroep

  • Werk CA's bij die tijdens het opstarten aan uw cluster zijn doorgegeven met behulp van de az aks update opdracht en het opgeven van uw tekstbestand voor de --custom-ca-trust-certificates parameter.

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --custom-ca-trust-certificates pathToFileWithCAs
    

    Notitie

    Met deze bewerking wordt een modelupdate geactiveerd, zodat nieuwe knooppunten over de nieuwste CA's beschikken die nodig zijn voor de juiste inrichting. AKS maakt extra knooppunten, verwijdert bestaande knooppunten, verwijdert deze en vervangt deze door knooppunten waarop de nieuwe set CA's is geïnstalleerd.

CA's installeren na het maken van een knooppuntgroep

Als uw omgeving kan worden ingericht zonder uw aangepaste CA's, kunt u de CA's opgeven door een geheim in de kube-system naamruimte te implementeren. Deze benadering maakt certificaatrotatie mogelijk zonder dat knooppunten opnieuw hoeven te worden gebruikt.

  • Maak een YAML-manifest [Kubernetes-secret][kubernetes-secrets] met uw base64 gecodeerde certificaattekenreeks in het data veld.

    apiVersion: v1
    kind: Secret
    metadata: 
        name: custom-ca-trust-secret
        namespace: kube-system
    type: Opaque
    data:
        ca1.crt: |
          {base64EncodedCertStringHere}
        ca2.crt: |
          {anotherBase64EncodedCertStringHere}
    

    Gegevens van dit geheim worden gebruikt om CA's op alle knooppunten bij te werken. Zorg ervoor dat het geheim de naam custom-ca-trust-secret heeft en is gemaakt in de kube-system naamruimte. Als u CA's installeert met behulp van het geheim in de kube-system naamruimte, is ca-rotatie mogelijk zonder dat knooppuntrecreatie nodig is. Als u een CA wilt bijwerken of verwijderen, kunt u het YAML-manifest bewerken en toepassen. Het cluster peilt naar wijzigingen en werkt de knooppunten dienovereenkomstig bij. Het kan enkele minuten duren voordat wijzigingen worden toegepast.

    Notitie

    container opnieuw opstarten op het knooppunt kan vereist zijn om de CA's correct op te halen. Als het lijkt alsof CA's niet correct zijn toegevoegd aan het vertrouwensarchief van uw knooppunt, kunt u opnieuw opstarten activeren met de volgende opdracht vanuit de shell van het knooppunt:

    systemctl restart containerd

Een nieuw AKS-cluster configureren voor het gebruik van een aangepaste CA

  • Configureer een nieuw AKS-cluster om een aangepaste CA te gebruiken met behulp van de az aks create opdracht met de --enable-custom-ca-trust parameter .

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --node-count 2 \
        --enable-custom-ca-trust
    

Een nieuw AKS-cluster configureren voor het gebruik van een aangepaste CA met CA's die zijn geïnstalleerd voordat het knooppunt wordt opgestart

  • Configureer een nieuw AKS-cluster om aangepaste CA's te gebruiken met CA's die zijn geïnstalleerd voordat het knooppunt wordt opgestart met behulp van de az aks create opdracht met de --enable-custom-ca-trust parameters en --custom-ca-trust-certificates .

    az aks create \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --node-count 2 \
        --enable-custom-ca-trust \
        --custom-ca-trust-certificates pathToFileWithCAs
    

Een bestaand AKS-cluster configureren om aangepaste CA's te installeren voordat het knooppunt wordt opgestart

  • Configureer een bestaand AKS-cluster om uw aangepaste CA's toe te voegen aan het vertrouwensarchief van het knooppunt voordat het wordt opgestart met behulp van de az aks update opdracht met de --custom-ca-trust-certificates parameter .

    az aks update \
        --resource-group myResourceGroup \
        --name myAKSCluster \
        --custom-ca-trust-certificates pathToFileWithCAs
    

Een nieuwe knooppuntgroep configureren voor het gebruik van een aangepaste CA

  • Configureer een nieuwe knooppuntgroep om een aangepaste CA te gebruiken met behulp van de az aks nodepool add opdracht met de --enable-custom-ca-trust parameter .

    az aks nodepool add \
        --cluster-name myAKSCluster \
        --resource-group myResourceGroup \
        --name myNodepool \
        --enable-custom-ca-trust \
        --os-type Linux
    

    Als er geen andere knooppuntgroepen bestaan waarvoor de functie is ingeschakeld, moet het cluster de instellingen afstemmen om de wijzigingen door te voeren. Deze bewerking wordt automatisch uitgevoerd als onderdeel van de afstemmingslus van AKS. Vóór de bewerking worden de daemonset en pods niet weergegeven in het cluster. U kunt een directe afstemmingsbewerking activeren met behulp van de az aks update opdracht . De daemonset en pods worden weergegeven nadat de update is voltooid.

Een bestaande knooppuntgroep configureren voor het gebruik van een aangepaste CA

  • Configureer een bestaande knooppuntgroep om een aangepaste CA te gebruiken met behulp van de az aks nodepool update opdracht met de --enable-custom-trust-ca parameter .

    az aks nodepool update \
        --resource-group myResourceGroup \
        --cluster-name myAKSCluster \
        --name myNodepool \
        --enable-custom-ca-trust
    

    Als er geen andere knooppuntgroepen bestaan waarvoor de functie is ingeschakeld, moet het cluster de instellingen afstemmen om de wijzigingen door te voeren. Deze bewerking wordt automatisch uitgevoerd als onderdeel van de afstemmingslus van AKS. Vóór de bewerking worden de daemonset en pods niet weergegeven in het cluster. U kunt een directe afstemmingsbewerking activeren met behulp van de az aks update opdracht . De daemonset en pods worden weergegeven nadat de update is voltooid.

Problemen oplossen

Functie is ingeschakeld en geheim met CA's wordt toegevoegd, maar bewerkingen mislukken met X.509-certificaat ondertekend door onbekende instantie

Onjuist opgemaakte certificaten die zijn doorgegeven in het geheim

AKS vereist dat certificaten die worden doorgegeven in het door de gebruiker gemaakte geheim, correct worden opgemaakt en base64-codering. Zorg ervoor dat de CA's die u hebt doorgegeven, correct zijn gecodeerd met base64 en dat bestanden met CA's geen CRLF-regeleinden hebben. Certificaten die worden doorgegeven aan --custom-ca-trust-certificates mogen niet met base64 worden gecodeerd.

containerd heeft geen nieuwe certificaten opgehaald

Voer uit systemctl restart containerdvanuit de shell van het knooppunt. Zodra de container opnieuw is opgestart, worden de nieuwe certificaten correct opgehaald door de containerruntime.

Volgende stappen

Zie Best practices voor clusterbeveiliging en upgrades in Azure Kubernetes Service (AKS) voor meer informatie over best practices voor AKS-beveiliging.