Harbor logo

Installation de Harbor

Documentation utilisée

Exemple :

  • user : utilisateur
  • image : javaImage
  • domaine : depotImage.com
  • user_passwd : password
  • tag : ${BUILD_NUMBER}

Pré-requis

Pour installer Harbor sans problème, vous devez disposer, au minimum :

  • d'un nom de domaine
  • de 2 CPU
  • de 4Go de RAM
  • de 40Go d'espace de stockage

Téléchargement de l'installeur ONLINE

1 - Télécharger l'installeur online :

wget https://storage.googleapis.com/harbor-releases/release-1.8.0/harbor-online-installer-v1.8.1.tgz


2 - Extraire l'archive :

tar xvf harbor-online-installer-v1.8.1.tgz

Préparation de l'espace de travail

Si l'on souhaite une configuration personnalisée, avec des dossiers spécifiques pour les différents fichiers de Harbor, il faut les créer à cette étape.

Ces dossiers peuvent être créés dans un même répertoire parent ou bien à la racine du répertoire utilisateur.

1 - Créer des dossiers pour Harbor :

# Volume pour la persistance des données
mkdir harborData 
# Volume pour les fichiers de log de Harbor
mkdir harborLogs

2 - Créer des dossiers pour les certificats

Génération d'un certificat SSL personnalisé

Générer un certificat SSL signé par Let's Encrypt selon la documentation suivante

Installation basique de Harbor

1 - Éditer le fichier de configuration de Harbor /home/<user>/harbor.yml. Il existe un grand nombre d'options qui peuvent être utilisées, qu'il suffit de décommenter et personnaliser, selon la configuration souhaitée.

# Adresse IP ou nom d'accès au domaine
hostname: <domaine>
# Certificats pour le HTTPS
certificate: /<path-to>/dataCertbot/conf/live/<domaine>/fullchain.pem 
private_key: /<path-to>/dataCertbot/conf/live/<domaine>/privkey.pem
# Emplacement des données
data_volume: /<path-to>/harborData
#Emplacement du fichier de Log
location: /<path-to>/harborLogs

Exemple : édition du fichier /home/utilisateur/harbor/harbor.yml, avec un certificat signé par Let's Encrypt

hostname: depotImage.com
certificate: /home/utilisateur/dataCertbot/conf/live/depotImage.com/fullchain.pem 
private_key: /home/utilisateur/dataCertbot/conf/live/depotImage.com/privkey.pem
data_volume: /home/utilisateur/harborData
location: /home/utilisateur/harborLogs


2 - Installer Harbor

sudo ./harbor/install.sh
sudo apt install gnome-keyring

Le keyring va permettre, côté client, de stocker les identifiants. Ce n'est pas nécessaire au bon fonctionnement de Harbor.

3 - Se connecter à Harbor via un navigateur internet

https://<domaine>

Exemple :

https://depotImage.com

Puis créer des utilisateurs et un projet.

Installation de Harbor avec Traefik

Traefik va permettre d'exposer un seul port pour toutes les applications. Voir la documentation associée pour plus de détails sur le fonctionnement de Traefik.

1 - Éditer le fichier de configuration de Harbor /home/<user>/harbor.yml. Il existe un grand nombre d'options qui peuvent être utilisées, qu'il suffit de décommenter et personnaliser, selon la configuration souhaitée.

# Adresse IP ou nom d'accès au domaine
hostname: <domaine>
# Certificats pour le HTTPS
certificate: /<path-to>/dataCertbot/conf/live/<domaine>/fullchain.pem 
private_key: /<path-to>/dataCertbot/conf/live/<domaine>/privkey.pem
# Emplacement des données
data_volume: /<path-to>/harborData
#Emplacement du fichier de Log
location: /<path-to>/harborLogs

Exemple : édition du fichier /home/utilisateur/harbor/harbor.yml, avec un certificat signé par Let's Encrypt

hostname: depotImage.com
certificate: /home/utilisateur/dataCertbot/conf/live/depotImage.com/fullchain.pem 
private_key: /home/utilisateur/dataCertbot/conf/live/depotImage.com/privkey.pem
data_volume: /home/utilisateur/harborData
location: /home/utilisateur/harborLogs


2 - Installer Harbor

sudo ./harbor/install.sh
sudo apt install gnome-keyring

Le keyring va permettre, côté client, de stocker les identifiants. Ce n'est pas nécessaire au bon fonctionnement de Harbor.

3 - Harbor utilise de façon native un reverse-proxy, or c'est ce que fait Traefik. Il faut donc :

  • incorporer les paramètres concernant la location du fichier /harbor/common/config/nginx/nginx.conf au docker-compose.yml de Harbor
  • ajouter le réseau web sur lequel fonctionne Traefik aux services de Harbor
  • supprimer toute la section proxy du fichier
    services: 
        core:
            [predefined options]
            networks:
                harbor
                web
            labels:
                traefik.frontend.rule: "Host: <domaine>;PathPrefix:/c,/api,/chartrepo,/v2,/service"
                traefik.enable: "true"
                traefik.port: "8080"
        portal:
            [predefined options]
            networks:
                harbor
                web
            labels:
                traefik.frontend.rule: "Host: <domaine>"
                traefik.enable: "true"
                traefik.port: "80"
    

Exemple:

services: 
    core:
        [predefined options]
        networks:
            harbor
            web
        labels:
            traefik.frontend.rule: "Host: depotImage.com;PathPrefix:/c,/api,/chartrepo,/v2,/service"
            traefik.enable: "true"
            traefik.port: "8080"
    portal:
        [predefined options]
        networks:
            harbor
            web
        labels:
            traefik.frontend.rule: "Host: depotImage.com"
            traefik.enable: "true"
            traefik.port: "80"

4 - Il est fortement recommandé de faire une copie de ce fichier docker-compose.yml car il est régénéré lors de la modification de la configuration de Harbor et toutes les modifications seraient alors perdues.

5 - Se connecter à Harbor via un navigateur internet

https://<domaine>

Exemple :

https://depotImage.com

Utilisation de Harbor

Démarrage et arrêt de Harbor

Pour agir sur Harbor, toujours se placer dans le répertoire contenant le fichier docker-compose.yml.

Pour plus d'informations sur le fonctionnement de Docker-Compose, se référer à la documentation

Pour lancer Harbor (valable aussi après un reboot ou un docker restart) :

sudo docker-compose up -d

Pour arrêter Harbor et supprimer les conteneurs et réseaux créés précédemment :

sudo docker-compose down

Pour simplement démarrer Harbor après un stop:

sudo docker-compose start

Pour simplement arrêter Harbor :

sudo docker-compose stop

Changement de la configuration de Harbor

Il est possible de modifier la configuration de Harbor après son installation :

# Désinstallation de Harbor tout en conservant les
# données et les fichiers des bases de données
sudo docker-compose down -v
# Modification de la configuration de Harbor
vim harbor.yml
# Application de la configuration
sudo prepare
# Relance de Harbor
sudo docker-compose up -d

Dans un terminal

1 - S'identifier avec le compte créé auparavant.

docker login https://<domaine> -p <user_passwd> -u <user>

Exemple :

docker login https://depotImage.com -p passwordoftheuser -u username

Dans notre cas on pourra prendre l'utilisateur jenkinsAJC.

2 - Taguer l'image à exporter selon la documentation suivante

docker tag <image> <domaine><dépôt>/<image>:<tag>

Exemple:

docker tag javaImage depotImage.com/projet_devops/javaImage:${BUILD_NUMBER}

${BUILD_NUMBER} est une variable d'environnement spécifique à Jenkins qui permet de récupérer le numéro de build.

3 - Supprimer sur Jenkins l'image que l'on vient d'exporter sur Harbor:

docker image rm <domaine><dépôt>/<image>:<tag>

Exemple :

docker image rm depotImage.com/projet_devops/javaImage:${BUILD_NUMBER}


4 - Exporter l'image

docker push <domaine><dépôt>/<image>:<tag>

Exemple :

docker push depotImage.com/projet_devops/javaImage:${BUILD_NUMBER}


5 - Récupérer l'image

docker pull <domaine><dépôt>/<image>:<tag>

Exemple :

docker pull depotImage.com/projet_devops/javaImage:${BUILD_NUMBER}