Ejecuta un entorno de Airflow local con la herramienta de la CLI de desarrollo local de Composer

Cloud Composer 1 | Cloud Composer 2 | Cloud Composer 3

En esta sección, se describe cómo crear, configurar y ejecutar un entorno de Airflow local con la herramienta de la CLI de desarrollo local de Composer.

Acerca de la herramienta de la CLI de desarrollo local de Composer

La herramienta de CLI de desarrollo local de Composer optimiza el desarrollo de DAG de Apache Airflow para Cloud Composer mediante la ejecución local de un entorno de Airflow. Esta entorno de Airflow local usa una imagen de un Cloud Composer específico versión.

Puedes crear un entorno local de Airflow basado en una red entorno de Cloud Composer. En este caso, el entorno local de Airflow El entorno toma la lista de los paquetes de PyPI instalados y la variable de entorno. de tu entorno de Cloud Composer.

Puedes usar este entorno local de Airflow para las pruebas y el desarrollo para probar el código DAG, los paquetes de PyPI o la configuración de Airflow opciones de estado.

Antes de comenzar

  • La herramienta de la CLI de desarrollo local de Composer crea entornos de Airflow locales en un directorio en el que ejecutas el comando composer-dev create. Para acceder a tu entorno de Airflow local, ejecuta los comandos de la herramienta en la ruta en la que creaste inicialmente el entorno local. Todos los datos de un entorno local se almacena en un subdirectorio en la ruta de acceso donde creaste el entorno local: ./composer/<local_environment_name>.

  • Tu computadora debe tener suficiente espacio en el disco para almacenar Cloud Composer imágenes de contenedores. La herramienta de la CLI de desarrollo local de Composer almacena un archivo de imagen para cada uno Versión de Cloud Composer. Por ejemplo, si tienes dos locales de Airflow con diferentes versiones de Cloud Composer, La herramienta de la CLI de desarrollo local de Composer almacena dos Cloud Composer imágenes de contenedores.

  • La herramienta de la CLI de desarrollo local de Composer usa resultados coloreados. Puedes inhabilitar resultado coloreado con la variable NO_COLOR=1: NO_COLOR=1 composer-dev <other commands>

  • Si solo tienes un entorno local, puedes omitir su configuración de todos los comandos composer-dev, excepto run-airflow-cmd.

  • Instala las dependencias de la herramienta de la CLI de desarrollo local de Composer:

  • Instala Docker. Docker debe ser instalarse y ejecutarse en el sistema local. Para verificar que Docker esté puedes ejecutar cualquier comando de la CLI de Docker, como docker ps.

Configura las credenciales

Si aún no lo has hecho, Obtén credenciales de usuario nuevas para usar con las credenciales predeterminadas de la aplicación:

gcloud auth application-default login

Accede a gcloud CLI con tu Cuenta de Google:

gcloud auth login

Todas las llamadas a la API realizadas por la herramienta de CLI de desarrollo local de Composer y los DAG se que se ejecute desde la cuenta que usas en gcloud CLI. Para ejemplo, si un DAG en tu entorno local de Airflow lee el contenido de un bucket de Cloud Storage, esta cuenta debe tener los permisos para de acceso al bucket. Es diferente de Cloud Composer. en los que la cuenta de servicio de un entorno realiza las llamadas.

Instala la herramienta de la CLI de desarrollo local de Composer

Clona el repositorio de la CLI de desarrollo local de Composer:

git clone https://github.com/GoogleCloudPlatform/composer-local-dev.git

En el directorio de nivel superior del repositorio clonado, ejecuta lo siguiente:

pip install .

Según la configuración de pip, la ruta de acceso en la que está instalada la herramienta Es posible que no esté en la variable PATH. Si este es el caso, pip muestra una advertencia. mensaje. Puedes usar la información de este mensaje de advertencia para agregar lo siguiente: en la variable PATH de tu sistema operativo.

Crea un entorno de Airflow local con una versión específica de Cloud Composer

