Instale Harbor Registry en CentOS/Debian/Ubuntu
¿Cómo instalo el registro de contenedores Harbour en CentOS/Debian/Ubuntu Linux? Harbor es un registro nativo en la nube de código abierto que almacena, firma y escanea imágenes de contenedores en busca de vulnerabilidades. Si está buscando un registro de imágenes de Docker empresarial, Harbour es la herramienta adecuada para usted. Tiene algunas de las mejores características que sólo están disponibles en productos comerciales de Registro como Quay.
Harbor llena un vacío para aplicaciones y organizaciones que no pueden utilizar un registro público o basado en la nube. Disfrutará de una experiencia consistente en todas las plataformas de la nube. Esta guía lo guiará a través de la instalación de Harbour en cualquier sistema compatible con Docker.
Características del registro portuario
- Soporte para múltiples inquilinos
- Soporte de análisis de seguridad y vulnerabilidad.
- API extensible y UI web
- Firma y validación de contenidos.
- Replicación de imágenes en múltiples instancias de Harbour
- Integración de identidad y control de acceso basado en roles
Lo que necesitarás
Necesita un sistema operativo compatible con Docker y los siguientes requisitos del sistema:
Hardware
Resource | Capacity | Description |
---|---|---|
CPU | minimal 2 CPU | 4 CPU is preferred |
Mem | minimal 4GB | 8GB is preferred |
Disk | minimal 40GB | 160GB is preferred |
Software
Puertos de red
Comencemos ahora la instalación de Harbour en el sistema Linux: distribución CentOS, Ubuntu y Debian Linux.
Preparación para el almacenamiento (opcional)
Usaré un disco secundario como almacén de datos para todas las imágenes del contenedor: /dev/sdb
$ lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 100G 0 disk
├─sda1 8:1 0 1G 0 part /boot
└─sda2 8:2 0 74G 0 part
├─rhel-root 253:0 0 10G 0 lvm /
├─rhel-swap 253:1 0 16G 0 lvm [SWAP]
├─rhel-home 253:2 0 4G 0 lvm /home
├─rhel-var 253:3 0 20G 0 lvm /var
├─rhel-var_log 253:4 0 10G 0 lvm /var/log
├─rhel-var_log_audit 253:5 0 2G 0 lvm /var/log/audit
├─rhel-tmp 253:6 0 8G 0 lvm /tmp
└─rhel-var_tmp 253:7 0 4G 0 lvm /var/tmp
sdb 8:16 0 200G 0 disk
sr0 11:0 1 1024M 0 rom
Preparemos y montemos este disco.
sudo parted -s -a optimal -- /dev/sdb mklabel gpt
sudo parted -s -a optimal -- /dev/sdb mkpart primary 0% 100%
sudo parted -s -- /dev/sdb align-check optimal 1
sudo pvcreate /dev/sdb1
sudo vgcreate vg0 /dev/sdb1
sudo lvcreate -n harbor -l +100%FREE vg0
sudo mkfs.xfs /dev/vg0/harbor
sudo mkdir /data
echo "/dev/vg0/harbor /data xfs defaults 0 0" | sudo tee -a /etc/fstab
Montar y confirmar:
$ sudo mount -a
$ df -hT /data/
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/vg0-harbor xfs 200G 1.5G 199G 1% /data
Paso 1: Instale el motor Docker
Siga nuestras guías a continuación sobre la instalación de Docker Engine.
- Instale Docker y Docker Compose en Debian
- Cómo instalar Docker CE en Ubuntu/Debian/CentOS
- Cómo instalar Docker en Fedora
- Instale Docker CE en CentOS 8 | RHEL 8
Paso 2: Instale Docker Compose
Nuestra próxima instalación es para el comando docker-compose. Esto no está disponible en los repositorios del sistema. Siga las instrucciones compartidas en nuestra guía anterior a continuación.
- Cómo instalar la última versión de Docker Compose en Linux
Paso 3: descargue e instale Harbor
Descargue el instalador del puerto.
curl -s https://api.github.com/repos/goharbor/harbor/releases/latest | grep browser_download_url | cut -d '"' -f 4 | grep '\.tgz$' | wget -i -
También puede obtener la última versión de Harbor desde la página de descargas.
Desempaquete el archivo Harbor descargado.
tar xvzf harbor-offline-installer*.tgz
Cambie al puerto creado después de descomprimir el archivo.
cd harbor
Instalación portuaria sin SSL
En la primera configuración, consideraremos la instalación sin TLS/SSL. Copiar plantilla de configuración:
cp harbor.yml.tmpl harbor.yml
Edite el archivo de configuración del puerto y configúrelo como se muestra a continuación.
$ nano harbor.yml
....
# The IP address or hostname to access admin UI and registry service.
hostname: registry.computingforgeeks.com
harbor_admin_password: StrongAdminP@s5W0$d
# Harbor DB configuration
database:
password: StrongdbrootP@s5W0$d
Instalación de Harbor con Let's Encrypt SSL
Si su servidor tiene una IP pública, puede utilizar el certificado SSL gratuito de Let's Encrypt.
Comience instalando la herramienta certbot .
# Ubuntu / Debian
sudo apt update && sudo apt install certbot -y
# Fedora
sudo dnf install certbot -y
# RHEL 8/9 based systems
sudo dnf -y install epel-release
# CentOS 7
sudo yum -y install epel-release
sudo yum -y install certbot
# Arch / Manjaro
sudo pacman -S certbot
Luego obtenga el certificado SSL.
export DOMAIN="registry.computingforgeeks.com"
export EMAIL="[email "
sudo certbot certonly --standalone -d $DOMAIN --preferred-challenges http --agree-tos -m $EMAIL --keep-until-expiring
Configure la configuración relacionada con https.
hostname: registry.computingforgeeks.com
harbor_admin_password: StrongAdminP@s5W0$d
# Harbor DB configuration
database:
password: StrongdbrootP@s5W0$d
http:
port: 80
https:
port: 443
certificate: /etc/letsencrypt/live/registry.computingforgeeks.com/fullchain.pem
private_key: /etc/letsencrypt/live/registry.computingforgeeks.com/privkey.pem
Instalación de Harbor con certificados SSL autofirmados
Para certificados autofirmados, cree un archivo de configuración de certificado: modifique el archivo para que coincida con sus valores.
$ cd /etc/pki/tls/certs
$ sudo vim harbor_certs.cnf
[ req ]
default_bits = 4096
default_md = sha512
default_keyfile = harbor_registry.key
prompt = no
encrypt_key = no
distinguished_name = req_distinguished_name
# distinguished_name
[ req_distinguished_name ]
countryName = "KE"
localityName = "Nairobi"
stateOrProvinceName = "Nairobi"
organizationName = "Computingforgeeks"
commonName = "registry.computingforgeeks.com"
emailAddress = "[email "
Generar clave y csr:
sudo openssl req -out harbor_registry.csr -newkey rsa:4096 --sha512 -nodes -keyout harbor_registry.key -config harbor_certs.cnf
Crear certificado autofirmado con fecha de vencimiento de 10 años:
sudo openssl x509 -in harbor_registry.csr -out harbor_registry.crt -req -signkey harbor_registry.key -days 3650
Para ver los detalles del certificado use el comando:
openssl x509 -text -noout -in harbor_registry.crt
Configure la configuración relacionada con https.
hostname: registry.computingforgeeks.com
harbor_admin_password: StrongAdminP@s5W0$d
# Harbor DB configuration
database:
password: StrongdbrootP@s5W0$d
http:
port: 80
https:
port: 443
certificate: ./harbor_registry.crt
private_key: ./harbor_registry.key
Instalar el registro de imágenes de Harbour Docker
Una vez configurados harbor.yml y el backend de almacenamiento (opcional), instale e inicie Harbor utilizando el script install.sh
.
sudo ./prepare
sudo ./install.sh
Tenga en cuenta que la instalación predeterminada no incluye el servicio Notary o Clair. Estos servicios se utilizan para el escaneo de vulnerabilidades.
Para ver las opciones del instalador, ejecute:
$ ./install.sh --help
Note: Please set hostname and other necessary attributes in harbor.yml first. DO NOT use localhost or 127.0.0.1 for hostname, because Harbor needs to be accessed by external clients.
Please set --with-notary if needs enable Notary in Harbor, and set ui_url_protocol/ssl_cert/ssl_cert_key in harbor.yml bacause notary must run under https.
Please set --with-chartmuseum if needs enable Chartmuseum in Harbor
Ejemplo, habilitar notario y Chartmuseum:
sudo ./install.sh --with-notary --with-chartmuseum
Para incluir el servicio de Notario, debe habilitar y configurar https en Harbor.yml. Confirme que todos los contenedores estén iniciados.
....
[Step 5]: starting Harbor ...
[+] Running 10/10
⠿ Network harbor_harbor Created 0.1s
⠿ Container harbor-log Started 0.7s
⠿ Container registry Started 1.6s
⠿ Container redis Started 1.4s
⠿ Container registryctl Started 1.2s
⠿ Container harbor-portal Started 1.6s
⠿ Container harbor-db Started 1.3s
⠿ Container harbor-core Started 2.0s
⠿ Container nginx Started 2.5s
⠿ Container harbor-jobservice Started 2.5s
✔ ----Harbor has been installed and started successfully.----
Los archivos de registro de Harbor se almacenan en el directorio /var/log/harbor/:
$ ls -1 /var/log/harbor/
core.log
jobservice.log
portal.log
postgresql.log
proxy.log
redis.log
registryctl.log
registry.log
Paso 4: Acceso al puerto
Una vez que la instalación se haya realizado correctamente, acceda a la consola web de Harbor en https://registry_domain.
Inicia con:
Username: admin
Password: as-set-in-harbor.yml
Deberías acceder al panel web de Harbor.
Con Let's Encrypt SSL:
Paso 5: Gestionar el ciclo de vida de Harbour
Lista de contenedores de servicio Harbor en ejecución:
$ docker-compose ps
NAME COMMAND SERVICE STATUS PORTS
harbor-core "/harbor/harbor_core" core running (healthy)
harbor-db "/docker-entrypoint.…" postgresql running (healthy) 5432/tcp
harbor-jobservice "/harbor/harbor_jobs…" jobservice running (healthy)
harbor-log "/bin/sh -c /usr/loc…" log running (healthy) 127.0.0.1:1514->10514/tcp
harbor-portal "nginx -g 'daemon of…" portal running (healthy) 8080/tcp
nginx "nginx -g 'daemon of…" proxy running (healthy) 0.0.0.0:80->8080/tcp, :::80->8080/tcp, 0.0.0.0:443->8443/tcp, :::443->8443/tcp
redis "redis-server /etc/r…" redis running (healthy) 6379/tcp
registry "/home/harbor/entryp…" registry running (healthy) 5000/tcp
registryctl "/home/harbor/start.…" registryctl running (healthy)
Puede utilizar Docker-Compose para gestionar el ciclo de vida de Harbour. Vea los ejemplos a continuación.
Parada en el puerto:
$ docker-compose stop
[+] Running 9/9
⠿ Container harbor-jobservice Stopped 0.2s
⠿ Container registryctl Stopped 10.2s
⠿ Container nginx Stopped 0.3s
⠿ Container harbor-portal Stopped 0.2s
⠿ Container harbor-core Stopped 0.3s
⠿ Container redis Stopped 0.2s
⠿ Container harbor-db Stopped 10.3s
⠿ Container registry Stopped 10.2s
⠿ Container harbor-log Stopped 10.3s
Reiniciar Harbor después de detenerlo:
$ docker-compose start
[+] Running 9/9
⠿ Container harbor-log Started 0.5s
⠿ Container harbor-portal Started 0.7s
⠿ Container registryctl Started 0.6s
⠿ Container redis Started 1.0s
⠿ Container harbor-db Started 0.9s
⠿ Container registry Started 0.9s
⠿ Container harbor-core Started 0.5s
⠿ Container harbor-jobservice Started 0.6s
⠿ Container nginx Started 0.6s
Actualizando la configuración de Harbor:
Para cambiar la configuración de Harbor, primero, detenga la instancia de Harbor existente y actualice Harbor.yml. Luego ejecute el script de preparación para completar la configuración. Luego vuelva a crear e iniciar la instancia de Harbour:
docker-compose down -v
vim harbor.yml
./prepare
docker-compose up -d
Cuando Harbor está instalado con Notary, Clair y el servicio de repositorio de cartas:
docker-compose down -v
vim harbor.yml
./prepare --with-notary --with-clair --with-chartmuseum
docker-compose up -d
Para solucionar problemas, consulte el archivo de registro del servicio de contenedor en cuestión en el directorio /var/log/harbor.
tail -n 100 /var/log/harbor/clair.log
Visite la página de la guía del usuario de Harbor para obtener más información sobre su uso.
Más guías del puerto:
- Integre Harbor Registry con LDAP para la autenticación de usuarios
- Evitar que los usuarios creen proyectos en el registro de Harbour
Artículos similares:
- Configurar el registro de Red Hat Quay en CentOS/RHEL/Ubuntu
- Instalar y usar Docker Registry en Fedora
- Instalar y configurar Docker Registry en CentOS 7
Etiquetas:
- Instalar el registro Harbor en CentOS 7
- Instalar el registro Harbor en CentOS 8
- Instale el registro Harbor en Ubuntu 18.04
- Instalar el registro Harbour en Debian 10
- Instale el registro Harbor en RHEL 7/RHEL 8