Migrar entornos a Cloud Composer 2 (desde Airflow 1)

Cloud Composer 3 | Cloud Composer 2 | Cloud Composer 1

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

Otras guías de migración

De Para Método Guía
Cloud Composer 2 Cloud Composer 3 En paralelo, con la secuencia de comandos de migración Guía de migración de secuencias de comandos
Cloud Composer 2 Cloud Composer 3 En paralelo, con capturas Guía de migración de capturas
Cloud Composer 1, Airflow 2 Cloud Composer 3 En paralelo, con capturas Guía de migración de capturas
Cloud Composer 1, Airflow 2 Cloud Composer 2 En paralelo, con capturas Guía de migración de capturas
Cloud Composer 1, Airflow 2 Cloud Composer 2 Transferencia manual en paralelo Guía de migración manual
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 En paralelo, con capturas Guía de migración de capturas
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 Transferencia manual en paralelo Esta guía
Cloud Composer 1, Airflow 1 Cloud Composer 1, Airflow 2 Transferencia manual en paralelo Guía de migración manual

Antes de empezar

  • Como Cloud Composer 2 usa Airflow 2, la migración incluye el cambio de los 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 incompatibles entre Airflow 1 y Airflow 2 en Cloud Composer.

  • En esta guía, se combinan la migración a Airflow 2 y la migración a Cloud Composer 2 en un solo procedimiento de migración. De esta forma, no es necesario que migres 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, actualiza tu entorno a una versión de Cloud Composer que use Airflow 1.10.15.

Paso 2: Comprueba la compatibilidad con Airflow 2

Para comprobar si hay posibles conflictos con Airflow 2, consulta la guía de actualización a Airflow 2.0+ en la sección sobre actualización de DAGs.

Un problema habitual que puede surgir está relacionado con las rutas de importación incompatibles. Para obtener más información sobre cómo solucionar este problema de compatibilidad, consulta la sección sobre proveedores de versiones anteriores de la guía de actualización a Airflow 2.0 o versiones posteriores.

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

Consola

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

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

    Ir a Entornos

  2. Selecciona tu entorno de Cloud Composer 1.

  3. Consulta 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 de PyPI personalizados 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 lo siguiente:

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

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

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

Sustituye:

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

Terraform

Saltar este paso La configuración de tu entorno de Cloud Composer 1 ya incluye anulaciones de configuración, paquetes PyPI personalizados y variables de entorno.

Paso 4: Crea un entorno de Cloud Composer 2

En este paso, crea un entorno de Cloud Composer 2. Puedes empezar con un ajuste predefinido del entorno que se adapte a las demandas de recursos previstas y, más adelante, escalar y optimizar aún más tu entorno.

Consola

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

También puede anular las configuraciones de Airflow y las variables de entorno 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 en la configuración.

gcloud

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

También puede anular las configuraciones de Airflow y las variables de entorno 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 en la 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 de 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.13.9-airflow-2.10.5"
      # ...
    }
    
  5. Si aún no lo has hecho, especifica las anulaciones de configuración y las variables de entorno.

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

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

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

Una vez que se haya creado tu entorno de Cloud Composer 2, instala paquetes PyPI personalizados en él.

Consola

  1. Ve a la página Entornos de 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 de los paquetes de PyPI de tu entorno de Cloud Composer 1. Haz clic en Guardar y espera a que se actualice el entorno.

gcloud

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

      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
    

    Sustituye:

    • COMPOSER_2_ENV con 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.

Terraform

Saltar este paso Ya has instalado paquetes PyPI personalizados al crear el entorno.

Paso 6: Transfiere variables y grupos

Airflow permite exportar variables y grupos a archivos JSON. A continuación, 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 de los trabajadores de Airflow. Para subir o descargar los archivos, usa la carpeta /data del segmento de Cloud Storage de tu entorno. Esta carpeta se sincroniza con el directorio /home/airflow/gcs/data/ de 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 las variables de 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
    

    Sustituye:

    • COMPOSER_1_ENV con el nombre de tu entorno de Cloud Composer 1.
    • COMPOSER_1_LOCATION con la región en la que se encuentra el entorno de Cloud Composer 1.
  2. Exporta los grupos de 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
    

    Sustituye:

    • COMPOSER_1_ENV con el nombre de tu entorno de Cloud Composer 1.
    • COMPOSER_1_LOCATION con la región en la que se encuentra el entorno de Cloud Composer 1.
  3. Obtén el URI del segmento 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)"
      

      Sustituye:

      • COMPOSER_2_ENV con 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, elimina 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 por 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
    

    Sustituye:

    • COMPOSER_2_BUCKET con el URI del segmento de tu entorno de Cloud Composer 2, que has obtenido en el paso anterior.
    • COMPOSER_1_ENV con el nombre de tu entorno de Cloud Composer 1.
    • COMPOSER_1_LOCATION con 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. Comprueba que se hayan importado 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. Elimina los archivos JSON de los contenedores:

    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 del segmento de tu entorno de Cloud Composer 1

Transfiere los complementos y otros datos del segmento de tu entorno de Cloud Composer 1.

gcloud

  1. Transfiere los plugins a tu entorno de Cloud Composer 2. Para ello, exporta los complementos del segmento de tu entorno de Cloud Composer 1 a la carpeta /plugins del segmento de tu 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. Comprueba que la carpeta /plugins se ha importado correctamente:

    gcloud composer environments storage plugins list \
        --environment=COMPOSER_2_ENV \
        --location=COMPOSER_2_LOCATION
    
  3. Exporta la carpeta /data de tu 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. Comprueba que la carpeta /data se ha importado correctamente:

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

