Maîtrisez Harbor
Dans le monde de la gestion des images de conteneurs, Harbor se présente comme une solution incontournable. Ce registre de conteneurs open-source offre aux administrateurs systèmes une plateforme robuste et flexible pour le stockage, la distribution et la sécurisation des images de conteneurs. En tant qu'élément clé dans l'écosystème des conteneurs, Harbor facilite la gestion des images de conteneurs, un aspect important pour les processus de développement et de déploiement modernes.
Fonctionnalités d'Harbor
Harbor, en tant que registre de conteneurs, offre quelques fonctionnalités essentielles pour la gestion sécurisée et efficace des images de conteneurs. Ces fonctionnalités sont conçues pour répondre aux exigences des environnements DevOps, en mettant l'accent sur la sécurité, la performance et la flexibilité.
Gestion de la Sécurité et des Vulnérabilités : Une des principales forces de Harbor est sa capacité à scanner les images de conteneurs pour détecter des vulnérabilités de sécurité. Cette fonctionnalité permet aux administrateurs systèmes de s'assurer que les images stockées dans leur registre sont à jour et ne contiennent pas de failles de sécurité connues. Harbor utilise des bases de données de vulnérabilités réguli èrement mises à jour pour effectuer ces analyses, fournissant ainsi une évaluation continue et fiable.
Contrôle d'Accès Basé sur les Rôles (RBAC) : Harbor intègre un système sophistiqué de gestion des droits d'accès, permettant de définir des politiques précises pour les utilisateurs et les groupes. Cette approche RBAC assure que seules les personnes autorisées peuvent accéder, modifier ou supprimer des images de conteneurs. Elle est essentielle pour maintenir l'intégrité et la sécurité des données dans des environnements multi-utilisateurs.
Réplication d'Images : Harbor supporte la réplication d'images entre plusieurs registres, facilitant ainsi la gestion de l'infrastructure à grande échelle. Cette fonction est particulièrement utile pour les entreprises qui opèrent dans plusieurs régions géographiques et qui doivent garantir la disponibilité et la performance en distribuant les images de conteneurs de manière efficace.
Intégration avec les Outils d'Orchestration de Conteneurs : Harbor fonctionne de manière transparente avec des outils d'orchestration de conteneurs tels que Kubernetes, ce qui permet aux utilisateurs de déployer et de gérer facilement des applications conteneurisées. Cette intégration est un aspect crucial dans les pipelines de CI/CD, où la rapidité et l'efficacité sont primordiales.
Support des Chartes Helm : En plus de la gestion des images de conteneurs, Harbor prend également en charge les chartes Helm, un outil largement utilisé pour le déploiement d'applications sur Kubernetes. Cette fonctionnalité rend Harbor encore plus polyvalent, en offrant une solution unique pour gérer à la fois les images de conteneurs et les applications Kubernetes.
Historique
Harbor a débuté comme un projet interne chez VMware, conçu pour répondre aux besoins spécifiques de gestion et de sécurité des images de conteneurs au sein de l'entreprise. À l'époque, les solutions existantes ne répondaient pas entièrement aux exigences de sécurité, de performance et de gestion à grande échelle. Harbor a été développé pour combler ce vide, offrant une plateforme robuste et sécurisée pour la gestion des images de conteneurs.
Au fil du temps, Harbor a gagné en popularité et en reconnaissance dans la communauté des développeurs et des administrateurs systèmes, principalement pour sa capacité à sécuriser efficacement les images de conteneurs. En réponse à cette demande croissante, VMware a décidé de rendre Harbor open source, permettant ainsi à une communauté plus large de contribuer au projet et de l'améliorer.
Ce passage à l'open source a marqué un tournant pour Harbor. Le projet a été adopté par la Cloud Native Computing Foundation (CNCF), un organisme qui soutient des projets clés dans l'écosystème des technologies cloud natives. L'inclusion d'Harbor dans le giron de la CNCF a renforcé sa crédibilité et sa visibilité, attirant encore plus de contributeurs et d'utilisateurs.
L'évolution d'Harbor a été marquée par plusieurs mises à jour majeures, qui ont introduit de nouvelles fonctionnalités et améliorations, telles que la gestion fine des accès, le scan des vulnérabilités, la réplication des images et la compatibilité avec d'autres outils et standards de l'écosystème cloud natif.
Aujourd'hui, Harbor est reconnu comme une solution de référence pour la gestion sécurisée des images de conteneurs. Son histoire témoigne de l'importance d'une communauté active et engagée dans le développement de solutions open source répondant aux besoins changeants des professionnels du DevOps et de la sécurité informatique.
Installation et Configuration de Base d'Harbor**
L'installation d'Harbor est la première étape essentielle pour les administrateurs systèmes souhaitant implémenter ce registre de conteneurs dans leur infrastructure. Avant de commencer, il est crucial de s'assurer que votre environnement répond aux prérequis nécessaires, notamment en termes de compatibilité système et de ressources disponibles.
Prérequis Système
Pour installer Harbor, vous aurez besoin d'un système d'exploitation Linux avec Docker installé. La version de Docker doit être compatible avec celle d'Harbor que vous prévoyez d'installer. De plus, il est recommandé d'avoir un système possédant au moins 2 Go de RAM et 40 Go d'espace disque disponible pour permettre une exécution fluide du registre.
Téléchargement et Installation
Comme d'habitude pour tester un produit, rien de mieux que d'utiliser vagrant :
# -*- mode: ruby -*-
# vi: set ft=ruby :
Vagrant.configure("2") do |config|
config.vm.synced_folder '.', '/vagrant', disabled: true
config.hostmanager.enabled = true
config.hostmanager.manage_host = true
config.vm.define "registry" do |server|
server.vm.box = "generic/ubuntu2204"
server.vm.provider :libvirt do |lv|
lv.memory = 2048
lv.cpus = 2
lv.management_network_name = 'my_network'
lv.management_network_address = '192.168.3.0/24'
end
server.vm.provision :shell, :inline => "apt update"
server.vm.hostname = "registry.harbor.local"
end
end
On lance la vm :
vagrant up
vagrant ssh
Allez, on installe docker :
sudo apt update
sudo apt install ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
# Add the repository to Apt sources:
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo usermod -aG docker vagrant
exit
Ensuite, vous pouvez télécharger la dernière version d'Harbor depuis son répertoire officiel GitHub.
vagrant ssh
cd /tmp
wget https://github.com/goharbor/harbor/releases/download/v2.9.1/harbor-offline-installer-v2.9.1.tgz
tar xvfz harbor-offline-installer-v2.9.1.tgz
cd harbor
Après le téléchargement, décompressez le fichier et naviguez dans le répertoire
décompressé. Harbor propose un script d'installation install.sh
qui facilite
le processus d'installation. Avant d'exécuter ce script, il est important de
configurer le fichier harbor.yml
pour définir les paramètres tels que le nom
de domaine, les ports et de stockage.
mv harbor.yml.tmpl harbor.yml
vi harbor.yml
Ouvrez le fichier harbor.yml
avec un éditeur de texte. Ici, changez hostname
pour qu'il corresponde au nom de votre serveur. Commentez les lignes sur la
partie des ports (pour le POC). Ce qui donne :
# Configuration file of Harbor
# The IP address or hostname to access admin UI and registry service.
# DO NOT use localhost or 127.0.0.1, because Harbor needs to be accessed by external clients.
hostname: registry.harbor.local
# http related config
#http:
# port for http, default is 80. If https enabled, this port will redirect to https port
#port: 80
# https related config
#https:
# https port for harbor, default is 443
#port: 443
# The path of cert and key files for nginx
#certificate: /your/certificate/path
#private_key: /your/private/key/path
...
Pour vérifier que tout est prêt, vous pouvez lancer la commande suivante :
sudo ./prepare --with-trivy
prepare base dir is set to /tmp/harbor
Unable to find image 'goharbor/prepare:v2.9.1' locally
v2.9.1: Pulling from goharbor/prepare
634892f30522: Pull complete
906becd729e4: Pull complete
e58f76f9e52a: Pull complete
e41fbb12868c: Pull complete
ad28d7943816: Pull complete
960887ca092b: Pull complete
fc61eb4dedb0: Pull complete
89a061d97c90: Pull complete
5bb6cb96862f: Pull complete
3145ed01c09c: Pull complete
Digest: sha256:ab50c4c9cfe6342da4605665df7657be744227dcce604a12804cb023a99f51d6
Status: Downloaded newer image for goharbor/prepare:v2.9.1
WARNING:root:WARNING: HTTP protocol is insecure. Harbor will deprecate http protocol in the future. Please make sure to upgrade to https
Generated configuration file: /config/portal/nginx.conf
Generated configuration file: /config/log/logrotate.conf
Generated configuration file: /config/log/rsyslog_docker.conf
Generated configuration file: /config/nginx/nginx.conf
Generated configuration file: /config/core/env
Generated configuration file: /config/core/app.conf
Generated configuration file: /config/registry/config.yml
Generated configuration file: /config/registryctl/env
Generated configuration file: /config/registryctl/config.yml
Generated configuration file: /config/db/env
Generated configuration file: /config/jobservice/env
Generated configuration file: /config/jobservice/config.yml
Generated and saved secret to file: /data/secret/keys/secretkey
Successfully called func: create_root_cert
Generated configuration file: /compose_location/docker-compose.yml
Clean up the input dir
Tout est prêt...
Lancement de l'Installation
Une fois que vous avez configuré harbor.yml
selon vos besoins, lancez le
script d'installation avec la commande ./install.sh
. Ce script va récupérer
toutes les images nécessaires : le serveur web NGINX, Redis...
sudo ./install.sh
[Step 0]: checking if docker is installed ...
Note: docker version: 24.0.7
[Step 1]: checking docker-compose is installed ...
Note: Docker Compose version v2.21.0
[Step 2]: loading Harbor images ...
Note: stopping existing Harbor instance ...
...
[Step 5]: starting Harbor ...
[+] Running 10/10
✔ Network harbor_harbor Created 0.9s
✔ Container harbor-log Started 0.2s
✔ Container redis Started 0.1s
✔ Container harbor-db Started 0.3s
✔ Container harbor-portal Started 0.3s
✔ Container registryctl Started 0.5s
✔ Container registry Started 0.5s
✔ Container harbor-core Started 0.1s
✔ Container nginx Started 0.1s
✔ Container harbor-jobservice Started 0.2s
✔ ----Harbor has been installed and started successfully.----
exit
Une fois l'installation terminée, vous pouvez accéder à l'interface web d'Harbor.
Premier Accès et Configuration Initiale
Lors du premier accès à Harbor, vous serez invité à vous connecter. Les
identifiants par défaut sont souvent admin
pour le nom d'utilisateur et
Harbor12345
pour le mot de passe. Il est fortement recommandé de changer ces
identifiants par défaut dès la première connexion pour des raisons de sécurité.
Dans les projets, créez le projet monprojet
Gestion des Images de Conteneurs avec Harbor
La gestion des images de conteneurs dans Harbor est un processus qui allie simplicité et sécurité. Pour illustrer cela, nous allons détailler l'intégration d'une image de conteneur simple, en commençant par la création de l'image avec un Dockerfile, puis son stockage dans Harbor.