Upgrade degli ambienti

Managed Airflow (3ª gen.) | Managed Airflow (2ª gen.) | Managed Airflow (legacy 1ª gen.)

In questa pagina viene descritto come eseguire l'upgrade dell'ambiente a una nuova versione di Managed Airflow o Airflow.

Informazioni sulle operazioni di upgrade

Puoi eseguire l'upgrade della versione di Managed Airflow, della versione di Airflow o di entrambe contemporaneamente.

Quando modifichi la versione di Airflow o Managed Airflow utilizzata dal tuo ambiente:

  • Managed Airflow esegue nuovamente il deployment dei componenti dell'ambiente utilizzando nuove versioni delle immagini Managed Airflow.

  • Managed Airflow applica le modifiche alla configurazione di Airflow, come i pacchetti PyPI personalizzati o gli override delle opzioni di configurazione di Airflow, se l'ambiente li aveva prima dell'upgrade.

  • Managed Airflow aggiorna la connessione Airflow airflow_db in modo che punti al nuovo database Cloud SQL.

L'upgrade non modifica il modo in cui ti connetti alle risorse del tuo ambiente, ad esempio l'URL del bucket del tuo ambiente o il server web Airflow.

Limitazioni delle operazioni di upgrade e rollback

Le operazioni di upgrade presentano le seguenti limitazioni:

  • Le release di Managed Airflow vengono implementate gradualmente in tutte le regioni supportate da Managed Airflow nel corso di diversi giorni. L'ultima versione di una release in corso potrebbe non essere ancora disponibile nella tua regione.

  • Non puoi eseguire il downgrade a una versione precedente di Managed Airflow o Airflow.

  • Nella console Google Cloud , puoi eseguire l'upgrade solo alle ultime versioni supportate di Managed Airflow (Gen 2).

  • In Google Cloud CLI, nell'API o in Terraform, puoi eseguire l'upgrade di un ambiente alle ultime versioni supportate, alle tre versioni precedenti di Managed Airflow (Gen 2), all'ultima versione patch della versione secondaria precedente e alle versioni con una sequenza temporale di upgrade estesa. Non è possibile eseguire l'upgrade ad altre versioni di Managed Airflow (2ª gen.), anche se sono ancora supportate e possono essere utilizzate per creare un nuovo ambiente.

    Esempio di opzioni di upgrade per Google Cloud CLI, API e Terraform:

    • Ultime versioni: composer-2.11.5-airflow-*
    • Tre versioni precedenti di Managed Airflow (2ª gen.): composer-2.11.4-airflow-*, composer-2.11.3-airflow-*, composer-2.11.2-airflow-*.
    • Ultima patch della versione secondaria precedente di Managed Airflow (2ª gen.): composer-2.10.2-airflow-*
    • Versioni di Managed Airflow (2ª gen.) con una cronologia di upgrade estesa: composer-2.10.2-airflow-*, composer-2.10.1-ariflow-*, composer-2.9.7-airflow-* e altre versioni con una cronologia di upgrade estesa.
  • La versione a cui esegui l'upgrade deve supportare la versione Python attuale del tuo ambiente.

  • I limiti di quota dell'API Compute Engine possono impedire gli upgrade. Nella console Google Cloud , vai alla pagina IAM e amministrazione > Quote e limiti di sistema e controlla se la quota dell'API Compute Engine per la CPU non è stata superata. Se la soglia della quota sta per essere raggiunta, richiedi un'estensione della quota prima di procedere con l'operazione di upgrade.

  • Non puoi eseguire l'upgrade dell'ambiente se il database Airflow contiene più di 16 GB di dati. Durante un upgrade, viene visualizzato un avviso se le dimensioni del database Airflow sono superiori a 16 GB. In questo caso, esegui la manutenzione del database per ridurne le dimensioni.

  • Se utilizzi il meccanismo XCom per trasferire i file, assicurati di utilizzarlo in base alle linee guida di Airflow. Il trasferimento di file di grandi dimensioni o di un numero elevato di file utilizzando XCom influisce sulle prestazioni del database Airflow e può causare errori durante il caricamento degli snapshot o l'upgrade dell'ambiente. Valuta la possibilità di utilizzare alternative come Cloud Storage per trasferire grandi volumi di dati.

