Skip to main content

Superset GKE Module — Configuration Guide

This guide describes every configuration variable available in the Superset_GKE module. Superset_GKE is a wrapper module that combines the generic App_GKE infrastructure module with the Superset_Common shared application configuration to deploy Apache Superset on Google Kubernetes Engine (GKE) Autopilot.

Most configuration options in Superset GKE map directly to the same options in App GKE. Where a variable is identical in behaviour, this guide references the App GKE guide rather than repeating the documentation.

Note: Variables marked as platform-managed are set and maintained by the platform. You do not normally need to change them.


Standard Configuration Reference

Configuration AreaApp GKE.md SectionSuperset-Specific Notes
Module Metadata & Configuration§1 Module OverviewSuperset-specific module_description and module_services defaults are pre-set.
Project & Identity§2 IAM & Access ControlIdentical.
Application Identity§3.A Compute (GKE Autopilot)Superset-specific defaults; see Group 2.
Runtime & Scaling§3.A Compute (GKE Autopilot)Superset-specific defaults; see Group 3.
Environment Variables & Secrets§3 Core Service ConfigurationSUPERSET_SECRET_KEY auto-injected; see Group 5.
Initialization Jobs & CronJobs§3.E Initialization Jobs & CronJobsTwo-phase db-init + app-init; see Group 8.
Storage — GCS§3.C Storagesuperset-data GCS bucket provisioned automatically.
Database Configuration§3.B Database (Cloud SQL)PostgreSQL 15; see Group 11.
Observability & Health Checks§3.A Compute (GKE Autopilot)Probes target /health; see Group 13.
Cloud Armor WAF§4.A Cloud Armor WAFIdentical.
Identity-Aware Proxy§4.B IAPUseful for restricting Superset to internal users.
Traffic & Ingress§5 Traffic & Ingresssession_affinity = "ClientIP" recommended; see Group 17.
Redis Cache§8.A Redis / Memorystoreenable_redis = false by default; see Group 14.

How Superset GKE Relates to App GKE

  1. SUPERSET_SECRET_KEY is auto-generated. Superset Common creates a 50-character random key in Secret Manager. This key signs Flask sessions — changing it invalidates all active sessions.
  2. Two-phase initialisation. Superset Common provides db-init (database creation) and app-init (Superset schema migration and admin creation) jobs that run automatically on first deploy.
  3. superset-data GCS bucket is provisioned automatically.
  4. PostgreSQL 15 is the supported database. database_type defaults to "POSTGRES_15".
  5. Session affinity is recommended. session_affinity = "ClientIP" is the default to ensure Superset's stateful session handling works correctly across multiple pods.
  6. Health probes target /health. Superset exposes a /health endpoint that returns HTTP 200 when the Gunicorn worker pool is ready.

Group 0: Module Metadata & Configuration

Identical to App_GKE. See App_GKE §1.

Superset-specific defaults:

VariableSuperset GKE DefaultNotes
credit_cost150GKE deployments cost more credits than Cloud Run.

Group 1: Project & Identity

Identical to App_GKE. See App_GKE §2.


Group 2: Application Identity

Superset-specific defaults:

VariableSuperset GKE DefaultApp GKE DefaultNotes
application_name"superset""gkeapp"Base name for all resources. Do not change after deployment.
display_name"Superset"(not in App GKE)Human-readable name.
description"Apache Superset data visualisation platform"(not in App GKE)Deployment description.
application_version"latest""1.0.0"Superset release version.

Group 3: Runtime & Scaling

Superset-specific defaults:

VariableSuperset GKE DefaultApp GKE DefaultNotes
container_port80888080Superset's Gunicorn port.
cpu_limit"2000m""1000m"Python query execution requires 2 vCPU.
memory_limit"2Gi""512Mi"Query result caching and Pandas DataFrames require 2 Gi.
min_instance_count11Always one warm pod.
max_instance_count33Multiple concurrent users.
enable_cloudsql_volumetruetrueCloud SQL Auth Proxy sidecar.
timeout_seconds600300Extended for long-running queries.

