Mettre à niveau des environnements

Managed Airflow (3e génération) | Managed Airflow (2e génération) | Managed Airflow (ancienne 1re génération)

Cette page explique comment mettre à niveau votre environnement vers une nouvelle version de Managed Airflow ou d'Airflow.

À propos des opérations de mise à niveau

Vous pouvez mettre à niveau la version de Managed Airflow, la version d'Airflow ou les deux en même temps.

Lorsque vous modifiez la version d'Airflow ou de Managed Airflow utilisée par votre environnement :

  • Managed Airflow redéploie les composants de votre environnement à l'aide de nouvelles versions des images Managed Airflow.

  • Managed Airflow applique les modifications de configuration d'Airflow, telles que les packages PyPI personnalisés ou les remplacements d'options de configuration d'Airflow, si votre environnement en disposait avant la mise à niveau.

  • Managed Airflow met à jour la connexion Airflow airflow_db pour qu'elle pointe vers la nouvelle base de données Cloud SQL.

La mise à niveau ne modifie pas la façon dont vous vous connectez aux ressources de votre environnement, telles que l'URL du bucket de votre environnement ou le serveur Web Airflow.

Limites des opérations de mise à niveau et de rollback

Les opérations de mise à niveau sont soumises aux limites suivantes :

  • Les versions de Managed Airflow sont déployées progressivement dans toutes les régions compatibles avec Managed Airflow sur plusieurs jours. Il est possible que la dernière version d'une version en cours de déploiement ne soit pas encore disponible dans votre région.

  • Vous ne pouvez pas passer à une version antérieure de Managed Airflow ou d'Airflow.

  • Dans la console Google Cloud , vous ne pouvez effectuer la mise à niveau que vers les dernières versions compatibles de Managed Airflow (Gen 2).

  • Dans Google Cloud CLI, l'API ou Terraform, vous pouvez mettre à niveau un environnement vers les dernières versions compatibles, trois versions précédentes de Managed Airflow (Gen 2), la dernière version de correctif de la version mineure précédente et vers des versions avec un calendrier de mise à niveau étendu. Il n'est pas possible de passer à d'autres versions de Managed Airflow (2e génération), même si elles sont toujours compatibles et peuvent être utilisées pour créer un environnement.

    Exemple de choix de mise à niveau pour Google Cloud CLI, l'API et Terraform :

    • Dernières versions : composer-2.11.5-airflow-*
    • Trois versions précédentes de Managed Airflow (Gen 2) : composer-2.11.4-airflow-*, composer-2.11.3-airflow-*, composer-2.11.2-airflow-*.
    • Dernier correctif de la version mineure précédente de Managed Airflow (Gen 2) : composer-2.10.2-airflow-*
    • Versions de Managed Airflow (Gen 2) avec un calendrier de mise à niveau étendu : composer-2.10.2-airflow-*, composer-2.10.1-ariflow-*, composer-2.9.7-airflow-* et autres versions avec un calendrier de mise à niveau étendu.
  • La version vers laquelle vous effectuez la mise à niveau doit être compatible avec la version Python actuelle de votre environnement.

  • Les limites de quota de l'API Compute Engine peuvent empêcher les mises à niveau. Dans la console Google Cloud , accédez à la page IAM et administration > Quotas et limites du système, puis vérifiez si le quota de l'API Compute Engine pour le processeur n'est pas dépassé. Si le seuil de quota est atteint, demandez une extension de quota avant de procéder à la mise à niveau.

  • Vous ne pouvez pas mettre à niveau votre environnement si la base de données Airflow contient plus de 16 Go de données. Lors d'une mise à niveau, un avertissement s'affiche si la taille de la base de données Airflow est supérieure à 16 Go. Dans ce cas, effectuez la maintenance de la base de données pour réduire sa taille.

  • Si vous utilisez le mécanisme XCom pour transférer des fichiers, assurez-vous de l'utiliser conformément aux consignes d'Airflow. Le transfert de fichiers volumineux ou d'un grand nombre de fichiers à l'aide de XCom a un impact sur les performances de la base de données Airflow et peut entraîner des échecs lors du chargement d'instantanés ou de la mise à niveau de votre environnement. Envisagez d'utiliser des alternatives telles que Cloud Storage pour transférer de grands volumes de données.