Prima di iniziare

  • Ti consigliamo di creare un nuovo snapshot dell'ambiente per poterlo ricreare, se necessario.

  • Il tuo account deve avere un ruolo che possa attivare le operazioni di upgrade dell'ambiente. Inoltre, il account di servizio dell'ambiente deve avere un ruolo con autorizzazioni sufficienti per eseguire le operazioni di upgrade. Per saperne di più, consulta Controllo dell'accesso.

  • Potresti notare voci dei metadati di Compute Engine per i cluster GKE che appartengono agli ambienti del tuo progetto. Durante la creazione e gli upgrade dei cluster GKE, Google Kubernetes Engine aggiunge automaticamente voci di metadati a livello di progetto (google_compute_project_metadata) per monitorare l'utilizzo degli intervalli di indirizzi IP secondari. Non modificare o rimuovere queste voci. Google Kubernetes Engine li gestisce automaticamente.

Controlla che l'ambiente sia aggiornato

Managed Airflow visualizza avvisi quando l'immagine del tuo ambiente si avvicina alla data di fine del supporto completo. Puoi utilizzare questi avvisi per mantenere sempre il tuo ambiente supportato.

Nella pagina dei dettagli dell'ambiente viene visualizzato un messaggio di ritiro
Figura 1. Nella pagina dei dettagli dell'ambiente viene visualizzato un messaggio di ritiro

Managed Airflow tiene traccia della versione immagine di Managed Airflow su cui si basa il tuo ambiente. Quando si avvicina la data di fine del supporto, puoi visualizzare un avviso nell'elenco degli ambienti e nella pagina Dettagli ambiente.

Per verificare se l'ambiente è aggiornato:

Console

  1. Nella console Google Cloud , vai alla pagina Ambienti.

    Vai ad Ambienti

  2. Nell'elenco degli ambienti, fai clic sul nome del tuo ambiente. Viene visualizzata la pagina Dettagli ambiente.

  3. Vai alla scheda Configurazione dell'ambiente.

  4. Nel campo Versione immagine viene visualizzato uno dei seguenti messaggi:

    • Ultima versione disponibile. L'immagine dell'ambiente è completamente supportata.

    • Nuova versione disponibile. L'immagine dell'ambiente è completamente supportata e puoi eseguirne l'upgrade a una versione successiva.

    • Il supporto per questa versione immagine termina tra… L'immagine dell'ambiente si sta avvicinando alla fine del periodo di assistenza completa.

    • Questa versione non è supportata a partire dal giorno… Il tuo ambiente ha superato il periodo di assistenza completa.

gcloud

Questa funzionalità non è disponibile tramite Google Cloud CLI. In alternativa, puoi visualizzare gli upgrade suggeriti, che mostra le nuove versioni disponibili.

API

Questa funzionalità non è disponibile tramite API. In alternativa, puoi visualizzare gli upgrade suggeriti, che mostra le nuove versioni disponibili.

Visualizza gli upgrade suggeriti

Managed Airflow fornisce un elenco di versioni di Managed Airflow di cui puoi eseguire l'upgrade nel tuo ambiente.

Per visualizzare le versioni di Managed Airflow suggerite per un upgrade:

Console

  1. Nella console Google Cloud , vai alla pagina Ambienti.

    Vai ad Ambienti

  2. Nell'elenco degli ambienti, fai clic sul nome del tuo ambiente. Viene visualizzata la pagina Dettagli ambiente.

  3. Vai alla scheda Configurazione ambiente e fai clic su Esegui l'upgrade della versione immagine.

  4. Per l'elenco delle versioni suggerite, fai clic sul menu a discesa Versione immagine di Managed Airflow.

gcloud

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

Sostituisci:

  • ENVIRONMENT_NAME con il nome dell'ambiente.
  • LOCATION con la regione in cui si trova l'ambiente.

Esempio:

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

API

