Partager via


Déployer Apache Superset™

Remarque

Nous allons mettre hors service Azure HDInsight sur AKS le 31 janvier 2025. Avant le 31 janvier 2025, vous devrez migrer vos charges de travail vers Microsoft Fabric ou un produit Azure équivalent afin d’éviter leur arrêt brutal. Les clusters restants de votre abonnement seront arrêtés et supprimés de l’hôte.

Seul le support de base est disponible jusqu’à la date de mise hors service.

Important

Cette fonctionnalité est disponible actuellement en mode Aperçu. Les Conditions d’utilisation supplémentaires pour les préversions de Microsoft Azure contiennent davantage de conditions légales qui s’appliquent aux fonctionnalités Azure en version bêta, en préversion ou ne se trouvant pas encore en disponibilité générale. Pour plus d’informations sur cette préversion spécifique, consultez les Informations sur la préversion d’Azure HDInsight sur AKS. Pour toute question ou pour des suggestions à propos des fonctionnalités, veuillez envoyer vos requêtes et leurs détails sur AskHDInsight, et suivez-nous sur la Communauté Azure HDInsight pour plus de mises à jour.

La visualisation est essentielle pour explorer, présenter et partager efficacement des données. Apache Superset vous permet d’exécuter des requêtes et de visualiser et créer des tableaux de bord sur vos données dans une interface utilisateur web flexible.

Cet article décrit comment déployer une instance d’interface utilisateur Apache Superset dans Azure et comment la connecter au cluster Trino avec HDInsight sur AKS pour interroger des données et créer des tableaux de bord.

Résumé des étapes décrites dans cet article :

  1. Conditions préalables.
  2. Créer un cluster Kubernetes pour Apache Superset.
  3. Déployer Apache Superset.

Prérequis

Si vous utilisez Windows, utilisez Ubuntu sur WSL2 pour exécuter ces instructions dans un environnement Linux d’interpréteur de commandes Bash dans Windows. Sinon, vous devez modifier les commandes pour qu’elles fonctionnent dans Windows.

Créer un cluster Trino et attribuer une identité managée

  1. Si ce n’est déjà fait, créez un cluster Trino avec HDInsight sur AKS.

  2. Pour qu’Apache Superset appelle Trino, il doit avoir une identité managée (MSI). Créez ou sélectionnez une identité managée affectée par l’utilisateur existante.

  3. Modifiez votre configuration de cluster Trino pour permettre à l’identité managée créée à l’étape 2 d’exécuter des requêtes. Découvrez comment gérer l’accès.

Installer les outils locaux

  1. Configurez Azure CLI.

    a. Installez Azure CLI.

    b. Connectez-vous à Azure CLI : az login.

    c. Installez l’extension Azure CLI en préversion.

    # Install the aks-preview extension
    az extension add --name aks-preview
    
    # Update the extension to make sure you've the latest version installed
    az extension update --name aks-preview
    
  2. Installez Kubernetes.

  3. Installez Helm.

Créer un cluster Kubernetes pour Apache Superset

Cette étape crée le cluster Azure Kubernetes Service (AKS) dans lequel vous pouvez installer Apache Superset. Vous devez lier l’identité managée que vous avez associée au cluster pour permettre à Superset de s’authentifier auprès du cluster Trino avec cette identité.

  1. Créez les variables suivantes dans Bash pour votre installation de Superset.

    # ----- Parameters ------
    
    # The subscription ID where you want to install Superset
    SUBSCRIPTION=
    # Superset cluster name (visible only to you)
    CLUSTER_NAME=trinosuperset 
    # Resource group containing the Azure Kubernetes service
    RESOURCE_GROUP_NAME=trinosuperset 
    # The region to deploy Superset (ideally same region as Trino): to list regions: az account list-locations REGION=westus3 
    # The resource path of your managed identity. To get this resource path:
    #   1. Go to the Azure Portal and find your user assigned managed identity
    #   2. Select JSON View on the top right
    #   3. Copy the Resource ID value.
    MANAGED_IDENTITY_RESOURCE=
    
  2. Sélectionnez l’abonnement dans lequel vous allez installer Superset.

    az account set --subscription $SUBSCRIPTION
    
  3. Activez la fonctionnalité d’identité de pod sur votre abonnement actuel.

    az feature register --name EnablePodIdentityPreview --namespace Microsoft.ContainerService
    az provider register -n Microsoft.ContainerService
    
  4. Créez un cluster AKS pour déployer Superset.

    # Create resource group
    az group create --location $REGION --name $RESOURCE_GROUP_NAME
    
    # Create AKS cluster
    az \
    aks create \
    -g $RESOURCE_GROUP_NAME \
    -n $CLUSTER_NAME \
    --node-vm-size Standard_DS2_v2 \
    --node-count 3 \
    --enable-managed-identity \
    --assign-identity $MANAGED_IDENTITY_RESOURCE \
    --assign-kubelet-identity $MANAGED_IDENTITY_RESOURCE
    
    # Set the context of your new Kubernetes cluster
    az aks get-credentials --resource-group $RESOURCE_GROUP_NAME --name $CLUSTER_NAME
    