Avant de commencer

  • Nous vous recommandons de créer un instantané de l'environnement pour pouvoir le recréer si nécessaire.

  • Votre compte doit disposer d'un rôle pouvant déclencher des opérations de mise à niveau de l'environnement. De plus, le compte de service de l'environnement doit disposer d'un rôle doté d'autorisations suffisantes pour effectuer des opérations de mise à niveau. Pour plus d'informations, consultez la section Contrôle des accès.

  • Vous remarquerez peut-être des entrées de métadonnées Compute Engine pour les clusters GKE qui appartiennent aux environnements de votre projet. Lors de la création et de la mise à niveau des clusters GKE, Google Kubernetes Engine ajoute automatiquement des entrées de métadonnées au niveau du projet (google_compute_project_metadata) pour suivre l'utilisation des plages d'adresses IP secondaires. Ne modifiez pas et ne supprimez pas ces entrées. Google Kubernetes Engine les gère automatiquement.

Vérifier que votre environnement est à jour

Managed Airflow affiche des avertissements lorsque l'image de votre environnement approche de la fin de sa période de compatibilité complète. Vous pouvez utiliser ces avertissements pour que votre environnement soit toujours compatible.

Un message d'abandon s'affiche sur la page d'informations de l'environnement.
Figure 1. Un message d'abandon s'affiche sur la page d'informations de l'environnement.

Managed Airflow effectue le suivi de la version d'image Managed Airflow sur laquelle votre environnement est basé. À l'approche de la date de fin de compatibilité, un avertissement s'affiche dans la liste des environnements et sur la page Détails de l'environnement.

Pour vérifier si votre environnement est à jour :

Console

  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. Accédez à l'onglet Configuration de l'environnement.

  4. Dans le champ Version de l'image, l'un des messages suivants s'affiche :

    • Dernière version disponible Votre image d'environnement est entièrement compatible.

    • Nouvelle version disponible Votre image d'environnement est entièrement compatible et vous pouvez la mettre à niveau vers une version ultérieure.

    • La prise en charge de cette version de l'image prendra fin dans… Votre image d'environnement approche de la fin de la période de prise en charge pcomplète.

    • Cette version n'est plus compatible depuis le… Votre environnement a dépassé la période de prise en charge complète.

gcloud

Cette fonctionnalité n'est pas disponible via Google Cloud CLI. Vous pouvez plutôt afficher les mises à niveau suggérées, qui présentent les nouvelles versions disponibles.

API

Cette fonctionnalité n'est pas disponible via l'API. Vous pouvez plutôt afficher les mises à niveau suggérées, qui présentent les nouvelles versions disponibles.

Afficher les mises à niveau suggérées

Managed Airflow fournit une liste de versions de Managed Airflow vers lesquelles vous pouvez mettre à niveau votre environnement.

Pour afficher les versions de Managed Airflow suggérées pour une mise à niveau :

Console

  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. Accédez à l'onglet Configuration de l'environnement, puis cliquez sur Mettre à niveau la version de l'image.

  4. Pour obtenir la liste des versions suggérées, cliquez sur le menu déroulant Version d'image de Managed Airflow.

gcloud

gcloud composer environments list-upgrades \
  ENVIRONMENT_NAME \
  --location LOCATION

Remplacez :

  • ENVIRONMENT_NAME par le nom de l'environnement.
  • LOCATION par la région où se trouve l'environnement.

Exemple :

gcloud composer environments list-upgrades example-environment \
  --location us-central1

API

Vous pouvez afficher les versions disponibles pour un emplacement. Pour ce faire, créez une requête API imageVersions.list.

Exemple :

// GET https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/imageVersions

Rechercher des conflits de packages PyPI

Vous pouvez vérifier si les packages PyPI installés dans votre environnement présentent des conflits avec les packages préinstallés dans la nouvelle image Managed Airflow.

Une vérification réussie signifie qu'il n'y a pas de conflit dans les dépendances des packages PyPI entre la version actuelle et la version spécifiée. Toutefois, une opération de mise à niveau peut toujours échouer pour d'autres raisons.

Console

Pour exécuter une vérification des mises à niveau de votre environnement, 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. Accédez à l'onglet Configuration de l'environnement, recherchez l'entrée Version de l'image, puis cliquez sur Mettre à niveau.

  4. Dans la boîte de dialogue Mise à niveau de la version de l'environnement, dans la liste déroulante Nouvelle version, sélectionnez la version de Managed Airflow vers laquelle vous souhaitez effectuer la mise à niveau.

  5. Dans la section Compatibilité des packages PyPI, cliquez sur Rechercher des conflits.

  6. Attendez la fin de la vérification. En cas de conflits de dépendance du package PyPI, les messages d'erreur affichés contiennent des détails sur les packages en conflit et les versions de package.

