Verifiëren bij Azure Container Registry vanuit Azure Kubernetes Service
Wanneer u ACR (Azure Container Registry) met AKS (Azure Kubernetes Service) gebruikt, moet er een verificatiemechanisme tot stand worden gebracht. Deze bewerking wordt geïmplementeerd als onderdeel van de CLI, PowerShell en portal door de vereiste machtigingen aan uw ACR te verlenen. Dit artikel bevat voorbeelden voor het configureren van verificatie tussen deze twee Azure-services.
U kunt de AKS instellen op ACR-integratie in een paar eenvoudige opdrachten met de Azure CLI of Azure PowerShell. Met deze integratie wordt de AcrPull-rol toegewezen aan de beheerde identiteit die is gekoppeld aan het AKS-cluster.
Notitie
Dit artikel bevat informatie over automatische verificatie tussen AKS en ACR. Als u een installatiekopie wilt ophalen uit een persoonlijk extern register, gebruikt u een pull-geheim voor installatiekopieën.
Voordat u begint
Voor deze voorbeelden is het volgende vereist:
- De rol Eigenaar, Azure-accountbeheerder of Medebeheerder van Azure in het Azure-abonnement
- Azure CLI versie 2.7.0 of hoger
U kunt een bestaande beheerde identiteit gebruiken om ACR te verifiëren vanuit AKS om te voorkomen dat u de rol Eigenaar, Azure-accountbeheerder of Medebeheerder van Azure nodig hebt. Zie Een door Azure beheerde identiteit gebruiken om te verifiëren bij een Azure-containerregister voor meer informatie.
Een nieuw AKS-cluster maken met ACR-integratie
U kunt AKS- en ACR-integratie instellen tijdens het maken van uw AKS-cluster. Een Azure Active Directory beheerde identiteit wordt gebruikt om een AKS-cluster te laten communiceren met ACR. Met de volgende opdracht kunt u een bestaande ACR in uw abonnement autoriseren en de juiste ACRPull-rol configureren voor de beheerde identiteit. Geef hieronder geldige waarden op voor uw parameters.
# set this to the name of your Azure Container Registry. It must be globally unique
MYACR=myContainerRegistry
# Run the following line to create an Azure Container Registry if you do not already have one
az acr create -n $MYACR -g myContainerRegistryResourceGroup --sku basic
# Create an AKS cluster with ACR integration
az aks create -n myAKSCluster -g myResourceGroup --generate-ssh-keys --attach-acr $MYACR
U kunt ook de ACR-naam opgeven met behulp van een ACR-resource-id, die de volgende indeling heeft:
/subscriptions/\<subscription-id\>/resourceGroups/\<resource-group-name\>/providers/Microsoft.ContainerRegistry/registries/\<name\>
Notitie
Als u een ACR gebruikt die zich in een ander abonnement bevindt dan uw AKS-cluster, gebruikt u de ACR-resource-id bij het koppelen of loskoppelen van een AKS-cluster.
az aks create -n myAKSCluster -g myResourceGroup --generate-ssh-keys --attach-acr /subscriptions/<subscription-id>/resourceGroups/myContainerRegistryResourceGroup/providers/Microsoft.ContainerRegistry/registries/myContainerRegistry
Deze stap kan enkele minuten duren.
ACR-integratie configureren voor bestaande AKS-clusters
Integreer een bestaande ACR met bestaande AKS-clusters door geldige waarden op te geven voor acr-name of acr-resource-id zoals hieronder.
az aks update -n myAKSCluster -g myResourceGroup --attach-acr <acr-name>
Of
az aks update -n myAKSCluster -g myResourceGroup --attach-acr <acr-resource-id>
Notitie
Wordt uitgevoerd az aks update --attach-acr , gebruikt de machtigingen van de gebruiker die de opdracht uitvoert om de rol ACR-toewijzing te maken. Deze rol wordt toegewezen aan de beheerde kubelet-identiteit. Zie Samenvatting van beheerde identiteiten in AKS voor meer informatie over de beheerde AKS-identiteiten.
U kunt ook de integratie tussen een ACR- en een AKS-cluster verwijderen met het volgende
az aks update -n myAKSCluster -g myResourceGroup --detach-acr <acr-name>
of
az aks update -n myAKSCluster -g myResourceGroup --detach-acr <acr-resource-id>
Werken met ACR & AKS
Een afbeelding importeren in uw ACR
Importeer een installatiekopieën van docker Hub in uw ACR door het volgende uit te voeren:
az acr import -n <acr-name> --source docker.io/library/nginx:latest --image nginx:v1
De voorbeeldinstallatiekopieën van ACR implementeren in AKS
Zorg ervoor dat u over de juiste AKS-referenties beschikt
az aks get-credentials -g myResourceGroup -n myAKSCluster
Maak een bestand met de naam acr-nginx.yaml dat het volgende bevat. Vervang de resourcenaam van het register door acr-name. Voorbeeld: myContainerRegistry.
apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx0-deployment
labels:
app: nginx0-deployment
spec:
replicas: 2
selector:
matchLabels:
app: nginx0
template:
metadata:
labels:
app: nginx0
spec:
containers:
- name: nginx
image: <acr-name>.azurecr.io/nginx:v1
ports:
- containerPort: 80
Voer vervolgens deze implementatie uit in uw AKS-cluster:
kubectl apply -f acr-nginx.yaml
U kunt de implementatie bewaken door het volgende uit te voeren:
kubectl get pods
U moet twee actieve pods hebben.
NAME READY STATUS RESTARTS AGE
nginx0-deployment-669dfc4d4b-x74kr 1/1 Running 0 20s
nginx0-deployment-669dfc4d4b-xdpd6 1/1 Running 0 20s
Problemen oplossen
- Voer de az aks check-acr-opdracht uit om te controleren of het register toegankelijk is vanuit het AKS-cluster.
- Meer informatie over ACR Monitoring
- Meer informatie over ACR Health