poc-reports/superset/base/superset.yaml
2026-01-27 14:48:39 +01:00

473 lines
14 KiB
YAML

---
# Source: superset/templates/secret-env.yaml
apiVersion: v1
kind: Secret
metadata:
name: superset-env
namespace: reports-superset
labels:
app: superset
chart: superset-0.15.2
release: "superset"
heritage: "Helm"
type: Opaque
stringData:
REDIS_HOST: "valkey"
REDIS_USER: ""
REDIS_PORT: "6379"
REDIS_PROTO: "redis"
REDIS_DB: "1"
REDIS_CELERY_DB: "0"
DB_HOST: "superset-server"
DB_PORT: "5432"
DB_USER: "superset-user"
DB_PASS: "superset-pass"
DB_NAME: "superset-db"
SUPERSET_SECRET_KEY: "S737pQg5i1sIMx+rGm5i2N1WuP4ZP3fuQkcZ9lN8U8DJphVLkiFao5Uh"
---
# Source: superset/templates/secret-superset-config.yaml
apiVersion: v1
kind: Secret
metadata:
name: superset-config
namespace: reports-superset
labels:
app: superset
chart: superset-0.15.2
release: "superset"
heritage: "Helm"
type: Opaque
stringData:
superset_config.py: |
import os
from flask_caching.backends.rediscache import RedisCache
def env(key, default=None):
return os.getenv(key, default)
# Redis Base URL
REDIS_BASE_URL=f"{env('REDIS_PROTO')}://{env('REDIS_HOST')}:{env('REDIS_PORT')}"
# Redis URL Params
REDIS_URL_PARAMS = ""
# Build Redis URLs
CACHE_REDIS_URL = f"{REDIS_BASE_URL}/{env('REDIS_DB', 1)}{REDIS_URL_PARAMS}"
CELERY_REDIS_URL = f"{REDIS_BASE_URL}/{env('REDIS_CELERY_DB', 0)}{REDIS_URL_PARAMS}"
MAPBOX_API_KEY = env('MAPBOX_API_KEY', '')
CACHE_CONFIG = {
'CACHE_TYPE': 'RedisCache',
'CACHE_DEFAULT_TIMEOUT': 300,
'CACHE_KEY_PREFIX': 'superset_',
'CACHE_REDIS_URL': CACHE_REDIS_URL,
}
DATA_CACHE_CONFIG = CACHE_CONFIG
if os.getenv("SQLALCHEMY_DATABASE_URI"):
SQLALCHEMY_DATABASE_URI = os.getenv("SQLALCHEMY_DATABASE_URI")
else:
SQLALCHEMY_DATABASE_URI = f"postgresql+psycopg2://{os.getenv('DB_USER')}:{os.getenv('DB_PASS')}@{os.getenv('DB_HOST')}:{os.getenv('DB_PORT')}/{os.getenv('DB_NAME')}"
SQLALCHEMY_TRACK_MODIFICATIONS = True
class CeleryConfig:
imports = ("superset.sql_lab", )
broker_url = CELERY_REDIS_URL
result_backend = CELERY_REDIS_URL
CELERY_CONFIG = CeleryConfig
RESULTS_BACKEND = RedisCache(
host=env('REDIS_HOST'),
port=env('REDIS_PORT'),
key_prefix='superset_results',
)
superset_init.sh: |
#!/bin/sh
set -eu
echo "Upgrading DB schema..."
superset db upgrade
echo "Initializing roles..."
superset init
echo "Creating admin user..."
superset fab create-admin \
--username admin \
--firstname Superset \
--lastname Admin \
--email admin@superset.com \
--password admin \
|| true
if [ -f "/app/configs/import_datasources.yaml" ]; then
echo "Importing database connections.... "
superset import_datasources -p /app/configs/import_datasources.yaml
fi
superset_bootstrap.sh: |
#!/bin/bash
if [ ! -f ~/bootstrap ]; then echo "Running Superset with uid 0" > ~/bootstrap; fi
---
# Source: superset/templates/service.yaml
apiVersion: v1
kind: Service
metadata:
name: superset
namespace: reports-superset
labels:
app: superset
chart: superset-0.15.2
release: superset
heritage: Helm
spec:
type: ClusterIP
ports:
- port: 8088
targetPort: http
protocol: TCP
name: http
selector:
app: superset
release: superset
---
# Source: superset/templates/deployment-beat.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: superset-celerybeat
namespace: reports-superset
labels:
app: superset-celerybeat
chart: superset-0.15.2
release: superset
heritage: Helm
spec:
# This must be a singleton
replicas: 1
selector:
matchLabels:
app: superset-celerybeat
release: superset
template:
metadata:
annotations:
checksum/superset_config.py: 7c2be7b498705f47dbb4e27b852f68352f3b47b0d10ec15959ef2f5616f0e4d0
checksum/superset_bootstrap.sh: dc9a47141051ced34960c313860a55e03eb48c1fa36a0ed25c03ad60cd3b5c48
checksum/connections: 0cda20857b58c1cc042f2f6128f279790c0113c8b54544abeef2125c3aaf89e3
checksum/extraConfigs: 44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
checksum/extraSecrets: 44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
checksum/extraSecretEnv: cf425cecd61214dd2a8e0a09e410c147105e5d93a4e4ccbfe5b4a1bf8da5aacb
checksum/configOverrides: 44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
checksum/configOverridesFiles: 44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
labels:
app: "superset-celerybeat"
release: superset
spec:
securityContext:
runAsUser: 0
initContainers:
- command:
- /bin/sh
- -c
- dockerize -wait "tcp://$DB_HOST:$DB_PORT" -wait "tcp://$REDIS_HOST:$REDIS_PORT"
-timeout 120s
envFrom:
- secretRef:
name: 'superset-env'
image: 'apache/superset:dockerize'
imagePullPolicy: 'IfNotPresent'
name: wait-for-postgres-redis
containers:
- name: "superset-celerybeat"
image: "registry.dev.k8s.transcity/reports/superset:5.0.0"
imagePullPolicy: Always
command: ["/bin/sh","-c",". /app/pythonpath/superset_bootstrap.sh; celery --app=superset.tasks.celery_app:app beat --pidfile /tmp/celerybeat.pid --schedule /tmp/celerybeat-schedule"]
env:
- name: "SUPERSET_PORT"
value: "8088"
envFrom:
- secretRef:
name: "superset-env"
volumeMounts:
- name: superset-config
mountPath: "/app/pythonpath"
readOnly: true
resources:
{}
volumes:
- name: superset-config
secret:
secretName: superset-config
---
# Source: superset/templates/deployment-worker.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: superset-worker
namespace: reports-superset
labels:
app: superset-worker
chart: superset-0.15.2
release: superset
heritage: Helm
spec:
replicas: 1
selector:
matchLabels:
app: superset-worker
release: superset
template:
metadata:
annotations:
checksum/superset_config.py: 7c2be7b498705f47dbb4e27b852f68352f3b47b0d10ec15959ef2f5616f0e4d0
checksum/superset_bootstrap.sh: dc9a47141051ced34960c313860a55e03eb48c1fa36a0ed25c03ad60cd3b5c48
checksum/connections: 0cda20857b58c1cc042f2f6128f279790c0113c8b54544abeef2125c3aaf89e3
checksum/extraConfigs: 44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
checksum/extraSecrets: 44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
checksum/extraSecretEnv: cf425cecd61214dd2a8e0a09e410c147105e5d93a4e4ccbfe5b4a1bf8da5aacb
checksum/configOverrides: 44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
checksum/configOverridesFiles: 44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
labels:
app: superset-worker
release: superset
spec:
securityContext:
runAsUser: 0
initContainers:
- command:
- /bin/sh
- -c
- dockerize -wait "tcp://$DB_HOST:$DB_PORT" -wait "tcp://$REDIS_HOST:$REDIS_PORT"
-timeout 120s
envFrom:
- secretRef:
name: 'superset-env'
image: 'apache/superset:dockerize'
imagePullPolicy: 'IfNotPresent'
name: wait-for-postgres-redis
containers:
- name: superset
image: "registry.dev.k8s.transcity/reports/superset:5.0.0"
imagePullPolicy: Always
command: ["/bin/sh","-c",". /app/pythonpath/superset_bootstrap.sh; celery --app=superset.tasks.celery_app:app worker"]
env:
- name: "SUPERSET_PORT"
value: "8088"
envFrom:
- secretRef:
name: "superset-env"
volumeMounts:
- name: superset-config
mountPath: "/app/pythonpath"
readOnly: true
livenessProbe:
exec:
command:
- sh
- -c
- celery -A superset.tasks.celery_app:app inspect ping -d celery@$HOSTNAME
failureThreshold: 3
initialDelaySeconds: 120
periodSeconds: 60
successThreshold: 1
timeoutSeconds: 60
resources:
{}
volumes:
- name: superset-config
secret:
secretName: superset-config
---
# Source: superset/templates/deployment.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
name: superset
namespace: reports-superset
labels:
app: superset
chart: superset-0.15.2
release: superset
heritage: Helm
spec:
replicas: 1
selector:
matchLabels:
app: superset
release: superset
template:
metadata:
annotations:
# Force reload on config changes
checksum/superset_config.py: 7c2be7b498705f47dbb4e27b852f68352f3b47b0d10ec15959ef2f5616f0e4d0
checksum/superset_init.sh: e6b1e8eac1f7a79a07a6c72a0e2ee6e09654eeb439c6bbe61bfd676917c41e02
checksum/superset_bootstrap.sh: dc9a47141051ced34960c313860a55e03eb48c1fa36a0ed25c03ad60cd3b5c48
checksum/connections: 0cda20857b58c1cc042f2f6128f279790c0113c8b54544abeef2125c3aaf89e3
checksum/extraConfigs: 44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
checksum/extraSecrets: 44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
checksum/extraSecretEnv: cf425cecd61214dd2a8e0a09e410c147105e5d93a4e4ccbfe5b4a1bf8da5aacb
checksum/configOverrides: 44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
checksum/configOverridesFiles: 44136fa355b3678a1146ad16f7e8649e94fb4fc21fe77e8310c060f61caaff8a
labels:
app: superset
release: superset
spec:
securityContext:
runAsUser: 0
initContainers:
- command:
- /bin/sh
- -c
- dockerize -wait "tcp://$DB_HOST:$DB_PORT" -timeout 120s
envFrom:
- secretRef:
name: 'superset-env'
image: 'apache/superset:dockerize'
imagePullPolicy: 'IfNotPresent'
name: wait-for-postgres
containers:
- name: superset
image: "registry.dev.k8s.transcity/reports/superset:5.0.0"
imagePullPolicy: Always
command: ["/bin/sh","-c",". /app/pythonpath/superset_bootstrap.sh; /usr/bin/run-server.sh"]
env:
- name: "SUPERSET_PORT"
value: "8088"
envFrom:
- secretRef:
name: "superset-env"
volumeMounts:
- name: superset-config
mountPath: "/app/pythonpath"
readOnly: true
ports:
- name: http
containerPort: 8088
protocol: TCP
startupProbe:
failureThreshold: 60
httpGet:
path: /health
port: http
initialDelaySeconds: 15
periodSeconds: 5
successThreshold: 1
timeoutSeconds: 1
readinessProbe:
failureThreshold: 3
httpGet:
path: /health
port: http
initialDelaySeconds: 15
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 1
livenessProbe:
failureThreshold: 3
httpGet:
path: /health
port: http
initialDelaySeconds: 15
periodSeconds: 15
successThreshold: 1
timeoutSeconds: 1
resources:
{}
volumes:
- name: superset-config
secret:
secretName: superset-config
---
# Source: superset/templates/ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: superset
namespace: reports-superset
labels:
app: superset
chart: superset-0.15.2
release: superset
heritage: Helm
annotations:
cert-manager.io/cluster-issuer: admin
cert-manager.io/common-name: superset.alpha.k8s.transcity
cert-manager.io/private-key-algorithm: ECDSA
forecastle.stakater.com/appName: Superset
forecastle.stakater.com/expose: "true"
forecastle.stakater.com/group: Reports
forecastle.stakater.com/instance: admin
spec:
tls:
- hosts:
- superset.alpha.k8s.transcity
secretName: superset-tls
rules:
- host: superset.alpha.k8s.transcity
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: superset
port:
name: http
---
# Source: superset/templates/init-job.yaml
apiVersion: batch/v1
kind: Job
metadata:
name: superset-init-db
namespace: reports-superset
labels:
app: superset
chart: superset-0.15.2
release: superset
heritage: Helm
annotations:
helm.sh/hook: post-install,post-upgrade
helm.sh/hook-delete-policy: before-hook-creation
spec:
template:
metadata:
name: superset-init-db
spec:
securityContext:
runAsUser: 0
initContainers:
- command:
- /bin/sh
- -c
- dockerize -wait "tcp://$DB_HOST:$DB_PORT" -timeout 120s
envFrom:
- secretRef:
name: 'superset-env'
image: 'apache/superset:dockerize'
imagePullPolicy: 'IfNotPresent'
name: wait-for-postgres
containers:
- name: superset-init-db
image: "registry.dev.k8s.transcity/reports/superset:5.0.0"
envFrom:
- secretRef:
name: superset-env
imagePullPolicy: Always
volumeMounts:
- name: superset-config
mountPath: "/app/pythonpath"
readOnly: true
command: ["/bin/sh","-c",". /app/pythonpath/superset_bootstrap.sh; . /app/pythonpath/superset_init.sh"]
resources:
{}
volumes:
- name: superset-config
secret:
secretName: superset-config
restartPolicy: Never