Group 4: Access & Networking

Identical to App_GKE. See App_GKE §4.

VariableDefaultDescription
enable_iapfalseIdentity-Aware Proxy. Restricts Superset to authenticated Google users.
iap_authorized_users[]Users/service accounts granted IAP access.
iap_authorized_groups[]Google Groups granted IAP access.
enable_custom_domainfalseCustom domain with SSL.
application_domains[]Custom domain names.
reserve_static_iptrueReserves a Global Static IP.
enable_cloud_armorfalseCloud Armor WAF.
admin_ip_ranges[]WAF-exempt CIDR ranges.
enable_vpc_scfalseVPC Service Controls.

Group 5: Environment Variables & Secrets

SUPERSET_SECRET_KEY is injected automatically from Superset Common. The value is a 50-character random string stored in Secret Manager — do not rotate it without coordinating session invalidation.

VariableDefaultDescription
environment_variables{}Additional env vars.
secret_environment_variables{}Additional Secret Manager references. SUPERSET_SECRET_KEY is auto-injected.

Group 6: Backup & Maintenance

Identical to App_GKE. See App_GKE §3.B.

VariableDefaultNotes
backup_schedule"0 2 * * *"Daily at 02:00 UTC.
backup_retention_days77-day retention.
enable_backup_importfalseOne-time restore on deploy.

Group 7: CI/CD & GitHub Integration

Identical to App_GKE. See App_GKE §6.


Group 8: Jobs & Scheduled Tasks

Superset default two-phase init pipeline:

JobImagePurposeDepends OnTimeoutexecute_on_apply
db-initpostgres:15-alpineCreate Superset PostgreSQL database and user600strue
app-init(Superset app image)Run superset db upgrade + superset fab create-admindb-init1800strue

The app-init job runs the Superset container image itself and executes the combined database upgrade and initial admin user creation. The 30-minute timeout accommodates schema migrations on large or complex database setups.

Override initialization_jobs with a non-empty list to replace this default pipeline.


Group 11: Database Configuration

Superset-specific defaults:

VariableSuperset GKE DefaultApp GKE DefaultNotes
database_type"POSTGRES_15""POSTGRES"Superset requires PostgreSQL.
db_name"superset_db"(not in App GKE)Database name passed to Superset Common.
db_user"superset_user"(not in App GKE)Database user passed to Superset Common.

Automatic password rotation:

VariableDefaultDescription
enable_auto_password_rotationfalseAutomated rotation.
rotation_propagation_delay_sec90Restart delay after rotation.

Group 13: Observability & Health

Superset exposes /health as its dedicated health endpoint.

Startup probe:

FieldSuperset DefaultNotes
path"/health"Superset's health endpoint.
initial_delay_seconds60Gunicorn worker pool initialisation takes time.
failure_threshold12Allows up to 180s total startup tolerance.

Liveness probe:

FieldSuperset Default
path"/health"
initial_delay_seconds30

Override recommended: startup_probe_config and health_check_config default to path = "/healthz". Override both to path = "/health" for Superset.


Group 14: Reliability Policies

Identical to App_GKE. See App_GKE §7.


Group 14: Redis Cache

Redis is disabled by default but recommended for production multi-user deployments. Redis serves as the Celery broker for async queries and the result backend for caching.

VariableDefaultDescription
enable_redisfalseEnables Redis. Recommended for production.
redis_host""Redis hostname or IP.
redis_port"6379"Redis port (string in Superset GKE, unlike number in Superset CloudRun).
redis_auth""Redis AUTH password. Sensitive.

Group 17: GKE Backend Configuration

Superset-specific defaults:

VariableSuperset GKE DefaultApp GKE DefaultNotes
session_affinity"ClientIP""None"Ensures Superset sessions are consistently routed to the same pod. Required for reliable login behaviour.
workload_typenullnullDefaults to Deployment.
service_type"LoadBalancer""LoadBalancer"External load balancer.

Module Outputs

