Hitelesítés az Azure Container Registry (ACR) segítségével az Azure Kubernetes szolgáltatásból (AKS)

Ha az Azure Container Registryt (ACR) az Azure Kubernetes Service-szel (AKS) használja, létre kell hoznia egy hitelesítési mechanizmust. Az ACR és az AKS közötti szükséges engedélyeket az Azure CLI, az Azure PowerShell vagy az Azure Portal használatával konfigurálhatja. Ez a cikk példákat tartalmaz a hitelesítés konfigurálására ezen Azure-szolgáltatások között az Azure CLI vagy az Azure PowerShell használatával.

Az AKS az ACR-integrációhoz hozzárendeli az AcrPull szerepkört az AKS-fürt ügynökkészletéhez társított Microsoft Entra ID felügyelt identitáshoz . A felügyelt AKS-identitásokról további információt a felügyelt identitások összegzésében talál.

Fontos

Késési probléma merült fel a Microsoft Entra-csoportokkal az ACR csatolásakor. Ha az AcrPull szerepkör egy Microsoft Entra-csoportnak van megadva, és a kubelet-identitás hozzá lesz adva a csoporthoz az RBAC-konfiguráció befejezéséhez, az RBAC-csoport érvénybe lépése késéssel járhat. Ha olyan automatizálást futtat, amely megköveteli az RBAC-konfiguráció befejezését, javasoljuk, hogy kerülő megoldásként használja a Saját Kubelet-identitás használatát. Előre létrehozhat egy felhasználó által hozzárendelt identitást, hozzáadhatja azt a Microsoft Entra-csoporthoz, majd kubelet-identitásként használhatja az identitást egy AKS-fürt létrehozásához. Ez biztosítja az identitás hozzáadását a Microsoft Entra-csoporthoz, mielőtt a kubelet létrehoz egy jogkivonatot, ami elkerüli a késéssel kapcsolatos problémát.

Megjegyzés:

Ez a cikk az AKS és az ACR közötti automatikus hitelesítést ismerteti. Ha lemezképet szeretne lekérni egy privát külső beállításjegyzékből, használjon egy lekéréses titkos képet.

Előkészületek

  • Az Azure-előfizetéshez tulajdonosi, Azure-fiókadminisztrátori vagy Azure-társadminisztrátori szerepkörre van szüksége.
  • Az Azure CLI használata esetén ez a cikk megköveteli, hogy az Azure CLI 2.7.0-s vagy újabb verzióját futtassa. A verzió azonosításához futtassa a következőt: az --version. Ha telepíteni vagy frissíteni szeretne: Az Azure CLI telepítése.
  • Ha Az Azure PowerShellt használja, ehhez a cikkhez az Azure PowerShell 5.9.0-s vagy újabb verzióját kell futtatnia. A verzió azonosításához futtassa a következőt: Get-InstalledModule -Name Az. Ha telepíteni vagy frissíteni szeretne, olvassa el az Azure PowerShell telepítését ismertető cikket.
  • A Terraform ACR konfigurálásához használható példákat és szintaxist a Terraform-referencia tartalmazza.

Új ACR létrehozása

  • Ha még nem rendelkezik ACR-sel, hozzon létre egyet a az acr create paranccsal. Az alábbi példa a változót MYACR az ACR, a mycontainerregistry nevére állítja, és a beállításjegyzék létrehozásához használja a változót. Az ACR-névnek globálisan egyedinek kell lennie, és csak kisbetűket kell használnia.

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

Új AKS-fürt létrehozása és integrálása meglévő ACR-sel

  • Hozzon létre egy új AKS-fürtöt, és integráljon egy meglévő ACR-sel a az aks create paraméterrel rendelkező --attach-acr paranccsal. Ez a parancs lehetővé teszi egy meglévő ACR engedélyezését az előfizetésben, és konfigurálja a megfelelő AcrPull-szerepkört a felügyelt identitáshoz.

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

    A parancs végrehajtása több percet is igénybe vehet.

    Megjegyzés:

    Ha az AKS-fürttől eltérő előfizetésben található ACR-t használ, vagy inkább az ACR-erőforrás-azonosítót szeretné használni az ACR neve helyett, ezt a következő szintaxissal teheti meg:

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

ACR-integráció konfigurálása meglévő AKS-fürthöz

ACR csatolása meglévő AKS-fürthöz

  • Meglévő ACR integrálása meglévő AKS-fürttel a az aks update paraméterrel és az --attach-acr acr-name vagy acr-resource-id érvényes értékével.

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

    Megjegyzés:

    A az aks update --attach-acr parancs a parancsot futtató felhasználó engedélyeit használja az ACR-szerepkör-hozzárendelés létrehozásához. Ez a szerepkör a kubelet által felügyelt identitáshoz van rendelve. A felügyelt AKS-identitásokról további információt a felügyelt identitások összegzésében talál.

ACR leválasztása AKS-fürtről

  • Távolítsa el az ACR és az AKS-fürt közötti integrációt a az aks update paraméterrel és az --detach-acr acr-name vagy acr-resource-id érvényes értékével rendelkező paranccsal.

    # 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>
    

Az ACR &AKS használata

Kép importálása az ACR-be

  • Importáljon egy képet a Docker Hubról az ACR-be a az acr import paranccsal.

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

A mintarendszerkép üzembe helyezése az ACR-ből az AKS-ben

  1. Győződjön meg arról, hogy a parancs használatával rendelkezik a az aks get-credentials megfelelő AKS-hitelesítő adatokkal.

    az aks get-credentials -g myResourceGroup -n myAKSCluster
    
  2. Hozzon létre egy acr-nginx.yaml nevű fájlt az alábbi YAML-minta használatával, és cserélje le az acr-nevet az ACR nevére.

    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. Futtassa az üzembe helyezést az AKS-fürtben a kubectl apply paranccsal.

    kubectl apply -f acr-nginx.yaml
    
  4. Az üzembe helyezés monitorozása a kubectl get pods paranccsal.

    kubectl get pods
    

    A kimenetnek két futó podot kell megjelenítenie, ahogy az a következő példakimenetben is látható:

    NAME                                 READY   STATUS    RESTARTS   AGE
    nginx0-deployment-669dfc4d4b-x74kr   1/1     Running   0          20s
    nginx0-deployment-669dfc4d4b-xdpd6   1/1     Running   0          20s
    

Hibaelhárítás

  • Ellenőrizze, hogy a beállításjegyzék elérhető-e az AKS-fürtből a az aks check-acr paranccsal.
  • További információ az ACR monitorozásáról.
  • További információ az ACR állapotáról.