Harbor 
Installation de Harbor
Exemple :
user: utilisateurimage: javaImagedomaine: depotImage.comuser_passwd: passwordtag: ${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.confaudocker-compose.ymlde Harbor - ajouter le réseau
websur lequel fonctionne Traefik aux services de Harbor - supprimer toute la section
proxydu fichierservices: 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}
Où ${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}