OutputDescription
service_nameKubernetes service name.
service_urlService URL.
service_external_ipExternal load balancer IP.
project_idGCP project ID.
deployment_idDeployment ID suffix.
namespaceKubernetes namespace.
database_instance_nameCloud SQL PostgreSQL 15 instance name.
database_nameApplication database name.
database_userApplication database user.
database_password_secretSecret Manager secret for the database password.
storage_bucketsCreated GCS storage buckets.
container_imageContainer image used.
kubernetes_readytrue when Kubernetes resources are deployed.

Configuration Pitfalls & Sensible Defaults

Risk levels: Critical (data loss, full outage, security breach) — High (service unavailable or significant degradation) — Medium (degraded function or increased cost) — Low (minor impact).

VariableSensible DefaultRiskConsequence of Incorrect Value
SUPERSET_SECRET_KEY (via Secret Manager)Auto-generated 50-char random stringCriticalIf this value is changed after the first deployment, all existing user sessions are immediately invalidated and all encrypted data source credentials stored in Superset's PostgreSQL schema become permanently unreadable. Treat as immutable after first deploy.
container_resources.memory_limit"2Gi"HighUnder 1 Gi gunicorn workers are OOM-killed during query execution. "2Gi" is the minimum; "4Gi" is recommended for production. On GKE Autopilot, mem_request also drives node provisioning — set close to memory_limit.
container_resources.cpu_limit"2000m"HighSuperset migrations (run by the app-init job) and gunicorn startup require significant CPU. Under 1000m the init job may time out in its 1800 s window.
container_resources.mem_requestnull (defaults to limit)MediumOn GKE Autopilot, setting mem_request far below memory_limit leads to burstable scheduling and possible OOM eviction under memory pressure.
enable_redisfalseHighWithout Redis, Celery workers have no broker or result backend. Async query execution, cache warming, and scheduled reports are all non-functional. For GKE production deployments, always set enable_redis = true.
redis_hostnullHighRequired when enable_redis = true. An empty value causes all Celery workers to fail to connect on pod startup, making async queries permanently unavailable.
SUPERSET_PORT"8088" (injected)HighMust match container_port. Changing one without the other breaks all routing and health checks.
application_database_name"superset"HighImmutable after the db-init job has run. Changing orphans the entire Superset schema.
application_database_user"superset"HighImmutable after the db-init job has run. Renaming requires manual Cloud SQL intervention.
application_version"latest"MediumPinning to a specific version prevents uncontrolled upgrades that may introduce breaking API changes. Always test upgrades in staging.
min_instance_count1HighScale-to-zero terminates Celery workers; async queries submitted while the pod is cold are lost. Superset has a 30–60 s startup time.
max_instance_count(check your setting)MediumMultiple replicas share PostgreSQL but require Redis as a shared Celery result backend. Without Redis, async results are only accessible to the instance that executed the query.
quota_memory_requests / quota_memory_limits"4Gi" / "8Gi"HighGKE-specific: must use binary suffixes (Gi, Mi). Bare integers (e.g., "4") are treated as bytes by Kubernetes and block all pod scheduling.
stateful_pvc_enabledfalseMediumSuperset does not need persistent volumes — state is in PostgreSQL and Redis. Enabling adds unnecessary StatefulSet complexity.
pdb_min_available"1"MediumSetting to "0" allows all pods to be evicted simultaneously during node upgrades, causing a full Superset outage.
enable_iapfalseHighWithout IAP the Superset login form is reachable from the load-balancer IP. Always enable IAP or configure Kubernetes network policies for production.
startup_probe_config.failure_threshold30HighReducing below 15 causes GKE to kill pods before Superset completes db migrations and starts gunicorn.
backup_schedule"0 2 * * *"MediumDisabling automated backups leaves all dashboards, charts, and RLS rules unprotected.
db_tier"db-f1-micro" (Common default)MediumInsufficient for production Superset workloads. Override to at least "db-custom-2-7680" in production environments.
SUPERSET_LOAD_EXAMPLES"no" (injected)MediumOverriding to "yes" populates the workspace with demo data on every startup and significantly increases init time.