En esta página, se describe cómo actualizar la versión de Airflow o la versión de Cloud Composer que ejecuta tu entorno.
Durante la actualización, Cloud Composer realiza estas acciones:
Vuelve a implementar los grupos de trabajadores y programadores de Airflow en un nuevo espacio de nombres de Kubernetes. Después de que se complete la actualización, Airflow usará una nueva base de datos de MySQL. El nombre de la base de datos coincide con el espacio de nombres de Kubernetes. Se conserva el historial de ejecuciones del DAG.
Cloud Composer actualiza la conexión
airflow_db
de Airflow para que apunte a la nueva base de datos de Cloud SQL.
Estos cambios afectan la forma de acceder a los pods y conectarse a la base de datos de Cloud SQL.
- Para acceder a los pods del clúster de GKE después de la actualización, debes usar comandos
kubectl
que tengan en cuenta el espacio de nombres. Por ejemplo, para mostrar los pods en el clúster, usakubectl get pods -A
. Para ejecutar un comando en un pod, usakubectl exec -n <NAMESPACE> ...
. - Si usas conexiones y cargas de trabajo de Airflow que hacen referencia directamente al proxy de SQL, usa el espacio de nombres predeterminado como parte del nombre de host:
airflow-sqlproxy-service.default
, noairflow-sqlproxy-service
.
La actualización de Cloud Composer no cambia la conexión con los recursos del entorno, como direcciones IP de VM de nodo de Google Kubernetes Engine, instancia de Cloud SQL, bucket de Cloud Storage o nombre de dominio del servidor web de Airflow.
Antes de comenzar
- Actualmente, la actualización de los entornos está en vista previa. Usa esta función con precaución en los entornos de producción.
- Se requiere la siguiente función para actualizar:
roles/editor
oroles/composer.admin
. - Detén todos los DAG y espera a que las tareas en curso finalicen antes de la actualización.
- Puedes actualizar Cloud Composer, la versión de Airflow o ambos al mismo tiempo.
- La combinación de Cloud Composer y Airflow a la que estás actualizando debe ser una versión actualizada.
- Para ver las actualizaciones disponibles, consulta cómo ver las actualizaciones disponibles. Para obtener las últimas funciones y correcciones, considera obtener la versión más reciente de Cloud Composer.
- Para obtener la lista de paquetes y personalizaciones de PyPI en una versión compatible, consulta la lista de versiones de Cloud Composer.
Antes de realizar la actualización, asegúrate de conocer las diferencias entre las versiones actuales de Airflow y Cloud Composer, y las versiones a las que deseas actualizar. Los cambios incompatibles pueden hacer que los DAG se rompan.
Mantenimiento de la base de datos de Airflow
La base de datos de Airflow está recopilando más y más datos con el tiempo.
Puedes usar este DAG de mantenimiento para reducir el contenido de tu base de datos. Este DAG quitará las entradas antiguas de las tablas DagRun, TaskInstance, Log, XCom, Job DB y SlasMiss.
DAG de mantenimiento de la base de datos
También puedes quitar entradas relacionadas con los DAG que ya no son necesarias, como se describió en la sección "Borra un DAG".
Limitaciones
- No puedes pasar a una versión anterior de Cloud Composer o Airflow.
- Solo puedes actualizar a la última versión de Cloud Composer dentro de la misma versión principal, como
composer-1.12.4-airflow-1.10.10
acomposer-1.13.0-airflow-1.10.10
. No se permite la actualización decomposer-1.4.0-airflow-1.10.0
acomposer-2.0.0-airflow-1.10.0
porque la versión principal de Cloud Composer cambia de1
a2
. - La versión con imágenes que actualices debe ser compatible con la versión de Python actual de tu entorno.
- Las actualizaciones no se pueden realizar si la base de datos de Airflow contiene más de 16 GB de datos. Durante la actualización, verás una advertencia si es el caso y necesitarás realizar el mantenimiento de la base de datos como se describió en la sección de mantenimiento de la base de datos de Airflow.
Conoce las actualizaciones disponibles
Para ver las versiones de Cloud Composer a las que puedes actualizar, sigue estos pasos:
Console
Abre la página Entornos en Google Cloud.
Haz clic en el Nombre del entorno.
En la pestaña Configuración del entorno, haz clic en Actualizar versión con imágenes.
Para las versiones disponibles, haz clic en el menú desplegable Versión con imágenes de Cloud Composer.
gcloud
gcloud beta composer environments list-upgrades ENVIRONMENT_NAME \ --location LOCATION
Donde:
ENVIRONMENT_NAME
es el nombre del entorno.LOCATION
es la región de Compute Engine en la que se encuentra el entorno.
Por ejemplo:
gcloud beta composer environments list-upgrades test-environment \ --location us-central1 ┌─────────────────────────────────────────────────────────────────────────────┐ │ AVAILABLE UPGRADES │ ├──────────────────────────────┬──────────────────┬───────────────────────────┤ │ IMAGE VERSION │ COMPOSER DEFAULT │ SUPPORTED PYTHON VERSIONS │ ├──────────────────────────────┼──────────────────┼───────────────────────────┤ │ composer-1.4.0-airflow-1.9.0 │ True │ 2,3 │ └──────────────────────────────┴──────────────────┴───────────────────────────┘
API
Para ver las versiones disponibles con la API de REST de Cloud Composer, crea una solicitud a la API imageVersions.list
y proporciona el proyecto y la ubicación con el formato projects/{projectId}/locations/{locationId}
.
Por ejemplo:
GET https://composer.googleapis.com/v1/projects/test-project-id/locations/us-central1/imageVersions { "imageVersions": [ { "imageVersionId": "composer-1.4.2-airflow-1.10.0", "supportedPythonVersions": [ "2", "3" ] }, { "imageVersionId": "composer-1.4.2-airflow-1.9.0", "isDefault": true, "supportedPythonVersions": [ "2", "3" ] } ] }
Actualiza la versión de Cloud Composer
Para actualizar la versión de Cloud Composer que se ejecuta en tu entorno. sigue estos pasos:
Console
Abre la página Entornos en Google Cloud.
Haz clic en el Nombre del entorno para modificarlo.
En la pestaña Configuración del entorno, haz clic en Actualizar versión con imágenes.
Haz clic en el menú desplegable Versión con imágenes de Cloud Composer y selecciona una versión.
Haga clic en Enviar.
gcloud
gcloud beta composer environments update ENVIRONMENT_NAME \ --location LOCATION --image-version VERSION
Donde:
ENVIRONMENT_NAME
es el nombre del entorno.LOCATION
es la región de Compute Engine donde se encuentra el entorno.VERSION
es la versión de Cloud Composer y la versión de Airflow que se usará para tu entorno en el formatocomposer-a.b.c-airflow-x.y.z
ocomposer-a.b.c-airflow-x.y
. Si no especificas el parche de Airflow, se usará la versión de parche más reciente disponible para la versión principal y secundaria.
Por ejemplo:
gcloud beta composer environments update test-environment \ --location us-central1 --image-version composer-latest-airflow-1.10.1
API
Para actualizar con la API de REST de Cloud Composer, crea una solicitud a la API environments.patch
. Proporciona la versión en el formulario composer-a.b.c-airflow-x.y.z
.
Por ejemplo:
PATCH https://composer.googleapis.com/v1beta1/projects/test-project/locations/us-central1/environments/test-environment?updateMask=config.software_config.image_version
El cuerpo de la solicitud incluye imageVersion
:
{ "config": { "softwareConfig": { "imageVersion": "composer-1.6.0-airflow-1.10.1" } } }
Actualiza la versión de Airflow
Cuando tu entorno ejecuta la última versión de Cloud Composer, puedes usar el SDK de Cloud a fin de actualizar solo la versión de Airflow, por ejemplo, para actualizar de composer-1.6.1-airflow-1.9.0
a composer-1.6.1-airflow-1.10.0
.
gcloud beta composer environments update ENVIRONMENT_NAME \ --location LOCATION --airflow-version VERSION
Donde:
ENVIRONMENT_NAME
es el nombre del entorno.LOCATION
es la región de Compute Engine donde se encuentra el entorno.VERSION
es la versión de Airflow que se usará para tu entorno en el formatox.y.z
ox.y
.
Por ejemplo:
gcloud beta composer environments update test-environment \ --location us-central1 --airflow-version=1.10.1