Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
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
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 | Transfert manuel côte à côte | Guide de migration manuelle |
Cloud Composer 1, Airflow 1 | Cloud Composer 2, Airflow 2 | Transfert manuel côte à côte | Ce guide (migration manuelle) |
Airflow 1 | Airflow 2 | Transfert manuel côte à côte | Guide de migration manuelle |
Avant de commencer
- Cloud Composer prend en charge la migration côte à côte de Cloud Composer 1 vers Cloud Composer 2. Il n'est pas possible de passer de Cloud Composer 1 à Cloud Composer 2 en place.
- Consultez la liste des différences entre Cloud Composer 1 et Cloud Composer 2.
Comme Cloud Composer 2 utilise Airflow 2, la migration inclut le passage de la configuration des DAG et de l'environnement à Airflow 2. Chèque le guide de migration d'Airflow 1 vers Airflow 2 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 seule procédure de migration. Ainsi, vous n'avez pas besoin de migrer vers un environnement Cloud Composer 1 avec Airflow 2 avant migrer vers Cloud Composer 2.
Étape 1 : Passer à Airflow 1.10.15
Si votre environnement utilise une version d'Airflow antérieure à 1.10.15, mettez à niveau votre environnement vers une version Cloud Composer utilisant Airflow 1.10.15.
Étape 2 : Vérifier la compatibilité avec Airflow 2
Pour vérifier les conflits potentiels avec Airflow 2, consultez la section sur la mise à jour des DAG du guide de mise à niveau vers Airflow 2.0 et versions ultérieures.
Un problème courant que vous pouvez rencontrer est lié aux chemins d'importation incompatibles. Pour en savoir plus sur la résolution de ce problème de compatibilité, consultez la guide de mise à niveau vers Airflow 2.0 ou version ultérieure, consultez la section concernant les fournisseurs de rétroportage.
É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 :
Accédez à la page Environnements dans la console Google Cloud :
Sélectionnez votre environnement Cloud Composer 1.
Affichez les variables d'environnement dans l'onglet Variables d'environnement.
Affichez les remplacements de configuration dans les onglets Remplacements de configuration Airflow.
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 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 :
- Copiez la configuration de votre environnement Cloud Composer 1.
- Modifiez le nom de votre environnement.
Utilisez le fournisseur
google-beta
:resource "google_composer_environment" "example_environment_composer_2" { provider = google-beta # ... }
Spécifiez une image Cloud Composer 2 dans le bloc
config.software_config
:software_config { image_version = "composer-2.9.7-airflow-2.9.3" # ... }
Si ce n'est pas déjà fait, spécifiez des remplacements de configuration et des variables d'environnement.
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
Accédez à la page Environnements dans la console Google Cloud :
Sélectionnez votre environnement Cloud Composer 2.
Accédez à l'onglet Packages PyPI, puis cliquez sur Modifier.
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
Créez un fichier
requirements.txt
contenant la liste des packages PyPI personnalisés :numpy scipy>=1.1.0
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
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.
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.
Obtenez l'URI du bucket de votre environnement Cloud Composer 2.
Exécutez la commande suivante :
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.
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
pargs://us-central1-example-916807e1-bucket
.
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.
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
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
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
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
Vérifiez que le dossier
/plugins
a bien été importé :gcloud composer environments storage plugins list \ --environment=COMPOSER_2_ENV \ --location=COMPOSER_2_LOCATION
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
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 ne permet pas d'exporter des connexions. Pour transférer des connexions : créer manuellement des connexions dans votre environnement Cloud Composer 2 à partir du Cloud Composer 1.
gcloud
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
Pour créer une connexion dans votre environnement Cloud Composer 2, exécutez la commande CLI Airflow
connections
viagcloud
. 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 n'est pas compatible avec l'exportation d'utilisateurs. Pour transférer les utilisateurs les connexions, créer manuellement des comptes utilisateur dans votre environnement Airflow 2 depuis l'environnement Cloud Composer 1.
Interface utilisateur d'Airflow
Pour afficher la liste des utilisateurs dans votre environnement Cloud Composer 1, procédez comme suit :
Ouvrez l'interface Web Airflow pour votre environnement Cloud Composer 1.
Accédez à Admin > Utilisateurs.
Pour créer un utilisateur dans votre environnement Cloud Composer 2, procédez comme suit :
Ouvrez l'interface Web Airflow pour votre environnement Cloud Composer 2.
Accédez à Sécurité > Répertorier les utilisateurs.
Cliquez sur Ajouter un enregistrement.
gcloud
-
Il n'est pas possible d'afficher la liste des utilisateurs via
gcloud
dans Airflow 1. Veuillez utiliser l'interface utilisateur d'Airflow. Pour créer un compte utilisateur dans votre environnement Cloud Composer 2, exécutez la Commande
users create
de la CLI Airflow à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 :
Vos DAG s'exécutent correctement et il ne reste aucun problème de compatibilité.
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
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 :
Importez le DAG de l'environnement Cloud Composer 1 dans l'environnement Cloud Composer 2. Ignorez le DAG
airflow_monitoring.py
.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.
Dans l'interface Web Airflow, accédez aux DAG et recherchez les erreurs de syntaxe des DAG signalés.
Au moment où vous prévoyez de transférer le DAG :
Suspendez les DAG dans votre environnement Cloud Composer 1.
Réactivez les DAG dans votre environnement Cloud Composer 2.
Vérifiez que les nouvelles exécutions du DAG sont programmées aux bons horaires.
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.
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 :
Suspendez le DAG dans votre environnement Cloud Composer 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.
Étape suivante
- Découvrez comment résoudre les problèmes liés aux DAG.
- Résoudre les problèmes de création d'environnement
- Résoudre les problèmes liés aux mises à jour de l'environnement
- Utiliser des packages de rétroportage