Búsqueda de sitios web

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

Artículos relacionados: