Home » Tu Container Registry propio con Harbor
Harbor como Container Registry

Tu Container Registry propio con Harbor

Descubre cómo instalar y configurar Harbor, un registro privado de contenedores empresarial con autenticación, escaneo de vulnerabilidades y replicación. Sigue esta guía paso a paso para desplegar Harbor en tu entorno y gestionar tus imágenes Docker de forma segura y eficiente. ¡Comienza hoy mismo!

¿Has pensado en implementar tu Container Registry propio con Harbor? ¿No sabías qué es Harbor? ¿No sabías que puedes usar un Container Registry privado, en lugar de solo públicos como Docker Hub?

Probablemente, si llegaste aquí, es porque tengas interés en el tema. Tal vez, tengas algunos clusters de Kubernetes o servidores Docker On Premise donde se te exige ciertas medidas de seguridad, entre ellas evitar el acceso a Internet.

Configurar y gestionar un registro de contenedores privado es un desafío común para equipos que buscan mayor control sobre sus imágenes, seguridad mejorada y una alternativa a soluciones como Docker Hub o Amazon ECR.

En este artículo, te guiaré paso a paso para implementar tu propio Container Registry con Harbor, asegurando que tengas una solución robusta, escalable y segura.

¿Qué es Harbor?

Harbor es un proyecto de código abierto mantenido por la Cloud Native Computing Foundation (CNCF) . Es un registro de contenedores empresarial que amplía las funcionalidades de Docker Registry al agregar características como:

  • Autenticación basada en roles : Controla quién puede subir o descargar imágenes.
  • Escaneo de vulnerabilidades : Detecta problemas de seguridad en las imágenes.
  • Replicación entre registros : Sincroniza imágenes entre múltiples registros.
  • Interfaz gráfica : Una interfaz web intuitiva para administrar tus imágenes.
  • Compatibilidad con Helm Charts : Gestiona paquetes de Helm junto con tus imágenes.

Ahora que conoces sus ventajas, ¡comencemos con la instalación!

¿Por qué implementar tu Container Registry propio con Harbor?

En el ecosistema actual de contenedores, contar con un registro de imágenes privado no es un lujo, sino una necesidad para equipos que buscan seguridad, control y eficiencia en su ciclo de desarrollo. Harbor se posiciona como una de las mejores soluciones para este propósito, ofreciendo una alternativa poderosa a servicios como Docker Hub o Amazon ECR. A continuación, te presento razones clave para considerar su implementación:

1. Seguridad reforzada para tus imágenes

Harbor proporciona un conjunto de funcionalidades avanzadas para proteger tu infraestructura de contenedores:
Escaneo de vulnerabilidades que tiene integración nativa a herramientas como Trivy y Clair.
Firmado y verificación de imágenes usando Cosign para garantizar su integridad.
Autenticación y control de accesos basado en roles (RBAC), asegurando que solo los usuarios autorizados puedan acceder o modificar imágenes.

2. Reducción de costos y dependencia de terceros

Los servicios de container registry en la nube suelen cobrar por almacenamiento y tráfico de red. Con Harbor, puedes:
💰 Evitar costos inesperados, ya que el control total del almacenamiento y la transferencia de datos queda en tus manos.
🌐 Eliminar la dependencia de proveedores externos, reduciendo riesgos asociados a cambios en políticas, interrupciones o restricciones en el acceso.

3. Mayor rendimiento y disponibilidad en entornos empresariales

Si operas en un entorno donde la latencia y la disponibilidad son críticas, un registry privado con Harbor permite:
Entrega más rápida de imágenes al estar alojadas en tu propia infraestructura.
🖧 Alta disponibilidad y replicación, asegurando que las imágenes estén accesibles incluso en escenarios de desastre o caídas de red.
🚀 Optimización para entornos multi-cloud y on-premises, integrándose sin problemas en arquitecturas híbridas.

4. Integración fluida con tu ecosistema DevOps

