Un registro privado puede ser útil para almacenar imágenes de contenedores de Linux para sus aplicaciones en una infraestructura interna, controlada y, posiblemente, más segura.
Los contenedores de Linux son tecnologías que le permiten empaquetar y aislar las aplicaciones junto con todo el entorno que necesitan durante su tiempo de ejecución, es decir, con todos los archivos que requieren para ejecutarse. Esto facilita el traslado de la aplicación que se encuentra dentro del contenedor de un entorno al otro (de desarrollo, de pruebas o de producción, entre otros).
Gartner reconoció a Red Hat como empresa líder en el informe de 2023 Gartner® Magic Quadrant™
Red Hat ocupó el puesto más alto en el Magic Quadrant de Gartner de 2023 para la gestión de contenedores no solo por su capacidad de ejecución, sino también por la integridad de su visión.
En este artículo, le enseñaré a crear un registro privado simple para SSL/TLS con una estrategia de seguridad más sólida que puede usarse para almacenar contenedores en general y a integrarlo con Red Hat OpenShift, para poder realizar implementaciones desconectadas de OCP. También puede usarse para casos en los que OperatorHub no tiene acceso a Internet.
Requisitos
Se necesitan los siguientes requisitos:
- Nombre de dominio completamente calificado (FQDN): registration.rhbrlabs.com
- SO: Red Hat Enterprise Linux 8.6 o superior
- SELinux: en funcionamiento
- Firewalld: habilitado
- Registro: Podman
- Herramientas de Apache
- Volumen: 100 GB cargados en /data
Este registro es totalmente compatible con las instalaciones desconectadas de OpenShift.
Instalación
Para aumentar la seguridad del sistema, la instalación debe contar con técnicas de cifrado, además de las características de seguridad ya disponibles en Linux.
Cree los directorios requeridos:
[root@registry ~]# mkdir -p /data/registry/{auth,certs,data}
Certificados
Genere certificados para el registro de contenedores. En este ejemplo, se crean certificados con diez años de validez:
[root@registry ~]# openssl req -newkey rsa:4096 -nodes -sha256 \ -keyout /data/registry/certs/registry.rhbrlabs.com.key -x509 -days 3650 \ -out /data/registry/certs/registry.rhbrlabs.com.crt \ -subj "/C=US/ST=NorthCarolina/L=Raleigh/O=Red Hat/OU=Engineering/CN=registry.rhbrlabs.com" \ -addext "subjectAltName = DNS:registry.rhbrlabs.com"
El sistema operativo debe confiar en los certificados que se generaron.
Copie el certificado generado en el directorio de anclajes de confianza y ejecute update-ca-trust:
[root@registry ~]# cp /data/registry/certs/registry.rhbrlabs.com.crt /etc/pki/ca-trust/source/anchors/
[root@registry ~]# update-ca-trust
Cuentas de usuario
Para controlar el acceso a nuestro registro, deben crearse cuentas de usuario. En el siguiente ejemplo, se crea una cuenta para el registro de usuarios.
Genere un archivo de autenticación para el registro de imágenes:
[root@registry ~]# dnf -y install httpd-tools
[root@registry ~]# htpasswd -bBc /data/registry/auth/htpasswd registry redhat12345678
Secreto HTTP
Además de la cuenta de usuario, se necesita un secreto para aumentar la confiabilidad del acceso.
Genere un secreto aleatorio:
[root@registry ~]# date | md5sum
10f207a4cbba51bf00755b5a50718966
Software de registro
Con los datos necesarios a su disposición, es hora de crear el registro.
Cree el registro de contenedores con la imagen docker.io/library/registry:2:
[root@registry ~]# dnf -y install podman
[root@registry ~]# podman create --name ocp-registry --net host -p 5000:5000 \ -v /data/registry/data:/var/lib/registry:z -v /data/registry/auth:/auth:z \ -e "REGISTRY_AUTH=htpasswd" -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry" \ -e "REGISTRY_HTTP_SECRET=10f207a4cbba51bf00755b5a50718966" \ -e REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd -v /data/registry/certs:/certs:z \ -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/registry.rhbrlabs.com.crt \ -e REGISTRY_HTTP_TLS_KEY=/certs/registry.rhbrlabs.com.key docker.io/library/registry:2
El comando anterior generará un mensaje como este:
Trying to pull docker.io/library/registry:2... Getting image source signatures Copying blob fd4a5435f342 done Copying blob 213ec9aee27d done Copying blob 4583459ba037 done Copying blob b136d5c19b1d done Copying blob 6f6a6c5733af done Copying config dcb3d42c17 done Writing manifest to image destination Storing signatures Port mappings have been discarded as one of the Host, Container, Pod, and None network modes are in use 22633f37262a4ab2d64fc8beb44bb80618b11802974fb2f45d31d98db3cf14e8
Entonces, el registro estará listo para usar. Sin embargo, necesitamos una forma de controlar el inicio y la detención.
Control de inicio
Cree un archivo UNIT para que el registro inicie automáticamente el contenedor en el arranque:
[root@registry ~]# cat /etc/systemd/system/ocp-registry.service
[Unit] Description=OCP Registry [Service] Restart=always ExecStart=/usr/bin/podman start -a ocp-registry ExecStop=/usr/bin/podman stop -t 10 ocp-registry [Install] WantedBy=network-online.target
Inicie el contenedor:
[root@registry ~]# systemctl daemon-reload
[root@registry ~]# systemctl enable --now ocp-registry.service

Registro privado en ejecución
Firewall
Como se usa un firewall local, es necesario autorizar el puerto de servicio del registro.
Habilite el puerto TCP 5000 en Firewalld:
[root@registry ~]# firewall-cmd --permanent --add-port=5000/tcp
[root@registry ~]# firewall-cmd --reload
Comprobación del funcionamiento del registro
En este punto, debe comprobarse el acceso al registro nuevo.
Asegúrese de que la autenticación y el protocolo de confianza SSL/TLS funcionen:
[root@registry ~]# curl -u 'registry:redhat12345678' https://registry.rhbrlabs.com:5000/v2/_catalog
{"repositories":[]}
Integración a Red Hat OpenShift
Si va a usar este registro junto con OCP, cree un archivo en formato base64 con la información de autenticación.
Genere un archivo temporal con la información de autenticación para las instalaciones desconectadas de OpenShift:
[root@registry ~]# cat <<EOF > ~/registry-secret.json "registry.rhbrlabs.com:5000": { "email": "registry@redhat.com", "auth": "$(echo -n 'registry:redhat12345678' | base64 -w0)" } EOF
Conclusión
Su nuevo registro privado con funciones de seguridad adicionales ya está en funcionamiento. Tenerlo constituye una buena manera de controlar el acceso y cumplir con los estándares de seguridad más estrictos, ya que aquellos que son públicos son más susceptibles a los problemas de seguridad.
En esta publicación, se explicó la creación de un registro con seguridad mejorada desde cero. A pesar de ser una solución funcional, carece de funciones avanzadas, como la alta disponibilidad, la duplicación de imágenes, el almacenamiento en caché y la replicación geográfica, que ya están presentes en soluciones más sólidas.
Todas estas funciones, además del análisis de los puntos vulnerables de los contenedores, la compatibilidad con el almacenamiento de objetos y el ajuste automático, están integradas en Red Hat Quay.
La plataforma de registro de contenedores Red Hat Quay ofrece almacenamiento, distribución y control con seguridad mejorada de los contenedores y los artefactos de la nube en cualquier infraestructura. Está disponible como elemento independiente o puede ejecutarse en Red Hat OpenShift.
Sobre el autor
Andre Rocha is a Consultant at Red Hat focused on OpenStack, OpenShift, RHEL and other Red Hat products. He has been at Red Hat since 2019, previously working as DevOps and SysAdmin for private companies.
Navegar por canal
Automatización
Las últimas novedades en la automatización de la TI para los equipos, la tecnología y los entornos
Inteligencia artificial
Descubra las actualizaciones en las plataformas que permiten a los clientes ejecutar cargas de trabajo de inteligecia artificial en cualquier lugar
Nube híbrida abierta
Vea como construimos un futuro flexible con la nube híbrida
Seguridad
Vea las últimas novedades sobre cómo reducimos los riesgos en entornos y tecnologías
Edge computing
Conozca las actualizaciones en las plataformas que simplifican las operaciones en el edge
Infraestructura
Vea las últimas novedades sobre la plataforma Linux empresarial líder en el mundo
Aplicaciones
Conozca nuestras soluciones para abordar los desafíos más complejos de las aplicaciones
Programas originales
Vea historias divertidas de creadores y líderes en tecnología empresarial
Productos
- Red Hat Enterprise Linux
- Red Hat OpenShift
- Red Hat Ansible Automation Platform
- Servicios de nube
- Ver todos los productos
Herramientas
- Training y Certificación
- Mi cuenta
- Soporte al cliente
- Recursos para desarrolladores
- Busque un partner
- Red Hat Ecosystem Catalog
- Calculador de valor Red Hat
- Documentación
Realice pruebas, compras y ventas
Comunicarse
- Comuníquese con la oficina de ventas
- Comuníquese con el servicio al cliente
- Comuníquese con Red Hat Training
- Redes sociales
Acerca de Red Hat
Somos el proveedor líder a nivel mundial de soluciones empresariales de código abierto, incluyendo Linux, cloud, contenedores y Kubernetes. Ofrecemos soluciones reforzadas, las cuales permiten que las empresas trabajen en distintas plataformas y entornos con facilidad, desde el centro de datos principal hasta el extremo de la red.
Seleccionar idioma
Red Hat legal and privacy links
- Acerca de Red Hat
- Oportunidades de empleo
- Eventos
- Sedes
- Póngase en contacto con Red Hat
- Blog de Red Hat
- Diversidad, igualdad e inclusión
- Cool Stuff Store
- Red Hat Summit