Airflow géré (3e génération) | Airflow géré (2e génération) | Airflow géré (1re génération, version héritée)
Apache Airflow inclut une interface utilisateur Web appelée UI Airflow, que vous pouvez utiliser pour gérer les DAG Airflow, afficher les journaux d'exécution des DAG, surveiller Airflow et effectuer des tâches d'administration.
À propos du serveur Web Airflow
Chaque environnement Airflow géré dispose d'un serveur Web qui exécute l'UI Airflow. Le serveur Web fait partie de l'architecture de l'environnement Airflow géré.
Le serveur Web analyse les fichiers de définition du DAG
dans le dags/ dossier et doit
pouvoir accéder aux données et aux ressources du DAG pour le charger et diffuser des requêtes HTTP.
Le serveur Web actualise les DAG toutes les 60 secondes, ce qui correspond à la valeur par défaut de worker_refresh_interval dans Airflow géré. Une erreur de serveur Web peut survenir si le serveur Web ne peut pas analyser tous les DAG pendant l'intervalle d'actualisation.
Le chargement des DAG peut prendre plus de 60 secondes s'il y a un grand nombre de fichiers DAG ou si une charge de travail non négligeable est nécessaire pour charger les fichiers DAG. Pour vous assurer que le serveur Web reste accessible quel que soit temps de chargement des DAG, vous pouvez configurer le chargement asynchrone des DAG pour analyser et charger des DAG en arrière-plan selon un intervalle préconfiguré (disponible dans composer-1.7.1-airflow-1.10.2 et versions ultérieures).
Cette configuration peut également réduire le temps d'actualisation des DAG.
Outre le dépassement de l'intervalle d'actualisation des nœuds de calcul, le serveur Web peut dans la plupart des cas gérer de manière optimale les échecs de chargement des DAG. Les DAG qui provoquent le plantage ou la fermeture du serveur Web peuvent entraîner l'affichage d'erreurs dans le navigateur. Pour en savoir plus, reportez-vous à la section Dépanner les DAG.
Si vous continuez à rencontrer des problèmes de serveur Web en raison de l'analyse des DAG, nous vous recommandons d'utiliser le chargement asynchrone des DAG.
Avant de commencer
Vous devez disposer d'un rôle permettant d'afficher les environnements Airflow gérés. Pour plus d'informations, consultez la section Contrôle des accès.
Lors de la création d'un environnement, Airflow géré configure l'URL du serveur Web qui exécute l'UI Airflow. L'URL n'est pas personnalisable.
- La fonctionnalité de contrôle des accès à l'UI Airflow (contrôle des accès basé sur les rôles Airflow) pour l'UI Airflow est compatible avec les environnements Airflow gérés exécutant Composer version 1.13.4 ou ultérieure, Airflow version 1.10.10 ou ultérieure, et Python 3.
Accéder à l'UI Airflow
Le service du serveur Web Airflow est déployé sur le domaine appspot.com et permet d'accéder à l'UI Airflow. Airflow géré (1re génération, version héritée) permet d'accéder à l'interface en fonction des identités des utilisateurs et des liaisons de stratégie IAM définies pour les utilisateurs. Airflow géré (1re génération, version héritée) utilise Identity-Aware Proxy
à cet effet.
Il peut s'écouler 25 minutes après la création d'un environnement Airflow géré, avant que l'UI termine l' hébergement et devienne accessible.
Accéder à l'UI Airflow depuis la Google Cloud console
Pour accéder à l'UI Airflow depuis la Google Cloud console :
Dans la Google Cloud console, accédez à la page Environnements.
Dans la colonne Serveur Web Airflow, cliquez sur le lien Airflow correspondant à votre environnement.
Connectez-vous avec un compte Google disposant des autorisations appropriées.
Obtenir l'URL de l'UI Airflow avec Google Cloud CLI
Vous pouvez accéder à l'UI Airflow depuis n'importe quel navigateur Web. Pour obtenir l'URL de l'UI Airflow, exécutez la commande suivante dans Google Cloud CLI :
gcloud composer environments describe ENVIRONMENT_NAME \
--location LOCATION
Remplacez les éléments suivants :
ENVIRONMENT_NAME: nom de votre environnementLOCATION: région où se trouve l'environnement
La commande gcloud affiche les propriétés d'un environnement Airflow géré, y compris l'URL de l'UI Airflow. L'URL est répertoriée en tant que airflowUri.
config:
airflowUri: https://example-tp.appspot.com
Configurer le chargement asynchrone des DAG
Lorsque le chargement asynchrone des DAG est activé, le serveur Web Airflow crée un processus. Ce processus charge les DAG en arrière-plan, envoie les DAG nouvellement chargés à des intervalles définis par l'option dagbag_sync_interval, puis se met en veille.
Le processus s'active régulièrement pour recharger les DAG, l'intervalle étant défini par l'option collect_dags_interval.
Pour activer le chargement asynchrone des DAG, procédez comme suit :
Désactivez la sérialisation des DAG. Le chargement asynchrone des DAG ne peut pas être utilisé avec la sérialisation des DAG. L'utilisation des options de configuration Airflow
async_dagbag_loaderetstore_serialized_dagsgénère des erreurs HTTP 503 et entraîne un panne de votre environnement.Ignorez les options de configuration Airflow suivantes :
Section Clé Valeur Remarques webserverasync_dagbag_loaderTrueLa valeur par défaut est False.webservercollect_dags_interval30La valeur par défaut est 30. Utilisez une valeur plus faible pour obtenir des actualisations plus rapides.webserverdagbag_sync_interval10La valeur par défaut est 10.webserverworker_refresh_interval3600La valeur par défaut est 60. Avec le chargement asynchrone des DAG, vous pouvez utiliser un intervalle d'actualisation plus long.
Redémarrer le serveur Web
Lors du débogage ou du dépannage des environnements Airflow gérés, certains problèmes peuvent être résolus en redémarrant le serveur Web Airflow. Vous pouvez redémarrer le serveur Web à l'aide de l'API restartWebServer ou de la commande restart-web-server dans Google Cloud CLI :
gcloud composer environments restart-web-server ENVIRONMENT_NAME \
--location=LOCATION
Remplacez les éléments suivants :
ENVIRONMENT_NAME: nom de votre environnementLOCATION: région où se trouve l'environnement
Configurer l'accès réseau au serveur Web
Les paramètres d'accès au serveur Web Airflow ne dépendent pas de la configuration réseau de votre environnement. Vous configurez l'accès au serveur Web séparément. Par exemple, un environnement d'adresse IP privée peut toujours laisser l'UI Airflow accessible depuis Internet.
Il n'est pas possible de configurer les plages d'adresses IP autorisées pour qu'elles soient des adresses IP privées.
Console
Dans la Google Cloud console, accédez à la page Environnements.
Dans la liste des environnements, cliquez sur le nom de votre environnement. La page Détails de l'environnement s'ouvre.
Accédez à l'onglet Configuration de l'environnement.
Dans la section Configuration réseau , recherchez l'élément Contrôle de l'accès au serveur Web , puis cliquez sur Modifier.
Dans la boîte de dialogue Contrôle de l'accès réseau au serveur Web :
Pour autoriser l'accès au serveur Web Airflow à partir de toutes les adresses IP, sélectionnez Autoriser l'accès à partir de toutes les adresses IP.
Pour limiter l'accès à des plages d'adresses IP spécifiques, sélectionnez Autoriser l'accès uniquement depuis des adresses IP spécifiques. Dans le champ Plage d'adresses IP, spécifiez une plage d'adresses IP au format CIDR. Dans le champ Description, spécifiez une description facultative pour cette plage. Si vous souhaitez spécifier plusieurs plages, cliquez sur Ajouter une plage d'adresses IP.
Pour refuser l'accès pour toutes les adresses IP, sélectionnez Autoriser l'accès uniquement depuis des adresses IP spécifiques , puis cliquez sur Supprimer l'élément à côté de l'entrée de plage vide.
gcloud
Lorsque vous mettez à jour un environnement, les arguments suivants contrôlent les paramètres d'accès au serveur Web :
--web-server-allow-allfournit un accès à Airflow à partir de toutes les adresses IP. Il s'agit de l'option par défaut.--update-web-server-allow-iplimite l'accès à des plages d'adresses IP sources spécifiques. Pour spécifier plusieurs plages d'adresses IP, utilisez cet argument plusieurs fois.--web-server-deny-allinterdit l'accès pour toutes les adresses IP.
gcloud composer environments update ENVIRONMENT_NAME \
--location LOCATION \
--update-web-server-allow-ip ip_range=WS_IP_RANGE,description=WS_RANGE_DESCRIPTION
Remplacez les éléments suivants :
ENVIRONMENT_NAME: nom de votre environnementLOCATION: région où se trouve l'environnementWS_IP_RANGE: plage d'adresses IP, au format CIDR, pouvant accéder à l'UI AirflowWS_RANGE_DESCRIPTION: description de la plage d'adresses IP
Exemple :
gcloud composer environments update example-environment \
--location us-central1 \
--update-web-server-allow-ip ip_range=192.0.2.0/24,description="example range" \
--update-web-server-allow-ip ip_range=192.0.4.0/24,description="example range 2"
API
Rédigez une requête API [
environments.patch][api-patch].Dans cette requête :
Dans le paramètre
updateMask, spécifiez le masqueconfig.webServerNetworkAccessControl.Dans le corps de la requête, spécifiez comment les journaux des tâches Airflow doivent être enregistrés :
Pour fournir un accès à Airflow à partir de toutes les adresses IP, spécifiez un élément
configvide (l'élémentwebServerNetworkAccessControlne doit pas être présent).Pour limiter l'accès à des plages d'adresses IP spécifiques, spécifiez une ou plusieurs plages dans
allowedIpRanges.Pour interdire l'accès pour toutes les adresses IP, spécifiez un élément
webServerNetworkAccessControlvide. L'élémentwebServerNetworkAccessControldoit être présent, mais ne doit pas contenir d'élémentallowedIpRanges.
{
"config": {
"webServerNetworkAccessControl": {
"allowedIpRanges": [
{
"value": "WS_IP_RANGE",
"description": "WS_RANGE_DESCRIPTION"
}
]
}
}
}
Remplacez les éléments suivants :
WS_IP_RANGE: plage d'adresses IP, au format CIDR, pouvant accéder à l'UI AirflowWS_RANGE_DESCRIPTION: description de la plage d'adresses IP
Exemple :
// PATCH https://composer.googleapis.com/v1/projects/example-project/
// locations/us-central1/environments/example-environment?updateMask=
// config.webServerNetworkAccessControl
{
"config": {
"webServerNetworkAccessControl": {
"allowedIpRanges": [
{
"value": "192.0.2.0/24",
"description": "example range"
},
{
"value": "192.0.4.0/24",
"description": "example range 2"
}
]
}
}
}
Terraform
Dans le bloc allowed_ip_range, dans web_server_network_access_control, spécifiez les plages d'adresses IP pouvant accéder au serveur Web.
resource "google_composer_environment" "example" {
provider = google-beta
name = "ENVIRONMENT_NAME"
region = "LOCATION"
config {
web_server_network_access_control {
allowed_ip_range {
value = "WS_IP_RANGE"
description = "WS_RANGE_DESCRIPTION"
}
}
}
}
Remplacez les éléments suivants :
WS_IP_RANGE: plage d'adresses IP, au format CIDR, pouvant accéder à l'UI AirflowWS_RANGE_DESCRIPTION: description de la plage d'adresses IP
Exemple :
resource "google_composer_environment" "example" {
provider = google-beta
name = "example-environment"
region = "us-central1"
config {
web_server_network_access_control {
allowed_ip_range {
value = "192.0.2.0/24"
description = "example range"
},
allowed_ip_range {
value = "192.0.4.0/24"
description = "example range 2"
}
}
}