Para enumerar las versiones disponibles de Cloud Composer, ejecuta el siguiente comando:

composer-dev list-available-versions --include-past-releases --limit 10

Para crear un entorno local de Airflow con parámetros predeterminados, ejecuta el siguiente comando:

composer-dev create \
  --from-image-version IMAGE_VERSION \
  LOCAL_ENVIRONMENT_NAME

Otros parámetros:

composer-dev create \
  --from-image-version IMAGE_VERSION \
  --project PROJECT_ID \
  --port WEB_SERVER_PORT \
  --dags-path LOCAL_DAGS_PATH \
  LOCAL_ENVIRONMENT_NAME

Reemplaza lo siguiente:

  • IMAGE_VERSION por el nombre de la imagen de Cloud Composer.
  • PROJECT_ID por el ID del proyecto.
  • WEB_SERVER_PORT por el puerto en el que debe escuchar el servidor web de Airflow
  • LOCAL_DAGS_PATH por la ruta a un directorio local en el que se encuentran los archivos DAG ubicado.
  • LOCAL_ENVIRONMENT_NAME por el nombre de este entorno local de Airflow

Ejemplo:

composer-dev create \
  --from-image-version composer-2.8.6-airflow-2.7.3 \
  example-local-environment

Crea un entorno de Airflow local desde un entorno de Cloud Composer

Solo la siguiente información se toma de un Cloud Composer entorno:

Otra información y parámetros de configuración del entorno, como No se copian los archivos DAG, el historial de ejecuciones de DAG, las variables de Airflow ni las conexiones de tu entorno de Cloud Composer.

Para crear un entorno de Airflow local a partir de una red Entorno de Cloud Composer:

composer-dev create LOCAL_ENVIRONMENT_NAME \
    --from-source-environment ENVIRONMENT_NAME \
    --location LOCATION \
    --project PROJECT_ID \
    --port WEB_SERVER_PORT \
    --dags-path LOCAL_DAGS_PATH

Reemplaza lo siguiente:

  • LOCAL_ENVIRONMENT_NAME por un nombre para el entorno local de Airflow
  • ENVIRONMENT_NAME por el nombre del entorno de Cloud Composer
  • LOCATION por la región en la que se encuentra el entorno de Cloud Composer ubicado.
  • PROJECT_ID por el ID del proyecto.
  • WEB_SERVER_PORT por un puerto para el servidor web local de Airflow
  • LOCAL_DAGS_PATH por una ruta de acceso a un directorio local en el que se encuentran los DAG ubicado.

Ejemplo:

composer-dev create example-local-environment \
  --from-source-environment example-environment \
  --location us-central1 \
  --project example-project \
  --port 8081 \
  --dags-path example_directory/dags

Inicia un entorno local de Airflow

Para iniciar un entorno local de Airflow, ejecuta el siguiente comando:

composer-dev start LOCAL_ENVIRONMENT_NAME

Reemplaza lo siguiente:

  • LOCAL_ENVIRONMENT_NAME por el nombre de un entorno local de Airflow

Detén o reinicia un entorno local de Airflow

Cuando reinicias un entorno de Airflow local, la CLI de desarrollo local de Composer reinicia el contenedor de Docker en el que se ejecuta el entorno. Todo Airflow componentes se detienen y se vuelven a iniciar. Como resultado, todas las ejecuciones de DAG ejecutados durante un reinicio se marcan como con errores .

Para reiniciar o iniciar un entorno de Airflow local detenido, ejecuta el siguiente comando:

composer-dev restart LOCAL_ENVIRONMENT_NAME

Reemplaza lo siguiente:

  • LOCAL_ENVIRONMENT_NAME por el nombre de un entorno local de Airflow

Para detener un entorno local de Airflow, ejecuta el siguiente comando:

composer-dev stop LOCAL_ENVIRONMENT_NAME

Agregar y actualizar DAG

