Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3
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 | Transfert manuel côte à côte | Ce guide (migration manuelle) |
Cloud Composer 1, Airflow 1 | Cloud Composer 2, Airflow 2 | Transfert manuel côte à côte | Guide de 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.
É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 :
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 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 :
- 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 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
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ù 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
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.
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.
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 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
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 6 : Transférer les connexions
Cette étape explique comment transférer des connexions en les créant manuellement.
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 7 : Transférer les comptes utilisateur
Cette étape explique comment transférer des utilisateurs en les créant manuellement.
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 à Sécurité > Répertorier les 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
-
Pour afficher la liste des utilisateurs dans votre environnement Cloud Composer 1, exécutez la commande CLI Airflow
users list
viagcloud
: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.
Pour créer un compte utilisateur dans votre environnement Cloud Composer 2, exécutez la commande CLI Airflow
users create
viagcloud
. 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
.
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
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
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
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 :
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 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.
É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