Migrer des environnements vers Cloud Composer 2 (depuis Airflow 1)

Cloud Composer 1 | Cloud Composer 2

Cette page explique comment transférer des DAG, des données et une configuration de vos environnements Cloud Composer 1, Airflow 1 existants vers Cloud Composer 2, Airflow 2.

Autres guides de migration

Du Au Méthode Guide
Cloud Composer 1, Airflow 2 Cloud Composer 2, Airflow 2 Côte à côte, à l'aide d'instantanés Guide de migration (instantanés)
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 Côte à côte, à l'aide d'instantanés Guide de migration (instantanés)
Cloud Composer 1, Airflow 2 Cloud Composer 2, Airflow 2 Correspondances manuelles et côte à côte Guide de migration manuelle
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 Correspondances manuelles et côte à côte Ce guide (migration manuelle)
Airflow 1 Airflow 2 Correspondances manuelles et côte à côte Guide de migration manuelle

Avant de commencer

  • Comme Cloud Composer 2 utilise Airflow 2, la migration inclut le basculement de vos DAG et de la configuration de l'environnement vers Airflow 2. Consultez le guide de migration d'Airflow 1 vers Airflow 2 pour en savoir plus sur les modifications destructives entre Airflow 1 et Airflow 2 dans Cloud Composer.

  • Dans ce guide, vous combinez la migration vers Airflow 2 et la migration vers Cloud Composer 2 dans une même procédure de migration. De cette manière, vous n'avez pas besoin de migrer vers un environnement Cloud Composer 1 avec Airflow 2 avant de migrer vers Cloud Composer 2.

Étape 1 : Passer à Airflow 1.10.15

Si votre environnement utilise une version d'Airflow antérieure à la version 1.10.15, mettez-le à niveau vers une version Cloud Composer qui utilise Airflow 1.10.15.

Étape 2 : Vérifier la compatibilité avec Airflow 2

Pour vérifier les conflits potentiels avec Airflow 2, utilisez les scripts de vérification de mise à jour fournis par Airflow dans votre environnement Airflow 1.10.15 existant.

gcloud

  1. Exécutez les vérifications de mise à niveau via la commande gcloud composer environments run. Certaines vérifications de mise à niveau pertinentes pour la version Airflow 1.10.15 autonome ne sont pas pertinentes pour Cloud Composer. La commande suivante exclut ces vérifications.

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

    Remplacez :

    • COMPOSER_1_ENV par le nom de votre environnement Airflow 1.10.15.
    • COMPOSER_1_LOCATION par la région dans laquelle se trouve l'environnement.
  2. Vérifiez le résultat de la commande. Les scripts de vérification des mises à jour signalent des problèmes potentiels de compatibilité dans les environnements existants.

  3. Apportez d'autres modifications aux DAG, comme décrit dans la section sur la mise à jour des DAG du guide de mise à niveau vers Airflow 2.0 et versions ultérieures.

Étape 3 : Obtenir la liste des remplacements de configuration, des packages PyPI personnalisés et des variables d'environnement

Console

Obtenez la liste des remplacements de configuration de votre environnement Cloud Composer 1, des packages PyPI personnalisés et des variables d'environnement :

  1. Accédez à la page Environnements dans la console Google Cloud:

    Accéder à la page Environnements

  2. Sélectionnez votre environnement Cloud Composer 1.

  3. Affichez les variables d'environnement dans l'onglet Variables d'environnement.

  4. Affichez les remplacements de configuration dans les onglets Remplacements de configuration Airflow.

  5. Affichez les packages PyPI personnalisés dans l'onglet Packages PyPI.

gcloud

Pour obtenir la liste des variables d'environnement, exécutez la commande suivante :

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

Pour obtenir la liste des remplacements de configuration Airflow de l'environnement, exécutez la commande suivante :

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

Pour obtenir la liste des packages PyPI personnalisés, exécutez la commande suivante :

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

Remplacez :

  • COMPOSER_1_ENV par le nom de votre environnement Cloud Composer 1.
  • COMPOSER_1_LOCATION par la région où se trouve l'environnement Cloud Composer 1.

Terraform

Ignorez cette étape. La configuration de votre environnement Cloud Composer 1 répertorie déjà les remplacements de configuration, les packages PyPI personnalisés et les variables d'environnement de votre environnement.

Étape 4 : Créer un environnement Cloud Composer 2

Lors de cette étape, créez un environnement Cloud Composer 2. Vous pouvez commencer par un environnement prédéfini correspondant aux besoins de ressources prévus, puis procéder au scaling et à l'optimisation supplémentaires de votre environnement.

Console

Créez un environnement Cloud Composer 2 et spécifiez des remplacements de configuration et des variables d'environnement.

Vous pouvez également remplacer les configurations Airflow et les variables d'environnement après avoir créé un environnement.

Certaines options de configuration d'Airflow 1 utilisent un nom et une section différents dans Airflow 2. Pour en savoir plus, consultez la section Modifications de configuration.

gcloud

Créez un environnement Cloud Composer 2 et spécifiez des remplacements de configuration et des variables d'environnement.

Vous pouvez également remplacer les configurations Airflow et les variables d'environnement après avoir créé un environnement.

Certaines options de configuration d'Airflow 1 utilisent un nom et une section différents dans Airflow 2. Pour en savoir plus, consultez la section Modifications de configuration.

Terraform

Créez un environnement Cloud Composer 2 basé sur la configuration de l'environnement Cloud Composer 1 :

  1. Copiez la configuration de votre environnement Cloud Composer 1.
  2. Modifiez le nom de votre environnement.
  3. Utilisez le fournisseur google-beta :

    resource "google_composer_environment" "example_environment_composer_2" {
      provider = google-beta
      # ...
    }
    
  4. Spécifiez une image Cloud Composer 2 dans le bloc config.software_config :

    software_config {
      image_version = "composer-2.6.6-airflow-2.6.3"
      # ...
    }
    
  5. Si ce n'est pas déjà fait, spécifiez des remplacements de configuration et des variables d'environnement.

  6. Spécifiez les packages PyPI personnalisés dans le bloc config.software_config.pypi_packages :

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

Étape 5 : Installer des packages PyPI dans l'environnement Cloud Composer 2

Une fois l'environnement Cloud Composer 2 créé, installez vos packages PyPI personnalisés dans l'environnement.

Console

  1. Accédez à la page Environnements dans la console Google Cloud:

    Accéder à la page Environnements

  2. Sélectionnez votre environnement Cloud Composer 2.

  3. Accédez à l'onglet Packages PyPI, puis cliquez sur Modifier.

  4. Copiez les exigences de package PyPI à partir de votre environnement Cloud Composer 1. Cliquez sur Enregistrer et attendez la mise à jour de l'environnement.

gcloud

  1. Créez un fichier requirements.txt contenant la liste des packages PyPI personnalisés :

      numpy
      scipy>=1.1.0
    
  2. Mettez à jour votre environnement et transmettez le fichier requirements.txt à la commande --update-pypi-packages-from-file :

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

    Remplacez :

    • COMPOSER_2_ENV par le nom de votre environnement Cloud Composer 2.
    • COMPOSER_2_LOCATION par la région où se trouve l'environnement Cloud Composer 2.

Terraform

Ignorez cette étape. Vous avez déjà installé les packages PyPI personnalisés lors de la création de l'environnement.

Étape 6 : Transférer les variables et les pools

Airflow est compatible avec l'exportation de variables et de pools vers des fichiers JSON. Vous pouvez ensuite importer ces fichiers dans votre environnement Cloud Composer 2.

Les commandes de CLI Airflow utilisées à cette étape fonctionnent sur des fichiers locaux dans les nœuds de calcul Airflow. Pour importer ou télécharger les fichiers, utilisez le dossier /data dans le bucket Cloud Storage de votre environnement. Ce dossier est synchronisé avec le répertoire /home/airflow/gcs/data/ dans les nœuds de calcul Airflow. Dans les commandes de la CLI Airflow, spécifiez /home/airflow/gcs/data/ dans le paramètre FILEPATH.

gcloud

  1. Exportez des variables depuis votre environnement Cloud Composer 1 :

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

    Remplacez :

    • COMPOSER_1_ENV par le nom de votre environnement Cloud Composer 1.
    • COMPOSER_1_LOCATION par la région où se trouve l'environnement Cloud Composer 1.
  2. Exportez des pools à partir de votre environnement Cloud Composer 1 :

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

    Remplacez :

    • COMPOSER_1_ENV par le nom de votre environnement Cloud Composer 1.
    • COMPOSER_1_LOCATION par la région où se trouve l'environnement Cloud Composer 1.
  3. Obtenez l'URI du bucket de votre environnement Cloud Composer 2.

    1. Exécutez la commande ci-dessous.

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

      Remplacez :

      • COMPOSER_2_ENV par le nom de votre environnement Cloud Composer 2.
      • COMPOSER_2_LOCATION par la région dans laquelle se trouve l'environnement.
    2. Dans le résultat, supprimez le dossier /dags. Le résultat correspond à l'URI du bucket de votre environnement Cloud Composer 2.

      Par exemple, remplacez gs://us-central1-example-916807e1-bucket/dags par gs://us-central1-example-916807e1-bucket.

  4. Transférez des fichiers JSON avec des variables et des pools vers votre environnement 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
    

    Remplacez :

    • COMPOSER_2_BUCKET par l'URI de votre bucket d'environnement Cloud Composer 2, obtenu à l'étape précédente.
    • COMPOSER_1_ENV par le nom de votre environnement Cloud Composer 1.
    • COMPOSER_1_LOCATION par la région où se trouve l'environnement Cloud Composer 1.
  5. Importez des variables et des pools dans 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. Vérifiez que les variables et les pools sont importés :

    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. Supprimez les fichiers JSON des 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
    

