deploying docs: docs: fix config webdriver snippet in install on K8s (#26371) (apache/superset@f78f33d9aa07e265a54542abfc40d1ee23450491)
diff --git a/404.html b/404.html
index 2314067..e910af1 100644
--- a/404.html
+++ b/404.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/assets/js/fe0957ee.7fb3f346.js b/assets/js/fe0957ee.3652ad93.js
similarity index 73%
rename from assets/js/fe0957ee.7fb3f346.js
rename to assets/js/fe0957ee.3652ad93.js
index bea0e78..0a562ef 100644
--- a/assets/js/fe0957ee.7fb3f346.js
+++ b/assets/js/fe0957ee.3652ad93.js
@@ -1 +1 @@
-"use strict";(self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[]).push([[9822],{25079:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>o,contentTitle:()=>l,default:()=>c,frontMatter:()=>s,metadata:()=>i,toc:()=>p});var a=n(83117),r=(n(67294),n(3905));const s={title:"Installing on Kubernetes",hide_title:!0,sidebar_position:3,version:1},l=void 0,i={unversionedId:"installation/running-on-kubernetes",id:"installation/running-on-kubernetes",title:"Installing on Kubernetes",description:"Installing on Kubernetes",source:"@site/docs/installation/running-on-kubernetes.mdx",sourceDirName:"installation",slug:"/installation/running-on-kubernetes",permalink:"/docs/installation/running-on-kubernetes",draft:!1,editUrl:"https://github.com/apache/superset/tree/master/docs/docs/installation/running-on-kubernetes.mdx",tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Installing on Kubernetes",hide_title:!0,sidebar_position:3,version:1},sidebar:"tutorialSidebar",previous:{title:"Installing From Scratch",permalink:"/docs/installation/installing-superset-from-scratch"},next:{title:"Configuring Superset",permalink:"/docs/installation/configuring-superset"}},o={},p=[{value:"Installing on Kubernetes",id:"installing-on-kubernetes",level:2},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Running",id:"running",level:3},{value:"Important settings",id:"important-settings",level:3},{value:"Security settings",id:"security-settings",level:4},{value:"Dependencies",id:"dependencies",level:4},{value:"superset_config.py",id:"superset_configpy",level:4},{value:"Environment Variables",id:"environment-variables",level:4},{value:"System packages",id:"system-packages",level:4},{value:"Data sources",id:"data-sources",level:4},{value:"Configuration Examples",id:"configuration-examples",level:3},{value:"Setting up OAuth",id:"setting-up-oauth",level:4},{value:"Enable Alerts and Reports",id:"enable-alerts-and-reports",level:4},{value:"Install a supported webdriver in the Celery worker",id:"install-a-supported-webdriver-in-the-celery-worker",level:5},{value:"Run the Celery beat",id:"run-the-celery-beat",level:5},{value:"Configure the appropriate Celery jobs and SMTP/Slack settings",id:"configure-the-appropriate-celery-jobs-and-smtpslack-settings",level:5},{value:"Load the Examples data and dashboards",id:"load-the-examples-data-and-dashboards",level:4}],u={toc:p},d="wrapper";function c(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"installing-on-kubernetes"},"Installing on Kubernetes"),(0,r.kt)("p",null,"Running Superset on Kubernetes is supported with the provided ",(0,r.kt)("a",{parentName:"p",href:"https://helm.sh/"},"Helm")," chart found in the official ",(0,r.kt)("a",{parentName:"p",href:"https://apache.github.io/superset/index.yaml"},"Superset helm repository"),"."),(0,r.kt)("h3",{id:"prerequisites"},"Prerequisites"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"A Kubernetes cluster"),(0,r.kt)("li",{parentName:"ul"},"Helm installed")),(0,r.kt)("h3",{id:"running"},"Running"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Add the Superset helm repository")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},'helm repo add superset https://apache.github.io/superset\n"superset" has been added to your repositories\n')),(0,r.kt)("ol",{start:2},(0,r.kt)("li",{parentName:"ol"},"View charts in repo")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"helm search repo superset\nNAME                    CHART VERSION   APP VERSION     DESCRIPTION\nsuperset/superset       0.1.1           1.0             Apache Superset is a modern, enterprise-ready b...\n")),(0,r.kt)("ol",{start:3},(0,r.kt)("li",{parentName:"ol"},"Configure your setting overrides")),(0,r.kt)("p",null,"Just like any typical Helm chart, you'll need to craft a ",(0,r.kt)("inlineCode",{parentName:"p"},"values.yaml")," file that would define/override any of the values exposed into the default ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/apache/superset/tree/master/helm/superset/values.yaml"},"values.yaml"),", or from any of the dependent charts it depends on:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://artifacthub.io/packages/helm/bitnami/redis"},"bitnami/redis")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://artifacthub.io/packages/helm/bitnami/postgresql"},"bitnami/postgresql"))),(0,r.kt)("p",null,"More info down below on some important overrides you might need."),(0,r.kt)("ol",{start:4},(0,r.kt)("li",{parentName:"ol"},"Install and run")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"helm upgrade --install --values my-values.yaml superset superset/superset\n")),(0,r.kt)("p",null,"You should see various pods popping up, such as:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"kubectl get pods\nNAME                                    READY   STATUS      RESTARTS   AGE\nsuperset-celerybeat-7cdcc9575f-k6xmc    1/1     Running     0          119s\nsuperset-f5c9c667-dw9lp                 1/1     Running     0          4m7s\nsuperset-f5c9c667-fk8bk                 1/1     Running     0          4m11s\nsuperset-init-db-zlm9z                  0/1     Completed   0          111s\nsuperset-postgresql-0                   1/1     Running     0          6d20h\nsuperset-redis-master-0                 1/1     Running     0          6d20h\nsuperset-worker-75b48bbcc-jmmjr         1/1     Running     0          4m8s\nsuperset-worker-75b48bbcc-qrq49         1/1     Running     0          4m12s\n")),(0,r.kt)("p",null,"The exact list will depend on some of your specific configuration overrides but you should generally expect:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"N ",(0,r.kt)("inlineCode",{parentName:"li"},"superset-xxxx-yyyy")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"superset-worker-xxxx-yyyy")," pods (depending on your ",(0,r.kt)("inlineCode",{parentName:"li"},"supersetNode.replicaCount")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"supersetWorker.replicaCount")," values)"),(0,r.kt)("li",{parentName:"ul"},"1 ",(0,r.kt)("inlineCode",{parentName:"li"},"superset-postgresql-0")," depending on your postgres settings"),(0,r.kt)("li",{parentName:"ul"},"1 ",(0,r.kt)("inlineCode",{parentName:"li"},"superset-redis-master-0")," depending on your redis settings"),(0,r.kt)("li",{parentName:"ul"},"1 ",(0,r.kt)("inlineCode",{parentName:"li"},"superset-celerybeat-xxxx-yyyy")," pod if you have ",(0,r.kt)("inlineCode",{parentName:"li"},"supersetCeleryBeat.enabled = true")," in your values overrides")),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Access it")),(0,r.kt)("p",null,"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:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Configure the Service as a ",(0,r.kt)("inlineCode",{parentName:"li"},"LoadBalancer")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"NodePort")),(0,r.kt)("li",{parentName:"ul"},"Set up an ",(0,r.kt)("inlineCode",{parentName:"li"},"Ingress")," for it - the chart includes a definition, but will need to be tuned to your needs (hostname, tls, annotations etc...)"),(0,r.kt)("li",{parentName:"ul"},"Run ",(0,r.kt)("inlineCode",{parentName:"li"},"kubectl port-forward superset-xxxx-yyyy :8088")," to directly tunnel one pod's port into your localhost")),(0,r.kt)("p",null,"Depending how you configured external access, the URL will vary. Once you've identified the appropriate URL you can log in with:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"user: ",(0,r.kt)("inlineCode",{parentName:"li"},"admin")),(0,r.kt)("li",{parentName:"ul"},"password: ",(0,r.kt)("inlineCode",{parentName:"li"},"admin"))),(0,r.kt)("h3",{id:"important-settings"},"Important settings"),(0,r.kt)("h4",{id:"security-settings"},"Security settings"),(0,r.kt)("p",null,"Default security settings and passwords are included but you ",(0,r.kt)("strong",{parentName:"p"},"SHOULD")," override those with your own, in particular:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"postgresql:\n  postgresqlPassword: superset\n")),(0,r.kt)("p",null,"Make sure, you set a unique strong complex alphanumeric string for your SECRET_KEY and use a tool to help you generate\na sufficiently random sequence."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"To generate a good key you can run, ",(0,r.kt)("inlineCode",{parentName:"li"},"openssl rand -base64 42"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"configOverrides:\n  secret: |\n    SECRET_KEY = 'YOUR_OWN_RANDOM_GENERATED_SECRET_KEY'\n")),(0,r.kt)("p",null,"If you want to change the previous secret key then you should rotate the keys.\nDefault secret key for kubernetes deployment is ",(0,r.kt)("inlineCode",{parentName:"p"},"thisISaSECRET_1234")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"configOverrides:\n  my_override: |\n    PREVIOUS_SECRET_KEY = 'YOUR_PREVIOUS_SECRET_KEY'\n    SECRET_KEY = 'YOUR_OWN_RANDOM_GENERATED_SECRET_KEY'\ninit:\n  command:\n    - /bin/sh\n    - -c\n    - |\n      . {{ .Values.configMountPath }}/superset_bootstrap.sh\n      superset re-encrypt-secrets\n      . {{ .Values.configMountPath }}/superset_init.sh\n")),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"Superset uses ",(0,r.kt)("a",{parentName:"p",href:"https://about.scarf.sh/scarf-gateway"},"Scarf Gateway")," to collect telemetry data.  Knowing the installation counts for different Superset versions informs the  project's decisions about patching and long-term support. Scarf purges personally identifiable information (PII) and provides only aggregated statistics."),(0,r.kt)("p",{parentName:"admonition"},"To opt-out of this data collection in your Helm-based installation, edit the ",(0,r.kt)("inlineCode",{parentName:"p"},"repository:")," line in your ",(0,r.kt)("inlineCode",{parentName:"p"},"helm/superset/values.yaml")," file, replacing ",(0,r.kt)("inlineCode",{parentName:"p"},"apachesuperset.docker.scarf.sh/apache/superset")," with ",(0,r.kt)("inlineCode",{parentName:"p"},"apache/superset")," to pull the image directly from Docker Hub.")),(0,r.kt)("h4",{id:"dependencies"},"Dependencies"),(0,r.kt)("p",null,"Install additional packages and do any other bootstrap configuration in the bootstrap script.\nFor production clusters it's recommended to build own image with this step done in CI."),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"Superset requires a Python DB-API database driver and a SQLAlchemy\ndialect to be installed for each datastore you want to connect to."),(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"/docs/databases/installing-database-drivers"},"Install Database Drivers")," for more information.")),(0,r.kt)("p",null,"The following example installs the Big Query and Elasticsearch database drivers so that you can\nconnect to those datasources in your Superset installation:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'bootstrapScript: |\n  #!/bin/bash\n  pip install psycopg2==2.9.6 \\\n    sqlalchemy-bigquery==1.6.1 \\\n    elasticsearch-dbapi==0.2.5 &&\\\n  if [ ! -f ~/bootstrap ]; then echo "Running Superset with uid {{ .Values.runAsUser }}" > ~/bootstrap; fi\n')),(0,r.kt)("h4",{id:"superset_configpy"},"superset_config.py"),(0,r.kt)("p",null,"The default ",(0,r.kt)("inlineCode",{parentName:"p"},"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 ",(0,r.kt)("inlineCode",{parentName:"p"},"configOverrides"),", e.g.:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'configOverrides:\n  my_override: |\n    # This will make sure the redirect_uri is properly computed, even with SSL offloading\n    ENABLE_PROXY_FIX = True\n    FEATURE_FLAGS = {\n        "DYNAMIC_PLUGINS": True\n    }\n')),(0,r.kt)("p",null,"Those will be evaluated as Helm templates and therefore will be able to reference other ",(0,r.kt)("inlineCode",{parentName:"p"},"values.yaml")," variables e.g. ",(0,r.kt)("inlineCode",{parentName:"p"},"{{ .Values.ingress.hosts[0] }}")," will resolve to your ingress external domain."),(0,r.kt)("p",null,"The entire ",(0,r.kt)("inlineCode",{parentName:"p"},"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."),(0,r.kt)("p",null,"Full python files can be provided by running ",(0,r.kt)("inlineCode",{parentName:"p"},"helm upgrade --install --values my-values.yaml --set-file configOverrides.oauth=set_oauth.py")),(0,r.kt)("h4",{id:"environment-variables"},"Environment Variables"),(0,r.kt)("p",null,"Those can be passed as key/values either with ",(0,r.kt)("inlineCode",{parentName:"p"},"extraEnv")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"extraSecretEnv")," if they're sensitive. They can then be referenced from ",(0,r.kt)("inlineCode",{parentName:"p"},"superset_config.py")," using e.g. ",(0,r.kt)("inlineCode",{parentName:"p"},'os.environ.get("VAR")'),"."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'extraEnv:\n  SMTP_HOST: smtp.gmail.com\n  SMTP_USER: user@gmail.com\n  SMTP_PORT: "587"\n  SMTP_MAIL_FROM: user@gmail.com\n\nextraSecretEnv:\n  SMTP_PASSWORD: xxxx\n\nconfigOverrides:\n  smtp: |\n    import ast\n    SMTP_HOST = os.getenv("SMTP_HOST","localhost")\n    SMTP_STARTTLS = ast.literal_eval(os.getenv("SMTP_STARTTLS", "True"))\n    SMTP_SSL = ast.literal_eval(os.getenv("SMTP_SSL", "False"))\n    SMTP_USER = os.getenv("SMTP_USER","superset")\n    SMTP_PORT = os.getenv("SMTP_PORT",25)\n    SMTP_PASSWORD = os.getenv("SMTP_PASSWORD","superset")\n')),(0,r.kt)("h4",{id:"system-packages"},"System packages"),(0,r.kt)("p",null,"If new system packages are required, they can be installed before application startup by overriding the container's ",(0,r.kt)("inlineCode",{parentName:"p"},"command"),", e.g.:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"supersetWorker:\n  command:\n    - /bin/sh\n    - -c\n    - |\n      apt update\n      apt install -y somepackage\n      apt autoremove -yqq --purge\n      apt clean\n\n      # Run celery worker\n      . {{ .Values.configMountPath }}/superset_bootstrap.sh; celery --app=superset.tasks.celery_app:app worker\n")),(0,r.kt)("h4",{id:"data-sources"},"Data sources"),(0,r.kt)("p",null,"Data source definitions can be automatically declared by providing key/value yaml definitions in ",(0,r.kt)("inlineCode",{parentName:"p"},"extraConfigs"),":"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'extraConfigs:\n  import_datasources.yaml: |\n    databases:\n    - allow_file_upload: true\n      allow_ctas: true\n      allow_cvas: true\n      database_name: example-db\n      extra: "{\\r\\n    \\"metadata_params\\": {},\\r\\n    \\"engine_params\\": {},\\r\\n    \\"\\\n        metadata_cache_timeout\\": {},\\r\\n    \\"schemas_allowed_for_file_upload\\": []\\r\\n\\\n        }"\n      sqlalchemy_uri: example://example-db.local\n      tables: []\n')),(0,r.kt)("p",null,"Those will also be mounted as secrets and can include sensitive parameters."),(0,r.kt)("h3",{id:"configuration-examples"},"Configuration Examples"),(0,r.kt)("h4",{id:"setting-up-oauth"},"Setting up OAuth"),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"OAuth setup requires that the ",(0,r.kt)("a",{parentName:"p",href:"https://authlib.org/"},"authlib")," Python library is installed. This can\nbe done using ",(0,r.kt)("inlineCode",{parentName:"p"},"pip")," by updating the ",(0,r.kt)("inlineCode",{parentName:"p"},"bootstrapScript"),". See the ",(0,r.kt)("a",{parentName:"p",href:"#dependencies"},"Dependencies")," section\nfor more information.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'extraEnv:\n  AUTH_DOMAIN: example.com\n\nextraSecretEnv:\n  GOOGLE_KEY: xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com\n  GOOGLE_SECRET: xxxxxxxxxxxxxxxxxxxxxxxx\n\nconfigOverrides:\n  enable_oauth: |\n    # This will make sure the redirect_uri is properly computed, even with SSL offloading\n    ENABLE_PROXY_FIX = True\n\n    from flask_appbuilder.security.manager import AUTH_OAUTH\n    AUTH_TYPE = AUTH_OAUTH\n    OAUTH_PROVIDERS = [\n        {\n            "name": "google",\n            "icon": "fa-google",\n            "token_key": "access_token",\n            "remote_app": {\n                "client_id": os.getenv("GOOGLE_KEY"),\n                "client_secret": os.getenv("GOOGLE_SECRET"),\n                "api_base_url": "https://www.googleapis.com/oauth2/v2/",\n                "client_kwargs": {"scope": "email profile"},\n                "request_token_url": None,\n                "access_token_url": "https://accounts.google.com/o/oauth2/token",\n                "authorize_url": "https://accounts.google.com/o/oauth2/auth",\n                "authorize_params": {"hd": os.getenv("AUTH_DOMAIN", "")}\n            },\n        }\n    ]\n\n    # Map Authlib roles to superset roles\n    AUTH_ROLE_ADMIN = \'Admin\'\n    AUTH_ROLE_PUBLIC = \'Public\'\n\n    # Will allow user self registration, allowing to create Flask users from Authorized User\n    AUTH_USER_REGISTRATION = True\n\n    # The default user self registration role\n    AUTH_USER_REGISTRATION_ROLE = "Admin"\n')),(0,r.kt)("h4",{id:"enable-alerts-and-reports"},"Enable Alerts and Reports"),(0,r.kt)("p",null,"For this, as per the ",(0,r.kt)("a",{parentName:"p",href:"/docs/installation/email-reports"},"Alerts and Reports doc"),", you will need to:"),(0,r.kt)("h5",{id:"install-a-supported-webdriver-in-the-celery-worker"},"Install a supported webdriver in the Celery worker"),(0,r.kt)("p",null,"This is done either by using a custom image that has the webdriver pre-installed, or installing at startup time by overriding the ",(0,r.kt)("inlineCode",{parentName:"p"},"command"),". Here's a working example for ",(0,r.kt)("inlineCode",{parentName:"p"},"chromedriver"),":"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"supersetWorker:\n  command:\n    - /bin/sh\n    - -c\n    - |\n      # Install chrome webdriver\n      # See https://github.com/apache/superset/blob/4fa3b6c7185629b87c27fc2c0e5435d458f7b73d/docs/src/pages/docs/installation/email_reports.mdx\n      apt update\n      wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb\n      apt install -y --no-install-recommends ./google-chrome-stable_current_amd64.deb\n      wget https://chromedriver.storage.googleapis.com/88.0.4324.96/chromedriver_linux64.zip\n      unzip chromedriver_linux64.zip\n      chmod +x chromedriver\n      mv chromedriver /usr/bin\n      apt autoremove -yqq --purge\n      apt clean\n      rm -f google-chrome-stable_current_amd64.deb chromedriver_linux64.zip\n\n      # Run\n      . {{ .Values.configMountPath }}/superset_bootstrap.sh; celery --app=superset.tasks.celery_app:app worker\n")),(0,r.kt)("h5",{id:"run-the-celery-beat"},"Run the Celery beat"),(0,r.kt)("p",null,"This pod will trigger the scheduled tasks configured in the alerts and reports UI section:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"supersetCeleryBeat:\n  enabled: true\n")),(0,r.kt)("h5",{id:"configure-the-appropriate-celery-jobs-and-smtpslack-settings"},"Configure the appropriate Celery jobs and SMTP/Slack settings"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'extraEnv:\n  SMTP_HOST: smtp.gmail.com\n  SMTP_USER: user@gmail.com\n  SMTP_PORT: "587"\n  SMTP_MAIL_FROM: user@gmail.com\n\nextraSecretEnv:\n  SLACK_API_TOKEN: xoxb-xxxx-yyyy\n  SMTP_PASSWORD: xxxx-yyyy\n\nconfigOverrides:\n  feature_flags: |\n    import ast\n\n    FEATURE_FLAGS = {\n        "ALERT_REPORTS": True\n    }\n\n    SMTP_HOST = os.getenv("SMTP_HOST","localhost")\n    SMTP_STARTTLS = ast.literal_eval(os.getenv("SMTP_STARTTLS", "True"))\n    SMTP_SSL = ast.literal_eval(os.getenv("SMTP_SSL", "False"))\n    SMTP_USER = os.getenv("SMTP_USER","superset")\n    SMTP_PORT = os.getenv("SMTP_PORT",25)\n    SMTP_PASSWORD = os.getenv("SMTP_PASSWORD","superset")\n    SMTP_MAIL_FROM = os.getenv("SMTP_MAIL_FROM","superset@superset.com")\n\n    SLACK_API_TOKEN = os.getenv("SLACK_API_TOKEN",None)\n  celery_conf: |\n    from celery.schedules import crontab\n\n    class CeleryConfig:\n      broker_url = f"redis://{env(\'REDIS_HOST\')}:{env(\'REDIS_PORT\')}/0"\n      imports = (\n          "superset.sql_lab",\n          "superset.tasks.cache",\n          "superset.tasks.scheduler",\n      )\n      result_backend = f"redis://{env(\'REDIS_HOST\')}:{env(\'REDIS_PORT\')}/0"\n      task_annotations = {\n          "sql_lab.get_sql_results": {\n              "rate_limit": "100/s",\n          },\n      }\n      beat_schedule = {\n          "reports.scheduler": {\n              "task": "reports.scheduler",\n              "schedule": crontab(minute="*", hour="*"),\n          },\n          "reports.prune_log": {\n              "task": "reports.prune_log",\n              \'schedule\': crontab(minute=0, hour=0),\n          },\n          \'cache-warmup-hourly\': {\n              "task": "cache-warmup",\n              "schedule": crontab(minute="*/30", hour="*"),\n              "kwargs": {\n                  "strategy_name": "top_n_dashboards",\n                  "top_n": 10,\n                  "since": "7 days ago",\n              },\n          }\n      }\n\n    CELERY_CONFIG = CeleryConfig\n  reports: |\n    EMAIL_PAGE_RENDER_WAIT = 60\n    WEBDRIVER_BASEURL = "http://{{ template "superset.fullname" . }}:{{ .Values.service.port }}/"\n    WEBDRIVER_BASEURL_USER_FRIENDLY = "https://www.example.com/"\n    WEBDRIVER_TYPE= "chrome"\n    WEBDRIVER_OPTION_ARGS = [\n        "--force-device-scale-factor=2.0",\n        "--high-dpi-support=2.0",\n        "--headless",\n        "--disable-gpu",\n        "--disable-dev-shm-usage",\n        # This is required because our process runs as root (in order to install pip packages)\n        "--no-sandbox",\n        "--disable-setuid-sandbox",\n        "--disable-extensions",\n    ]\n')),(0,r.kt)("h4",{id:"load-the-examples-data-and-dashboards"},"Load the Examples data and dashboards"),(0,r.kt)("p",null,"If you are trying Superset out and want some data and dashboards to explore, you can load some examples by creating a ",(0,r.kt)("inlineCode",{parentName:"p"},"my_values.yaml")," and deploying it as described above in the ",(0,r.kt)("strong",{parentName:"p"},"Configure your setting overrides")," step of the ",(0,r.kt)("strong",{parentName:"p"},"Running")," section.\nTo load the examples, add the following to the ",(0,r.kt)("inlineCode",{parentName:"p"},"my_values.yaml")," file:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"init:\n  loadExamples: true\n")))}c.isMDXComponent=!0},3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>h});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},s=Object.keys(e);for(a=0;a<s.length;a++)n=s[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(a=0;a<s.length;a++)n=s[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var o=a.createContext({}),p=function(e){var t=a.useContext(o),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=p(e.components);return a.createElement(o.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,s=e.originalType,o=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),d=p(n),m=r,h=d["".concat(o,".").concat(m)]||d[m]||c[m]||s;return n?a.createElement(h,l(l({ref:t},u),{},{components:n})):a.createElement(h,l({ref:t},u))}));function h(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var s=n.length,l=new Array(s);l[0]=m;var i={};for(var o in t)hasOwnProperty.call(t,o)&&(i[o]=t[o]);i.originalType=e,i[d]="string"==typeof e?e:r,l[1]=i;for(var p=2;p<s;p++)l[p]=n[p];return a.createElement.apply(null,l)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
+"use strict";(self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[]).push([[9822],{25079:(e,t,n)=>{n.r(t),n.d(t,{assets:()=>o,contentTitle:()=>l,default:()=>c,frontMatter:()=>s,metadata:()=>i,toc:()=>p});var a=n(83117),r=(n(67294),n(3905));const s={title:"Installing on Kubernetes",hide_title:!0,sidebar_position:3,version:1},l=void 0,i={unversionedId:"installation/running-on-kubernetes",id:"installation/running-on-kubernetes",title:"Installing on Kubernetes",description:"Installing on Kubernetes",source:"@site/docs/installation/running-on-kubernetes.mdx",sourceDirName:"installation",slug:"/installation/running-on-kubernetes",permalink:"/docs/installation/running-on-kubernetes",draft:!1,editUrl:"https://github.com/apache/superset/tree/master/docs/docs/installation/running-on-kubernetes.mdx",tags:[],version:"current",sidebarPosition:3,frontMatter:{title:"Installing on Kubernetes",hide_title:!0,sidebar_position:3,version:1},sidebar:"tutorialSidebar",previous:{title:"Installing From Scratch",permalink:"/docs/installation/installing-superset-from-scratch"},next:{title:"Configuring Superset",permalink:"/docs/installation/configuring-superset"}},o={},p=[{value:"Installing on Kubernetes",id:"installing-on-kubernetes",level:2},{value:"Prerequisites",id:"prerequisites",level:3},{value:"Running",id:"running",level:3},{value:"Important settings",id:"important-settings",level:3},{value:"Security settings",id:"security-settings",level:4},{value:"Dependencies",id:"dependencies",level:4},{value:"superset_config.py",id:"superset_configpy",level:4},{value:"Environment Variables",id:"environment-variables",level:4},{value:"System packages",id:"system-packages",level:4},{value:"Data sources",id:"data-sources",level:4},{value:"Configuration Examples",id:"configuration-examples",level:3},{value:"Setting up OAuth",id:"setting-up-oauth",level:4},{value:"Enable Alerts and Reports",id:"enable-alerts-and-reports",level:4},{value:"Install a supported webdriver in the Celery worker",id:"install-a-supported-webdriver-in-the-celery-worker",level:5},{value:"Run the Celery beat",id:"run-the-celery-beat",level:5},{value:"Configure the appropriate Celery jobs and SMTP/Slack settings",id:"configure-the-appropriate-celery-jobs-and-smtpslack-settings",level:5},{value:"Load the Examples data and dashboards",id:"load-the-examples-data-and-dashboards",level:4}],u={toc:p},d="wrapper";function c(e){let{components:t,...n}=e;return(0,r.kt)(d,(0,a.Z)({},u,n,{components:t,mdxType:"MDXLayout"}),(0,r.kt)("h2",{id:"installing-on-kubernetes"},"Installing on Kubernetes"),(0,r.kt)("p",null,"Running Superset on Kubernetes is supported with the provided ",(0,r.kt)("a",{parentName:"p",href:"https://helm.sh/"},"Helm")," chart found in the official ",(0,r.kt)("a",{parentName:"p",href:"https://apache.github.io/superset/index.yaml"},"Superset helm repository"),"."),(0,r.kt)("h3",{id:"prerequisites"},"Prerequisites"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"A Kubernetes cluster"),(0,r.kt)("li",{parentName:"ul"},"Helm installed")),(0,r.kt)("h3",{id:"running"},"Running"),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Add the Superset helm repository")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},'helm repo add superset https://apache.github.io/superset\n"superset" has been added to your repositories\n')),(0,r.kt)("ol",{start:2},(0,r.kt)("li",{parentName:"ol"},"View charts in repo")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"helm search repo superset\nNAME                    CHART VERSION   APP VERSION     DESCRIPTION\nsuperset/superset       0.1.1           1.0             Apache Superset is a modern, enterprise-ready b...\n")),(0,r.kt)("ol",{start:3},(0,r.kt)("li",{parentName:"ol"},"Configure your setting overrides")),(0,r.kt)("p",null,"Just like any typical Helm chart, you'll need to craft a ",(0,r.kt)("inlineCode",{parentName:"p"},"values.yaml")," file that would define/override any of the values exposed into the default ",(0,r.kt)("a",{parentName:"p",href:"https://github.com/apache/superset/tree/master/helm/superset/values.yaml"},"values.yaml"),", or from any of the dependent charts it depends on:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://artifacthub.io/packages/helm/bitnami/redis"},"bitnami/redis")),(0,r.kt)("li",{parentName:"ul"},(0,r.kt)("a",{parentName:"li",href:"https://artifacthub.io/packages/helm/bitnami/postgresql"},"bitnami/postgresql"))),(0,r.kt)("p",null,"More info down below on some important overrides you might need."),(0,r.kt)("ol",{start:4},(0,r.kt)("li",{parentName:"ol"},"Install and run")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"helm upgrade --install --values my-values.yaml superset superset/superset\n")),(0,r.kt)("p",null,"You should see various pods popping up, such as:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-sh"},"kubectl get pods\nNAME                                    READY   STATUS      RESTARTS   AGE\nsuperset-celerybeat-7cdcc9575f-k6xmc    1/1     Running     0          119s\nsuperset-f5c9c667-dw9lp                 1/1     Running     0          4m7s\nsuperset-f5c9c667-fk8bk                 1/1     Running     0          4m11s\nsuperset-init-db-zlm9z                  0/1     Completed   0          111s\nsuperset-postgresql-0                   1/1     Running     0          6d20h\nsuperset-redis-master-0                 1/1     Running     0          6d20h\nsuperset-worker-75b48bbcc-jmmjr         1/1     Running     0          4m8s\nsuperset-worker-75b48bbcc-qrq49         1/1     Running     0          4m12s\n")),(0,r.kt)("p",null,"The exact list will depend on some of your specific configuration overrides but you should generally expect:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"N ",(0,r.kt)("inlineCode",{parentName:"li"},"superset-xxxx-yyyy")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"superset-worker-xxxx-yyyy")," pods (depending on your ",(0,r.kt)("inlineCode",{parentName:"li"},"supersetNode.replicaCount")," and ",(0,r.kt)("inlineCode",{parentName:"li"},"supersetWorker.replicaCount")," values)"),(0,r.kt)("li",{parentName:"ul"},"1 ",(0,r.kt)("inlineCode",{parentName:"li"},"superset-postgresql-0")," depending on your postgres settings"),(0,r.kt)("li",{parentName:"ul"},"1 ",(0,r.kt)("inlineCode",{parentName:"li"},"superset-redis-master-0")," depending on your redis settings"),(0,r.kt)("li",{parentName:"ul"},"1 ",(0,r.kt)("inlineCode",{parentName:"li"},"superset-celerybeat-xxxx-yyyy")," pod if you have ",(0,r.kt)("inlineCode",{parentName:"li"},"supersetCeleryBeat.enabled = true")," in your values overrides")),(0,r.kt)("ol",null,(0,r.kt)("li",{parentName:"ol"},"Access it")),(0,r.kt)("p",null,"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:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"Configure the Service as a ",(0,r.kt)("inlineCode",{parentName:"li"},"LoadBalancer")," or ",(0,r.kt)("inlineCode",{parentName:"li"},"NodePort")),(0,r.kt)("li",{parentName:"ul"},"Set up an ",(0,r.kt)("inlineCode",{parentName:"li"},"Ingress")," for it - the chart includes a definition, but will need to be tuned to your needs (hostname, tls, annotations etc...)"),(0,r.kt)("li",{parentName:"ul"},"Run ",(0,r.kt)("inlineCode",{parentName:"li"},"kubectl port-forward superset-xxxx-yyyy :8088")," to directly tunnel one pod's port into your localhost")),(0,r.kt)("p",null,"Depending how you configured external access, the URL will vary. Once you've identified the appropriate URL you can log in with:"),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"user: ",(0,r.kt)("inlineCode",{parentName:"li"},"admin")),(0,r.kt)("li",{parentName:"ul"},"password: ",(0,r.kt)("inlineCode",{parentName:"li"},"admin"))),(0,r.kt)("h3",{id:"important-settings"},"Important settings"),(0,r.kt)("h4",{id:"security-settings"},"Security settings"),(0,r.kt)("p",null,"Default security settings and passwords are included but you ",(0,r.kt)("strong",{parentName:"p"},"SHOULD")," override those with your own, in particular:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"postgresql:\n  postgresqlPassword: superset\n")),(0,r.kt)("p",null,"Make sure, you set a unique strong complex alphanumeric string for your SECRET_KEY and use a tool to help you generate\na sufficiently random sequence."),(0,r.kt)("ul",null,(0,r.kt)("li",{parentName:"ul"},"To generate a good key you can run, ",(0,r.kt)("inlineCode",{parentName:"li"},"openssl rand -base64 42"))),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"configOverrides:\n  secret: |\n    SECRET_KEY = 'YOUR_OWN_RANDOM_GENERATED_SECRET_KEY'\n")),(0,r.kt)("p",null,"If you want to change the previous secret key then you should rotate the keys.\nDefault secret key for kubernetes deployment is ",(0,r.kt)("inlineCode",{parentName:"p"},"thisISaSECRET_1234")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"configOverrides:\n  my_override: |\n    PREVIOUS_SECRET_KEY = 'YOUR_PREVIOUS_SECRET_KEY'\n    SECRET_KEY = 'YOUR_OWN_RANDOM_GENERATED_SECRET_KEY'\ninit:\n  command:\n    - /bin/sh\n    - -c\n    - |\n      . {{ .Values.configMountPath }}/superset_bootstrap.sh\n      superset re-encrypt-secrets\n      . {{ .Values.configMountPath }}/superset_init.sh\n")),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"Superset uses ",(0,r.kt)("a",{parentName:"p",href:"https://about.scarf.sh/scarf-gateway"},"Scarf Gateway")," to collect telemetry data.  Knowing the installation counts for different Superset versions informs the  project's decisions about patching and long-term support. Scarf purges personally identifiable information (PII) and provides only aggregated statistics."),(0,r.kt)("p",{parentName:"admonition"},"To opt-out of this data collection in your Helm-based installation, edit the ",(0,r.kt)("inlineCode",{parentName:"p"},"repository:")," line in your ",(0,r.kt)("inlineCode",{parentName:"p"},"helm/superset/values.yaml")," file, replacing ",(0,r.kt)("inlineCode",{parentName:"p"},"apachesuperset.docker.scarf.sh/apache/superset")," with ",(0,r.kt)("inlineCode",{parentName:"p"},"apache/superset")," to pull the image directly from Docker Hub.")),(0,r.kt)("h4",{id:"dependencies"},"Dependencies"),(0,r.kt)("p",null,"Install additional packages and do any other bootstrap configuration in the bootstrap script.\nFor production clusters it's recommended to build own image with this step done in CI."),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"Superset requires a Python DB-API database driver and a SQLAlchemy\ndialect to be installed for each datastore you want to connect to."),(0,r.kt)("p",{parentName:"admonition"},"See ",(0,r.kt)("a",{parentName:"p",href:"/docs/databases/installing-database-drivers"},"Install Database Drivers")," for more information.")),(0,r.kt)("p",null,"The following example installs the Big Query and Elasticsearch database drivers so that you can\nconnect to those datasources in your Superset installation:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'bootstrapScript: |\n  #!/bin/bash\n  pip install psycopg2==2.9.6 \\\n    sqlalchemy-bigquery==1.6.1 \\\n    elasticsearch-dbapi==0.2.5 &&\\\n  if [ ! -f ~/bootstrap ]; then echo "Running Superset with uid {{ .Values.runAsUser }}" > ~/bootstrap; fi\n')),(0,r.kt)("h4",{id:"superset_configpy"},"superset_config.py"),(0,r.kt)("p",null,"The default ",(0,r.kt)("inlineCode",{parentName:"p"},"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 ",(0,r.kt)("inlineCode",{parentName:"p"},"configOverrides"),", e.g.:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'configOverrides:\n  my_override: |\n    # This will make sure the redirect_uri is properly computed, even with SSL offloading\n    ENABLE_PROXY_FIX = True\n    FEATURE_FLAGS = {\n        "DYNAMIC_PLUGINS": True\n    }\n')),(0,r.kt)("p",null,"Those will be evaluated as Helm templates and therefore will be able to reference other ",(0,r.kt)("inlineCode",{parentName:"p"},"values.yaml")," variables e.g. ",(0,r.kt)("inlineCode",{parentName:"p"},"{{ .Values.ingress.hosts[0] }}")," will resolve to your ingress external domain."),(0,r.kt)("p",null,"The entire ",(0,r.kt)("inlineCode",{parentName:"p"},"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."),(0,r.kt)("p",null,"Full python files can be provided by running ",(0,r.kt)("inlineCode",{parentName:"p"},"helm upgrade --install --values my-values.yaml --set-file configOverrides.oauth=set_oauth.py")),(0,r.kt)("h4",{id:"environment-variables"},"Environment Variables"),(0,r.kt)("p",null,"Those can be passed as key/values either with ",(0,r.kt)("inlineCode",{parentName:"p"},"extraEnv")," or ",(0,r.kt)("inlineCode",{parentName:"p"},"extraSecretEnv")," if they're sensitive. They can then be referenced from ",(0,r.kt)("inlineCode",{parentName:"p"},"superset_config.py")," using e.g. ",(0,r.kt)("inlineCode",{parentName:"p"},'os.environ.get("VAR")'),"."),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'extraEnv:\n  SMTP_HOST: smtp.gmail.com\n  SMTP_USER: user@gmail.com\n  SMTP_PORT: "587"\n  SMTP_MAIL_FROM: user@gmail.com\n\nextraSecretEnv:\n  SMTP_PASSWORD: xxxx\n\nconfigOverrides:\n  smtp: |\n    import ast\n    SMTP_HOST = os.getenv("SMTP_HOST","localhost")\n    SMTP_STARTTLS = ast.literal_eval(os.getenv("SMTP_STARTTLS", "True"))\n    SMTP_SSL = ast.literal_eval(os.getenv("SMTP_SSL", "False"))\n    SMTP_USER = os.getenv("SMTP_USER","superset")\n    SMTP_PORT = os.getenv("SMTP_PORT",25)\n    SMTP_PASSWORD = os.getenv("SMTP_PASSWORD","superset")\n')),(0,r.kt)("h4",{id:"system-packages"},"System packages"),(0,r.kt)("p",null,"If new system packages are required, they can be installed before application startup by overriding the container's ",(0,r.kt)("inlineCode",{parentName:"p"},"command"),", e.g.:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"supersetWorker:\n  command:\n    - /bin/sh\n    - -c\n    - |\n      apt update\n      apt install -y somepackage\n      apt autoremove -yqq --purge\n      apt clean\n\n      # Run celery worker\n      . {{ .Values.configMountPath }}/superset_bootstrap.sh; celery --app=superset.tasks.celery_app:app worker\n")),(0,r.kt)("h4",{id:"data-sources"},"Data sources"),(0,r.kt)("p",null,"Data source definitions can be automatically declared by providing key/value yaml definitions in ",(0,r.kt)("inlineCode",{parentName:"p"},"extraConfigs"),":"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'extraConfigs:\n  import_datasources.yaml: |\n    databases:\n    - allow_file_upload: true\n      allow_ctas: true\n      allow_cvas: true\n      database_name: example-db\n      extra: "{\\r\\n    \\"metadata_params\\": {},\\r\\n    \\"engine_params\\": {},\\r\\n    \\"\\\n        metadata_cache_timeout\\": {},\\r\\n    \\"schemas_allowed_for_file_upload\\": []\\r\\n\\\n        }"\n      sqlalchemy_uri: example://example-db.local\n      tables: []\n')),(0,r.kt)("p",null,"Those will also be mounted as secrets and can include sensitive parameters."),(0,r.kt)("h3",{id:"configuration-examples"},"Configuration Examples"),(0,r.kt)("h4",{id:"setting-up-oauth"},"Setting up OAuth"),(0,r.kt)("admonition",{type:"note"},(0,r.kt)("p",{parentName:"admonition"},"OAuth setup requires that the ",(0,r.kt)("a",{parentName:"p",href:"https://authlib.org/"},"authlib")," Python library is installed. This can\nbe done using ",(0,r.kt)("inlineCode",{parentName:"p"},"pip")," by updating the ",(0,r.kt)("inlineCode",{parentName:"p"},"bootstrapScript"),". See the ",(0,r.kt)("a",{parentName:"p",href:"#dependencies"},"Dependencies")," section\nfor more information.")),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'extraEnv:\n  AUTH_DOMAIN: example.com\n\nextraSecretEnv:\n  GOOGLE_KEY: xxxxxxxxxxxx-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com\n  GOOGLE_SECRET: xxxxxxxxxxxxxxxxxxxxxxxx\n\nconfigOverrides:\n  enable_oauth: |\n    # This will make sure the redirect_uri is properly computed, even with SSL offloading\n    ENABLE_PROXY_FIX = True\n\n    from flask_appbuilder.security.manager import AUTH_OAUTH\n    AUTH_TYPE = AUTH_OAUTH\n    OAUTH_PROVIDERS = [\n        {\n            "name": "google",\n            "icon": "fa-google",\n            "token_key": "access_token",\n            "remote_app": {\n                "client_id": os.getenv("GOOGLE_KEY"),\n                "client_secret": os.getenv("GOOGLE_SECRET"),\n                "api_base_url": "https://www.googleapis.com/oauth2/v2/",\n                "client_kwargs": {"scope": "email profile"},\n                "request_token_url": None,\n                "access_token_url": "https://accounts.google.com/o/oauth2/token",\n                "authorize_url": "https://accounts.google.com/o/oauth2/auth",\n                "authorize_params": {"hd": os.getenv("AUTH_DOMAIN", "")}\n            },\n        }\n    ]\n\n    # Map Authlib roles to superset roles\n    AUTH_ROLE_ADMIN = \'Admin\'\n    AUTH_ROLE_PUBLIC = \'Public\'\n\n    # Will allow user self registration, allowing to create Flask users from Authorized User\n    AUTH_USER_REGISTRATION = True\n\n    # The default user self registration role\n    AUTH_USER_REGISTRATION_ROLE = "Admin"\n')),(0,r.kt)("h4",{id:"enable-alerts-and-reports"},"Enable Alerts and Reports"),(0,r.kt)("p",null,"For this, as per the ",(0,r.kt)("a",{parentName:"p",href:"/docs/installation/email-reports"},"Alerts and Reports doc"),", you will need to:"),(0,r.kt)("h5",{id:"install-a-supported-webdriver-in-the-celery-worker"},"Install a supported webdriver in the Celery worker"),(0,r.kt)("p",null,"This is done either by using a custom image that has the webdriver pre-installed, or installing at startup time by overriding the ",(0,r.kt)("inlineCode",{parentName:"p"},"command"),". Here's a working example for ",(0,r.kt)("inlineCode",{parentName:"p"},"chromedriver"),":"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"supersetWorker:\n  command:\n    - /bin/sh\n    - -c\n    - |\n      # Install chrome webdriver\n      # See https://github.com/apache/superset/blob/4fa3b6c7185629b87c27fc2c0e5435d458f7b73d/docs/src/pages/docs/installation/email_reports.mdx\n      apt-get update\n      apt-get install -y wget\n      wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb\n      apt-get install -y --no-install-recommends ./google-chrome-stable_current_amd64.deb\n      wget https://chromedriver.storage.googleapis.com/88.0.4324.96/chromedriver_linux64.zip\n      apt-get install -y zip\n      unzip chromedriver_linux64.zip\n      chmod +x chromedriver\n      mv chromedriver /usr/bin\n      apt-get autoremove -yqq --purge\n      apt-get clean\n      rm -f google-chrome-stable_current_amd64.deb chromedriver_linux64.zip\n\n      # Run\n      . {{ .Values.configMountPath }}/superset_bootstrap.sh; celery --app=superset.tasks.celery_app:app worker\n")),(0,r.kt)("h5",{id:"run-the-celery-beat"},"Run the Celery beat"),(0,r.kt)("p",null,"This pod will trigger the scheduled tasks configured in the alerts and reports UI section:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"supersetCeleryBeat:\n  enabled: true\n")),(0,r.kt)("h5",{id:"configure-the-appropriate-celery-jobs-and-smtpslack-settings"},"Configure the appropriate Celery jobs and SMTP/Slack settings"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},'extraEnv:\n  SMTP_HOST: smtp.gmail.com\n  SMTP_USER: user@gmail.com\n  SMTP_PORT: "587"\n  SMTP_MAIL_FROM: user@gmail.com\n\nextraSecretEnv:\n  SLACK_API_TOKEN: xoxb-xxxx-yyyy\n  SMTP_PASSWORD: xxxx-yyyy\n\nconfigOverrides:\n  feature_flags: |\n    import ast\n\n    FEATURE_FLAGS = {\n        "ALERT_REPORTS": True\n    }\n\n    SMTP_HOST = os.getenv("SMTP_HOST","localhost")\n    SMTP_STARTTLS = ast.literal_eval(os.getenv("SMTP_STARTTLS", "True"))\n    SMTP_SSL = ast.literal_eval(os.getenv("SMTP_SSL", "False"))\n    SMTP_USER = os.getenv("SMTP_USER","superset")\n    SMTP_PORT = os.getenv("SMTP_PORT",25)\n    SMTP_PASSWORD = os.getenv("SMTP_PASSWORD","superset")\n    SMTP_MAIL_FROM = os.getenv("SMTP_MAIL_FROM","superset@superset.com")\n\n    SLACK_API_TOKEN = os.getenv("SLACK_API_TOKEN",None)\n  celery_conf: |\n    from celery.schedules import crontab\n\n    class CeleryConfig:\n      broker_url = f"redis://{env(\'REDIS_HOST\')}:{env(\'REDIS_PORT\')}/0"\n      imports = (\n          "superset.sql_lab",\n          "superset.tasks.cache",\n          "superset.tasks.scheduler",\n      )\n      result_backend = f"redis://{env(\'REDIS_HOST\')}:{env(\'REDIS_PORT\')}/0"\n      task_annotations = {\n          "sql_lab.get_sql_results": {\n              "rate_limit": "100/s",\n          },\n      }\n      beat_schedule = {\n          "reports.scheduler": {\n              "task": "reports.scheduler",\n              "schedule": crontab(minute="*", hour="*"),\n          },\n          "reports.prune_log": {\n              "task": "reports.prune_log",\n              \'schedule\': crontab(minute=0, hour=0),\n          },\n          \'cache-warmup-hourly\': {\n              "task": "cache-warmup",\n              "schedule": crontab(minute="*/30", hour="*"),\n              "kwargs": {\n                  "strategy_name": "top_n_dashboards",\n                  "top_n": 10,\n                  "since": "7 days ago",\n              },\n          }\n      }\n\n    CELERY_CONFIG = CeleryConfig\n  reports: |\n    EMAIL_PAGE_RENDER_WAIT = 60\n    WEBDRIVER_BASEURL = "http://{{ template "superset.fullname" . }}:{{ .Values.service.port }}/"\n    WEBDRIVER_BASEURL_USER_FRIENDLY = "https://www.example.com/"\n    WEBDRIVER_TYPE= "chrome"\n    WEBDRIVER_OPTION_ARGS = [\n        "--force-device-scale-factor=2.0",\n        "--high-dpi-support=2.0",\n        "--headless",\n        "--disable-gpu",\n        "--disable-dev-shm-usage",\n        # This is required because our process runs as root (in order to install pip packages)\n        "--no-sandbox",\n        "--disable-setuid-sandbox",\n        "--disable-extensions",\n    ]\n')),(0,r.kt)("h4",{id:"load-the-examples-data-and-dashboards"},"Load the Examples data and dashboards"),(0,r.kt)("p",null,"If you are trying Superset out and want some data and dashboards to explore, you can load some examples by creating a ",(0,r.kt)("inlineCode",{parentName:"p"},"my_values.yaml")," and deploying it as described above in the ",(0,r.kt)("strong",{parentName:"p"},"Configure your setting overrides")," step of the ",(0,r.kt)("strong",{parentName:"p"},"Running")," section.\nTo load the examples, add the following to the ",(0,r.kt)("inlineCode",{parentName:"p"},"my_values.yaml")," file:"),(0,r.kt)("pre",null,(0,r.kt)("code",{parentName:"pre",className:"language-yaml"},"init:\n  loadExamples: true\n")))}c.isMDXComponent=!0},3905:(e,t,n)=>{n.d(t,{Zo:()=>u,kt:()=>g});var a=n(67294);function r(e,t,n){return t in e?Object.defineProperty(e,t,{value:n,enumerable:!0,configurable:!0,writable:!0}):e[t]=n,e}function s(e,t){var n=Object.keys(e);if(Object.getOwnPropertySymbols){var a=Object.getOwnPropertySymbols(e);t&&(a=a.filter((function(t){return Object.getOwnPropertyDescriptor(e,t).enumerable}))),n.push.apply(n,a)}return n}function l(e){for(var t=1;t<arguments.length;t++){var n=null!=arguments[t]?arguments[t]:{};t%2?s(Object(n),!0).forEach((function(t){r(e,t,n[t])})):Object.getOwnPropertyDescriptors?Object.defineProperties(e,Object.getOwnPropertyDescriptors(n)):s(Object(n)).forEach((function(t){Object.defineProperty(e,t,Object.getOwnPropertyDescriptor(n,t))}))}return e}function i(e,t){if(null==e)return{};var n,a,r=function(e,t){if(null==e)return{};var n,a,r={},s=Object.keys(e);for(a=0;a<s.length;a++)n=s[a],t.indexOf(n)>=0||(r[n]=e[n]);return r}(e,t);if(Object.getOwnPropertySymbols){var s=Object.getOwnPropertySymbols(e);for(a=0;a<s.length;a++)n=s[a],t.indexOf(n)>=0||Object.prototype.propertyIsEnumerable.call(e,n)&&(r[n]=e[n])}return r}var o=a.createContext({}),p=function(e){var t=a.useContext(o),n=t;return e&&(n="function"==typeof e?e(t):l(l({},t),e)),n},u=function(e){var t=p(e.components);return a.createElement(o.Provider,{value:t},e.children)},d="mdxType",c={inlineCode:"code",wrapper:function(e){var t=e.children;return a.createElement(a.Fragment,{},t)}},m=a.forwardRef((function(e,t){var n=e.components,r=e.mdxType,s=e.originalType,o=e.parentName,u=i(e,["components","mdxType","originalType","parentName"]),d=p(n),m=r,g=d["".concat(o,".").concat(m)]||d[m]||c[m]||s;return n?a.createElement(g,l(l({ref:t},u),{},{components:n})):a.createElement(g,l({ref:t},u))}));function g(e,t){var n=arguments,r=t&&t.mdxType;if("string"==typeof e||r){var s=n.length,l=new Array(s);l[0]=m;var i={};for(var o in t)hasOwnProperty.call(t,o)&&(i[o]=t[o]);i.originalType=e,i[d]="string"==typeof e?e:r,l[1]=i;for(var p=2;p<s;p++)l[p]=n[p];return a.createElement.apply(null,l)}return a.createElement.apply(null,n)}m.displayName="MDXCreateElement"}}]);
\ No newline at end of file
diff --git a/assets/js/runtime~main.634e21ea.js b/assets/js/runtime~main.ae110d3b.js
similarity index 98%
rename from assets/js/runtime~main.634e21ea.js
rename to assets/js/runtime~main.ae110d3b.js
index a28b74e..37cc9f0 100644
--- a/assets/js/runtime~main.634e21ea.js
+++ b/assets/js/runtime~main.ae110d3b.js
@@ -1 +1 @@
-(()=>{"use strict";var e,a,c,f,d,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(c.exports,c,c.exports,r),c.loaded=!0,c.exports}r.m=b,r.c=t,e=[],r.O=(a,c,f,d)=>{if(!c){var b=1/0;for(i=0;i<e.length;i++){c=e[i][0],f=e[i][1],d=e[i][2];for(var t=!0,o=0;o<c.length;o++)(!1&d||b>=d)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,d<b&&(b=d));if(t){e.splice(i--,1);var n=f();void 0!==n&&(a=n)}}return a}d=d||0;for(var i=e.length;i>0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[c,f,d]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var d=Object.create(null);r.r(d);var b={};a=a||[null,c({}),c([]),c(c)];for(var t=2&f&&e;"object"==typeof t&&!~a.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,r.d(d,b),d},r.d=(e,a)=>{for(var c in a)r.o(a,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,c)=>(r.f[c](e,a),a)),[])),r.u=e=>"assets/js/"+({53:"935f2afb",112:"afef705c",229:"25f17725",340:"070b53d1",396:"0ae8b3d4",515:"53bb5fc4",599:"3c585fdb",674:"67158350",742:"dd0670d3",907:"c1424005",1083:"bd23e567",1444:"69a4ab96",1533:"6edc47f3",1964:"5e15fec9",2331:"19682bb8",2429:"d5417e33",2942:"eb23a929",3085:"1f391b9e",3206:"f8409a7e",3237:"1df93b7f",3628:"fa1a3aa0",3672:"cf6ffe2f",3775:"496bf018",3821:"21b4b958",3909:"cd90435d",3945:"a309f86e",3996:"9791fd42",4003:"6432bc55",4014:"5e50ba72",4018:"0a0a6d3c",4096:"c76f729d",4244:"4cc2c078",4281:"1c734f75",4343:"18cf5ace",4490:"262418cd",4519:"2c412ea7",4586:"dc3fdd24",4628:"1ce51947",4729:"0c21af39",4745:"30ec1363",4796:"471df853",4992:"dc737160",5049:"74876495",5097:"a584ba2a",5114:"5ea65e65",5324:"a9e1a7f6",5542:"729f57ad",5551:"da60bc8f",5643:"30334fcd",5720:"30256b0d",5851:"8660bbc8",5906:"e7c796a6",6126:"e0a8f778",6230:"2bafca50",6455:"4e664dc4",6547:"1c42a294",6552:"6948bca1",6849:"57b59cd4",6860:"dbb131dd",7107:"d76e6194",7251:"9d6fd8ea",7271:"6a90d500",7285:"b92f705c",7380:"640bc8a0",7414:"393be207",7566:"972382ea",7587:"3ec2c3f7",7600:"2461ffa2",7706:"ce3fa444",7886:"5818c28e",7918:"17896441",7920:"1a4e3797",7937:"9a9c044b",8005:"600a9360",8015:"0e9953cd",8342:"eb3b0997",8402:"3c835dee",8561:"07f0ce13",8597:"f4a6e698",8718:"31e90f3c",8784:"35a5de3c",8835:"36ea7a08",8844:"b46ab14b",8853:"c296437a",8860:"71cf7fe6",8888:"ee5d850a",8915:"f9cc156b",9039:"e187e321",9243:"40974919",9317:"f5f07875",9514:"1be78505",9594:"507542a3",9596:"88eaec5a",9609:"58160c0b",9617:"d83b78fc",9623:"904d61ef",9822:"fe0957ee"}[e]||e)+"."+{53:"42f0f3c7",112:"9280569e",229:"382b9496",340:"75523673",396:"e41dcf26",515:"d6fdf9a0",599:"ef01a5ad",674:"a3276773",713:"e8404ec1",742:"d26be97a",907:"df948777",975:"d95e9177",1083:"dc758238",1273:"c177fe37",1444:"8e098be3",1529:"cb77c953",1533:"2b676a07",1964:"bc80b38a",2331:"12ef5623",2387:"cf729afe",2429:"7d9140aa",2942:"7e9562fc",3085:"fabb506c",3206:"fb980a80",3237:"e0886eb8",3628:"e87e1188",3672:"2621ec01",3775:"c0c9431f",3821:"0e4bb161",3909:"ab34b154",3945:"fd5212eb",3996:"b79f756c",4003:"cb5cd157",4014:"2b277921",4018:"8b09d7e3",4096:"c85e22b7",4244:"1e2d58c9",4281:"1a3d15a6",4343:"e12f7ce7",4357:"c9ab8a8e",4471:"bf33ef73",4490:"4fca1a2b",4519:"5753c5cd",4586:"5209d12a",4628:"9c631359",4729:"2a013c27",4745:"7ae483eb",4796:"39c95442",4992:"1b73fe9a",5049:"fe78380d",5097:"a786479b",5114:"ffa26b77",5324:"a05721f0",5542:"f2ed3507",5551:"18262bd8",5643:"b5a32572",5720:"be106e3e",5851:"ad0f3e8d",5906:"9d01f089",5957:"4fb6e613",6126:"df445ea1",6230:"7f7fb7ca",6455:"426e997b",6547:"6bff09cc",6552:"cde86692",6780:"ba84af4e",6849:"6dca875c",6860:"c82e4e25",6945:"d18f3d89",7029:"96f14d38",7107:"54d240ef",7251:"9ebcbca9",7271:"1eddcbd8",7285:"fa24dc6d",7380:"bea9036c",7414:"20dae7da",7566:"391f2ca7",7587:"6f37a44b",7600:"91c9a936",7706:"62a49085",7886:"56d86c2e",7918:"156729cb",7920:"8a952348",7937:"9da8e8a6",8005:"0b984638",8015:"6d25c537",8342:"47b0e1a4",8402:"63cab2ea",8561:"4aefae82",8597:"891ffbff",8718:"8085ada8",8784:"cc424d0a",8835:"7f7d69c9",8844:"f33536a3",8853:"7dc8f3c7",8860:"e09d9a43",8888:"28a37eb6",8915:"4787817d",9039:"4d56150c",9169:"36534697",9243:"a133cd88",9317:"56314c09",9514:"bfe07248",9594:"41c44bcd",9596:"0ba04755",9609:"0078e71d",9617:"4bd95169",9623:"107093cb",9822:"7fb3f346"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},d="docs-v-2:",r.l=(e,a,c,b)=>{if(f[e])f[e].push(a);else{var t,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var l=n[i];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==d+c){t=l;break}}t||(o=!0,(t=document.createElement("script")).charset="utf-8",t.timeout=120,r.nc&&t.setAttribute("nonce",r.nc),t.setAttribute("data-webpack",d+c),t.src=e),f[e]=[a];var u=(a,c)=>{t.onerror=t.onload=null,clearTimeout(s);var d=f[e];if(delete f[e],t.parentNode&&t.parentNode.removeChild(t),d&&d.forEach((e=>e(c))),a)return a(c)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.p="/",r.gca=function(e){return e={17896441:"7918",40974919:"9243",67158350:"674",74876495:"5049","935f2afb":"53",afef705c:"112","25f17725":"229","070b53d1":"340","0ae8b3d4":"396","53bb5fc4":"515","3c585fdb":"599",dd0670d3:"742",c1424005:"907",bd23e567:"1083","69a4ab96":"1444","6edc47f3":"1533","5e15fec9":"1964","19682bb8":"2331",d5417e33:"2429",eb23a929:"2942","1f391b9e":"3085",f8409a7e:"3206","1df93b7f":"3237",fa1a3aa0:"3628",cf6ffe2f:"3672","496bf018":"3775","21b4b958":"3821",cd90435d:"3909",a309f86e:"3945","9791fd42":"3996","6432bc55":"4003","5e50ba72":"4014","0a0a6d3c":"4018",c76f729d:"4096","4cc2c078":"4244","1c734f75":"4281","18cf5ace":"4343","262418cd":"4490","2c412ea7":"4519",dc3fdd24:"4586","1ce51947":"4628","0c21af39":"4729","30ec1363":"4745","471df853":"4796",dc737160:"4992",a584ba2a:"5097","5ea65e65":"5114",a9e1a7f6:"5324","729f57ad":"5542",da60bc8f:"5551","30334fcd":"5643","30256b0d":"5720","8660bbc8":"5851",e7c796a6:"5906",e0a8f778:"6126","2bafca50":"6230","4e664dc4":"6455","1c42a294":"6547","6948bca1":"6552","57b59cd4":"6849",dbb131dd:"6860",d76e6194:"7107","9d6fd8ea":"7251","6a90d500":"7271",b92f705c:"7285","640bc8a0":"7380","393be207":"7414","972382ea":"7566","3ec2c3f7":"7587","2461ffa2":"7600",ce3fa444:"7706","5818c28e":"7886","1a4e3797":"7920","9a9c044b":"7937","600a9360":"8005","0e9953cd":"8015",eb3b0997:"8342","3c835dee":"8402","07f0ce13":"8561",f4a6e698:"8597","31e90f3c":"8718","35a5de3c":"8784","36ea7a08":"8835",b46ab14b:"8844",c296437a:"8853","71cf7fe6":"8860",ee5d850a:"8888",f9cc156b:"8915",e187e321:"9039",f5f07875:"9317","1be78505":"9514","507542a3":"9594","88eaec5a":"9596","58160c0b":"9609",d83b78fc:"9617","904d61ef":"9623",fe0957ee:"9822"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(a,c)=>{var f=r.o(e,a)?e[a]:void 0;if(0!==f)if(f)c.push(f[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var d=new Promise(((c,d)=>f=e[a]=[c,d]));c.push(f[2]=d);var b=r.p+r.u(a),t=new Error;r.l(b,(c=>{if(r.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var d=c&&("load"===c.type?"missing":c.type),b=c&&c.target&&c.target.src;t.message="Loading chunk "+a+" failed.\n("+d+": "+b+")",t.name="ChunkLoadError",t.type=d,t.request=b,f[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,c)=>{var f,d,b=c[0],t=c[1],o=c[2],n=0;if(b.some((a=>0!==e[a]))){for(f in t)r.o(t,f)&&(r.m[f]=t[f]);if(o)var i=o(r)}for(a&&a(c);n<b.length;n++)d=b[n],r.o(e,d)&&e[d]&&e[d][0](),e[d]=0;return r.O(i)},c=self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[];c.forEach(a.bind(null,0)),c.push=a.bind(null,c.push.bind(c))})()})();
\ No newline at end of file
+(()=>{"use strict";var e,a,c,f,d,b={},t={};function r(e){var a=t[e];if(void 0!==a)return a.exports;var c=t[e]={id:e,loaded:!1,exports:{}};return b[e].call(c.exports,c,c.exports,r),c.loaded=!0,c.exports}r.m=b,r.c=t,e=[],r.O=(a,c,f,d)=>{if(!c){var b=1/0;for(i=0;i<e.length;i++){c=e[i][0],f=e[i][1],d=e[i][2];for(var t=!0,o=0;o<c.length;o++)(!1&d||b>=d)&&Object.keys(r.O).every((e=>r.O[e](c[o])))?c.splice(o--,1):(t=!1,d<b&&(b=d));if(t){e.splice(i--,1);var n=f();void 0!==n&&(a=n)}}return a}d=d||0;for(var i=e.length;i>0&&e[i-1][2]>d;i--)e[i]=e[i-1];e[i]=[c,f,d]},r.n=e=>{var a=e&&e.__esModule?()=>e.default:()=>e;return r.d(a,{a:a}),a},c=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,r.t=function(e,f){if(1&f&&(e=this(e)),8&f)return e;if("object"==typeof e&&e){if(4&f&&e.__esModule)return e;if(16&f&&"function"==typeof e.then)return e}var d=Object.create(null);r.r(d);var b={};a=a||[null,c({}),c([]),c(c)];for(var t=2&f&&e;"object"==typeof t&&!~a.indexOf(t);t=c(t))Object.getOwnPropertyNames(t).forEach((a=>b[a]=()=>e[a]));return b.default=()=>e,r.d(d,b),d},r.d=(e,a)=>{for(var c in a)r.o(a,c)&&!r.o(e,c)&&Object.defineProperty(e,c,{enumerable:!0,get:a[c]})},r.f={},r.e=e=>Promise.all(Object.keys(r.f).reduce(((a,c)=>(r.f[c](e,a),a)),[])),r.u=e=>"assets/js/"+({53:"935f2afb",112:"afef705c",229:"25f17725",340:"070b53d1",396:"0ae8b3d4",515:"53bb5fc4",599:"3c585fdb",674:"67158350",742:"dd0670d3",907:"c1424005",1083:"bd23e567",1444:"69a4ab96",1533:"6edc47f3",1964:"5e15fec9",2331:"19682bb8",2429:"d5417e33",2942:"eb23a929",3085:"1f391b9e",3206:"f8409a7e",3237:"1df93b7f",3628:"fa1a3aa0",3672:"cf6ffe2f",3775:"496bf018",3821:"21b4b958",3909:"cd90435d",3945:"a309f86e",3996:"9791fd42",4003:"6432bc55",4014:"5e50ba72",4018:"0a0a6d3c",4096:"c76f729d",4244:"4cc2c078",4281:"1c734f75",4343:"18cf5ace",4490:"262418cd",4519:"2c412ea7",4586:"dc3fdd24",4628:"1ce51947",4729:"0c21af39",4745:"30ec1363",4796:"471df853",4992:"dc737160",5049:"74876495",5097:"a584ba2a",5114:"5ea65e65",5324:"a9e1a7f6",5542:"729f57ad",5551:"da60bc8f",5643:"30334fcd",5720:"30256b0d",5851:"8660bbc8",5906:"e7c796a6",6126:"e0a8f778",6230:"2bafca50",6455:"4e664dc4",6547:"1c42a294",6552:"6948bca1",6849:"57b59cd4",6860:"dbb131dd",7107:"d76e6194",7251:"9d6fd8ea",7271:"6a90d500",7285:"b92f705c",7380:"640bc8a0",7414:"393be207",7566:"972382ea",7587:"3ec2c3f7",7600:"2461ffa2",7706:"ce3fa444",7886:"5818c28e",7918:"17896441",7920:"1a4e3797",7937:"9a9c044b",8005:"600a9360",8015:"0e9953cd",8342:"eb3b0997",8402:"3c835dee",8561:"07f0ce13",8597:"f4a6e698",8718:"31e90f3c",8784:"35a5de3c",8835:"36ea7a08",8844:"b46ab14b",8853:"c296437a",8860:"71cf7fe6",8888:"ee5d850a",8915:"f9cc156b",9039:"e187e321",9243:"40974919",9317:"f5f07875",9514:"1be78505",9594:"507542a3",9596:"88eaec5a",9609:"58160c0b",9617:"d83b78fc",9623:"904d61ef",9822:"fe0957ee"}[e]||e)+"."+{53:"42f0f3c7",112:"9280569e",229:"382b9496",340:"75523673",396:"e41dcf26",515:"d6fdf9a0",599:"ef01a5ad",674:"a3276773",713:"e8404ec1",742:"d26be97a",907:"df948777",975:"d95e9177",1083:"dc758238",1273:"c177fe37",1444:"8e098be3",1529:"cb77c953",1533:"2b676a07",1964:"bc80b38a",2331:"12ef5623",2387:"cf729afe",2429:"7d9140aa",2942:"7e9562fc",3085:"fabb506c",3206:"fb980a80",3237:"e0886eb8",3628:"e87e1188",3672:"2621ec01",3775:"c0c9431f",3821:"0e4bb161",3909:"ab34b154",3945:"fd5212eb",3996:"b79f756c",4003:"cb5cd157",4014:"2b277921",4018:"8b09d7e3",4096:"c85e22b7",4244:"1e2d58c9",4281:"1a3d15a6",4343:"e12f7ce7",4357:"c9ab8a8e",4471:"bf33ef73",4490:"4fca1a2b",4519:"5753c5cd",4586:"5209d12a",4628:"9c631359",4729:"2a013c27",4745:"7ae483eb",4796:"39c95442",4992:"1b73fe9a",5049:"fe78380d",5097:"a786479b",5114:"ffa26b77",5324:"a05721f0",5542:"f2ed3507",5551:"18262bd8",5643:"b5a32572",5720:"be106e3e",5851:"ad0f3e8d",5906:"9d01f089",5957:"4fb6e613",6126:"df445ea1",6230:"7f7fb7ca",6455:"426e997b",6547:"6bff09cc",6552:"cde86692",6780:"ba84af4e",6849:"6dca875c",6860:"c82e4e25",6945:"d18f3d89",7029:"96f14d38",7107:"54d240ef",7251:"9ebcbca9",7271:"1eddcbd8",7285:"fa24dc6d",7380:"bea9036c",7414:"20dae7da",7566:"391f2ca7",7587:"6f37a44b",7600:"91c9a936",7706:"62a49085",7886:"56d86c2e",7918:"156729cb",7920:"8a952348",7937:"9da8e8a6",8005:"0b984638",8015:"6d25c537",8342:"47b0e1a4",8402:"63cab2ea",8561:"4aefae82",8597:"891ffbff",8718:"8085ada8",8784:"cc424d0a",8835:"7f7d69c9",8844:"f33536a3",8853:"7dc8f3c7",8860:"e09d9a43",8888:"28a37eb6",8915:"4787817d",9039:"4d56150c",9169:"36534697",9243:"a133cd88",9317:"56314c09",9514:"bfe07248",9594:"41c44bcd",9596:"0ba04755",9609:"0078e71d",9617:"4bd95169",9623:"107093cb",9822:"3652ad93"}[e]+".js",r.miniCssF=e=>{},r.g=function(){if("object"==typeof globalThis)return globalThis;try{return this||new Function("return this")()}catch(e){if("object"==typeof window)return window}}(),r.o=(e,a)=>Object.prototype.hasOwnProperty.call(e,a),f={},d="docs-v-2:",r.l=(e,a,c,b)=>{if(f[e])f[e].push(a);else{var t,o;if(void 0!==c)for(var n=document.getElementsByTagName("script"),i=0;i<n.length;i++){var l=n[i];if(l.getAttribute("src")==e||l.getAttribute("data-webpack")==d+c){t=l;break}}t||(o=!0,(t=document.createElement("script")).charset="utf-8",t.timeout=120,r.nc&&t.setAttribute("nonce",r.nc),t.setAttribute("data-webpack",d+c),t.src=e),f[e]=[a];var u=(a,c)=>{t.onerror=t.onload=null,clearTimeout(s);var d=f[e];if(delete f[e],t.parentNode&&t.parentNode.removeChild(t),d&&d.forEach((e=>e(c))),a)return a(c)},s=setTimeout(u.bind(null,void 0,{type:"timeout",target:t}),12e4);t.onerror=u.bind(null,t.onerror),t.onload=u.bind(null,t.onload),o&&document.head.appendChild(t)}},r.r=e=>{"undefined"!=typeof Symbol&&Symbol.toStringTag&&Object.defineProperty(e,Symbol.toStringTag,{value:"Module"}),Object.defineProperty(e,"__esModule",{value:!0})},r.nmd=e=>(e.paths=[],e.children||(e.children=[]),e),r.p="/",r.gca=function(e){return e={17896441:"7918",40974919:"9243",67158350:"674",74876495:"5049","935f2afb":"53",afef705c:"112","25f17725":"229","070b53d1":"340","0ae8b3d4":"396","53bb5fc4":"515","3c585fdb":"599",dd0670d3:"742",c1424005:"907",bd23e567:"1083","69a4ab96":"1444","6edc47f3":"1533","5e15fec9":"1964","19682bb8":"2331",d5417e33:"2429",eb23a929:"2942","1f391b9e":"3085",f8409a7e:"3206","1df93b7f":"3237",fa1a3aa0:"3628",cf6ffe2f:"3672","496bf018":"3775","21b4b958":"3821",cd90435d:"3909",a309f86e:"3945","9791fd42":"3996","6432bc55":"4003","5e50ba72":"4014","0a0a6d3c":"4018",c76f729d:"4096","4cc2c078":"4244","1c734f75":"4281","18cf5ace":"4343","262418cd":"4490","2c412ea7":"4519",dc3fdd24:"4586","1ce51947":"4628","0c21af39":"4729","30ec1363":"4745","471df853":"4796",dc737160:"4992",a584ba2a:"5097","5ea65e65":"5114",a9e1a7f6:"5324","729f57ad":"5542",da60bc8f:"5551","30334fcd":"5643","30256b0d":"5720","8660bbc8":"5851",e7c796a6:"5906",e0a8f778:"6126","2bafca50":"6230","4e664dc4":"6455","1c42a294":"6547","6948bca1":"6552","57b59cd4":"6849",dbb131dd:"6860",d76e6194:"7107","9d6fd8ea":"7251","6a90d500":"7271",b92f705c:"7285","640bc8a0":"7380","393be207":"7414","972382ea":"7566","3ec2c3f7":"7587","2461ffa2":"7600",ce3fa444:"7706","5818c28e":"7886","1a4e3797":"7920","9a9c044b":"7937","600a9360":"8005","0e9953cd":"8015",eb3b0997:"8342","3c835dee":"8402","07f0ce13":"8561",f4a6e698:"8597","31e90f3c":"8718","35a5de3c":"8784","36ea7a08":"8835",b46ab14b:"8844",c296437a:"8853","71cf7fe6":"8860",ee5d850a:"8888",f9cc156b:"8915",e187e321:"9039",f5f07875:"9317","1be78505":"9514","507542a3":"9594","88eaec5a":"9596","58160c0b":"9609",d83b78fc:"9617","904d61ef":"9623",fe0957ee:"9822"}[e]||e,r.p+r.u(e)},(()=>{var e={1303:0,532:0};r.f.j=(a,c)=>{var f=r.o(e,a)?e[a]:void 0;if(0!==f)if(f)c.push(f[2]);else if(/^(1303|532)$/.test(a))e[a]=0;else{var d=new Promise(((c,d)=>f=e[a]=[c,d]));c.push(f[2]=d);var b=r.p+r.u(a),t=new Error;r.l(b,(c=>{if(r.o(e,a)&&(0!==(f=e[a])&&(e[a]=void 0),f)){var d=c&&("load"===c.type?"missing":c.type),b=c&&c.target&&c.target.src;t.message="Loading chunk "+a+" failed.\n("+d+": "+b+")",t.name="ChunkLoadError",t.type=d,t.request=b,f[1](t)}}),"chunk-"+a,a)}},r.O.j=a=>0===e[a];var a=(a,c)=>{var f,d,b=c[0],t=c[1],o=c[2],n=0;if(b.some((a=>0!==e[a]))){for(f in t)r.o(t,f)&&(r.m[f]=t[f]);if(o)var i=o(r)}for(a&&a(c);n<b.length;n++)d=b[n],r.o(e,d)&&e[d]&&e[d][0](),e[d]=0;return r.O(i)},c=self.webpackChunkdocs_v_2=self.webpackChunkdocs_v_2||[];c.forEach(a.bind(null,0)),c.push=a.bind(null,c.push.bind(c))})()})();
\ No newline at end of file
diff --git a/community/index.html b/community/index.html
index 5b844e9..30ec016 100644
--- a/community/index.html
+++ b/community/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/api/index.html b/docs/api/index.html
index daf107c..167ef17 100644
--- a/docs/api/index.html
+++ b/docs/api/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -48,7 +48,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/contributing-page/index.html b/docs/contributing/contributing-page/index.html
index 6b291ac..810ae94 100644
--- a/docs/contributing/contributing-page/index.html
+++ b/docs/contributing/contributing-page/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/conventions-and-typing/index.html b/docs/contributing/conventions-and-typing/index.html
index c594b5b..f5f3941 100644
--- a/docs/contributing/conventions-and-typing/index.html
+++ b/docs/contributing/conventions-and-typing/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -49,7 +49,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/creating-viz-plugins/index.html b/docs/contributing/creating-viz-plugins/index.html
index 09f06bd..c74dd1a 100644
--- a/docs/contributing/creating-viz-plugins/index.html
+++ b/docs/contributing/creating-viz-plugins/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -61,7 +61,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/hooks-and-linting/index.html b/docs/contributing/hooks-and-linting/index.html
index 147f2df..52eddef 100644
--- a/docs/contributing/hooks-and-linting/index.html
+++ b/docs/contributing/hooks-and-linting/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/local-backend/index.html b/docs/contributing/local-backend/index.html
index 3438852..03606a3 100644
--- a/docs/contributing/local-backend/index.html
+++ b/docs/contributing/local-backend/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -48,7 +48,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/pull-request-guidelines/index.html b/docs/contributing/pull-request-guidelines/index.html
index 0d0d598..de5532a 100644
--- a/docs/contributing/pull-request-guidelines/index.html
+++ b/docs/contributing/pull-request-guidelines/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/style-guide/index.html b/docs/contributing/style-guide/index.html
index 5f0c700..0768ba4 100644
--- a/docs/contributing/style-guide/index.html
+++ b/docs/contributing/style-guide/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -48,7 +48,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/testing-locally/index.html b/docs/contributing/testing-locally/index.html
index e54be59..cdbfc2a 100644
--- a/docs/contributing/testing-locally/index.html
+++ b/docs/contributing/testing-locally/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -52,7 +52,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/translations/index.html b/docs/contributing/translations/index.html
index e183703..36f6918 100644
--- a/docs/contributing/translations/index.html
+++ b/docs/contributing/translations/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -76,7 +76,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/contributing/types-of-contributions/index.html b/docs/contributing/types-of-contributions/index.html
index a088dfb..8d88453 100644
--- a/docs/contributing/types-of-contributions/index.html
+++ b/docs/contributing/types-of-contributions/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -56,7 +56,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/creating-charts-dashboards/creating-your-first-dashboard/index.html b/docs/creating-charts-dashboards/creating-your-first-dashboard/index.html
index 45ec150..57cb7fd 100644
--- a/docs/creating-charts-dashboards/creating-your-first-dashboard/index.html
+++ b/docs/creating-charts-dashboards/creating-your-first-dashboard/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -88,7 +88,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/creating-charts-dashboards/exploring-data/index.html b/docs/creating-charts-dashboards/exploring-data/index.html
index e86e584..21ae0ec 100644
--- a/docs/creating-charts-dashboards/exploring-data/index.html
+++ b/docs/creating-charts-dashboards/exploring-data/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -150,7 +150,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/ascend/index.html b/docs/databases/ascend/index.html
index 5570e26..951aa7d 100644
--- a/docs/databases/ascend/index.html
+++ b/docs/databases/ascend/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/athena/index.html b/docs/databases/athena/index.html
index 83fe28e..6c5dcd1 100644
--- a/docs/databases/athena/index.html
+++ b/docs/databases/athena/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/bigquery/index.html b/docs/databases/bigquery/index.html
index 039cc86..bb2b0bc 100644
--- a/docs/databases/bigquery/index.html
+++ b/docs/databases/bigquery/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -52,7 +52,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/clickhouse/index.html b/docs/databases/clickhouse/index.html
index 944e641..0fdfe7f 100644
--- a/docs/databases/clickhouse/index.html
+++ b/docs/databases/clickhouse/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/cockroachdb/index.html b/docs/databases/cockroachdb/index.html
index 532a3cd..6e72667 100644
--- a/docs/databases/cockroachdb/index.html
+++ b/docs/databases/cockroachdb/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/cratedb/index.html b/docs/databases/cratedb/index.html
index f533231..f2da6cc 100644
--- a/docs/databases/cratedb/index.html
+++ b/docs/databases/cratedb/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -49,7 +49,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/databend/index.html b/docs/databases/databend/index.html
index 639e036..ec70894 100644
--- a/docs/databases/databend/index.html
+++ b/docs/databases/databend/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/databricks/index.html b/docs/databases/databricks/index.html
index 5613629..c527b65 100644
--- a/docs/databases/databricks/index.html
+++ b/docs/databases/databricks/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/db-connection-ui/index.html b/docs/databases/db-connection-ui/index.html
index 24ab0e4..11dee1e 100644
--- a/docs/databases/db-connection-ui/index.html
+++ b/docs/databases/db-connection-ui/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/docker-add-drivers/index.html b/docs/databases/docker-add-drivers/index.html
index 76240fd..bc14aff 100644
--- a/docs/databases/docker-add-drivers/index.html
+++ b/docs/databases/docker-add-drivers/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/doris/index.html b/docs/databases/doris/index.html
index c5a6296..9c7b548 100644
--- a/docs/databases/doris/index.html
+++ b/docs/databases/doris/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/dremio/index.html b/docs/databases/dremio/index.html
index 65bdd13..d2f51a4 100644
--- a/docs/databases/dremio/index.html
+++ b/docs/databases/dremio/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/drill/index.html b/docs/databases/drill/index.html
index 666ff3b..26d2a11 100644
--- a/docs/databases/drill/index.html
+++ b/docs/databases/drill/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -52,7 +52,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/druid/index.html b/docs/databases/druid/index.html
index 45e2033..34be833 100644
--- a/docs/databases/druid/index.html
+++ b/docs/databases/druid/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -58,7 +58,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/dynamodb/index.html b/docs/databases/dynamodb/index.html
index a088998..befc2c3 100644
--- a/docs/databases/dynamodb/index.html
+++ b/docs/databases/dynamodb/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/elasticsearch/index.html b/docs/databases/elasticsearch/index.html
index 8578d4d..ae4206d 100644
--- a/docs/databases/elasticsearch/index.html
+++ b/docs/databases/elasticsearch/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -52,7 +52,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/exasol/index.html b/docs/databases/exasol/index.html
index 837ced5..71c9c17 100644
--- a/docs/databases/exasol/index.html
+++ b/docs/databases/exasol/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/extra-settings/index.html b/docs/databases/extra-settings/index.html
index daeda09..f753c15 100644
--- a/docs/databases/extra-settings/index.html
+++ b/docs/databases/extra-settings/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -55,7 +55,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/firebird/index.html b/docs/databases/firebird/index.html
index b9a29a9..34ec582 100644
--- a/docs/databases/firebird/index.html
+++ b/docs/databases/firebird/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/firebolt/index.html b/docs/databases/firebolt/index.html
index 6f4e4fe..2004c9b 100644
--- a/docs/databases/firebolt/index.html
+++ b/docs/databases/firebolt/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/google-sheets/index.html b/docs/databases/google-sheets/index.html
index d6da5de..7b77083 100644
--- a/docs/databases/google-sheets/index.html
+++ b/docs/databases/google-sheets/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -49,7 +49,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/hana/index.html b/docs/databases/hana/index.html
index df3665a..57abd47 100644
--- a/docs/databases/hana/index.html
+++ b/docs/databases/hana/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/hive/index.html b/docs/databases/hive/index.html
index 5428c12..30b36de 100644
--- a/docs/databases/hive/index.html
+++ b/docs/databases/hive/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/hologres/index.html b/docs/databases/hologres/index.html
index 52b4d46..413f097 100644
--- a/docs/databases/hologres/index.html
+++ b/docs/databases/hologres/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/ibm-db2/index.html b/docs/databases/ibm-db2/index.html
index 522ae36..e2d8d0a 100644
--- a/docs/databases/ibm-db2/index.html
+++ b/docs/databases/ibm-db2/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/impala/index.html b/docs/databases/impala/index.html
index ebfd374..dde48bc 100644
--- a/docs/databases/impala/index.html
+++ b/docs/databases/impala/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/installing-database-drivers/index.html b/docs/databases/installing-database-drivers/index.html
index 63bdea0..79eb425 100644
--- a/docs/databases/installing-database-drivers/index.html
+++ b/docs/databases/installing-database-drivers/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -56,7 +56,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/kusto/index.html b/docs/databases/kusto/index.html
index 12e1d77..3a84acf 100644
--- a/docs/databases/kusto/index.html
+++ b/docs/databases/kusto/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/kylin/index.html b/docs/databases/kylin/index.html
index 5b13285..74c3460 100644
--- a/docs/databases/kylin/index.html
+++ b/docs/databases/kylin/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/meta-database/index.html b/docs/databases/meta-database/index.html
index f61750d..8ea754b 100644
--- a/docs/databases/meta-database/index.html
+++ b/docs/databases/meta-database/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/mysql/index.html b/docs/databases/mysql/index.html
index 54efd57..128773c 100644
--- a/docs/databases/mysql/index.html
+++ b/docs/databases/mysql/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/netezza/index.html b/docs/databases/netezza/index.html
index 5c0c2ab..ffaffcc 100644
--- a/docs/databases/netezza/index.html
+++ b/docs/databases/netezza/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/ocient/index.html b/docs/databases/ocient/index.html
index c23f5fe..7afb885 100644
--- a/docs/databases/ocient/index.html
+++ b/docs/databases/ocient/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/oracle/index.html b/docs/databases/oracle/index.html
index a46d7a3..a9b4ca5 100644
--- a/docs/databases/oracle/index.html
+++ b/docs/databases/oracle/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/pinot/index.html b/docs/databases/pinot/index.html
index a5948e3..4c8e278 100644
--- a/docs/databases/pinot/index.html
+++ b/docs/databases/pinot/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/postgres/index.html b/docs/databases/postgres/index.html
index a4f2ca5..5c2a318 100644
--- a/docs/databases/postgres/index.html
+++ b/docs/databases/postgres/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -50,7 +50,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/presto/index.html b/docs/databases/presto/index.html
index db1797e..b3fa423 100644
--- a/docs/databases/presto/index.html
+++ b/docs/databases/presto/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/redshift/index.html b/docs/databases/redshift/index.html
index 3e4b8b4..e217c5a 100644
--- a/docs/databases/redshift/index.html
+++ b/docs/databases/redshift/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/risingwave/index.html b/docs/databases/risingwave/index.html
index 9d3db4c..4c80049 100644
--- a/docs/databases/risingwave/index.html
+++ b/docs/databases/risingwave/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/rockset/index.html b/docs/databases/rockset/index.html
index af46cb7..a9ef133 100644
--- a/docs/databases/rockset/index.html
+++ b/docs/databases/rockset/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/snowflake/index.html b/docs/databases/snowflake/index.html
index 83d24a4..b3b01d4 100644
--- a/docs/databases/snowflake/index.html
+++ b/docs/databases/snowflake/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -55,7 +55,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/solr/index.html b/docs/databases/solr/index.html
index 693c528..7d9ff0a 100644
--- a/docs/databases/solr/index.html
+++ b/docs/databases/solr/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/spark-sql/index.html b/docs/databases/spark-sql/index.html
index 5455862..f78c767 100644
--- a/docs/databases/spark-sql/index.html
+++ b/docs/databases/spark-sql/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/sql-server/index.html b/docs/databases/sql-server/index.html
index e6f66a6..800ca35 100644
--- a/docs/databases/sql-server/index.html
+++ b/docs/databases/sql-server/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/starrocks/index.html b/docs/databases/starrocks/index.html
index 67ee148..c7d9974 100644
--- a/docs/databases/starrocks/index.html
+++ b/docs/databases/starrocks/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/teradata/index.html b/docs/databases/teradata/index.html
index f2df5d0..765e1e2 100644
--- a/docs/databases/teradata/index.html
+++ b/docs/databases/teradata/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -52,7 +52,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/timescaledb/index.html b/docs/databases/timescaledb/index.html
index 330e948..69442c4 100644
--- a/docs/databases/timescaledb/index.html
+++ b/docs/databases/timescaledb/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -46,7 +46,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/trino/index.html b/docs/databases/trino/index.html
index 4434c35..b7f3bb1 100644
--- a/docs/databases/trino/index.html
+++ b/docs/databases/trino/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/vertica/index.html b/docs/databases/vertica/index.html
index fedffd5..9c03cf3 100644
--- a/docs/databases/vertica/index.html
+++ b/docs/databases/vertica/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/databases/yugabytedb/index.html b/docs/databases/yugabytedb/index.html
index f0baadc..765a564 100644
--- a/docs/databases/yugabytedb/index.html
+++ b/docs/databases/yugabytedb/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/frequently-asked-questions/index.html b/docs/frequently-asked-questions/index.html
index b36cec4..7c0bc23 100644
--- a/docs/frequently-asked-questions/index.html
+++ b/docs/frequently-asked-questions/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -133,7 +133,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/alerts-reports/index.html b/docs/installation/alerts-reports/index.html
index 0b7effa..d7c098e 100644
--- a/docs/installation/alerts-reports/index.html
+++ b/docs/installation/alerts-reports/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -64,7 +64,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/async-queries-celery/index.html b/docs/installation/async-queries-celery/index.html
index 50a10f1..e9e58ef 100644
--- a/docs/installation/async-queries-celery/index.html
+++ b/docs/installation/async-queries-celery/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -61,7 +61,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/cache/index.html b/docs/installation/cache/index.html
index 6580b35..d2146a0 100644
--- a/docs/installation/cache/index.html
+++ b/docs/installation/cache/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -64,7 +64,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/configuring-superset/index.html b/docs/installation/configuring-superset/index.html
index c2f575e..4a74ef8 100644
--- a/docs/installation/configuring-superset/index.html
+++ b/docs/installation/configuring-superset/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -98,7 +98,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/event-logging/index.html b/docs/installation/event-logging/index.html
index 5e18d64..0644142 100644
--- a/docs/installation/event-logging/index.html
+++ b/docs/installation/event-logging/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -51,7 +51,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/installing-superset-from-scratch/index.html b/docs/installation/installing-superset-from-scratch/index.html
index f26f1bf..175a136 100644
--- a/docs/installation/installing-superset-from-scratch/index.html
+++ b/docs/installation/installing-superset-from-scratch/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -56,7 +56,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/installing-superset-using-docker-compose/index.html b/docs/installation/installing-superset-using-docker-compose/index.html
index 1e30af4..7c2cdfd 100644
--- a/docs/installation/installing-superset-using-docker-compose/index.html
+++ b/docs/installation/installing-superset-using-docker-compose/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -71,7 +71,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/networking-settings/index.html b/docs/installation/networking-settings/index.html
index 45ed22e..21e71bf 100644
--- a/docs/installation/networking-settings/index.html
+++ b/docs/installation/networking-settings/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -55,7 +55,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/running-on-kubernetes/index.html b/docs/installation/running-on-kubernetes/index.html
index 92a8b8d..b9ee2e7 100644
--- a/docs/installation/running-on-kubernetes/index.html
+++ b/docs/installation/running-on-kubernetes/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -30,7 +30,7 @@
 dialect to be installed for each datastore you want to connect to.</p><p>See <a href="/docs/databases/installing-database-drivers">Install Database Drivers</a> for more information.</p></div></div><p>The following example installs the Big Query and Elasticsearch database drivers so that you can
 connect to those datasources in your Superset installation:</p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">bootstrapScript</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token scalar string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">  #!/bin/bash</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">  pip install psycopg2==2.9.6 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    sqlalchemy-bigquery==1.6.1 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    elasticsearch-dbapi==0.2.5 &amp;&amp;\</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">  if [ ! -f ~/bootstrap ]; then echo &quot;Running Superset with uid {{ .Values.runAsUser }}&quot; &gt; ~/bootstrap; fi</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="superset_configpy">superset_config.py<a href="#superset_configpy" class="hash-link" aria-label="Direct link to superset_config.py" title="Direct link to superset_config.py">​</a></h4><p>The default <code>superset_config.py</code> is fairly minimal and you will very likely need to extend it. This is done by specifying one or more key/value entries in <code>configOverrides</code>, e.g.:</p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">configOverrides</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">my_override</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token scalar string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    # This will make sure the redirect_uri is properly computed, even with SSL offloading</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    ENABLE_PROXY_FIX = True</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    FEATURE_FLAGS = {</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        &quot;DYNAMIC_PLUGINS&quot;: True</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    }</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Those will be evaluated as Helm templates and therefore will be able to reference other <code>values.yaml</code> variables e.g. <code>{{ .Values.ingress.hosts[0] }}</code> will resolve to your ingress external domain.</p><p>The entire <code>superset_config.py</code> 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.</p><p>Full python files can be provided by running <code>helm upgrade --install --values my-values.yaml --set-file configOverrides.oauth=set_oauth.py</code></p><h4 class="anchor anchorWithStickyNavbar_LWe7" id="environment-variables">Environment Variables<a href="#environment-variables" class="hash-link" aria-label="Direct link to Environment Variables" title="Direct link to Environment Variables">​</a></h4><p>Those can be passed as key/values either with <code>extraEnv</code> or <code>extraSecretEnv</code> if they&#x27;re sensitive. They can then be referenced from <code>superset_config.py</code> using e.g. <code>os.environ.get(&quot;VAR&quot;)</code>.</p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">extraEnv</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SMTP_HOST</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> smtp.gmail.com</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SMTP_USER</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> user@gmail.com</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SMTP_PORT</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;587&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SMTP_MAIL_FROM</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> user@gmail.com</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">extraSecretEnv</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SMTP_PASSWORD</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> xxxx</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">configOverrides</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">smtp</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token scalar string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    import ast</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    SMTP_HOST = os.getenv(&quot;SMTP_HOST&quot;,&quot;localhost&quot;)</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    SMTP_STARTTLS = ast.literal_eval(os.getenv(&quot;SMTP_STARTTLS&quot;, &quot;True&quot;))</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    SMTP_SSL = ast.literal_eval(os.getenv(&quot;SMTP_SSL&quot;, &quot;False&quot;))</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    SMTP_USER = os.getenv(&quot;SMTP_USER&quot;,&quot;superset&quot;)</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    SMTP_PORT = os.getenv(&quot;SMTP_PORT&quot;,25)</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    SMTP_PASSWORD = os.getenv(&quot;SMTP_PASSWORD&quot;,&quot;superset&quot;)</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="system-packages">System packages<a href="#system-packages" class="hash-link" aria-label="Direct link to System packages" title="Direct link to System packages">​</a></h4><p>If new system packages are required, they can be installed before application startup by overriding the container&#x27;s <code>command</code>, e.g.:</p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">supersetWorker</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">command</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> /bin/sh</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">c</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token scalar string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      apt update</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      apt install -y somepackage</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      apt autoremove -yqq --purge</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      apt clean</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token comment" style="color:#999988;font-style:italic"># Run celery worker</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      . </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> .Values.configMountPath </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain">/superset_bootstrap.sh; celery </span><span class="token punctuation" style="color:#393A34">-</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">app=superset.tasks.celery_app</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">app worker</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="data-sources">Data sources<a href="#data-sources" class="hash-link" aria-label="Direct link to Data sources" title="Direct link to Data sources">​</a></h4><p>Data source definitions can be automatically declared by providing key/value yaml definitions in <code>extraConfigs</code>:</p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">extraConfigs</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">import_datasources.yaml</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token scalar string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    databases:</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    - allow_file_upload: true</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      allow_ctas: true</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      allow_cvas: true</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      database_name: example-db</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      extra: &quot;{\r\n    \&quot;metadata_params\&quot;: {},\r\n    \&quot;engine_params\&quot;: {},\r\n    \&quot;\</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        metadata_cache_timeout\&quot;: {},\r\n    \&quot;schemas_allowed_for_file_upload\&quot;: []\r\n\</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        }&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      sqlalchemy_uri: example://example-db.local</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      tables: []</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><p>Those will also be mounted as secrets and can include sensitive parameters.</p><h3 class="anchor anchorWithStickyNavbar_LWe7" id="configuration-examples">Configuration Examples<a href="#configuration-examples" class="hash-link" aria-label="Direct link to Configuration Examples" title="Direct link to Configuration Examples">​</a></h3><h4 class="anchor anchorWithStickyNavbar_LWe7" id="setting-up-oauth">Setting up OAuth<a href="#setting-up-oauth" class="hash-link" aria-label="Direct link to Setting up OAuth" title="Direct link to Setting up OAuth">​</a></h4><div class="theme-admonition theme-admonition-note alert alert--secondary admonition_LlT9"><div class="admonitionHeading_tbUL"><span class="admonitionIcon_kALy"><svg viewBox="0 0 14 16"><path fill-rule="evenodd" d="M6.3 5.69a.942.942 0 0 1-.28-.7c0-.28.09-.52.28-.7.19-.18.42-.28.7-.28.28 0 .52.09.7.28.18.19.28.42.28.7 0 .28-.09.52-.28.7a1 1 0 0 1-.7.3c-.28 0-.52-.11-.7-.3zM8 7.99c-.02-.25-.11-.48-.31-.69-.2-.19-.42-.3-.69-.31H6c-.27.02-.48.13-.69.31-.2.2-.3.44-.31.69h1v3c.02.27.11.5.31.69.2.2.42.31.69.31h1c.27 0 .48-.11.69-.31.2-.19.3-.42.31-.69H8V7.98v.01zM7 2.3c-3.14 0-5.7 2.54-5.7 5.68 0 3.14 2.56 5.7 5.7 5.7s5.7-2.55 5.7-5.7c0-3.15-2.56-5.69-5.7-5.69v.01zM7 .98c3.86 0 7 3.14 7 7s-3.14 7-7 7-7-3.12-7-7 3.14-7 7-7z"></path></svg></span>note</div><div class="admonitionContent_S0QG"><p>OAuth setup requires that the <a href="https://authlib.org/" target="_blank" rel="noopener noreferrer">authlib</a> Python library is installed. This can
 be done using <code>pip</code> by updating the <code>bootstrapScript</code>. See the <a href="#dependencies">Dependencies</a> section
-for more information.</p></div></div><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">extraEnv</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">AUTH_DOMAIN</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> example.com</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">extraSecretEnv</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">GOOGLE_KEY</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> xxxxxxxxxxxx</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">GOOGLE_SECRET</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> xxxxxxxxxxxxxxxxxxxxxxxx</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">configOverrides</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">enable_oauth</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token scalar string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    # This will make sure the redirect_uri is properly computed, even with SSL offloading</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    ENABLE_PROXY_FIX = True</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    from flask_appbuilder.security.manager import AUTH_OAUTH</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    AUTH_TYPE = AUTH_OAUTH</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    OAUTH_PROVIDERS = </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token key atrule" style="color:#00a4db">&quot;name&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;google&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token key atrule" style="color:#00a4db">&quot;icon&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;fa-google&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token key atrule" style="color:#00a4db">&quot;token_key&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;access_token&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token key atrule" style="color:#00a4db">&quot;remote_app&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token key atrule" style="color:#00a4db">&quot;client_id&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> os.getenv(&quot;GOOGLE_KEY&quot;)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token key atrule" style="color:#00a4db">&quot;client_secret&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> os.getenv(&quot;GOOGLE_SECRET&quot;)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token key atrule" style="color:#00a4db">&quot;api_base_url&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;https://www.googleapis.com/oauth2/v2/&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token key atrule" style="color:#00a4db">&quot;client_kwargs&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token key atrule" style="color:#00a4db">&quot;scope&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;email profile&quot;</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token key atrule" style="color:#00a4db">&quot;request_token_url&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> None</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token key atrule" style="color:#00a4db">&quot;access_token_url&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;https://accounts.google.com/o/oauth2/token&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token key atrule" style="color:#00a4db">&quot;authorize_url&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;https://accounts.google.com/o/oauth2/auth&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token key atrule" style="color:#00a4db">&quot;authorize_params&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token key atrule" style="color:#00a4db">&quot;hd&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> os.getenv(&quot;AUTH_DOMAIN&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> &quot;&quot;)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># Map Authlib roles to superset roles</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    AUTH_ROLE_ADMIN = &#x27;Admin&#x27;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    AUTH_ROLE_PUBLIC = &#x27;Public&#x27;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># Will allow user self registration, allowing to create Flask users from Authorized User</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    AUTH_USER_REGISTRATION = True</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># The default user self registration role</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    AUTH_USER_REGISTRATION_ROLE = &quot;Admin&quot;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="enable-alerts-and-reports">Enable Alerts and Reports<a href="#enable-alerts-and-reports" class="hash-link" aria-label="Direct link to Enable Alerts and Reports" title="Direct link to Enable Alerts and Reports">​</a></h4><p>For this, as per the <a href="/docs/installation/email-reports">Alerts and Reports doc</a>, you will need to:</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="install-a-supported-webdriver-in-the-celery-worker">Install a supported webdriver in the Celery worker<a href="#install-a-supported-webdriver-in-the-celery-worker" class="hash-link" aria-label="Direct link to Install a supported webdriver in the Celery worker" title="Direct link to Install a supported webdriver in the Celery worker">​</a></h5><p>This is done either by using a custom image that has the webdriver pre-installed, or installing at startup time by overriding the <code>command</code>. Here&#x27;s a working example for <code>chromedriver</code>:</p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">supersetWorker</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">command</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> /bin/sh</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">c</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token scalar string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      # Install chrome webdriver</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      # See https://github.com/apache/superset/blob/4fa3b6c7185629b87c27fc2c0e5435d458f7b73d/docs/src/pages/docs/installation/email_reports.mdx</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      apt update</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      apt install -y --no-install-recommends ./google-chrome-stable_current_amd64.deb</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      wget https://chromedriver.storage.googleapis.com/88.0.4324.96/chromedriver_linux64.zip</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      unzip chromedriver_linux64.zip</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      chmod +x chromedriver</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      mv chromedriver /usr/bin</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      apt autoremove -yqq --purge</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      apt clean</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      rm -f google-chrome-stable_current_amd64.deb chromedriver_linux64.zip</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token comment" style="color:#999988;font-style:italic"># Run</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      . </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> .Values.configMountPath </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain">/superset_bootstrap.sh; celery </span><span class="token punctuation" style="color:#393A34">-</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">app=superset.tasks.celery_app</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">app worker</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h5 class="anchor anchorWithStickyNavbar_LWe7" id="run-the-celery-beat">Run the Celery beat<a href="#run-the-celery-beat" class="hash-link" aria-label="Direct link to Run the Celery beat" title="Direct link to Run the Celery beat">​</a></h5><p>This pod will trigger the scheduled tasks configured in the alerts and reports UI section:</p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">supersetCeleryBeat</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">enabled</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h5 class="anchor anchorWithStickyNavbar_LWe7" id="configure-the-appropriate-celery-jobs-and-smtpslack-settings">Configure the appropriate Celery jobs and SMTP/Slack settings<a href="#configure-the-appropriate-celery-jobs-and-smtpslack-settings" class="hash-link" aria-label="Direct link to Configure the appropriate Celery jobs and SMTP/Slack settings" title="Direct link to Configure the appropriate Celery jobs and SMTP/Slack settings">​</a></h5><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">extraEnv</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SMTP_HOST</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> smtp.gmail.com</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SMTP_USER</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> user@gmail.com</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SMTP_PORT</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;587&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SMTP_MAIL_FROM</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> user@gmail.com</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">extraSecretEnv</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SLACK_API_TOKEN</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> xoxb</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">xxxx</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">yyyy</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SMTP_PASSWORD</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> xxxx</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">yyyy</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">configOverrides</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">feature_flags</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token scalar string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    import ast</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    FEATURE_FLAGS = </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token key atrule" style="color:#00a4db">&quot;ALERT_REPORTS&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">True</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    SMTP_HOST = os.getenv(&quot;SMTP_HOST&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">&quot;localhost&quot;)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    SMTP_STARTTLS = ast.literal_eval(os.getenv(&quot;SMTP_STARTTLS&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> &quot;True&quot;))</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    SMTP_SSL = ast.literal_eval(os.getenv(&quot;SMTP_SSL&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> &quot;False&quot;))</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    SMTP_USER = os.getenv(&quot;SMTP_USER&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">&quot;superset&quot;)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    SMTP_PORT = os.getenv(&quot;SMTP_PORT&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">25)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    SMTP_PASSWORD = os.getenv(&quot;SMTP_PASSWORD&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">&quot;superset&quot;)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    SMTP_MAIL_FROM = os.getenv(&quot;SMTP_MAIL_FROM&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">&quot;superset@superset.com&quot;)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    SLACK_API_TOKEN = os.getenv(&quot;SLACK_API_TOKEN&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">None)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">celery_conf</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token scalar string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    from celery.schedules import crontab</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">class CeleryConfig</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      broker_url = f&quot;redis</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">env(&#x27;REDIS_HOST&#x27;)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">:</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">env(&#x27;REDIS_PORT&#x27;)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain">/0&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      imports = (</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          &quot;superset.sql_lab&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token string" style="color:#e3116c">&quot;superset.tasks.cache&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token string" style="color:#e3116c">&quot;superset.tasks.scheduler&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      )</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      result_backend = f&quot;redis</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">env(&#x27;REDIS_HOST&#x27;)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">:</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">env(&#x27;REDIS_PORT&#x27;)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain">/0&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      task_annotations = </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">&quot;sql_lab.get_sql_results&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token key atrule" style="color:#00a4db">&quot;rate_limit&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;100/s&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      beat_schedule = </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">&quot;reports.scheduler&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token key atrule" style="color:#00a4db">&quot;task&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;reports.scheduler&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token key atrule" style="color:#00a4db">&quot;schedule&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> crontab(minute=&quot;</span><span class="token important">*&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> hour=&quot;</span><span class="token important">*&quot;)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">&quot;reports.prune_log&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token key atrule" style="color:#00a4db">&quot;task&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;reports.prune_log&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token key atrule" style="color:#00a4db">&#x27;schedule&#x27;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> crontab(minute=0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> hour=0)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">&#x27;cache-warmup-hourly&#x27;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token key atrule" style="color:#00a4db">&quot;task&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;cache-warmup&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token key atrule" style="color:#00a4db">&quot;schedule&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> crontab(minute=&quot;</span><span class="token important">*/30&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> hour=&quot;</span><span class="token important">*&quot;)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token key atrule" style="color:#00a4db">&quot;kwargs&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                  </span><span class="token key atrule" style="color:#00a4db">&quot;strategy_name&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;top_n_dashboards&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                  </span><span class="token key atrule" style="color:#00a4db">&quot;top_n&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">10</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                  </span><span class="token key atrule" style="color:#00a4db">&quot;since&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;7 days ago&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    CELERY_CONFIG = CeleryConfig</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">reports</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token scalar string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    EMAIL_PAGE_RENDER_WAIT = 60</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    WEBDRIVER_BASEURL = &quot;http://{{ template &quot;superset.fullname&quot; . }}:{{ .Values.service.port }}/&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    WEBDRIVER_BASEURL_USER_FRIENDLY = &quot;https://www.example.com/&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    WEBDRIVER_TYPE= &quot;chrome&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    WEBDRIVER_OPTION_ARGS = [</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        &quot;--force-device-scale-factor=2.0&quot;,</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        &quot;--high-dpi-support=2.0&quot;,</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        &quot;--headless&quot;,</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        &quot;--disable-gpu&quot;,</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        &quot;--disable-dev-shm-usage&quot;,</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        # This is required because our process runs as root (in order to install pip packages)</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        &quot;--no-sandbox&quot;,</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        &quot;--disable-setuid-sandbox&quot;,</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        &quot;--disable-extensions&quot;,</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    ]</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="load-the-examples-data-and-dashboards">Load the Examples data and dashboards<a href="#load-the-examples-data-and-dashboards" class="hash-link" aria-label="Direct link to Load the Examples data and dashboards" title="Direct link to Load the Examples data and dashboards">​</a></h4><p>If you are trying Superset out and want some data and dashboards to explore, you can load some examples by creating a <code>my_values.yaml</code> and deploying it as described above in the <strong>Configure your setting overrides</strong> step of the <strong>Running</strong> section.
+for more information.</p></div></div><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">extraEnv</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">AUTH_DOMAIN</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> example.com</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">extraSecretEnv</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">GOOGLE_KEY</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> xxxxxxxxxxxx</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx.apps.googleusercontent.com</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">GOOGLE_SECRET</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> xxxxxxxxxxxxxxxxxxxxxxxx</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">configOverrides</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">enable_oauth</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token scalar string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    # This will make sure the redirect_uri is properly computed, even with SSL offloading</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    ENABLE_PROXY_FIX = True</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    from flask_appbuilder.security.manager import AUTH_OAUTH</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    AUTH_TYPE = AUTH_OAUTH</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    OAUTH_PROVIDERS = </span><span class="token punctuation" style="color:#393A34">[</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token key atrule" style="color:#00a4db">&quot;name&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;google&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token key atrule" style="color:#00a4db">&quot;icon&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;fa-google&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token key atrule" style="color:#00a4db">&quot;token_key&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;access_token&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token key atrule" style="color:#00a4db">&quot;remote_app&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token key atrule" style="color:#00a4db">&quot;client_id&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> os.getenv(&quot;GOOGLE_KEY&quot;)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token key atrule" style="color:#00a4db">&quot;client_secret&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> os.getenv(&quot;GOOGLE_SECRET&quot;)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token key atrule" style="color:#00a4db">&quot;api_base_url&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;https://www.googleapis.com/oauth2/v2/&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token key atrule" style="color:#00a4db">&quot;client_kwargs&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token key atrule" style="color:#00a4db">&quot;scope&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;email profile&quot;</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token key atrule" style="color:#00a4db">&quot;request_token_url&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> None</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token key atrule" style="color:#00a4db">&quot;access_token_url&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;https://accounts.google.com/o/oauth2/token&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token key atrule" style="color:#00a4db">&quot;authorize_url&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;https://accounts.google.com/o/oauth2/auth&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                </span><span class="token key atrule" style="color:#00a4db">&quot;authorize_params&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token key atrule" style="color:#00a4db">&quot;hd&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> os.getenv(&quot;AUTH_DOMAIN&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> &quot;&quot;)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">            </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">]</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># Map Authlib roles to superset roles</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    AUTH_ROLE_ADMIN = &#x27;Admin&#x27;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    AUTH_ROLE_PUBLIC = &#x27;Public&#x27;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># Will allow user self registration, allowing to create Flask users from Authorized User</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    AUTH_USER_REGISTRATION = True</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token comment" style="color:#999988;font-style:italic"># The default user self registration role</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    AUTH_USER_REGISTRATION_ROLE = &quot;Admin&quot;</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="enable-alerts-and-reports">Enable Alerts and Reports<a href="#enable-alerts-and-reports" class="hash-link" aria-label="Direct link to Enable Alerts and Reports" title="Direct link to Enable Alerts and Reports">​</a></h4><p>For this, as per the <a href="/docs/installation/email-reports">Alerts and Reports doc</a>, you will need to:</p><h5 class="anchor anchorWithStickyNavbar_LWe7" id="install-a-supported-webdriver-in-the-celery-worker">Install a supported webdriver in the Celery worker<a href="#install-a-supported-webdriver-in-the-celery-worker" class="hash-link" aria-label="Direct link to Install a supported webdriver in the Celery worker" title="Direct link to Install a supported webdriver in the Celery worker">​</a></h5><p>This is done either by using a custom image that has the webdriver pre-installed, or installing at startup time by overriding the <code>command</code>. Here&#x27;s a working example for <code>chromedriver</code>:</p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">supersetWorker</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">command</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> /bin/sh</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">c</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token scalar string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      # Install chrome webdriver</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      # See https://github.com/apache/superset/blob/4fa3b6c7185629b87c27fc2c0e5435d458f7b73d/docs/src/pages/docs/installation/email_reports.mdx</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      apt-get update</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      apt-get install -y wget</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      wget https://dl.google.com/linux/direct/google-chrome-stable_current_amd64.deb</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      apt-get install -y --no-install-recommends ./google-chrome-stable_current_amd64.deb</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      wget https://chromedriver.storage.googleapis.com/88.0.4324.96/chromedriver_linux64.zip</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      apt-get install -y zip</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      unzip chromedriver_linux64.zip</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      chmod +x chromedriver</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      mv chromedriver /usr/bin</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      apt-get autoremove -yqq --purge</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      apt-get clean</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">      rm -f google-chrome-stable_current_amd64.deb chromedriver_linux64.zip</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token comment" style="color:#999988;font-style:italic"># Run</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      . </span><span class="token punctuation" style="color:#393A34">{</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"> .Values.configMountPath </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain">/superset_bootstrap.sh; celery </span><span class="token punctuation" style="color:#393A34">-</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">app=superset.tasks.celery_app</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">app worker</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h5 class="anchor anchorWithStickyNavbar_LWe7" id="run-the-celery-beat">Run the Celery beat<a href="#run-the-celery-beat" class="hash-link" aria-label="Direct link to Run the Celery beat" title="Direct link to Run the Celery beat">​</a></h5><p>This pod will trigger the scheduled tasks configured in the alerts and reports UI section:</p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">supersetCeleryBeat</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">enabled</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h5 class="anchor anchorWithStickyNavbar_LWe7" id="configure-the-appropriate-celery-jobs-and-smtpslack-settings">Configure the appropriate Celery jobs and SMTP/Slack settings<a href="#configure-the-appropriate-celery-jobs-and-smtpslack-settings" class="hash-link" aria-label="Direct link to Configure the appropriate Celery jobs and SMTP/Slack settings" title="Direct link to Configure the appropriate Celery jobs and SMTP/Slack settings">​</a></h5><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">extraEnv</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SMTP_HOST</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> smtp.gmail.com</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SMTP_USER</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> user@gmail.com</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SMTP_PORT</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;587&quot;</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SMTP_MAIL_FROM</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> user@gmail.com</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">extraSecretEnv</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SLACK_API_TOKEN</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> xoxb</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">xxxx</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">yyyy</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">SMTP_PASSWORD</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> xxxx</span><span class="token punctuation" style="color:#393A34">-</span><span class="token plain">yyyy</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain"></span><span class="token key atrule" style="color:#00a4db">configOverrides</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">feature_flags</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token scalar string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    import ast</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    FEATURE_FLAGS = </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">        </span><span class="token key atrule" style="color:#00a4db">&quot;ALERT_REPORTS&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">True</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    SMTP_HOST = os.getenv(&quot;SMTP_HOST&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">&quot;localhost&quot;)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    SMTP_STARTTLS = ast.literal_eval(os.getenv(&quot;SMTP_STARTTLS&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> &quot;True&quot;))</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    SMTP_SSL = ast.literal_eval(os.getenv(&quot;SMTP_SSL&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> &quot;False&quot;))</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    SMTP_USER = os.getenv(&quot;SMTP_USER&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">&quot;superset&quot;)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    SMTP_PORT = os.getenv(&quot;SMTP_PORT&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">25)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    SMTP_PASSWORD = os.getenv(&quot;SMTP_PASSWORD&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">&quot;superset&quot;)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    SMTP_MAIL_FROM = os.getenv(&quot;SMTP_MAIL_FROM&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">&quot;superset@superset.com&quot;)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    SLACK_API_TOKEN = os.getenv(&quot;SLACK_API_TOKEN&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain">None)</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">celery_conf</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token scalar string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    from celery.schedules import crontab</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    </span><span class="token key atrule" style="color:#00a4db">class CeleryConfig</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      broker_url = f&quot;redis</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">env(&#x27;REDIS_HOST&#x27;)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">:</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">env(&#x27;REDIS_PORT&#x27;)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain">/0&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      imports = (</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          &quot;superset.sql_lab&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token string" style="color:#e3116c">&quot;superset.tasks.cache&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token string" style="color:#e3116c">&quot;superset.tasks.scheduler&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      )</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      result_backend = f&quot;redis</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain">//</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">env(&#x27;REDIS_HOST&#x27;)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">:</span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain">env(&#x27;REDIS_PORT&#x27;)</span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain">/0&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      task_annotations = </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">&quot;sql_lab.get_sql_results&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token key atrule" style="color:#00a4db">&quot;rate_limit&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;100/s&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      beat_schedule = </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">&quot;reports.scheduler&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token key atrule" style="color:#00a4db">&quot;task&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;reports.scheduler&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token key atrule" style="color:#00a4db">&quot;schedule&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> crontab(minute=&quot;</span><span class="token important">*&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> hour=&quot;</span><span class="token important">*&quot;)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">&quot;reports.prune_log&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token key atrule" style="color:#00a4db">&quot;task&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;reports.prune_log&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token key atrule" style="color:#00a4db">&#x27;schedule&#x27;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> crontab(minute=0</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> hour=0)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token key atrule" style="color:#00a4db">&#x27;cache-warmup-hourly&#x27;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token key atrule" style="color:#00a4db">&quot;task&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;cache-warmup&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token key atrule" style="color:#00a4db">&quot;schedule&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> crontab(minute=&quot;</span><span class="token important">*/30&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> hour=&quot;</span><span class="token important">*&quot;)</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token key atrule" style="color:#00a4db">&quot;kwargs&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">{</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                  </span><span class="token key atrule" style="color:#00a4db">&quot;strategy_name&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;top_n_dashboards&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                  </span><span class="token key atrule" style="color:#00a4db">&quot;top_n&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">10</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">                  </span><span class="token key atrule" style="color:#00a4db">&quot;since&quot;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;7 days ago&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">              </span><span class="token punctuation" style="color:#393A34">}</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">          </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">      </span><span class="token punctuation" style="color:#393A34">}</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain" style="display:inline-block"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">    CELERY_CONFIG = CeleryConfig</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">reports</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token punctuation" style="color:#393A34">|</span><span class="token scalar string" style="color:#e3116c"></span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    EMAIL_PAGE_RENDER_WAIT = 60</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    WEBDRIVER_BASEURL = &quot;http://{{ template &quot;superset.fullname&quot; . }}:{{ .Values.service.port }}/&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    WEBDRIVER_BASEURL_USER_FRIENDLY = &quot;https://www.example.com/&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    WEBDRIVER_TYPE= &quot;chrome&quot;</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    WEBDRIVER_OPTION_ARGS = [</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        &quot;--force-device-scale-factor=2.0&quot;,</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        &quot;--high-dpi-support=2.0&quot;,</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        &quot;--headless&quot;,</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        &quot;--disable-gpu&quot;,</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        &quot;--disable-dev-shm-usage&quot;,</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        # This is required because our process runs as root (in order to install pip packages)</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        &quot;--no-sandbox&quot;,</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        &quot;--disable-setuid-sandbox&quot;,</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">        &quot;--disable-extensions&quot;,</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c">    ]</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div><h4 class="anchor anchorWithStickyNavbar_LWe7" id="load-the-examples-data-and-dashboards">Load the Examples data and dashboards<a href="#load-the-examples-data-and-dashboards" class="hash-link" aria-label="Direct link to Load the Examples data and dashboards" title="Direct link to Load the Examples data and dashboards">​</a></h4><p>If you are trying Superset out and want some data and dashboards to explore, you can load some examples by creating a <code>my_values.yaml</code> and deploying it as described above in the <strong>Configure your setting overrides</strong> step of the <strong>Running</strong> section.
 To load the examples, add the following to the <code>my_values.yaml</code> file:</p><div class="language-yaml codeBlockContainer_Ckt0 theme-code-block" style="--prism-color:#393A34;--prism-background-color:#f6f8fa"><div class="codeBlockContent_biex"><pre tabindex="0" class="prism-code language-yaml codeBlock_bY9V thin-scrollbar"><code class="codeBlockLines_e6Vv"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">init</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"></span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">  </span><span class="token key atrule" style="color:#00a4db">loadExamples</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token boolean important" style="color:#36acaa">true</span><br></span></code></pre><div class="buttonGroup__atx"><button type="button" aria-label="Copy code to clipboard" title="Copy" class="clean-btn"><span class="copyButtonIcons_eSgA" aria-hidden="true"><svg viewBox="0 0 24 24" class="copyButtonIcon_y97N"><path fill="currentColor" d="M19,21H8V7H19M19,5H8A2,2 0 0,0 6,7V21A2,2 0 0,0 8,23H19A2,2 0 0,0 21,21V7A2,2 0 0,0 19,5M16,1H4A2,2 0 0,0 2,3V17H4V3H16V1Z"></path></svg><svg viewBox="0 0 24 24" class="copyButtonSuccessIcon_LjdS"><path fill="currentColor" d="M21,7L9,19L3.5,13.5L4.91,12.09L9,16.17L19.59,5.59L21,7Z"></path></svg></span></button></div></div></div></div><footer class="theme-doc-footer docusaurus-mt-lg"><div class="theme-doc-footer-edit-meta-row row"><div class="col"><a href="https://github.com/apache/superset/tree/master/docs/docs/installation/running-on-kubernetes.mdx" target="_blank" rel="noreferrer noopener" class="theme-edit-this-page"><svg fill="currentColor" height="20" width="20" viewBox="0 0 40 40" class="iconEdit_Z9Sw" aria-hidden="true"><g><path d="m34.5 11.7l-3 3.1-6.3-6.3 3.1-3q0.5-0.5 1.2-0.5t1.1 0.5l3.9 3.9q0.5 0.4 0.5 1.1t-0.5 1.2z m-29.5 17.1l18.4-18.5 6.3 6.3-18.4 18.4h-6.3v-6.2z"></path></g></svg>Edit this page</a></div><div class="col lastUpdated_vwxv"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages"><a class="pagination-nav__link pagination-nav__link--prev" href="/docs/installation/installing-superset-from-scratch"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">Installing From Scratch</div></a><a class="pagination-nav__link pagination-nav__link--next" href="/docs/installation/configuring-superset"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Configuring Superset</div></a></nav></div></div><div class="col col--3"><div class="tableOfContents_bqdL thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#installing-on-kubernetes" class="table-of-contents__link toc-highlight">Installing on Kubernetes</a><ul><li><a href="#prerequisites" class="table-of-contents__link toc-highlight">Prerequisites</a></li><li><a href="#running" class="table-of-contents__link toc-highlight">Running</a></li><li><a href="#important-settings" class="table-of-contents__link toc-highlight">Important settings</a></li><li><a href="#configuration-examples" class="table-of-contents__link toc-highlight">Configuration Examples</a></li></ul></li></ul></div></div></div></div></main></div></div><footer class="footer"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="footer__copyright">
           <div class="footer__applitools">
             We use &nbsp;<a href="https://applitools.com/" target="_blank" rel="nofollow"><img src="/img/applitools.png" title="Applitools"></a>
@@ -53,7 +53,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/setup-ssh-tunneling/index.html b/docs/installation/setup-ssh-tunneling/index.html
index 79e73a3..c9fe623 100644
--- a/docs/installation/setup-ssh-tunneling/index.html
+++ b/docs/installation/setup-ssh-tunneling/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/sql-templating/index.html b/docs/installation/sql-templating/index.html
index 0cd80e5..e298189 100644
--- a/docs/installation/sql-templating/index.html
+++ b/docs/installation/sql-templating/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -80,7 +80,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/installation/upgrading-superset/index.html b/docs/installation/upgrading-superset/index.html
index 1fc1ad6..d85e4d2 100644
--- a/docs/installation/upgrading-superset/index.html
+++ b/docs/installation/upgrading-superset/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -47,7 +47,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/intro/index.html b/docs/intro/index.html
index 4e44d8b..ae71b41 100644
--- a/docs/intro/index.html
+++ b/docs/intro/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -57,7 +57,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/miscellaneous/chart-params/index.html b/docs/miscellaneous/chart-params/index.html
index 7ff1d46..7048d11 100644
--- a/docs/miscellaneous/chart-params/index.html
+++ b/docs/miscellaneous/chart-params/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/miscellaneous/country-map-tools/index.html b/docs/miscellaneous/country-map-tools/index.html
index dd2058f..3c57dc4 100644
--- a/docs/miscellaneous/country-map-tools/index.html
+++ b/docs/miscellaneous/country-map-tools/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -51,7 +51,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/miscellaneous/importing-exporting-datasources/index.html b/docs/miscellaneous/importing-exporting-datasources/index.html
index 9162ed3..add2bcf 100644
--- a/docs/miscellaneous/importing-exporting-datasources/index.html
+++ b/docs/miscellaneous/importing-exporting-datasources/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -56,7 +56,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/miscellaneous/issue-codes/index.html b/docs/miscellaneous/issue-codes/index.html
index 4c6991c..82e617f 100644
--- a/docs/miscellaneous/issue-codes/index.html
+++ b/docs/miscellaneous/issue-codes/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -74,7 +74,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/miscellaneous/native-filter-migration/index.html b/docs/miscellaneous/native-filter-migration/index.html
index d88c249..7c4c9a6 100644
--- a/docs/miscellaneous/native-filter-migration/index.html
+++ b/docs/miscellaneous/native-filter-migration/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -63,7 +63,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/miscellaneous/timezones/index.html b/docs/miscellaneous/timezones/index.html
index d76e788..a91231a 100644
--- a/docs/miscellaneous/timezones/index.html
+++ b/docs/miscellaneous/timezones/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/quickstart/index.html b/docs/quickstart/index.html
index 5ec12e3..24d2517 100644
--- a/docs/quickstart/index.html
+++ b/docs/quickstart/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -53,7 +53,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/security/cves/index.html b/docs/security/cves/index.html
index 95f647c..dfff8f1 100644
--- a/docs/security/cves/index.html
+++ b/docs/security/cves/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/docs/security/index.html b/docs/security/index.html
index 4124be7..60db17e 100644
--- a/docs/security/index.html
+++ b/docs/security/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -144,7 +144,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/index.html b/index.html
index 55994dd..cefdefa 100644
--- a/index.html
+++ b/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/markdown-page/index.html b/markdown-page/index.html
index 49fa032..31d966d 100644
--- a/markdown-page/index.html
+++ b/markdown-page/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file
diff --git a/search/index.html b/search/index.html
index 150b3ae..d967641 100644
--- a/search/index.html
+++ b/search/index.html
@@ -18,7 +18,7 @@
 
 <script src="/script/matomo.js"></script>
 <script src="https://www.bugherd.com/sidebarv2.js?apikey=enilpiu7bgexxsnoqfjtxa" async></script><link rel="stylesheet" href="/assets/css/styles.773c72a9.css">
-<link rel="preload" href="/assets/js/runtime~main.634e21ea.js" as="script">
+<link rel="preload" href="/assets/js/runtime~main.ae110d3b.js" as="script">
 <link rel="preload" href="/assets/js/main.637c0bfc.js" as="script">
 </head>
 <body class="navigation-with-keyboard">
@@ -45,7 +45,7 @@
           <!-- telemetry/analytics pixel: -->
           <img referrerpolicy="no-referrer-when-downgrade" src="https://static.scarf.sh/a.png?x-pxid=39ae6855-95fc-4566-86e5-360d542b0a68">
           </div></div></div></footer></div>
-<script src="/assets/js/runtime~main.634e21ea.js"></script>
+<script src="/assets/js/runtime~main.ae110d3b.js"></script>
 <script src="/assets/js/main.637c0bfc.js"></script>
 </body>
 </html>
\ No newline at end of file