--- # 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