Puoi visualizzare le versioni disponibili per una località. Per farlo, crea una richiesta API imageVersions.list.

Ad esempio:

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

Verifica la presenza di conflitti tra i pacchetti PyPI

Puoi verificare se i pacchetti PyPI installati nel tuo ambiente presentano conflitti con i pacchetti preinstallati nella nuova immagine Managed Airflow.

Un controllo riuscito indica che non esistono conflitti nelle dipendenze dei pacchetti PyPI tra la versione attuale e quella specificata. Tuttavia, un'operazione di upgrade potrebbe comunque non riuscire per altri motivi.

Console

Per eseguire un controllo dell'upgrade per il tuo ambiente:

  1. Nella console Google Cloud , vai alla pagina Ambienti.

    Vai ad Ambienti

  2. Nell'elenco degli ambienti, fai clic sul nome del tuo ambiente. Viene visualizzata la pagina Dettagli ambiente.

  3. Vai alla scheda Configurazione ambiente, individua la voce Versione immagine e fai clic su Esegui l'upgrade.

  4. Nella finestra di dialogo Upgrade della versione dell'ambiente, nell'elenco a discesa Nuova versione, seleziona una versione di Managed Airflow di cui vuoi eseguire l'upgrade.

  5. Nella sezione Compatibilità dei pacchetti PyPI, fai clic su Verifica la presenza di conflitti.

  6. Attendi il completamento del controllo. Se si verificano conflitti di dipendenza dei pacchetti PyPI, i messaggi di errore visualizzati contengono dettagli sui pacchetti e sulle versioni dei pacchetti in conflitto.

gcloud

Per eseguire un controllo dell'upgrade per il tuo ambiente, esegui il comando environments check-upgrade con la versione immagine di Managed Airflow di cui vuoi eseguire l'upgrade.

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

Sostituisci:

  • ENVIRONMENT_NAME con il nome dell'ambiente.
  • LOCATION con la regione in cui si trova l'ambiente.
  • VERSION con la nuova versione immagine di Managed Airflow a cui vuoi eseguire l'upgrade, nel formato composer-a.b.c-airflow-x.y.z. Puoi utilizzare tutti gli alias di versione.

Esempio:

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

Output di esempio:

Waiting for [projects/example-project/locations/us-central1/environments/
example-environment] to be checked for PyPI package conflicts when upgrading
to composer-2.17.14-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.

In alternativa, puoi eseguire un controllo dell'upgrade in modo asincrono. Utilizza l'argomento --async per effettuare una chiamata asincrona, quindi controlla il risultato con il comando gcloud composer operations describe.

API

Crea una richiesta API environments.checkUpgrade.

Specifica la versione immagine nel campo imageVersion:

{
  "imageVersion": "VERSION"
}

Sostituisci VERSION con la nuova versione di cui vuoi eseguire l'upgrade, nel formato composer-a.b.c-airflow-x.y.z.

Verifica la presenza di conflitti con Managed Airflow (3ª gen.)

Sebbene non sia possibile eseguire la migrazione dell'ambiente da Managed Airflow (Gen 2) a Managed Airflow (Gen 3) in loco, puoi verificare la presenza di problemi di compatibilità utilizzando un controllo dell'upgrade. Ti consigliamo di farlo prima di eseguire la migrazione a Managed Airflow (3ª gen.).

Per verificare la compatibilità con Managed Airflow (Gen 3), esegui un controllo di upgrade regolare del tuo ambiente Managed Airflow (Gen 2) e specifica una versione di Managed Airflow (Gen 3) come target.

Ogni conflitto segnalato può avere i seguenti tipi:

  • BLOCKING conflitti segnalano elementi di configurazione dell'ambiente incompatibili che non sono supportati in Managed Airflow (Gen 3). Ti consigliamo di risolvere questi conflitti prima di avviare una migrazione a Managed Airflow (3ª gen.).

  • I conflitti di NON_BLOCKING segnalano elementi di configurazione dell'ambiente diversi in Managed Airflow (3ª gen.) e potrebbero causare un comportamento imprevisto. Ad esempio, le modifiche ai valori predefiniti, come i periodi di manutenzione predefiniti, vengono segnalate come conflitti non bloccanti. Ti consigliamo di verificare se questi conflitti possono causare problemi prima di avviare il processo di migrazione.

  • Nell'ambito di questo controllo vengono segnalati anche i conflitti tra i pacchetti PyPI. Vengono segnalati separatamente dai conflitti di configurazione, nello stesso modo di un normale controllo della compatibilità dei pacchetti PyPI.

Console

Per verificare la compatibilità con Managed Airflow (Gen 3), utilizza gcloud CLI o l'API Cloud Composer. La consoleGoogle Cloud supporta solo i controlli per la compatibilità dei pacchetti PyPI.

gcloud

Per verificare la compatibilità con Managed Airflow (3ª gen.), esegui il comando environments check-upgrade e specifica una versione di Managed Airflow (3ª gen.) come destinazione.

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

Sostituisci:

  • ENVIRONMENT_NAME con il nome dell'ambiente.
  • LOCATION con la regione in cui si trova l'ambiente.
  • COMPOSER_3_VERSION con la versione e la build di Airflow a cui vuoi eseguire l'upgrade, nel formato airflow-x.y.z-build.t. Puoi utilizzare tutti gli alias di versione.

Esempio:

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

Esempi di messaggi di conflitto:

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

In alternativa, puoi eseguire questo controllo in modo asincrono. Utilizza l'argomento --async per effettuare una chiamata asincrona, quindi controlla il risultato con il comando gcloud composer operations describe.

API

Crea una richiesta API environments.checkUpgrade.

Specifica la versione immagine nel campo imageVersion:

{
  "imageVersion": "COMPOSER_3_VERSION"
}

Sostituisci COMPOSER_3_VERSION con la versione e la build di Airflow a cui vuoi eseguire l'upgrade, nel formato airflow-x.y.z-build.t. Puoi utilizzare tutti gli alias di versione.

Esegui l'upgrade dell'ambiente

Per eseguire l'upgrade dell'ambiente a una versione successiva di Managed Airflow o Airflow:

Console

  1. Nella console Google Cloud , vai alla pagina Ambienti.

    Vai ad Ambienti

  2. Nell'elenco degli ambienti, fai clic sul nome del tuo ambiente. Viene visualizzata la pagina Dettagli ambiente.

  3. Vai alla scheda Configurazione dell'ambiente.

  4. Individua la voce Versione immagine e fai clic su Esegui l'upgrade.

  5. Nel menu a discesa Versione immagine, seleziona una versione di Managed Airflow a cui eseguire l'upgrade.

  6. Fai clic su Esegui upgrade.

gcloud

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

Sostituisci:

  • ENVIRONMENT_NAME con il nome dell'ambiente.
  • LOCATION con la regione in cui si trova l'ambiente.
  • VERSION con la nuova versione immagine di Managed Airflow a cui vuoi eseguire l'upgrade, nel formato composer-a.b.c-airflow-x.y.z. Puoi anche utilizzare tutti gli alias di versione.

Ad esempio:

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

API

  1. Crea una richiesta API environments.patch.

  2. In questa richiesta:

    1. Nel parametro updateMask, specifica la maschera config.softwareConfig.imageVersion.

    2. Nel corpo della richiesta, nel campo imageVersion, specifica una nuova versione di cui vuoi eseguire l'upgrade.

Ad esempio:

// 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.14-airflow-2.11.1"
      }
    }
  }

Terraform

Il campo image_version nel blocco config.software_config controlla l'immagine Managed Airflow del tuo ambiente. In questo campo, specifica una nuova immagine Managed Airflow.

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

  config {
    software_config {
      image_version = "VERSION"
    }
  }
}

Sostituisci:

  • ENVIRONMENT_NAME con il nome dell'ambiente.
  • LOCATION con la regione in cui si trova l'ambiente. la nuova versione immagine di Managed Airflow di cui vuoi eseguire l'upgrade, nel formato composer-a.b.c-airflow-x.y.z. Puoi anche utilizzare tutti gli alias di versione.

Esempio:

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

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

Passaggi successivi