Répliquer un OVHcloud Managed Private Registry dans une autre région
Découvrez comment répliquer des images et des artefacts entre deux OVHcloud Managed Private Registry situés dans des régions différentes
Objectif
Un OVHcloud Managed Private Registry (MPR) est hébergé dans une seule région. Dans une région 3-AZ, le service est réparti sur plusieurs zones de disponibilité, mais vos données ne quittent jamais cette région.
Si vous avez besoin d'une copie de vos artefacts dans une autre région, vous pouvez utiliser la fonctionnalité de réplication intégrée à Harbor entre deux MPR. Cas d'usage courants :
- disposer d'un registre secondaire prêt à l'emploi dans une autre région, dans le cadre d'un plan de reprise d'activité.
- récupérer les images depuis un registre situé au plus près de vos clusters Managed Kubernetes dans chaque région.
- promouvoir des artefacts d'un environnement à un autre (par exemple, d'un registre de préproduction vers un registre de production).
La réplication copie les images de conteneurs, les artefacts OCI (y compris les charts Helm stockés au format OCI) et les artefacts qui leur sont rattachés, tels que les signatures, les SBOM et les attestations (reportez-vous à la section « Signatures, SBOM et autres artefacts rattachés »). Sa configuration et son exploitation relèvent de votre responsabilité (consultez le modèle de responsabilité).
Ce guide explique comment configurer une règle de réplication entre deux OVHcloud Managed Private Registry situés dans des régions différentes.
Prérequis
- Disposer de deux OVHcloud Managed Private Registry situés dans deux régions différentes. Dans ce guide, ils sont appelés registre source et registre de destination.
- Disposer d'un compte avec les droits d'administrateur système sur l'interface utilisateur Harbor des deux registres.
Harbor ne prend pas en charge la réplication entre des versions de Harbor différentes. Assurez-vous que les deux registres utilisent la même version de Harbor, et vérifiez-le à nouveau après chaque mise à jour. La version est affichée dans l'interface utilisateur Harbor, dans votre menu utilisateur > À propos.
En pratique
Ce guide utilise la réplication push-based : la règle de réplication est créée sur le registre source, qui pousse les artefacts vers le registre de destination. Le mode push-based est le seul à prendre en charge le déclencheur Sur évènement, qui réplique chaque nouvel artefact dès qu'il est poussé.
Si vous préférez créer la règle sur le registre de destination, par exemple pour déplacer vos artefacts vers un nouveau registre dans une autre région, reportez-vous à la section « Utiliser la réplication pull-based ».
L'interface utilisateur Harbor s'affiche en français lorsque votre navigateur est réglé en français (France) : ce guide cite ces libellés. Si l'interface s'affiche en anglais, sélectionnez Français dans le champ Language de votre menu utilisateur > Preferences.
Étape 1 : préparer le registre de destination
- Connectez-vous à l'interface utilisateur Harbor du registre de destination.
- Créez le projet qui recevra les artefacts répliqués. Consultez le guide « Gérer les utilisateurs et les projets » pour plus de détails.
- Créez un compte robot que le registre source utilisera pour pousser les artefacts :
- Ouvrez le projet, rendez-vous dans l'onglet
Comptes robotet cliquez sur+ Nouveau compte robot. - Saisissez un nom et une durée d'expiration.
- Accordez au minimum les permissions
PushetPullsur Dépôt. - Cliquez sur
Finir, puis copiez le nom du compte robot (par exemplerobot$my-project+replication) et son secret.
- Ouvrez le projet, rendez-vous dans l'onglet
Si le projet de destination n'existe pas, Harbor le crée automatiquement lors de la réplication, à condition que le compte utilisé par l'endpoint soit autorisé à créer des projets. Créer le projet et un compte robot limité à ce projet au préalable vous permet de maîtriser les paramètres du projet et de limiter les droits accordés au registre source.
Étape 2 : créer un endpoint de réplication sur le registre source
- Connectez-vous à l'interface utilisateur Harbor du registre source.
- Rendez-vous dans
Administration, puisRegistres. - Cliquez sur
+ Nouveau Endpointet renseignez les informations suivantes :- Fournisseur :
Harbor - Nom : un nom pour l'endpoint (par exemple
mpr-destination) - Description : facultatif
- URL de l'endpoint : l'URL du registre de destination (par exemple
https://xxxxxxxx.c1.de1.container-registry.ovh.net) - ID d'accès : le nom complet du compte robot créé à l'étape 1 (par exemple
robot$my-project+replication) - Secret d'accès : le secret du compte robot
- Vérifier le certificat distant : laissez cette case cochée
- Fournisseur :
- Cliquez sur
Test de connexion. Une fois le test réussi, cliquez surOK.
Les adresses IP sortantes d'un Managed Private Registry ne sont pas publiées. Si vous avez configuré des restrictions IP sur l'endpoint registry ou management du registre de destination, le trafic de réplication provenant du registre source est bloqué : le test de connexion et les tâches de réplication échouent. Dans ce cas, vous pouvez :
- utiliser plutôt la réplication pull-based : c'est alors le registre de destination qui initie les connexions vers le registre source.
- ou supprimer les restrictions IP du registre de destination le temps de la réplication, puis les rétablir. Cette solution ne convient qu'à une réplication ponctuelle, comme le déplacement de vos artefacts vers une autre région.
Étape 3 : créer une règle de réplication
- Sur le registre source, rendez-vous dans
Administration, puisRéplication. - Cliquez sur
+ Nouvelle règle de réplicationet renseignez les informations suivantes :- Nom et Description : un nom pour la règle et une description facultative.
- Mode de réplication :
Push-based. - Filtre de ressource source : les artefacts à répliquer. Laissez les champs vides pour tout répliquer.
- Nom : un nom de dépôt ou un motif (par exemple
my-project/**). - Tag : un tag ou un motif, à inclure ou à exclure (par exemple
v*pour ne répliquer que les tags de version). - Label : un ou plusieurs labels existants, à inclure ou à exclure.
- Ressource : images uniquement, artefacts uniquement, ou tous.
- Nom : un nom de dépôt ou un motif (par exemple
- Registre de destination : l'endpoint créé à l'étape 2.
- Namespace : le projet de destination (par exemple
my-project). Si vous laissez ce champ vide, les artefacts sont répliqués dans un projet portant le même nom que sur le registre source. - Aplanissement : le nombre de niveaux supprimés du chemin du dépôt. La valeur par défaut,
Aplanissement sur 1 niveau, transformea/b/c/imgennamespace/b/c/img. SélectionnezPas d'aplanissementpour conserver le chemin source complet sous le namespace de destination (a/b/c/imgdevientnamespace/a/b/c/img). - Mode de déclenchement :
Manuelle: la règle ne s'exécute que lorsque vous la lancez.Planifiée: la règle s'exécute périodiquement, selon une expression cron.Sur évènement: la règle s'exécute chaque fois qu'un artefact est poussé ou retagué sur le registre source. CochezSupprimer les ressources distantes lors de la suppression localepour répliquer également les suppressions (le compte robot doit alors aussi disposer de la permissionSupprimersur Dépôt).
- Bande passante : la bande passante maximale par tâche de réplication, en Ko/s.
-1signifie illimitée. - Surcharger : cochez cette case pour écraser les artefacts qui existent déjà sous le même nom sur le registre de destination.
- Copier par morceaux : cochez cette case pour copier les couches par blocs de 10 Mo, ce qui peut aider pour les images volumineuses.
- Single active replication : cochez cette case pour ne pas lancer une nouvelle exécution tant qu'une exécution précédente de la même règle est en cours.
- Cliquez sur
Sauvegarder.
Les filtres Nom et Tag acceptent les motifs suivants :
Par exemple, library/* correspond à library/nginx mais pas à library/tools/nginx, alors que library/** correspond aux deux.
Les déclencheurs Manuelle et Planifiée ne répliquent pas les suppressions. Avec Sur évènement, seules les actions de push, de retag et de suppression déclenchent une réplication : l'ajout ou le retrait d'un label n'en déclenche pas.
Étape 4 : lancer et suivre la réplication
- Sur le registre source, rendez-vous dans
Administration, puisRéplication. - Sélectionnez la règle et cliquez sur
Répliquerpour lancer une réplication initiale. Cette réplication initiale reste recommandée avec le déclencheurSur évènement, qui ne s'applique qu'aux artefacts poussés après la création de la règle. - Cliquez sur la règle pour afficher ses exécutions, puis sur l'ID d'une exécution pour voir ses tâches. Chaque artefact répliqué correspond à une tâche distincte.
- Cliquez sur l'icône de log d'une tâche pour en voir le détail. Vous pouvez également cliquer sur
STOPpour arrêter une exécution.
Les tâches en échec sont automatiquement relancées plusieurs fois. Vous ne pouvez pas modifier ni supprimer une règle tant que l'une de ses exécutions est en cours.
Étape 5 : vérifier le résultat sur le registre de destination
-
Connectez-vous à l'interface utilisateur Harbor du registre de destination et ouvrez le projet de destination. Les dépôts et tags répliqués y sont listés.
-
Récupérez une image depuis le registre de destination pour vérifier qu'elle est utilisable :
Pour utiliser le registre de destination depuis un cluster Managed Kubernetes, consultez le guide « Utiliser Private Registry avec OVHcloud Managed Kubernetes ».
Utiliser la réplication pull-based
Avec la réplication pull-based, la règle est créée sur le registre de destination, qui récupère les artefacts depuis le registre source. Le registre source n'a besoin que d'un compte robot en lecture seule.
Ce mode est adapté au déplacement de vos artefacts vers un nouveau registre dans une autre région : tout est configuré sur le nouveau registre, et rien ne doit être modifié sur le registre que vous quittez, à part le compte robot.
La réplication pull-based ne prend pas en charge le déclencheur Sur évènement : utilisez Manuelle ou Planifiée.
Étape 1 : créer un compte robot en lecture seule sur le registre source
- Connectez-vous à l'interface utilisateur Harbor du registre source.
- Créez un compte robot disposant de la permission
Liresur Projet, des permissionsListeretLiresur Artefact et des permissionsListeretPullsur Dépôt :- pour un seul projet : ouvrez le projet, rendez-vous dans l'onglet
Comptes robotet cliquez sur+ Nouveau compte robot. - pour plusieurs projets : rendez-vous dans
Administration, puisComptes robot, cliquez sur+ Nouveau compte robotet sélectionnez les projets concernés, ou cochezCouvrir tous les projets.
- pour un seul projet : ouvrez le projet, rendez-vous dans l'onglet
- Cliquez sur
Finir, puis copiez le nom du compte robot et son secret.
Étape 2 : créer un endpoint de réplication sur le registre de destination
- Connectez-vous à l'interface utilisateur Harbor du registre de destination.
- Rendez-vous dans
Administration, puisRegistres, et cliquez sur+ Nouveau Endpoint. - Renseignez les informations comme décrit à l'étape 2 ci-dessus, avec l'URL du registre source dans URL de l'endpoint et le compte robot créé à l'étape 1 dans ID d'accès et Secret d'accès.
- Cliquez sur
Test de connexion. Une fois le test réussi, cliquez surOK.
Les adresses IP sortantes d'un Managed Private Registry ne sont pas publiées. Si vous avez configuré des restrictions IP sur l'endpoint registry ou management du registre source, le trafic de réplication provenant du registre de destination est bloqué. Dans ce cas, vous pouvez :
- utiliser plutôt la réplication push-based : c'est alors le registre source qui initie les connexions vers le registre de destination.
- ou supprimer les restrictions IP du registre source le temps de la réplication, puis les rétablir.
Étape 3 : créer la règle de réplication sur le registre de destination
- Sur le registre de destination, rendez-vous dans
Administration, puisRéplication, et cliquez sur+ Nouvelle règle de réplication. - Renseignez les informations suivantes :
- Mode de réplication :
Pull-based. - Registre source : l'endpoint créé à l'étape 2.
- Filtre de ressource source : les artefacts à répliquer, avec les mêmes filtres et motifs que pour la réplication push-based. Laissez les champs vides pour répliquer tous les artefacts accessibles au compte robot.
- Namespace : laissez ce champ vide pour répliquer chaque projet dans un projet portant le même nom, créé automatiquement si nécessaire.
- Aplanissement : sélectionnez
Pas d'aplanissementpour conserver les mêmes chemins de dépôt que sur le registre source. - Mode de déclenchement :
ManuelleouPlanifiée. - Les autres options (Bande passante, Surcharger, Copier par morceaux, Single active replication) fonctionnent comme décrit à l'étape 3 ci-dessus.
- Mode de réplication :
- Cliquez sur
Sauvegarder.
Étape 4 : lancer la réplication et vérifier le résultat
Lancez et suivez la règle depuis le registre de destination, comme décrit à l'étape 4, puis vérifiez le résultat comme décrit à l'étape 5.
Déplacer vos artefacts vers une autre région
- Créez la règle avec un déclencheur
Planifiée(par exemple, toutes les heures), puis cliquez surRépliquerpour lancer la copie initiale sans attendre la planification. - Tant que vos pipelines CI et vos clusters utilisent encore le registre source, les exécutions planifiées répliquent les nouveaux artefacts.
- Suspendez les écritures sur le registre source, cliquez une dernière fois sur
Répliqueret vérifiez le résultat. Basculez ensuite tous vos clients vers le registre de destination, supprimez la règle et son endpoint, puis supprimez le compte robot temporaire du registre source.
Les éléments listés dans la section « Éléments non répliqués » doivent être configurés sur le registre de destination avant de basculer vos clients.
Signatures, SBOM et autres artefacts rattachés
Harbor réplique chaque artefact avec les artefacts qui lui sont rattachés, appelés accessoires (accessories). Ils sont répliqués en même temps que leur artefact parent, même s'ils n'ont pas de tag propre :
- les signatures Cosign, dans les deux formats : le format à base de tag de Cosign v2 (
sha256-<digest>.sig) et le format OCI 1.1 utilisé par défaut par Cosign v3. - les signatures Notation.
- tout artefact rattaché via le champ
subjectd'OCI 1.1, comme les SBOM, les attestations de provenance ou les documents VEX (par exemple, poussés avecoras attachoucosign attest). - les SBOM générés par Harbor.
Les attestations ajoutées par BuildKit (docker buildx build --sbom --provenance) sont stockées dans l'index de l'image : elles sont copiées avec l'image.
Les attestations et pièces jointes de Cosign v2 (cosign attest, cosign attach sbom) ne sont pas des accessoires : elles sont stockées sous forme de tags classiques, comme sha256-<digest>.att ou sha256-<digest>.sbom. Elles ne sont répliquées que si elles correspondent au filtre Tag de la règle. Si vous filtrez sur les tags (par exemple v*), ajoutez ces tags au motif, par exemple {v*,sha256-*}.
Résultats d'analyse de vulnérabilités
Les résultats d'analyse sont stockés dans la base de données de chaque registre et ne sont pas répliqués. Pour les obtenir sur le registre de destination, qui doit disposer d'un plan M ou L pour inclure un scanner de vulnérabilités, activez l'option Analyse automatique des images lors de l'envoi dans l'onglet Configuration du projet de destination avant de lancer la réplication : les artefacts répliqués sont alors analysés dès leur arrivée. Vous pouvez également lancer une analyse manuellement par la suite. Consultez le guide « Analyser les vulnérabilités des images Docker ».
Les projets créés automatiquement par la réplication utilisent les paramètres par défaut, dans lesquels l'analyse automatique est désactivée : créez les projets de destination au préalable pour la configurer.
Éléments non répliqués
La réplication copie uniquement les artefacts, leurs signatures et les autres artefacts qui leur sont rattachés. Les éléments suivants sont propres à chaque registre et doivent être configurés séparément sur le registre de destination :
- les membres des projets et leurs rôles.
- les résultats d'analyse de vulnérabilités (reportez-vous à la section « Résultats d'analyse de vulnérabilités »).
- les utilisateurs, les comptes robots et leurs secrets.
- les paramètres d'authentification (OVHcloud IAM ou fournisseur OIDC) et les restrictions IP.
- les paramètres des projets, tels que les quotas, les règles de rétention et d'immutabilité, les politiques d'analyse de vulnérabilités et les webhooks.
Les artefacts répliqués consomment de l'espace de stockage sur les deux registres : vérifiez que l'offre du registre de destination dispose d'une capacité suffisante.
Aller plus loin
Documentation Harbor : Configuring Replication
Signer des artefacts OCI avec Cosign
Configurer le Proxy Cache sur un OVHcloud Managed Private Registry
Échangez avec notre communauté d'utilisateurs.