Apache Superset在Kubernetes上的部署指南

Apache Superset在Kubernetes上的部署指南

Superset Superset 是一款开源的数据可视化平台,可以帮助用户轻松地创建各种类型的图表,并且支持多种数据源接入。Superset支持强大的查询语句构建器、支持多种数据源、提供多种图表类型、易于集成到现有工作流程中。Superset适用企业级的数据分析和报告生成 Superset 项目地址: https://gitcode.com/gh_mirrors/sup/superset

前言

Apache Superset作为一款现代化的商业智能可视化工具,在云原生环境下部署能够充分发挥其弹性扩展的优势。本文将详细介绍如何在Kubernetes集群上通过Helm部署Superset,并针对生产环境提供关键配置建议。

环境准备

基础要求

  • 可用的Kubernetes集群(推荐版本1.18+)
  • Helm 3.x客户端工具
  • 存储类(StorageClass)配置(如需持久化存储)

开发环境建议

对于本地测试环境,推荐使用minikube搭建单节点集群:

  1. 安装minikube和对应驱动
  2. 启动集群:minikube start --memory=8g --cpus=4
  3. 启用ingress插件:minikube addons enable ingress

部署流程

1. 添加Helm仓库

helm repo add superset https://apache.github.io/superset
helm repo update

2. 基础部署

创建values.yaml配置文件:

# 基础配置示例
service:
  type: NodePort
  port: 8088

ingress:
  enabled: true
  hosts:
    - superset.example.com
  annotations:
    nginx.ingress.kubernetes.io/rewrite-target: /

执行部署命令:

helm install superset superset/superset -f values.yaml

3. 验证部署

检查Pod状态:

kubectl get pods -l app.kubernetes.io/name=superset

预期应看到以下组件:

  • Superset主服务Pod(2-3个副本)
  • Celery Worker Pod(可选)
  • PostgreSQL/Redis Pod(如使用内置数据库)

关键配置详解

安全配置

生产环境必须修改以下安全参数:

# 生成强密码:openssl rand -base64 42
configOverrides:
  security: |
    SECRET_KEY = 'your_64_byte_random_string'
    PREVIOUS_SECRET_KEY = 'old_key_for_rotation' 

postgresql:
  postgresqlPassword: "DB_P@ssw0rd123"
  persistence:
    enabled: true
    storageClass: "standard"
    size: 20Gi

数据库驱动

根据数据源类型安装对应驱动:

bootstrapScript: |
  #!/bin/bash
  pip install \
    psycopg2-binary==2.9.6 \
    pybigquery==1.6.1 \
    elasticsearch-dbapi==0.2.5 \
    mysqlclient==2.1.1

邮件告警配置

启用邮件通知功能:

extraEnv:
  SMTP_HOST: smtp.office365.com
  SMTP_PORT: "587"
  SMTP_USER: alerts@company.com

extraSecretEnv:
  SMTP_PASSWORD: "email_password"

configOverrides:
  email: |
    ENABLE_PROXY_FIX = True
    SMTP_SSL = False  
    SMTP_STARTTLS = True

高级功能配置

OAuth集成示例

配置Google OAuth登录:

extraSecretEnv:
  GOOGLE_KEY: "client-id.apps.googleusercontent.com"
  GOOGLE_SECRET: "GOCSPX-secret-key"

configOverrides:
  oauth: |
    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"},
                "access_token_url": "https://accounts.google.com/o/oauth2/token",
                "authorize_url": "https://accounts.google.com/o/oauth2/auth"
            }
        }
    ]

定时报告配置

启用定时报告功能需要:

  1. 安装Chrome驱动
supersetWorker:
  command:
    - /bin/sh
    - -c
    - |
      apt update && apt install -y wget unzip
      wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
      apt install -y ./google-chrome-stable_current_amd64.deb
      wget https://chromedriver.storage.googleapis.com/$(curl -s https://chromedriver.storage.googleapis.com/LATEST_RELEASE)/chromedriver_linux64.zip
      unzip chromedriver_linux64.zip -d /usr/local/bin
      chmod +x /usr/local/bin/chromedriver
  1. 启用Celery Beat
supersetCeleryBeat:
  enabled: true
  schedule: |
    beat_schedule:
      reports.scheduler:
        task: reports.scheduler  
        schedule: crontab(minute="*/15")

运维建议

升级策略

  1. 备份数据库
  2. 获取最新chart:helm repo update
  3. 执行升级:helm upgrade superset superset/superset -f values.yaml

监控配置

建议配置Prometheus监控:

metrics:
  enabled: true
  serviceMonitor:
    enabled: true
    interval: 30s

资源限制

生产环境应设置资源配额:

resources:
  limits:
    cpu: 2
    memory: 4Gi
  requests:
    cpu: 500m
    memory: 2Gi

常见问题排查

  1. 初始化失败

    • 检查init容器的日志:kubectl logs <init-pod>
    • 确认数据库连接参数正确
  2. 访问问题

    • 验证Ingress配置:kubectl get ingress
    • 临时端口转发:kubectl port-forward svc/superset 8088:8088
  3. 性能问题

    • 增加Worker副本数
    • 调整Celery并发数

通过本文介绍的配置方法,您可以在Kubernetes上构建一个生产级可用的Superset环境。根据实际业务需求,可进一步调整资源配置和功能组件。

Superset Superset 是一款开源的数据可视化平台,可以帮助用户轻松地创建各种类型的图表,并且支持多种数据源接入。Superset支持强大的查询语句构建器、支持多种数据源、提供多种图表类型、易于集成到现有工作流程中。Superset适用企业级的数据分析和报告生成 Superset 项目地址: https://gitcode.com/gh_mirrors/sup/superset

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

任翊昆Mary

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

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

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

打赏作者

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

抵扣说明:

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

余额充值