Comparaison des solutions de registre¶
Cette page alimente un ADR (Architecture Decision Record) pour le choix du registre d'artefacts interne. Pour le format ADR, voir Documenter les decisions d'architecture.
Grille de comparaison¶
| Critère | Harbor | Gitea Packages | GitLab Container Registry | Docker Distribution |
|---|---|---|---|---|
| Licence | Apache 2.0 | MIT | MIT (CE) / Proprietary (EE) | Apache 2.0 |
| Scan de vulnerabilites | Integre (Trivy) | Non (externe requis) | Integre (Trivy, EE uniquement) | Non (externe requis) |
| Signature d'images | Cosign + Notation natif | Non | Cosign (configuration manuelle) | Non |
| Réplication | Push/Pull, multi-registre, filtres | Non | Geo-réplication (EE) | Non (miroir lecture seule) |
| RBAC | Projets, rôles, robot accounts | Lie aux permissions Gitea | Groupes/projets GitLab | Aucun (proxy auth externe) |
| Robot accounts | Oui, scope par projet | Non | Deploy tokens | Non |
| Gestion de quotas | Par projet (stockage + images) | Non | Non (CE) / Oui (EE) | Non |
| Conformite OCI | Complète (images, charts, SBOM) | Partielle (images, packages) | Images uniquement | Images uniquement |
| Support Helm charts | OCI natif + chartmuseum | OCI natif | Non (registre separe requis) | Non |
| Empreinte ressources | ~2 Go RAM (stack complète) | Inclus dans Gitea (~256 Mo) | Inclus dans GitLab (~4 Go) | ~128 Mo RAM (Go, minimal) |
| UI Web | Complète, dédiée registre | Intégrée a Gitea | Intégrée a GitLab | Aucune |
| Tag immutability | Oui (regle par projet) | Non | Non | Non |
| Garbage collection | En ligne, programmable | Automatique | En ligne (depuis 16.x) | Hors ligne (arrêt requis) |
| Webhook/Notifications | Oui (push, scan, réplication) | Oui (lie a Gitea webhooks) | Oui | Notifications limitees |
| Audit log | Complet (opérations + accès) | Via logs Gitea | Via logs GitLab | Aucun (logs HTTP) |
| Politique de scan | Bloquer Critical/High | N/A | Oui (EE uniquement) | N/A |
| Maturité | 8+ ans, CNCF graduated | 3+ ans, en évolution | 10+ ans, production-ready | 10+ ans, minimaliste |
Analyse détaillée¶
Harbor — Recommande pour registre d'entreprise¶
Forces :
- Scan de vulnerabilites integre avec Trivy (configurable : bloquer les images critiques)
- Réplication multi-registre avancee avec filtres granulaires (nom, tag, label)
- RBAC complet avec projets, rôles (admin, developer, guest) et robot accounts
- Signature d'images native (Cosign et Notation)
- Tag immutability pour empecher l'ecrasement de versions en production
- Garbage collection en ligne sans interruption de service
- Gestion de quotas par projet (stockage et nombre d'artefacts)
- Projet gradue CNCF, communauté active, mises a jour régulières
- Support complet OCI : images, charts Helm, SBOM, attestations
Faiblesses :
- Stack complexe (Core, Registry, Trivy, Redis, PostgreSQL, Job Service)
- Empreinte mémoire plus elevee (~2 Go pour la stack complète)
- Configuration initiale plus longue qu'un registre simple
- Pas de gestion de packages generiques (npm, Maven, pip — utiliser Gitea Packages pour cela)
Verdict : choix par defaut pour une DSI qui a besoin d'un registre securise avec scan, signature, réplication et RBAC.
Gitea Packages — Si Gitea est déjà en place¶
Forces :
- Zero installation supplémentaire si Gitea est déjà déployé comme SCM
- Supporte de multiples types de packages (npm, Maven, PyPI, NuGet, OCI, Helm)
- Leger, integre dans le workflow Gitea
- Permissions alignees sur les repositories Gitea
- API compatible OCI pour les images conteneur
Faiblesses :
- Pas de scan de vulnerabilites integre
- Pas de réplication inter-registres
- Pas de robot accounts dédiés (utilise les tokens Gitea)
- Pas de gestion de quotas
- Pas de tag immutability
- Fonctionnalités registre limitees comparées a un registre dedie
Verdict : acceptable pour les équipes qui ont des besoins simples et utilisent déjà Gitea. Ne remplace pas un registre dedie pour les exigences de sécurité d'entreprise.
GitLab Container Registry — Lie a l'ecosysteme GitLab¶
Forces :
- Integration profonde avec GitLab CI/CD
- Scan de vulnerabilites integre (edition Enterprise)
- Geo-réplication (edition Enterprise)
- Gestion mature, large communauté
Faiblesses :
- Les fonctionnalités avancees (scan, quotas, geo-réplication) sont réservées a l'edition Enterprise payante
- Lie a l'ecosysteme GitLab (peu pertinent si le SCM est Gitea)
- Pas de support Helm charts en natif
- Empreinte tres elevee (GitLab complet ~4 Go RAM minimum)
- Pas de tag immutability native
Verdict : pertinent uniquement si GitLab est déjà le SCM et le CI/CD de l'organisation. Non retenu dans notre contexte Gitea.
Docker Distribution — Minimaliste¶
Forces :
- Ultra-leger (~128 Mo RAM)
- Simple a déployer (un seul binaire Go)
- Base de nombreux registres (Harbor l'utilise en backend)
- API OCI/Docker Registry v2 de référence
Faiblesses :
- Aucune UI
- Aucun RBAC natif (proxy auth externe requis)
- Aucun scan de vulnerabilites
- Aucune réplication avancee (miroir lecture seule uniquement)
- Garbage collection hors ligne (arrêt du registre requis)
- Aucun audit log
- Aucune gestion de quotas
Verdict : brique de base, pas un produit fini. Acceptable pour un lab ou un cache local, pas pour un usage d'entreprise.
Matrice de decision¶
graph TD
A{Besoin scan + signature ?} -->|Oui| B[Harbor]
A -->|Non| C{Gitea deja en place ?}
C -->|Oui| D{Besoins simples ?}
C -->|Non| E{GitLab en place ?}
D -->|Oui| F[Gitea Packages]
D -->|Non| B
E -->|Oui, Enterprise| G[GitLab CR]
E -->|Non| H{Budget minimal ?}
H -->|Oui| I[Docker Distribution]
H -->|Non| B Decision recommandee¶
Pour une DSI avec des exigences de sécurité (scan, signature, réplication, RBAC, audit) :
Decision ADR
Harbor comme registre d'artefacts principal pour les images conteneur, charts Helm et artefacts OCI.
Gitea Packages en complement pour les packages applicatifs (npm, Maven, PyPI) directement lies aux repositories de code.
Justification : Harbor est le seul registre open-source qui integre nativement le scan de vulnerabilites, la signature d'images, la réplication multi-site, le RBAC par projet et la gestion de quotas. Son statut CNCF graduated garantit la pérennité.
Critères de reevaluation¶
Cette decision doit etre reevaluee si :
- Gitea Packages integre le scan de vulnerabilites et la réplication
- Un changement de SCM vers GitLab rend le GitLab CR plus pertinent
- Les besoins en registre se limitent a un usage lab/dev sans exigence de sécurité
- Harbor change de modèle de licence ou de gouvernance CNCF
- Une solution alternative (Zot, par exemple) atteint la maturité et la couverture fonctionnelle de Harbor