gcloud

Pour exécuter une vérification de mise à niveau pour votre environnement, exécutez la commande environments check-upgrade avec la version de l'image Managed Airflow vers laquelle vous souhaitez effectuer la mise à niveau :

gcloud composer environments check-upgrade \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --image-version IMAGE_VERSION

Remplacez :

  • ENVIRONMENT_NAME par le nom de l'environnement.
  • LOCATION par la région où se trouve l'environnement.
  • IMAGE_VERSION par la version d'image Managed Airflow vers laquelle vous souhaitez effectuer la mise à niveau, au format composer-a.b.c-airflow-x.y.z. Vous pouvez également utiliser des alias de version.

Exemple :

gcloud composer environments check-upgrade example-environment \
  --location us-central1 \
  --image-version composer-2.17.16-airflow-2.11.1

Exemple de résultat :

Waiting for [projects/example-project/locations/us-central1/environments/
example-environment] to be checked for PyPI package conflicts when upgrading
to composer-2.17.16-airflow-2.11.1. Operation [projects/example-project/locations/
us-central1/operations/04d0e8b2-...]...done.
...

Response:
'@type': type.googleapis.com/
google.cloud.orchestration.airflow.service.v1.CheckUpgradeResponse
buildLogUri: ...
containsPypiModulesConflict: CONFLICT
pypiConflictBuildLogExtract: |-
The Cloud Build image build failed: Build failed; check build logs for
details. Full log can be found at ...
Error details: tensorboard 2.2.2 has requirement
setuptools>=41.0.0, but you have setuptools 40.3.0.

Vous pouvez également exécuter une vérification de mise à niveau de manière asynchrone. Utilisez l'argument --async pour effectuer un appel asynchrone, puis vérifiez le résultat à l'aide de la commande gcloud composer operations describe.

API

Rédigez une requête d'API environments.checkUpgrade.

Spécifiez la version de l'image dans le champ imageVersion :

{
  "imageVersion": "IMAGE_VERSION"
}

Remplacez IMAGE_VERSION par la version d'image Managed Airflow vers laquelle vous souhaitez effectuer la mise à niveau, au format composer-a.b.c-airflow-x.y.z. Vous pouvez également utiliser des alias de version.

Rechercher les conflits avec Managed Airflow (3e génération)

Bien qu'il ne soit pas possible de migrer votre environnement de Managed Airflow (Gen 2) vers Managed Airflow (Gen 3) sur place, vous pouvez vérifier les problèmes de compatibilité à l'aide d'une vérification de mise à niveau. Nous vous recommandons de le faire avant de migrer vers Managed Airflow (Gen 3).

Pour vérifier la compatibilité avec Managed Airflow (3e génération), effectuez une vérification de mise à niveau standard de votre environnement Managed Airflow (2e génération) et spécifiez une version de Managed Airflow (3e génération) comme cible.

Chaque conflit signalé peut être de l'un des types suivants :

  • Les conflits BLOCKING signalent des éléments de configuration d'environnement incompatibles qui ne sont pas compatibles avec Managed Airflow (Gen 3). Nous vous recommandons de résoudre ces conflits avant de commencer une migration vers Managed Airflow (3e génération).

  • Les conflits NON_BLOCKING signalent des éléments de configuration de l'environnement qui sont différents dans Managed Airflow (3e génération) et qui peuvent entraîner un comportement inattendu. Par exemple, les modifications des valeurs par défaut telles que les intervalles de maintenance par défaut sont signalées comme des conflits non bloquants. Nous vous recommandons de vérifier si ces conflits peuvent causer des problèmes avant de lancer le processus de migration.

  • Les conflits de packages PyPI sont également signalés dans le cadre de cette vérification. Ils sont signalés séparément des conflits de configuration, de la même manière que pour une vérification de compatibilité des packages PyPI standard.

Console

Pour vérifier la compatibilité avec Managed Airflow (Gen 3), utilisez la gcloud CLI ou l'API Cloud Composer. La consoleGoogle Cloud ne permet de vérifier que la compatibilité des packages PyPI.

gcloud

