Skip to main content
NetApp Solutions
Se proporciona el idioma español mediante traducción automática para su comodidad. En caso de alguna inconsistencia, el inglés precede al español.

Creación de registros privados de imágenes

Colaboradores

Para la mayoría de implementaciones de Red Hat OpenShift, utilizando un registro público como "Quay.io" o. "DockerHub" satisface la mayoría de las necesidades de sus clientes. Sin embargo, hay ocasiones en las que un cliente puede querer alojar sus propias imágenes privadas o personalizadas.

Este procedimiento documenta la creación de un registro de imágenes privadas respaldado por un volumen persistente proporcionado por Trident y NetApp ONTAP.

Nota Astra Control Center requiere un registro para alojar las imágenes que necesitan los contenedores Astra. En la siguiente sección se describen los pasos para configurar un registro privado en el clúster de Red Hat OpenShift e insertar las imágenes necesarias para admitir la instalación de Astra Control Center.

Crear un registro de imágenes privadas

  1. Elimine la anotación predeterminada de la clase de almacenamiento predeterminada actual y anote la clase de almacenamiento respaldada por Trident como predeterminada para el clúster 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. Edite el operador imagerRegistry introduciendo los siguientes parámetros de almacenamiento en el spec sección.

    [netapp-user@rhel7 ~]$ oc edit configs.imageregistry.operator.openshift.io
    
    storage:
      pvc:
        claim:
  3. Introduzca los siguientes parámetros en el spec Sección para crear una ruta OpenShift con un nombre de host personalizado. Guarde y salga.

    routes:
      - hostname: astra-registry.apps.ocp-vmw.cie.netapp.com
        name: netapp-astra-route
    Nota La configuración de ruta anterior se utiliza cuando se desea un nombre de host personalizado para la ruta. Si desea que OpenShift cree una ruta con un nombre de host predeterminado, puede agregar los siguientes parámetros al spec sección: defaultRoute: true.
    Certificados TLS personalizados

    Cuando se utiliza un nombre de host personalizado para la ruta, de forma predeterminada, utiliza la configuración TLS predeterminada del operador de OpenShift Ingress. Sin embargo, puede agregar una configuración TLS personalizada a la ruta. Para ello, lleve a cabo los siguientes pasos.

    1. Cree un secreto con los certificados TLS y la clave de la ruta.

      [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. Edite el operador imagerRegistry agregue los siguientes parámetros al spec sección.

      [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. Vuelva a editar el operador de imageregistry cambie el estado de administración del operador a Managed estado. Guarde y salga.

    oc edit configs.imageregistry/cluster
    
    managementState: Managed
  5. Si se cumplen todos los requisitos previos, se crean EVs, POD y servicios para el registro de imágenes privadas. En unos minutos, el registro debería estar activo.

    [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 utiliza los certificados TLS predeterminados para la ruta de registro del operador Ingress OpenShift, puede obtener los certificados TLS utilizando el siguiente comando.

    [netapp-user@rhel7 ~]$ oc extract secret/router-ca --keys=tls.crt -n openshift-ingress-operator
  7. Para permitir que los nodos de OpenShift accedan a las imágenes y las extractivas del Registro, agregue los certificados al cliente docker en los nodos de OpenShift. Cree un mapa de configuración en openshift-config Espacio de nombres mediante los certificados TLS y retome la configuración de la imagen del clúster para garantizar la confianza del certificado.

    [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. El registro interno de OpenShift se controla mediante autenticación. Todos los usuarios de OpenShift pueden tener acceso al registro de OpenShift, pero las operaciones que el usuario que ha iniciado sesión puede realizar dependen de los permisos del usuario.

    1. Para permitir que un usuario o un grupo de usuarios extraiga imágenes del Registro, el usuario debe tener asignada la función de visor del Registro.

      [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. Para permitir a un usuario o grupo de usuarios escribir o insertar imágenes, el usuario debe tener asignado el rol de editor de registros.

      [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. Para que los nodos OpenShift accedan al Registro y push o extran las imágenes, debe configurar un secreto de extracción.

    [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. Este secreto de extracción se puede aplicar a las cuentas de servicio o hacer referencia a ellas en la definición de POD correspondiente.

    1. Para aplicar revisiones a las cuentas de servicio, ejecute el siguiente comando.

      [netapp-user@rhel7 ~]$ oc secrets link <service_account_name> astra-registry-credentials --for=pull
    2. Para hacer referencia al secreto de extracción en la definición de POD, agregue el siguiente parámetro al spec sección.

      imagePullSecrets:
        - name: astra-registry-credentials
  11. Para insertar o extraer una imagen de estaciones de trabajo aparte del nodo OpenShift, lleve a cabo los siguientes pasos.

    1. Agregue los certificados TLS al cliente 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. Inicie sesión en OpenShift con el comando de inicio de sesión de OC.

      [netapp-user@rhel7 ~]$ oc login --token=sha256~D49SpB_lesSrJYwrM0LIO-VRcjWHu0a27vKa0 --server=https://api.ocp-vmw.cie.netapp.com:6443
    3. Inicie sesión en el registro utilizando las credenciales de usuario de OpenShift con el comando 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

      + NOTA: Si está utilizando kubeadmin usuario para iniciar sesión en el registro privado, utilice token en lugar de contraseña.

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

      + NOTA: Si está utilizando kubeadmin usuario para iniciar sesión en el registro privado, utilice token en lugar de contraseña.

    4. Empuje o tire de las imágenes.

      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