Apache Superset и Azure – развертывание многоконтейнерного приложения

В этой статье вы узнаете шаги по развертыванию Apache Superset на Azure с помощью Azure Kubernetes Service.
 

Справочная информация

Я работаю над улучшением опыта разработчиков Python в Microsoft Azure и общаюсь со многими разработчиками Python со всего мира. Я неоднократно слышал, что многим разработчикам Python нравится запускать производственный код в контейнерах. И еще одна вещь, которую я узнал: многие приложения требуют использования нескольких контейнеров.

Я также люблю заниматься анализом данных на стороне и недавно наткнулся на Apache Superset, который описывает себя как “современную платформу для исследования и визуализации данных”. По совпадению, Superset содержит много кода на Python и может быть развернута в контейнерах (на данный момент их девять!).

Существует несколько вариантов запуска приложений на основе контейнеров в Azure. Поскольку для Superset требуется несколько контейнеров (9 по текущему счету), я решил использовать Azure Kubernetes Service (AKS). В одной из следующих статей я планирую рассказать о том, как можно использовать новую управляемую службу Azure для контейнеров, Azure Container Apps.

Хотя я не нашел существующего документа или поста, который помог бы мне завершить мой путь простым способом, вот несколько документов, которые мне помогли:

  • Superset – Running on Kubernetes
  • Быстрый старт: Разработка на Azure Kubernetes Service (AKS) с помощью Helm
  • Установка существующих приложений с помощью Helm в Azure Kubernetes Service (AKS)
  • Быстрый старт: Развертывание кластера Azure Kubernetes Service с помощью Azure CLI

 

Настройка

Некоторые из приведенных ниже синтаксических формулировок могут отличаться в зависимости от выбранной вами ОС или оболочки.

Предварительные условия Вам понадобятся:

  • Git
  • Azure CLI
  • Helm CLI
  • Подписка на Azure. Если у вас ее еще нет, вы можете создать ее бесплатно.
  • Docker Desktop

 

Получите приложение Superset и создайте свой кластер AKS

  1. Клонируйте репозиторий Apache Superset

    git clone https://github.com/apache/superset
    
    cd superset
    

     

  2. Войдите в Azure CLI
    Вы можете войти в систему с помощью команды az login

    az login
    

     

  3. Создание нового кластера AKS с интеграцией ACR
    Azure Container Registry (ACR) – это что-то вроде Docker Hub. Это место для хранения образов контейнеров, чтобы вы могли запускать свои приложения в кластере Azure Kubernetes Service (AKS). Мы будем использовать его для хранения образов контейнеров Superset.
    Используйте az acr create, чтобы создать ACR с именем [yourname]supersetacr в группе ресурсов под названием supersetrg.
    Замените [yourname] ниже именем по своему выбору.

    # Create a Resource Group to hold your ACR and AKS resources
    # Feel free to use a location closer to you
    az group create supersetrg --location westus2
    
    # Create an Azure Container Registry
    az acr create -n [yourname]supersetacr -g supersetrg --sku basic
    
    # Create an AKS cluster with ACR integration
    az aks create -n supersetaks -g supersetrg --generate-ssh-keys --attach-acr [yourname]supersetacr
    

     

    Когда вы создадите ACR, вы увидите сгусток JSON. Вот несколько важных значений, на которые следует обратить внимание:

    ...
    "location": "westus2",
    "loginServer": "[yourname]supersetacr.azurecr.io",
    "name": "[yourname]2supersetacr",
    ...
    "provisioningState": "Succeeded",
    "publicNetworkAccess": "Enabled",
    "resourceGroup": "supersetrg",
    "sku": {
      "name": "Basic",
      "tier": "Basic"
    },
    ...
    

     

    Создание кластера АКС займет несколько минут. Когда все будет готово, вы увидите еще больший сгусток JSON. Вот несколько важных значений, на которые следует обратить внимание:

    ...
      "osDiskSizeGb": 128,
      "osDiskType": "Managed",
      "osSku": "Ubuntu",
      "osType": "Linux",
    ...
      "provisioningState": "Succeeded",
    ...
      "vmSize": "Standard_DS2_v2",
    ...
    "azurePortalFqdn": "supersetak-supersetrg-2223f9-06aacbbd.portal.hcp.westus2.azmk8s.io",
    ...
    "fqdn": "supersetak-supersetrg-2223f9-06aacbbd.hcp.westus2.azmk8s.io",
    ...
    "kubernetesVersion": "1.22.6",
    ...
    "nodeResourceGroup": "MC_supersetrg_supersetaks_westus2",
    ...
    

     
    Дополнительные способы интеграции ACR с AKS: 3 способа интеграции ACR с AKS
     

  4. Вставьте образы контейнеров Superset в ваш ACR
    Superset использует два контейнерных образа, которые вы можете увидеть в репозитории superset в файле /helm/superset/values.yaml:

    image: 
      repository: apache/superset
    ...
    initImage: 
      repository: busybox
    

     

    Хотя ACR технически может получать образы непосредственно из Docker Hub, дросселирование, которое недавно ввел Docker Hub, означает, что может потребоваться время (иногда очень много времени), чтобы образы попали в ваш ACR. Вместо этого мы собираемся доставить образы на вашу машину, а затем переместить их в ACR. Не забудьте заменить [yourname] на имя, которое вы выбрали ранее.

    # First - login to your ACR so Docker can push to it
    az acr login -n [yourname]supersetacr.azurecr.io
    
    # Pull the Superset image
    docker pull apache/superset
    # Tag the image using your ACR login server name 
    docker tag apache/superset [yourname]supersetacr.azurecr.io/superset
    # Push the image to ACR
    docker push [yourname]supersetacr.azurecr.io/superset
    
    # Pull the Busybox image
    docker pull busybox
    # Tag the image using your ACR login server name
    docker tag busybox [yourname]supersetacr.azurecr.io/busybox
    # Push the image to ACR
    docker push [yourname]supersetacr.azurecr.io/busybox
    

     

  5. Создайте файл my_values.yaml для переопределения значений по умолчанию
    В предыдущем шаге мы задали изображениям новые теги, и теперь нам нужно создать переопределение значений по умолчанию в файле /helm/superset/values.yaml, чтобы наши новые изображения использовались.
    Добавьте следующее в новый файл под названием my_values.yaml, обязательно заменив [yourname] на имя, которое вы выбрали ранее:

    image:
      repository: [yourname]supersetacr.azurecr.io/superset
    
    initImage:
      repository: [yourname]supersetacr.azurecr.io/busybox
    

     

    Пока мы находимся в файле my_values.yaml, для того, чтобы открыть сайт Superset, нам нужно изменить тип сервиса с ClusterIP на LoadBalancer, а чтобы было легче просматривать, мы установим порт 80. Добавьте эти строки также в my_values.yaml:

    # Set type to 'LoadBalancer' so we can browse it
    service:
      type: LoadBalancer
      port: 80
    

     

    И если вы не планируете развертывание на производстве, я рекомендую загрузить несколько примеров, чтобы поиграть с ними. Просто сделайте еще одно дополнение к файлу my_values.yaml:

    # Load Superset Examples
    init:
      loadExamples: true
    

     

    Вот весь файл my_values.yaml:

    image:
      repository: [yourname]supersetacr.azurecr.io/superset
    
    initImage:
      repository: [yourname]supersetacr.azurecr.io/busybox
    
    # Set type to 'LoadBalancer' so we can browse it
    service:
      type: LoadBalancer
      port: 80
    
    # Load Superset Examples
    init:
      loadExamples: true
    

     

Развертывание Superset на кластере AKS

  1. Получите учетные данные вашего кластера AKS, чтобы развернуть на нем шлем.
    Используйте команду az aks get-credentials, чтобы загрузить учетные данные для вашего кластера AKS:

    az aks get-credentials -n supersetaks -g supersetrg
    

     

  2. Развертывание на AKS с помощью helm
    Сначала обновите зависимости диаграммы helm с помощью команды helm dependency update:

    helm dependency update helm/superset
    

     

    Затем установите диаграмму helm с помощью команды helm install:

    helm upgrade --install --values my_values.yaml superset helm/superset
    

     

Проверьте!

  1. Просмотр кластера AKS в Azure Portal и открытие Superset
    Некоторые службы Azure позволяют быстро перейти от CLI к просмотру ресурса на веб-портале Azure; к счастью, AKS – одна из таких служб.

    Откройте портал к вашему кластеру AKS с помощью команды az aks browse -n supersetaks -g supersetrg.
    Это приведет вас на страницу Workloads, где вы увидите статус ваших рабочих нагрузок Kubernetes. Дайте пять минут или около того, чтобы все развернулось и стало зеленым.

    Затем нажмите на Services and ingresses.

    На странице Services and ingresses вы найдете External IP для вашего сайта Superset:

    Когда вы нажмете на Внешний IP и добавите номер порта :8088, если все сработало идеально, вы увидите страницу входа в Superset ниже, где вы можете использовать admin и admin для входа.
     

Заключение

Хотя я еще не все опробовал, я подключился к внешней базе данных и создал графики и приборные панели. Я рад сказать, что пока производительность была отличной, и мне не терпится увидеть, что я смогу создать!
Вот одна из приборных панелей, которую вы можете изучить, загрузив упомянутые выше примеры:

Очистка ресурсов

Поскольку AKS не бесплатен, после завершения тестирования Superset вы, возможно, захотите удалить ресурсы.

Когда вы создавали свой ACR, вы создали группу ресурсов под названием supersetrg. А при создании кластера AKS была создана еще одна группа ресурсов с именем, похожим на это: MC_supersetrg_supersetaks_westus2.

Вам нужно удалить обе эти группы ресурсов, чтобы избежать дополнительных расходов.

# View all of your resource groups
az group list -o table

# Delete the resource groups for your AKS cluster
az group delete -g supersetrg
az group delete -g MC_supersetrg_supersetaks_westus2
Вход в полноэкранный режим Выход из полноэкранного режима

 

Следующие шаги

  • Рассмотрите возможность создания базы данных Azure Database для PostgreSQL и подключения ее к Superset
  • После подключения базы данных вы можете загрузить некоторые данные в Superset из файла CSV или Excel.
  • Узнайте, как исследовать данные в Superset
  • Узнайте, как создать свою первую приборную панель

Оцените статью
Procodings.ru
Добавить комментарий