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:
Installeer de extensie aks-preview 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 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
ofaz 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 dekube-system
naamruimte. Als u CA's installeert met behulp van het geheim in dekube-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 containerd
vanuit de shell van het knooppunt. Zodra de container opnieuw is opgestart, worden de nieuwe certificaten correct opgehaald door de containerruntime.