Herramienta de migración de imágenes por lotes: transferencia de imágenes

Visión general

En el proceso de migración a la nube o migración a la nube, los servicios de usuario deben migrarse en lotes. Sobre la base de estos antecedentes, el equipo de expertos en contenedores de Tencent Cloud desarrolló una herramienta de migración por lotes de imágenes: transferencia de imágenes. Esta herramienta admite la migración por lotes entre almacenes espejo de varios proveedores en la nube, y también admite la migración completa con un clic de Tencent Cloud Mirror Warehouse TCR Personal Edition CCR a Tencent Cloud Mirror Warehouse Enterprise TCR.
Este artículo presenta primero los puntos débiles de la migración de imágenes en el proceso de migración / nube empresarial. Posteriormente, se introducen en detalle las ideas de diseño, los módulos funcionales y las mejores prácticas de la herramienta de transferencia de imágenes image-transfer.
La herramienta es oficialmente de código abierto, la dirección del proyecto: https://github.com/tkestack/image-transfer

Dirección de descarga del paquete binario: https://github.com/tkestack/image-transfer/releases

¿Cómo migrar negocios a la nube?

Hay varios escenarios para la migración de la nube empresarial, uno es el IDC a la nube autoconstruido, el segundo es la migración a la nube de terceros y el tercero es la recuperación remota de desastres, es decir, la nube híbrida. En estos escenarios, ya sea migración a la nube o migración a la nube, el proceso de migración incluye principalmente los siguientes pasos.

  1. Planificación de redes. configuración de vpc, división en subredes, etc.
  2. migración de datos. Almacenamiento de objetos, almacenamiento de archivos, etc.
  3. Migración de aplicaciones. Negocio, configuración, etc.

En el proceso de migración de datos, si un gran número de empresas utiliza la implementación en contenedores, se requiere la migración de imágenes por lotes. En la actualidad, los servicios de almacenamiento espejo de la mayoría de los proveedores de la nube no ofrecen la posibilidad de migrar los almacenes espejo en lotes. Si desea migrar una empresa, solo puede descargar la imagen original localmente, modificar la etiqueta y cargarla en el almacén de imágenes de destino. Este proceso tiene las siguientes desventajas:

  • Requiere mucho tiempo y trabajo. Solo para la migración de una sola imagen, se requieren tres pasos y debe vigilarlos. Si ocurre una falla, se requiere un procesamiento adicional.
  • Operación completamente humana, fácil de cometer errores. Al modificar la etiqueta de la imagen original, es muy fácil cometer errores debido a la modificación manual y la modificación de la etiqueta es incorrecta.
  • Cuando la cantidad de duplicación es grande, el costo aumenta y el progreso de la migración a la nube es lento. Si hay cientos o miles de espejos, tal operación humana, el progreso de la migración será muy lento y el costo de la migración aumentará considerablemente.

El principio de transferencia de imágenes

Objetivos de diseño

Para los puntos débiles de la migración de espejos. Esperamos desarrollar una herramienta de migración de imágenes por lotes. Para los usuarios, solo necesita una configuración simple para realizar la migración por lotes de imágenes sin intervención manual, lo que mejora el progreso de la migración / nube empresarial y reduce los costos. Específicamente, la herramienta tiene los siguientes objetivos de diseño.

  1. La configuración es simple, no se requieren entradas complicadas . Esperamos que esta herramienta sea simple y fácil de usar para los usuarios. Solo necesita configurar las direcciones espejo de origen y destino y la autenticación para completar la migración por lotes.

  2. Migre imágenes masivas de manera rápida y eficiente, reduciendo los costos de migración . En respuesta a una gran cantidad de necesidades de migración espejo, esperamos que la herramienta se pueda completar de manera eficiente y con la ayuda de algunas tecnologías de alta concurrencia, para lograr una migración rápida.

  3. Cierta tolerancia a fallos, reduciendo la intervención manual y el mantenimiento . Durante el proceso de migración, esperamos que la herramienta pueda identificar y reparar automáticamente algunos errores, minimizar el mantenimiento manual y mejorar la eficiencia de operación y mantenimiento.

  4. No hay dependencia del entorno operativo y se mejora la universalidad de las herramientas . Esperamos que la herramienta pueda ejecutarse en cualquier sistema operativo Linux, Mac OS, Windows, sin depender de Docker y otros programas.

  5. Admite el modo de migración completa con un solo clic de Tencent Cloud CCR . En la actualidad, se lanza oficialmente Tencent Cloud Container Image Service TCR Enterprise Edition, y Tencent Cloud TCR Personal Edition (CCR) reducirá gradualmente el mantenimiento en el futuro hasta que se desconecte. Por lo tanto, la herramienta debe admitir la migración completa con un solo clic del almacén CCR a TCR Enterprise Edition.

  6. Admite límite de velocidad qps personalizado. Al migrar imágenes en lotes, las llamadas frecuentes a la interfaz del almacén espejo pueden hacer que el almacén espejo se bloquee, por lo que es necesario restringir qps.

Arquitectura

La transferencia de imágenes se compone de varios módulos. La siguiente figura muestra la arquitectura de transferencia de imágenes.

Herramienta de migración de imágenes por lotes: transferencia de imágenes

  • Entrada de modo general (predeterminado) : se utiliza para aceptar la tarea de migración de duplicación emitida por el usuario. Incluyendo archivos de configuración de migración espejo y archivos de configuración de autenticación. Este modo se utiliza para implementar la migración de imágenes entre proveedores de la nube.

  • Entrada del modo de migración de CCR con un clic : debe agregar --ccrToTcr = true al parámetro de entrada de la herramienta. Este modo se utiliza para la migración completa con un clic del almacén de CCR a TCR Enterprise Edition. Además de agregar el parámetro --ccrToTcr = true, también se requieren archivos de configuración de autenticación y archivos de configuración secretos de Tencent Cloud.

  • canalización : este módulo es el núcleo de la herramienta para gestionar la migración de imágenes. Responsable de procesar las tareas de migración de réplicas emitidas por los usuarios, incluido el procesamiento de las reglas de sincronización del almacén de réplicas de acuerdo con el archivo de configuración de la migración y la realización de tareas jerárquicas de extracción y transferencia de réplicas. El módulo utiliza un modelo de canalización altamente concurrente para mejorar la velocidad de migración.

  • Reintentar tarea: esta etapa reintentará la tarea de transferencia fallida en la canalización. El número de reintentos se puede determinar de acuerdo con los parámetros de entrada del usuario, y el valor predeterminado es 2 veces.

Tubería

Dado que la herramienta está escrita en lenguaje golang, el módulo de procesamiento central utiliza el modelo de alta concurrencia de canalización de go. Todo el módulo de canalización se divide en tres pequeños módulos.

Reglas de sincronización del almacén espejo de procesamiento de múltiples co-rutinas

Aquí está el procesamiento y análisis de la entrada del archivo de configuración de migración espejo por parte del usuario, para obtener cada dirección espejo de origen (incluyendo repositorio y etiqueta) que necesita ser transferida, y la dirección espejo de destino correspondiente. Luego, cree un trabajo para cada dirección de espejo de origen y dirección de espejo de destino. Si la etiqueta de réplica de origen no se especifica en el archivo de configuración de réplica, se extraerán todas las etiquetas del repositorio y, a continuación, se creará un trabajo para cada etiqueta. Este proceso utiliza el enfoque de múltiples corrutinas de golang para aumentar la velocidad de procesamiento. El usuario puede especificar el número de corrutinas en el parámetro de entrada --proc, el valor predeterminado es 5. Después de componer cada trabajo, se colocará en el canal de tareas, a la espera de ser consumido.

Canal de transmisión de tareas

El canal de tareas puede considerarse como un middleware simple, implementado por el canal golang. Después de que se produce cada trabajo, se colocará en el canal y esperará a ser consumido. Este diseño puede asegurar que el trabajo producido por el productor se coloque inmediatamente en la línea de consumo, y una vez que el consumidor final esté libre, se pueda realizar el procesamiento de consumo. Mejore la eficiencia del procesamiento de trabajos.

Tarea de procesamiento de múltiples rutinas

Estas corrutinas son la parte final del trabajo del consumidor. Después de obtener el trabajo, primero extraerá el manifiesto de la dirección de origen en el trabajo para determinar si es un espejo de manifiesto múltiple, luego extraerá cada blob, luego transferirá el blob a la dirección de destino y finalmente transferirá el manifiesto a la dirección de destino. El proceso consiste en usar la caché, los datos no se colocan en el disco y se mejora la eficiencia. Este proceso utiliza el enfoque de múltiples corrutinas de golang para aumentar la velocidad de procesamiento. El usuario puede especificar el número de corrutinas en el parámetro de entrada --rutinas, el valor predeterminado es 5.

Mejores prácticas para la migración de imágenes

Esta sección presentará cómo utilizar la herramienta de transferencia de imágenes para implementar la migración de imágenes por lotes en diferentes escenarios. Los escenarios son los siguientes:

  1. Migración de imágenes entre diferentes proveedores de la nube. Por ejemplo, migrando de ACR, Alibaba Cloud Mirror Warehouse, a TCR, Tencent Cloud Mirror Warehouse.

  2. El almacén espejo de código abierto / autoconstruido se migra a la nube. Por ejemplo, migrar desde el almacén espejo del puerto al almacén espejo de Tencent Cloud TCR.

  3. Tencent Cloud TCR Personal Edition (CCR) se migra a Tencent Cloud Mirror Warehouse Enterprise Edition TCR con un solo clic.

Instalación de herramientas:

Primero, descargue y compile la herramienta, hay dos formas, una es obtener directamente el archivo binario y la segunda es descargar el código fuente y compilar.

Dirección de descarga del paquete de lanzamiento binario:

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

El ejemplo utiliza el código fuente descargado para compilar para demostración:

El proceso de compilación también es muy simple, ingrese al directorio del código fuente y realice directamente.

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

Una vez completada la compilación, el archivo binario de transferencia de imágenes se generará en el directorio actual. Listo para usar. A continuación, realice una demostración de las mejores prácticas.

Escenario de mejores prácticas 1: migración de imágenes entre diferentes proveedores de nube

Tome el ejemplo de la migración de ACR Mirror Warehouse de Alibaba Cloud a TCR Mirror Warehouse de Tencent Cloud.

1. Prepare el archivo de información de credenciales de acceso para Tencent Cloud Mirror Warehouse TCR y 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 configuración es muy sencilla: introduzca la dirección del almacén espejo de origen y la dirección del almacén espejo de destino. E ingrese el nombre de usuario y la contraseña correspondientes al almacén espejo.

Donde inseguro indica si el registro es un servicio http, si lo es, el campo seguro debe ser verdadero, el valor predeterminado es falso y es opcional.

El usuario del almacén espejo de destino debe tener permisos de envío y creación de almacén. Si no se proporcionan, el acceso anónimo se realizará de forma predeterminada.

Las credenciales de acceso para Tencent Cloud TCR se obtienen de la siguiente manera:
image.png
Las credenciales de acceso para ACR Mirror Warehouse ACR se obtienen de la siguiente manera:
image.png

2. Prepare el archivo de reglas de duplicación que se va a migrar: rule.yaml
registry.cn-hangzhou.aliyuncs.com/grantzhao/sichenzhao:xx": "grant-test.tencentcloudcr.com/grantzhao/sichenzhao

Este archivo es la imagen de origen y la imagen de destino que se transferirán. Las reglas del archivo son: dirección de espejo de origen: dirección de espejo de destino,
donde se puede especificar la dirección de espejo de origen, o sin etiqueta, o se pueden especificar múltiples etiquetas.
Al especificar una sola etiqueta: la dirección de destino puede contener o no la etiqueta. Si la etiqueta no está incluida, se utiliza la etiqueta de espejo de origen.
Cuando no se especifica la etiqueta: la dirección de destino debe contener una etiqueta.
Cuando se especifican varias etiquetas: separe varias etiquetas con comas en inglés, como grant-test.tencentcloudcr.com/grantzhao/sichenzhao:1.0,2.0,3.0. En este momento, la dirección de destino no puede contener la etiqueta y la etiqueta de la dirección de origen se utiliza de forma predeterminada.

3. Ejecute la herramienta
   ./image-transfer --routines=5 --securityFile=./security.yaml --ruleFile=./rule.yaml --ns=default \
   --registry=grant-test.tencentcloudcr.com --retry=2 --qps=100

Explicación de parámetros:

--ns especifica un ns predeterminado, si el ns del almacén de destino está vacío, será reemplazado por el ns predeterminado.

--registry especifica un registro predeterminado. Si el registro del almacén de destino está vacío, será reemplazado por el registro predeterminado.

--routines = 5, lo que significa establecer el número de concurrentes en 5. El valor predeterminado es 5.

--retry = 2 significa que el número de reintentos después del error es 2 y el valor predeterminado es 2.

--securityFile, especifica el archivo de autenticación.

--ruleFile, especifica el archivo de configuración del almacén espejo.

--qps, limite los qps solicitados a no más de 100 / s.

4. Ejecutar resultados

Herramienta de migración de imágenes por lotes: transferencia de imágenes
la ultima linea

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

Indica una operación exitosa.

Escenario de mejores prácticas 2: migración del almacén espejo de código abierto / autoconstruido a la nube

Tome como ejemplo la migración desde el centro acoplable del almacén espejo de código abierto al almacén espejo TCR de Tencent Cloud.

1. Prepare el concentrador de Docker y el archivo de información de credenciales de acceso 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. Prepare el archivo de reglas de duplicación que se va a migrar: image.json
   sichenzhao/private-test:xxx": "grant-test2.tencentcloudcr.com/grantzhao/sichenzhao
3. Ejecute la herramienta
   ./image-transfer --routines=5 --securityFile=./security.yaml --ruleFile=./rule.yaml --ns=default \
   --registry=grant-test.tencentcloudcr.com --retry=2
4. Ejecutar resultados

Herramienta de migración de imágenes por lotes: transferencia de imágenes
la ultima linea

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

Indica una operación exitosa.

Escenario de mejores prácticas 3: migración de un clic de Tencent Cloud TCR Personal Edition (CCR) a Tencent Cloud Mirror Warehouse Enterprise Edition TCR

El uso en este escenario es ligeramente diferente al de los dos escenarios anteriores. Se manifiesta principalmente como cambios en los parámetros de entrada.

1. Prepare el archivo de configuración de autenticación de imagen 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. Prepare el archivo de configuración secreto de Tencent Cloud secret.yaml

Para el modo de migración de un clic de TCR, el nombre de usuario y la contraseña del almacén no son necesarios como autenticación de acceso, pero se utiliza la información secreta de Tencent Cloud.

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

Nota: El
formato de archivo se muestra arriba, solo se permite modificar los elementos secretId y secretKey.

Si no hay información secreta de ccr, se utilizará tcr en su lugar. Por el contrario, si no hay información secreta de tcr, se utilizará ccr en su lugar.

La información secreta se obtiene de la siguiente manera:
image.png
contiene dos información, secretid y secretkey

3. Ejecute la herramienta

La entrada de parámetros aquí es ligeramente diferente de los dos escenarios anteriores.

   ./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

Explicación de parámetros:

--ccrToTcr = true, significa habilitar el modo de migración completa de una tecla de TCR.

--secretFile, proporciona el archivo de configuración secret.yaml.

--tcrName = tcr-test, especifique el nombre del almacén de tcr de destino.

--tcrRegion, especifica la región donde se encuentra el almacén de tcr de destino.

--ccrRegion, especifica la región donde se encuentra el almacén de ccr de origen.

4. Ejecutar resultados

Herramienta de migración de imágenes por lotes: transferencia de imágenes

La migración por lotes con un clic llevará mucho tiempo, porque todas las imágenes de ccr deben transferirse a tcr.

Finalmente, puede ver que 16 trabajos fallaron. La herramienta finalmente mostrará la dirección de espejo de origen y la dirección de espejo de destino del trabajo fallido. Para estos trabajos fallidos, fui al almacén para verificar y encontré que las etiquetas de estos trabajos no eran válidas. Por tanto, la transmisión falla.

para resumir

Este artículo presenta la herramienta de migración de imágenes por lotes: transferencia de imágenes desde los aspectos de análisis de problemas, objetivos de diseño, análisis de principios y mejores prácticas. Todos son bienvenidos a contribuir con el código fuente y también a plantear requisitos de problemas.

Supongo que te gusta

Origin blog.51cto.com/14120339/2589997
Recomendado
Clasificación