Migra entornos a Managed Airflow (3ª gen.) (secuencia de comandos de migración)

Managed Airflow (3ª gen.) | Managed Airflow (2ª gen.) | Managed Airflow (1ª gen. heredada)

En esta página, se explica cómo migrar DAG, datos y configuración de tu entorno existente de Managed Airflow (2ª gen.) a un nuevo entorno de Managed Airflow (3ª gen.) con la secuencia de comandos de migración.

De A Método Guía
Managed Airflow (3ª gen.), Airflow 2 Managed Airflow (3ª gen.), Airflow 3 Transferencia manual en paralelo Guía de migración manual
Managed Airflow (2ª gen.) Managed Airflow (3ª gen.) En paralelo, con la secuencia de comandos de migración Esta guía
Managed Airflow (2ª gen.) Managed Airflow (3ª gen.) En paralelo, con instantáneas Guía de migración de instantáneas
Managed Airflow (1ª gen. heredada), Airflow 2 Managed Airflow (3ª gen.) En paralelo, con instantáneas Guía de migración de instantáneas
Managed Airflow (1ª gen. heredada), Airflow 2 Managed Airflow (2ª gen.) En paralelo, con instantáneas Guía de migración de instantáneas
Managed Airflow (1ª gen. heredada), Airflow 2 Managed Airflow (2ª gen.) Transferencia manual en paralelo Guía de migración manual
Managed Airflow (1ª gen. heredada), Airflow 1 Managed Airflow (2ª gen.), Airflow 2 En paralelo, con instantáneas Guía de migración de instantáneas
Managed Airflow (1ª gen. heredada), Airflow 1 Managed Airflow (2ª gen.), Airflow 2 Transferencia manual en paralelo Guía de migración manual
Managed Airflow (1ª gen. heredada), Airflow 1 Managed Airflow (1ª gen. heredada), Airflow 2 Transferencia manual en paralelo Guía de migración manual

Acerca de la secuencia de comandos de migración

La secuencia de comandos de migración es una secuencia de comandos de Python para migraciones en paralelo que automatiza el proceso de migración de Managed Airflow (2ª gen.) a Managed Airflow (3ª gen.). Usa instantáneas del entorno para transferir la configuración del entorno al nuevo entorno.

La secuencia de comandos realiza las siguientes acciones:

  1. Obtiene la configuración del entorno de Managed Airflow (2ª gen.).

  2. Crea un entorno de Managed Airflow (3ª gen.) con una configuración que coincida con la configuración obtenida.

    Debido a que los entornos de Managed Airflow (3ª gen.) tienen una arquitectura diferente, es posible que se ajusten algunos parámetros para que coincidan con las diferencias. También puedes ajustar la mayoría de los parámetros del entorno más adelante.

  3. Detiene todos los DAG en el entorno de Managed Airflow (2ª gen.) uno por uno. Solo se reactivarán los DAG que se hayan reactivado en el entorno de Managed Airflow (2ª gen.).

  4. Guarda una instantánea del entorno de Managed Airflow (2ª gen.) de origen. La instantánea se guarda en la ubicación predeterminada para las instantáneas, el bucket del entorno de Managed Airflow (2ª gen.).

  5. Carga la instantánea en el entorno de Managed Airflow (3ª gen.).

    La secuencia de comandos no verifica la compatibilidad de los paquetes personalizados de PyPI, las variables de entorno y las anulaciones de opciones de configuración de Airflow con el entorno de Managed Airflow (3ª gen.).

    En caso de conflictos, la migración falla después de que se crea el entorno de Airflow administrado (3ª gen.), durante el proceso de carga de la instantánea. En este caso, puedes ajustar la configuración de tu entorno de Managed Airflow (2ª gen.) para resolver el conflicto o migrar sin la secuencia de comandos de migración y omitir la carga de paquetes personalizados de PyPI, variables de entorno o anulaciones de configuración de Airflow cuando cargas la instantánea.

  6. Reactiva los DAG en el entorno de Managed Airflow (3ª gen.). Si algunos DAG ya estaban detenidos antes de ejecutar la secuencia de comandos, permanecerán detenidos.

La secuencia de comandos tiene las siguientes limitaciones:

  • La secuencia de comandos siempre crea un nuevo entorno de Managed Airflow (3ª gen.). No es posible cargar la instantánea en un entorno existente de Managed Airflow (3ª gen.). Para hacerlo, puedes migrar con instantáneas, sin usar la secuencia de comandos de migración.

  • La secuencia de comandos crea un entorno de Managed Airflow (3ª gen.) solo en la misma región y proyecto que el entorno de Managed Airflow (2ª gen.).

  • Solo puedes cargar instantáneas en la misma versión o en una versión posterior de Airflow. Por ejemplo, no puedes cargar una instantánea de Airflow 2.10.2 a Airflow 2.9.3.

  • Solo se pueden migrar los entornos de Managed Airflow (2ª gen.) con la secuencia de comandos de migración.

Antes de comenzar

  • Debido a que la secuencia de comandos de migración crea un entorno y, luego, guarda y carga una instantánea, el proceso de migración puede tardar más de una hora.

  • La secuencia de comandos usa instantáneas. Se admiten instantáneas

  • en Managed Airflow (2ª gen.) versión 2.0.9 y versiones posteriores.

  • Tu cuenta requiere un rol de IAM que pueda crear entornos, guardar instantáneas y cargar instantáneas.

  • El tamaño máximo de la base de datos de Airflow que admite instantáneas es de 20 GB. Si la base de datos de tu entorno ocupa más de 20 GB, reduce el tamaño de la base de datos de Airflow.

  • La cantidad total de objetos en las carpetas /dags, /plugins y /data del bucket del entorno debe ser inferior a 100,000 para crear instantáneas.

  • Si usas el mecanismo XCom para transferir archivos, asegúrate de que lo usas según los lineamientos de Airflow. La transferencia de archivos grandes o una gran cantidad de archivos con XCom afecta el rendimiento de la base de datos de Airflow y puede provocar fallas cuando se cargan instantáneas o se actualiza tu entorno. Considera usar alternativas como Cloud Storage para transferir grandes volúmenes de datos.

Migra a Managed Airflow (3ª gen.)

En esta sección, se describe el proceso de migración con la secuencia de comandos de migración.

Verifica las diferencias entre Managed Airflow (2ª gen.) y Managed Airflow (3ª gen.)

Consulta la lista de diferencias entre Managed Airflow (2ª gen.) y Managed Airflow (3ª gen.).

Asegúrate de que tu entorno no use funciones que aún no estén disponibles en Managed Airflow (3ª gen.) y de que estés familiarizado con el uso y la configuración de funciones específicas de Managed Airflow (3ª gen.).

Asegúrate de que tus DAG sean compatibles con Managed Airflow (3ª gen.)

Para asegurarte de que tus DAG sean compatibles con Managed Airflow (3ª gen.), sigue estas sugerencias:

  • La lista de paquetes en el entorno de Managed Airflow (3ª gen.) puede ser diferente a la de tu entorno de Managed Airflow (2ª gen.). Esto puede afectar la compatibilidad de tus DAG con Managed Airflow (3ª gen.).

  • En Airflow administrado (3ª gen.), el clúster del entorno se encuentra en el proyecto del arrendatario. Asegúrate de que tus DAG sean compatibles con este cambio. En particular, KubernetesPodOperator las cargas de trabajo ahora se escalan de forma independiente de tu entorno y no es posible usar configuraciones de afinidad de pods.

Verifica la compatibilidad de la configuración

Puedes realizar una verificación de actualización para ver si la configuración de tu entorno de Managed Airflow (2ª gen.) es compatible con Managed Airflow (3ª gen.). Te recomendamos que resuelvas todos los conflictos de bloqueo que informe esta verificación antes de iniciar la migración.

Instala las dependencias de la secuencia de comandos

  • La secuencia de comandos requiere Python versión 3.8 y versiones posteriores.

  • La secuencia de comandos de migración usa gcloud CLI y las utilidades curl. Asegúrate de que ambas utilidades estén instaladas en tu computadora.

Descarga la secuencia de comandos

Descarga la secuencia de comandos de migración (composer_migrate.py) desde su repositorio en GitHub.

Autoriza en gcloud CLI

Autoriza en gcloud CLI:

gcloud auth login

Obtén una vista previa de los parámetros del entorno nuevo

Puedes obtener una vista previa de los parámetros del entorno de Managed Airflow (3ª gen.) antes de la migración. Puedes usar esto para ver cómo la configuración del entorno de Managed Airflow (2ª gen.) corresponde a Managed Airflow (3ª gen.).

Las anulaciones de opciones de configuración de Airflow, los paquetes personalizados de PyPI y las variables de entorno se cargan desde la instantánea del entorno y no se muestran en la vista previa.

Expandir

Ejecuta el siguiente comando:

python3 composer_migrate.py \
    --project PROJECT_ID \
    --location LOCATION \
    --source_environment COMPOSER_2_ENV \
    --target_environment COMPOSER_3_ENV \
    --target_airflow_version COMPOSER_3_AIRFLOW_VERSION \
    --dry_run

Reemplaza lo siguiente:

  • PROJECT_ID: el ID del proyecto.
  • COMPOSER_2_ENV: el nombre de tu entorno de Managed Airflow (2ª gen.)
  • LOCATION: la región en la que se encuentra el entorno de Managed Airflow (2ª gen.). El entorno de Managed Airflow (3ª gen.) se creará en la misma región.
  • COMPOSER_3_AIRFLOW_VERSION: la versión de Managed Airflow del entorno de Managed Airflow (3ª gen.) Esta versión debe ser la misma o una versión posterior que en el entorno de Managed Airflow (2ª gen.) y debe ser una de las versiones disponibles en Managed Airflow (3ª gen.).

Ejemplo:

python3 composer_migrate.py \
    --project example-project \
    --location us-central1 \
    --source_environment example-composer-2-environment \
    --target_environment example-composer-3-environment \
    --target_airflow_version 2.10.2

Verifica el estado del entorno

Asegúrate de que el entorno de Managed Airflow (2ª gen.) que deseas migrar esté en buen estado.

Si tu entorno no está en buen estado, el proceso de migración fallará después de crear un nuevo entorno de Managed Airflow (3ª gen.) porque no será posible crear una instantánea.

Consulta Usa el panel de supervisión para obtener más información sobre las formas de verificar el estado del entorno y de la base de datos.

Ejecuta la secuencia de comandos de migración

Ejecuta el siguiente comando:

python3 composer_migrate.py \
    --project PROJECT_ID \
    --location LOCATION \
    --source_environment COMPOSER_2_ENV \
    --target_environment COMPOSER_3_ENV \
    --target_airflow_version COMPOSER_3_AIRFLOW_VERSION

Reemplaza lo siguiente:

  • PROJECT_ID: el ID del proyecto.
  • COMPOSER_2_ENV: el nombre de tu entorno de Managed Airflow (2ª gen.)
  • LOCATION: la región en la que se encuentra el entorno de Managed Airflow (2ª gen.). El entorno de Managed Airflow (3ª gen.) se creará en la misma región.
  • COMPOSER_3_AIRFLOW_VERSION: la versión de Managed Airflow del entorno de Managed Airflow (3ª gen.) Esta versión debe ser la misma o una versión posterior que en el entorno de Managed Airflow (2ª gen.) y debe ser una de las versiones disponibles en Managed Airflow (3ª gen.).

Verifica si hay errores de DAG

  1. En la interfaz web de Airflow, ve a DAG y verifica si hay errores de sintaxis de DAG informados.

  2. Verifica que las ejecuciones de DAG estén programadas a la hora correcta.

  3. Espera a que se produzcan las ejecuciones de DAG en el entorno de Managed Airflow (3ª gen.) y verifica si se realizaron correctamente. Si una ejecución de DAG se realizó correctamente, no la reactives en el entorno de Managed Airflow (2ª gen.). Si lo haces, se producirá una ejecución de DAG para la misma hora y fecha en tu entorno de Managed Airflow (2ª gen.).

  4. Si falla una ejecución de DAG específica, intenta solucionar el DAG hasta que se ejecute correctamente en Airflow administrado (3ª gen.).

Supervisa tu entorno de Managed Airflow (3ª gen.)

Supervisa tu entorno de Managed Airflow (3ª gen.) para detectar posibles problemas, ejecuciones de DAG fallidas y el estado general del entorno.

Si el entorno de Managed Airflow (3ª gen.) se ejecuta sin problemas durante un período suficiente, considera borrar el entorno de Managed Airflow (2ª gen.).

¿Qué sigue?