Migrer des environnements vers Cloud Composer 2 (à partir d'Airflow 2)

Cloud Composer 1 | Cloud Composer 2

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

Autres guides de migration

De À 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 Ce guide (migration manuelle)
Cloud Composer 1, Airflow 1 Cloud Composer 2, Airflow 2 Correspondances manuelles et côte à côte Guide de migration manuelle
Airflow 1 Airflow 2 Correspondances manuelles et côte à côte Guide de migration manuelle

Avant de commencer

Étape 1 : 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 2 : 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.

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.

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.8.0-airflow-2.7.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 3 : 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 4 : 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 export -- /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 \
         pools export -- /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 5 : 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 6 : Transférer les connexions

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

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 7 : Transférer les comptes utilisateur

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

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 à Sécurité > Répertorier les 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. Pour afficher la liste des utilisateurs dans votre environnement Cloud Composer 1, exécutez la commande CLI Airflow users list via gcloud :

    gcloud composer environments run \
        COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
        users list
    

    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. Pour créer un compte utilisateur dans votre environnement Cloud Composer 2, exécutez la commande users create de la CLI Airflow 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.

Autre moyen de transférer des comptes utilisateur

Vous pouvez également utiliser les commandes de CLI Airflow users export et users import.

  1. Exportez les comptes utilisateur vers un fichier dans le dossier /data du bucket de votre environnement :

    gcloud composer environments run \
        COMPOSER_1_ENV \
        --location COMPOSER_1_LOCATION \
        users export -- /home/airflow/gcs/data/users.json
    
  2. Exportez ce fichier vers le bucket de 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=users.json
    
  3. Importez les comptes utilisateur de ce fichier dans votre environnement Cloud Composer 2 :

    gcloud composer environments run \
        COMPOSER_2_ENV \
        --location COMPOSER_2_LOCATION \
        users import \
        -- /home/airflow/gcs/data/users.json
    
  4. Supprimez les fichiers JSON dans les deux environnements :

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

Remplacez :

  • COMPOSER_1_ENV par le nom de votre environnement Cloud Composer 1.
  • COMPOSER_2_ENV par le nom de votre environnement Cloud Composer 2.
  • COMPOSER_1_LOCATION par la région où se trouve l'environnement Cloud Composer 1.
  • COMPOSER_2_LOCATION par la région où se trouve l'environnement Cloud Composer 2.
  • COMPOSER_2_BUCKET par l'URI de votre bucket d'environnement Cloud Composer 2, obtenu à l'étape précédente.

Étape 8 : 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 9 : 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