Harbor está diseñado para integrarse con herramientas populares de CI/CD y orquestación:
🔗 Compatibilidad total con Kubernetes, facilitando la distribución de imágenes en clústeres.
🤖 Automatización en pipelines de CI/CD, permitiendo la publicación y validación de imágenes directamente desde herramientas como GitLab CI/CD, Jenkins o ArgoCD.
📜 Gestión de políticas avanzadas, incluyendo retención automática de imágenes antiguas y replicación entre registros.

5. Implementación sencilla y escalabilidad garantizada

A pesar de ser una solución robusta, Harbor es fácil de instalar y escalar:
🔧 Despliegue flexible, compatible con Docker Compose y Kubernetes.
📈 Capacidad de crecimiento, permitiéndote comenzar con una instalación básica y expandirla según las necesidades de tu organización.
🔁 Soporte para múltiples backends de almacenamiento, incluyendo NFS, AWS S3, Google Cloud Storage y más.


Instalación

Requisitos Previos

Antes de comenzar la instalación de tu Container Registry propio con Harbor, asegúrate de cumplir con los siguientes requisitos:

  1. Servidor Linux : Cualquier distribución Linux moderna. Pero, asumiré el uso de Ubuntu en este artículo para fines didácticos.
  2. Docker y Docker Compose : Harbor se ejecuta como un conjunto de contenedores Docker.
  3. Acceso a Internet : Necesitarás descargar imágenes desde Docker Hub.
  4. Dominio o IP público : Si planeas acceder a Harbor desde fuera de tu red local.
  5. Certificados SSL (opcional): Para habilitar HTTPS en tu registro.

Paso 1: Instalar Docker y Docker Compose

Si aún no tienes Docker instalado, sigue estos pasos en un sistema Ubuntu Linux:

# Obtener llave GPG oficial de Docker
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/ubuntu/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Agregar el repositorio de Docker
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/ubuntu \
  $(. /etc/os-release && echo "${UBUNTU_CODENAME:-$VERSION_CODENAME}") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

# Instalar Docker y Docker Compose
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

Estos pasos mostrados arriba son exactamente los mismos que los indicados en la documentación oficial de Docker (ver enlace aquí).

Si quieres saber cómo instalar Docker en otras plataformas, revisa este otro enlace.

Paso 2: Crea el certificado TLS

Es altamente recomendable que configures tu Container Registry con TLS y para eso requieres un certificado digital.

Si aún no cuentas con un certificado, puedes crear uno auto-firmado para el dominio registry.miempresa.com (o el que prefieras) de la siguiente manera:

openssl req -new -x509 -days 365 -nodes \
  -keyout registry.miempresa.com.key \
  -out registry.miempresa.com.crt \
  -subj "/CN=registry.miempresa.com" \
  -addext "subjectAltName=DNS:registry.miempresa.com"

cp registry.miempresa.com.crt /etc/ssl/certs/
cp registry.miempresa.com.key /etc/ssl/private/

En otros sistemas distintos a Ubuntu, debe usarse unos directorios de certificados y llaves privadas diferentes a /etc/ssl/certs/ y /etc/ssl/private/ respectivamente.

Paso 3: Descargar Harbor

Visita la página oficial de Harbor en GitHub y descarga la versión más reciente del «instalador online». Por ejemplo:

wget https://github.com/goharbor/harbor/releases/download/v2.12.2/harbor-online-installer-v2.12.2.tgz

Extraer el contenido e ingresa al directorio creado:

tar -zxf harbor-online-installer-v2.12.2.tgz
cd harbor

Paso 4: Configurar Harbor

Dentro del directorio harbor, encontrarás un archivo llamado harbor.yml.tmpl a partir del cual debes crear una copia llamada harbor.yml y editarlo:

cp harbor.yml.tmpl harbor.yml

vim harbor.yml

Este archivo contiene todas las configuraciones necesarias para tu instalación. Edítalo según tus necesidades, siguiendo estas mínimas requeridas/recomendadas:

hostname: registry.miempresa.com

