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.
Feljegyzé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.
Mielőtt elkezdené
- Az Azure-előfizetéshez tulajdonosi, Azure-fiókadminisztrátori vagy Azure-társadminisztrátori szerepkörre van szüksége.
- Az ilyen szerepkörök használatának elkerülése érdekében ehelyett használhat egy meglévő felügyelt identitást az ACR AKS-ből való hitelesítéséhez. További információ: Azure-beli felügyelt identitás használata ACR-hitelesítéshez.
- 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ótMYACR
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 --name $MYACR --resource-group 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 --name myAKSCluster --resource-group myResourceGroup --generate-ssh-keys --attach-acr $MYACR
A parancs végrehajtása több percet is igénybe vehet.
Feljegyzé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 --name myAKSCluster --resource-group myResourceGroup --attach-acr <acr-name> # Attach using acr-resource-id az aks update --name myAKSCluster --resource-group myResourceGroup --attach-acr <acr-resource-id>
Feljegyzé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 --name myAKSCluster --resource-group myResourceGroup --detach-acr <acr-name> # Detach using acr-resource-id az aks update --name myAKSCluster --resource-group 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 --name <acr-name> --source docker.io/library/nginx:latest --image nginx:v1
A mintarendszerkép üzembe helyezése az ACR-ből az AKS-ben
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 --resource-group myResourceGroup --name myAKSCluster
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
Futtassa az üzembe helyezést az AKS-fürtben a
kubectl apply
paranccsal.kubectl apply -f acr-nginx.yaml
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.
Azure Kubernetes Service