Enregistrer et charger des instantanés d'environnement

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

Cette page explique comment enregistrer et charger l'état de votre environnement à l'aide de instantanés d'environnement.

Vous pouvez configurer votre environnement pour enregistrer automatiquement les instantanés. Pour plus plus d'informations, consultez Configurer des instantanés programmés.

À propos des instantanés d'environnement

Les instantanés d'environnement stockent l'état de votre environnement. Vous pouvez enregistrer et des instantanés d'environnement à la demande.

Vous pouvez utiliser des instantanés pour:

  • Restaurez un état antérieur de votre environnement. Créez des sauvegardes de votre à l'aide d'instantanés, puis chargez l'un d'entre eux pour restaurer votre environnement. Par exemple, vous pouvez effectuer le rollback d'une opération de mise à jour installe les packages PyPI ou remplace les options de configuration Airflow, une fois votre environnement mis à jour.

  • Effectuez des mises à niveau et des environnements de copie côte à côte. Créer un instantané d'un à un environnement existant, créez-en un qui utilise le même de Cloud Composer, puis appliquez l'instantané à ce nouveau environnement. Cette procédure est similaire à en cours de migration. Veillez à mettre en veille les DAG avant vous créez l'instantané, pour éviter les exécutions de DAG en double.

Comment les instantanés sont-ils stockés ?

Un instantané d'environnement est un ensemble de fichiers décrivant l'état de votre et de stocker la sauvegarde des données d'environnement.

Vous pouvez créer plusieurs instantanés de votre environnement. Instantanés d'environnement ne sont pas incrémentielles. Vous pouvez utiliser n'importe quel instantané indépendamment des autres instantanés.

Cloud Composer ne supprime pas les instantanés lorsque vous supprimez vos environnement.

Par défaut, Cloud Composer stocke les instantanés dans le snapshots/ dans le bucket de votre environnement. Vous pouvez également spécifier un emplacement personnalisé lorsque vous créez un instantané.

Alors que l'UI de Cloud Storage affiche les données sous forme de dossiers pour plus de commodité, fonctionnent dans une structure de fichier plat. Cela ne change pas votre façon de travailler sur l'enregistrement des instantanés dans la console Google Cloud. Gardez cela à l'esprit effectuer des opérations directement sur les fichiers de votre bucket. Pour plus d'informations, Voir la section Espace de noms des objets.

Remarques concernant la sécurité des instantanés

Pour réduire ce risque de sécurité, vous pouvez stocker des informations sensibles utilisées par les DAG Airflow, tels que les clés ou les mots de passe, Secret Manager. Pour en savoir plus, consultez Configurez Secret Manager pour votre environnement.

Vérifiez les autorisations de sécurité pour le bucket de votre environnement. Si vous les instantanés d'environnement dans un bucket personnalisé, vérifiez que autorisations d'accès correspondantes sont correctement configurées dans votre projet. Lorsque vous attribuez des autorisations, assurez-vous que le service dispose des autorisations nécessaires pour enregistrer et charger des instantanés à partir du bucket.

Données enregistrées dans les instantanés

Cloud Composer enregistre les données suivantes dans des instantanés:

  • Remplacements de configuration Airflow.
  • Variables d'environnement
  • Liste des packages PyPI personnalisés, selon les exigences.
  • Une sauvegarde de la base de données Airflow, y compris les états des tâches exécutées et le DAG des exécutions.
  • Une sauvegarde des dossiers /dags, /data et /plugins à partir de bucket de l'environnement.
  • Clé Fernet de l'environnement.
  • D'autres informations sur la configuration de l'environnement, telles que l'échelle et les paramètres de performances de l'environnement. Cloud Composer n'utilise pas ces informations lors du chargement instantanés.

Quelles données sont chargées à partir des instantanés

Cloud Composer charge les données suivantes à partir des instantanés:

  • Remplacements de configuration Airflow.
  • Variables d'environnement.
  • Packages PyPI personnalisés (sauf si vous choisissez de ne pas les installer).

  • Le contenu de la base de données Airflow, y compris les états des tâches exécutées Historique des exécutions du DAG.

  • Contenu des dossiers /dags, /data et /plugins de l'instantané sont chargées dans le bucket de l'environnement.

  • La clé Fernet de l'instantané permet de rechiffrer les données avec la clé fernet de l'environnement. La clé fernet du reste inchangé.

Même si Cloud Composer stocke certaines informations dans les instantanés, il n'est pas utilisé lors du chargement instantanés. Les paramètres suivants de votre environnement ne changent pas lorsque vous charger un instantané:

  • Configuration de l'environnement (par exemple, scaling et performances de l'environnement) paramètres.
  • Configuration réseau de l'environnement.
  • Contenu du bucket de l'environnement en dehors de /dags, /data et /plugins dossiers.
  • Étiquettes d'environnement.

Tous les paramètres que vous avez appliqués à l'infrastructure Cloud Composer sans utiliser l'API Cloud Composer peut être perdu lors du chargement d'un un instantané.

À propos des opérations partiellement terminées

Lorsque vous chargez un instantané, l'opération peut être réussie, échouée ou partiellement terminé:

  • Les opérations réussies chargent toutes les données de l'instantané.
  • Les opérations ayant échoué n'apportent aucune modification.
  • Les opérations partiellement terminées chargent un sous-ensemble de données à partir de l'instantané. Telles opérations sont signalées comme ayant échoué, mais le message d'erreur indique les données ont bien été chargées. Par exemple, si des packages PyPI sont installés, mais que les remplacements des options de configuration Airflow n'ont pas abouti, l'erreur l'indique.

Pour une opération partiellement terminée, vous pouvez essayer de charger le même instantané à nouveau. Cloud Composer ignore les étapes qui ont réussi sur le tentative précédente. Par exemple, si une opération échoue pendant un certain délai, mais que le base de données a été correctement chargée, la prochaine tentative ne chargera pas la base de données.

Avant de commencer

  • Les instantanés sont compatibles avec Cloud Composer 2 version 2.0.9 et versions ultérieures. Cloud Composer 1 est compatible avec l'enregistrement des instantanés d'environnement pour les versions 1.18.5 et ultérieures.

  • Les instantanés ne créent pas d'environnement. Si vous souhaitez charger un instantané un environnement vers un autre, vous devez d'abord créer de l'environnement d'exécution, puis y charger l'instantané.

  • Vous ne pouvez pas charger d'instantanés dans des environnements à l'état d'erreur. Il est de ces environnements en chargeant un instantané. Vous pouvez toujours charger un instantané existant dans un nouvel environnement.

  • Vous ne pouvez charger des instantanés que dans la même version ou une version ultérieure de Cloud Composer ou Airflow. Par exemple, vous ne pouvez pas charger instantané de Cloud Composer 2.0.2 vers un environnement Cloud Composer 2.0.1. Autre exemple : vous ne pouvez pas charger un instantané depuis Airflow 2.2.3 vers Airflow 2.1.4.

  • Les instantanés ne modifient pas la version de Cloud Composer. Si vous mettez à niveau votre environnement vers une version ultérieure Cloud Composer, puis charger un instantané d'une version antérieure, votre environnement conserve sa version actuelle Cloud Composer. Par exemple, le chargement d'un instantané depuis Cloud Composer 2.0.1 vers Cloud Composer 2.0.2 ne permet pas rétablir l'environnement vers Cloud Composer 2.0.1.

  • La taille maximale de la base de données Airflow compatible avec les instantanés est de 20 Go. Si la base de données de votre environnement prend plus de 20 Go, réduire la taille de la base de données Airflow avant d'enregistrer une un instantané.

  • La longueur maximale du nom d'un objet dans le bucket de l'environnement ne doit pas être plus long que 1 024 symboles. Sinon, vous ne pourrez pas créer d'instantanés.

  • Si vous enregistrez des instantanés dans un emplacement situé en dehors de la couche le compte de service de votre environnement doit des autorisations de lecture et d'écriture pour l'emplacement spécifié. Par exemple, Le rôle Administrateur des objets Storage dispose de ces autorisations. Toi vous pouvez l'appliquer à un projet ou à un bucket spécifique.

  • La création et le stockage d'instantanés entraînent des coûts supplémentaires liés dans Cloud Storage. Pour en savoir plus, reportez-vous à la section Tarification.

Enregistrer un instantané d'environnement

