Aller au contenu

PoC Airflow On-Premise

La finalité de cette expérimentation est double:

  1. réaliser une liste des spécifications et pré-requis nécessaires au déploiement d'un Airflow On-Premise, au cas où Airflow soit l'orchestrateur retenu.
  2. faire monter en compétences l'équipe sur GCP et les outils Data en attendant que la roadmap du projet soit définie avec son backlog associée (et pendant qu'on attend, pour une partie de l'équipe, les badges, les PCs, les accès, etc.)

Pour cela, nous avons décidé de simuler un environnement On-Premise avec ces hypothèses :

  • un cluster GKE => simulant un cluster Kubernetes by CA-GIP
  • utiliser le moins de services managés possible pour simuler un environnement On-Premise (par exemple Minio plutôt que GCS)
  • dans un projet GCP de sandbox sur la LZ Accenture
  • 100% en Terraform pour la reproductibilité, pour servir plus tard de démo si besoin

Il y a 2 focus que nous avons priorisé :

  1. comprendre quels sont les composants qui requièrent du stockage persistant et pour quels usages (permettant de définir les caractéristiques du stockage persistant à mettre en place dans un environnement On-Premise)
  2. comprendre la gestion des secrets et des connexions aux bases de données

D'autres sujets annexes si nous avons le temps, que nous avons listés ci-dessous.

Réalisé

  • Déployer un GKE basique simulant un env on-premise
  • Déployer Airflow avec la chart Helm officielle et Terraform

En cours

  • Minio & Stockage partagé entre les Workers
    • Déployer Minio sur GKE avec Helm+Terraform
    • Configurer un bucket et credentials Minio pour Airflow
    • Monter bucket Minio S3 avec l'aide de AWS mountpoint-s3 => ECHEC (Issue Github liée)
    • Monter bucket Minio S3 avec l'aide de yandex-cloud/k8s-csi-s3 (basé sur geesefs)
    • Configurer Airflow pour utiliser Minio comme stockage persistant
    • Vérifier qu'on peut charger un DAG depuis un bucket Minio
    • Vérifier que les logs des tâches sont bien stockés dans Minio
    • Vérifier que les fichiers temporaires ou persistants des tâches peuvent bien stockés dans Minio

Next Steps

  • Gestion des secrets pour connecter les workloads à d'autres DB & services (Oracle ou PG) & Buckets Minio (avec Sébastien Bonnevie)
    • Créer une base de données PostgreSQL sur GKE avec Helm+Terraform
    • Configurer Airflow pour utiliser cette base de données PostgreSQL
    • Vérifier qu'un DAG peut utiliser cette base de données PostgreSQL
    • Utiliser AppRole Vault
  • PostgreSQL séparé
    • Créer une base de données PostgreSQL sur GKE avec CloudNativePG
    • Configurer Airflow pour utiliser cette base de données PostgreSQL
  • Charger un DAG depuis Git-Sync
  • Test install du plugin custom Cloud Run/HTTP
  • Configuration de variables Airflow as Code

Bonus

  • Autoscaling avec KEDA
  • Logs vs Audit Logs
  • ElasticSearch ?
  • Checklist "Production Guide" de la doc Airflow

Kroki