Actualizar entornos

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

En esta página, se describe cómo actualizar tu entorno a una nueva versión de Managed Airflow o Airflow.

Acerca de las operaciones de actualización

Puedes actualizar la versión de Managed Airflow, la versión de Airflow o ambas al mismo tiempo.

Cuando cambias la versión de Airflow o Managed Airflow que usa tu entorno, ocurre lo siguiente:

  • Managed Airflow vuelve a implementar los componentes de tu entorno con versiones nuevas de las imágenes de Managed Airflow.

  • Managed Airflow aplica los cambios de configuración de Airflow, como los paquetes de PyPI personalizados o las anulaciones de las opciones de configuración de Airflow, si tu entorno los tenía antes de la actualización.

  • Managed Airflow actualiza la conexión airflow_db de Airflow para que apunte a la nueva base de datos de Cloud SQL.

La actualización no cambia la forma en que te conectas a los recursos de tu entorno, como la URL del bucket de tu entorno o el servidor web de Airflow.

Limitaciones de las operaciones de actualización y reversión

Las operaciones de actualización tienen las siguientes limitaciones:

  • Las versiones de Managed Airflow se lanzan de forma gradual en todas las regiones compatibles con Managed Airflow durante varios días. Es posible que la versión más reciente de un lanzamiento en curso aún no esté disponible en tu región.

  • No puedes cambiar a una versión anterior de Managed Airflow o Airflow.

  • En la consola de Google Cloud , solo puedes actualizar a las versiones más recientes compatibles de Managed Airflow (2ª gen.).

  • En Google Cloud CLI, la API o Terraform, puedes actualizar un entorno a las versiones compatibles más recientes, tres versiones anteriores de Managed Airflow (2ª gen.), la última versión de parche de la versión secundaria anterior y a versiones con un cronograma de actualización extendido. No es posible actualizar a otras versiones de Managed Airflow (2ª gen.), incluso si todavía son compatibles y se pueden usar para crear un entorno nuevo.

    Ejemplo de opciones de actualización para Google Cloud CLI, la API y Terraform:

    • Versiones más recientes: composer-2.11.5-airflow-*
    • Tres versiones anteriores de Managed Airflow (2ª gen.): composer-2.11.4-airflow-*, composer-2.11.3-airflow-*, composer-2.11.2-airflow-*.
    • Último parche de la versión secundaria anterior de Managed Airflow (2ª gen.): composer-2.10.2-airflow-*
    • Versiones de Managed Airflow (2ª gen.) con un cronograma de actualización extendido: composer-2.10.2-airflow-*, composer-2.10.1-ariflow-*, composer-2.9.7-airflow-* y otras versiones con un cronograma de actualización extendido.
  • La versión a la que actualices debe admitir la versión actual de Python de tu entorno.

  • Los límites de cuota de la API de Compute Engine pueden impedir las actualizaciones. En la consola de Google Cloud , navega a la página IAM y administración > Cuotas y límites del sistema y verifica si no se excedió la cuota de la API de Compute Engine para la CPU. Si se está alcanzando el umbral de cuota, solicita una extensión de cuota antes de continuar con la operación de actualización.

  • No puedes actualizar tu entorno si la base de datos de Airflow contiene más de 16 GB de datos. Durante una actualización, se muestra una advertencia si el tamaño de la base de datos de Airflow es superior a 16 GB. En este caso, realiza el mantenimiento de la base de datos para reducir su tamaño.

  • Si usas el mecanismo de XCom para transferir archivos, asegúrate de usarlo de acuerdo con los lineamientos de Airflow. La transferencia de archivos grandes o de una gran cantidad de archivos con XCom afecta el rendimiento de la base de datos de Airflow y puede provocar fallas cuando se cargan instantáneas o se actualiza el entorno. Considera usar alternativas, como Cloud Storage, para transferir grandes volúmenes de datos.

Antes de comenzar

  • Te recomendamos que crees una instantánea nueva del entorno para poder volver a crearlo en caso de que sea necesario.

  • Tu cuenta debe tener un rol que pueda activar operaciones de actualización del entorno. Además, la cuenta de servicio del entorno debe tener un rol que tenga suficientes permisos para realizar operaciones de actualización. Para obtener más información, consulta Control de acceso.

  • Es posible que notes entradas de metadatos de Compute Engine para los clústeres de GKE que pertenecen a entornos de tu proyecto. Durante la creación y las actualizaciones de clúster de GKE, Google Kubernetes Engine agrega automáticamente entradas de metadatos a nivel del proyecto (google_compute_project_metadata) para hacer un seguimiento del uso del rango de direcciones IP secundarias. No modifiques ni quites estas entradas. Google Kubernetes Engine los administra automáticamente.

Verifica que tu entorno esté actualizado

Managed Airflow muestra advertencias cuando la imagen de tu entorno se acerca a la fecha de finalización de la asistencia completa. Puedes usar estas advertencias para mantener tu entorno compatible en todo momento.

Se muestra un mensaje de baja en la página de detalles del entorno
Figura 1. Se muestra un mensaje de baja en la página de detalles del entorno.

Managed Airflow hace un seguimiento de la versión de la imagen de Managed Airflow en la que se basa tu entorno. Cuando se acerque la fecha de finalización de la asistencia, podrás ver una advertencia en la lista de entornos y en la página Detalles del entorno.

Para verificar si tu entorno está actualizado, haz lo siguiente:

Console

  1. En la consola de Google Cloud , ve a la página Entornos.

    Ir a Entornos

  2. En la lista de entornos, haz clic en el nombre de tu entorno. Se abrirá la página Detalles del entorno.

  3. Ve a la pestaña Configuración del entorno.

  4. En el campo Versión de la imagen, se muestra uno de los siguientes mensajes:

    • Versión disponible más reciente: Tu imagen de entorno es totalmente compatible.

    • Nueva versión disponible: La imagen de tu entorno es completamente compatible y puedes actualizarla a una versión posterior.

    • La compatibilidad con esta versión de imagen finaliza en… La imagen del entorno se acerca al final del período de asistencia completa.

    • Esta versión no es compatible desde… Tu entorno pasó el período de asistencia completa.

gcloud

Esta funcionalidad no está disponible a través de Google Cloud CLI. En su lugar, puedes ver las actualizaciones sugeridas, que muestra las versiones nuevas que están disponibles.

API

Esta función no está disponible a través de la API. En su lugar, puedes ver las actualizaciones sugeridas, que muestra las versiones nuevas que están disponibles.

Ver actualizaciones sugeridas

Managed Airflow proporciona una lista de versiones de Managed Airflow a las que puedes actualizar tu entorno.

Para ver las versiones de Managed Airflow sugeridas para una actualización, haz lo siguiente:

Console

  1. En la consola de Google Cloud , ve a la página Entornos.

    Ir a Entornos

  2. En la lista de entornos, haz clic en el nombre de tu entorno. Se abrirá la página Detalles del entorno.

  3. Ve a la pestaña Configuración del entorno y haz clic en Actualizar versión de imagen.

  4. Para obtener la lista de versiones sugeridas, haz clic en el menú desplegable Versión de la imagen de Managed Airflow.

gcloud

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

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME por el nombre del entorno.
  • LOCATION por la región en la que se encuentra el entorno.

Ejemplo:

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

API

Puedes ver las versiones disponibles para una ubicación. Para ello, crea una solicitud a la API de imageVersions.list.

Por ejemplo:

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

Verifica si hay conflictos en los paquetes de PyPI

Puedes verificar si los paquetes de PyPI instalados en tu entorno tienen algún conflicto con los paquetes preinstalados en la nueva imagen de Managed Airflow.

Una verificación exitosa significa que no hay conflictos en las dependencias de paquetes de PyPI entre la versión actual y la especificada. Sin embargo, es posible que una operación de actualización no se realice correctamente por otros motivos.

Console

Para ejecutar una verificación de actualización en tu entorno, haz lo siguiente:

  1. En la consola de Google Cloud , ve a la página Entornos.

    Ir a Entornos

  2. En la lista de entornos, haz clic en el nombre de tu entorno. Se abrirá la página Detalles del entorno.

  3. Ve a la pestaña Configuración del entorno, busca la entrada Versión con imágenes y haz clic en Actualizar.

  4. En el cuadro de diálogo Actualización de la versión del entorno, en la lista desplegable Nueva versión, selecciona la versión de Managed Airflow a la que deseas actualizar.

  5. En la sección Compatibilidad de paquetes de PyPI, haz clic en Verificar la presencia de conflictos.

  6. Espera hasta que se complete la verificación. Si hay conflictos de dependencia de paquetes de PyPI, los mensajes de error que se muestran contienen detalles sobre los paquetes y las versiones de paquetes en conflicto.

gcloud

Para ejecutar una verificación de actualización de tu entorno, ejecuta el comando environments check-upgrade con la versión de la imagen de Managed Airflow a la que quieres actualizar:

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

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME por el nombre del entorno.
  • LOCATION por la región en la que se encuentra el entorno.
  • IMAGE_VERSION por la versión de imagen de Managed Airflow a la que deseas actualizar, en el formato composer-a.b.c-airflow-x.y.z. También puedes usar alias de versiones.

Ejemplo:

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

Resultado de ejemplo:

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.

Como alternativa, puedes ejecutar una verificación de actualización de forma asíncrona. Usa el argumento --async para realizar una llamada asíncrona y, luego, verifica el resultado con el comando gcloud composer operations describe.

API

Realiza una solicitud a la API de environments.checkUpgrade.

Especifica la versión con imágenes en el campo imageVersion:

{
  "imageVersion": "IMAGE_VERSION"
}

Reemplaza IMAGE_VERSION por la versión de la imagen de Managed Airflow a la que deseas actualizar, en el formato composer-a.b.c-airflow-x.y.z. También puedes usar alias de versión.

Verifica si hay conflictos con Managed Airflow (3ª gen.)

Si bien no es posible migrar tu entorno de Managed Airflow (2ª gen.) a Managed Airflow (3ª gen.) in situ, puedes verificar si hay problemas de compatibilidad con una verificación de actualización. Te recomendamos que lo hagas antes de migrar a Managed Airflow (3ª gen.).

Para verificar la compatibilidad con Managed Airflow (3ª gen.), realiza una verificación de actualización habitual de tu entorno de Managed Airflow (2ª gen.) y especifica una versión de Managed Airflow (3ª gen.) como destino.

Cada conflicto informado puede tener los siguientes tipos:

  • Los informes de conflictos de BLOCKING indican elementos de configuración del entorno incompatibles que no se admiten en Managed Airflow (3ª gen.). Te recomendamos que resuelvas estos conflictos antes de iniciar una migración a Managed Airflow (3ª gen.).

  • Los conflictos de NON_BLOCKING informan elementos de configuración del entorno que son diferentes en Managed Airflow (3ª gen.) y que podrían causar un comportamiento inesperado. Por ejemplo, los cambios de los valores predeterminados, como los períodos de mantenimiento predeterminados, se informan como conflictos no bloqueantes. Te recomendamos que verifiques si estos conflictos pueden causar problemas antes de iniciar el proceso de migración.

  • Los conflictos de paquetes de PyPI también se informan como parte de esta verificación. Se informan por separado de los conflictos de configuración, de la misma manera que para una verificación de compatibilidad de paquetes de PyPI normal.

Console

Para verificar la compatibilidad con Managed Airflow (Gen 3), usa gcloud CLI o la API de Cloud Composer. La consola deGoogle Cloud solo admite verificaciones de compatibilidad de paquetes de PyPI.

gcloud

Para verificar la compatibilidad con Managed Airflow (3ª gen.), ejecuta el comando environments check-upgrade y especifica una versión de Managed Airflow (3ª gen.) como destino.

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

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME por el nombre del entorno.
  • LOCATION por la región en la que se encuentra el entorno.
  • COMPOSER_3_IMAGE_VERSION por la versión de imagen de Managed Airflow (3ª gen.) de destino, en el formato composer-3-airflow-x.y.z-build.t. También puedes usar los alias de versión de Managed Airflow (3ª gen.).

Ejemplo:

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

Ejemplos de mensajes de conflicto:

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

Como alternativa, puedes ejecutar esta verificación de forma asíncrona. Usa el argumento --async para realizar una llamada asíncrona y, luego, verifica el resultado con el comando gcloud composer operations describe.

API

Realiza una solicitud a la API de environments.checkUpgrade.

Especifica la versión con imágenes en el campo imageVersion:

{
  "imageVersion": "COMPOSER_3_IMAGE_VERSION"
}

Reemplaza COMPOSER_3_IMAGE_VERSION por la versión de la imagen de destino de Managed Airflow (Gen 3), en el formato composer-3-airflow-x.y.z-build.t. También puedes usar los alias de versión de Managed Airflow (3ª gen.).

Actualiza tu entorno

Para actualizar tu entorno a una versión posterior de Managed Airflow o Airflow, sigue estos pasos:

Console

  1. En la consola de Google Cloud , ve a la página Entornos.

    Ir a Entornos

  2. En la lista de entornos, haz clic en el nombre de tu entorno. Se abrirá la página Detalles del entorno.

  3. Ve a la pestaña Configuración del entorno.

  4. Busca el elemento Versión de imagen y haz clic en Actualizar.

  5. En el menú desplegable Versión de imagen, selecciona la versión de Managed Airflow a la que deseas actualizar.

  6. Haz clic en Actualizar.

gcloud

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

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME por el nombre del entorno.
  • LOCATION por la región en la que se encuentra el entorno.
  • IMAGE_VERSION por la versión de imagen de Managed Airflow a la que deseas actualizar, en el formato composer-a.b.c-airflow-x.y.z. También puedes usar alias de versiones.

Por ejemplo:

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

API

  1. Realiza una solicitud a la API de environments.patch.

  2. En esta solicitud, realiza lo siguiente:

    1. En el parámetro updateMask, especifica la máscara config.softwareConfig.imageVersion.

    2. En el cuerpo de la solicitud, en el campo imageVersion, especifica una versión nueva a la que quieras actualizar.

Por ejemplo:

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

El campo image_version en el bloque config.software_config controla la versión de la imagen de Managed Airflow de tu entorno. En este campo, especifica una nueva versión de la imagen de Managed Airflow en el formato 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"
    }
  }
}

Reemplaza lo siguiente:

  • ENVIRONMENT_NAME por el nombre del entorno.
  • LOCATION por la región en la que se encuentra el entorno.
  • IMAGE_VERSION por la versión de imagen de Managed Airflow a la que deseas actualizar, en el formato composer-a.b.c-airflow-x.y.z. También puedes usar todos los alias de versión.

Ejemplo:

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"
    }
  }
}

¿Qué sigue?