Bereitstellen von einer privaten Containerregistrierung in lokalem Kubernetes mithilfe von Azure Container Registry und AKS Arc
Gilt für: Azure Stack HCI, Version 23H2
In diesem Artikel wird beschrieben, wie Sie Containerimages aus einer privaten Containerregistrierung mithilfe von Azure Container Registry bereitstellen, die Sie in AKS Arc-Bereitstellungen in Ihrem eigenen Rechenzentrum ausführen können. Sie stellen die Bereitstellung in Ihrem lokalen Kubernetes-Cluster bereit, der von AKS gehostet wird. Mit Azure Container Registry können Sie Containerimages und -artefakte in einer privaten Registrierung für alle Arten von Containerbereitstellungen erstellen, speichern und verwalten.
In diesem Artikel wird beschrieben, wie Sie eine private Containerregistrierung in Azure erstellen und Ihr Containerimage an die private Containerregistrierung pushen. Anschließend können Sie die Bereitstellung aus der privaten Registrierung in Ihrem lokalen Kubernetes-Cluster durchführen, der in AKS Arc gehostet wird.
Weitere Informationen zu Azure Container Registry finden Sie in der Dokumentation zu Azure Container Registry.
Voraussetzungen
Vergewissern Sie sich, dass Sie die folgenden Anforderungen erfüllen:
- Grundlegende Kenntnisse der Kubernetes-Konzepte
- Einen AKS-Cluster, der aktiv ist und ausgeführt wird
- Azure-CLI installiert
- Ihre lokale kubectl-Umgebung, die so konfiguriert ist, dass sie auf Ihren AKS-Cluster verweist.
Erstellen einer privaten Containerregistrierung in Azure
Um eine Containerregistrierung zu erstellen, beginnen Sie mit einer Ressourcengruppe. Eine Azure-Ressourcengruppe ist ein logischer Container, in dem Azure-Ressourcen bereitgestellt und verwaltet werden. Erstellen Sie mit dem Befehl az group create
eine Ressourcengruppe. Im folgenden Beispiel wird eine Ressourcengruppe in der Region eastus erstellt:
az group create --name <RESOURCE_GROUP_NAME> --location eastus
Erstellen Sie mit dem Befehl az acr create einen Container Registry-instance, und geben Sie Ihren eigenen Registrierungsnamen an. Der Registrierungsname muss innerhalb von Azure eindeutig sein und fünf bis 50 alphanumerische Zeichen umfassen. Im weiteren Verlauf dieses Artikels <acrName>
wird als Platzhalter für den Namen der Containerregistrierung verwendet, Sie können jedoch Ihren eigenen eindeutigen Registrierungsnamen angeben. Die Basic-SKU ist ein kostenoptimierter Einstiegspunkt für Entwicklungszwecke, der ein Gleichgewicht zwischen Speicher und Durchsatz bietet:
az acr create --resource-group <RESOURCE_GROUP_NAME> --name <REGISTRY_NAME> --sku Basic
Nachdem Sie Ihre Containerregistrierung erstellt haben, verwenden Sie den folgenden Befehl, um einen Dienstprinzipal zu erstellen, damit Sie über Kubernetes auf Ihre Containerregistrierung zugreifen können:
az ad sp create-for-rbac /
--scopes /subscriptions/<SUBSCRIPTION_ID>/resourcegroups/<RG_NAME>/providers/Microsoft.ContainerRegistry/registries/<REGISTRY_NAME> /
--role Contributor /
--name <SERVICE_PRINCIPAL_NAME>
Azure Container Registry unterstützt drei Zugriffsrollen. Die Rolle Mitwirkender wird am häufigsten von Anwendungsentwicklern verwendet. In realen Szenarien müssen Sie jedoch möglicherweise mehrere Dienstprinzipale erstellen, je nachdem, welche Art des Zugriffs erforderlich ist:
- Mitwirkender: Diese Rolle bietet Push- und Pullzugriff auf das Repository.
- Leser: Diese Rolle erlaubt ausschließlich den Pullzugriff auf das Repository.
- Besitzer: Mit dieser Rolle können Sie anderen Benutzern zusätzlich zum Push- und Pullzugriff auf das Repository Rollen zuweisen.
Der vorherige Befehl sollte eine Ausgabe ähnlich dem folgenden Text erzeugen:
{
"appId": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"displayName": "akshci-service-principal",
"name": "http://akshci-service-principal",
"password": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx",
"tenant": "xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx"
}
Nachdem der Dienstprinzipal erfolgreich erstellt wurde, kopieren Sie die appId und das Kennwort an einem sicheren Speicherort, um sie später in Ihrer Bereitstellung zu verwenden.
Weitere Informationen zum Arbeiten mit Dienstprinzipalen und Azure Container Registry finden Sie unter Azure Container Registry-Authentifizierung mit Dienstprinzipalen.
Anmelden bei der privaten Containerregistrierung
Um die Container Registry-instance verwenden zu können, müssen Sie sich zuerst anmelden. Zum Anmelden können Sie entweder die Azure CLI oder die Docker CLI verwenden.
Option 1: Anmelden über die Azure CLI
Verwenden Sie den Befehl az acr sign in , und geben Sie den eindeutigen Namen an, der der Containerregistrierung im vorherigen Schritt zugewiesen wurde:
az acr login --name <REGISTRY_NAME>
Option 2: Anmelden über die Docker CLI
Um die Docker CLI für den Zugriff auf Ihre Containerregistrierung zu verwenden, geben Sie den folgenden Befehl in einem Bash- oder PowerShell-Terminal ein:
docker login <REGISTRY_NAME>.azurecr.io -u <appId> -p <password>
Bei beiden Optionen sollte der Befehl eine Meldung mit erfolgreicher Anmeldung zurückgeben, wenn er abgeschlossen ist.
Pushen eines Images in die Containerregistrierung
Nachdem Sie erfolgreich angemeldet sind, können Sie mit dem Pushen des Images in die Container Registry beginnen. Führen Sie zunächst den Befehl docker images aus, um die Liste der Images auf Ihrem lokalen Computer anzuzeigen:
REPOSITORY TAG IMAGE ID CREATED SIZE
mcr.microsoft.com/azure-functions/dotnet 3.0 9f8ad1bdee67 5 months ago
540MB
poemfinder-app latest 2d9bef425603 6 months ago 208MB
Markieren Sie zunächst das Image mit dem Befehl docker tag
, und verwenden Sie dann docker push
, um es an die Containerregistrierung zu pushen:
docker tag poemfinder-app <REGISTRY_NAME>.azurecr.io/poemfinder-app:v1.0
Überprüfen Sie, ob das Image ordnungsgemäß gekennzeichnet wurde, indem Sie den Befehl docker images erneut ausführen. Führen Sie docker push
nach der Bestätigung wie folgt aus, um in die Containerregistrierung zu pushen:
docker push <REGISTRY_NAME>.azurecr.io/poemfinder-app:v1.0
Führen Sie den folgenden Befehl aus, um zu bestätigen, dass das Image erfolgreich in die Containerregistrierung gepusht wurde:
az acr repository list --name <REGISTRY_NAME>.azurecr.io --output table
Bereitstellen eines Images aus der Containerregistrierung in AKS
Um Ihr Containerimage aus der Containerregistrierung in Ihrem Kubernetes-Cluster bereitzustellen, erstellen Sie Kubernetes-Geheimnisse , um Ihre Registrierungsanmeldeinformationen zu speichern. In Kubernetes wird ein Geheimnis für Imagepullvorgänge verwendet, um Informationen zu speichern, die für die Authentifizierung bei Ihrer Registrierung benötigt werden. Um das Pullgeheimnis für eine Containerregistrierung zu erstellen, geben Sie die Dienstprinzipal-ID, das Kennwort und die Registrierungs-URL an:
kubectl create secret docker-registry <secret-name> \
--namespace <namespace> \
--docker-server=<REGISTRY_NAME>.azurecr.io \
--docker-username=<appId> \
--docker-password=<password>
In der folgenden Tabelle werden die Eingabeparameter beschrieben:
Wert | BESCHREIBUNG |
---|---|
secret-name |
Name des Bilds pullt geheimnis; beispiel: acr-secret . |
namespace |
Kubernetes-Namespace, in den das Geheimnis eingefügt werden soll. Nur erforderlich, wenn Sie das Geheimnis in einem anderen Namespace als dem Standardnamespace platzieren möchten. |
<REGISTRY_NAME> |
Name Ihrer Containerregistrierung. Beispiel: myregistry . ist --docker-server der vollqualifizierte Name des Registrierungsanmeldungsservers. |
appId |
ID des Dienstprinzipals, den Kubernetes für den Zugriff auf Ihre Registrierung verwendet. |
password |
Dienstprinzipalkennwort. |
Nachdem Sie das Image pull secret erstellt haben, können Sie es verwenden, um Kubernetes-Pods und -Bereitstellungen zu erstellen. Geben Sie den Namen des Geheimnisses unter imagePullSecrets
in der Bereitstellungsdatei an, wie im folgenden Beispiel gezeigt:
apiVersion: v1
kind: Pod
metadata:
name: poemfinder-app
namespace: mydemoapps
spec:
containers:
- name: poemfinder-app
image: <REGISTRY_NAME>.azurecr.io/poemfinder-app:v1.0
imagePullPolicy: IfNotPresent
- imagePullSecrets:
- name: acr-secret
In diesem Beispiel ist der Name des Images, poemfinder-app:v1.0
das aus der Containerregistrierung abgerufen werden soll, und acr-secret
der Name des Pullgeheimnisses, das Sie für den Zugriff auf die Registrierung erstellt haben. Wenn Sie den Pod bereitstellen, ruft Kubernetes das Image automatisch aus Ihrer Registrierung ab, wenn das Image noch nicht im Cluster vorhanden ist.
Sie können die obige Podkonfiguration in einer Datei wie pod-example.yaml speichern und dann wie folgt in Kubernetes bereitstellen:
kubectl create -f pod-example.yaml
Um zu bestätigen, dass der Pod erfolgreich mithilfe des Containerimages aus der Containerregistrierung erstellt wurde, führen Sie kubectl describe pod <POD_NAME> aus, wobei das zum Erstellen des Pods verwendete Containerimage angezeigt werden sollte.
Nächste Schritte
Feedback
https://aka.ms/ContentUserFeedback.
Bald verfügbar: Im Laufe des Jahres 2024 werden wir GitHub-Issues stufenweise als Feedbackmechanismus für Inhalte abbauen und durch ein neues Feedbacksystem ersetzen. Weitere Informationen finden Sie unterFeedback senden und anzeigen für