Apache Superset Kubernetes Operator

Clone this repo:

Branches

  1. 727fc77 fix(lifecycle): resolve maintenance port mismatch and harden return path (#47) by Ville Brofeldt · 5 hours ago main
  2. 99aff96 refactor(controller): move web-server Service to parent ownership and decompose controller (#46) by Ville Brofeldt · 6 hours ago
  3. 0be564f fix(lifecycle): prevent drain loop and fix clone pod execution (#45) by Ville Brofeldt · 8 hours ago
  4. 0e5644c chore: fix drift (#44) by Ville Brofeldt · 14 hours ago
  5. 946eb7b feat(lifecycle): add maintenance page during drain (#43) by Ville Brofeldt · 15 hours ago

Apache Superset Kubernetes Operator

Warning: This project is under active development and is not yet stable. APIs, CRD schemas, and behavior may change without notice between releases. Do not use in production.

CI codecov Go Report Card License Docs

A Kubernetes operator for deploying and managing Apache Superset on Kubernetes. Read the documentation to get started. Built with the Go-based Operator SDK.

The operator is designed to make running Superset on Kubernetes as painless as possible. It works well out of the box with production-ready defaults, and every default is overridable when you need more control.

Quick Start

Install the operator via Helm:

helm install superset-operator \
  oci://ghcr.io/apache/superset-kubernetes-operator/charts/superset-operator \
  --version <version> \
  --namespace superset-operator-system \
  --create-namespace

Then create a minimal Superset instance:

apiVersion: superset.apache.org/v1alpha1
kind: Superset
metadata:
  name: my-superset
spec:
  image:
    tag: "latest"
  environment: Development
  secretKey: thisIsNotSecure_changeInProduction!
  metastore:
    uri: postgresql+psycopg2://superset:superset@postgres:5432/superset
  webServer: {}

Note: The example above uses environment: Development for simplicity. In production (the default), use secretKeyFrom and metastore.uriFrom to reference Kubernetes Secrets. See the User Guide and the sample manifests for production-ready examples.

Development

make build            # Build operator binary
make test             # Run unit/integration tests
make lint             # Run golangci-lint
make helm-lint        # Lint the Helm chart
make docs-serve       # Serve docs locally (http://localhost:8000)
make manifests        # Regenerate CRDs + RBAC from markers
make generate         # Regenerate DeepCopy methods

After editing type definitions in api/v1alpha1/, run make manifests generate and commit the generated files alongside your changes.

License

Licensed under the Apache License, Version 2.0. See LICENSE for details.