Migra entornos a Cloud Composer 2 (desde Airflow 1)

Cloud Composer 1 | Cloud Composer 2

En esta página, se explica cómo transferir DAG, datos y configuración de tus entornos existentes de Cloud Composer 1, Airflow 1 a Cloud Composer 2 y Airflow 2.

Otras guías de migración

Desde Hasta Método Guía
Cloud Composer 1, Airflow 2 Cloud Composer 2, Airflow 2 En paralelo, con instantáneas Guía de migración (instantáneas)
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 En paralelo, con instantáneas Guía de migración (instantáneas)
Cloud Composer 1, Airflow 2 Cloud Composer 2, Airflow 2 Transferencia manual en paralelo Guía de migración manual
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 Transferencia manual en paralelo Esta guía (migración manual)
Airflow 1 Airflow 2 Transferencia manual en paralelo Guía de migración manual

Antes de comenzar

  • Debido a que Cloud Composer 2 usa Airflow 2, la migración incluye el cambio de tus DAG y la configuración del entorno a Airflow 2. Consulta la guía de migración de Airflow 1 a Airflow 2 para obtener información sobre los cambios rotundos entre Airflow 1 y Airflow 2 en Cloud Composer.

  • En esta guía, combinarás la migración a Airflow 2 y la migración a Cloud Composer 2 en un procedimiento de migración. De esta manera, no necesitas migrar a un entorno de Cloud Composer 1 con Airflow 2 antes de migrar a Cloud Composer 2.

Paso 1: Actualiza a Airflow 1.10.15

Si tu entorno usa una versión de Airflow anterior a la 1.10.15, actualízala a una versión de Cloud Composer que use Airflow 1.10.15.

Paso 2: Verifica la compatibilidad con Airflow 2

Para verificar posibles conflictos con Airflow 2, usa las secuencias de comandos de verificación de actualización que proporciona Airflow en tu entorno existente de Airflow 1.10.15.

gcloud

  1. Ejecuta verificaciones de actualización mediante el comando gcloud composer environments run. Algunas verificaciones de actualización que son relevantes para Airflow 1.10.15 independiente no son relevantes para Cloud Composer. El siguiente comando excluye estas verificaciones.

    gcloud composer environments run \
        COMPOSER_1_ENV  \
        --location=COMPOSER_1_LOCATION \
        upgrade_check \
        -- --ignore VersionCheckRule --ignore LoggingConfigurationRule \
        --ignore PodTemplateFileRule --ignore SendGridEmailerMovedRule
    

    Reemplaza lo siguiente:

    • COMPOSER_1_ENV por el nombre de tu entorno de Airflow 1.10.15
    • COMPOSER_1_LOCATION por la región en la que se encuentra el entorno
  2. Verifica el resultado del comando. Las secuencias de comandos de verificación de actualizaciones informan posibles problemas de compatibilidad en los entornos existentes.

  3. Implementa otros cambios en los DAG, como se describe en la guía Actualización a Airflow 2.0+, en la sección sobre cómo actualizar los DAG.

Paso 3: Obtén la lista de anulaciones de configuración, paquetes de PyPI personalizados y variables de entorno

Console

Obtén la lista de las anulaciones de configuración, los paquetes de PyPI personalizados y las variables de entorno de tu entorno de Cloud Composer 1:

  1. Ve a la página Entornos en la consola de Google Cloud:

    Ir a Entornos

  2. Selecciona tu entorno de Cloud Composer 1.

  3. Visualiza las variables de entorno en la pestaña Variables de entorno.

  4. Consulta las anulaciones de configuración en las pestañas Anulaciones de configuración de Airflow.

  5. Consulta los paquetes personalizados de PyPI en la pestaña Paquetes de PyPI.

gcloud

Para obtener la lista de variables de entorno, ejecuta el siguiente comando:

gcloud composer environments describe \
    COMPOSER_1_ENV \
    --location COMPOSER_1_LOCATION \
    --format="value(config.softwareConfig.envVariables)"

Para obtener la lista de anulaciones de configuración de Airflow del entorno, ejecuta el siguiente comando:

gcloud composer environments describe \
    COMPOSER_1_ENV \
    --location COMPOSER_1_LOCATION \
    --format="value(config.softwareConfig.airflowConfigOverrides)"

Para obtener la lista de paquetes personalizados de PyPI, ejecuta lo siguiente:

gcloud composer environments describe \
    COMPOSER_1_ENV \
    --location COMPOSER_1_LOCATION \
    --format="value(config.softwareConfig.pypiPackages)"

Reemplaza lo siguiente:

  • COMPOSER_1_ENV por el nombre de tu entorno de Cloud Composer 1
  • COMPOSER_1_LOCATION es la región en la que se encuentra el entorno de Cloud Composer 1.

Terraform

Omite este paso. La configuración de tu entorno de Cloud Composer 1 ya muestra las anulaciones de configuración, los paquetes de PyPI personalizados y las variables de entorno de tu entorno.

Paso 4: Crea un entorno de Cloud Composer 2

En este paso, crearás un entorno de Cloud Composer 2. Puedes comenzar con un ajuste predeterminado de entorno que coincida con las demandas de recursos esperadas y, luego, escalar y optimizar aún más el entorno.

Console

Crea un entorno de Cloud Composer 2 y especifica las anulaciones de configuración y las variables de entorno.

Como alternativa, puedes anular las configuraciones y las variables de entorno de Airflow después de crear un entorno.

Algunas opciones de configuración de Airflow 1 usan un nombre y una sección diferentes en Airflow 2. Para obtener más información, consulta Cambios de configuración.

gcloud

Crea un entorno de Cloud Composer 2 y especifica las anulaciones de configuración y las variables de entorno.

Como alternativa, puedes anular las configuraciones y las variables de entorno de Airflow después de crear un entorno.

Algunas opciones de configuración de Airflow 1 usan un nombre y una sección diferentes en Airflow 2. Para obtener más información, consulta Cambios de configuración.

Terraform

Crea un entorno de Cloud Composer 2 basado en la configuración del entorno de Cloud Composer 1:

  1. Copia la configuración de tu entorno de Cloud Composer 1.
  2. Cambia el nombre de tu entorno.
  3. Usa el proveedor google-beta:

    resource "google_composer_environment" "example_environment_composer_2" {
      provider = google-beta
      # ...
    }
    
  4. Especifica una imagen de Cloud Composer 2 en el bloque config.software_config:

    software_config {
      image_version = "composer-2.6.6-airflow-2.6.3"
      # ...
    }
    
  5. Si no es así, especifica las anulaciones de configuración y las variables de entorno.

  6. Especifica paquetes de PyPI personalizados en el bloque config.software_config.pypi_packages:

    software_config {
    
      # ...
    
      pypi_packages = {
        numpy = ""
        scipy = ">=1.1.0"
      }
    
    }
    

Paso 5: Instala los paquetes de PyPI en el entorno de Cloud Composer 2

Después de crear tu entorno de Cloud Composer 2, instala paquetes personalizados de PyPI.

Console

  1. Ve a la página Entornos en la consola de Google Cloud:

    Ir a Entornos

  2. Selecciona tu entorno de Cloud Composer 2.

  3. Ve a la pestaña Paquetes de PyPI y haz clic en Editar.

  4. Copia los requisitos del paquete de PyPI desde tu entorno de Cloud Composer 1. Haz clic en Guardar y espera hasta que se actualice el entorno.

gcloud

  1. Crea un archivo requirements.txt con la lista de paquetes personalizados de PyPI:

      numpy
      scipy>=1.1.0
    
  2. Actualiza tu entorno y pasa el archivo requirements.txt al comando --update-pypi-packages-from-file:

    gcloud composer environments update COMPOSER_2_ENV \
      --location COMPOSER_2_LOCATION  \
      --update-pypi-packages-from-file requirements.txt
    

    Reemplaza lo siguiente:

    • COMPOSER_2_ENV por el nombre de tu entorno de Cloud Composer 2.
    • COMPOSER_2_LOCATION por la región en la que se encuentra el entorno de Cloud Composer 2

Terraform

Omite este paso. Ya instalaste paquetes personalizados de PyPI cuando creaste el entorno.

Paso 6: Transfiere variables y grupos

Airflow admite la exportación de variables y grupos a archivos JSON. Luego, puedes importar estos archivos a tu entorno de Cloud Composer 2.

Los comandos de la CLI de Airflow que se usan en este paso operan en archivos locales en trabajadores de Airflow. Para subir o descargar los archivos, usa la carpeta /data en el bucket de Cloud Storage de tu entorno. Esta carpeta se sincroniza con el directorio /home/airflow/gcs/data/ en los trabajadores de Airflow. En los comandos de la CLI de Airflow, especifica /home/airflow/gcs/data/ en el parámetro FILEPATH.

gcloud

  1. Exporta variables desde tu entorno de Cloud Composer 1:

    gcloud composer environments run \
        COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
         variables -- -e /home/airflow/gcs/data/variables.json
    

    Reemplaza lo siguiente:

    • COMPOSER_1_ENV por el nombre de tu entorno de Cloud Composer 1
    • COMPOSER_1_LOCATION es la región en la que se encuentra el entorno de Cloud Composer 1.
  2. Exporta grupos desde tu entorno de Cloud Composer 1:

    gcloud composer environments run COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
         pool -- -e /home/airflow/gcs/data/pools.json
    

    Reemplaza lo siguiente:

    • COMPOSER_1_ENV por el nombre de tu entorno de Cloud Composer 1
    • COMPOSER_1_LOCATION es la región en la que se encuentra el entorno de Cloud Composer 1.
  3. Obtén el URI del bucket de tu entorno de Cloud Composer 2.

    1. Ejecuta el siguiente comando:

      gcloud composer environments describe COMPOSER_2_ENV \
          --location COMPOSER_2_LOCATION \
           --format="value(config.dagGcsPrefix)"
      

      Reemplaza lo siguiente:

      • COMPOSER_2_ENV por el nombre de tu entorno de Cloud Composer 2
      • COMPOSER_2_LOCATION por la región en la que se encuentra el entorno.
    2. En el resultado, quita la carpeta /dags. El resultado es el URI del bucket de tu entorno de Cloud Composer 2.

      Por ejemplo, cambia gs://us-central1-example-916807e1-bucket/dags a gs://us-central1-example-916807e1-bucket.

  4. Transfiere archivos JSON con variables y grupos a tu entorno de Cloud Composer 2:

    gcloud composer environments storage data export \
        --destination=COMPOSER_2_BUCKET/data \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION \
        --source=variables.json
    
    gcloud composer environments storage data export \
        --destination=COMPOSER_2_BUCKET/data \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION \
        --source=pools.json
    

    Reemplaza lo siguiente:

    • COMPOSER_2_BUCKET por el URI del bucket de entorno de Cloud Composer 2, que se obtuvo en el paso anterior.
    • COMPOSER_1_ENV por el nombre de tu entorno de Cloud Composer 1
    • COMPOSER_1_LOCATION es la región en la que se encuentra el entorno de Cloud Composer 1.
  5. Importa variables y grupos a Cloud Composer 2:

    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        variables import \
        -- /home/airflow/gcs/data/variables.json
    
    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        pools import \
        -- /home/airflow/gcs/data/pools.json
    
  6. Verifica que se importen las variables y los grupos:

    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        variables list
    
    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        pools list
    
  7. Quita los archivos JSON de los buckets:

    gcloud composer environments storage data delete \
        variables.json \
        --environment=COMPOSER_2_ENV \
        --location=COMPOSER_2_LOCATION
    
    gcloud composer environments storage data delete \
        pools.json \
        --environment=COMPOSER_2_ENV \
        --location=COMPOSER_2_LOCATION
    
    gcloud composer environments storage data delete \
        variables.json \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION
    
    gcloud composer environments storage data delete \
        pools.json \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION
    

Paso 7: Transfiere otros datos desde el bucket de tu entorno de Cloud Composer 1

Transfiere complementos y otros datos desde tu bucket de entorno de Cloud Composer 1.

gcloud

  1. Transfiere los complementos a tu entorno de Cloud Composer 2. Para hacerlo, exporta los complementos del bucket de tu entorno de Cloud Composer 1 a la carpeta /plugins en el bucket del entorno de Cloud Composer 2:

    gcloud composer environments storage plugins export \
        --destination=COMPOSER_2_BUCKET/plugins \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION
    
  2. Verifica que la carpeta /plugins se haya importado correctamente:

    gcloud composer environments storage plugins list \
        --environment=COMPOSER_2_ENV \
        --location=COMPOSER_2_LOCATION
    
  3. Exporta la carpeta /data del entorno de Cloud Composer 1 al entorno de Airflow 2:

    gcloud composer environments storage data export \
        --destination=COMPOSER_2_BUCKET/data \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION
    
  4. Verifica que la carpeta /data se haya importado correctamente:

    gcloud composer environments storage data list \
        --environment=COMPOSER_2_ENV \
        --location=COMPOSER_2_LOCATION
    

Paso 8: Transfiere conexiones

Airflow 1.10.15 no admite la exportación de conexiones. Para transferir conexiones, créalas de forma manual en tu entorno de Cloud Composer 2 desde el entorno de Cloud Composer 1.

gcloud

  1. Para obtener una lista de conexiones en tu entorno de Cloud Composer 1, ejecuta el siguiente comando:

    gcloud composer environments run COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
         connections -- --list
    
  2. Para crear una conexión nueva en tu entorno de Cloud Composer 2, ejecuta el comando connections de la CLI de Airflow a través de gcloud. Por ejemplo:

    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        connections add \
        -- --conn-host postgres.example.com \
        --conn-port 5432 \
        --conn-type postgres \
        --conn-login example_user \
        --conn-password example_password \
        --conn-description "Example connection" \
        example_connection
    

Paso 9: Transfiere las cuentas de usuario

En este paso, se explica cómo crearlos manualmente para transferir usuarios.

Airflow 1.10.15 no admite la exportación de usuarios. Para transferir usuarios y conexiones, crea cuentas de usuario nuevas de forma manual en tu entorno de Airflow 2 desde el entorno de Cloud Composer 1.

IU de Airflow

  1. Para ver una lista de usuarios en tu entorno de Cloud Composer 1, sigue estos pasos:

    1. Abre la interfaz web de Airflow en tu entorno de Cloud Composer 1.

    2. Ve a Administrador > Usuarios.

  2. Para crear un usuario en tu entorno de Cloud Composer 2, sigue estos pasos:

    1. Abre la interfaz web de Airflow en tu entorno de Cloud Composer 2.

    2. Ve a Seguridad > Crear lista de usuarios.

    3. Haz clic en Agregar un registro nuevo.

gcloud

  1. No es posible ver una lista de usuarios a través de gcloud en Airflow 1. Usa la IU de Airflow.

  2. Para crear una cuenta de usuario nueva en tu entorno de Cloud Composer 2, ejecuta el comando users create de la CLI de Airflow con gcloud. Por ejemplo:

    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        users create \
        -- --username example_username \
        --firstname Example-Name \
        --lastname Example-Surname \
        --email example-user@example.com \
        --use-random-password \
        --role Op
    

    Reemplaza lo siguiente:

    • COMPOSER_2_ENV por el nombre de tu entorno de Cloud Composer 2.
    • COMPOSER_2_LOCATION con la región en la que se encuentra el entorno de Cloud Composer 2.
    • Todos los parámetros de configuración del usuario con sus valores del entorno de Cloud Composer 1, incluido el rol del usuario.

Paso 10: Asegúrate de que tus DAG estén listos para Airflow 2

Antes de transferir los DAG a tu entorno de Cloud Composer 1, asegúrate de lo siguiente:

  1. Las secuencias de comandos de verificaciones de actualización de tus DAG se ejecutan de forma correcta y no quedan problemas de compatibilidad.

  2. Tus DAG usan declaraciones de importación correctas.

    Por ejemplo, la nueva sentencia de importación para BigQueryCreateDataTransferOperator puede verse de la siguiente manera:

    from airflow.providers.google.cloud.operators.bigquery_dts \
        import BigQueryCreateDataTransferOperator
    
  3. Tus DAG están actualizados para Airflow 2. Este cambio es compatible con Airflow 1.10.14 y versiones posteriores.

