Outil de migration par lots d'images: transfert d'images

Aperçu

Dans le processus de migration vers le cloud ou de migration vers le cloud, les services utilisateur doivent être migrés par lots. Sur cette base, l'équipe d'experts en conteneurs Tencent Cloud a développé un outil de migration par lots d'images: le transfert d'images. Cet outil prend en charge la migration par lots entre les entrepôts miroirs de plusieurs fournisseurs de cloud et prend également en charge la migration complète en un clic de Tencent Cloud Mirror Warehouse TCR Personal Edition CCR vers Tencent Cloud Mirror Warehouse Enterprise TCR.
Cet article présente tout d'abord les points faibles de la migration d'image dans le processus de cloud / migration d'entreprise. Par la suite, les idées de conception, les modules fonctionnels et les meilleures pratiques de l'outil de transfert d'image de transfert d'image sont présentés en détail.
L'outil est officiellement open source, l'adresse du projet: https://github.com/tkestack/image-transfer

Adresse de téléchargement du package binaire: https://github.com/tkestack/image-transfer/releases

Comment migrer son entreprise vers le cloud?

Il existe plusieurs scénarios pour la migration vers le cloud d'entreprise, l'un est un idc auto-construit vers le cloud, le second est la migration vers le cloud tiers et le troisième est la reprise après sinistre à distance, c'est-à-dire le cloud hybride. Dans ces scénarios, qu'il s'agisse de migration vers le cloud ou de migration vers le cloud, le processus de migration comprend principalement les étapes suivantes.

  1. Planification du réseau. configuration vpc, sous-réseau, etc.
  2. migration de données. Stockage d'objets, stockage de fichiers, etc.
  3. Migration d'applications. Entreprise, configuration, etc.

Dans le processus de migration des données, si un grand nombre d'entreprises utilise le déploiement en conteneur, la migration d'images par lots est requise. À l'heure actuelle, les services d'entrepôt miroir de la plupart des fournisseurs de cloud ne permettent pas de migrer les entrepôts miroir par lots. Si vous souhaitez migrer une entreprise, vous ne pouvez télécharger l'image d'origine que localement, modifier la balise et la télécharger dans l'entrepôt d'images de destination. Ce processus présente les inconvénients suivants:

  • Prend du temps et demande beaucoup de travail. Pour une seule migration d'image, trois étapes sont nécessaires, et vous devez en garder un œil. En cas d'échec, un traitement supplémentaire est nécessaire.
  • Fonctionnement complètement humain, facile à faire des erreurs. Lors de la modification de l'étiquette de l'image d'origine, il est très facile de faire des erreurs dues à une modification manuelle, et la modification de l'étiquette est erronée.
  • Lorsque la quantité de mise en miroir est importante, le coût augmente et la progression de la migration vers le cloud est lente. S'il y a des centaines ou des milliers de miroirs, une telle opération humaine, la progression de la migration sera très lente, et le coût de la migration sera considérablement augmenté.

Le principe du transfert d'image

Objectifs de conception

Pour les points douloureux de la migration miroir. Nous espérons développer un outil de migration par lots d'images. Pour les utilisateurs, il suffit d'une configuration simple pour réaliser une migration par lots d'images sans intervention manuelle, ce qui améliore la progression du cloud / migration d'entreprise et réduit les coûts. Plus précisément, l'outil a les objectifs de conception suivants.

  1. La configuration est simple, aucune entrée compliquée n'est requise . Nous espérons que cet outil sera simple et facile à utiliser pour les utilisateurs. Il vous suffit de configurer les adresses miroir source et de destination et l'authentification pour terminer la migration par lots.

  2. Migrez rapidement et efficacement des images massives, réduisant ainsi les coûts de migration . En réponse à un grand nombre de besoins de migration miroir, nous espérons que l'outil pourra être complété efficacement, et avec l'aide de certaines technologies à haute concurrence, pour réaliser une migration rapide.

  3. Une certaine tolérance aux pannes, réduisant les interventions manuelles et la maintenance . Au cours du processus de migration, nous espérons que l'outil pourra identifier et réparer automatiquement certaines erreurs, minimiser la maintenance manuelle et améliorer l'efficacité du fonctionnement et de la maintenance.

  4. Il n'y a aucune dépendance vis-à-vis de l'environnement d'exploitation, et l'universalité des outils est améliorée . Nous espérons que l'outil peut fonctionner dans n'importe quel système d'exploitation Linux, Mac OS, Windows, sans dépendre de docker et d'autres programmes.

  5. Prise en charge du mode de migration complète en un clic de Tencent Cloud CCR . À l'heure actuelle, Tencent Cloud Container Image Service TCR Enterprise Edition est officiellement lancé, et Tencent Cloud TCR Personal Edition (CCR) réduira progressivement la maintenance à l'avenir jusqu'à ce qu'il se déconnecte. Par conséquent, l'outil doit prendre en charge la migration complète en un clic de l'entrepôt CCR vers TCR Enterprise Edition.

  6. Prise en charge de la limite de vitesse qps personnalisée. Lors de la migration d'images par lots, des appels fréquents à l'interface de l'entrepôt miroir peuvent provoquer le blocage de l'entrepôt miroir, donc qps doit être limité.

