Skip to main content
helm chart · superset

Apache Superset

Helm chart for Deploying Apache Superset

Latest version
v0.0.9
Chart type
Application
Requires
Helm 3+

Install

Add the zop.dev chart repository, then install superset into your cluster.

helm repo add zopdev https://helm.zop.dev
helm repo update
helm install my-superset zopdev/superset --version v0.0.9

Deploy to Zopday

This Helm chart deploys Apache Superset on Kubernetes, providing a modern, enterprise-ready business intelligence web application. Superset enables users to create and share interactive dashboards, perform data exploration, and visualize data through a rich set of charts and graphs.


Prerequisites

  • Kubernetes 1.19+
  • Helm 3.0+
  • kubectl configured to communicate with your cluster
  • PostgreSQL database (automatically installed as a dependency)
  • Redis instance (automatically installed as a dependency)

Add Helm Repository

Add the Helm repository by running:

Terminal window
helm repo add zopdev https://helm.zop.dev
helm repo update

For more details, see the Helm Repository Documentation.


Dependencies

Before installing the chart, you need to download the required dependencies. Run the following command in the chart directory:

Terminal window
helm dependency build

This command will:

  1. Read the dependencies from Chart.yaml
  2. Download the required charts (PostgreSQL and Redis) from the specified repositories
  3. Store them in the charts/ directory
  4. Create or update the Chart.lock file with the exact versions

If you encounter any issues with the dependencies, you can try:

Terminal window
helm dependency update # Updates dependencies to the latest versions

This chart requires the following dependencies to be installed:

PostgreSQL

  • Condition: postgres.enabled
  • Chart: postgres
  • Version: 0.0.11
  • Repository: https://helm.zop.dev
  • Purpose: Provides the primary database for Superset metadata storage

Redis

  • Condition: redis.enabled
  • Chart: redis
  • Version: 0.0.1
  • Repository: https://helm.zop.dev
  • Purpose: Used for caching and as a message broker for Celery tasks

To install these dependencies automatically, ensure the following in your values.yaml:

Terminal window
postgres:
enabled: true
# Additional PostgreSQL configuration...
redis:
enabled: true
# Additional Redis configuration...

The dependencies will be automatically installed when you deploy the Superset chart. You can customize their configuration through the respective sections in your values.yaml file.

Install Helm Chart

To deploy the Superset Helm chart, use the following command:

Terminal window
helm install superset zopdev/superset

The release name must be superset for the chart to install properly.

You can override default values during installation by providing a values.yaml file.

Refer to the Helm Install Documentation for further details.


Uninstall Helm Chart

To remove the Superset Helm chart and associated resources, run:

Terminal window
helm uninstall superset

Check the Helm Uninstall Documentation for more information.


Configuration

The Superset Helm chart includes several configuration options to tailor the deployment to your needs. Below is a summary of the key configurations:

Service Configuration

InputTypeDescriptionDefault
service.nginx.hoststringHostname for the Superset service.""
service.nginx.tlshoststringTLS hostname for HTTPS access.""
service.nginx.tlsSecretnamestringName of the TLS secret for HTTPS.""

Resource Configuration

InputTypeDescriptionDefault
resources.requests.cpustringMinimum CPU resources required."250m"
resources.requests.memorystringMinimum memory resources required."250Mi"
resources.limits.cpustringMaximum CPU resources allowed."500m"
resources.limits.memorystringMaximum memory resources allowed."500Mi"

Superset Node Configuration

InputTypeDescriptionDefault
supersetNode.connections.redis_hoststringRedis host address."{{ .Release.Name }}-redis-headless-service"
supersetNode.connections.redis_portstringRedis port number."6379"
supersetNode.connections.db_hoststringPostgreSQL host address."{{ .Release.Name }}-postgres"
supersetNode.connections.db_portstringPostgreSQL port number."5432"
supersetNode.connections.db_userstringPostgreSQL username."superset_user"
supersetNode.connections.db_passstringPostgreSQL password."superset"
supersetNode.connections.db_namestringPostgreSQL database name."superset"

Initialization Configuration