Los DAG se almacenan en el directorio que especificaste en --dags-path. cuando creaste tu entorno local de Airflow. De forma predeterminada, este directorio es ./composer/<local_environment_name>/dags. Puedes obtener la que usa tu entorno con el comando describe.

Para agregar y actualizar DAG, cambia los archivos en este directorio. No es necesario reiniciar tu entorno local de Airflow.

Consulta los registros del entorno de Airflow local

Puedes ver los registros recientes desde un contenedor de Docker que ejecute tu Airflow local en un entorno de nube. Así, puedes supervisar eventos relacionados con el contenedor Registros de Airflow para errores, como conflictos de dependencias causados por paquetes de PyPI instalación.

Sigue estos pasos para visualizar registros desde un contenedor de Docker que ejecuta tu entorno local de Airflow: ejecuta lo siguiente:

composer-dev logs LOCAL_ENVIRONMENT_NAME --max-lines 10

Para seguir la secuencia de registro, omite el argumento --max-lines:

composer-dev logs LOCAL_ENVIRONMENT_NAME

Ejecuta un comando de la CLI de Airflow

Puedes ejecutar los comandos de la CLI de Airflow en tu instancia de Airflow.

Para ejecutar un comando de la CLI de Airflow, sigue estos pasos:

composer-dev run-airflow-cmd LOCAL_ENVIRONMENT_NAME \
  SUBCOMMAND SUBCOMMAND_ARGUMENTS

Ejemplo:

composer-dev run-airflow-cmd example-local-environment dags list -o table

Configura entornos locales de Airflow

La herramienta de la CLI de desarrollo local de Composer almacena los parámetros de configuración de una instancia Entorno de Airflow, como variables de entorno y paquete de PyPI en el directorio del entorno local (./composer/<local_environment_name>).

La configuración se aplica cuando se inicia un entorno local de Airflow. Para Por ejemplo, si agregas requisitos contradictorios del paquete de PyPI, Composer Local La herramienta de la CLI de desarrollo informa errores cuando inicias el entorno local.

Las conexiones de Airflow se almacenan en la base de datos del entorno local de Airflow en un entorno de nube. Para configurarlos, ejecuta la CLI de Airflow. o almacenando los parámetros de conexión en variables de entorno. Para obtener más información sobre las formas de crear y configurar conexiones, consulta Administra conexiones en la documentación de Airflow.

Obtén una lista y el estado de los entornos locales de Airflow

Para enumerar todos los entornos locales de Airflow disponibles y ver sus estados, sigue estos pasos:

composer-dev list

Para describir un entorno específico y obtener detalles como la versión de la imagen, la ruta de acceso de los DAG y la URL del servidor web de un entorno, haz lo siguiente:

composer-dev describe LOCAL_ENVIRONMENT_NAME

Reemplaza lo siguiente:

  • LOCAL_ENVIRONMENT_NAME por el nombre del entorno local de Airflow

Enumerar las imágenes que usan los entornos locales de Airflow

Para mostrar una lista de todas las imágenes que usa la herramienta de la CLI de desarrollo local de Composer, ejecuta el siguiente comando:

docker images --filter=reference='*/cloud-airflow-releaser/*/*'

Instala complementos y cambia los datos

Los complementos y los datos del entorno local de Airflow se obtienen del directorio del entorno local: ./composer/<local_environment_name>/data y ./composer/<local_environment_name>/plugins).

Para cambiar el contenido de los directorios /data y /plugins, agrega o quita archivos en estos directorios. Docker propaga automáticamente los cambios de archivos a tu entorno de Airflow local.

La herramienta de la CLI de desarrollo local de Composer no admite que se especifique un para datos y complementos.

Configure las variables de entorno

Para configurar las variables de entorno, edita variables.env. en el directorio de entorno: ./composer/<local_environment_name>/variables.env

El archivo variables.env debe contener definiciones de pares clave-valor, una línea para cada una variable de entorno. Para cambiar las opciones de configuración de Airflow, usa el AIRFLOW__SECTION__KEY. Para obtener más información sobre los variables de entorno, consulta Referencia de configuración de Airflow.