Paso 8: Transfiere las conexiones

Airflow 1.10.15 no admite la exportación de conexiones. Para transferir conexiones, crea manualmente las conexiones en tu entorno de Cloud Composer 2 desde el entorno de Cloud Composer 1.

gcloud

  1. Para obtener una lista de las conexiones de 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 en tu entorno de Cloud Composer 2, ejecuta el comando de la CLI de Airflow connections 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 cuentas de usuario

En este paso se explica cómo transferir usuarios creándolos manualmente.

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

Interfaz de usuario de Airflow

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

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

    2. Vaya a Administrar > Usuarios.

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

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

    2. Ve a Seguridad > Lista de usuarios.

    3. Haz clic en Add a new record (Añadir un registro nuevo).

gcloud

  1. No se puede ver una lista de usuarios a través de gcloud en Airflow 1. Usa la interfaz de usuario de Airflow.

  2. Para crear una cuenta de usuario en tu entorno de Cloud Composer 2, ejecuta el comando de la CLI de Airflow users create a través de 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
    

    Sustituye:

    • COMPOSER_2_ENV con 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 de usuario con sus valores de tu entorno de Cloud Composer 1, incluido el rol del usuario.

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

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

  1. Tus DAGs se ejecutan correctamente y no hay problemas de compatibilidad.

  2. Tus DAGs usan instrucciones de importación correctas.

    Por ejemplo, la nueva instrucción de importación de BigQueryCreateDataTransferOperator puede tener el siguiente aspecto:

    from airflow.providers.google.cloud.operators.bigquery_dts \
        import BigQueryCreateDataTransferOperator
    
  3. Tus DAGs se han actualizado para Airflow 2. Este cambio es compatible con Airflow 1.10.14 y versiones posteriores.

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

Pueden surgir los siguientes problemas al transferir DAGs entre entornos:

  • Si un DAG está habilitado (no en pausa) en ambos entornos, cada entorno ejecuta su propia copia del DAG según la programación. Esto puede provocar que se dupliquen las ejecuciones de DAG para los mismos datos y el mismo tiempo de ejecución.

  • Debido a la puesta al día de DAGs, Airflow programa ejecuciones de DAGs adicionales, empezando por la fecha de inicio especificada en tus DAGs. Esto ocurre porque la nueva instancia de Airflow no tiene en cuenta el historial de ejecuciones de DAG del entorno de Cloud Composer 1. Esto puede provocar que se programen muchas ejecuciones de DAG a partir de la fecha de inicio especificada.

Evitar ejecuciones de DAG duplicadas

En tu entorno de Cloud Composer 2, añade una anulación de la opción de configuración de Airflow para la opción dags_are_paused_at_creation. Después de hacer este cambio, todos los DAGs nuevos se pausarán de forma predeterminada.

Sección Clave Valor
core dags_are_paused_at_creation True

Evitar ejecuciones de DAGs adicionales o que falten

Para evitar que haya huecos y solapamientos en las fechas de ejecución, inhabilita la opción de puesta al día en Cloud Composer 2. De esta forma, después de subir los DAGs a tu entorno de Cloud Composer 2, Airflow no programa ejecuciones de DAGs que ya se hayan ejecutado en el entorno de Cloud Composer 1. Añade una anulación de 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 DAGs al entorno de Cloud Composer 2

Para transferir tus DAGs 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. Saltar el airflow_monitoring.py DAG.

  2. Los DAGs se han pausado en el entorno de Cloud Composer 2 debido a la anulación de la configuración, por lo que no se ha programado ninguna ejecución de DAG.

  3. En la interfaz web de Airflow, ve a DAGs y comprueba si hay errores de sintaxis de DAG.

  4. En el momento en que tengas previsto transferir el DAG:

    1. Pausa los DAGs de tu entorno de Cloud Composer 1.

    2. Reanuda los DAGs de tu entorno de Cloud Composer 2.

    3. Comprueba que las nuevas ejecuciones del DAG se hayan programado a la hora correcta.

    4. Espera a que se ejecuten los DAGs en el entorno de Cloud Composer 2 y comprueba si se han completado correctamente. Si una ejecución de un DAG se ha completado correctamente, no la reanudes en el entorno de Cloud Composer 1. Si lo haces, se producirá una ejecución del DAG a la misma hora y fecha en tu entorno de Cloud Composer 1.

  5. Si falla la ejecución de un DAG específico, intenta solucionar los problemas del DAG hasta que se ejecute correctamente en Cloud Composer 2.

    Si es necesario, siempre puedes volver a la versión de Cloud Composer 1 del DAG y ejecutar las ejecuciones de DAG que hayan fallado 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. De esta forma, se programan ejecuciones de DAGs para el periodo en el que el DAG estuvo en pausa en el entorno de Cloud Composer 1.

Paso 12: Monitoriza tu entorno de Cloud Composer 2

Después de transferir todos los DAGs y la configuración al entorno de Cloud Composer 2, monitorízalo para detectar posibles problemas, ejecuciones de DAGs fallidas y el estado general del entorno. Si el entorno de Cloud Composer 2 funciona sin problemas durante un periodo suficiente, puedes eliminar el entorno de Cloud Composer 1.

Siguientes pasos