InputTypeDescriptionDefault
init.createAdminbooleanWhether to create an admin user.true
init.adminUser.usernamestringAdmin username."admin"
init.adminUser.firstnamestringAdmin first name."Superset"
init.adminUser.lastnamestringAdmin last name."Admin"
init.adminUser.emailstringAdmin email address."admin@superset.com"
init.adminUser.passwordstringAdmin password."admin"

Celery Configuration

InputTypeDescriptionDefault
supersetCeleryBeat.enabledbooleanWhether to enable Celery Beat.false
supersetCeleryFlower.enabledbooleanWhether to enable Celery Flower.false

Example values.yaml

Terminal window
service:
nginx:
host :
tlshost :
tlsSecretname :
resources:
requests:
cpu: 250m
memory: 250Mi
limits:
cpu: 500m
memory: 500Mi
# SuperSet Configs
supersetNode:
connections:
# Redis Configs
redis_host: "{{ .Release.Name }}-redis-headless-service"
redis_port: "6379"
redis_user: ""
redis_cache_db: "1"
redis_celery_db: "0"
redis_ssl:
enabled: false
ssl_cert_reqs: CERT_NONE
# Postgresql Configs
db_host: "{{ .Release.Name }}-postgres"
db_port: "5432"
db_user: superset_user
db_pass: superset
db_name: superset
# Feature flags configuration
featureFlags: {}
# Additional Superset configurations
config: {}
supersetCeleryBeat:
enabled: false
supersetCeleryFlower:
enabled: false
init:
createAdmin: true
adminUser:
username: admin
firstname: Superset
lastname: Admin
email: admin@superset.com
password: admin
postgres:
enabled: true
postgresRootPassword: "superset"
services:
- name : superset
password : superset
database : superset
redis:
enabled: true

Features

  • Deploys Apache Superset with all dependencies
  • Automatic PostgreSQL database setup
  • Redis integration for caching and task queue
  • Configurable resource limits and requests
  • Automatic admin user creation
  • Database initialization and schema upgrades
  • Optional Celery integration for async tasks
  • Customizable feature flags
  • Data source import support
  • Role-based access control
  • HTTPS support

Architecture

The Superset deployment includes:

  • Superset web application
  • PostgreSQL database (dependency)
  • Redis instance (dependency)
  • Optional Celery workers
  • Optional Celery Beat scheduler
  • Optional Celery Flower monitoring
  • Database initialization jobs
  • Ingress configuration for external access
  • Environment variable configuration
  • Database connection management

Security Features

  • Configurable admin user creation
  • Database password management
  • HTTPS support
  • Role-based access control
  • Secure environment variable handling
  • Resource limits and requests
  • Database SSL configuration

Pod Scheduling

nodeSelector, tolerations and affinity are passed straight through to the pod spec. All three are empty by default and render nothing, so leaving them unset changes nothing for an existing release.

They apply to the web node, worker, beat and flower Deployments.

They also apply to the db-init Job, which otherwise could not schedule onto a tainted pool the Deployments had already reached.

Together they place the workload on a dedicated node pool — the nodeSelector picks the pool, the toleration gets past its taint:

Terminal window
nodeSelector:
workload: stateful
tolerations:
- key: workload
operator: Equal
value: stateful
effect: NoSchedule

affinity takes a full Affinity object and is rendered verbatim.

These keys reach this chart’s own pods only. The bundled postgres (0.0.12) and redis (0.0.1) subcharts predate this feature, so their pods cannot currently be pinned — setting postgres.nodeSelector or redis.nodeSelector is accepted and silently ignored. Bumping those dependencies to v0.0.15 and v0.0.6 or later is what makes it work.


Contributing

We welcome contributions to improve this Helm chart. Please refer to the CONTRIBUTING.md file for contribution guidelines.


Code of Conduct

To maintain a healthy and collaborative community, please adhere to our Code of Conduct.


License

This project is licensed under the LICENSE. Please review it for terms of use.

See it fire on your bill.

Connect an account read-only. The first findings land in minutes.

472 rule families across 353 resource types on 22 platforms. Every threshold, metric, and IAM action is documented on these pages before you grant anything.

472 rule families documented
353 resource types covered
read-only default access level
Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console· Multi-cloud automation· Production-ready in 30 min· SOC 2 · ISO 27001· 20–60% off the bill, first month· 4 platforms · 1 console·