Déployer Apache Superset

  1. Pour permettre à Superset de communiquer en toute sécurité avec le cluster Trino, le moyen le plus simple consiste à configurer Superset pour utiliser l’identité managée Azure. Cette étape signifie que votre cluster utilise l’identité que vous lui avez attribuée sans déploiement manuel ni cycle de secrets.

    Vous devez créer un fichier values.yaml pour le déploiement de Superset Helm. Reportez-vous à l’exemple de code.

    Facultatif : utilisez Microsoft Azure Postgres au lieu du Postgres déployé à l’intérieur du cluster Kubernetes.

    Créez une instance « Azure Database pour PostgreSQL » pour faciliter la maintenance, autoriser les sauvegardes et améliorer la fiabilité.

    postgresql:
      enabled: false
    
    supersetNode:
      connections:
        db_host: '{{SERVER_NAME}}.postgres.database.azure.com'
        db_port: '5432'
        db_user: '{{POSTGRES_USER}}'
        db_pass: '{{POSTGRES_PASSWORD}}'
        db_name: 'postgres' # default db name for Azure Postgres
    
  2. Ajoutez d’autres sections du fichier values.yaml si nécessaire. La documentation Superset recommande de modifier le mot de passe par défaut.

  3. Déployez Superset à l’aide de Helm.

    # Verify you have the context of the right Kubernetes cluster
    kubectl cluster-info
    # Add the Superset repository
    helm repo add superset https://apache.github.io/superset
    # Deploy
    helm repo update
    helm upgrade --install --values values.yaml superset superset/superset
    
  4. Connectez-vous à Superset et créez une connexion.

    Remarque

    Vous devez créer des connexions distinctes pour chaque catalogue Trino que vous souhaitez utiliser.

    1. Connectez-vous à Superset à l’aide du transfert de port.

      kubectl port-forward service/superset 8088:8088 --namespace default

    2. Ouvrez un navigateur web et accédez à http://localhost:8088/. Si vous n’avez pas modifié le mot de passe administrateur, connectez-vous à l’aide du nom d’utilisateur : admin, mot de passe : admin.

    3. Sélectionnez « connecter la base de données » dans le menu plus « + » sur le côté droit.

      Capture d’écran montrant la connexion à la base de données.

    4. Sélectionnez Trino.

    5. Entrez l’URI SQL Alchemy de votre cluster Trino.

      Vous devez modifier trois parties de cette chaîne de connexion :

      Propriété Exemple Description
      utilisateur trino@ Le nom avant le symbole @ est le nom d’utilisateur utilisé pour la connexion à Trino.
      hostname mytrinocluster.00000000000000000000000000
      .eastus.hdinsightaks.net
      Nom d’hôte de votre cluster Trino.
      Vous pouvez obtenir ces informations à partir de la page « Vue d’ensemble » de votre cluster dans le portail Azure.
      catalog /tpch La partie après la barre oblique correspond au nom du catalogue par défaut.
      Vous devez remplacer ce catalogue par le catalogue contenant les données que vous souhaitez visualiser.

      trino://$USER@$TRINO_CLUSTER_HOST_NAME.hdinsightaks.net:443/$DEFAULT_CATALOG

      Exemple : trino://trino@mytrinocluster.00000000000000000000000000.westus3.hdinsightaks.net:443/tpch

      Capture d’écran montrant la chaîne de connexion.

    6. Sélectionnez l’onglet « Avancé » et entrez la configuration suivante dans « Sécurité supplémentaire ». Remplacez la valeur client_id par l’ID client GUID de votre identité managée (cette valeur est disponible sur la page vue d’ensemble de votre ressource d’identité managée dans le portail Azure).

       {
         "auth_method": "azure_msi",
         "auth_params":
         {
           "scope": "https://clusteraccess.hdinsightaks.net/.default",
           "client_id": "xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx"
         }
       }
      

      Capture d’écran montrant l’ajout de MSI.

    7. Sélectionnez « Connecter ».

Vous êtes maintenant prêt à créer des jeux de données et des graphiques.

Résolution des problèmes

  • Vérifiez que votre cluster Trino a été configuré pour permettre à l’identité managée attribuée par l’utilisateur du cluster Superset de se connecter. Vous pouvez vérifier cette valeur en examinant le JSON de ressource de votre cluster Trino (authorizationProfile/userIds). Assurez-vous que vous utilisez l’ID d’objet de l’identité, et non l’ID client.

  • Assurez-vous qu’il n’y a aucune erreur dans la configuration de connexion.

    1. Assurez-vous que « sécuriser extra » est rempli,
    2. Votre URL est correcte.
    3. Utilisez le catalogue tpch pour vérifier que votre connexion fonctionne avant d’utiliser votre propre catalogue.

Étapes suivantes

Pour exposer Superset à Internet, vous devez autoriser la connexion utilisateur à l’aide Microsoft Entra ID en effectuant les étapes générales suivantes. Ces étapes nécessitent une expérience intermédiaire ou supérieure avec Kubernetes.