
Héberger son propre registre de conteneurs
Voici un petit projet personnel que je partage ici dans un billet de blog. Je développe une petite application au sein de mon "lab" et je souhaite qu'elle soit dans un conteneur. Cette application va tourner sur un orchestrateur de conteneurs bien connu, Kubernetes.
Mais pour cela, je dois construire l'image du conteneur et la mettre à disposition pour que l'orchestrateur puisse la récupérer et créer une instance à partir de celle-ci. C'est la genèse de ma recherche de solution pour héberger un registre de conteneurs et ainsi que je découvre Harbor.
Harbor est une application open source qui permet d'héberger son propre service de registre. Les équivalents Cloud public les plus connus sont :
- Amazon ECR (https://aws.amazon.com/ecr/)
- Azure ACR (https://azure.microsoft.com/en-us/services/container-registry/)
- GCP Container Registry (https://cloud.google.com/container-registry/)
Sans plus attendre, rentrons dans le vif du sujet et passons à l'installation de la solution.
Prérequis
Il faut au minimum 2 CPU, 2 Go de RAM et 40 Go de disque (https://goharbor.io/docs/1.10/install-config/installation-prereqs/). C'est parfait pour mon homelab.
Docker engine et Docker compose doivent également être installés. Nous ne détaillerons pas ici comment réaliser ces étapes.
Installation
L'installation est simple et bien décrite dans la documentation officielle (https://goharbor.io/docs/1.10/).
A partir de la page GitHub suivante https://github.com/goharbor/harbor/releases, il faut télécharger (avec wget
, par exemple) la dernière version de l'utilitaire d'installation.
wget https://github.com/goharbor/harbor/releases/download/version/harbor-online-installer-version.tgz
tar xvf harbor-online-installer-version.tgz
Extraction du contenu de l'archive avec la commande tar
:
tar xvf harbor-online-installer-version.tgz
Le service, au sein de mon homelab, n'est pas directement exposé sur Internet. Donc j'ai omis volontairement la partie de configuration HTTPS (https://goharbor.io/docs/1.10/install-config/configure-https/). Dans mon cas, la terminaison HTTPS est portée par un autre serveur (reverse proxy).
Pour configurer le service avant l'installation, il est nécessaire d'éditer le fichier harbor.yml contenu dans le dossier précédemment extrait. Il est possible d'y rentrer un certain nombre d'informations, tout est détaillé dans la documentation ici : https://goharbor.io/docs/1.10/install-config/configure-yml-file/.
Une fois les modifications effectuées dans le fichier de configuration, l'installation peut être lancée.
Il est possible d'installer des services complémentaires avec Harbor, comme Clair pour l'analyse statique pour détecter la présence de vulnérabilités au sein des images (article à venir sur le sujet) ou encore Notary pour la signature du contenu.
L'option d'installation simple est la suivante :
./install.sh
Pour installer Harbor avec CoreOS Clair, voici la commande à exécuter :
./install.sh --with-clair
Ça y est, le service est installé et il ne reste plus qu'à aller sur l'URL configurée pour finaliser la configuration du service.
La page d'accueil, une fois le service configuré devrait ressembler à ça :
Et voilà, il n'y a plus qu'à construire des images !
{{ 'Comments (%count%)' | trans {count:count} }}
{{ 'Comments are closed.' | trans }}