Architecture

Le transfert d'images est composé de plusieurs modules La figure suivante montre l'architecture de transfert d'images.

Outil de migration par lots d'images: transfert d'images

  • Entrée de mode général (par défaut) : utilisée pour accepter la tâche de migration de mise en miroir émise par l'utilisateur. Y compris les fichiers de configuration de migration miroir et les fichiers de configuration d'authentification. Ce mode est utilisé pour implémenter la migration d'images entre les fournisseurs de cloud.

  • Entrée du mode de migration CCR en un clic : vous devez ajouter --ccrToTcr = true au paramètre d'entrée de l'outil. Ce mode est utilisé pour la migration complète en un clic de l'entrepôt CCR vers TCR Enterprise Edition. En plus de l'ajout du paramètre --ccrToTcr = true, les fichiers de configuration d'authentification et les fichiers de configuration secrète Tencent Cloud sont également requis.

  • pipeline : ce module est au cœur de l'outil de gestion de la migration d'image. Responsable du traitement des tâches de migration de miroir émises par les utilisateurs, y compris le traitement des règles de synchronisation de l'entrepôt de miroirs en fonction du fichier de configuration de migration, et l'exécution des tâches hiérarchiques d'extraction et de transfert des miroirs. Le module utilise un modèle de pipeline hautement simultané pour améliorer la vitesse de migration.

  • Tâche de relance: cette étape relance la tâche de transfert ayant échoué dans le pipeline. Le nombre de tentatives peut être déterminé en fonction des paramètres d'entrée de l'utilisateur et la valeur par défaut est de 2 fois.

Pipeline

Étant donné que l'outil est écrit en langage golang, le module de traitement principal utilise le modèle de haute concurrence du pipeline de go. L'ensemble du module de pipeline est divisé en trois petits modules.

Règles de synchronisation d'entrepôt miroir de traitement multi-coroutine

Voici le traitement et l'analyse du fichier de configuration de migration miroir entré par l'utilisateur, pour obtenir chaque adresse miroir source (y compris le dépôt et la balise) qui doit être transférée, et l'adresse miroir de destination correspondante. Formez ensuite un travail pour chaque adresse miroir source et adresse miroir de destination. Si la balise miroir source n'est pas spécifiée dans le fichier de configuration du miroir, toutes les balises sous le référentiel seront extraites, puis un travail sera formé pour chaque balise. Ce processus utilise l'approche multi-coroutine de Golang pour augmenter la vitesse de traitement. Le nombre de coroutines peut être spécifié par l'utilisateur dans le paramètre d'entrée --proc, la valeur par défaut est 5. Une fois que chaque travail est composé, il sera placé dans le canal de tâche, en attente d'être consommé.

Canal de transmission des tâches

Le canal de tâches peut être considéré comme un simple middleware, implémenté par le canal golang. Une fois que chaque travail est produit, il sera placé dans le canal et attendra d'être consommé. Cette conception peut garantir que le travail produit par le producteur sera immédiatement mis dans la ligne de consommation, et une fois que le consommateur est libre, le traitement de la consommation peut être effectué. Améliorez l'efficacité du traitement des tâches.

Tâche de traitement multi-coroutine

Ces coroutines sont la fin du travail consommateur. Après avoir obtenu le travail, il tirera d'abord le manifeste de l'adresse source dans le travail pour déterminer s'il s'agit d'un miroir multi-manifest, puis tirera chaque objet blob, puis transférera l'objet blob à l'adresse de destination, et enfin transférera le manifeste à l'adresse de destination. Le processus consiste à utiliser le cache, les données ne sont pas placées sur le disque et l'efficacité est améliorée. Ce processus utilise l'approche multi-coroutine de Golang pour augmenter la vitesse de traitement. Le nombre de coroutines peut être spécifié par l'utilisateur dans le paramètre d'entrée --routines, la valeur par défaut est 5.

Meilleures pratiques pour la migration d'images

