Verifiëren bij Azure Container Registry (ACR) vanuit Azure Kubernetes Service (AKS)

Wanneer u Azure Container Registry (ACR) gebruikt met Azure Kubernetes Service (AKS), moet u een verificatiemechanisme instellen. U kunt de vereiste machtigingen tussen ACR en AKS configureren met behulp van de Azure CLI, Azure PowerShell of Azure Portal. Dit artikel bevat voorbeelden voor het configureren van verificatie tussen deze Azure-services met behulp van de Azure CLI of Azure PowerShell.

De AKS to ACR-integratie wijst de AcrPull-rol toe aan de door Microsoft Entra ID beheerde identiteit die is gekoppeld aan de agentgroep in uw AKS-cluster. Zie Samenvatting van beheerde identiteiten in AKS voor meer informatie over beheerde AKS-identiteiten.

Belangrijk

Er is een latentieprobleem met Microsoft Entra-groepen bij het koppelen van ACR. Als de AcrPull-rol wordt verleend aan een Microsoft Entra-groep en de kubelet-identiteit wordt toegevoegd aan de groep om de RBAC-configuratie te voltooien, kan er een vertraging optreden voordat de RBAC-groep van kracht wordt. Als u automatisering uitvoert waarvoor de RBAC-configuratie is voltooid, raden we u aan uw eigen kubelet-identiteit als tijdelijke oplossing te gebruiken. U kunt vooraf een door de gebruiker toegewezen identiteit maken, deze toevoegen aan de Microsoft Entra-groep en vervolgens de identiteit gebruiken als kubelet-identiteit om een AKS-cluster te maken. Dit zorgt ervoor dat de identiteit wordt toegevoegd aan de Microsoft Entra-groep voordat een token wordt gegenereerd door kubelet, waardoor het latentieprobleem wordt voorkomen.

Notitie

Dit artikel bevat informatie over automatische verificatie tussen AKS en ACR. Als u een installatiekopie uit een persoonlijk extern register wilt ophalen, gebruikt u een pull-geheim voor installatiekopieën.

Voordat u begint

Een nieuwe ACR maken

  • Als u nog geen ACR hebt, maakt u er een met behulp van de az acr create opdracht. In het volgende voorbeeld wordt de MYACR variabele ingesteld op de naam van de ACR, mycontainerregistry en wordt de variabele gebruikt om het register te maken. Uw ACR-naam moet wereldwijd uniek zijn en alleen kleine letters gebruiken.

    MYACR=mycontainerregistry
    
    az acr create -n $MYACR -g myContainerRegistryResourceGroup --sku basic
    

Een nieuw AKS-cluster maken en integreren met een bestaande ACR

  • Maak een nieuw AKS-cluster en integreer met een bestaande ACR met behulp van de az aks create opdracht met de --attach-acr parameter. Met deze opdracht kunt u een bestaande ACR in uw abonnement autoriseren en de juiste AcrPull-rol configureren voor de beheerde identiteit.

    MYACR=mycontainerregistry
    
    az aks create -n myAKSCluster -g myResourceGroup --generate-ssh-keys --attach-acr $MYACR
    

    Het uitvoeren van deze opdracht kan enkele minuten in beslag nemen.

    Notitie

    Als u een ACR gebruikt in een ander abonnement dan uw AKS-cluster of liever de ACR-resource-id gebruikt in plaats van de ACR-naam, kunt u dit doen met behulp van de volgende syntaxis:

    az aks create -n myAKSCluster -g myResourceGroup --generate-ssh-keys --attach-acr /subscriptions/<subscription-id>/resourceGroups/myContainerRegistryResourceGroup/providers/Microsoft.ContainerRegistry/registries/myContainerRegistry
    

ACR-integratie configureren voor een bestaand AKS-cluster

Een ACR koppelen aan een bestaand AKS-cluster

Een ACR loskoppelen van een AKS-cluster

  • Verwijder de integratie tussen een ACR en een AKS-cluster met behulp van de az aks update opdracht met de --detach-acr parameter en een geldige waarde voor acr-name of acr-resource-id.

    # Detach using acr-name
    az aks update -n myAKSCluster -g myResourceGroup --detach-acr <acr-name>
    
    # Detach using acr-resource-id
    az aks update -n myAKSCluster -g myResourceGroup --detach-acr <acr-resource-id>
    

Werken met ACR & AKS

Een installatiekopieën importeren in uw ACR

  • Importeer een installatiekopieën uit Docker Hub in uw ACR met behulp van de az acr import opdracht.

    az acr import  -n <acr-name> --source docker.io/library/nginx:latest --image nginx:v1
    

De voorbeeldinstallatiekopieën van ACR implementeren in AKS

  1. Zorg ervoor dat u de juiste AKS-referenties hebt met behulp van de az aks get-credentials opdracht.

    az aks get-credentials -g myResourceGroup -n myAKSCluster
    
  2. Maak een bestand met de naam acr-nginx.yaml met behulp van het volgende YAML-voorbeeld en vervang acr-name door de naam van uw ACR.

    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
    
  3. Voer de implementatie uit in uw AKS-cluster met behulp van de kubectl apply opdracht.

    kubectl apply -f acr-nginx.yaml
    
  4. Bewaak de implementatie met behulp van de kubectl get pods opdracht.

    kubectl get pods
    

    In de uitvoer moeten twee actieve pods worden weergegeven, zoals wordt weergegeven in de volgende voorbeelduitvoer:

    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