/contrib-helm-chart

Community maintained Redash Helm Chart

Primary LanguageMustacheApache License 2.0Apache-2.0

Redash

Redash is an open source tool built for teams to query, visualize and collaborate.

Introduction

This chart bootstraps a Redash deployment on a Kubernetes cluster using the Helm package manager.

This is a contributed project developed by volunteers and not officially supported by Redash.

Current chart version is 3.0.0

Prerequisites

  • At least 3 GB of RAM available on your cluster
  • Kubernetes 1.19+ - chart is tested with latest 3 stable versions
  • Helm 3 (Helm 2 depreciated)
  • PV provisioner support in the underlying infrastructure

Installing the Chart

To install the chart with the release name my-release, add the chart repository:

$ helm repo add redash https://getredash.github.io/contrib-helm-chart/

Create a values file with required secrets (store this securely!):

$ cat > my-values.yaml <<- EOM
redash:
  cookieSecret: $(openssl rand -base64 32)
  secretKey: $(openssl rand -base64 32)
postgresql:
  postgresqlPassword: $(openssl rand -base64 32)
redis:
  password: $(openssl rand -base64 32)
EOM

Install the chart:

$ helm upgrade --install -f my-values.yaml my-release redash/redash

The command deploys Redash on the Kubernetes cluster in the default configuration. The configuration section and and default values.yaml lists the parameters that can be configured during installation.

Tip: List all releases using helm list

Uninstalling the Chart

To uninstall/delete the my-release deployment:

$ helm delete my-release

The command removes all the Kubernetes components associated with the chart and deletes the release.

Requirements

Repository Name Version
https://charts.bitnami.com/bitnami postgresql ^8.10.14
https://charts.bitnami.com/bitnami redis ^10.8.2

Configuration

The following table lists the configurable parameters of the Redash chart and their default values.

Values

