How-To Guides

Déployer Apache Superset : Guide complet pour les équipes data modernes

Apache Superset s'est imposé comme l'un des outils de business intelligence (BI) open-source les plus puissants et populaires disponibles aujourd'hui. Connu pour son interface utilisateur moderne, ses nombreuses options de visualisation et sa compatibilité avec une large gamme de bases de données SQL, il constitue un choix idéal pour les ingénieurs et analystes de données souhaitant démocratiser l'accès aux données au sein de leurs organisations. Cependant, la mise en place de Superset dans un environnement de production peut sembler intimidante en raison de son architecture complexe, qui implique plusieurs composants tels que l'application Flask, les travailleurs Celery et une base de données de métadonnées.

Dans ce guide, nous vous accompagnerons étape par étape pour déployer Apache Superset à l'aide de Docker Compose. Cette méthode est recommandée pour les développeurs de niveau intermédiaire à avancé, car elle offre un environnement reproductible, isolé et évolutif sans encombrer votre système hôte. À la fin de cet article, vous disposerez d'une instance Superset entièrement fonctionnelle, exécutée localement ou sur un serveur distant.

Prérequis et configuration de l'environnement

Avant de vous lancer dans le processus de déploiement, assurez-vous que votre environnement de développement répond aux exigences suivantes :

  • Docker & Docker Compose : Assurez-vous qu'ils sont tous deux installés et en cours d'exécution. Vous pouvez le vérifier en exécutant docker --version et docker-compose --version.
  • PostgreSQL : Superset nécessite une base de données relationnelle pour ses métadonnées. Bien que Docker Compose puisse lancer un conteneur Postgres, en production, vous devriez utiliser un service géré ou une instance de base de données autonome.
  • Redis : Il est utilisé pour la mise en cache et en tant que backend de résultats pour les tâches Celery.
  • Application Flask : L'application principale de Superset.

Pour les besoins de ce tutoriel, nous utiliserons une configuration Docker Compose monolithique qui inclut tous les services nécessaires. Cette approche est parfaite pour les environnements de développement et de préproduction (staging).

Création de la configuration Docker Compose

Créez un nouveau répertoire pour votre projet et initialisez un fichier docker-compose.yml. Ce fichier définit les services, les réseaux et les volumes requis pour le bon fonctionnement de Superset.

version: '3.8'
services:
  redis:
    image: redis:latest
    ports:
      - "6379:6379"
    networks:
      - superset_network

  postgres:
    image: postgres:13
    environment:
      POSTGRES_USER: superset
      POSTGRES_PASSWORD: superset_pass
      POSTGRES_DB: superset
    volumes:
      - postgres_data:/var/lib/postgresql/data
    ports:
      - "5432:5432"
    networks:
      - superset_network

  superset:
    image: apache/superset:latest
    restart: always
    ports:
      - "8088:8088"
    command: ["/app/docker/docker-entrypoint.sh"]
    environment:
      SUPERSET_SECRET_KEY: 'super-secret-key-for-production'
      DATABASE_HOST: postgres
      DATABASE_PORT: 5432
      DATABASE_USER: superset
      DATABASE_PASSWORD: superset_pass
      DATABASE_DB: superset
    volumes:
      - superset_data:/app/superset_home
    depends_on:
      - redis
      - postgres
    networks:
      - superset_network

volumes:
  postgres_data:
  superset_data:

networks:
  superset_network:
    driver: bridge

Initialisation et création d'utilisateur

Une fois votre fichier docker-compose.yml prêt, lancez les services à l'aide de la commande suivante :

docker-compose up -d

Une fois les conteneurs démarrés et en cours d'exécution, vous devez initialiser la base de données et créer un utilisateur administrateur. Exécutez les commandes suivantes dans votre terminal :

# Initialiser le schéma de la base de données
docker-compose exec superset superset db upgrade

# Créer un utilisateur administrateur
docker-compose exec superset superset fab create-admin \
  --username admin \
  --firstname Admin \
  --lastname User \
  --email admin@example.com \
  --password admin

La commande superset fab create-admin est cruciale pour sécuriser votre déploiement initial. La commande superset db upgrade garantit que le schéma de la base de données est à jour avec la version de Superset que vous exécutez.

Considérations pour la production

Bien que la configuration ci-dessus soit excellente pour le développement, les déploiements en production nécessitent un durcissement supplémentaire :

  • Sécurité : N'utilisez jamais de clés secrètes par défaut. Générez une clé forte et aléatoire pour SUPERSET_SECRET_KEY.
  • Proxy inverse : Placez Nginx ou Traefik devant Superset pour gérer la terminaison SSL et l'équilibrage de charge.
  • Séparation de la base de données : Déplacez les conteneurs Postgres et Redis vers des services externes et gérés pour garantir une haute disponibilité et la persistance des données.
  • Mise à l'échelle : Utilisez le scaling horizontal de pods (Kubernetes) ou Docker Swarm pour mettre à l'échelle indépendamment les services superset et celery-worker en fonction de la charge.

Conclusion

Le déploiement d'Apache Superset via Docker Compose est un processus simplifié qui permet aux développeurs de se mettre en place rapidement. En tirant parti de la conteneurisation, vous assurez la cohérence entre les environnements de développement, de préproduction et de production. À mesure que vos besoins en données évoluent, n'oubliez pas de refactoriser votre architecture pour inclure des instances de base de données séparées, des stratégies de mise en cache robustes et des proxies inverses sécurisés. Avec Superset déployé, votre équipe est prête à exploiter tout le potentiel de vos données grâce à des visualisations intuitives et puissantes.

Share: