blob: 6bcdee5d090049def2fd26986d61bed74ee5aeeb [file] [log] [blame]
<!doctype html>
<html class="docs-version-current" lang="en" dir="ltr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width,initial-scale=1">
<meta name="generator" content="Docusaurus v2.0.0-beta.17">
<link rel="preconnect" href="https://www.google-analytics.com">
<script>window.ga=window.ga||function(){(ga.q=ga.q||[]).push(arguments)},ga.l=+new Date,ga("create","G-133LHD3B3N","auto"),ga("set","anonymizeIp",!0),ga("send","pageview")</script>
<script async src="https://www.google-analytics.com/analytics.js"></script>
<link rel="preconnect" href="https://www.google-analytics.com">
<link rel="preconnect" href="https://www.googletagmanager.com">
<script async src="https://www.googletagmanager.com/gtag/js?id=G-133LHD3B3N"></script>
<script>function gtag(){dataLayer.push(arguments)}window.dataLayer=window.dataLayer||[],gtag("js",new Date),gtag("config","G-133LHD3B3N",{anonymize_ip:!0})</script>
<link rel="search" type="application/opensearchdescription+xml" title="Superset" href="/opensearch.xml">
<script src="/script/matomo.js"></script><title data-rh="true">Running on Kubernetes | Superset</title><meta data-rh="true" name="twitter:card" content="summary_large_image"><meta data-rh="true" property="og:url" content="https://superset.apache.org/docs/installation/running-on-kubernetes"><meta data-rh="true" name="docusaurus_locale" content="en"><meta data-rh="true" name="docusaurus_version" content="current"><meta data-rh="true" name="docusaurus_tag" content="docs-default-current"><meta data-rh="true" name="docsearch:language" content="en"><meta data-rh="true" name="docsearch:version" content="current"><meta data-rh="true" name="docsearch:docusaurus_tag" content="docs-default-current"><meta data-rh="true" property="og:title" content="Running on Kubernetes | Superset"><meta data-rh="true" name="description" content="Running on Kubernetes"><meta data-rh="true" property="og:description" content="Running on Kubernetes"><link data-rh="true" rel="icon" href="/img/favicon.ico"><link data-rh="true" rel="canonical" href="https://superset.apache.org/docs/installation/running-on-kubernetes"><link data-rh="true" rel="alternate" href="https://superset.apache.org/docs/installation/running-on-kubernetes" hreflang="en"><link data-rh="true" rel="alternate" href="https://superset.apache.org/docs/installation/running-on-kubernetes" hreflang="x-default"><link data-rh="true" rel="preconnect" href="https://WR5FASX5ED-dsn.algolia.net" crossorigin="anonymous"><link rel="stylesheet" href="/assets/css/styles.ba1779ef.css">
<link rel="preload" href="/assets/js/runtime~main.756b743f.js" as="script">
<link rel="preload" href="/assets/js/main.f67bdcb9.js" as="script">
</head>
<body class="navigation-with-keyboard">
<script>!function(){function t(t){document.documentElement.setAttribute("data-theme",t)}var e=function(){var t=null;try{t=localStorage.getItem("theme")}catch(t){}return t}();t(null!==e?e:"light")}()</script><div id="__docusaurus">
<div role="region"><a href="#" class="skipToContent_ZgBM">Skip to main content</a></div><nav class="navbar navbar--fixed-top"><div class="navbar__inner"><div class="navbar__items"><button aria-label="Navigation bar toggle" class="navbar__toggle clean-btn" type="button" tabindex="0"><svg width="30" height="30" viewBox="0 0 30 30" aria-hidden="true"><path stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width="2" d="M4 7h22M4 15h22M4 23h22"></path></svg></button><a class="navbar__brand" href="/"><div class="navbar__logo"><img src="/img/superset-logo-horiz.svg" alt="Superset Logo" class="themedImage_W2Cr themedImage--light_TfLj"><img src="/img/superset-logo-horiz-dark.svg" alt="Superset Logo" class="themedImage_W2Cr themedImage--dark_oUvU"></div></a><div class="navbar__item dropdown dropdown--hoverable"><a href="#" class="navbar__link">Documentation</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/docs/intro">Getting Started</a></li><li><a class="dropdown__link" href="/docs/intro">Tutorial</a></li><li><a class="dropdown__link" href="/docs/frequently-asked-questions">FAQ</a></li></ul></div><div class="navbar__item dropdown dropdown--hoverable"><a href="#" class="navbar__link">Community</a><ul class="dropdown__menu"><li><a class="dropdown__link" href="/community">Resources</a></li><li><a href="https://github.com/apache/superset" target="_blank" rel="noopener noreferrer" class="dropdown__link"><span>GitHub<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_I5OW"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></span></a></li><li><a href="https://join.slack.com/t/apache-superset/shared_invite/zt-16jvzmoi8-sI7jKWp~xc2zYRe~NqiY9Q" target="_blank" rel="noopener noreferrer" class="dropdown__link"><span>Slack<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_I5OW"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></span></a></li><li><a href="https://lists.apache.org/list.html?dev@superset.apache.org" target="_blank" rel="noopener noreferrer" class="dropdown__link"><span>Mailing List<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_I5OW"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></span></a></li><li><a href="https://stackoverflow.com/questions/tagged/superset+apache-superset" target="_blank" rel="noopener noreferrer" class="dropdown__link"><span>Stack Overflow<svg width="12" height="12" aria-hidden="true" viewBox="0 0 24 24" class="iconExternalLink_I5OW"><path fill="currentColor" d="M21 13v10h-21v-19h12v2h-10v15h17v-8h2zm3-12h-10.988l4.035 4-6.977 7.07 2.828 2.828 6.977-7.07 4.125 4.172v-11z"></path></svg></span></a></li></ul></div></div><div class="navbar__items navbar__items--right"><a href="https://github.com/apache/superset" target="_blank" rel="noopener noreferrer" class="navbar__item navbar__link" class="github-logo-container"></a><div class="searchBox_qEbK"><button type="button" class="DocSearch DocSearch-Button" aria-label="Search"><span class="DocSearch-Button-Container"><svg width="20" height="20" class="DocSearch-Search-Icon" viewBox="0 0 20 20"><path d="M14.386 14.386l4.0877 4.0877-4.0877-4.0877c-2.9418 2.9419-7.7115 2.9419-10.6533 0-2.9419-2.9418-2.9419-7.7115 0-10.6533 2.9418-2.9419 7.7115-2.9419 10.6533 0 2.9419 2.9418 2.9419 7.7115 0 10.6533z" stroke="currentColor" fill="none" fill-rule="evenodd" stroke-linecap="round" stroke-linejoin="round"></path></svg><span class="DocSearch-Button-Placeholder">Search</span></span><span class="DocSearch-Button-Keys"></span></button></div></div></div><div role="presentation" class="navbar-sidebar__backdrop"></div></nav><div class="main-wrapper docs-wrapper docs-doc-page"><div class="docPage_P2Lg"><button aria-label="Scroll back to top" class="clean-btn theme-back-to-top-button backToTopButton_RiI4" type="button"></button><aside class="theme-doc-sidebar-container docSidebarContainer_rKC_"><div class="sidebar_CW9Y"><nav class="menu thin-scrollbar menu_SkdO"><ul class="theme-doc-sidebar-menu menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/intro">Introduction</a></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist menu__link--active" href="/docs/installation/installing-superset-using-docker-compose">Installation and Configuration</a></div><ul style="display:block;overflow:visible;height:auto" class="menu__list"><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/installing-superset-using-docker-compose">Installing Locally Using Docker Compose</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/installing-superset-from-scratch">Installing From Scratch</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/configuring-superset">Configuring Superset</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/networking-settings">Additional Networking Settings</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/cache">Caching</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/event-logging">Event Logging</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/upgrading-superset">Upgrading Superset</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/async-queries-celery">Async Queries via Celery</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/alerts-reports">Alerts and Reports</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link" tabindex="0" href="/docs/installation/sql-templating">SQL Templating</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-2 menu__list-item"><a class="menu__link menu__link--active" aria-current="page" tabindex="0" href="/docs/installation/running-on-kubernetes">Running on Kubernetes</a></li></ul></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/databases/installing-database-drivers">Connecting to Databases</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/creating-charts-dashboards/creating-your-first-dashboard">Creating Charts and Dashboards</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/miscellaneous/country-map-tools">Miscellaneous</a></div></li><li class="theme-doc-sidebar-item-category theme-doc-sidebar-item-category-level-1 menu__list-item menu__list-item--collapsed"><div class="menu__list-item-collapsible"><a class="menu__link menu__link--sublist" href="/docs/contributing/contributing-page">Contributing</a></div></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/frequently-asked-questions">Frequently Asked Questions</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/api">API</a></li><li class="theme-doc-sidebar-item-link theme-doc-sidebar-item-link-level-1 menu__list-item"><a class="menu__link" href="/docs/security">Security</a></li></ul></nav></div></aside><main class="docMainContainer_TCnq"><div class="container padding-top--md padding-bottom--lg"><div class="row"><div class="col docItemCol_DM6M"><div class="docItemContainer_vinB"><article><nav class="theme-doc-breadcrumbs breadcrumbsContainer_Xlws" aria-label="breadcrumbs"><ul class="breadcrumbs"><li class="breadcrumbs__item"><a class="breadcrumbs__link breadcrumbsItemLink_e5ie" href="/">🏠</a></li><li class="breadcrumbs__item"><span class="breadcrumbs__link breadcrumbsItemLink_e5ie">Installation and Configuration</span></li><li class="breadcrumbs__item breadcrumbs__item--active"><a class="breadcrumbs__link breadcrumbsItemLink_e5ie" href="/docs/installation/running-on-kubernetes">Running on Kubernetes</a></li></ul></nav><div class="tocCollapsible_jdIR theme-doc-toc-mobile tocMobile_TmEX"><button type="button" class="clean-btn tocCollapsibleButton_Fzxq">On this page</button></div><div class="theme-doc-markdown markdown"><h2 class="anchor anchorWithStickyNavbar_mojV" id="running-on-kubernetes">Running on Kubernetes<a class="hash-link" href="#running-on-kubernetes" title="Direct link to heading"></a></h2><p>Running on Kubernetes is supported with the provided <a href="https://helm.sh/" target="_blank" rel="noopener noreferrer">Helm</a> chart found in the official <a href="https://apache.github.io/superset/index.yaml" target="_blank" rel="noopener noreferrer">Superset helm repository</a>.</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="prerequisites">Prerequisites<a class="hash-link" href="#prerequisites" title="Direct link to heading"></a></h3><ul><li>A Kubernetes cluster</li><li>Helm installed</li></ul><h3 class="anchor anchorWithStickyNavbar_mojV" id="running">Running<a class="hash-link" href="#running" title="Direct link to heading"></a></h3><ol><li>Add the Superset helm repository</li></ol><div class="codeBlockContainer_I0IT language-sh theme-code-block"><div class="codeBlockContent_wNvx sh"><pre tabindex="0" class="prism-code language-sh codeBlock_jd64 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">helm repo add superset https://apache.github.io/superset</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">&quot;superset&quot; has been added to your repositories</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_wuS7 clean-btn">Copy</button></div></div><ol start="2"><li>View charts in repo</li></ol><div class="codeBlockContainer_I0IT language-sh theme-code-block"><div class="codeBlockContent_wNvx sh"><pre tabindex="0" class="prism-code language-sh codeBlock_jd64 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">helm search repo superset</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">NAME CHART VERSION APP VERSION DESCRIPTION</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">superset/superset 0.1.1 1.0 Apache Superset is a modern, enterprise-ready b...</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_wuS7 clean-btn">Copy</button></div></div><ol start="3"><li>Configure your setting overrides</li></ol><p>Just like any typical Helm chart, you&#x27;ll need to craft a <code>values.yaml</code> file that would define/override any of the values exposed into the default <a href="https://github.com/apache/superset/tree/master/helm/superset/values.yaml" target="_blank" rel="noopener noreferrer">values.yaml</a>, or from any of the dependent charts it depends on:</p><ul><li><a href="https://artifacthub.io/packages/helm/bitnami/redis" target="_blank" rel="noopener noreferrer">bitnami/redis</a></li><li><a href="https://artifacthub.io/packages/helm/bitnami/postgresql" target="_blank" rel="noopener noreferrer">bitnami/postgresql</a></li></ul><p>More info down below on some important overrides you might need.</p><ol start="4"><li>Install and run</li></ol><div class="codeBlockContainer_I0IT language-sh theme-code-block"><div class="codeBlockContent_wNvx sh"><pre tabindex="0" class="prism-code language-sh codeBlock_jd64 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">helm upgrade --install --values my-values.yaml superset superset/superset</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_wuS7 clean-btn">Copy</button></div></div><p>You should see various pods popping up, such as:</p><div class="codeBlockContainer_I0IT language-sh theme-code-block"><div class="codeBlockContent_wNvx sh"><pre tabindex="0" class="prism-code language-sh codeBlock_jd64 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token plain">kubectl get pods</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">NAME READY STATUS RESTARTS AGE</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">superset-celerybeat-7cdcc9575f-k6xmc 1/1 Running 0 119s</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">superset-f5c9c667-dw9lp 1/1 Running 0 4m7s</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">superset-f5c9c667-fk8bk 1/1 Running 0 4m11s</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">superset-init-db-zlm9z 0/1 Completed 0 111s</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">superset-postgresql-0 1/1 Running 0 6d20h</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">superset-redis-master-0 1/1 Running 0 6d20h</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">superset-worker-75b48bbcc-jmmjr 1/1 Running 0 4m8s</span><br></span><span class="token-line" style="color:#393A34"><span class="token plain">superset-worker-75b48bbcc-qrq49 1/1 Running 0 4m12s</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_wuS7 clean-btn">Copy</button></div></div><p>The exact list will depend on some of your specific configuration overrides but you should generally expect:</p><ul><li>N <code>superset-xxxx-yyyy</code> and <code>superset-worker-xxxx-yyyy</code> pods (depending on your <code>replicaCount</code> value)</li><li>1 <code>superset-postgresql-0</code> depending on your postgres settings</li><li>1 <code>superset-redis-master-0</code> depending on your redis settings</li><li>1 <code>superset-celerybeat-xxxx-yyyy</code> pod if you have <code>supersetCeleryBeat.enabled = true</code> in your values overrides</li></ul><ol><li>Access it</li></ol><p>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:</p><ul><li>Configure the Service as a <code>LoadBalancer</code> or <code>NodePort</code></li><li>Set up an <code>Ingress</code> for it - the chart includes a definition, but will need to be tuned to your needs (hostname, tls, annotations etc...)</li><li>Run <code>kubectl port-forward superset-xxxx-yyyy :8088</code> to directly tunnel one pod&#x27;s port into your localhost</li></ul><p>Depending how you configured external access, the URL will vary. Once you&#x27;ve identified the appropriate URL you can log in with:</p><ul><li>user: <code>admin</code></li><li>password: <code>admin</code></li></ul><h3 class="anchor anchorWithStickyNavbar_mojV" id="important-settings">Important settings<a class="hash-link" href="#important-settings" title="Direct link to heading"></a></h3><h4 class="anchor anchorWithStickyNavbar_mojV" id="security-settings">Security settings<a class="hash-link" href="#security-settings" title="Direct link to heading"></a></h4><p>Default security settings and passwords are included but you <strong>SHOULD</strong> override those with your own, in particular:</p><div class="codeBlockContainer_I0IT language-yaml theme-code-block"><div class="codeBlockContent_wNvx yaml"><pre tabindex="0" class="prism-code language-yaml codeBlock_jd64 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_mRuA"><span class="token-line" style="color:#393A34"><span class="token key atrule" style="color:#00a4db">postgresql</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">postgresqlPassword</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> superset</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_wuS7 clean-btn">Copy</button></div></div><p>Make sure, you set a unique strong complex alphanumeric string for your SECRET_KEY and use a tool to help you generate
a sufficiently random sequence.</p><ul><li>To generate a good key you can run, <code>openssl rand -base64 42</code></li></ul><div class="codeBlockContainer_I0IT language-yaml theme-code-block"><div class="codeBlockContent_wNvx yaml"><pre tabindex="0" class="prism-code language-yaml codeBlock_jd64 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_mRuA"><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">secret</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"> SECRET_KEY = &#x27;YOUR_OWN_RANDOM_GENERATED_SECRET_KEY&#x27;</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_wuS7 clean-btn">Copy</button></div></div><p>If you want to change the previous secret key then you should rotate the keys.
Default secret key for kubernetes deployment is <code>thisISaSECRET_1234</code></p><div class="codeBlockContainer_I0IT language-yaml theme-code-block"><div class="codeBlockContent_wNvx yaml"><pre tabindex="0" class="prism-code language-yaml codeBlock_jd64 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_mRuA"><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"> PREVIOUS_SECRET_KEY = &#x27;YOUR_PREVIOUS_SECRET_KEY&#x27;</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c"> SECRET_KEY = &#x27;YOUR_OWN_RANDOM_GENERATED_SECRET_KEY&#x27;</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">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">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"> . {{ .Values.configMountPath }}/superset_bootstrap.sh</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c"> superset re-encrypt-secrets</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c"> . {{ .Values.configMountPath }}/superset_init.sh</span><br></span></code></pre><button type="button" aria-label="Copy code to clipboard" class="copyButton_wuS7 clean-btn">Copy</button></div></div><h4 class="anchor anchorWithStickyNavbar_mojV" id="dependencies">Dependencies<a class="hash-link" href="#dependencies" title="Direct link to heading"></a></h4><p>Install additional packages and do any other bootstrap configuration in this script. For production clusters it&#x27;s
recommended to build own image with this step done in CI. The following example installs the Big Query and Elasticsearch
database drivers so that you can connect to those datasources in your Superset installation.</p><div class="codeBlockContainer_I0IT language-yaml theme-code-block"><div class="codeBlockContent_wNvx yaml"><pre tabindex="0" class="prism-code language-yaml codeBlock_jd64 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_mRuA"><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.1 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c"> redis==3.2.1 \</span><br></span><span class="token-line" style="color:#393A34"><span class="token scalar string" style="color:#e3116c"> pybigquery==2.26.0 \</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><button type="button" aria-label="Copy code to clipboard" class="copyButton_wuS7 clean-btn">Copy</button></div></div><h4 class="anchor anchorWithStickyNavbar_mojV" id="superset_configpy">superset_config.py<a class="hash-link" href="#superset_configpy" title="Direct link to heading"></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="codeBlockContainer_I0IT language-yaml theme-code-block"><div class="codeBlockContent_wNvx yaml"><pre tabindex="0" class="prism-code language-yaml codeBlock_jd64 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_mRuA"><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><button type="button" aria-label="Copy code to clipboard" class="copyButton_wuS7 clean-btn">Copy</button></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_mojV" id="environment-variables">Environment Variables<a class="hash-link" href="#environment-variables" title="Direct link to heading"></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="codeBlockContainer_I0IT language-yaml theme-code-block"><div class="codeBlockContent_wNvx yaml"><pre tabindex="0" class="prism-code language-yaml codeBlock_jd64 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_mRuA"><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><button type="button" aria-label="Copy code to clipboard" class="copyButton_wuS7 clean-btn">Copy</button></div></div><h4 class="anchor anchorWithStickyNavbar_mojV" id="system-packages">System packages<a class="hash-link" href="#system-packages" title="Direct link to heading"></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="codeBlockContainer_I0IT language-yaml theme-code-block"><div class="codeBlockContent_wNvx yaml"><pre tabindex="0" class="prism-code language-yaml codeBlock_jd64 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_mRuA"><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><button type="button" aria-label="Copy code to clipboard" class="copyButton_wuS7 clean-btn">Copy</button></div></div><h4 class="anchor anchorWithStickyNavbar_mojV" id="data-sources">Data sources<a class="hash-link" href="#data-sources" title="Direct link to heading"></a></h4><p>Data source definitions can be automatically declared by providing key/value yaml definitions in <code>extraConfigs</code>:</p><div class="codeBlockContainer_I0IT language-yaml theme-code-block"><div class="codeBlockContent_wNvx yaml"><pre tabindex="0" class="prism-code language-yaml codeBlock_jd64 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_mRuA"><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><button type="button" aria-label="Copy code to clipboard" class="copyButton_wuS7 clean-btn">Copy</button></div></div><p>Those will also be mounted as secrets and can include sensitive parameters.</p><h3 class="anchor anchorWithStickyNavbar_mojV" id="configuration-examples">Configuration Examples<a class="hash-link" href="#configuration-examples" title="Direct link to heading"></a></h3><h4 class="anchor anchorWithStickyNavbar_mojV" id="setting-up-oauth">Setting up OAuth<a class="hash-link" href="#setting-up-oauth" title="Direct link to heading"></a></h4><div class="codeBlockContainer_I0IT language-yaml theme-code-block"><div class="codeBlockContent_wNvx yaml"><pre tabindex="0" class="prism-code language-yaml codeBlock_jd64 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_mRuA"><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><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> AUTH_DB)</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><button type="button" aria-label="Copy code to clipboard" class="copyButton_wuS7 clean-btn">Copy</button></div></div><h4 class="anchor anchorWithStickyNavbar_mojV" id="enable-alerts-and-reports">Enable Alerts and Reports<a class="hash-link" href="#enable-alerts-and-reports" title="Direct link to heading"></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_mojV" id="install-a-supported-webdriver-in-the-celery-worker">Install a supported webdriver in the Celery worker<a class="hash-link" href="#install-a-supported-webdriver-in-the-celery-worker" title="Direct link to heading"></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="codeBlockContainer_I0IT language-yaml theme-code-block"><div class="codeBlockContent_wNvx yaml"><pre tabindex="0" class="prism-code language-yaml codeBlock_jd64 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_mRuA"><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><button type="button" aria-label="Copy code to clipboard" class="copyButton_wuS7 clean-btn">Copy</button></div></div><h5 class="anchor anchorWithStickyNavbar_mojV" id="run-the-celery-beat">Run the Celery beat<a class="hash-link" href="#run-the-celery-beat" title="Direct link to heading"></a></h5><p>This pod will trigger the scheduled tasks configured in the alerts and reports UI section:</p><div class="codeBlockContainer_I0IT language-yaml theme-code-block"><div class="codeBlockContent_wNvx yaml"><pre tabindex="0" class="prism-code language-yaml codeBlock_jd64 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_mRuA"><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><button type="button" aria-label="Copy code to clipboard" class="copyButton_wuS7 clean-btn">Copy</button></div></div><h5 class="anchor anchorWithStickyNavbar_mojV" id="configure-the-appropriate-celery-jobs-and-smtpslack-settings">Configure the appropriate Celery jobs and SMTP/Slack settings<a class="hash-link" href="#configure-the-appropriate-celery-jobs-and-smtpslack-settings" title="Direct link to heading"></a></h5><div class="codeBlockContainer_I0IT language-yaml theme-code-block"><div class="codeBlockContent_wNvx yaml"><pre tabindex="0" class="prism-code language-yaml codeBlock_jd64 thin-scrollbar" style="color:#393A34;background-color:#f6f8fa"><code class="codeBlockLines_mRuA"><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(object)</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 = (&#x27;superset.sql_lab&#x27;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;superset.tasks&quot;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&quot;superset.tasks.thumbnails&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"> 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">&#x27;sql_lab.get_sql_results&#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">&#x27;rate_limit&#x27;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;100/s&#x27;</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;email_reports.send&#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">&#x27;rate_limit&#x27;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;1/s&#x27;</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;time_limit&#x27;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">600</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;soft_time_limit&#x27;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token number" style="color:#36acaa">600</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;ignore_result&#x27;</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 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">&#x27;reports.scheduler&#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">&#x27;task&#x27;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;reports.scheduler&#x27;</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=&#x27;</span><span class="token important">*&#x27;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> hour=&#x27;</span><span class="token important">*&#x27;)</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;reports.prune_log&#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">&#x27;task&#x27;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;reports.prune_log&#x27;</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">&#x27;task&#x27;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;cache-warmup&#x27;</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=&#x27;</span><span class="token important">*/30&#x27;</span><span class="token punctuation" style="color:#393A34">,</span><span class="token plain"> hour=&#x27;</span><span class="token important">*&#x27;)</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;kwargs&#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">&#x27;strategy_name&#x27;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;top_n_dashboards&#x27;</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;top_n&#x27;</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">&#x27;since&#x27;</span><span class="token punctuation" style="color:#393A34">:</span><span class="token plain"> </span><span class="token string" style="color:#e3116c">&#x27;7 days ago&#x27;</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><button type="button" aria-label="Copy code to clipboard" class="copyButton_wuS7 clean-btn">Copy</button></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_dcUD" 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_foO9"></div></div></footer></article><nav class="pagination-nav docusaurus-mt-lg" aria-label="Docs pages navigation"><div class="pagination-nav__item"><a class="pagination-nav__link" href="/docs/installation/sql-templating"><div class="pagination-nav__sublabel">Previous</div><div class="pagination-nav__label">SQL Templating</div></a></div><div class="pagination-nav__item pagination-nav__item--next"><a class="pagination-nav__link" href="/docs/databases/installing-database-drivers"><div class="pagination-nav__sublabel">Next</div><div class="pagination-nav__label">Installing Database Drivers</div></a></div></nav></div></div><div class="col col--3"><div class="tableOfContents_cNA8 thin-scrollbar theme-doc-toc-desktop"><ul class="table-of-contents table-of-contents__left-border"><li><a href="#running-on-kubernetes" class="table-of-contents__link toc-highlight">Running 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 footer--dark"><div class="container container-fluid"><div class="footer__bottom text--center"><div class="footer__copyright">Copyright © 2022,
The <a href="https://www.apache.org/" target="_blank" rel="noreferrer">Apache Software Foundation</a>,
Licensed under the Apache <a href="https://apache.org/licenses/LICENSE-2.0" target="_blank" rel="noreferrer">License</a>. <br>
<small>Apache Superset, Apache, Superset, the Superset logo, and the Apache feather logo are either registered trademarks or trademarks of The Apache Software Foundation. All other products or name brands are trademarks of their respective holders, including The Apache Software Foundation.
<a href="https://www.apache.org/" target="_blank">Apache Software Foundation</a> resources</small><br>
<small>
<a href="https://www.apache.org/security/" target="_blank" rel="noreferrer">Security</a>&nbsp;|&nbsp;
<a href="https://www.apache.org/foundation/sponsorship.html" target="_blank" rel="noreferrer">Donate</a>&nbsp;|&nbsp;
<a href="https://www.apache.org/foundation/thanks.html" target="_blank" rel="noreferrer">Thanks</a>&nbsp;|&nbsp;
<a href="https://apache.org/events/current-event" target="_blank" rel="noreferrer">Events</a>&nbsp;|&nbsp;
<a href="https://apache.org/licenses/" target="_blank" rel="noreferrer">License</a>
</small></div></div></div></footer></div>
<script src="/assets/js/runtime~main.756b743f.js"></script>
<script src="/assets/js/main.f67bdcb9.js"></script>
</body>
</html>