Pour vérifier la compatibilité avec Managed Airflow (3e génération), exécutez la commande environments check-upgrade et spécifiez une version de Managed Airflow (3e génération) comme cible.

gcloud composer environments check-upgrade \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --image-version COMPOSER_3_IMAGE_VERSION

Remplacez :

Exemple :

gcloud composer environments check-upgrade example-environment \
  --location us-central1 \
  --image-version composer-3-airflow-2

Exemples de messages de conflit :

...
- message: Error validating property [core]unit_test_mode. Overriding [core]
unit_test_mode is not permitted.
type: BLOCKING
- message: Environment variables [GOOGLE_CLOUD_PROJECT] may not be overridden.
type: BLOCKING
- message: You have to specify Worker CPUs to be 0.5, 1.0 or multiples of 2.0.
type: BLOCKING
- message: The environment uses a default maintenance window, which is
different in Composer 2 and Composer 3. Unless set to a custom value, the
maintenance window will be changed to a new default after the upgrade.
type: NON_BLOCKING
...

Vous pouvez également exécuter cette vérification de manière asynchrone. Utilisez l'argument --async pour effectuer un appel asynchrone, puis vérifiez le résultat à l'aide de la commande gcloud composer operations describe.

API

Rédigez une requête d'API environments.checkUpgrade.

Spécifiez la version de l'image dans le champ imageVersion :

{
  "imageVersion": "COMPOSER_3_IMAGE_VERSION"
}

Remplacez COMPOSER_3_IMAGE_VERSION par la version d'image Managed Airflow (Gen 3) cible, au format composer-3-airflow-x.y.z-build.t. Vous pouvez également utiliser des alias de version Managed Airflow (3e génération).

Mettre à niveau votre environnement

Pour mettre à niveau votre environnement vers une version ultérieure de Managed Airflow ou d'Airflow :

Console

  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. Accédez à l'onglet Configuration de l'environnement.

  4. Recherchez l'élément Version de l'image, puis cliquez sur Mettre à niveau.

  5. Dans le menu déroulant Version de l'image, sélectionnez la version de Managed Airflow vers laquelle vous souhaitez effectuer la mise à niveau.

  6. Cliquez sur Mettre à niveau.

gcloud

gcloud composer environments update \
  ENVIRONMENT_NAME \
  --location LOCATION \
  --image-version IMAGE_VERSION

Remplacez :

  • ENVIRONMENT_NAME par le nom de l'environnement.
  • LOCATION par la région où se trouve l'environnement.
  • IMAGE_VERSION par la version d'image Managed Airflow vers laquelle vous souhaitez effectuer la mise à niveau, au format composer-a.b.c-airflow-x.y.z. Vous pouvez également utiliser des alias de version.

Exemple :

gcloud composer environments update \
  example-environment \
  --location us-central1 \
  --image-version composer-2.17.16-airflow-2.11.1

API

  1. Rédigez une requête API environments.patch.

  2. Dans cette requête :

    1. Dans le paramètre updateMask, spécifiez le masque config.softwareConfig.imageVersion.

    2. Dans le corps de la requête, dans le champ imageVersion, spécifiez la nouvelle version vers laquelle vous souhaitez effectuer la mise à niveau.

Exemple :

// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.softwareConfig.imageVersion

{
  "config": {
    "softwareConfig": {
      "imageVersion": "composer-2.17.16-airflow-2.11.1"
    }
  }
}

Terraform

Le champ image_version du bloc config.software_config contrôle la version de l'image Managed Airflow de votre environnement. Dans ce champ, spécifiez une nouvelle version d'image Managed Airflow au format composer-a.b.c-airflow-x.y.z.

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "ENVIRONMENT_NAME"
  region = "LOCATION"

  config {
    software_config {
      image_version = "IMAGE_VERSION"
    }
  }
}

Remplacez :

  • ENVIRONMENT_NAME par le nom de l'environnement.
  • LOCATION par la région où se trouve l'environnement.
  • IMAGE_VERSION par la version d'image Managed Airflow vers laquelle vous souhaitez effectuer la mise à niveau, au format composer-a.b.c-airflow-x.y.z. Vous pouvez également utiliser tous les alias de version.

Exemple :

resource "google_composer_environment" "example" {
  provider = google-beta
  name = "example-environment"
  region = "us-central1"

  config {
    software_config {
      image_version = "composer-2.17.16-airflow-2.11.1"
    }
  }
}

Étapes suivantes