Skip to main content
NetApp container solutions
Die deutsche Sprachversion wurde als Serviceleistung für Sie durch maschinelle Übersetzung erstellt. Bei eventuellen Unstimmigkeiten hat die englische Sprachversion Vorrang.

Erstellen privater Image-Registrierungen

Beitragende kevin-hoke

Für die meisten Bereitstellungen von Red Hat OpenShift wird ein öffentliches Register wie "Quay.io" oder "DockerHub" erfüllt die Bedürfnisse der meisten Kunden. Es gibt jedoch Fälle, in denen ein Kunde seine eigenen privaten oder benutzerdefinierten Bilder hosten möchte.

Dieses Verfahren dokumentiert die Erstellung einer privaten Image-Registrierung, die durch ein persistentes Volume von Trident und NetApp ONTAP unterstützt wird.

Hinweis Trident Protect erfordert ein Register zum Hosten der von den Astra Containern benötigten Bilder. Der folgende Abschnitt beschreibt die Schritte zum Einrichten eines privaten Registers auf einem Red Hat OpenShift-Cluster und zum Übertragen der Images, die zur Unterstützung der Installation von Trident Protect erforderlich sind.

Erstellen einer privaten Bildregistrierung

  1. Entfernen Sie die Standardannotation aus der aktuellen Standardspeicherklasse und kommentieren Sie die von Trident unterstützte Speicherklasse als Standard für den OpenShift-Cluster.

    [netapp-user@rhel7 ~]$ oc patch storageclass thin -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "false"}}}'
    storageclass.storage.k8s.io/thin patched
    
    [netapp-user@rhel7 ~]$ oc patch storageclass ocp-trident -p '{"metadata": {"annotations": {"storageclass.kubernetes.io/is-default-class": "true"}}}'
    storageclass.storage.k8s.io/ocp-trident patched
  2. Bearbeiten Sie den Imageregistry-Operator, indem Sie die folgenden Speicherparameter in das Feld spec Abschnitt.

    [netapp-user@rhel7 ~]$ oc edit configs.imageregistry.operator.openshift.io
    
    storage:
      pvc:
        claim:
  3. Geben Sie die folgenden Parameter in das spec Abschnitt zum Erstellen einer OpenShift-Route mit einem benutzerdefinierten Hostnamen. Speichern und beenden.

    routes:
      - hostname: astra-registry.apps.ocp-vmw.cie.netapp.com
        name: netapp-astra-route
    Hinweis Die obige Routenkonfiguration wird verwendet, wenn Sie einen benutzerdefinierten Hostnamen für Ihre Route wünschen. Wenn Sie möchten, dass OpenShift eine Route mit einem Standardhostnamen erstellt, können Sie die folgenden Parameter zum spec Abschnitt: defaultRoute: true .
    Benutzerdefinierte TLS-Zertifikate

    Wenn Sie einen benutzerdefinierten Hostnamen für die Route verwenden, wird standardmäßig die Standard-TLS-Konfiguration des OpenShift Ingress-Operators verwendet. Sie können der Route jedoch eine benutzerdefinierte TLS-Konfiguration hinzufügen. Führen Sie dazu die folgenden Schritte aus.

    1. Erstellen Sie ein Geheimnis mit den TLS-Zertifikaten und dem Schlüssel der Route.

      [netapp-user@rhel7 ~]$ oc create secret tls astra-route-tls -n openshift-image-registry –cert/home/admin/netapp-astra/tls.crt --key=/home/admin/netapp-astra/tls.key
    2. Bearbeiten Sie den Imageregistry-Operator und fügen Sie die folgenden Parameter hinzu spec Abschnitt.

      [netapp-user@rhel7 ~]$ oc edit configs.imageregistry.operator.openshift.io
      
      routes:
        - hostname: astra-registry.apps.ocp-vmw.cie.netapp.com
          name: netapp-astra-route
          secretName: astra-route-tls
  4. Bearbeiten Sie den Imageregistry-Operator erneut und ändern Sie den Verwaltungsstatus des Operators in Managed Zustand. Speichern und beenden.

    oc edit configs.imageregistry/cluster
    
    managementState: Managed
  5. Wenn alle Voraussetzungen erfüllt sind, werden PVCs, Pods und Dienste für die private Image-Registrierung erstellt. In wenigen Minuten sollte die Registrierung verfügbar sein.

    [netapp-user@rhel7 ~]$oc get all -n openshift-image-registry
    
    NAME                                                   READY   STATUS      RESTARTS   AGE
    pod/cluster-image-registry-operator-74f6d954b6-rb7zr   1/1     Running     3          90d
    pod/image-pruner-1627257600-f5cpj                      0/1     Completed   0          2d9h
    pod/image-pruner-1627344000-swqx9                      0/1     Completed   0          33h
    pod/image-pruner-1627430400-rv5nt                      0/1     Completed   0          9h
    pod/image-registry-6758b547f-6pnj8                     1/1     Running     0          76m
    pod/node-ca-bwb5r                                      1/1     Running     0          90d
    pod/node-ca-f8w54                                      1/1     Running     0          90d
    pod/node-ca-gjx7h                                      1/1     Running     0          90d
    pod/node-ca-lcx4k                                      1/1     Running     0          33d
    pod/node-ca-v7zmx                                      1/1     Running     0          7d21h
    pod/node-ca-xpppp                                      1/1     Running     0          89d
    
    NAME                              TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)     AGE
    service/image-registry            ClusterIP   172.30.196.167   <none>        5000/TCP    15h
    service/image-registry-operator   ClusterIP   None             <none>        60000/TCP   90d
    
    NAME                     DESIRED   CURRENT   READY   UP-TO-DATE   AVAILABLE   NODE SELECTOR            AGE
    daemonset.apps/node-ca   6         6         6       6            6           kubernetes.io/os=linux   90d
    
    NAME                                              READY   UP-TO-DATE   AVAILABLE   AGE
    deployment.apps/cluster-image-registry-operator   1/1     1            1           90d
    deployment.apps/image-registry                    1/1     1            1           15h
    
    NAME                                                         DESIRED   CURRENT   READY   AGE
    replicaset.apps/cluster-image-registry-operator-74f6d954b6   1         1         1       90d
    replicaset.apps/image-registry-6758b547f                     1         1         1       76m
    replicaset.apps/image-registry-78bfbd7f59                    0         0         0       15h
    replicaset.apps/image-registry-7fcc8d6cc8                    0         0         0       80m
    replicaset.apps/image-registry-864f88f5b                     0         0         0       15h
    replicaset.apps/image-registry-cb47fffb                      0         0         0       10h
    
    NAME                                COMPLETIONS   DURATION   AGE
    job.batch/image-pruner-1627257600   1/1           10s        2d9h
    job.batch/image-pruner-1627344000   1/1           6s         33h
    job.batch/image-pruner-1627430400   1/1           5s         9h
    
    NAME                         SCHEDULE    SUSPEND   ACTIVE   LAST SCHEDULE   AGE
    cronjob.batch/image-pruner   0 0 * * *   False     0        9h              90d
    
    NAME                                     HOST/PORT                                           PATH   SERVICES         PORT    TERMINATION   WILDCARD
    route.route.openshift.io/public-routes   astra-registry.apps.ocp-vmw.cie.netapp.com          image-registry   <all>   reencrypt     None
  6. Wenn Sie die Standard-TLS-Zertifikate für die OpenShift-Registrierungsroute des Ingress-Operators verwenden, können Sie die TLS-Zertifikate mit dem folgenden Befehl abrufen.

    [netapp-user@rhel7 ~]$ oc extract secret/router-ca --keys=tls.crt -n openshift-ingress-operator
  7. Um OpenShift-Knoten den Zugriff auf die Images und deren Abruf aus der Registrierung zu ermöglichen, fügen Sie die Zertifikate dem Docker-Client auf den OpenShift-Knoten hinzu. Erstellen Sie eine Konfigurationskarte im openshift-config Namespace mithilfe der TLS-Zertifikate und patchen Sie es in die Cluster-Image-Konfiguration, um das Zertifikat vertrauenswürdig zu machen.

    [netapp-user@rhel7 ~]$ oc create configmap astra-ca -n openshift-config --from-file=astra-registry.apps.ocp-vmw.cie.netapp.com=tls.crt
    
    [netapp-user@rhel7 ~]$ oc patch image.config.openshift.io/cluster --patch '{"spec":{"additionalTrustedCA":{"name":"astra-ca"}}}' --type=merge
  8. Die interne OpenShift-Registrierung wird durch Authentifizierung gesteuert. Alle OpenShift-Benutzer können auf die OpenShift-Registrierung zugreifen, aber die Vorgänge, die der angemeldete Benutzer ausführen kann, hängen von den Benutzerberechtigungen ab.

    1. Um einem Benutzer oder einer Gruppe von Benutzern das Abrufen von Bildern aus der Registrierung zu ermöglichen, muss dem/den Benutzer(n) die Rolle „Registrierungsbetrachter“ zugewiesen sein.

      [netapp-user@rhel7 ~]$ oc policy add-role-to-user registry-viewer ocp-user
      
      [netapp-user@rhel7 ~]$ oc policy add-role-to-group registry-viewer ocp-user-group
    2. Um einem Benutzer oder einer Benutzergruppe das Schreiben oder Pushen von Bildern zu ermöglichen, muss dem/den Benutzer(n) die Rolle des Registrierungseditors zugewiesen sein.

      [netapp-user@rhel7 ~]$ oc policy add-role-to-user registry-editor ocp-user
      
      [netapp-user@rhel7 ~]$ oc policy add-role-to-group registry-editor ocp-user-group
  9. Damit OpenShift-Knoten auf die Registrierung zugreifen und die Bilder pushen oder pullen können, müssen Sie ein Pull-Geheimnis konfigurieren.

    [netapp-user@rhel7 ~]$ oc create secret docker-registry astra-registry-credentials --docker-server=astra-registry.apps.ocp-vmw.cie.netapp.com --docker-username=ocp-user --docker-password=password
  10. Dieses Pull-Geheimnis kann dann in Servicekonten gepatcht oder in der entsprechenden Pod-Definition referenziert werden.

    1. Um es auf Dienstkonten zu patchen, führen Sie den folgenden Befehl aus.

      [netapp-user@rhel7 ~]$ oc secrets link <service_account_name> astra-registry-credentials --for=pull
    2. Um das Pull-Geheimnis in der Pod-Definition zu referenzieren, fügen Sie den folgenden Parameter zum spec Abschnitt.

      imagePullSecrets:
        - name: astra-registry-credentials
  11. Führen Sie die folgenden Schritte aus, um ein Image von anderen Workstations als dem OpenShift-Knoten zu pushen oder zu pullen.

    1. Fügen Sie die TLS-Zertifikate zum Docker-Client hinzu.

      [netapp-user@rhel7 ~]$ sudo mkdir /etc/docker/certs.d/astra-registry.apps.ocp-vmw.cie.netapp.com
      
      [netapp-user@rhel7 ~]$ sudo cp /path/to/tls.crt /etc/docker/certs.d/astra-registry.apps.ocp-vmw.cie.netapp.com
    2. Melden Sie sich mit dem Befehl „oc login“ bei OpenShift an.

      [netapp-user@rhel7 ~]$ oc login --token=sha256~D49SpB_lesSrJYwrM0LIO-VRcjWHu0a27vKa0 --server=https://api.ocp-vmw.cie.netapp.com:6443
    3. Melden Sie sich mit den OpenShift-Benutzeranmeldeinformationen und dem Befehl „podman/docker“ beim Register an.

      Podman
      [netapp-user@rhel7 ~]$ podman login astra-registry.apps.ocp-vmw.cie.netapp.com -u kubeadmin -p $(oc whoami -t) --tls-verify=false

      + HINWEIS: Wenn Sie kubeadmin Benutzer, um sich beim privaten Register anzumelden, verwenden Sie dann ein Token anstelle eines Kennworts.

      Docker
      [netapp-user@rhel7 ~]$ docker login astra-registry.apps.ocp-vmw.cie.netapp.com -u kubeadmin -p $(oc whoami -t)

      + HINWEIS: Wenn Sie kubeadmin Benutzer, um sich beim privaten Register anzumelden, verwenden Sie dann ein Token anstelle eines Kennworts.

    4. Schieben oder ziehen Sie die Bilder.

      Podman
      [netapp-user@rhel7 ~]$ podman push astra-registry.apps.ocp-vmw.cie.netapp.com/netapp-astra/vault-controller:latest
      [netapp-user@rhel7 ~]$ podman pull astra-registry.apps.ocp-vmw.cie.netapp.com/netapp-astra/vault-controller:latest
      Docker
      [netapp-user@rhel7 ~]$ docker push astra-registry.apps.ocp-vmw.cie.netapp.com/netapp-astra/vault-controller:latest
      [netapp-user@rhel7 ~]$ docker pull astra-registry.apps.ocp-vmw.cie.netapp.com/netapp-astra/vault-controller:latest