Guía de Instalaicón de Harbor
- Visión General de la Arquitectura
- Requisitos Previos
2.1 Requisitos de Hardware
Según la documentación oficial, se recomienda la siguiente configuración mínima:
- 4 núcleos de CPU
- 8 GB de memoria RAM
- 160 GB de espacio en disco
2.2 Requisitos de Software
Antes de proceder con la instalación, asegúrese de tener instalado:
- Docker (versión 19.03 o superior)
- Docker Compose
- OpenSSL
- Proceso de Instalación
3.1 Configuración de LVM
Para gestionar el almacenamiento de forma eficiente, configuramos un volumen lógico:
# Identificar discos disponibles
lsblk
# Crear volumen físico
pvcreate /dev/sdb
# Crear grupo de volúmenes
vgcreate registro /dev/sdb
# Crear volumen lógico (199GB)
lvcreate -L 199G -n registro registro
# Formatear volumen
mkfs.xfs /dev/registro/registro
# Montar temporalmente
mount /dev/registro/registro /datos/harbor/
# Configurar montage permanente en /etc/fstab
echo '/dev/registro/registro /datos/harbor/ xfs defaults 0 1' >> /etc/fstab
3.2 Instalación de Software Base
3.2.1 Instalación de Docker
#!/bin/bash
# Script de instalación de Docker
cd /usr/local/src
tar xf docker-19.03.15.tgz
cd docker
cp ./* /usr/bin
# Crear usuario y grupo
groupadd docker
useradd operador -g docker
# Configurar systemd para containerd
cat > /lib/systemd/system/containerd.service <<eof after="network.target" cat="" configurar="" container="" de="" delegate="yes" description="containerd" docker="" documentation="https://containerd.io" eof="" execstart="/usr/bin/containerd" execstartpre="-/sbin/modprobe" killmode="process" limitcore="infinity" limitnofile="infinity" limitnproc="infinity" local-fs.target="" oomscoreadjust="-999" overlay="" restart="always" restartsec="5" runtime="" socket="" tasksmax="infinity" type="notify" wantedby="multi-user.target"> /lib/systemd/system/docker.socket <<eof api="" cat="" configurar="" de="" description="Docker" docker="" eof="" for="" listenstream="/var/run/docker.sock" servicio="" socket="" socketgroup="docker" socketmode="0660" socketuser="root" the="" wantedby="sockets.target"> /lib/systemd/system/docker.service <<eof after="network-online.target" application="" container="" containerd="" containerd.service="" delegate="yes" description="Docker" docker.service="" docker.socket="" documentation="https://docs.docker.com" e="" enable="" engine="" eof="" execreload="/bin/kill" execstart="/usr/bin/dockerd" fd:="" firewalld.service="" habilitar="" hup="" iniciar="" killmode="process" limitcore="infinity" limitnofile="infinity" limitnproc="infinity" oomscoreadjust="-500" requires="docker.socket" restart="always" restartsec="2" servicios="" startlimitburst="3" startlimitinterval="60s" systemctl="" tasksmax="infinity" timeoutsec="0" type="notify" wantedby="multi-user.target" wants="network-online.target"></eof></eof></eof>
3.2.2 Instalación de Docker Compose
# Descargar Docker Compose v2.23.3
wget -c https://github.com/docker/compose/releases/download/v2.23.3/docker-compose-linux-x86_64
chmod a+x docker-compose-linux-x86_64
mv docker-compose-linux-x86_64 /usr/local/bin/docker-compose
3.3 Obtención del Paquete de Instalación
Descargue el instalador offline desde el repositorio oficial de Harbor:
https://github.com/goharbor/harbor/releases
3.4 Configuración del Sistema
3.4.1 Generación de Certificados SSL
# Crear directorio para certificados
mkdir -p /raiz/harbor/certificados
# Generar clave y certificado de CA
openssl genrsa -out ca.key 4096
openssl req -x509 -new -nodes -sha512 -days 3650 -key ca.key -out ca.crt
# Generar clave para el dominio
openssl genrsa -out midominio.key 4096
openssl req -sha512 -new -key midominio.key -out midominio.csr
# Crear archivo de extensiones
cat > v3.ext <<-EOF
authorityKeyIdentifier=keyid,issuer
basicConstraints=CA:FALSE
keyUsage = digitalSignature, nonRepudiation, keyEncipherment, dataEncipherment
extendedKeyUsage = serverAuth
subjectAltName = @alt_names
[alt_names]
DNS.1=mi-dominio.com
DNS.2=registro
DNS.3=harbor-servidor
EOF
# Firmar certificado
openssl x509 -req -sha512 -days 3650 -CA ca.crt -extfile v3.ext -CAkey ca.key -CAcreateserial -in midominio.csr -out midominio.crt
3.4.2 Configuración de Harbor
# Descomprimir paquete
tar xf harbor-offline-installer-v2.5.0.tgz
cd harbor
# Configurar resolución de host
echo '192.168.1.100 mi-dominio.com' >> /etc/hosts
# Editar archivo de configuración harbor.yml
# Parámetros principales:
hostname: mi-dominio.com
http:
port: 80
https:
port: 443
certificate: /raiz/harbor/certificados/midominio.crt
private_key: /raiz/harbor/certificados/midominio.key
harbor_admin_password: MiContrasena123
database:
password: MiContrasena123
data_volume: /datos/harbor
3.5 Inicialización y Arranque
# Generar archivos de configuración
./prepare
# Configurar Docker para certificados
mkdir -p /etc/docker/cert.d/mi-dominio.com
cp /raiz/harbor/certificados/midominio.crt /etc/docker/cert.d/mi-dominio.com/
# Reiniciar Docker
systemctl restart docker
# Instalar y ejecutar Harbor con módulos adicionales
./install.sh --with-trivy
Los parámetros adicionales inclyuen:
- notary: Servicio de autenticación de imágenes
- trivy: Escáner de vulnerabilidades
- chartmuseum: Repositorio de charts Helm
- Verificación de la Instalación
4.1 Prueba de Autenticación desde Servidor
root@harbor-servidor:~/harbor# docker login mi-dominio.com
Username: admin
Password:
Login Succeeded
4.2 Acceso a Interfaz Web
Acceda a la interfaz de administración a través del navegador:
https://mi-dominio.com
Credenciales por defecto:
- Usuario: admin
- Contraseña: configuada en harbor_admin_password
4.3 Prueba de Push de Imagen
# Etiquetar imagen existente
docker tag mi-imagen:latest mi-dominio.com/biblioteca/mi-imagen:latest
# Subir imagen al registry
docker push mi-dominio.com/biblioteca/mi-imagen:latest