Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Gilt für: AKS unter Windows Server
In diesem Artikel wird beschrieben, wie Containerimages aus einer privaten Containerregistrierung mit der Azure Container Registry bereitgestellt werden können, die Sie in Ihrem eigenen Rechenzentrum in AKS auf Windows Server-Bereitstellungen ausführen können. Sie implementieren auf Ihrem lokalen Kubernetes-Cluster, der bei 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. Sie können dann von der privaten Registrierung aus Ihren on-premises Kubernetes Cluster bereitstellen, der in AKS auf Windows Server gehostet wird.
Weitere Informationen zur Containerregistrierung in Azure finden Sie in der Dokumentation zur Azure-Containerregistrierung.
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
- Die Azure CLI muss installiert sein.
- Ihre lokale
kubectl
Umgebung, die so konfiguriert ist, dass sie auf Ihren AKS-Cluster verweist. Sie können den PowerShell-Befehl Get-AksHciCredential verwenden, um Ihren Cluster für den Zugriff mitkubectl
zu konfigurieren.
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 eine Ressourcengruppe mit dem PowerShell-Befehl "az-group-create ". Im folgenden Beispiel wird eine Ressourcengruppe in der Ostregion erstellt:
az group create --name <RESOURCE_GROUP_NAME> --location eastus
Erstellen Sie eine Containerregistrierungsinstanz mit dem Befehl "az acr create ", und geben Sie Ihren eigenen Registrierungsnamen an. Der Registrierungsname muss innerhalb von Azure eindeutig sein und fünf bis 50 alphanumerische Zeichen umfassen. Im rest dieses Artikels <acrName>
wird als Platzhalter für den Containerregistrierungsnamen verwendet, Sie können jedoch Ihren eigenen eindeutigen Registrierungsnamen angeben. Die Basis-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>
Containerregistrierung 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 von Zugriff 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 die 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 password
an einen sicheren Speicherort, um sie später bei Ihrer Bereitstellung zu verwenden.
Weitere Informationen zum Arbeiten mit Dienstprinzipalen und der Containerregistrierung finden Sie unter Azure Container Registry authentication with service principals.
Anmelden bei der privaten Containerregistrierung
Um die Containerregistrierungsinstanz zu verwenden, müssen Sie sich zuerst anmelden. Zum Anmelden können Sie entweder die Azure CLI oder die Docker CLI verwenden.
Option 1: Anmelden über Azure CLI
Verwenden Sie den Befehl "az acr sign in " und geben Sie den eindeutigen Namen an, der der Containerregistrierung im vorherigen Schritt zugewiesen ist:
az acr login --name <REGISTRY_NAME>
Option 2: Anmelden über 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 nach Abschluss eine Meldung "Anmeldung erfolgreich" zurückgeben.
Übertragen eines Images in die Containerregistrierung
Nachdem Sie sich erfolgreich angemeldet haben, können Sie damit beginnen, das Abbild in die Container-Registry hochzuladen. Führen Sie zuerst den docker images
Befehl aus, um die Liste der Bilder 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
Um zu beginnen, markieren Sie das Image mit dem docker tag
Befehl, und verwenden docker push
Sie es dann, um es an die Containerregistrierung zu übertragen:
docker tag poemfinder-app <REGISTRY_NAME>.azurecr.io/poemfinder-app:v1.0
Stellen Sie sicher, dass das Bild ordnungsgemäß markiert wurde, indem Sie den docker images
Befehl erneut ausführen. Nachdem Sie dies überprüft haben, führen Sie docker push
aus, um einen Push in die Container Registry durchzuführen (siehe unten):
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 an die Containerregistrierung übertragen wurde:
az acr repository list --name <REGISTRY_NAME>.azurecr.io --output table
Bereitstellen eines Images aus der Containerregistrierung in AKS
Um Ihr Container -mage von der Container Registry für Ihren Kubernetes Cluster bereitzustellen, erstellen Sie Kubernetes Secrets, um Ihre Anmeldeinformationen für die Registrierung 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 den Pullschlüssel 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>
Dabei gilt Folgendes:
Wert | Beschreibung |
---|---|
secret-name |
Der Name des Pull-Secrets des Images, zum Beispiel acr-secret . |
namespace |
Kubernetes-Namespace, in dem das Secret abgelegt werden soll. Nur erforderlich, wenn Sie den geheimen Schlüssel in einem anderen Namespace als dem Standardnamespace platzieren möchten. |
<REGISTRY_NAME> |
Name Ihrer Containerregistrierung; beispiel: myregistry . Dies --docker-server ist der vollqualifizierte Name des Registrierungsanmeldungsservers. |
appId |
ID des Dienstprinzipals, den Kubernetes für den Zugriff auf Ihr Register verwendet. |
password |
Dienstprinzipalkennwort. |
Nach dem Erstellen des Geheimnisses für Imagepullvorgänge können Sie es verwenden, um Kubernetes-Pods und Kubernetes-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 poemfinder-app:v1.0
der Name des Images, das aus der Container Registry geholt werden soll, und acr-secret
ist der Name des Pull-Secrets, 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 oben genannte Pod-Konfiguration 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, wodurch das Containerimage angezeigt werden soll, das zum Erstellen des Pods verwendet wurde.
Nächste Schritte
In diesem Artikel haben Sie erfahren, wie Sie ein Containerimage aus der Azure-Containerregistrierung in AKS Arc bereitstellen. Als Nächstes haben Sie folgende Möglichkeiten: