在Kubernetes上部署Airbnb Superset的完整指南

在Kubernetes上部署Airbnb Superset的完整指南

superset superset 项目地址: https://gitcode.com/gh_mirrors/su/superset

前言

Superset作为一款现代化的商业智能可视化工具,在Kubernetes环境中的部署能够充分发挥其云原生优势。本文将详细介绍如何使用Helm在Kubernetes集群上部署Superset,并提供生产环境的最佳实践配置建议。

环境准备

在开始部署前,需要确保满足以下基础条件:

  1. 可用的Kubernetes集群(可以是Minikube、EKS、AKS等)
  2. Helm 3.x已安装并配置完成
  3. 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

根据您的环境选择合适的访问方式:

  1. LoadBalancer/NodePort:修改Service类型
  2. Ingress:配置域名和TLS证书
  3. 端口转发:临时测试使用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", "")}
            },
        }
    ]

告警和报告功能

启用告警和报告功能需要额外配置:

  1. 安装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
  1. 启用Celery Beat:
supersetCeleryBeat:
  enabled: true
  1. 配置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

生产环境建议

  1. 资源限制:为关键组件设置合理的资源请求和限制
  2. 持久化存储:确保PostgreSQL和Redis使用持久化卷
  3. 高可用:适当增加Worker和Web Pod的副本数
  4. 监控:配置Prometheus监控和日志收集
  5. 备份:定期备份PostgreSQL数据库

常见问题解决

  1. 初始化失败:检查init容器的日志
  2. Pod CrashLoopBackOff:查看具体Pod的日志和事件
  3. 数据库连接问题:验证PostgreSQL服务是否正常运行
  4. 性能问题:调整Worker数量和资源限制

通过本文的指导,您应该能够在Kubernetes环境中成功部署和管理Superset实例。根据实际需求调整配置参数,可以构建出适合不同场景的商业智能平台。

superset superset 项目地址: https://gitcode.com/gh_mirrors/su/superset

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

徐天铭Paxton

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值