https:
  port: 443
  certificate: /etc/ssl/certs/registry.miempresa.com.crt
  private_key: /etc/ssl/private/registry.miempresa.com.key

harbor_admin_password: ConfiguraTuClaveAqui

database:
  password: PasswordPostgresSeguro

Aquí hay algunas configuraciones clave que debes revisar:

  1. Hostname : Define el nombre de dominio o la dirección IP de tu servidor.yamlCopy1hostname: harbor.example.com
  2. Puertos : Asegúrate de que el puerto HTTPS esté habilitado
  3. Contraseña del Administrador : Cambia la contraseña ConfiguraTuClaveAqui por un valor diferente.
  4. Base de Datos : Harbor utiliza PostgreSQL para almacenar datos. A menos que tengas una base de datos externa, puedes usar la configuración predeterminada. Cambia el valor de PasswordPostgresSeguro por uno a tu medida que sea seguro.

Guarda los cambios y cierra el archivo.


Paso 5: Ejecutar el Instalador

Una vez configurado harbor.yml, ejecuta el script de instalación:

sudo ./install.sh

Este proceso descargará las imágenes necesarias, creará los contenedores y configurará Harbor. Dependiendo de tu conexión a Internet, esto puede tardar unos minutos.

Además, este script creará por ti de forma automática un archivo de configuración docker-compose.yml con toda la configuración de los servicios de Docker Compose requeridos por Harbor. Al final, el script se encargará de levantar todos esos servicios.

Cuando termine, verás un mensaje indicando que Harbor está listo para usarse.

Importante:

  • En caso desees hacer cambios a la configuración de Harbor a través del archivo harbor.yml, puedes editarlo sin problemas.
  • Luego de finalizar la edición, debes ejecutar estos dos comandos:
./prepare

docker compose restart

En este punto, ya tienes listo tu Container Registry propio con Harbor.

Paso 6: Acceder a Harbor

Abre un navegador y visita la URL que configuraste en el archivo harbor.yml. Por ejemplo:

https://registry.miempresa.com

Inicia sesión con las credenciales del administrador:

  • Usuario : admin
  • Contraseña : La que definiste en harbor_admin_password
Pantalla de inicio de sesión de Harbor

Paso 7: Crear un Proyecto y Subir Imágenes

  1. Crea un Proyecto : Desde la interfaz gráfica, selecciona «Proyectos» y haz clic en «Nuevo Proyecto». Asigna un nombre (Ejm: proyecto-01) y configura los permisos.
  2. Sube una Imagen : Usa Docker para etiquetar y subir una imagen a tu nuevo proyecto.
Creación de nuevo proyecto de Harbor

Importante:

  • Un proyecto agrupa uno o más repositorios, se supone que todos ellos relacionados entre sí de alguna manera.
  • Los repositorios no los creas, sino que se crean automáticamente al momento de subir una imagen.
  • Para subir una imagen (luego de aplicarle un tag), es indispensable que primero exista un proyecto que la va a contener.

A continuación, un ejemplo práctico de cómo subir una imagen cualquiera al proyecto que creamos en Harbor:

# Descargar una imagen de nginx
docker pull nginx:latest

# Asignar un tag a la imagen descargada para que apunte a nuestro registry
docker tag nginx:latest registry.miempresa.com/proyecto-01/nginx:latest

# Iniciar sesion en nuestro registry (por ahora con el usuario admin)
docker login -u admin -p harbor_admin_password registry.miempresa.com

# Subir la imagen de nginx al registry
docker push registry.miempresa.com/proyecto-01/nginx:latest


Conclusión

Ahora que ya tienes tu propio Container Registry con Harbor en funcionamiento, te animo a probarlo en un entorno real y compartir tus aprendizajes.

¿Tienes alguna duda o encontraste un desafío durante la implementación? Déjalo en los comentarios y estaré encantado de ayudarte.

También, si te interesa más contenido sobre DevOps y contenedores, sígueme en LinkedIn.

Post navigation

Deja un comentario

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *