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 configurer votre environnement pour enregistrer automatiquement les instantanés. Pour en savoir plus, 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 charger des instantanés d'environnement à la demande.

Vous pouvez utiliser des instantanés pour:

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

Un instantané d'environnement est un ensemble de fichiers décrivant l'état de votre environnement et stockant la sauvegarde des données d'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é.

Alors que l'interface utilisateur de Cloud Storage affiche les données sous forme de dossiers pour plus de commodité, les buckets fonctionnent dans une structure de fichiers plate. Cela ne change pas la façon dont vous enregistrez et chargez les instantanés dans la console Google Cloud, mais gardez cela à l'esprit lorsque vous effectuez des opérations directement sur les fichiers de votre bucket. Pour en savoir plus, consultez la section Espace de noms de l'objet.

Remarques de sécurité concernant les instantanés

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

Veillez à 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 associées sont correctement configurées dans le projet. Lorsque vous attribuez des autorisations, assurez-vous que le compte de service de cet 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 des instantanés:

  • Remplacements de configuration Airflow.
  • Variables d'environnement.
  • Liste des packages PyPI personnalisés, en tant que conditions requises.
  • Une sauvegarde de la base de données Airflow, y compris les états des tâches exécutées, et l'historique des exécutions du DAG.
  • Une sauvegarde des dossiers /dags, /data et /plugins à partir du bucket de l'environnement.
  • Clé Fernet de l'environnement.
  • Autres informations sur la configuration de l'environnement, telles que son évolutivité et ses paramètres de performances. Cloud Composer n'utilise pas ces informations lorsqu'il charge 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 choisissez d'ignorer leur installation).

  • Contenu de la base de données Airflow, y compris les états 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 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 des instantanés, celles-ci ne sont pas utilisées lors du chargement d'instantanés. Les paramètres suivants de votre environnement ne changent pas lorsque vous chargez un instantané:

  • La configuration de l'environnement, telles que l'échelle de l'environnement et les paramètres de performances
  • Configuration de la mise en réseau de l'environnement.
  • Contenu du bucket de l'environnement en dehors des dossiers /dags, /data et /plugins.
  • Étiquettes 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 lorsque vous chargez un instantané.

À propos des opérations partiellement terminées

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

  • Les opérations réussies chargent toutes les données de l'instantané.
  • Les opérations ayant échoué n'introduisent aucun changement.
  • 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 été chargées avec succès. Par exemple, si des packages PyPI sont installés, mais que les remplacements d'option de configuration Airflow ont échoué, le message d'erreur l'indique.

Pour une opération partiellement terminée, vous pouvez réessayer de charger 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 après un délai d'inactivité, mais que la base de données a bien été chargée, la prochaine tentative ne charge pas la base de données à nouveau.

Avant de commencer

  • Dans Cloud Composer 1, vous ne pouvez enregistrer que des instantanés, mais vous ne pouvez pas les charger. Vous pouvez charger des instantanés à partir d'un environnement Cloud Composer 1 vers des environnements Cloud Composer 2.
  • Les instantanés sont compatibles avec Cloud Composer 2 version 2.0.9 et ultérieures. Cloud Composer 1 permet d'enregistrer des instantanés d'environnement pour les versions 1.18.5 ou ultérieures.

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

  • Vous ne pouvez pas charger d'instantanés dans des environnements en état d'erreur. Il n'est pas possible de corriger de tels 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é à partir de Cloud Composer 2.0.2 dans un environnement avec 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 de Cloud Composer, puis que vous chargez un instantané à partir d'une version antérieure, votre environnement conserve toujours sa version actuelle de Cloud Composer. Par exemple, le chargement d'un instantané à partir de Cloud Composer 2.0.1 vers Cloud Composer 2.0.2 ne rétablit pas 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éduisez-la avant d'enregistrer un instantané.

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

  • Si vous enregistrez des instantanés 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.

  • La création et le stockage d'instantanés entraînent des coûts supplémentaires liés à 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 propre au dossier que vous spécifiez. Le nom du dossier contient l'ID du projet, l'emplacement de l'environnement, son nom 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 un instantané, sélectionnez l'emplacement où stocker l'instantané:

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

    • Pour stocker l'instantané dans le dossier personnalisé, sélectionnez Utiliser 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 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 dans laquelle se trouve l'environnement.
  • (Facultatif) SNAPSHOTS_FOLDER par 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.

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 champ snapshotLocation du corps 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 de 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 depuis Terraform.

L'enregistrement et le chargement d'instantanés sont des actions effectuées sur un environnement, et les instantanés résultants ne font pas partie de la définition d'un environnement. Étant donné que 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

Dans Cloud Composer 1, vous ne pouvez enregistrer que des instantanés, mais vous ne pouvez pas les charger. Vous pouvez charger des instantanés à partir d'un environnement Cloud Composer 1 vers des environnements Cloud Composer 2. Par exemple, lorsque vous migrez vos environnements vers Cloud Composer 2.

Étapes suivantes