Paso 11: Transfiere los DAG al entorno de Cloud Composer 2

Los siguientes problemas potenciales pueden ocurrir cuando transfieres DAG entre entornos:

  • Si un DAG está habilitado (no pausado) en ambos entornos, cada entorno ejecuta su propia copia del DAG, según lo programado. Esto puede generar ejecuciones de DAG duplicadas para los mismos datos y tiempo de ejecución.

  • Debido a la recuperación de DAG, Airflow programa ejecuciones adicionales de DAG a partir de la fecha de inicio especificada en tus DAG. Esto sucede porque la instancia nueva de Airflow no tiene en cuenta el historial de ejecuciones de DAG desde el entorno de Cloud Composer 1. Esto puede generar una gran cantidad de ejecuciones de DAG programadas a partir de la fecha de inicio especificada.

Evita ejecuciones duplicadas de DAG

En tu entorno de Cloud Composer 2, en tu entorno de Airflow 2, agrega una anulación de la opción de configuración de Airflow para la opción dags_are_paused_at_creation. Después de realizar este cambio, todos los DAG nuevos se pausarán de forma predeterminada.

Sección Clave Valor
core dags_are_paused_at_creation True

Evita las ejecuciones de DAG adicionales o faltantes

Para evitar brechas y superposiciones en las fechas de ejecución, inhabilita la actualización en Cloud Composer 2. De esta manera, después de subir los DAG a tu entorno de Cloud Composer 2, Airflow no programa las ejecuciones de DAG que ya se ejecutaron en el entorno de Cloud Composer 1. Agrega una anulación de la opción de configuración de Airflow para la opción catchup_by_default:

Sección Clave Valor
scheduler catchup_by_default False

Transfiere tus DAG al entorno de Cloud Composer 2

Para transferir tus DAG al entorno de Cloud Composer 2, sigue estos pasos:

  1. Sube el DAG del entorno de Cloud Composer 1 al entorno de Cloud Composer 2. Omite el DAG airflow_monitoring.py.

  2. Los DAG se detienen en el entorno de Cloud Composer 2 debido a la anulación de la configuración, por lo que no se programan ejecuciones de DAG.

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

  4. En el momento en que planeas transferir el DAG, haz lo siguiente:

    1. Pausa los DAG en tu entorno de Cloud Composer 1.

    2. Reanude los DAG en su entorno de Cloud Composer 2.

    3. Comprueba que las nuevas ejecuciones de DAG estén programadas en la hora correcta.

    4. Espera a que las ejecuciones de DAG ocurran en el entorno de Cloud Composer 2 y verifica si se realizaron de forma correcta. Si la ejecución de un DAG se realizó de forma correcta, no lo reanudes en el entorno de Cloud Composer 1. Si lo haces, se ejecutará un DAG en la misma hora y fecha en tu entorno de Cloud Composer 1.

  5. Si la ejecución de un DAG específico falla, intenta solucionar problemas relacionados con el DAG hasta que se ejecute de forma correcta en Cloud Composer 2.

    Si es necesario, siempre puedes recurrir a la versión de Cloud Composer 1 del DAG y ejecutar las ejecuciones de DAG que fallaron en Cloud Composer 2 desde tu entorno de Cloud Composer 1:

    1. Pausa el DAG en tu entorno de Cloud Composer 2.

    2. Reanuda el DAG en tu entorno de Cloud Composer 1. Este programa programa las ejecuciones de actualización del DAG para el momento en que este se pausó en el entorno de Cloud Composer 1.

Paso 12: Supervisa tu entorno de Cloud Composer 2

Después de transferir todos los DAG y la configuración al entorno de Cloud Composer 2, supervísalo para detectar posibles problemas, ejecuciones fallidas de DAG y el estado general del entorno. Si el entorno de Cloud Composer 2 se ejecuta sin problemas durante un período suficiente, considera borrar el entorno de Cloud Composer 1.

¿Qué sigue?