Le 31 juillet, la CNCF a
annoncé l'adoption d'un nouveau projet Open Source, décrit comme un «registre natif du cloud», dans son bac à sable (c'est-à-dire au stade de support le plus précoce),
Harbor . Sur son site Internet, ils nous expliquent que le produit a été créé pour gérer des images de conteneurs Docker dans un environnement sûr.

Il semblerait qu'il existe déjà un Docker Registry (ou, disons, Quay de CoreOS), mais il est évident que de nouvelles solutions n'apparaissent pas et ne mûrissent pas aux applications de production comme ça - en particulier les solutions Open Source ... et plus encore, tombant dans CNCF. Cet article de revue vise à faire la lumière sur les raisons de l'apparition de Harbour, ses principales caractéristiques et fonctionnalités.
Priorité de Harbour: réseau et entreprise
L'histoire du projet commence en 2016, en mars dont la première version publique a eu lieu - 0.1.0. Derrière sa création se trouvaient des ingénieurs
VMware qui ont décrit le projet comme un «serveur de registre de classe entreprise», qui, sur la base du développement de Docker, «étend les capacités du Docker Registry en y ajoutant plus de fonctionnalités qui sont généralement requises par l'entreprise».
À cette époque, l'accent était davantage mis sur la possibilité d'utiliser ce registre au sein de l'entreprise, notamment en améliorant potentiellement la productivité en stockant des images sur le réseau de l'entreprise: «[Harbour] est très utile pour les utilisateurs de conteneurs qui n'ont pas une bonne connexion Internet. Par exemple, Harbor augmente la productivité des développeurs chinois en éliminant la difficulté de télécharger des images à partir d'Internet public »
(de README à Harbor 0.1.0 ) .
Remarque : l'orientation de Harbour vers la Chine, confirmée par la présence d'une localisation appropriée dès les premières versions, n'était pas fortuite: la création du projet en tant que tel a été initiée par la division chinoise de l'entreprise (VMware China R&D).Ce qui est devenu un événement quotidien pour l'écosystème natif du cloud, Harbor a été
écrit dans la langue Go dès le début et sous licence selon les termes de la licence Apache 2.0. Si nous parlons des capacités fonctionnelles du projet, alors dans la première version, les auteurs ont présenté à ce jour certaines caractéristiques pertinentes, telles que:
- contrôle d'accès basé sur les rôles ( RBAC , qui vous permet d'organiser les utilisateurs et les référentiels en tant que «projets» et d'accorder différents droits aux images dans ces projets), ainsi que la prise en charge LDAP et AD pour l'authentification des utilisateurs;
- personnalisée interface Web pour la navigation dépôts, recherche à travers eux, la gestion de projet;
- audit de toutes les opérations;
- API REST pour la gestion.
Gestion de projet dans Harbor Web UIHarbor Evolution: Sécurité
En 2017, VMware a trouvé une application logique pour son nouveau projet - l'intégration avec d'autres solutions d'entreprise pour les conteneurs. En particulier,
vSphere Integrated Containers (VIC), qui, n'étant pas un PaaS (Platform as a Service) à part entière ou un CaaS (Containers as a Service), se développait activement, offrait une sorte de base pour travailler avec des conteneurs. Aujourd'hui, par exemple,
vSphere Integrated Containers Engine , qui est le runtime de conteneur pour vSphere, en est issu. Et voici comment l'ingénieur de solution VMware (Nate Reid) décrivait VIC à l'époque:
«VIC prend le cadre d'un seul hôte Docker et l'adapte à plusieurs hôtes ESXi. Son architecture proposée pour l'orchestration est similaire à Swarm, Kubernetes (K8s) et Mesos. Cependant, il y a quelques nuances et il n'y a aucune tâche pour remplacer tous ces produits. VIC fournit un réseau pour les conteneurs, vous permet d'obtenir leurs noms, offre RBAC, un panneau de contrôle HTML5 (Admiral; en savoir plus à ce sujet dans notre revue GUI pour Docker - environ Transl. ), Un registre au niveau de l'entreprise (Harbour), de nombreuses commandes Docker similaires, Intégration avec les outils vSphere. [..]
Si vous avez besoin de la prise en charge de l'orchestration Kubernetes et / ou des capacités CI / CD basées sur VMware IaaS de VMware, vous devriez jeter un œil à VMware PKS et / ou Pivotal Cloud Foundry. Ce sont déjà des solutions CaaS et PaaS. »
Dans le même temps, la question de la
sécurité des images Docker devient de plus en plus pertinente. Début 2018, les ingénieurs de la «fraternelle» de la société VMware Pivotal
citent une
étude selon laquelle même les dernières versions d'images publiées sur le Docker Hub (à la fois de la communauté et officielles) contiennent de nombreuses vulnérabilités (en moyenne 70 par image).
C'est alors que Harbour est apparu avec sa nouvelle mission axée sur la sécurité, et déjà sur le «terrain» susmentionné de CaaS - dans le
Pivotal Container Service (PKS) :
«Ces [vulnérabilités et autres problèmes de sécurité dans les images Docker] sont la raison pour laquelle nous avons inclus tant de modules complémentaires utiles qui rendent PKS fiable et sécurisé!» [..]
Étant donné que Kubernetes ne traite pas à lui seul de tels problèmes [gestion sécurisée des images], nous avons travaillé avec des amis VMware pour inclure Harbor dans PKS. »
Qu'est-ce qui est si sûr ajouté à Harbour (en plus du RBAC et de l'audit déjà mis en œuvre dans le projet)? Deux directions principales sont indiquées:
- Analyse de vulnérabilité Pour ce faire, Harbour implémente CVE à partir de bases de données bien connues (NIST NVD, Ubuntu CVE Tracker, Red Hat Security Data, etc.) et scanne automatiquement chaque image de conteneur pour leur présence lors de l'exécution d'opérations push et pull. Si une vulnérabilité est trouvée, les opérations sont annulées en fonction des paramètres de sécurité et l'image elle-même est marquée, qui sera visible par l'administrateur du registre. Pour saisir cette opportunité, Harbor s'intègre à Clair de CoreOS.
- La signature des images . Il utilise également les réalisations d'un autre projet - Notaire (nous l'avons mentionné dans cet article ) , qui crée une signature lors de la transmission d'images, puis valide ces signatures à chaque traction.
L'application générale de Harbour dans PKS est la suivante:

Port aujourd'hui
Ainsi, en proposant un registre d'images de conteneurs à utiliser sur place et en assurant la sécurité dans divers aspects de leur utilisation, Harbor a aujourd'hui évolué vers l'architecture suivante, qui combine apparemment des fonctions d'autres projets Open Source:

En plus du Docker Registry déjà mentionné, Clair et Notary, qui implémentent les fonctionnalités clés de Harbor, vous pouvez également voir deux SGBD dans ce schéma:
- PostgreSQL ( auparavant MySQL / MariaDB était ici), qui est utilisé pour stocker des métadonnées sur les projets, les utilisateurs et leurs rôles, les images;
- Redis - pour stocker des sessions .
Bases de données en architecture portuaireVous pouvez également
trouver des détails sur le périphérique interne général de Harbour sur
cette page wiki , qui est liée à la
documentation officielle du projet
(cependant, on soupçonne que certains détails sur l'architecture pourraient être obsolètes à certains endroits) . Vous y trouverez également des liens vers
les instructions d'
installation de Harbour et son
déploiement sur Kubernetes . Ce dernier, cependant, est déclaré obsolète (basé sur des versions plus anciennes, ne prend pas en charge Clair et Notary), et il est plutôt proposé d'utiliser le
Helm-chart .
La version actuelle de Harbor est la
v1.5.2 , sortie fin juillet. La configuration requise pour la machine Linux sur laquelle la dernière version du registre est installée est Docker version 17.03.0-ce (ou supérieure) et Docker Compose 1.10.0+, ainsi que Python et OpenSSL.
La prise en charge des graphiques Helm semble être une innovation très intéressante pour la future version de Harbor (
v1.6.0-rc1 a déjà été publiée): «Harbor, à partir de la version 1.6.0, deviendra un registre natif du cloud composite qui prendra en charge à la fois la gestion des images et la gestion des graphiques» . D'autres
plans de développement incluent la prise en charge d'OAuth 2.0 pour l'authentification des utilisateurs, la possibilité de déployer sur plusieurs sites pour la tolérance aux pannes et l'équilibrage de charge, la collecte de statistiques sur les référentiels et un utilitaire pour la migration vers Harbour.
Au lieu d'une conclusion
Harbor est un exemple de projet réussi du monde du cloud moderne, qui a réussi à trouver sa niche et à s'imposer, tout en intégrant les capacités d'autres outils Open Source. La preuve de son succès n'est pas seulement l'inclusion de CNCF dans la liste des projets, mais aussi plus de 5000 étoiles sur
GitHub , et une communauté de développeurs assez active.
PS
Lisez aussi dans notre blog: