В этой статье вы узнаете шаги по развертыванию 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
-
Клонируйте репозиторий Apache Superset
git clone https://github.com/apache/superset cd superset
-
Войдите в Azure CLI
Вы можете войти в систему с помощью команды az loginaz login
-
Создание нового кластера 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
-
Вставьте образы контейнеров 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
-
Создайте файл 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
-
Получите учетные данные вашего кластера AKS, чтобы развернуть на нем шлем.
Используйте командуaz aks get-credentials
, чтобы загрузить учетные данные для вашего кластера AKS:az aks get-credentials -n supersetaks -g supersetrg
-
Развертывание на AKS с помощью helm
Сначала обновите зависимости диаграммы helm с помощью командыhelm dependency update
:helm dependency update helm/superset
Затем установите диаграмму helm с помощью команды
helm install
:helm upgrade --install --values my_values.yaml superset helm/superset
Проверьте!
-
Просмотр кластера 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
- Узнайте, как создать свою первую приборную панель