Enregistrer et charger des instantanés d'environnement

Cloud Composer 1 | Cloud Composer 2

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

Vous pouvez utiliser des instantanés avec Cloud Scheduler pour enregistrer automatiquement des instantanés de votre environnement. Pour en savoir plus, consultez la section Configurer des instantanés planifiés.

À propos des instantanés d'environnement

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

Grâce à ces instantanés, vous pouvez:

  • Restaurez votre environnement dans l'état antérieur. Créez des sauvegardes de votre environnement à l'aide d'instantanés, puis chargez l'un des instantanés pour restaurer votre environnement. Par exemple, vous pouvez effectuer un rollback d'une opération de mise à jour qui installe des packages PyPI ou ignore les options de configuration Airflow, même après la mise à jour de votre environnement.

  • effectuer des mises à niveau côte à côte et copier des environnements ; Créez un instantané d'un environnement existant, créez-en un autre qui utilise la même version ou une version ultérieure de Cloud Composer, puis appliquez-le à ce nouvel environnement. Cette procédure est semblable à celle de migration. Veillez à suspendre les DAG avant de créer l'instantané, pour éviter les exécutions de DAG en double.

Stockage des instantanés

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

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

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

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

Remarques de sécurité concernant les instantanés

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

Assurez-vous de vérifier les autorisations de sécurité pour le bucket de votre environnement. Si vous stockez des instantanés d'environnement dans un bucket personnalisé, assurez-vous que les autorisations d'accès correspondantes sont bien configurées dans votre projet. Lorsque vous attribuez des autorisations, assurez-vous que le compte de service de l'environnement dispose d'autorisations suffisantes pour enregistrer et charger des instantanés à partir du bucket.

Quelles données sont enregistrées dans les instantanés ?

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

  • Remplacements de configuration Airflow.
  • Variables d'environnement
  • Liste de packages PyPI personnalisés, selon les besoins.
  • Une sauvegarde de la base de données Airflow, y compris l'état des tâches exécutées, et le DAG exécute l'historique.
  • Une sauvegarde des dossiers /dags, /data et /plugins du bucket de l'environnement
  • Clé de flux de l'environnement.
  • Autres informations sur la configuration de l'environnement (par exemple, les paramètres d'échelle et de performance). Cloud Composer n'utilise pas ces informations lors du chargement des 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 décidez de ne pas les installer).

  • Contenu de la base de données Airflow, y compris l'état des tâches exécutées, et l'historique d'exécution du DAG.

  • Le contenu des dossiers /dags, /data et /plugins de l'instantané est chargé dans le bucket de l'environnement.

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

Bien que Cloud Composer stocke certaines informations sur la configuration de l'environnement dans les instantanés, il n'est pas utilisé lors du chargement des instantanés. Les paramètres suivants de votre environnement ne changent pas lorsque vous chargez un instantané:

  • Configuration de l'environnement, telle que l'échelle de l'environnement et les paramètres de performances.
  • Configuration réseau de l'environnement.
  • Contenu de l'ensemble d'environnement en dehors des dossiers /dags, /data et /plugins.
  • Libellés d'environnement

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

À propos des opérations partiellement terminées

Lorsque vous chargez un instantané, l'opération peut réussir, échouer ou partiellement:

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

Pour une opération partiellement terminée, vous pouvez essayer de charger à nouveau le même instantané. Cloud Composer ignore les étapes qui ont réussi lors de la tentative précédente. Par exemple, si une opération échoue en cas d'expiration du délai, mais que la base de données a bien été 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.0.9 et les versions ultérieures. Cloud Composer 1 permet d'enregistrer les instantanés d'environnement dans la version 1.18.5.

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

  • Vous ne pouvez pas charger des instantanés dans des environnements dont l'état d'erreur est. Il n'est pas possible de corriger 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 un instantané depuis Cloud Composer 2.0.2 vers un environnement doté de la version 2.0.1. Autre exemple : vous ne pouvez pas charger un instantané d'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 de Cloud Composer, puis chargez un instantané à partir d'une version antérieure, votre environnement conservera sa version actuelle. Par exemple, le chargement d'un instantané depuis Cloud Composer 2.0.1 vers Cloud Composer 2.0.2 ne permet pas de revenir à l'environnement.

  • 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éduisez la taille de la base de données Airflow avant d'enregistrer un instantané.

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

Enregistrer un instantané d'environnement

Cloud Composer enregistre les instantanés d'environnement dans un sous-dossier, par rapport au dossier que vous spécifiez. Le nom du dossier contient l'ID du projet, l'emplacement et le nom de l'environnement, ainsi que l'horodatage au moment où l'instantané a été enregistré. Exemple : /snapshots/example-project_us-central1_example-environment_2022-01-05T18-59-00.

Console

Pour créer un instantané de votre environnement, procédez comme suit:

  1. Dans Google Cloud Console, 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 Environment details (Détails sur l'environnement) s'ouvre.

  3. Cliquez sur Enregistrer l'instantané.

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

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

    • Pour stocker l'instantané dans le dossier personnalisé, sélectionnez Utiliser le 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 un dossier dans lequel l'instantané est enregistré. Par défaut, les instantanés sont enregistrés dans le dossier /snapshots du bucket de votre environnement. Exemple : gs://us-central1-example-916807e1-bucket/snapshots. Vous pouvez également spécifier 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 où se trouve l'environnement.
  • (Facultatif) SNAPSHOTS_FOLDER avec l'URI d'un dossier de bucket dans lequel stocker l'instantané. Si vous omettez cet argument, Cloud Composer enregistre l'instantané dans le dossier /snapshots du bucket de votre environnement.

Dans l'exemple suivant, l'emplacement par défaut est utilisé:

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 champ snapshotLocation de la requête, spécifiez le dossier dans lequel vous souhaitez enregistrer l'instantané.

{
  "snapshotLocation": "SNAPSHOTS_FOLDER"
}

Remplacez :

  • SNAPSHOTS_FOLDER par l'URI d'un dossier du bucket dans lequel enregistrer 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 à partir de Terraform.

L'enregistrement et le chargement des instantanés sont des actions effectuées sur un environnement. Les instantanés correspondants ne font pas partie de la définition de l'environnement. Étant donné que Terraform ne gère que la configuration de l'environnement Cloud Composer, vous ne pouvez ni enregistrer, ni charger des instantanés de cet environnement.

Charger un instantané d'environnement

Tenez compte de la situation suivante. Par exemple, catch-up est activé et Airflow exécute un DAG selon une programmation comprise entre la création de l'instantané et son chargement. Dans ce cas, après le chargement de l'instantané, Airflow ne dispose d'aucune information sur l'exécution du DAG. Il exécute donc à nouveau le DAG, pour les mêmes délais et données.

Prenons l'exemple d'un DAG qui s'exécute quotidiennement. Vous prenez un instantané, puis Airflow exécute ce DAG, puis chargez l'instantané le même jour. Dans ce cas, Airflow exécute à nouveau le DAG, même si le suivi n'est pas activé.

Console

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

  1. Dans Google Cloud Console, 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 Environment details (Détails sur l'environnement) s'ouvre.

  3. Cliquez sur Load snapshot (Charger l'instantané).

  4. Dans la boîte de dialogue Load snapshot (Charger l'instantané), cliquez sur Browse (Parcourir).

  5. Sélectionnez un dossier dans lequel stocker l'instantané. Le nom du dossier indique l'ID de votre projet, l'emplacement de votre environnement et l'horodatage de l'enregistrement de l'instantané. 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 l'instantané, sélectionnez Ignorer l'installation des packages PyPI. Si vous chargez un instantané d'environnement avec des packages PyPI personnalisés installés, Cloud Composer ne les installera pas.

  7. Cliquez sur Load (Charger), puis attendez que Cloud Composer charge l'instantané.

gcloud

La commande gcloud beta composer environments snapshots load charge un instantané dans votre environnement.

  • L'argument --snapshot-path spécifie un dossier où se trouve l'instantané.

    Le nom du dossier indique l'ID de votre projet, l'emplacement de l'environnement et l'horodatage 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'installation des packages PyPI personnalisés à partir de l'instantané. Si vous chargez un instantané d'environnement avec des packages PyPI personnalisés installés, Cloud Composer ne les installera pas.

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 vous souhaitez charger l'instantané.
  • LOCATION par la région où se trouve l'environnement.
  • SNAPSHOT_PATH avec l'URI d'un bucket, suivi du chemin d'accès à l'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, spécifiez l'URI d'un bucket dans le champ snapshotPath, suivi du chemin d'accès à l'instantané. Le nom du dossier indique l'ID de votre projet, l'emplacement de l'environnement et l'horodatage 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.

  3. (Facultatif) Dans le corps de la requête, spécifiez si Cloud Composer doit ignorer l'installation des packages PyPI personnalisés dans le champ skipPypiPackagesInstallation. Si vous chargez un instantané d'environnement avec des packages PyPI personnalisés installés, Cloud Composer ne les installera pas.

    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 du 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

Vous ne pouvez pas enregistrer ni charger d'instantanés d'environnement à l'aide de Terraform.

L'enregistrement et le chargement des instantanés sont des actions effectuées sur un environnement. Les instantanés correspondants ne font pas partie de la définition de l'environnement. Étant donné que Terraform ne gère que la configuration de l'environnement Cloud Composer, vous ne pouvez ni enregistrer, ni charger des instantanés de cet environnement.

Étapes suivantes