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:
Installeer de aks-preview-extensie met behulp van de
az extension add
opdracht.az extension add --name aks-preview
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
Registreer de
CustomCATrustPreview
functievlag met behulp van deaz feature register
opdracht.az feature register --namespace "Microsoft.ContainerService" --name "CustomCATrustPreview"
Het duurt enkele minuten voordat de status Geregistreerd wordt weergegeven.
Controleer de registratiestatus met behulp van de
az feature show
opdracht.az feature show --namespace "Microsoft.ContainerService" --name "CustomCATrustPreview"
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
ofaz 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 de knooppuntgroep met behulp van de
az aks create
opdracht en geef het tekstbestand voor de--custom-ca-trust-certificates
parameter op.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-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 <resource-group-name> \ --name <cluster-name> \ --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 Kubernetes-geheim YAML-manifest met uw met 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 dekube-system
naamruimte. Het installeren van CA's met behulp van het geheim in dekube-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 <resource-group-name> \ --name <cluster-name> \ --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 <resource-group-name> \ --name <cluster-name> \ --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 <resource-group-name> \ --name <cluster-name> \ --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 <cluster-name> \ --resource-group <resource-group-name> \ --name <node-pool-name> \ --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-ca-trust
parameter.az aks nodepool update \ --resource-group <resource-group-name> \ --cluster-name <cluster-name> \ --name <node-pool-name> \ --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.
Aangepaste CA uitschakelen in een knooppuntgroep
Schakel de aangepaste CA-functie in een bestaande knooppuntgroep uit met behulp van de
az aks nodepool update
opdracht met de--disable-custom-ca-trust
parameter.az aks nodepool update \ --resource-group <resource-group-name> \ --cluster-name <cluster-name> \ --name <node-pool-name> \ --disable-custom-ca-trust
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.
Azure Kubernetes Service