在Kubernetes上部署Airbnb Superset的完整指南
superset 项目地址: https://gitcode.com/gh_mirrors/su/superset
前言
Superset作为一款现代化的商业智能可视化工具,在Kubernetes环境中的部署能够充分发挥其云原生优势。本文将详细介绍如何使用Helm在Kubernetes集群上部署Superset,并提供生产环境的最佳实践配置建议。
环境准备
在开始部署前,需要确保满足以下基础条件:
- 可用的Kubernetes集群(可以是Minikube、EKS、AKS等)
- Helm 3.x已安装并配置完成
- kubectl命令行工具已配置好集群连接
对于本地开发和测试环境,推荐使用Minikube,它能够快速搭建单节点Kubernetes集群,非常适合Superset的开发和测试。
部署步骤详解
1. 添加Superset Helm仓库
首先需要将Superset的官方Helm仓库添加到本地:
helm repo add superset https://apache.github.io/superset
2. 查看可用图表
验证仓库添加成功后,可以查看可用的Superset图表:
helm search repo superset
3. 配置自定义参数
Superset Helm图表提供了丰富的可配置项,我们需要创建一个values.yaml
文件来覆盖默认配置。以下是关键配置项的说明:
安全配置
生产环境中必须修改以下安全相关配置:
postgresql:
postgresqlPassword: your_secure_password
configOverrides:
secret: |
SECRET_KEY = '使用openssl rand -base64 42生成的强密钥'
数据库驱动
Superset需要为每种数据源安装对应的Python驱动:
bootstrapScript: |
#!/bin/bash
uv pip install .[postgres] \
.[bigquery] \
.[elasticsearch] &&\
if [ ! -f ~/bootstrap ]; then echo "Running Superset" > ~/bootstrap; fi
自定义配置
通过configOverrides
可以扩展默认的superset_config.py
:
configOverrides:
my_config: |
ENABLE_PROXY_FIX = True
FEATURE_FLAGS = {
"DYNAMIC_PLUGINS": True
}
4. 安装Superset
使用以下命令进行安装:
helm upgrade --install --values my-values.yaml superset superset/superset
5. 验证部署
部署完成后,检查Pod状态:
kubectl get pods
正常情况下应该看到以下组件:
- Superset主应用Pod
- Worker Pod(处理异步任务)
- PostgreSQL Pod(存储元数据)
- Redis Pod(缓存和消息队列)
访问Superset
根据您的环境选择合适的访问方式:
- LoadBalancer/NodePort:修改Service类型
- Ingress:配置域名和TLS证书
- 端口转发:临时测试使用
kubectl port-forward
默认登录凭据:
- 用户名:admin
- 密码:admin
高级配置示例
OAuth集成
配置Google OAuth登录示例:
extraEnv:
AUTH_DOMAIN: yourcompany.com
extraSecretEnv:
GOOGLE_KEY: your_client_id
GOOGLE_SECRET: your_client_secret
configOverrides:
oauth_config: |
from flask_appbuilder.security.manager import AUTH_OAUTH
AUTH_TYPE = AUTH_OAUTH
OAUTH_PROVIDERS = [
{
"name": "google",
"icon": "fa-google",
"token_key": "access_token",
"remote_app": {
"client_id": os.getenv("GOOGLE_KEY"),
"client_secret": os.getenv("GOOGLE_SECRET"),
"api_base_url": "https://www.googleapis.com/oauth2/v2/",
"client_kwargs": {"scope": "email profile"},
"request_token_url": None,
"access_token_url": "https://accounts.google.com/o/oauth2/token",
"authorize_url": "https://accounts.google.com/o/oauth2/auth",
"authorize_params": {"hd": os.getenv("AUTH_DOMAIN", "")}
},
}
]
告警和报告功能
启用告警和报告功能需要额外配置:
- 安装Chrome WebDriver:
supersetWorker:
command:
- /bin/sh
- -c
- |
apt-get update && apt-get install -y wget unzip
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
apt-get install -y --no-install-recommends ./google-chrome-stable_current_amd64.deb
wget https://chromedriver.storage.googleapis.com/88.0.4324.96/chromedriver_linux64.zip
unzip chromedriver_linux64.zip
chmod +x chromedriver
mv chromedriver /usr/bin
rm -f google-chrome-stable_current_amd64.deb chromedriver_linux64.zip
. {{ .Values.configMountPath }}/superset_bootstrap.sh; celery --app=superset.tasks.celery_app:app worker
- 启用Celery Beat:
supersetCeleryBeat:
enabled: true
- 配置SMTP和Slack:
extraEnv:
SMTP_HOST: smtp.yourprovider.com
SMTP_USER: your@email.com
SMTP_PORT: "587"
extraSecretEnv:
SLACK_API_TOKEN: your_slack_token
SMTP_PASSWORD: your_email_password
生产环境建议
- 资源限制:为关键组件设置合理的资源请求和限制
- 持久化存储:确保PostgreSQL和Redis使用持久化卷
- 高可用:适当增加Worker和Web Pod的副本数
- 监控:配置Prometheus监控和日志收集
- 备份:定期备份PostgreSQL数据库
常见问题解决
- 初始化失败:检查init容器的日志
- Pod CrashLoopBackOff:查看具体Pod的日志和事件
- 数据库连接问题:验证PostgreSQL服务是否正常运行
- 性能问题:调整Worker数量和资源限制
通过本文的指导,您应该能够在Kubernetes环境中成功部署和管理Superset实例。根据实际需求调整配置参数,可以构建出适合不同场景的商业智能平台。
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考