Configurer la réplication Harbor
Ce guide explique comment configurer et gérer la réplication avec les instances de Container Registry Numspot basées sur Harbor.
Vue d'ensemble
La réplication Harbor vous permet de synchroniser des images de conteneurs et des artefacts OCI entre registries. Sur la plateforme Numspot, la réplication prend en charge deux cas d'utilisation principaux :
Cas d'utilisation
1. Migration vers Numspot (réplication entrante)
Tirez des images de votre registry de conteneurs existant vers une instance de Container Registry Numspot. Cela est idéal pour :
- Migration cloud : Déplacez les charges de travail vers le cloud souverain Numspot
- Consolidation : Centralisez les images de conteneurs depuis plusieurs registries
- Sauvegarde : Créez une copie redondante des images critiques sur Numspot
2. Réversibilité - Quitter Numspot (réplication sortante)
Poussez des images depuis votre Container Registry Numspot vers un registry externe. Cela assure :
- Portabilité : Répondre aux exigences réglementaires de réversibilité cloud
- Stratégie multi-cloud : Distribuer des images sur plusieurs fournisseurs
- Reprise après sinistre : Maintenir des sauvegardes hors plateforme de vos images
Modes de réplication
| Mode | Description | Cas d'utilisation |
|---|---|---|
| Pull-based | Tirer les artefacts depuis un registry distant vers Numspot | Migrer vers Numspot, refléter les registries externes |
| Push-based | Pousser les artefacts depuis Numspot vers un registry distant | Réversibilité, distribution multi-cloud |
Registries pris en charge
Le Container Registry Numspot peut répliquer vers/depuis :
- Docker Hub
- AWS Elastic Container Registry (ECR)
- Azure Container Registry (ACR)
- Google Container Registry (GCR) / Artifact Registry
- Quay
- GitLab Registry
- JFrog Artifactory
- Ali Cloud Container Registry
- Huawei SWR
- Autres instances Harbor (y compris d'autres registries Numspot)
Prérequis
Pour le Container Registry Numspot
Avant de configurer la réplication, assurez-vous de :
- L'instance de Registry Numspot est créée et en cours d'exécution
- Connectivité réseau entre les registries source et destination
- Identifiants admin pour l'instance de registry Numspot
- Space ID et Registry ID de votre instance Numspot
Permissions requises
- Registry source : Accès en lecture (pull images)
- Registry destination : Accès en écriture (push images)
- IAM Numspot : Permission de gérer les instances de registry
Partie 1 : Gestion des instances de Container Registry Numspot
1.1 Créer une instance de Container Registry
Avant de configurer la réplication, créez une instance de registry via l'API Numspot :
curl -X POST "https://api.cloudgouv-eu-west-1.numspot.com/registry/spaces/{spaceId}/registries" \
-H "Authorization: Bearer {token}" \
-H "Content-Type: application/json" \
-d '{
"name": "my-production-registry",
"version": "2.14",
"visibility": "EXTERNAL"
}'
Paramètres :
| Champ | Type | Description | Valeurs |
|---|---|---|---|
name | string | Nom du registry (compatible DNS) | my-registry, prod-registry |
version | string | Version Harbor | 2.13, 2.14 |
visibility | string | Accessibilité réseau | EXTERNAL (endpoint public), INTERNAL (nécessite VPN) |
Réponse :
{
"id": "123e4567-e89b-12d3-a456-426614174000",
"name": "my-production-registry",
"version": "2.14",
"visibility": "EXTERNAL",
"status": {
"state": "CREATING",
"message": "Registry is being provisioned"
},
"host": "https://registry-123e4567-e89b-12d3-a456-426614174000.hcp.cloudgouv-eu-west-1.numspot.com"
}
1.2 Récupérer les identifiants admin
Obtenez le mot de passe admin pour votre registry :
curl -X GET "https://api.cloudgouv-eu-west-1.numspot.com/registry/spaces/{spaceId}/registries/{registryId}/password" \
-H "Authorization: Bearer {token}"
Réponse :
{
"password": "generated-secure-password"
}
Nom d'utilisateur par défaut : admin
1.3 Lister les instances de Registry
Listez tous les registries dans votre space :
curl -X GET "https://api.cloudgouv-eu-west-1.numspot.com/registry/spaces/{spaceId}/registries" \
-H "Authorization: Bearer {token}"
1.4 Obtenir les détails d'un Registry
Récupérez les informations d'un registry spécifique :
curl -X GET "https://api.cloudgouv-eu-west-1.numspot.com/registry/spaces/{spaceId}/registries/{registryId}" \
-H "Authorization: Bearer {token}"
États du Registry :
| État | Description |
|---|---|
CREATING | Le registry est en cours de provisionnement |
RUNNING | Le registry est opérationnel |
PENDING | Le registry est en cours de configuration |
UPGRADING | Mise à jour de version en cours |
REPAIRING | Réparation automatique en cours |
FAILED | Échec du provisionnement |
DELETING | Le registry est en cours de suppression |
Partie 2 : Scénario 1 - Migration d'images vers Numspot
Utilisez la réplication Pull-based pour migrer des images depuis un registry externe vers Numspot.
2.1 Vue d'ensemble de l'architecture
External Registry Numspot Container Registry
(Docker Hub/AWS ECR/...) (Harbor Instance)
│ │
└──── Pull Replication ────→│
(Destination)
2.2 Configuration étape par étape
Étape 1 : Accéder à l'interface Harbor
- Récupérez l'hôte de votre registry depuis la réponse de l'API ou la console Numspot
- Accédez à :
https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com - Connectez-vous avec :
- Nom d'utilisateur :
admin - Mot de passe : Utilisez le mot de passe obtenu via l'API (section 1.2)
- Nom d'utilisateur :
Étape 2 : Créer un endpoint de réplication (Registry externe)
-
Allez dans Administration → Registries
-
Cliquez sur + New Endpoint
-
Configurez le registry externe :
Champ Valeur Provider Docker Hub,AWS ECR, etc.Name source-docker-hubEndpoint URL https://registry-1.docker.io(Docker Hub)Access ID Votre nom d'utilisateur Docker Hub Access Secret Votre mot de passe/token Docker Hub Verify Remote Cert Activé -
Cliquez sur Test Connection
-
Cliquez sur OK pour enregistrer
Étape 3 : Créer une règle de réplication Pull
-
Allez dans Administration → Replications
-
Cliquez sur New Replication Rule
-
Configurez :
Paramètres de base :
Champ Valeur Name migrate-docker-hub-imagesDescription Pull critical images from Docker Hub to NumspotReplication Mode Pull-basedSource (Registry externe) :
Champ Valeur Source Registry source-docker-hubFiltres :
Champ Valeur Name library/nginx,library/redisTag latest,alpineResource AllMode de déclenchement :
- Manual : Migration ponctuelle
- Scheduled : Synchronisation périodique (ex :
0 2 * * *quotidien à 2h du matin)
Avancé :
Champ Valeur Override (remplacer les images existantes) Bandwidth -1(illimité) ou limite selon vos besoins -
Cliquez sur Save
Étape 4 : Exécuter la réplication
- Sélectionnez la règle de réplication
- Cliquez sur Replicate
- Surveillez la progression dans l'onglet Executions
Étape 5 : Vérifier la migration
Une fois la réplication terminée :
## Lister les dépôts dans le registry Numspot
curl -X GET "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/projects/1/repositories" \
-u "admin:{password}"
## Tirer une image depuis Numspot
docker pull registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/library/nginx:latest
2.3 Exemple : Migrer depuis AWS ECR
## Créer un endpoint pour AWS ECR
curl -X POST "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/registries" \
-u "admin:{password}" \
-H "Content-Type: application/json" \
-d '{
"name": "source-aws-ecr",
"type": "aws-ecr",
"url": "https://123456789.dkr.ecr.us-east-1.amazonaws.com",
"credential": {
"type": "basic",
"access_key": "AKIAIOSFODNN7EXAMPLE",
"access_secret": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
},
"insecure": false
}'
## Créer une règle de réplication pull
curl -X POST "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/replication/policies" \
-u "admin:{password}" \
-H "Content-Type: application/json" \
-d '{
"name": "migrate-from-aws-ecr",
"description": "Migrate all ECR images to Numspot",
"src_registry": {"id": 1},
"dest_namespace": "aws-migration",
"trigger": {"type": "manual"},
"filters": [
{"type": "name", "value": "**"}
],
"enabled": true,
"override": true
}'
## Déclencher la réplication
curl -X POST "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/replication/executions" \
-u "admin:{password}" \
-H "Content-Type: application/json" \
-d '{"policy_id": 1}'
Partie 3 : Scénario 2 - Réversibilité (Quitter Numspot)
Utilisez la réplication Push-based pour migrer des images depuis Numspot vers un registry externe.
3.1 Vue d'ensemble de l'architecture
Numspot Container Registry External Registry
(Harbor Instance) (AWS ECR/ACR/Other Harbor/...)
│ │
└──── Push Replication ───────→│
(Source) (Destination)
3.2 Configuration étape par étape
Étape 1 : Créer un endpoint de registry de destination
-
Accédez à votre interface Harbor Numspot
-
Allez dans Administration → Registries
-
Cliquez sur + New Endpoint
-
Configurez le registry de destination :
Champ Valeur Provider Harbor,AWS ECR, etc.Name destination-external-registryEndpoint URL https://your-registry.example.comAccess ID Nom d'utilisateur ou clé d'accès Access Secret Mot de passe ou clé secrète Verify Remote Cert Activé -
Cliquez sur Test Connection
-
Cliquez sur OK
Étape 2 : Créer une règle de réplication Push
-
Allez dans Administration → Replications
-
Cliquez sur New Replication Rule
-
Configurez :
Paramètres de base :
Champ Valeur Name reversibility-full-exportDescription Push all images to external registry for reversibilityReplication Mode Push-basedDestination (Registry externe) :
Champ Valeur Destination Registry destination-external-registryDestination Namespace numspot-backup(ou laissez vide pour préserver la structure)Filtres :
Champ Valeur Name **(tous les dépôts)Tag *(tous les tags)Resource AllMode de déclenchement :
- Manual : Export ponctuel pour réversibilité
- Event Based : Synchronisation continue (avec option de suppression)
Aplatissement de destination :
Sélectionnez selon votre registry cible :
- No Flattening : Préserver la hiérarchie complète des namespaces
- Flatten 1-3 Levels : Simplifier la structure des chemins
Avancé :
Champ Valeur Override (remplacer les images existantes) Delete remote resources when locally deleted (pour Event Based) -
Cliquez sur Save
Étape 3 : Exécuter l'export complet
- Sélectionnez la règle de réplication
- Cliquez sur Replicate
- Surveillez la progression :
- Consultez l'onglet Executions
- Cliquez sur l'ID d'exécution pour la liste détaillée des tâches
- Suivez les artefacts répliqués, la vitesse et la durée
Étape 4 : Vérifier l'export
Une fois la réplication terminée, vérifiez les images dans le registry de destination :
## Lister les dépôts dans la destination
curl -X GET "https://your-registry.example.com/api/v2.0/projects/1/repositories" \
-u "username:password"
## Tirer une image depuis la destination
docker pull your-registry.example.com/numspot-backup/myapp:v1.0
Étape 5 : Documenter la réversibilité
Maintenez une documentation de :
- La configuration de la règle de réplication
- Les journaux d'exécution et horodatages
- Les résultats de vérification
- Toutes les étapes de post-traitement manuelles
3.3 Exemple : Push vers AWS ECR
## Créer un endpoint pour AWS ECR (destination)
curl -X POST "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/registries" \
-u "admin:{password}" \
-H "Content-Type: application/json" \
-d '{
"name": "destination-aws-ecr",
"type": "aws-ecr",
"url": "https://123456789.dkr.ecr.eu-west-3.amazonaws.com",
"credential": {
"type": "basic",
"access_key": "AKIAIOSFODNN7EXAMPLE",
"access_secret": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
}
}'
## Créer une règle de réplication push
curl -X POST "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/replication/policies" \
-u "admin:{password}" \
-H "Content-Type: application/json" \
-d '{
"name": "reversibility-push-to-ecr",
"description": "Full image export to AWS ECR for reversibility compliance",
"dest_registry": {"id": 2},
"dest_namespace": "numspot-export",
"dest_namespace_replace_count": 0,
"trigger": {"type": "manual"},
"filters": [
{"type": "name", "value": "**"}
],
"enabled": true,
"override": true,
"speed": -1
}'
## Exécuter la réplication push
curl -X POST "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/replication/executions" \
-u "admin:{password}" \
-H "Content-Type: application/json" \
-d '{"policy_id": 2}'
3.4 Liste de contrôle pour la conformité de réversibilité
Pour la conformité réglementaire, assurez-vous que :
- Tous les projets/dépôts sont inclus dans les filtres de réplication
- Tous les tags d'images sont répliqués (pas d'exclusions de filtres)
- Les signatures d'images (Cosign) sont répliquées
- Les journaux d'exécution de réplication sont sauvegardés
- Le registry de destination est accessible et fonctionnel
- Les images peuvent être tirées depuis le registry de destination
- Les charges de travail applicatives peuvent utiliser les images de destination
- La documentation inclut la configuration complète de réplication
Partie 4 : Configuration spécifique par Registry
Docker Hub
{
"type": "docker-hub",
"url": "https://registry-1.docker.io",
"credential": {
"access_key": "dockerhub-username",
"access_secret": "dockerhub-password-or-token"
}
}
Note : Pour les images officielles, utilisez le préfixe library/ dans les filtres (ex : library/nginx).
AWS ECR
{
"type": "aws-ecr",
"url": "https://123456789.dkr.ecr.us-east-1.amazonaws.com",
"credential": {
"access_key": "AKIAIOSFODNN7EXAMPLE",
"access_secret": "wJalrXUtnFEMI/K7MDENG/bPxRfiCYEXAMPLEKEY"
}
}
Permissions IAM requises :
{
"Version": "2012-10-17",
"Statement": [
{
"Effect": "Allow",
"Action": [
"ecr:GetAuthorizationToken",
"ecr:BatchCheckLayerAvailability",
"ecr:GetDownloadUrlForLayer",
"ecr:BatchGetImage",
"ecr:PutImage",
"ecr:InitiateLayerUpload",
"ecr:UploadLayerPart",
"ecr:CompleteLayerUpload",
"ecr:CreateRepository",
"ecr:SetRepositoryPolicy"
],
"Resource": "*"
}
]
}
Google GCR/Artifact Registry
{
"type": "google-gcr",
"url": "https://gcr.io/my-project",
"credential": {
"access_key": "_json_key",
"access_secret": "{\"type\":\"service_account\",\"project_id\":\"my-project\",...}"
}
}
Note : Le namespace doit commencer par l'ID du projet.
Azure Container Registry
{
"type": "azure-acr",
"url": "https://myregistry.azurecr.io",
"credential": {
"access_key": "myregistry",
"access_secret": "registry-password-or-access-key"
}
}
Quay
{
"type": "quay",
"url": "https://quay.io",
"credential": {
"access_key": "json_file",
"access_secret": "{\"oauth2_token\":\"...\",\"account_name\":\"user\",\"docker_cli_password\":\"...\"}"
}
}
Autres instances Harbor
{
"type": "harbor",
"url": "https://harbor.example.com",
"credential": {
"access_key": "admin",
"access_secret": "harbor-password"
},
"insecure": false
}
Partie 5 : Scénarios de réplication avancés
5.1 Réplication croisée entre Registry Numspot
Répliquez entre deux instances de Container Registry Numspot :
Scénario : Registry de production dans EU-West-1 vers registry de reprise après sinistre (DR) dans EU-West-2
## Source : Registry EU-West-1 (source-registry-id)
## Destination : Registry EU-West-2 (dest-registry-id)
## Sur le registry source, créer un endpoint pour la destination
curl -X POST "https://registry-{source-registry-id}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/registries" \
-u "admin:{password}" \
-H "Content-Type: application/json" \
-d '{
"name": "dr-registry-eu-west-2",
"type": "harbor",
"url": "https://registry-{dest-registry-id}.hcp.cloudgouv-eu-west-2.numspot.com",
"credential": {
"access_key": "admin",
"access_secret": "{dest-registry-password}"
}
}'
## Créer une règle de réplication push pour le DR
curl -X POST "https://registry-{source-registry-id}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/replication/policies" \
-u "admin:{password}" \
-H "Content-Type: application/json" \
-d '{
"name": "dr-replication-to-eu-west-2",
"dest_registry": {"id": 1},
"trigger": {
"type": "event_based",
"trigger_settings": {
"replicate_deletion": true
}
},
"filters": [{"type": "name", "value": "**"}],
"enabled": true,
"override": true
}'
5.2 Sauvegarde cross-cloud planifiée
Créez une sauvegarde quotidienne vers un fournisseur cloud externe :
## Créer une réplication planifiée (s'exécute quotidiennement à 2h du matin)
curl -X POST "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/replication/policies" \
-u "admin:{password}" \
-H "Content-Type: application/json" \
-d '{
"name": "daily-backup-to-external",
"description": "Daily cross-cloud backup",
"dest_registry": {"id": 3},
"trigger": {
"type": "scheduled",
"trigger_settings": {
"cron": "0 2 * * *"
}
},
"filters": [
{"type": "name", "value": "production/**"},
{"type": "tag", "value": "v*"}
],
"enabled": true,
"override": true,
"speed": 10240
}'
5.3 Migration sélective avec filtres
Migrez uniquement des images spécifiques :
## Migrer uniquement les images de production avec versioning sémantique
curl -X POST "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/replication/policies" \
-u "admin:{password}" \
-H "Content-Type: application/json" \
-d '{
"name": "migrate-production-images",
"src_registry": {"id": 1},
"filters": [
{
"type": "name",
"value": "{api,frontend,backend}/**"
},
{
"type": "tag",
"value": "v[0-9]+.[0-9]+.[0-9]+"
},
{
"type": "label",
"value": "production"
}
],
"trigger": {"type": "manual"},
"enabled": true
}'
Partie 6 : Surveillance et dépannage
6.1 Surveiller le statut de réplication
Via l'interface Harbor
- Allez dans Administration → Replications
- Cliquez sur une règle de réplication
- Consultez l'onglet Executions
- Cliquez sur l'ID d'exécution pour voir les tâches détaillées
Via l'API
## Lister les exécutions de réplication
curl -X GET "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/replication/executions?policy_id=1" \
-u "admin:{password}"
## Obtenir les détails d'une exécution spécifique
curl -X GET "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/replication/executions/{execution_id}/tasks" \
-u "admin:{password}"
## Vérifier le statut d'une exécution
curl -X GET "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/replication/executions/{execution_id}" \
-u "admin:{password}" | jq '.status'
6.2 Problèmes courants et solutions
Problème 1 : Registry non démarré
Symptôme : Impossible d'accéder à l'interface Harbor ou l'API renvoie 503
Solution :
## Vérifier le statut du registry via l'API Numspot
curl -X GET "https://api.cloudgouv-eu-west-1.numspot.com/registry/spaces/{spaceId}/registries/{registryId}" \
-H "Authorization: Bearer {token}"
## État attendu : "RUNNING"
## Si "FAILED", vérifiez le message d'erreur et contactez le support
Problème 2 : Délai de connexion au registry externe
Symptôme : Test Connection échoue avec un délai d'attente
Solutions :
- Vérifiez que l'URL du registry externe est correcte et accessible
- Vérifiez si le registry externe nécessite un VPN/whitelist
- Désactivez Verify Remote Cert si vous utilisez des certificats auto-signés (non recommandé en production)
- Testez la connectivité :
curl -vk https://external-registry.example.com/v2/
Problème 3 : Échec d'authentification
Symptôme : La tâche de réplication échoue avec 401 Unauthorized
Solutions :
Pour AWS ECR :
- Utilisez des clés d'accès, pas de rôle IAM
- Vérifiez que les clés ont les permissions ECR requises
- Vérifiez que les clés ne sont pas expirées
Pour GCR :
- Assurez-vous que le JSON du compte de service est complet
- Vérifiez que le compte de service a le rôle
roles/storage.objectAdmin
Pour Harbor (Numspot ou externe) :
- Vérifiez que le mot de passe admin est correct
- Utilisez des comptes robot avec des permissions limitées
- Vérifiez que le compte robot a les permissions push/pull sur les projets cibles
Problème 4 : Échec partiel de la réplication
Symptôme : Certains artefacts réussissent, d'autres échouent
Solutions :
-
Vérifiez le quota de stockage de destination :
curl -X GET "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/systeminfo" \-u "admin:{password}" | jq '.storage' -
Consultez les journaux des tâches échouées :
curl -X GET "https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com/api/v2.0/replication/executions/{execution_id}/tasks?status=error" \-u "admin:{password}" -
Vérifiez les limites de taille d'image et les capacités d'upload de blob
Problème 5 : Problèmes de bande passante réseau
Symptôme : La réplication est lente ou se bloque
Solutions :
- Augmentez la limite de bande passante dans la règle de réplication (ou définissez sur
-1pour illimité) - Réduisez le nombre de workers concurrents si le réseau est saturé
- Utilisez Copy by Chunk pour les grandes images :
# Activer Copy by Chunk dans la règle de réplication# Ou définir la variable d'environnement dans Harbor jobserviceREPLICATION_CHUNK_SIZE=10485760 # 10MB
6.3 Journaux Harbor
Accédez aux journaux des composants Harbor (pour le débogage interne Numspot) :
## Journaux jobservice (tâches de réplication)
kubectl logs -n registry-instance-{registryId} deployment/harbor-jobservice -f
## Journaux core (requêtes API)
kubectl logs -n registry-instance-{registryId} deployment/harbor-core -f
## Journaux registry (push/pull d'images)
kubectl logs -n registry-instance-{registryId} deployment/harbor-registry -f
L'accès aux journaux nécessite un accès au cluster Kubernetes. Contactez le support Numspot pour obtenir de l'aide.
Partie 7 : Référence API
API Registry Numspot
URL de base
https://api.cloudgouv-eu-west-1.numspot.com
Lister les Registries
GET /registry/spaces/{spaceId}/registries
Authorization: Bearer {token}
Créer un Registry
POST /registry/spaces/{spaceId}/registries
Authorization: Bearer {token}
Content-Type: application/json
{
"name": "string",
"version": "2.13" | "2.14",
"visibility": "EXTERNAL" | "INTERNAL"
}
Obtenir un Registry
GET /registry/spaces/{spaceId}/registries/{registryId}
Authorization: Bearer {token}
Obtenir le mot de passe admin
GET /registry/spaces/{spaceId}/registries/{registryId}/password
Authorization: Bearer {token}
Supprimer un Registry
DELETE /registry/spaces/{spaceId}/registries/{registryId}
Authorization: Bearer {token}
API de réplication Harbor
URL de base
https://registry-{registryId}.hcp.cloudgouv-eu-west-1.numspot.com
Créer un endpoint de réplication
POST /api/v2.0/registries
Authorization: Basic {base64(admin:password)}
Content-Type: application/json
{
"name": "string",
"type": "harbor | docker-hub | aws-ecr | azure-acr | google-gcr | quay | ...",
"url": "string",
"credential": {
"type": "basic",
"access_key": "string",
"access_secret": "string"
},
"insecure": false
}
Créer une politique de réplication
POST /api/v2.0/replication/policies
Authorization: Basic {base64(admin:password)}
Content-Type: application/json
{
"name": "string",
"description": "string",
"src_registry": {"id": number},
"dest_registry": {"id": number},
"dest_namespace": "string",
"dest_namespace_replace_count": number,
"trigger": {
"type": "manual | scheduled | event_based",
"trigger_settings": {
"cron": "0 0 * * *",
"replicate_deletion": true
}
},
"filters": [
{"type": "name | tag | label | resource", "value": "string", "decoration": "matches | excludes"}
],
"enabled": true,
"override": false,
"speed": -1
}
Déclencher une réplication
POST /api/v2.0/replication/executions
Authorization: Basic {base64(admin:password)}
Content-Type: application/json
{
"policy_id": number
}
Obtenir une exécution de réplication
GET /api/v2.0/replication/executions/{executionId}
Authorization: Basic {base64(admin:password)}
Obtenir les tâches de réplication
GET /api/v2.0/replication/executions/{executionId}/tasks
Authorization: Basic {base64(admin:password)}
Limitations
- La réplication entre Harbor v1.x et v2.x n'est pas prise en charge
- Harbor ne prend pas en charge le manifest schema1 du registry Docker dans les registries Quay
- Les informations des membres ne sont pas répliquées entre les instances Harbor
- Les opérations de suppression ne sont pas répliquées dans les modes de déclenchement Manuel ou Planifié
- Pour les registries Numspot : la version doit être
2.13ou2.14 - Les changements d'API entre les versions Harbor peuvent provoquer des incompatibilités
- Les grandes images (>5Go) doivent utiliser Copy by Chunk pour plus de fiabilité
Ressources supplémentaires
- Documentation officielle Harbor
- Guide de réplication Harbor
- Console Numspot
- Spécification OpenAPI Numspot