Étape 7 : Transférer d'autres données du bucket de votre environnement Cloud Composer 1

Transférez les plug-ins et autres données à partir du bucket de votre environnement Cloud Composer 1.

gcloud

  1. Transférez les plug-ins vers votre environnement Cloud Composer 2. Pour ce faire, exportez les plug-ins du bucket de votre environnement Cloud Composer 1 vers le dossier /plugins du bucket de votre environnement Cloud Composer 2 :

    gcloud composer environments storage plugins export \
        --destination=COMPOSER_2_BUCKET/plugins \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION
    
  2. Vérifiez que le dossier /plugins a bien été importé :

    gcloud composer environments storage plugins list \
        --environment=COMPOSER_2_ENV \
        --location=COMPOSER_2_LOCATION
    
  3. Exportez le dossier /data de votre environnement Cloud Composer 1 vers l'environnement Airflow 2 :

    gcloud composer environments storage data export \
        --destination=COMPOSER_2_BUCKET/data \
        --environment=COMPOSER_1_ENV \
        --location=COMPOSER_1_LOCATION
    
  4. Vérifiez que le dossier /data a bien été importé :

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

Étape 8 : Transférer les connexions

Airflow 1.10.15 n'est pas compatible avec l'exportation de connexions. Pour transférer des connexions, créez manuellement des connexions dans votre environnement Cloud Composer 2 à partir de l'environnement Cloud Composer 1.

gcloud

  1. Pour obtenir la liste des connexions dans votre environnement Cloud Composer 1, exécutez :

    gcloud composer environments run COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
         connections -- --list
    
  2. Pour créer une connexion dans votre environnement Cloud Composer 2, exécutez la commande CLI Airflow connections via gcloud. Exemple :

    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
    

Étape 9 : Transférer les comptes utilisateur

Cette étape explique comment transférer des utilisateurs en les créant manuellement.

Airflow 1.10.15 ne permet pas d'exporter des utilisateurs. Pour transférer des utilisateurs et des connexions, créez manuellement des comptes utilisateur dans votre environnement Airflow 2 à partir de l'environnement Cloud Composer 1.

Interface utilisateur d'Airflow

  1. Pour afficher la liste des utilisateurs dans votre environnement Cloud Composer 1, procédez comme suit :

    1. Ouvrez l'interface Web Airflow pour votre environnement Cloud Composer 1.

    2. Accédez à Admin > Utilisateurs.

  2. Pour créer un utilisateur dans votre environnement Cloud Composer 2, procédez comme suit :

    1. Ouvrez l'interface Web Airflow pour votre environnement Cloud Composer 2.

    2. Accédez à Sécurité > Répertorier les utilisateurs.

    3. Cliquez sur Ajouter un enregistrement.

gcloud

  1. Il n'est pas possible d'afficher la liste des utilisateurs via gcloud dans Airflow 1. Veuillez utiliser l'interface utilisateur d'Airflow.

  2. Pour créer un compte utilisateur dans votre environnement Cloud Composer 2, exécutez la commande CLI Airflow users create via gcloud. Exemple :

    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
    

    Remplacez :

    • COMPOSER_2_ENV par le nom de votre environnement Cloud Composer 2.
    • COMPOSER_2_LOCATION par la région où se trouve l'environnement Cloud Composer 2.
    • Tous les paramètres de configuration utilisateur avec leurs valeurs de votre environnement Cloud Composer 1, y compris le rôle de l'utilisateur.

Étape 10 : Assurez-vous que vos DAG sont prêts pour Airflow 2