Cloud Composer enregistre les instantanés d'environnement dans un sous-dossier, par rapport au dossier spécifié. Le nom du dossier contient l'ID du projet, l'emplacement de l'environnement, le nom de l'environnement et l'horodatage de l'enregistrement de l'instantané. Exemple : /snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

Console

Pour créer un instantané de votre environnement:

  1. Dans la console Google Cloud, accédez à la page Environnements.

    Accéder à la page Environnements

  2. Dans la liste des environnements, cliquez sur le nom de votre environnement. La page Détails de l'environnement s'ouvre.

  3. Cliquez sur Enregistrer l'instantané.

  4. Dans la boîte de dialogue Enregistrer l'instantané, sélectionnez l'emplacement où stocker l'instantané:

    • Pour stocker l'instantané dans le dossier /snapshots de l'environnement sélectionnez Utiliser le dossier des instantanés dans le bucket d'environnement (par défaut).

    • Pour stocker l'instantané dans le dossier personnalisé, sélectionnez Utilisez un dossier personnalisé dans un autre bucket, puis spécifiez un emplacement.

  5. Cliquez sur Enregistrer.

gcloud

La commande gcloud beta composer environments snapshots save enregistre un instantané de votre environnement.

  • L'argument snapshot-location spécifie le dossier dans lequel se trouve l'instantané enregistré. Par défaut, les instantanés sont enregistrés dans le dossier /snapshots de votre bucket de l'environnement. Exemple : gs://us-central1-example-916807e1-bucket/snapshots. Vous pouvez également spécifier dans n'importe quel autre dossier.

Pour enregistrer un instantané de votre environnement, exécutez la commande suivante:

gcloud beta composer environments snapshots save \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --snapshot-location "SNAPSHOTS_FOLDER"

Remplacez :

  • ENVIRONMENT_NAME par le nom de l'environnement.
  • LOCATION par la région dans laquelle se trouve l'environnement.
  • (Facultatif) SNAPSHOTS_FOLDER par l'URI d'un dossier de bucket où stocker l'instantané. Si vous omettez cet argument, Cloud Composer enregistre l'instantané dans le dossier /snapshots du bucket de votre environnement.

L'exemple suivant utilise l'emplacement par défaut:

gcloud beta composer environments snapshots save \
  example-environment \
  --location us-central1

L'exemple suivant est enregistré dans un dossier personnalisé:

gcloud beta composer environments snapshots save \
  example-environment \
  --location us-central1 \
  --snapshot-location "gs://example-bucket/environment_snapshots"

API

  1. Envoyez une requête API environments.saveSnapshot.

  2. Dans le corps de la requête, dans le champ snapshotLocation, spécifiez dossier dans lequel vous voulez enregistrer l'instantané.

{
  "snapshotLocation": "SNAPSHOTS_FOLDER"
}

Remplacez :

  • SNAPSHOTS_FOLDER par l'URI d'un dossier de bucket dans lequel enregistrez l'instantané.

Exemple :

// POST https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment:saveSnapshot

{
  "snapshotLocation": "gs://us-central1-example-916807e1-bucket/snapshots"
}

Terraform

Il n'est pas possible d'enregistrer ni de charger des instantanés d'environnement depuis Terraform.

L'enregistrement et le chargement d'instantanés sont des actions effectuées au niveau d'un environnement, et les instantanés qui en résultent ne font pas partie de la définition d'un environnement. Depuis Terraform ne gère que la configuration de l'environnement Cloud Composer, vous ne pouvez pas enregistrer ni charger d'instantanés d'environnement à partir de celui-ci.

Charger un instantané d'environnement

Prenons la situation suivante. Par exemple : La fonction catch-up est activée et Airflow exécute un DAG selon une programmation entre le moment où l'instantané a été créé et celui où il a été chargé. Dans ce cas, après le chargement de l'instantané, Airflow n'a plus d'informations sur l'exécution du DAG qui s'est produite. Airflow réexécute le DAG pour la en même temps et les données.

Prenons un autre exemple avec un DAG exécuté selon une programmation quotidienne. Vous prenez une un instantané, Airflow exécute ce DAG, puis vous chargez l'instantané le même jour. Dans ce cas, Airflow réexécute le DAG, même si le rattrapage est est désactivé.

