Ověření pomocí služby Azure Container Registry (ACR) ze služby Azure Kubernetes Service (AKS)
Při použití služby Azure Container Registry (ACR) se službou Azure Kubernetes Service (AKS) musíte vytvořit mechanismus ověřování. Požadovaná oprávnění mezi ACR a AKS můžete nakonfigurovat pomocí Azure CLI, Azure PowerShellu nebo webu Azure Portal. Tento článek obsahuje příklady konfigurace ověřování mezi těmito službami Azure pomocí Azure CLI nebo Azure PowerShellu.
Integrace AKS do ACR přiřadí roli AcrPull spravované identitě Microsoft Entra ID přidružené k fondu agentů ve vašem clusteru AKS. Další informace o spravovaných identitách AKS najdete v souhrnu spravovaných identit.
Důležité
Při připojování ACR došlo k problému s latencí u skupin Microsoft Entra. Pokud je role AcrPull udělena skupině Microsoft Entra a do skupiny se přidá identita kubeletu pro dokončení konfigurace RBAC, může dojít ke zpoždění, než se skupina RBAC projeví. Pokud spouštíte automatizaci, která vyžaduje dokončení konfigurace RBAC, doporučujeme jako alternativní řešení použít vlastní identitu kubeletu. Můžete předem vytvořit identitu přiřazenou uživatelem, přidat ji do skupiny Microsoft Entra a pak použít identitu jako identitu kubelet k vytvoření clusteru AKS. Tím se zajistí, že se identita přidá do skupiny Microsoft Entra před vygenerováním tokenu kubeletem, což zabrání problému s latencí.
Poznámka:
Tento článek se zabývá automatickým ověřováním mezi AKS a ACR. Pokud potřebujete načíst image z privátního externího registru, použijte tajný klíč pro vyžádání image.
Než začnete
- Ve svém předplatném Azure potřebujete roli vlastníka, správce účtu Azure nebo spolusprávce Azure.
- Abyste se vyhnuli nutnosti některé z těchto rolí, můžete místo toho použít existující spravovanou identitu k ověření ACR z AKS. Další informace najdete v tématu Použití spravované identity Azure k ověření ve službě ACR.
- Pokud používáte Azure CLI, musíte mít Azure CLI verze 2.7.0 nebo novější. Verzi zjistíte spuštěním příkazu
az --version
. Pokud potřebujete instalaci nebo upgrade, přečtěte si téma Instalace Azure CLI. - Pokud používáte Azure PowerShell, musíte mít Azure PowerShell verze 5.9.0 nebo novější. Verzi zjistíte spuštěním příkazu
Get-InstalledModule -Name Az
. Pokud potřebujete provést instalaci nebo upgrade, přečtěte si téma Instalace Azure PowerShellu. - Příklady a syntaxe pro použití Terraformu pro konfiguraci ACR najdete v referenčních informacích k Terraformu.
Vytvoření nové služby ACR
Pokud ještě nemáte ACR, vytvořte ho
az acr create
pomocí příkazu. Následující příklad nastaví proměnnouMYACR
na název ACR, mycontainerregistry a použije proměnnou k vytvoření registru. Název ACR musí být globálně jedinečný a musí používat jenom malá písmena.MYACR=mycontainerregistry az acr create --name $MYACR --resource-group myContainerRegistryResourceGroup --sku basic
Vytvoření nového clusteru AKS a integrace s existující službou ACR
Vytvořte nový cluster AKS a integrujte se stávající službou ACR pomocí
az aks create
příkazu s parametrem--attach-acr
. Tento příkaz umožňuje autorizovat existující službu ACR ve vašem předplatném a nakonfigurovat odpovídající roli AcrPull pro spravovanou identitu.MYACR=mycontainerregistry az aks create --name myAKSCluster --resource-group myResourceGroup --generate-ssh-keys --attach-acr $MYACR
Provedení tohoto příkazu může trvat i několik minut.
Poznámka:
Pokud používáte službu ACR umístěnou v jiném předplatném než v clusteru AKS nebo chcete místo názvu ACR použít ID prostředku ACR, můžete to udělat pomocí následující syntaxe:
az aks create -n myAKSCluster -g myResourceGroup --generate-ssh-keys --attach-acr /subscriptions/<subscription-id>/resourceGroups/myContainerRegistryResourceGroup/providers/Microsoft.ContainerRegistry/registries/myContainerRegistry
Konfigurace integrace ACR pro existující cluster AKS
Připojení ACR k existujícímu clusteru AKS
Integrujte existující ACR se stávajícím clusterem AKS pomocí
az aks update
příkazu s parametrem--attach-acr
a platnou hodnotou pro acr-name nebo acr-resource-id.# 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>
Poznámka:
Příkaz
az aks update --attach-acr
používá oprávnění uživatele, který příkaz spouští, k vytvoření přiřazení role ACR. Tato role je přiřazená spravované identitě kubeletu . Další informace o spravovaných identitách AKS najdete v souhrnu spravovaných identit.
Odpojení ACR od clusteru AKS
Odeberte integraci mezi ACR a clusterem AKS pomocí
az aks update
příkazu s parametrem--detach-acr
a platnou hodnotou pro acr-name nebo acr-resource-id.# 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>
Práce s ACR &AKS
Import image do služby ACR
Pomocí příkazu naimportujte image z Docker Hubu
az acr import
do služby ACR.az acr import --name <acr-name> --source docker.io/library/nginx:latest --image nginx:v1
Nasazení ukázkové image z ACR do AKS
Pomocí příkazu se ujistěte, že máte správné přihlašovací údaje
az aks get-credentials
AKS.az aks get-credentials --resource-group myResourceGroup --name myAKSCluster
Vytvořte soubor s názvem acr-nginx.yaml pomocí následujícího ukázkového YAML a nahraďte acr-name názvem vašeho 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
Spusťte nasazení v clusteru AKS pomocí
kubectl apply
příkazu.kubectl apply -f acr-nginx.yaml
Pomocí příkazu monitorujte nasazení
kubectl get pods
.kubectl get pods
Výstup by měl zobrazit dva spuštěné pody, jak je znázorněno v následujícím příkladu výstupu:
NAME READY STATUS RESTARTS AGE nginx0-deployment-669dfc4d4b-x74kr 1/1 Running 0 20s nginx0-deployment-669dfc4d4b-xdpd6 1/1 Running 0 20s
Řešení problému
- Pomocí příkazu ověřte, že je registr přístupný z clusteru
az aks check-acr
AKS. - Přečtěte si další informace o monitorování ACR.
- Přečtěte si další informace o stavu služby ACR.
Azure Kubernetes Service