La version française est une traduction automatique. La version anglaise prévaut sur la française en cas de divergence.

Création de registres d’images privées

Contributeurs

Pour la plupart des déploiements de Red Hat OpenShift, à l’aide d’un registre public comme "Quay.io" ou "DockerHub" répond à la plupart des besoins des clients. Cependant, il se peut qu’un client souhaite héberger ses propres images privées ou personnalisées.

Cette procédure décrit la création d’un registre d’images privées, sauvegardé par un volume persistant fourni par Astra Trident et NetApp ONTAP.

Note Astra Control Center requiert un registre pour héberger les images dont les conteneurs Astra ont besoin. La section suivante décrit les étapes de configuration d’un registre privé sur un cluster Red Hat OpenShift et l’envoi des images requises pour prendre en charge l’installation d’Astra Control Center.

Création d’un registre d’images privé

  1. Supprimez l’annotation par défaut de la classe de stockage par défaut actuelle et annoter la classe de stockage sauvegardée par Trident par défaut pour le cluster OpenShift.

    [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. Modifiez l’opérateur imageistry en saisissant les paramètres de stockage suivants dans le spec section.

    [netapp-user@rhel7 ~]$ oc edit configs.imageregistry.operator.openshift.io
    
    storage:
      pvc:
        claim:
  3. Entrez les paramètres suivants dans le spec Section permettant de créer une route OpenShift avec un nom d’hôte personnalisé. Enregistrer et quitter.

    routes:
      - hostname: astra-registry.apps.ocp-vmw.cie.netapp.com
        name: netapp-astra-route
    Note La configuration de route ci-dessus est utilisée lorsque vous voulez un nom d’hôte personnalisé pour votre itinéraire. Si vous souhaitez qu’OpenShift crée une route avec un nom d’hôte par défaut, vous pouvez ajouter les paramètres suivants à l' spec section : defaultRoute: true.
    Certificats TLS personnalisés

    Lorsque vous utilisez un nom d’hôte personnalisé pour la route, il utilise par défaut la configuration TLS par défaut de l’opérateur OpenShift Ingress. Cependant, vous pouvez ajouter une configuration TLS personnalisée à la route. Pour ce faire, procédez comme suit.

    1. Créez un secret avec les certificats TLS et la clé de la 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. Modifiez l’opérateur imageistry et ajoutez les paramètres suivants à la spec section.

      [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. Modifiez à nouveau l’opérateur imageistry et modifiez l’état de gestion de l’opérateur sur Managed état. Enregistrer et quitter.

    oc edit configs.imageregistry/cluster
    
    managementState: Managed
  5. Si toutes les conditions préalables sont remplies, les ESV, les pods et les services sont créés pour le registre d’images privées. Dans quelques minutes, le registre devrait être mis en service.

    [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. Si vous utilisez les certificats TLS par défaut pour la route de registre OpenShift de l’opérateur d’entrée, vous pouvez récupérer les certificats TLS à l’aide de la commande suivante.

    [netapp-user@rhel7 ~]$ oc extract secret/router-ca --keys=tls.crt -n openshift-ingress-operator
  7. Pour permettre aux nœuds OpenShift d’accéder aux images et de les extraire du registre, ajoutez les certificats au client docker sur les nœuds OpenShift. Créez une configuration dans le openshift-config Espace de noms à l’aide des certificats TLS et le patch dans la configuration d’image du cluster pour que le certificat soit fiable.

    [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. Le registre interne OpenShift est contrôlé par une authentification. Tous les utilisateurs OpenShift peuvent accéder au registre OpenShift, mais les opérations que l’utilisateur connecté peut exécuter dépendent des autorisations des utilisateurs.

    1. Pour permettre à un utilisateur ou à un groupe d’utilisateurs d’extraire des images du registre, le rôle du visualiseur de registre doit être affecté à l’utilisateur.

      [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. Pour permettre à un utilisateur ou à un groupe d’utilisateurs d’écrire ou de diffuser des images, le rôle de l’éditeur de registre doit être affecté.

      [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. Pour que les nœuds OpenShift puissent accéder au registre et envoyer ou extraire les images, vous devez configurer un secret Pull.

    [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. Ce secret Pull peut ensuite être corrigé aux comptes de service ou être référencé dans la définition de pod correspondante.

    1. Pour le corriger aux comptes de service, exécutez la commande suivante.

      [netapp-user@rhel7 ~]$ oc secrets link <service_account_name> astra-registry-credentials --for=pull
    2. Pour référencer le secret Pull dans la définition du pod, ajoutez le paramètre suivant à l' spec section.

      imagePullSecrets:
        - name: astra-registry-credentials
  11. Pour pousser ou extraire une image des postes de travail en dehors du nœud OpenShift, procédez comme suit.

    1. Ajoutez les certificats TLS au client docker.

      [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. Connectez-vous à OpenShift à l’aide de la commande oc login.

      [netapp-user@rhel7 ~]$ oc login --token=sha256~D49SpB_lesSrJYwrM0LIO-VRcjWHu0a27vKa0 --server=https://api.ocp-vmw.cie.netapp.com:6443
    3. Connectez-vous au registre à l’aide des informations d’identification de l’utilisateur OpenShift avec la commande podman/docker.

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

      + REMARQUE : si vous utilisez kubeadmin l’utilisateur doit se connecter au registre privé, puis utiliser un jeton au lieu du mot de passe.

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

      + REMARQUE : si vous utilisez kubeadmin l’utilisateur doit se connecter au registre privé, puis utiliser un jeton au lieu du mot de passe.

    4. Pousser ou extraire les images.

      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