Verwenden von 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.

Access Keys

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 Sie als Nächstes den geheimen Schlüssel 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

Nächste Schritte