EXAMPLE_VARIABLE=True
ANOTHER_VARIABLE=test
AIRFLOW__WEBSERVER__DAG_DEFAULT_VIEW=graph

Para aplicar los cambios, reinicia tu entorno local de Airflow.

Instala o quita paquetes de PyPI

Para instalar o quitar paquetes de PyPI, modifica el archivo requirements.txt en el directorio del entorno: ./composer/<local_environment_name>/requirements.txt.

Los requisitos deben seguir el formato que se especifica en PEP-508 donde cada requisito es se especifica en minúsculas y consiste en el nombre del paquete con extras opcionales y especificadores de versión.

Para aplicar los cambios, reinicia tu entorno local de Airflow.

Cambia a otra imagen de Cloud Composer

Puedes usar cualquier imagen de Cloud Composer con el desarrollo local de Composer. CLI y cambiar entre las imágenes. Este enfoque es diferente del actualizar tu entorno de Cloud Composer, ya que parámetros de configuración del entorno de Airflow local comienza el ciclo de vida.

Por ejemplo, después de que una nueva versión de Cloud Composer puedes cambiar tu entorno para usar la versión nueva y mantener configuración del entorno existente de Airflow local. Como otro ejemplo, puedes entre diferentes versiones de Airflow dentro de un Versión de Cloud Composer.

Sigue estos pasos para cambiar la imagen del entorno que usa tu entorno local de Airflow:

  1. Edita el archivo de configuración del entorno local: ./composer/<local_environment_name>/config.json

  2. Cambia el valor del parámetro composer_image_version. Para ver los valores disponibles, puedes hacer lo siguiente: Enumera las versiones disponibles de Cloud Composer.

  3. Para aplicar los cambios, reinicia tu entorno local de Airflow.

Borra un entorno local de Airflow

Precaución: Asegúrate de haber guardado todos los datos necesarios del entorno. como registros y configuración.

Para borrar un entorno de Airflow local, ejecuta el siguiente comando:

composer-dev remove LOCAL_ENVIRONMENT_NAME

Si el entorno se está ejecutando, agrega la marca --force para forzar su eliminación.

Borra las imágenes de Docker

Para borrar todas las imágenes que descargó la herramienta de la CLI de desarrollo local de Composer, ejecuta el siguiente comando:

docker rmi $(docker images --filter=reference='*/cloud-airflow-releaser/*/*' -q)

Soluciona problemas

En esta sección, se proporcionan soluciones a problemas habituales.

No se puede iniciar un entorno local en macOS

Si instalaste el paquete composer-dev en un directorio en el que Docker no puede acceder a él, es posible que tu entorno local no se inicie.

Por ejemplo, si Python está instalado en el directorio /opt, como cuando instálalo con la configuración predeterminada de Homebrew en macOS y, luego, El paquete composer-dev también se instala en el directorio /opt. Porque Docker cumple con las reglas de la zona de pruebas de Apple, el directorio /opt disponible de forma predeterminada. Además, no puedes agregarlo a través de la IU (Configuración &gt; Recursos &gt; Uso compartido de archivos).

En este caso, la herramienta de la CLI de desarrollo local de Composer genera un mensaje de error que es similar al siguiente ejemplo:

Failed to create container with an error: 400 Client Error for ...
Bad Request ("invalid mount config for type "bind": bind source path does not exist:
/opt/homebrew/lib/python3.9/site-packages/composer_local_dev/docker_files/entrypoint.sh

Possible reason is that composer-dev was installed in the path that is
not available to Docker. See...")

Puedes usar una de las siguientes soluciones:

  • Instala Python o el paquete composer-dev en un directorio diferente, por lo que para que Docker pueda acceder al paquete.
  • Edita manualmente el ~/Library/Group\ Containers/group.com.docker/settings.json archivo y agrega /opt a filesharingDirectories.

¿Qué sigue?