Avant de transférer des DAG vers votre environnement Cloud Composer 1, assurez-vous que les conditions suivantes sont remplies :

  1. Les scripts de vérification de mise à jour de vos DAG s'exécutent correctement et il n'y a plus de problèmes de compatibilité.

  2. Vos DAG utilisent des instructions d'importation correctes.

    Par exemple, la nouvelle instruction d'importation pour BigQueryCreateDataTransferOperator peut se présenter comme suit :

    from airflow.providers.google.cloud.operators.bigquery_dts \
        import BigQueryCreateDataTransferOperator
    
  3. Vos DAG sont mis à jour pour Airflow 2. Cette modification est compatible avec Airflow 1.10.14 et versions ultérieures.

Étape 11 : Transférer les DAG vers l'environnement Cloud Composer 2

Les problèmes potentiels suivants peuvent se produire lorsque vous transférez des DAG entre les environnements :

  • Si un DAG est activé (non suspendu) dans les deux environnements, chaque environnement exécute sa propre copie du DAG, comme prévu. Cela peut entraîner des exécutions DAG en double pour les mêmes données et le même temps d'exécution.

  • En raison du rattrapement du DAG, Airflow planifie des exécutions DAG supplémentaires, à compter de la date de début spécifiée dans vos DAG. En effet, la nouvelle instance Airflow ne prend pas en compte l'historique des exécutions de DAG à partir de l'environnement Cloud Composer 1. Cela peut entraîner un grand nombre d'exécutions DAG planifiées à compter de la date de début spécifiée.

Empêcher les exécutions de DAG en doublon

Dans votre environnement Cloud Composer 2, dans votre environnement Airflow 2, ajoutez un remplacement d'option de configuration Airflow pour l'option dags_are_paused_at_creation. Une fois la modification effectuée, tous les nouveaux DAG sont mis en pause par défaut.

Section Clé Valeur
core dags_are_paused_at_creation True

Empêcher les exécutions supplémentaires ou manquantes des DAG

Pour éviter les écarts et les chevauchements de dates d'exécution, désactivez le rattrapage dans Cloud Composer 2. De cette manière, après avoir importé des DAG dans votre environnement Cloud Composer 2, Airflow ne replanifie pas les exécutions de DAG déjà exécutées dans l'environnement Cloud Composer 1. Ajoutez un remplacement d'option de configuration Airflow pour l'option catchup_by_default :

Section Clé Valeur
scheduler catchup_by_default False

Transférer vos DAG vers l'environnement Cloud Composer 2

Pour transférer vos DAG vers l'environnement Cloud Composer 2, procédez comme suit :

  1. Importez le DAG de l'environnement Cloud Composer 1 dans l'environnement Cloud Composer 2. Ignorez le DAG airflow_monitoring.py.

  2. Les DAG sont mis en pause dans l'environnement Cloud Composer 2 en raison du remplacement de configuration. Par conséquent, aucune exécution de DAG n'est programmée.

  3. Dans l'interface Web Airflow, accédez aux DAG et recherchez les erreurs de syntaxe des DAG signalés.

  4. Au moment où vous prévoyez de transférer le DAG :

    1. Suspendez les DAG dans votre environnement Cloud Composer 1.

    2. Réactivez les DAG dans votre environnement Cloud Composer 2.

    3. Vérifiez que les nouvelles exécutions du DAG sont programmées aux bons horaires.

    4. Attendez que les exécutions du DAG se produisent dans l'environnement Cloud Composer 2 et vérifiez si elles ont réussi. Si l'exécution du DAG a réussi, ne la réactivez pas dans l'environnement Cloud Composer 1. Si vous le faites, un DAG s'exécutera à la même heure et à la même date dans votre environnement Cloud Composer 1.

  5. Si une exécution de DAG spécifique échoue, essayez de résoudre les problèmes liés au DAG jusqu'à ce que le DAG s'exécute avec succès dans Cloud Composer 2.

    Si nécessaire, vous pouvez toujours revenir à la version Cloud Composer 1 du DAG et exécuter des exécutions DAG ayant échoué dans Cloud Composer 2 à partir de votre environnement Cloud Composer 1 :

    1. Suspendez le DAG dans votre environnement Cloud Composer 2.

    2. Relancez le DAG dans votre environnement Cloud Composer 1. Cela permet de planifier les exécutions de DAG pendant l'interruption de DAG dans l'environnement Cloud Composer 1.

Étape 12 : Surveiller votre environnement Cloud Composer 2

Une fois que vous avez transféré tous les DAG et la configuration vers l'environnement Cloud Composer 2, surveillez-les pour détecter les problèmes potentiels, les exécutions de DAG ayant échoué et l'état général de l'environnement. Si l'environnement Cloud Composer 2 s'exécute sans problème pendant une période suffisante, envisagez de supprimer l'environnement Cloud Composer 1.

Étapes suivantes