Creación de registros privados de imágenes
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.
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
-
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
-
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:
-
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
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
. -
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
-
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
-
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
-
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
-
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.
-
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
-
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
-
-
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
-
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.
-
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
-
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
-
-
Para insertar o extraer una imagen de estaciones de trabajo aparte del nodo OpenShift, lleve a cabo los siguientes pasos.
-
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
-
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
-
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. -
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
-