Authentifizieren per Azure Container Registry über Azure Kubernetes ServiceAuthenticate with Azure Container Registry from Azure Kubernetes Service

Wenn Sie Azure Container Registry (ACR) mit dem Azure Kubernetes Service (AKS) nutzen, ist es erforderlich, einen Authentifizierungsmechanismus einzurichten.When you're using Azure Container Registry (ACR) with Azure Kubernetes Service (AKS), an authentication mechanism needs to be established. In diesem Artikel werden Beispiele für die Konfiguration der Authentifizierung zwischen diesen beiden Azure-Diensten beschrieben.This article provides examples for configuring authentication between these two Azure services.

Sie können die AKS- und ACR-Integration mit einigen einfachen Befehlen über die Azure-Befehlszeilenschnittstelle einrichten.You can set up the AKS to ACR integration in a few simple commands with the Azure CLI.

VoraussetzungenBefore you begin

Voraussetzungen für diese Beispiele sind:These examples require:

  • Rolle Besitzer oder Azure-Kontoadministrator im Azure-AbonnementOwner or Azure account administrator role on the Azure subscription
  • Azure CLI, Version 2.0.73 oder höherAzure CLI version 2.0.73 or later

Erstellen eines neuen AKS-Clusters mit ACR-IntegrationCreate a new AKS cluster with ACR integration

Sie können die AKS- und ACR-Integration während der erstmaligen Erstellung Ihres AKS-Clusters einrichten.You can set up AKS and ACR integration during the initial creation of your AKS cluster. Damit ein AKS-Cluster mit ACR interagieren kann, wird ein Azure Active Directory-Dienstprinzipal verwendet.To allow an AKS cluster to interact with ACR, an Azure Active Directory service principal is used. Mit dem folgenden CLI-Befehl können Sie eine vorhandene ACR-Instanz in Ihrem Abonnement autorisieren und die entsprechende ACRPull-Rolle für den Dienstprinzipal konfigurieren.The following CLI command allows you to authorize an existing ACR in your subscription and configures the appropriate ACRPull role for the service principal. Geben Sie gültige Werte für die unten stehenden Parameter an.Supply valid values for your parameters below.

# 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

Alternativ können Sie den ACR-Namen mithilfe einer ACR-Ressourcen-ID angeben, die das folgende Format aufweist:Alternatively, you can specify the ACR name using an ACR resource ID, which has has the following format:

/subscriptions/<Abonnement-ID>/resourceGroups/<Ressourcengruppenname>/providers/Microsoft.ContainerRegistry/registries/<Name>/subscriptions/<subscription-id>/resourceGroups/<resource-group-name>/providers/Microsoft.ContainerRegistry/registries/<name>

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

Dieser Schritt kann mehrere Minuten in Anspruch nehmen.This step may take several minutes to complete.

Konfigurieren der ACR-Integration für vorhandene AKS-ClusterConfigure ACR integration for existing AKS clusters

Integrieren Sie eine vorhandene ACR-Instanz in vorhandene AKS-Cluster, indem Sie wie unten gezeigt gültige Werte für acr-name oder acr-resource-id angeben.Integrate an existing ACR with existing AKS clusters by supplying valid values for acr-name or acr-resource-id as below.

az aks update -n myAKSCluster -g myResourceGroup --attach-acr <acrName>

oderor,

az aks update -n myAKSCluster -g myResourceGroup --attach-acr <acr-resource-id>

Sie können die Integration zwischen einer ACR und einem AKS-Cluster auch folgendermaßen entfernen:You can also remove the integration between an ACR and an AKS cluster with the following

az aks update -n myAKSCluster -g myResourceGroup --detach-acr <acrName>

oderor

az aks update -n myAKSCluster -g myResourceGroup --detach-acr <acr-resource-id>

Arbeiten mit ACR und AKSWorking with ACR & AKS

Importieren eines Images in Ihre ACRImport an image into your ACR

Sie importieren ein Image aus dem Docker-Hub in Ihre ACR, indem Sie Folgendes ausführen:Import an image from docker hub into your ACR by running the following:

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

Bereitstellen des Beispielimages aus ACR in AKSDeploy the sample image from ACR to AKS

Sicherstellen, dass Sie über die richtigen AKS-Anmeldeinformationen verfügenEnsure you have the proper AKS credentials

az aks get-credentials -g myResourceGroup -n myAKSCluster

Erstellen Sie eine Datei namens acr-nginx.yaml, die Folgendes enthält:Create a file called acr-nginx.yaml that contains the following:

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: <replace this image property with you acr login server, image and tag>
        ports:
        - containerPort: 80

Führen Sie als Nächstes diese Bereitstellung in Ihrem AKS-Cluster aus:Next, run this deployment in your AKS cluster:

kubectl apply -f acr-nginx.yaml

Sie können die Bereitstellung überwachen, indem Sie Folgendes ausführen:You can monitor the deployment by running:

kubectl get pods

Sie sollten über zwei laufende Pods verfügen.You should have two running pods.

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