mirror of
https://github.com/apache/superset.git
synced 2026-04-17 15:15:20 +00:00
* setup docusaurus
* rename
* add introduction content
* chore(docsV2): move content from docs to docsV2 (#17714)
* add FAQs and contribution pages
* chore: add api, security, and roadmap pages, include swaggerui in dependency for api page
* chore: move api page header below imports
* chore: change API page info alert to use built in Infima class instead of custom class
Co-authored-by: Corbin Robb <corbin@Corbins-MacBook-Pro.local>
* chore(docs-v2): moving more markdown content to new documentation site (#17736)
* chore: move markdown content and images for docs installation directory to docs-v2
* chore: move docs miscellaneous directory content to docs-v2
* chore(docs-v2): move over connecting to databases content and rename some files to .mdx
Co-authored-by: Corbin Robb <corbin@Corbins-MacBook-Pro.local>
* Update styling and logo (#17990)
* update styling
* update colors
* chore(docs-v2): remove blog and tutorial and update some styling (#17929)
* add superset logo and favicon, change styles to better match current docs, add prettierrc
* change file types to mdx
* Add simple superset dark mode freindly logo
* clean up default pages - blog and tutorial docs
Co-authored-by: Corbin Robb <corbin@Corbins-MacBook-Pro.local>
* Chore: moving charts and dashboard to docusaurus (#18036)
* add contributing add creating charts and dashboards
* delete extra images
* update rat-excludes
* Port homepage (#18115)
* Port community page (#18128)
* chore: add seo redirects for Docs v@ (#18092)
* fix: handle null values in time-series table (#18039)
* cleanup column_type_mappings (#17569)
Signed-off-by: Đặng Minh Dũng <dungdm93@live.com>
* important change to MakeFile (#18037)
* Update superset-e2e.yml (#18041)
* Revert "Update superset-e2e.yml (#18041)" (#18051)
This reverts commit b5652739c9.
* feat: Trino Authentications (#17593)
* feat: support Trino Authentications
Signed-off-by: Đặng Minh Dũng <dungdm93@live.com>
* docs: Trino Authentications
Signed-off-by: Đặng Minh Dũng <dungdm93@live.com>
* chore(supeset.utils.core): move all database utils to database utils module (#18058)
* chore(plugin-chart-echarts): add types to controls (#18059)
* fix(generator): more cleanup to plugin framework (#18027)
* fix(generator): more cleanup to plugin framework
* fix typo and package name
* add docs
* fix typo
* Update superset-frontend/webpack.config.js
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
* fix generator reference
* add steps to tutorial and fix package version
* refine docs/readme
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
* feat(advanced analytics): support groupby in resample (#18045)
* fix(dashboard): scope of nativefilter not update (#18048)
* fix(generator): add lockfile and fix styling issues (#18073)
* fix(generator): add lockfile and fix styling issues
* fix margins and remove redundant scroll
* update tutorial
* refactor(sql_lab): SQL Lab Persistent Saved State (#17771)
* a lot of console logs
* testing
* test
* added saved_query to remoteId
* created useEffect so that title properly changes in modal
* Update superset-frontend/src/SqlLab/actions/sqlLab.js
Co-authored-by: Lyndsi Kay Williams <55605634+lyndsiWilliams@users.noreply.github.com>
Co-authored-by: Lyndsi Kay Williams <55605634+lyndsiWilliams@users.noreply.github.com>
* refactor(example_data): replace the way the birth_names data is loaded to DB (#18060)
* refactor: replace the way the birth_names data is loaded to DB
* fix failed unit test
* fix failed unit test
* fix failed tests
* fix pass wrong flag of support datetime type
* remove unused fixture
* feat: add chart description in info tooltip (#17207)
* feat: add chart list description
* fix: text overflow
* fix: text-overflow with line-height
* Correction of proper names format in README (#18087)
* chore: added SEO routes
* fix can't use examples helpers on non app context based environment (#18086)
* chore: split CLI into multiple files (#18082)
* chore: split CLI into multiple files
* Update tests
* Who fixes the fixtures?
* Add subcommands dynamically
* Rebase
* fix misspelling (#18097)
* refactor: sqleditorleftbar to functional (#17807)
* Working on converting sqleditorleftbar to functional component
* Creating draft PR to address bug
* Still working on solving re rendering bug
* infinite rerender fix
* Creating draft PR to address bug
* Cleaning up in preparation for push
* Made changes suggested by Elizabeth
* Fixed issues as per Lindsey's comment
Co-authored-by: Arash <arash.afghahi@gmail.com>
* fix rat excludes and headers
* fix(docs): fix path of image for "Create New Chart" (#18089)
* Migrate Checkbox story to tsx - see #18100 (#18101)
Looks good!
* refactor: migrate RowCountLabel to TypeScript & added story (#18105)
* enable superbook for explore component
* migrate RowCountLabel to TypeScript
* add storybook for RowCountLabel
* fix: logging warning on dataframe (don't use python's warnings) (#18111)
* fix: logging warning on dataframe (don't use python's warnings)
* lint
* update changelog and updating for 1.4.0 (#18083)
* feat: Adds a key-value endpoint to store charts form data (#17882)
* feat: Adds a key-value endpoint to store charts form data
* Fixes linting problems
* Removes the query_params from the endpoints
* Refactors the commands
* Removes unused imports
* Changes the parameters to use dataclass
* Adds more access tests
* Gets the first dataset while testing
* Adds unit tests for the check_access function
* Changes the can_access check
* Always check for dataset access
* fix(explore): fix chart embed code modal glitch (#17843)
* feat(plugin-chart-echarts): support non-timeseries x-axis (#17917)
* feat(plugin-chart-echarts): support non-timeseries x-axis
* fix tests
* change formula return type from Date to number
* add x_axis test coverage
* rename func and improve coverage
* add x-axis control to bar chart
* remove redundant console.log
* fix description
* make x-axis control mandatory
* 🙃
* fix x-axis formatter
* fix showValues
* fix implicit rDTTM_ALIAS references in postProcessing
* replace TIME_COLUMN with DTTM_ALIAS
* fix remaining implicit indexes
* fix: Disable filtering on wide result sets (#18021)
* fix: handle null values in time-series table (#18039)
* cleanup column_type_mappings (#17569)
Signed-off-by: Đặng Minh Dũng <dungdm93@live.com>
* important change to MakeFile (#18037)
* add missing is_timeseries to pivot op
Co-authored-by: Erik Ritter <erik.ritter@airbnb.com>
Co-authored-by: Grace Guo <grace.guo@airbnb.com>
Co-authored-by: Đặng Minh Dũng <dungdm93@live.com>
Co-authored-by: AAfghahi <48933336+AAfghahi@users.noreply.github.com>
* feat(country-map): added new countries in country-chart-map (#18081)
* chore: migrating storybook jsx to typescript #18100 (#18133)
* Migrating storybook jsx to typescript #18100
* Migrating storybook jsx to typescript
Co-authored-by: Jayakrishnan Karolil <jayakrishnan.karolil@nielsen.com>
* feat(annotation): add toast feedback to annotation templates (#18116)
* feat(dashboard): add toast feedback to dashboard actions (#18114)
* feat(explore): more toast feedback on user actions in Explore (#18108)
* feat(explore): add toasts feedback when user copies chart url
* Show toast message when updating chart properties
* Change toast type to success when saving chart
* Use success toast from props
* Fix tests
* Use withToasts instead of dispatch
* Use PropertiesModalProps instead of any
* Docs: fix typo (#18125)
* fix: undefined error when adding extra sequential color scheme (#18152)
* feat: allow assets to be managed externally (#18093)
* feat: allow assets to be managed externally
* Use server_default
* chore: use pkg_resources for cleaner config (#18130)
* refactor: Moves the Explore form_data endpoint (#18151)
* refactor: Moves the Explore form_data endpoint
* Removes unused imports
* Fixes openapi schema error
* Fixes typo
* Renames and UPDATING.md
Co-authored-by: Grace Guo <grace.guo@airbnb.com>
Co-authored-by: Đặng Minh Dũng <dungdm93@live.com>
Co-authored-by: AAfghahi <48933336+AAfghahi@users.noreply.github.com>
Co-authored-by: Hugh A. Miles II <hughmil3s@gmail.com>
Co-authored-by: ofekisr <35701650+ofekisr@users.noreply.github.com>
Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
Co-authored-by: Yongjie Zhao <yongjie.zhao@gmail.com>
Co-authored-by: Stephen Liu <750188453@qq.com>
Co-authored-by: Lyndsi Kay Williams <55605634+lyndsiWilliams@users.noreply.github.com>
Co-authored-by: Adam Dobrawy <ad-m@users.noreply.github.com>
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
Co-authored-by: Emily Wu <86927881+em0227@users.noreply.github.com>
Co-authored-by: Josue Lugaro <82119536+JosueLugaro@users.noreply.github.com>
Co-authored-by: Arash <arash.afghahi@gmail.com>
Co-authored-by: Ville Brofeldt <ville.v.brofeldt@gmail.com>
Co-authored-by: Daniel Vaz Gaspar <danielvazgaspar@gmail.com>
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
Co-authored-by: Erik Ritter <erik.ritter@airbnb.com>
Co-authored-by: Hammad-Raza <hammadraza42@hotmail.com>
Co-authored-by: jayakrishnankk <kk.jayakrishnan@gmail.com>
Co-authored-by: Jayakrishnan Karolil <jayakrishnan.karolil@nielsen.com>
Co-authored-by: Farid Rener <proteusvacuum@users.noreply.github.com>
* remove unneeded requirement
Co-authored-by: Corbin Robb <31329271+corbinrobb@users.noreply.github.com>
Co-authored-by: Corbin Robb <corbin@Corbins-MacBook-Pro.local>
Co-authored-by: Daniel W <61300812+The-hyphen-user@users.noreply.github.com>
Co-authored-by: Geido <60598000+geido@users.noreply.github.com>
Co-authored-by: Srini Kadamati <skadamat@gmail.com>
Co-authored-by: Grace Guo <grace.guo@airbnb.com>
Co-authored-by: Đặng Minh Dũng <dungdm93@live.com>
Co-authored-by: AAfghahi <48933336+AAfghahi@users.noreply.github.com>
Co-authored-by: ofekisr <35701650+ofekisr@users.noreply.github.com>
Co-authored-by: Ville Brofeldt <33317356+villebro@users.noreply.github.com>
Co-authored-by: Kamil Gabryjelski <kamil.gabryjelski@gmail.com>
Co-authored-by: Yongjie Zhao <yongjie.zhao@gmail.com>
Co-authored-by: Stephen Liu <750188453@qq.com>
Co-authored-by: Lyndsi Kay Williams <55605634+lyndsiWilliams@users.noreply.github.com>
Co-authored-by: Adam Dobrawy <ad-m@users.noreply.github.com>
Co-authored-by: Beto Dealmeida <roberto@dealmeida.net>
Co-authored-by: Emily Wu <86927881+em0227@users.noreply.github.com>
Co-authored-by: Josue Lugaro <82119536+JosueLugaro@users.noreply.github.com>
Co-authored-by: Arash <arash.afghahi@gmail.com>
Co-authored-by: Ville Brofeldt <ville.v.brofeldt@gmail.com>
Co-authored-by: Daniel Vaz Gaspar <danielvazgaspar@gmail.com>
Co-authored-by: Elizabeth Thompson <eschutho@gmail.com>
Co-authored-by: Michael S. Molina <70410625+michael-s-molina@users.noreply.github.com>
Co-authored-by: Erik Ritter <erik.ritter@airbnb.com>
Co-authored-by: Hammad-Raza <hammadraza42@hotmail.com>
Co-authored-by: jayakrishnankk <kk.jayakrishnan@gmail.com>
Co-authored-by: Jayakrishnan Karolil <jayakrishnan.karolil@nielsen.com>
Co-authored-by: Farid Rener <proteusvacuum@users.noreply.github.com>
372 lines
12 KiB
Plaintext
372 lines
12 KiB
Plaintext
---
|
|
title: Running on Kubernetes
|
|
hide_title: true
|
|
sidebar_position: 12
|
|
version: 1
|
|
---
|
|
|
|
## Running on Kubernetes
|
|
|
|
Running on Kubernetes is supported with the provided [Helm](https://helm.sh/) chart found in the official [Superset helm repository](https://apache.github.io/superset/index.yaml).
|
|
|
|
### Prerequisites
|
|
|
|
- A Kubernetes cluster
|
|
- Helm installed
|
|
|
|
### Running
|
|
|
|
1. Add the Superset helm repository
|
|
|
|
```sh
|
|
helm repo add superset https://apache.github.io/superset
|
|
"superset" has been added to your repositories
|
|
```
|
|
|
|
2. View charts in repo
|
|
|
|
```sh
|
|
helm search repo superset
|
|
NAME CHART VERSION APP VERSION DESCRIPTION
|
|
superset/superset 0.1.1 1.0 Apache Superset is a modern, enterprise-ready b...
|
|
```
|
|
|
|
3. Configure your setting overrides
|
|
|
|
Just like any typical Helm chart, you'll need to craft a `values.yaml` file that would define/override any of the values exposed into the default [values.yaml](https://github.com/apache/superset/tree/master/helm/superset/values.yaml), or from any of the dependent charts it depends on:
|
|
|
|
- [bitnami/redis](https://artifacthub.io/packages/helm/bitnami/redis)
|
|
- [bitnami/postgresql](https://artifacthub.io/packages/helm/bitnami/postgresql)
|
|
|
|
More info down below on some important overrides you might need.
|
|
|
|
4. Install and run
|
|
|
|
```sh
|
|
helm upgrade --install --values my-values.yaml superset superset/superset
|
|
```
|
|
|
|
You should see various pods popping up, such as:
|
|
|
|
```sh
|
|
kubectl get pods
|
|
NAME READY STATUS RESTARTS AGE
|
|
superset-celerybeat-7cdcc9575f-k6xmc 1/1 Running 0 119s
|
|
superset-f5c9c667-dw9lp 1/1 Running 0 4m7s
|
|
superset-f5c9c667-fk8bk 1/1 Running 0 4m11s
|
|
superset-init-db-zlm9z 0/1 Completed 0 111s
|
|
superset-postgresql-0 1/1 Running 0 6d20h
|
|
superset-redis-master-0 1/1 Running 0 6d20h
|
|
superset-worker-75b48bbcc-jmmjr 1/1 Running 0 4m8s
|
|
superset-worker-75b48bbcc-qrq49 1/1 Running 0 4m12s
|
|
```
|
|
|
|
The exact list will depend on some of your specific configuration overrides but you should generally expect:
|
|
|
|
- N `superset-xxxx-yyyy` and `superset-worker-xxxx-yyyy` pods (depending on your `replicaCount` value)
|
|
- 1 `superset-postgresql-0` depending on your postgres settings
|
|
- 1 `superset-redis-master-0` depending on your redis settings
|
|
- 1 `superset-celerybeat-xxxx-yyyy` pod if you have `supersetCeleryBeat.enabled = true` in your values overrides
|
|
|
|
1. Access it
|
|
|
|
The chart will publish appropriate services to expose the Superset UI internally within your k8s cluster. To access it externally you will have to either:
|
|
|
|
- Configure the Service as a `LoadBalancer` or `NodePort`
|
|
- Set up an `Ingress` for it - the chart includes a definition, but will need to be tuned to your needs (hostname, tls, annotations etc...)
|
|
- Run `kubectl port-forward superset-xxxx-yyyy :8088` to directly tunnel one pod's port into your localhost
|
|
|
|
Depending how you configured external access, the URL will vary. Once you've identified the appropriate URL you can log in with:
|
|
|
|
- user: `admin`
|
|
- password: `admin`
|
|
|
|
### Important settings
|
|
|
|
#### Security settings
|
|
|
|
Default security settings and passwords are included but you **SHOULD** override those with your own, in particular:
|
|
|
|
```yaml
|
|
postgresql:
|
|
postgresqlPassword: superset
|
|
```
|
|
|
|
#### Dependencies
|
|
|
|
Install additional packages and do any other bootstrap configuration in this script. For production clusters it's
|
|
recommended to build own image with this step done in CI. The following example installs the Big Query and Elasticsearch
|
|
database drivers so that you can connect to those datasources in your Superset installation.
|
|
|
|
```yaml
|
|
bootstrapScript: |
|
|
#!/bin/bash
|
|
pip install psycopg2==2.8.5 \
|
|
redis==3.2.1 \
|
|
pybigquery==2.26.0 \
|
|
elasticsearch-dbapi==0.2.5 &&\
|
|
if [ ! -f ~/bootstrap ]; then echo "Running Superset with uid {{ .Values.runAsUser }}" > ~/bootstrap; fi
|
|
```
|
|
|
|
#### superset_config.py
|
|
|
|
The default `superset_config.py` is fairly minimal and you will very likely need to extend it. This is done by specifying one or more key/value entries in `configOverrides`, e.g.:
|
|
|
|
```yaml
|
|
configOverrides:
|
|
my_override: |
|
|
# This will make sure the redirect_uri is properly computed, even with SSL offloading
|
|
ENABLE_PROXY_FIX = True
|
|
FEATURE_FLAGS = {
|
|
"DYNAMIC_PLUGINS": True
|
|
}
|
|
```
|
|
|
|
Those will be evaluated as Helm templates and therefore will be able to reference other `values.yaml` variables e.g. `{{ .Values.ingress.hosts[0] }}` will resolve to your ingress external domain.
|
|
|
|
The entire `superset_config.py` will be installed as a secret, so it is safe to pass sensitive parameters directly... however it might be more readable to use secret env variables for that.
|
|
|
|
Full python files can be provided by running `helm upgrade --install --values my-values.yaml --set-file configOverrides.oauth=set_oauth.py`
|
|
|
|
#### Environment Variables
|
|
|
|
Those can be passed as key/values either with `extraEnv` or `extraSecretEnv` if they're sensitive. They can then be referenced from `superset_config.py` using e.g. `os.environ.get("VAR")`.
|
|
|
|
```yaml
|
|
extraEnv:
|
|
SMTP_HOST: smtp.gmail.com
|
|
SMTP_USER: user@gmail.com
|
|
SMTP_PORT: "587"
|
|
SMTP_MAIL_FROM: user@gmail.com
|
|
|
|
extraSecretEnv:
|
|
SMTP_PASSWORD: xxxx
|
|
|
|
configOverrides:
|
|
smtp: |
|
|
import ast
|
|
SMTP_HOST = os.getenv("SMTP_HOST","localhost")
|
|
SMTP_STARTTLS = ast.literal_eval(os.getenv("SMTP_STARTTLS", "True"))
|
|
SMTP_SSL = ast.literal_eval(os.getenv("SMTP_SSL", "False"))
|
|
SMTP_USER = os.getenv("SMTP_USER","superset")
|
|
SMTP_PORT = os.getenv("SMTP_PORT",25)
|
|
SMTP_PASSWORD = os.getenv("SMTP_PASSWORD","superset")
|
|
```
|
|
|
|
#### System packages
|
|
|
|
If new system packages are required, they can be installed before application startup by overriding the container's `command`, e.g.:
|
|
|
|
```yaml
|
|
supersetWorker:
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- |
|
|
apt update
|
|
apt install -y somepackage
|
|
apt autoremove -yqq --purge
|
|
apt clean
|
|
|
|
# Run celery worker
|
|
. {{ .Values.configMountPath }}/superset_bootstrap.sh; celery --app=superset.tasks.celery_app:app worker
|
|
```
|
|
|
|
#### Data sources
|
|
|
|
Data source definitions can be automatically declared by providing key/value yaml definitions in `extraConfigs`:
|
|
|
|
```yaml
|
|
extraConfigs:
|
|
datasources-init.yaml: |
|
|
databases:
|
|
- allow_file_upload: true
|
|
allow_ctas: true
|
|
allow_cvas: true
|
|
database_name: example-db
|
|
extra: "{\r\n \"metadata_params\": {},\r\n \"engine_params\": {},\r\n \"\
|
|
metadata_cache_timeout\": {},\r\n \"schemas_allowed_for_file_upload\": []\r\n\
|
|
}"
|
|
sqlalchemy_uri: example://example-db.local
|
|
tables: []
|
|
```
|
|
|
|
Those will also be mounted as secrets and can include sensitive parameters.
|
|
|
|
### Configuration Examples
|
|
|
|
#### Setting up OAuth
|
|
|
|
```yaml
|
|
extraEnv:
|
|
AUTH_DOMAIN: example.com
|
|
|
|
extraSecretEnv:
|
|
GOOGLE_KEY: xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com
|
|
GOOGLE_SECRET: xxxxxxxxxxxxxxxxxxxxxxxx
|
|
|
|
configOverrides:
|
|
enable_oauth: |
|
|
# This will make sure the redirect_uri is properly computed, even with SSL offloading
|
|
ENABLE_PROXY_FIX = True
|
|
|
|
from flask_appbuilder.security.manager import (AUTH_OAUTH, AUTH_DB)
|
|
AUTH_TYPE = AUTH_OAUTH
|
|
OAUTH_PROVIDERS = [
|
|
{
|
|
"name": "google",
|
|
"icon": "fa-google",
|
|
"token_key": "access_token",
|
|
"remote_app": {
|
|
"client_id": os.getenv("GOOGLE_KEY"),
|
|
"client_secret": os.getenv("GOOGLE_SECRET"),
|
|
"api_base_url": "https://www.googleapis.com/oauth2/v2/",
|
|
"client_kwargs": {"scope": "email profile"},
|
|
"request_token_url": None,
|
|
"access_token_url": "https://accounts.google.com/o/oauth2/token",
|
|
"authorize_url": "https://accounts.google.com/o/oauth2/auth",
|
|
"authorize_params": {"hd": os.getenv("AUTH_DOMAIN", "")}
|
|
},
|
|
}
|
|
]
|
|
|
|
# Map Authlib roles to superset roles
|
|
AUTH_ROLE_ADMIN = 'Admin'
|
|
AUTH_ROLE_PUBLIC = 'Public'
|
|
|
|
# Will allow user self registration, allowing to create Flask users from Authorized User
|
|
AUTH_USER_REGISTRATION = True
|
|
|
|
# The default user self registration role
|
|
AUTH_USER_REGISTRATION_ROLE = "Admin"
|
|
```
|
|
|
|
#### Enable Alerts and Reports
|
|
|
|
For this, as per the [Alerts and Reports doc](/docs/installation/email-reports), you will need to:
|
|
|
|
##### Install a supported webdriver in the Celery worker
|
|
|
|
This is done either by using a custom image that has the webdriver pre-installed, or installing at startup time by overriding the `command`. Here's a working example for `chromedriver`:
|
|
|
|
```yaml
|
|
supersetWorker:
|
|
command:
|
|
- /bin/sh
|
|
- -c
|
|
- |
|
|
# Install chrome webdriver
|
|
# See https://github.com/apache/superset/blob/4fa3b6c7185629b87c27fc2c0e5435d458f7b73d/docs/src/pages/docs/installation/email_reports.mdx
|
|
apt update
|
|
wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb
|
|
apt install -y --no-install-recommends ./google-chrome-stable_current_amd64.deb
|
|
wget https://chromedriver.storage.googleapis.com/88.0.4324.96/chromedriver_linux64.zip
|
|
unzip chromedriver_linux64.zip
|
|
chmod +x chromedriver
|
|
mv chromedriver /usr/bin
|
|
apt autoremove -yqq --purge
|
|
apt clean
|
|
rm -f google-chrome-stable_current_amd64.deb chromedriver_linux64.zip
|
|
|
|
# Run
|
|
. {{ .Values.configMountPath }}/superset_bootstrap.sh; celery --app=superset.tasks.celery_app:app worker
|
|
```
|
|
|
|
##### Run the Celery beat
|
|
|
|
This pod will trigger the scheduled tasks configured in the alerts and reports UI section:
|
|
|
|
```yaml
|
|
supersetCeleryBeat:
|
|
enabled: true
|
|
```
|
|
|
|
##### Configure the appropriate Celery jobs and SMTP/Slack settings
|
|
|
|
```yaml
|
|
extraEnv:
|
|
SMTP_HOST: smtp.gmail.com
|
|
SMTP_USER: user@gmail.com
|
|
SMTP_PORT: "587"
|
|
SMTP_MAIL_FROM: user@gmail.com
|
|
|
|
extraSecretEnv:
|
|
SLACK_API_TOKEN: xoxb-xxxx-yyyy
|
|
SMTP_PASSWORD: xxxx-yyyy
|
|
|
|
configOverrides:
|
|
feature_flags: |
|
|
import ast
|
|
|
|
FEATURE_FLAGS = {
|
|
"ALERT_REPORTS": True
|
|
}
|
|
|
|
SMTP_HOST = os.getenv("SMTP_HOST","localhost")
|
|
SMTP_STARTTLS = ast.literal_eval(os.getenv("SMTP_STARTTLS", "True"))
|
|
SMTP_SSL = ast.literal_eval(os.getenv("SMTP_SSL", "False"))
|
|
SMTP_USER = os.getenv("SMTP_USER","superset")
|
|
SMTP_PORT = os.getenv("SMTP_PORT",25)
|
|
SMTP_PASSWORD = os.getenv("SMTP_PASSWORD","superset")
|
|
SMTP_MAIL_FROM = os.getenv("SMTP_MAIL_FROM","superset@superset.com")
|
|
|
|
SLACK_API_TOKEN = os.getenv("SLACK_API_TOKEN",None)
|
|
celery_conf: |
|
|
from celery.schedules import crontab
|
|
|
|
class CeleryConfig(object):
|
|
BROKER_URL = f"redis://{env('REDIS_HOST')}:{env('REDIS_PORT')}/0"
|
|
CELERY_IMPORTS = ('superset.sql_lab', )
|
|
CELERY_RESULT_BACKEND = f"redis://{env('REDIS_HOST')}:{env('REDIS_PORT')}/0"
|
|
CELERY_ANNOTATIONS = {'tasks.add': {'rate_limit': '10/s'}}
|
|
CELERY_IMPORTS = ('superset.sql_lab', "superset.tasks", "superset.tasks.thumbnails", )
|
|
CELERY_ANNOTATIONS = {
|
|
'sql_lab.get_sql_results': {
|
|
'rate_limit': '100/s',
|
|
},
|
|
'email_reports.send': {
|
|
'rate_limit': '1/s',
|
|
'time_limit': 600,
|
|
'soft_time_limit': 600,
|
|
'ignore_result': True,
|
|
},
|
|
}
|
|
CELERYBEAT_SCHEDULE = {
|
|
'reports.scheduler': {
|
|
'task': 'reports.scheduler',
|
|
'schedule': crontab(minute='*', hour='*'),
|
|
},
|
|
'reports.prune_log': {
|
|
'task': 'reports.prune_log',
|
|
'schedule': crontab(minute=0, hour=0),
|
|
},
|
|
'cache-warmup-hourly': {
|
|
'task': 'cache-warmup',
|
|
'schedule': crontab(minute='*/30', hour='*'),
|
|
'kwargs': {
|
|
'strategy_name': 'top_n_dashboards',
|
|
'top_n': 10,
|
|
'since': '7 days ago',
|
|
},
|
|
}
|
|
}
|
|
|
|
CELERY_CONFIG = CeleryConfig
|
|
reports: |
|
|
EMAIL_PAGE_RENDER_WAIT = 60
|
|
WEBDRIVER_BASEURL = "http://{{ template "superset.fullname" . }}:{{ .Values.service.port }}/"
|
|
WEBDRIVER_BASEURL_USER_FRIENDLY = "https://www.example.com/"
|
|
WEBDRIVER_TYPE= "chrome"
|
|
WEBDRIVER_OPTION_ARGS = [
|
|
"--force-device-scale-factor=2.0",
|
|
"--high-dpi-support=2.0",
|
|
"--headless",
|
|
"--disable-gpu",
|
|
"--disable-dev-shm-usage",
|
|
# This is required because our process runs as root (in order to install pip packages)
|
|
"--no-sandbox",
|
|
"--disable-setuid-sandbox",
|
|
"--disable-extensions",
|
|
]
|
|
```
|