Console

Pour charger un instantané dans votre environnement Cloud Composer 2, procédez comme suit:

  1. Dans la console Google Cloud, accédez à la page Environnements.

    Accéder à la page Environnements

  2. Dans la liste des environnements, cliquez sur le nom de votre environnement. La page Détails de l'environnement s'ouvre.

  3. Cliquez sur Charger l'instantané.

  4. Dans la boîte de dialogue Charger l'instantané, cliquez sur Parcourir.

  5. Sélectionnez un dossier dans lequel stocker l'instantané. Le nom du dossier indique l'ID de votre projet, l'emplacement de l'environnement et le code temporel correspondant au moment l'instantané a été enregistré. Par exemple, /snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

  6. (Facultatif) Pour ignorer l'installation des packages PyPI personnalisés à partir de sélectionnez Skip PyPI packages installation (Ignorer l'installation des packages PyPI). Si vous chargez un instantané d'un environnement avec des packages PyPI personnalisés ; Cloud Composer n'installe pas ces packages personnalisés.

  7. Cliquez sur Charger et attendez que Cloud Composer charge l'instantané.

gcloud

La commande gcloud beta composer environments snapshots load charge une l'instantané à votre environnement.

  • L'argument --snapshot-path spécifie le dossier dans lequel se trouve l'instantané localisés.

    Le nom du dossier indique l'ID de votre projet, l'ID de l'environnement l'emplacement et le code temporel de l'enregistrement de l'instantané. Par exemple, gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

  • (Facultatif) L'argument --skip-pypi-packages-installation ignore l'élément l'installation de packages PyPI personnalisés à partir de l'instantané. Si vous chargez un instantané d'un environnement avec des packages PyPI personnalisés ; Cloud Composer n'installe pas ces packages personnalisés.

gcloud beta composer environments snapshots load \
  DESTINATION_ENVIRONMENT_NAME \
  --location LOCATION \
  --snapshot-path "SNAPSHOT_PATH"

Remplacez :

  • DESTINATION_ENVIRONMENT_NAME par le nom de l'environnement dans lequel pour charger l'instantané.
  • LOCATION par la région dans laquelle se trouve l'environnement.
  • SNAPSHOT_PATH par l'URI d'un bucket, suivi du chemin d'accès un instantané.

Exemple :

gcloud beta composer environments snapshots load \
  example-environment \
  --location us-central1 \
  --snapshot-path "gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00"

API

  1. Envoyez une requête API environments.loadSnapshot.

  2. Dans le corps de la requête, dans le champ snapshotPath, spécifiez l'URI d'un bucket, suivi du chemin d'accès à l'instantané. Le nom de le dossier affiche l'ID de votre projet, l'emplacement de l'environnement et code temporel de l'enregistrement de l'instantané. Exemple : gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

  3. (Facultatif) Dans le corps de la requête, dans le champ skipPypiPackagesInstallation spécifier si Cloud Composer doit ignorer l'installation de packages PyPI personnalisés à partir de l'instantané. Si vous chargez un instantané d'un environnement avec des packages PyPI personnalisés, Cloud Composer n'installe pas ces packages personnalisés.

    Ce champ est facultatif. Si vous omettez ce champ, Cloud Composer installe les packages PyPI à partir de l'instantané.

{
  "snapshotPath": "SNAPSHOT_PATH"
}

Remplacez :

  • SNAPSHOT_PATH par l'URI d'un dossier de bucket dans lequel stocker l'instantané.

Exemple :

// POST https://composer.googleapis.com/v1beta1/projects/example-project/
// locations/us-central1/environments/example-environment:loadSnapshot

{
  "snapshotPath": "gs://us-central1-example-916807e1-bucket/snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00",
  "skipPypiPackagesInstallation": "False"
}

Terraform

Terraform ne permet pas d'enregistrer ni de charger des instantanés d'environnement.

L'enregistrement et le chargement d'instantanés sont des actions effectuées au niveau d'un environnement, et les instantanés qui en résultent ne font pas partie de la définition d'un environnement. Depuis Terraform ne gère que la configuration de l'environnement Cloud Composer, vous ne pouvez pas enregistrer ni charger d'instantanés d'environnement à partir de celui-ci.

Étape suivante