Cette section présentera comment utiliser l'outil de transfert d'images pour implémenter la migration d'images par lots dans différents scénarios. Les scénarios sont les suivants:

  1. Migration d'images entre différents fournisseurs de cloud. Par exemple, la migration d'ACR, Alibaba Cloud Mirror Warehouse, vers TCR, Tencent Cloud Mirror Warehouse.

  2. L'entrepôt miroir open source / auto-construit est migré vers le cloud. Par exemple, la migration de l'entrepôt de miroir de port vers l'entrepôt de miroir Tencent Cloud TCR.

  3. Tencent Cloud TCR Personal Edition (CCR) est migré vers Tencent Cloud Mirror Warehouse Enterprise Edition TCR en un seul clic.

Installation de l'outil:

Tout d'abord, téléchargez et compilez l'outil, il y a deux façons, l'une est d'obtenir directement le fichier binaire, et la seconde est de télécharger le code source et de le compiler.

Adresse de téléchargement du package de version binaire:

https://github.com/tkestack/image-transfer/releases

L'exemple est compilé avec le code source téléchargé pour la démonstration:

Le processus de compilation est également très simple, entrez dans le répertoire du code source et faites directement.

git clone https://github.com/tkestack/image-transfer.git
cd ./image-transfer
make

Une fois la compilation terminée, le fichier binaire de transfert d'image sera généré dans le répertoire courant. Prêt à l'emploi. Ensuite, effectuez une démonstration des meilleures pratiques.

Meilleure pratique scénario 1: migration d'images entre différents fournisseurs de cloud

Prenons l'exemple de la migration de l'entrepôt miroir ACR d'Alibaba Cloud vers le TCR de l'entrepôt miroir Tencent Cloud.

1. Préparez le fichier d'informations d'identification d'accès pour Tencent Cloud Mirror Warehouse TCR et Aliyun Mirror Warehouse ACR: auth.json
   grant-test.tencentcloudcr.com:
   username: xxx
   password: xxx
   grant-test2.tencentcloudcr.com:
   username: xxx
   password: xxx
   registry.cn-hangzhou.aliyuncs.com:
   username: xxx
   password: xxx
   ccr.ccs.tencentyun.com:
   username: xxx
   password: xxx
   registry.hub.docker.com:
   username: xxx
   password: xxx

La configuration est très simple: saisissez l'adresse de l'entrepôt miroir source et l'adresse de l'entrepôt miroir de destination. Et entrez le nom d'utilisateur et le mot de passe correspondant à l'entrepôt miroir.

Whereinsecure indique si le registre est un service http, si c'est le cas, le champ sécurisé doit être true, la valeur par défaut est false et il est facultatif.

L'utilisateur de l'entrepôt miroir de destination doit disposer d'autorisations de transmission et de création d'entrepôt. Si elles ne sont pas fournies, l'accès anonyme sera effectué par défaut.

Les informations d'identification d'accès pour Tencent Cloud TCR sont obtenues comme suit:
image.png
Les informations d'identification d'accès pour ACR Mirror Warehouse ACR sont obtenues comme suit:
image.png

2. Préparez le fichier de règles de mise en miroir à migrer: rule.yaml
registry.cn-hangzhou.aliyuncs.com/grantzhao/sichenzhao:xx": "grant-test.tencentcloudcr.com/grantzhao/sichenzhao

Ce fichier est l'image source et l'image de destination à transférer. Les règles de fichier sont les suivantes: adresse du miroir source: adresse du miroir de destination,
où l'adresse du miroir source peut être spécifiée, ou aucune balise ne peut être spécifiée, ou plusieurs balises peuvent être spécifiées.
Lors de la spécification d'une seule balise: l'adresse de destination peut contenir ou non la balise. Si la balise n'est pas incluse, la balise miroir source est utilisée.
Lorsque la balise n'est pas spécifiée: l'adresse de destination doit contenir une balise.
Lors de la spécification de plusieurs balises: séparez les balises par des virgules anglaises, telles que grant-test.tencentcloudcr.com/grantzhao/sichenzhao:1.0,2.0,3.0. À ce stade, l'adresse de destination ne peut pas contenir la balise et la balise de l'adresse source est utilisée par défaut.

3. Exécutez l'outil
   ./image-transfer --routines=5 --securityFile=./security.yaml --ruleFile=./rule.yaml --ns=default \
   --registry=grant-test.tencentcloudcr.com --retry=2 --qps=100

Explication des paramètres:

--ns spécifie un ns par défaut, si le ns de l'entrepôt de destination est vide, il sera remplacé par le ns par défaut.

--registry spécifie un registre par défaut. Si le registre de l'entrepôt de destination est vide, il sera remplacé par le registre par défaut.

--routines = 5, ce qui signifie définir le nombre de simultanés à 5. La valeur par défaut est 5.

--retry = 2 signifie que le nombre de tentatives après l'échec est de 2 et la valeur par défaut est de 2.

--securityFile, spécifiez le fichier d'authentification.

--ruleFile, spécifiez le fichier de configuration de l'entrepôt miroir.

--qps, limite les qps demandés pas plus de 100 / s.

4. Exécuter les résultats

Outil de migration par lots d'images: transfert d'images
la dernière ligne

################# Finished, 0 transfer jobs failed, 0 jobs generate failed #################

Indique une opération réussie.

Scénario de bonne pratique 2: migration d'entrepôt miroir open source / auto-construit vers le cloud

Prenons l'exemple de la migration du hub docker de l'entrepôt miroir open source vers l'entrepôt miroir Tencent Cloud.

1. Préparez le hub docker et le fichier d'informations d'identification d'accès de Tencent Cloud Image Warehouse TCR: security.yaml
   grant-test2.tencentcloudcr.com:
   username: xxx
   password: xxx
   registry.hub.docker.com:
   username: xxx
   password: xxx
2. Préparez le fichier de règles de mise en miroir à migrer: image.json
   sichenzhao/private-test:xxx": "grant-test2.tencentcloudcr.com/grantzhao/sichenzhao
3. Exécutez l'outil
   ./image-transfer --routines=5 --securityFile=./security.yaml --ruleFile=./rule.yaml --ns=default \
   --registry=grant-test.tencentcloudcr.com --retry=2
4. Exécuter les résultats

Outil de migration par lots d'images: transfert d'images
la dernière ligne

################# Finished, 0 transfer jobs failed, 0 jobs generate failed #################

Indique une opération réussie.

Meilleure pratique scénario 3: migration en un clic de Tencent Cloud TCR Personal Edition (CCR) vers Tencent Cloud Mirror Warehouse Enterprise Edition TCR

L'utilisation dans ce scénario est légèrement différente des deux scénarios ci-dessus. Se manifeste principalement par des changements dans les paramètres d'entrée.

1. Préparez le fichier de configuration d'authentification d'image security.yaml
   grant-test.tencentcloudcr.com:
   username: xxx
   password: xxx
   grant-test2.tencentcloudcr.com:
   username: xxx
   password: xxx
   ccr.ccs.tencentyun.com:
   username: xxx
   password: xxx
2. Préparez le fichier de configuration secret Tencent Cloud secret.yaml

Pour le mode de migration en un clic de TCR, le nom d'utilisateur et le mot de passe de l'entrepôt ne sont pas requis comme authentification d'accès, mais les informations secrètes de Tencent Cloud sont utilisées.

   ccr:
   secretId: xxx
   secretKey: xxx
   tcr:
   secretId: xxx
   secretKey: xxx

Remarque: Le
format de fichier est indiqué ci-dessus, seuls les éléments secretId et secretKey peuvent être modifiés.

S'il n'y a aucune information secrète de ccr, tcr sera utilisé à la place. Au contraire, s'il n'y a aucune information secrète de tcr, ccr sera utilisé à la place.

Les informations secrètes sont obtenues comme suit:
image.png
contient deux informations, secretid et secretkey

3. Exécutez l'outil

L'entrée de paramètre ici est légèrement différente des deux scénarios ci-dessus.

   ./image-transfer --ccrToTcr=true --routines=5 --securityFile=./security.yaml --secretFile=./secret.yaml --tcrName=tcr-test \
   --retry=3 --tcrRegion=ap-guangzhou --ccrRegion=ap-guangzhou --qps=3000

Explication des paramètres:

--ccrToTcr = true, signifie activer le mode de migration complète à une touche TCR.

--secretFile, fournit le fichier de configuration secret.yaml.

--tcrName = tcr-test, spécifiez le nom de l'entrepôt tcr de destination.

--tcrRegion, spécifiez la région dans laquelle se trouve l'entrepôt tcr de destination.

--ccrRegion, spécifiez la région dans laquelle se trouve l'entrepôt source ccr.

4. Exécuter les résultats

Outil de migration par lots d'images: transfert d'images

La migration par lots en un clic prendra beaucoup de temps, car toutes les images de ccr doivent être transférées vers tcr.

Enfin, vous pouvez voir que 16 travaux ont échoué. L'outil listera enfin l'adresse du miroir source et l'adresse du miroir de destination du travail ayant échoué. Pour ces travaux ayant échoué, je suis allé à l'entrepôt pour vérifier et j'ai constaté que les balises de ces travaux n'étaient pas valides. Par conséquent, la transmission échoue.

Pour résumer

Cet article présente l'outil de migration par lots d'images: transfert d'images à partir des aspects de l'analyse des problèmes, des objectifs de conception, de l'analyse des principes et des meilleures pratiques. Tout le monde est invité à contribuer au code source, et également invité à soulever les exigences relatives aux problèmes.

Je suppose que tu aimes

Origine blog.51cto.com/14120339/2589997
conseillé
Classement