Delen via


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

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

  • De AKS-API-server maakt een CA met de naam Cluster-CA.
  • De API-server heeft een cluster-CA, die certificaten ondertekent voor eenrichtingscommunicatie 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 uitgeven 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 leest u hoe u aangepaste CA's maakt en deze toepast op uw AKS-clusters.

Vereisten

  • Een Azure-abonnement. Als u nog geen Azure-abonnement hebt, maakt u een gratis account.
  • Azure CLI geïnstalleerd (versie 2.43.0 of hoger).
  • Een met 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 selfservice, opt-in basis. Previews worden geleverd 'zoals is' en 'als beschikbaar' en ze worden 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 aks-preview-extensie 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 weergeeft, vernieuwt u de registratie van de Microsoft.ContainerService-resourceprovider 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 met maximaal 10 lege regel gescheiden certificaten doorgeven tijdens az aks create of az aks update bewerkingen. Voorbeeldtekstbestand:

    -----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 \
        --generate-ssh-keys
    

CA-rotatie voor beschikbaarheid tijdens opstarten van knooppuntgroep

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

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

    Notitie

    Met deze bewerking wordt een modelupdate geactiveerd, zodat nieuwe knooppunten beschikken over de nieuwste CA's die vereist zijn voor de juiste inrichting. AKS maakt extra knooppunten, verwijdert bestaande knooppunten, verwijdert ze en vervangt ze 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. Met deze methode kunt u certificaatrotatie uitvoeren zonder dat u knooppuntrecreatie nodig hebt.

  • Maak een YAML-manifest van [Kubernetes-secret][kubernetes-secrets] met de 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 uit dit geheim worden gebruikt om CA's op alle knooppunten bij te werken. Zorg ervoor dat het geheim een naam custom-ca-trust-secret heeft en wordt gemaakt in de kube-system naamruimte. Het installeren van CA's met behulp van het geheim in de kube-system naamruimte maakt ca-rotatie mogelijk zonder dat er 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

    opnieuw opstarten in een container op het knooppunt is mogelijk vereist voordat de CA's correct worden opgehaald. Als het lijkt alsof CA's niet correct worden toegevoegd aan het vertrouwensarchief van uw knooppunt, kunt u opnieuw opstarten activeren met behulp van 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 \
        --generate-ssh-keys
    

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 voor het gebruik van aangepaste CA's met CA's die zijn geïnstalleerd voordat het knooppunt wordt opgestart met behulp van de az aks create opdracht en --enable-custom-ca-trust --custom-ca-trust-certificates parameters.

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

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 deze 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 voor het gebruik van een aangepaste CA 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 van kracht te laten worden. Deze bewerking gebeurt automatisch als onderdeel van de afstemmingslus van AKS. Voordat de bewerking wordt uitgevoerd, worden de daemonsets 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 van kracht te laten worden. Deze bewerking gebeurt automatisch als onderdeel van de afstemmingslus van AKS. Voordat de bewerking wordt uitgevoerd, worden de daemonsets 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.

Probleemoplossing

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

Onjuist opgemaakte certificaten die zijn doorgegeven in het geheim

AKS vereist dat certificaten die zijn doorgegeven in het door de gebruiker gemaakte geheim, correct zijn opgemaakt en base64-gecodeerd. 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 base64 worden gecodeerd.

containerd heeft geen nieuwe certificaten opgehaald

Voer de shell van het knooppunt uit systemctl restart containerd. 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.