Verwenden der Azure Container Registry mit Azure Red Hat OpenShift (ARO)
Azure Container Registry (ACR) ist ein verwalteter Containerregistrierungsdienst, mit dem Sie private Docker-Containerimages mit Unternehmensfunktionen wie der Georeplikation speichern können. Für den Zugriff auf ACR von einem ARO-Cluster kann sich der Cluster bei ACR authentifizieren, indem Docker-Anmeldeinformationen in einem Kubernetes-Geheimnis gespeichert werden. Ebenso kann ein ARO-Cluster „imagePullSecret“ in der Podspezifikation verwenden, um sich beim Pullen des Images bei der Registrierung zu authentifizieren. In diesem Artikel erfahren Sie, wie Sie Azure Container Registry mit einem Azure Red Hat OpenShift-Cluster einrichten, um private Docker-Containerimages zu speichern und zu pullen.
Voraussetzungen
Bei dieser Anleitung wird davon ausgegangen, dass Sie über eine vorhandene Azure Container Registry-Instanz verfügen. Wenn das nicht der Fall ist, verwenden Sie das Azure-Portal oder die Anweisungen für die Azure CLI, um eine Containerregistrierung zu erstellen.
In diesem Artikel wird außerdem davon ausgegangen, dass Sie über einen vorhandenen Azure Red Hat OpenShift-Cluster verfügen und die oc
-CLI installiert haben. Falls nicht, folgen Sie den Anweisungen im Tutorial zum Erstellen eines ARO-Clusters.
Abrufen eines Pullgeheimnisses
Für den Zugriff auf die Registrierung von Ihrem ARO-Cluster benötigen Sie ein Pullgeheimnis von ACR.
Sie können entweder das Azure-Portal oder die Azure CLI zum Abrufen der Anmeldeinformationen für das Pullgeheimnis verwenden.
Wenn Sie das Azure-Portal verwenden, navigieren Sie zu Ihrer ACR-Instanz, und wählen Sie Zugriffsschlüssel aus. Ihr docker-username
ist der Name Ihrer Containerregistrierung. Verwenden Sie entweder „password“ oder „password2“ für docker-password
.
Sie können stattdessen auch die Azure CLI verwenden, um diese Anmeldeinformationen abzurufen:
az acr credential show -n <your registry name>
Erstellen des Kubernetes-Geheimnisses
Nun werden diese Anmeldeinformationen zum Erstellen eines Kubernetes-Geheimnisses verwendet. Führen Sie den folgenden Befehl mit Ihren ACR-Anmeldeinformationen aus:
oc create secret docker-registry \
--docker-server=<your registry name>.azurecr.io \
--docker-username=<your registry name> \
--docker-password=******** \
--docker-email=unused \
acr-secret
Hinweis
Dieses Geheimnis wird im aktuellen OpenShift-Projekt (Kubernetes-Namespace) gespeichert, und kann nur von Pods referenziert werden, die in diesem Projekt erstellt wurden. Weitere Anweisungen zum Erstellen eines clusterweiten Pullgeheimnisses finden Sie in diesem Dokument.
Verknüpfen des Geheimnisses mit dem Dienstkonto
Verknüpfen Sie als Nächstes das Geheimnis mit dem Dienstkonto, das vom Pod verwendet wird, damit der Pod die Containerregistrierung erreichen kann. Der Name des Dienstkontos sollte mit dem Namen des vom Pod verwendeten Dienstkontos übereinstimmen. default
ist das Standarddienstkonto:
oc secrets link default <pull_secret_name> --for=pull
Erstellen eines Pods mithilfe eines privaten Registrierungsimages
Nachdem Ihr ARO-Cluster mit Ihrer ACR-Instanz verbunden wurde, können Sie ein Image aus Ihrer ACR pullen, um einen Pod zu erstellen.
Beginnen Sie mit einer PodSpec, und geben Sie das als „imagePullSecret“ erstellte Geheimnis an:
apiVersion: v1
kind: Pod
metadata:
name: hello-world
spec:
containers:
- name: hello-world
image: <your registry name>.azurecr.io/hello-world:v1
imagePullSecrets:
- name: acr-secret
Um zu testen, ob der Pod ausgeführt wird, verwenden Sie den folgenden Befehl, und warten Sie, bis der Status Running (Wird ausgeführt) lautet:
$ oc get pods --watch
NAME READY STATUS RESTARTS AGE
hello-world 1/1 Running 0 30s