« Mon image est construite, elle est prête à être déployée n’importe où. »
Sur quelle machine ? Ton image n’existe que localement, sur la VM où tu l’as construite. Pour la déployer ailleurs (bientôt : sur Kubernetes), il lui faut un entrepôt central accessible par le réseau : un registre. On va installer le nôtre, privé, avec en prime un scanner de sécurité.
Ce module ajoute une VM dédiée, harbor, derrière le pare-feu. Attention aux ressources : le serveur bare-metal est partagé, et Kubernetes (Phase 5) en demandera beaucoup. On reste donc sobre — une seule VM Harbor, bien dimensionnée.
À la fin de ce module, tu sauras…
- Expliquer le rôle d’un registre d’images privé
- Installer Harbor via son script, en activant le scanner Trivy
- Pousser (push) et récupérer (pull) une image sur ton registre
- Scanner une image et lire son rapport de vulnérabilités
01Préparer la VM Harbor
Une VM dédiée, avec Docker
Crée une VM harbor (Debian 13) sur le LAN, réserve-lui une IP fixe dans OPNsense (ex. 192.168.10.20), et installe-y Docker — exactement comme à la Phase 3 (dépôt officiel, clé GPG). Harbor a besoin de Docker et du plugin Compose.
docker --version
docker compose versionComprends pourquoi Harbor tourne sur Docker
Harbor est lui-même un ensemble de conteneurs (base de données, API, interface web, scanner…). Son installateur les orchestre avec Docker Compose. C’est un bon exemple concret de ce que tu as appris en Phase 3 : une application réelle = plusieurs services conteneurisés.
02Télécharger l’installateur
Récupérer le script d’installation
Harbor se déploie via un installateur officiel (script). Récupère la dernière version stable depuis la page des releases Harbor, par exemple :
Manipulecd /opt
sudo wget https://github.com/goharbor/harbor/releases/download/v2.11.1/harbor-online-installer-v2.11.1.tgz
sudo tar xzvf harbor-online-installer-v2.11.1.tgz
cd harborharbor contenant install.sh et un modèle de configuration
harbor.yml.tmpl. Adapte le numéro de version à la dernière release disponible.Comprends online vs offline installer
L’installateur online télécharge les images Harbor au moment de l’installation (plus léger). L’offline les embarque (utile sans accès Internet fiable). Ici, la VM a Internet via OPNsense, donc l’online suffit.
03Configurer Harbor
Le fichier harbor.yml
Manipulesudo cp harbor.yml.tmpl harbor.yml
sudo nano harbor.ymlLes réglages essentiels à ajuster :
| Clé | Valeur |
|---|---|
hostname | l’IP ou le nom de la VM (ex. 192.168.10.20) |
harbor_admin_password | un mot de passe fort |
bloc https | à configurer (ou commenter pour un premier test en HTTP interne) |
04Installer — avec Trivy
Lancer l’installation en activant le scanner
Manipulesudo ./install.sh --with-trivyObserve[Step 5]: starting Harbor ...
✔ ----Harbor has been installed and started successfully.----docker compose ps dans le dossier harbor liste les services (core, database, registry, portal, trivy…).Comprends c’est quoi Trivy ?
Trivy est un scanner de vulnérabilités. Le flag –with-trivy l’installe comme composant de Harbor : il analyse chaque image poussée et signale les failles connues (CVE) de ses paquets. La sécurité de la chaîne d’approvisionnement — la supply chain — devient ainsi automatique.
05Première connexion & projet
Ouvrir l’interface et créer un projet
Depuis debian-gui, ouvre http://192.168.10.20 dans le navigateur. Connecte-toi (admin + le mot de passe défini). Crée un projet nommé soria — un espace de nommage pour tes images.
Comprends un « projet » Harbor
Un projet Harbor regroupe des images sous un même préfixe et des mêmes règles d’accès (public/privé, quotas, politiques de scan). Tes images s’appelleront 192.168.10.20/soria/mon-image:tag.
06Pousser ton image SORIA Web
push, puis pull — la preuve
Sur la VM où tu as construit l’image (Phase 3), connecte-toi au registre, étiquette et pousse :
Manipuledocker login 192.168.10.20
docker tag soria-web:2.0 192.168.10.20/soria/soria-web:2.0
docker push 192.168.10.20/soria/soria-web:2.0Observedocker rmi 192.168.10.20/soria/soria-web:2.0
docker pull 192.168.10.20/soria/soria-web:2.0Comprends tag = adresse dans le registre
Le docker tag réétiquette l’image avec l’adresse du registre : registre/projet/nom:tag. C’est cette adresse complète qui dit à Docker où pousser et récupérer. Kubernetes utilisera exactement la même adresse pour tirer l’image (Phase 5).
07Scanner l’image (Trivy)
Voir les vulnérabilités
Dans l’interface Harbor, ouvre le projet soria → l’image → clique Scan (ou active le scan automatique). Trivy analyse l’image et affiche un rapport.
Comprends pourquoi ça change tout
Sans scanner, on déploie des images en aveugle. Trivy rend visible le risque — et permet des politiques : par exemple, empêcher le déploiement d’une image ayant des failles « Critical ». La sécurité entre dans le flux, au lieu d’être un contrôle après coup.
✓Ce que tu retiens
Un registre privé (Harbor) est l’entrepôt central de tes images : on y push et pull par une adresse registre/projet/nom:tag. Installé via son script avec Trivy, il scanne automatiquement les vulnérabilités. C’est la pièce qui relie la fabrication d’images (Phase 3) à leur déploiement (Phase 5).
Ton registre en service
À faire
- Installe Harbor sur sa VM dédiée, avec
–with-trivy. - Crée le projet
soria. - Pousse ton image SORIA Web, puis prouve le pull après suppression locale.
- Scanne l’image et note le nombre de vulnérabilités par gravité.
- Prends un snapshot de la VM harbor nommé
harbor-ok. - Documente dans BookStack : à quoi sert un registre, et ce que Trivy t’a montré.
?Auto-évaluation
1. À quoi sert un registre d’images ?
À stocker et distribuer les images par le réseau, pour les déployer sur d’autres machines (ex. Kubernetes).
2. Que fait le flag –with-trivy à l’installation ?
Il installe le scanner de vulnérabilités Trivy comme composant de Harbor, qui analyse alors les images poussées.
3. Que signifie l’adresse 192.168.10.20/soria/soria-web:2.0 ?
registre (192.168.10.20) / projet (soria) / nom d’image (soria-web) : tag (2.0) — l’adresse complète pour push et pull.