Key Type Default Description
adhocWorker.affinity object {} Affinity for ad-hoc worker pod assignment ref
adhocWorker.env object {"QUEUES":"queries","WORKERS_COUNT":2} Redash ad-hoc worker specific envrionment variables.
adhocWorker.nodeSelector object {} Node labels for ad-hoc worker pod assignment ref
adhocWorker.podAnnotations object {} Annotations for adhoc worker pod assignment ref
adhocWorker.podLabels object {} Labels for adhoc worker pod assignment ref
adhocWorker.podSecurityContext object {} Security contexts for ad-hoc worker pod assignment ref
adhocWorker.replicaCount int 1 Number of ad-hoc worker pods to run
adhocWorker.resources string nil Ad-hoc worker resource requests and limits ref
adhocWorker.securityContext object {}
adhocWorker.tolerations list [] Tolerations for ad-hoc worker pod assignment ref
adhocWorker.volumeMounts list [] VolumeMounts for ad-hoc worker pod assignment ref
adhocWorker.volumes list [] Volumes for ad-hoc pod worker assignment ref
env object {"PYTHONUNBUFFERED":0} Redash global envrionment variables - applied to both server and worker containers.
externalPostgreSQL string nil External PostgreSQL configuration. To use an external PostgreSQL instead of the automatically deployed postgresql chart: set postgresql.enabled to false then uncomment and configure the externalPostgreSQL connection URL (e.g. postgresql://user:pass@host:5432/database)
externalPostgreSQLSecret object {} Read external PostgreSQL configuration from a secret. This should point at a secret file with a single key which specifyies the connection string.
externalRedis string nil External Redis configuration. To use an external Redis instead of the automatically deployed redis chart: set redis.enabled to false then uncomment and configure the externalRedis connection URL (e.g. redis://user:pass@host:6379/database).
externalRedisSecret object {} Read external Redis configuration from a secret. This should point at a secret file with a single key which specifyies the connection string.
fullnameOverride string ""
genericWorker.affinity object {} Affinity for generic worker pod assignment ref
genericWorker.env object {"QUEUES":"periodic,emails,default","WORKERS_COUNT":1} Redash generic worker specific envrionment variables.
genericWorker.nodeSelector object {} Node labels for generic worker pod assignment ref
genericWorker.podAnnotations object {} Annotations for generic worker pod assignment ref
genericWorker.podLabels object {} Labels for generic worker pod assignment ref
genericWorker.podSecurityContext object {} Security contexts for generic worker pod assignment ref
genericWorker.replicaCount int 1 Number of generic worker pods to run
genericWorker.resources string nil Generic worker resource requests and limits ref
genericWorker.securityContext object {}
genericWorker.tolerations list [] Tolerations for generic worker pod assignment ref
genericWorker.volumeMounts list [] VolumeMounts for generic worker pod assignment ref
genericWorker.volumes list [] Volumes for generic worker pod assignment ref
hookInstallJob.affinity object {} Affinity for scheduled worker pod assignment ref
hookInstallJob.nodeSelector object {} Node labels for scheduled worker pod assignment ref
hookInstallJob.podAnnotations object {} Annotations for scheduled worker pod assignment ref
hookInstallJob.podSecurityContext object {} Security contexts for scheduled worker pod assignment ref
hookInstallJob.resources string nil Scheduled worker resource requests and limits ref
hookInstallJob.securityContext object {}
hookInstallJob.tolerations list [] Tolerations for server pod assignment ref
hookInstallJob.ttlSecondsAfterFinished int 600 ttl for install job ref
hookUpgradeJob.affinity object {} Affinity for scheduled worker pod assignment ref
hookUpgradeJob.nodeSelector object {} Node labels for scheduled worker pod assignment ref
hookUpgradeJob.podAnnotations object {} Annotations for scheduled worker pod assignment ref
hookUpgradeJob.podSecurityContext object {} Security contexts for scheduled worker pod assignment ref
hookUpgradeJob.resources string nil Scheduled worker resource requests and limits ref
hookUpgradeJob.securityContext object {}
hookUpgradeJob.tolerations list [] Tolerations for server pod assignment ref
hookUpgradeJob.ttlSecondsAfterFinished int 600 ttl for install job ref
image.pullPolicy string "IfNotPresent"
image.repository string "redash/redash" Redash image name used for server and worker pods
image.tag string "10.0.0.b50363" Redash image tag
imagePullSecrets list [] Name(s) of secrets to use if pulling images from a private registry
ingress.annotations object {} Ingress annotations configuration
ingress.enabled bool false Enable ingress controller resource
ingress.hosts list [{"host":"chart-example.local","paths":[]}] Ingress resource hostnames and path mappings
ingress.ingressClassName string "" Sets the ingress controller class name to use.
ingress.pathType string "Prefix" How ingress paths should be treated.
ingress.tls list [] Ingress TLS configuration
nameOverride string ""
postgresql.enabled bool true Whether to deploy a PostgreSQL server to satisfy the applications database requirements. To use an external PostgreSQL set this to false and configure the externalPostgreSQL parameter.
postgresql.image.tag string "9.6.17-debian-10-r3" Bitnami supported version close to the one specified in Redash setup docker-compose.yml
postgresql.persistence.accessMode string "ReadWriteOnce" Use PostgreSQL volume as ReadOnly or ReadWrite
postgresql.persistence.enabled bool true Use a PVC to persist PostgreSQL data (when postgresql chart enabled)
postgresql.persistence.size string "10Gi" PVC Storage Request size for PostgreSQL volume
postgresql.persistence.storageClass string ""
postgresql.postgresqlDatabase string "redash" PostgreSQL database name (when postgresql chart enabled)
postgresql.postgresqlPassword string nil REQUIRED: PostgreSQL password for redash user (when postgresql chart enabled)
postgresql.postgresqlUsername string "redash" PostgreSQL username for redash user (when postgresql chart enabled)
postgresql.service.port int 5432
postgresql.service.type string "ClusterIP"
redash.additionalDestinations string "" REDASH_ADDITIONAL_DESTINATIONS value.
redash.additionalQueryRunners string "" REDASH_ADDITIONAL_QUERY_RUNNERS value.
redash.adhocQueryTimeLimit string None REDASH_ADHOC_QUERY_TIME_LIMIT value. Time limit for adhoc queries (in seconds).
redash.alertsDefaultMailSubjectTemplate string ({state}) {alert_name} REDASH_ALERTS_DEFAULT_MAIL_SUBJECT_TEMPLATE value.
redash.allowScriptsInUserInput string false REDASH_ALLOW_SCRIPTS_IN_USER_INPUT value. Disable sanitization of text input, allowing full html.
redash.authType string api_key REDASH_AUTH_TYPE value.
redash.bigqueryHttpTimeout string 600 REDASH_BIGQUERY_HTTP_TIMEOUT value.
redash.celeryBackend string CELERY_BROKER REDASH_CELERY_BACKEND value.
redash.celeryBroker string REDIS_URL REDASH_CELERY_BROKER value.
redash.celeryTaskResultExpires string 3600 * 4 REDASH_CELERY_TASK_RESULT_EXPIRES value. How many seconds to keep celery task results in cache (in seconds).
redash.cookieSecret string "" REQUIRED REDASH_COOKIE_SECRET value. Stored as a Secret value.
redash.corsAccessControlAllowCredentials string false REDASH_CORS_ACCESS_CONTROL_ALLOW_CREDENTIALS value.
redash.corsAccessControlAllowHeaders string Content-Type REDASH_CORS_ACCESS_CONTROL_ALLOW_HEADERS value.
redash.corsAccessControlAllowOrigin string "" REDASH_CORS_ACCESS_CONTROL_ALLOW_ORIGIN value.
redash.corsAccessControlRequestMethod string GET, POST, PUT REDASH_CORS_ACCESS_CONTROL_REQUEST_METHOD value.
redash.dashboardRefreshIntervals string 60,300,600,1800,3600,43200,86400 REDASH_DASHBOARD_REFRESH_INTERVALS value.
redash.dateFormat string DD/MM/YY REDASH_DATE_FORMAT value.
redash.disabledQueryRunners string "" REDASH_DISABLED_QUERY_RUNNERS value.
redash.enabledDestinations string ”,”.join(default_destinations) REDASH_ENABLED_DESTINATIONS value.
redash.enabledQueryRunners string ”,”.join(default_query_runners) REDASH_ENABLED_QUERY_RUNNERS value.
redash.enforceHttps string false REDASH_ENFORCE_HTTPS value.
redash.eventReportingWebhooks string "" REDASH_EVENT_REPORTING_WEBHOOKS value.
redash.featureAllowCustomJsVisualizations string false REDASH_FEATURE_ALLOW_CUSTOM_JS_VISUALIZATIONS value.
redash.featureAutoPublishNamedQueries string true REDASH_FEATURE_AUTO_PUBLISH_NAMED_QUERIES value.
redash.featureDisableRefreshQueries string false REDASH_FEATURE_DISABLE_REFRESH_QUERIES value. Disable scheduled query execution.
redash.featureDumbRecents string false REDASH_FEATURE_DUMB_RECENTS value.
redash.featureExtendedAlertOptions string false REDASH_FEATURE_EXTENDED_ALERT_OPTIONS value. Disable/enable custom template for alert.
redash.featureShowPermissionsControl string false REDASH_FEATURE_SHOW_PERMISSIONS_CONTROL value.
redash.featureShowQueryResultsCount string true REDASH_FEATURE_SHOW_QUERY_RESULTS_COUNT value. Disable/enable showing count of query results in status.
redash.googleClientId string "" REDASH_GOOGLE_CLIENT_ID value.
redash.googleClientSecret string "" REDASH_GOOGLE_CLIENT_SECRET value. Stored as a Secret value.
redash.host string "" REDASH_HOST value.
redash.invitationTokenMaxAge string 60 _ 60 _ 24 * 7 REDASH_INVITATION_TOKEN_MAX_AGE value.
redash.jobExpiryTime string 3600 * 12 REDASH_JOB_EXPIRY_TIME value.
redash.jwtAuthAlgorithms string HS256,RS256,ES256 REDASH_JWT_AUTH_ALGORITHMS value.
redash.jwtAuthAudience string "" REDASH_JWT_AUTH_AUDIENCE value.
redash.jwtAuthCookieName string "" REDASH_JWT_AUTH_COOKIE_NAME value.
redash.jwtAuthHeaderName string "" REDASH_JWT_AUTH_HEADER_NAME value.
redash.jwtAuthIssuer string "" REDASH_JWT_AUTH_ISSUER value.
redash.jwtAuthPublicCertsUrl string "" REDASH_JWT_AUTH_PUBLIC_CERTS_URL value.
redash.jwtLoginEnabled string false REDASH_JWT_LOGIN_ENABLED value.
redash.ldapBindDn string None REDASH_LDAP_BIND_DN value.
redash.ldapBindDnPassword string "" REDASH_LDAP_BIND_DN_PASSWORD value. Stored as a Secret value.
redash.ldapCustomUsernamePrompt string LDAP/AD/SSO username: REDASH_LDAP_CUSTOM_USERNAME_PROMPT value.
redash.ldapDisplayNameKey string displayName REDASH_LDAP_DISPLAY_NAME_KEY value.
redash.ldapEmailKey string mail REDASH_LDAP_EMAIL_KEY value.
redash.ldapLoginEnabled string false REDASH_LDAP_LOGIN_ENABLED value.
redash.ldapSearchDn string REDASH_SEARCH_DN REDASH_LDAP_SEARCH_DN value.
redash.ldapSearchTemplate string (cn=%(username)s) REDASH_LDAP_SEARCH_TEMPLATE value.
redash.ldapUrl string None REDASH_LDAP_URL value.
redash.limiterStorage string REDIS_URL REDASH_LIMITER_STORAGE value.
redash.logLevel string INFO REDASH_LOG_LEVEL value.
redash.mailAsciiAttachments string false REDASH_MAIL_ASCII_ATTACHMENTS value.
redash.mailDefaultSender string None REDASH_MAIL_DEFAULT_SENDER value.
redash.mailMaxEmails string None REDASH_MAIL_MAX_EMAILS value.
redash.mailPassword string None REDASH_MAIL_PASSWORD value. Stored as a Secret value.
redash.mailPort string 25 REDASH_MAIL_PORT value.
redash.mailServer string localhost REDASH_MAIL_SERVER value.
redash.mailUseSsl string false REDASH_MAIL_USE_SSL value.
redash.mailUseTls string false REDASH_MAIL_USE_TLS value.
redash.mailUsername string None REDASH_MAIL_USERNAME value.
redash.multiOrg string false REDASH_MULTI_ORG value.
redash.passwordLoginEnabled string true REDASH_PASSWORD_LOGIN_ENABLED value.
redash.proxiesCount string 1 REDASH_PROXIES_COUNT value.
redash.queryRefreshIntervals string 60, 300, 600, 900, 1800, 3600, 7200, 10800, 14400, 18000, 21600, 25200, 28800, 32400, 36000, 39600, 43200, 86400, 604800, 1209600, 2592000 REDASH_QUERY_REFRESH_INTERVALS value.
redash.queryResultsCleanupCount string 100 REDASH_QUERY_RESULTS_CLEANUP_COUNT value.
redash.queryResultsCleanupEnabled string true REDASH_QUERY_RESULTS_CLEANUP_ENABLED value.
redash.queryResultsCleanupMaxAge string 7 REDASH_QUERY_RESULTS_CLEANUP_MAX_AGE value.
redash.remoteUserHeader string X-Forwarded-Remote-User REDASH_REMOTE_USER_HEADER value.
redash.remoteUserLoginEnabled string false REDASH_REMOTE_USER_LOGIN_ENABLED value.
redash.samlEntityId string "" REDASH_SAML_ENTITY_ID value.
redash.samlMetadataUrl string "" REDASH_SAML_METADATA_URL value.
redash.samlNameidFormat string "" REDASH_SAML_NAMEID_FORMAT value.
redash.samlSchemeOverride string "" REDASH_SAML_SCHEME_OVERRIDE value. This setting will allow you to override the saml auth url scheme that gets constructed by flask. this is a useful feature if, for example, you're behind a proxy protocol enabled tcp load balancer (aws elb that terminates ssl) and your nginx proxy or similar adds a x-forwarded-proto of http even though your redash url for saml auth is https..
redash.scheduledQueryTimeLimit string None REDASH_SCHEDULED_QUERY_TIME_LIMIT value. Time limit for scheduled queries (in seconds).
redash.schemaRunTableSizeCalculations string false REDASH_SCHEMA_RUN_TABLE_SIZE_CALCULATIONS value.
redash.schemasRefreshQueue string celery REDASH_SCHEMAS_REFRESH_QUEUE value. The celery queue for refreshing the data source schemas.
redash.schemasRefreshSchedule string 30 REDASH_SCHEMAS_REFRESH_SCHEDULE value. How often to refresh the data sources schemas (in minutes).
redash.secretKey string "" REQUIRED REDASH_SECRET_KEY value. Secret key used for data encryption. Stored as a Secret value.
redash.sentryDsn string "" REDASH_SENTRY_DSN value.
redash.sqlAlchemyEnablePoolPrePing string true SQLALCHEMY_ENABLE_POOL_PRE_PING value, controls whether the database connection that's in the pool will be checked by pinging before being used or not. See https://docs.sqlalchemy.org/en/13/core/pooling.html#sqlalchemy.pool.Pool.params.pre_ping
redash.staticAssetsPath string ”../client/dist/” REDASH_STATIC_ASSETS_PATH value.
redash.statsdHost string 127.0.0.1 REDASH_STATSD_HOST value.
redash.statsdPort string 8125 REDASH_STATSD_PORT value.
redash.statsdPrefix string redash REDASH_STATSD_PREFIX value.
redash.statsdUseTags string false REDASH_STATSD_USE_TAGS value. Whether to use tags in statsd metrics (influxdb’s format).
redash.throttleLoginPattern string 50/hour REDASH_THROTTLE_LOGIN_PATTERN value.
redash.versionCheck string true REDASH_VERSION_CHECK value.
redash.webWorkers string 4 REDASH_WEB_WORKERS value. How many processes will gunicorn spawn to handle web requests.
redis.cluster.enabled bool false
redis.databaseNumber int 0 Enable Redis clustering (when redis chart enabled)
redis.enabled bool true Whether to deploy a Redis server to satisfy the applications database requirements. To use an external Redis set this to false and configure the externalRedis parameter.
redis.master.port int 6379 Redis master port to use (when redis chart enabled)
scheduledWorker.affinity object {} Affinity for scheduled worker pod assignment ref
scheduledWorker.env object {"QUEUES":"scheduled_queries,schemas","WORKERS_COUNT":1} Redash scheduled worker specific envrionment variables.
scheduledWorker.nodeSelector object {} Node labels for scheduled worker pod assignment ref
scheduledWorker.podAnnotations object {} Annotations for scheduled worker pod assignment ref
scheduledWorker.podLabels object {} Labels for scheduled worker pod assignment ref
scheduledWorker.podSecurityContext object {} Security contexts for scheduled worker pod assignment ref
scheduledWorker.replicaCount int 1 Number of scheduled worker pods to run
scheduledWorker.resources string nil Scheduled worker resource requests and limits ref
scheduledWorker.securityContext object {}
scheduledWorker.tolerations list [] Tolerations for scheduled worker pod assignment ref
scheduledWorker.volumeMounts list [] VolumeMounts for scheduled worker pod assignment ref
scheduledWorker.volumes list [] Volumes for scheduled pod worker assignment ref
scheduler.affinity object {} Affinity for scheduler pod assignment ref
scheduler.env object {} Redash scheduler specific envrionment variables.
scheduler.nodeSelector object {} Node labels for scheduler pod assignment ref
scheduler.podAnnotations object {} Annotations for scheduler pod assignment ref
scheduler.podLabels object {} Labels for scheduler pod assignment ref
scheduler.podSecurityContext object {} Security contexts for scheduler pod assignment ref
scheduler.replicaCount int 1 Number of scheduler pods to run
scheduler.resources string nil scheduler resource requests and limits ref
scheduler.securityContext object {}
scheduler.tolerations list [] Tolerations for scheduler pod assignment ref
scheduler.volumeMounts list [] VolumeMounts for scheduler pod assignment ref
scheduler.volumes list [] Volumes for scheduler pod assignment ref
server.affinity object {} Affinity for server pod assignment ref
server.env object {} Redash server specific environment variables Don't use this for variables that are in the configuration above, however.
server.httpPort int 5000 Server container port (only useful if you are using a customized image)
server.nodeSelector object {} Node labels for server pod assignment ref
server.podAnnotations object {} Annotations for server pod assignment ref
server.podLabels object {} Labels for server pod assignment ref
server.podSecurityContext object {} Security contexts for server pod assignment ref
server.replicaCount int 1 Number of server pods to run
server.resources object {} Server resource requests and limits ref
server.securityContext object {}
server.tolerations list [] Tolerations for server pod assignment ref
server.volumeMounts list [] VolumeMounts for server pod assignment ref
server.volumes list [] Volumes for server pod assignment ref
service.annotations object {} Annotations to add to the service
service.loadBalancerIP string nil Specific IP address to use for cloud providers such as Azure Kubernetes Service ref
service.port int 80 Service external port
service.type string "ClusterIP" Kubernetes Service type
serviceAccount.annotations object {} Annotations to add to the service account
serviceAccount.create bool true Specifies whether a service account should be created
serviceAccount.name string nil The name of the service account to use. If not set and create is true, a name is generated using the fullname template

Upgrading

  • See the changelog for major changes in each release
  • The project will use the semver specification for chart version numbers (chart versions will not match Redash versions, since we may need to update the chart more than once for the same Redash release)
  • Always back up your database before upgrading!
  • Schema migrations will be run automatically after each upgrade

To upgrade a release named my-release:

helm repo update
helm upgrade --reuse-values my-release redash/redash

Below are notes on manual configuration changes or steps needed for major chart version updates.

From 2.x to 3.x

  • The Redash version is updated from v8 to v10 (v9 never had a stable release)
  • The upgrade should be automatic, but please test on a staging environment first!
  • There are now additional "genericworker" and "scheduler" deployments, with associated configuration in values.yaml
  • 3.x and higher will not run with Redash v8 - if you have overriden the image you will need to update that
  • This chart now requires Kubernetes 1.19+
  • Helm 2 is now depreciated and support will be removed in a future version

From 1.x to 2.x

  • There are 3 required secrets (see above) that must now be specified in your release
  • The server.env is now depreciated (except for non-standard variables such as PYTHON_*) to allow for better management of Redash configuration and secret values - any existing configuration should be migrated to the new values

From pre-release to 1.x

  • The values.yaml structure has several changes
  • The Redash, PostgreSQL and Redis versions have all been updated
  • Due to these changes you will likely need to dump the database and reload it into a fresh install
  • The chart now has it's own repo: https://getredash.github.io/contrib-helm-chart/

License

This chart uses the Apache 2 license.

Contributing

Contributions are welcome.