feat(helm): Support for flower and websocket containers (#21806)

This commit is contained in:
Yann Jouanique 2022-10-27 22:03:21 +02:00 committed by GitHub
parent 7e3e13321b
commit 06da7bf65c
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
18 changed files with 1120 additions and 899 deletions

View File

@ -44,3 +44,4 @@ jobs:
CT_CHART_DIRS: helm
CT_LINT_CONF: lintconf.yaml
CT_SINCE: HEAD
CT_CHART_REPOS: bitnami=https://charts.bitnami.com/bitnami

4
.markdownlint.json Normal file
View File

@ -0,0 +1,4 @@
{
"no-bare-urls": false,
"line-length": false
}

9
helm/superset/Chart.lock Normal file
View File

@ -0,0 +1,9 @@
dependencies:
- name: postgresql
repository: https://charts.bitnami.com/bitnami
version: 11.1.22
- name: redis
repository: https://charts.bitnami.com/bitnami
version: 16.3.1
digest: sha256:f80cc4ec2bb6f327d348bc15e9192cc6ab2163781c1e35f85720565a36a1cb14
generated: "2022-10-13T16:59:44.305764+02:00"

View File

@ -18,17 +18,24 @@ apiVersion: v2
appVersion: "1.0"
description: Apache Superset is a modern, enterprise-ready business intelligence web application
name: superset
icon: https://artifacthub.io/image/68c1d717-0e97-491f-b046-754e46f46922@2x
home: https://superset.apache.org/
keywords:
- business intelligence
- data science
sources:
- https://github.com/apache/superset
maintainers:
- name: craig-rueda
email: craig@craigrueda.com
url: https://github.com/craig-rueda
version: 0.7.4
version: 0.7.5
dependencies:
- name: postgresql
version: 11.1.22
repository: https://charts.bitnami.com/bitnami
condition: postgresql.enabled
- name: redis
version: 16.3.1
repository: https://charts.bitnami.com/bitnami
condition: redis.enabled
- name: postgresql
version: 11.1.22
repository: https://charts.bitnami.com/bitnami
condition: postgresql.enabled
- name: redis
version: 16.3.1
repository: https://charts.bitnami.com/bitnami
condition: redis.enabled

249
helm/superset/README.md Normal file
View File

@ -0,0 +1,249 @@
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
# superset
![Version: 0.7.5](https://img.shields.io/badge/Version-0.7.5-informational?style=flat-square)
Apache Superset is a modern, enterprise-ready business intelligence web application
**Homepage:** <https://superset.apache.org/>
## Source Code
* <https://github.com/apache/superset>
## TL;DR
```console
helm repo add superset http://apache.github.io/superset/
helm install my-superset superset/superset
```
## Requirements
| Repository | Name | Version |
|------------|------|---------|
| https://charts.bitnami.com/bitnami | postgresql | 11.1.22 |
| https://charts.bitnami.com/bitnami | redis | 16.3.1 |
## Values
| Key | Type | Default | Description |
|-----|------|---------|-------------|
| affinity | object | `{}` | |
| bootstrapScript | string | see `values.yaml` | Install additional packages and do any other bootstrap configuration in this script For production clusters it's recommended to build own image with this step done in CI |
| configFromSecret | string | `"{{ template \"superset.fullname\" . }}-config"` | The name of the secret which we will use to generate a superset_config.py file Note: this secret must have the key superset_config.py in it and can include other files as well |
| configMountPath | string | `"/app/pythonpath"` | |
| configOverrides | object | `{}` | A dictionary of overrides to append at the end of superset_config.py - the name does not matter WARNING: the order is not guaranteed Files can be passed as helm --set-file configOverrides.my-override=my-file.py |
| configOverridesFiles | object | `{}` | Same as above but the values are files |
| envFromSecret | string | `"{{ template \"superset.fullname\" . }}-env"` | The name of the secret which we will use to populate env vars in deployed pods This can be useful for secret keys, etc. |
| envFromSecrets | list | `[]` | This can be a list of templated strings |
| extraConfigMountPath | string | `"/app/configs"` | |
| extraConfigs | object | `{}` | Extra files to mount on `/app/pythonpath` |
| extraEnv | object | `{}` | Extra environment variables that will be passed into pods |
| extraEnvRaw | list | `[]` | Extra environment variables in RAW format that will be passed into pods |
| extraSecretEnv | object | `{}` | Extra environment variables to pass as secrets |
| extraSecrets | object | `{}` | Extra files to mount on `/app/pythonpath` as secrets |
| extraVolumeMounts | list | `[]` | |
| extraVolumes | list | `[]` | |
| hostAliases | list | `[]` | Custom hostAliases for all superset pods # https://kubernetes.io/docs/tasks/network/customize-hosts-file-for-pods/ |
| image.pullPolicy | string | `"IfNotPresent"` | |
| image.repository | string | `"apache/superset"` | |
| image.tag | string | `"latest"` | |
| imagePullSecrets | list | `[]` | |
| ingress.annotations | object | `{}` | |
| ingress.enabled | bool | `false` | |
| ingress.hosts[0] | string | `"chart-example.local"` | |
| ingress.path | string | `"/"` | |
| ingress.pathType | string | `"ImplementationSpecific"` | |
| ingress.tls | list | `[]` | |
| init.adminUser.email | string | `"admin@superset.com"` | |
| init.adminUser.firstname | string | `"Superset"` | |
| init.adminUser.lastname | string | `"Admin"` | |
| init.adminUser.password | string | `"admin"` | |
| init.adminUser.username | string | `"admin"` | |
| init.command | list | a `superset_init.sh` command | Command |
| init.containerSecurityContext | object | `{}` | |
| init.createAdmin | bool | `true` | |
| init.enabled | bool | `true` | |
| init.initContainers | list | a container waiting for postgres | List of initContainers |
| init.initscript | string | a script to create admin user and initailize roles | A Superset init script |
| init.loadExamples | bool | `false` | |
| init.podAnnotations | object | `{}` | |
| init.podSecurityContext | object | `{}` | |
| init.resources | object | `{}` | |
| initImage.pullPolicy | string | `"IfNotPresent"` | |
| initImage.repository | string | `"jwilder/dockerize"` | |
| initImage.tag | string | `"latest"` | |
| nodeSelector | object | `{}` | |
| postgresql | object | see `values.yaml` | Configuration values for the postgresql dependency. ref: https://github.com/kubernetes/charts/blob/master/stable/postgresql/README.md |
| redis | object | see `values.yaml` | Configuration values for the Redis dependency. ref: https://github.com/bitnami/charts/blob/master/bitnami/redis More documentation can be found here: https://artifacthub.io/packages/helm/bitnami/redis |
| resources | object | `{}` | |
| runAsUser | int | `0` | User ID directive. This user must have enough permissions to run the bootstrap script Running containers as root is not recommended in production. Change this to another UID - e.g. 1000 to be more secure |
| service.annotations | object | `{}` | |
| service.loadBalancerIP | string | `nil` | |
| service.port | int | `8088` | |
| service.type | string | `"ClusterIP"` | |
| serviceAccount.annotations | object | `{}` | |
| serviceAccount.create | bool | `false` | Create custom service account for Superset. If create: true and name is not provided, `superset.fullname` will be used. |
| supersetCeleryBeat.command | list | a `celery beat` command | Command |
| supersetCeleryBeat.containerSecurityContext | object | `{}` | |
| supersetCeleryBeat.deploymentAnnotations | object | `{}` | Annotations to be added to supersetCeleryBeat deployment |
| supersetCeleryBeat.enabled | bool | `false` | This is only required if you intend to use alerts and reports |
| supersetCeleryBeat.forceReload | bool | `false` | If true, forces deployment to reload on each upgrade |
| supersetCeleryBeat.initContainers | list | a container waiting for postgres | List of init containers |
| supersetCeleryBeat.podAnnotations | object | `{}` | Annotations to be added to supersetCeleryBeat pods |
| supersetCeleryBeat.podLabels | object | `{}` | Labels to be added to supersetCeleryBeat pods |
| supersetCeleryBeat.podSecurityContext | object | `{}` | |
| supersetCeleryBeat.resources | object | `{}` | Resource settings for the CeleryBeat pods - these settings overwrite might existing values from the global resources object defined above. |
| supersetCeleryFlower.command | list | a `celery flower` command | Command |
| supersetCeleryFlower.containerSecurityContext | object | `{}` | |
| supersetCeleryFlower.deploymentAnnotations | object | `{}` | Annotations to be added to supersetCeleryBeat deployment |
| supersetCeleryFlower.enabled | bool | `false` | Enables a Celery flower deployment (management UI to monitor celery jobs) WARNING: on superset 1.x, this requires a Superset image that has `flower<1.0.0` installed (which is NOT the case of the default images) flower>=1.0.0 requires Celery 5+ which Superset 1.5 does not support |
| supersetCeleryFlower.initContainers | list | a container waiting for postgres and redis | List of init containers |
| supersetCeleryFlower.livenessProbe.failureThreshold | int | `3` | |
| supersetCeleryFlower.livenessProbe.httpGet.path | string | `"/api/workers"` | |
| supersetCeleryFlower.livenessProbe.httpGet.port | string | `"flower"` | |
| supersetCeleryFlower.livenessProbe.initialDelaySeconds | int | `5` | |
| supersetCeleryFlower.livenessProbe.periodSeconds | int | `5` | |
| supersetCeleryFlower.livenessProbe.successThreshold | int | `1` | |
| supersetCeleryFlower.livenessProbe.timeoutSeconds | int | `1` | |
| supersetCeleryFlower.podAnnotations | object | `{}` | Annotations to be added to supersetCeleryBeat pods |
| supersetCeleryFlower.podLabels | object | `{}` | Labels to be added to supersetCeleryBeat pods |
| supersetCeleryFlower.podSecurityContext | object | `{}` | |
| supersetCeleryFlower.readinessProbe.failureThreshold | int | `3` | |
| supersetCeleryFlower.readinessProbe.httpGet.path | string | `"/api/workers"` | |
| supersetCeleryFlower.readinessProbe.httpGet.port | string | `"flower"` | |
| supersetCeleryFlower.readinessProbe.initialDelaySeconds | int | `5` | |
| supersetCeleryFlower.readinessProbe.periodSeconds | int | `5` | |
| supersetCeleryFlower.readinessProbe.successThreshold | int | `1` | |
| supersetCeleryFlower.readinessProbe.timeoutSeconds | int | `1` | |
| supersetCeleryFlower.replicaCount | int | `1` | |
| supersetCeleryFlower.resources | object | `{}` | Resource settings for the CeleryBeat pods - these settings overwrite might existing values from the global resources object defined above. |
| supersetCeleryFlower.service.annotations | object | `{}` | |
| supersetCeleryFlower.service.port | int | `5555` | |
| supersetCeleryFlower.service.type | string | `"ClusterIP"` | |
| supersetCeleryFlower.startupProbe.failureThreshold | int | `60` | |
| supersetCeleryFlower.startupProbe.httpGet.path | string | `"/api/workers"` | |
| supersetCeleryFlower.startupProbe.httpGet.port | string | `"flower"` | |
| supersetCeleryFlower.startupProbe.initialDelaySeconds | int | `5` | |
| supersetCeleryFlower.startupProbe.periodSeconds | int | `5` | |
| supersetCeleryFlower.startupProbe.successThreshold | int | `1` | |
| supersetCeleryFlower.startupProbe.timeoutSeconds | int | `1` | |
| supersetNode.command | list | See `values.yaml` | Startup command |
| supersetNode.connections.db_host | string | `"{{ template \"superset.fullname\" . }}-postgresql"` | |
| supersetNode.connections.db_name | string | `"superset"` | |
| supersetNode.connections.db_pass | string | `"superset"` | |
| supersetNode.connections.db_port | string | `"5432"` | |
| supersetNode.connections.db_user | string | `"superset"` | |
| supersetNode.connections.redis_host | string | `"{{ template \"superset.fullname\" . }}-redis-headless"` | Change in case of bringing your own redis and then also set redis.enabled:false |
| supersetNode.connections.redis_port | string | `"6379"` | |
| supersetNode.containerSecurityContext | object | `{}` | |
| supersetNode.deploymentAnnotations | object | `{}` | Annotations to be added to supersetNode deployment |
| supersetNode.env | object | `{}` | |
| supersetNode.forceReload | bool | `false` | If true, forces deployment to reload on each upgrade |
| supersetNode.initContainers | list | a container waiting for postgres | Init containers |
| supersetNode.livenessProbe.failureThreshold | int | `3` | |
| supersetNode.livenessProbe.httpGet.path | string | `"/health"` | |
| supersetNode.livenessProbe.httpGet.port | string | `"http"` | |
| supersetNode.livenessProbe.initialDelaySeconds | int | `15` | |
| supersetNode.livenessProbe.periodSeconds | int | `15` | |
| supersetNode.livenessProbe.successThreshold | int | `1` | |
| supersetNode.livenessProbe.timeoutSeconds | int | `1` | |
| supersetNode.podAnnotations | object | `{}` | Annotations to be added to supersetNode pods |
| supersetNode.podLabels | object | `{}` | Labels to be added to supersetNode pods |
| supersetNode.podSecurityContext | object | `{}` | |
| supersetNode.readinessProbe.failureThreshold | int | `3` | |
| supersetNode.readinessProbe.httpGet.path | string | `"/health"` | |
| supersetNode.readinessProbe.httpGet.port | string | `"http"` | |
| supersetNode.readinessProbe.initialDelaySeconds | int | `15` | |
| supersetNode.readinessProbe.periodSeconds | int | `15` | |
| supersetNode.readinessProbe.successThreshold | int | `1` | |
| supersetNode.readinessProbe.timeoutSeconds | int | `1` | |
| supersetNode.replicaCount | int | `1` | |
| supersetNode.resources | object | `{}` | Resource settings for the supersetNode pods - these settings overwrite might existing values from the global resources object defined above. |
| supersetNode.startupProbe.failureThreshold | int | `60` | |
| supersetNode.startupProbe.httpGet.path | string | `"/health"` | |
| supersetNode.startupProbe.httpGet.port | string | `"http"` | |
| supersetNode.startupProbe.initialDelaySeconds | int | `15` | |
| supersetNode.startupProbe.periodSeconds | int | `5` | |
| supersetNode.startupProbe.successThreshold | int | `1` | |
| supersetNode.startupProbe.timeoutSeconds | int | `1` | |
| supersetNode.strategy | object | `{}` | |
| supersetWebsockets.command | list | `[]` | |
| supersetWebsockets.config | object | see `values.yaml` | The config.json to pass to the server, see https://github.com/apache/superset/tree/master/superset-websocket Note that the configuration can also read from environment variables (which will have priority), see https://github.com/apache/superset/blob/master/superset-websocket/src/config.ts for a list of supported variables |
| supersetWebsockets.containerSecurityContext | object | `{}` | |
| supersetWebsockets.deploymentAnnotations | object | `{}` | |
| supersetWebsockets.enabled | bool | `false` | This is only required if you intend to use `GLOBAL_ASYNC_QUERIES` in `ws` mode see https://github.com/apache/superset/blob/master/CONTRIBUTING.md#async-chart-queries |
| supersetWebsockets.image.pullPolicy | string | `"IfNotPresent"` | |
| supersetWebsockets.image.repository | string | `"oneacrefund/superset-websocket"` | There is no official image (yet), this one is community-supported |
| supersetWebsockets.image.tag | string | `"latest"` | |
| supersetWebsockets.ingress.path | string | `"/ws"` | |
| supersetWebsockets.ingress.pathType | string | `"Prefix"` | |
| supersetWebsockets.livenessProbe.failureThreshold | int | `3` | |
| supersetWebsockets.livenessProbe.httpGet.path | string | `"/health"` | |
| supersetWebsockets.livenessProbe.httpGet.port | string | `"ws"` | |
| supersetWebsockets.livenessProbe.initialDelaySeconds | int | `5` | |
| supersetWebsockets.livenessProbe.periodSeconds | int | `5` | |
| supersetWebsockets.livenessProbe.successThreshold | int | `1` | |
| supersetWebsockets.livenessProbe.timeoutSeconds | int | `1` | |
| supersetWebsockets.podAnnotations | object | `{}` | |
| supersetWebsockets.podLabels | object | `{}` | |
| supersetWebsockets.podSecurityContext | object | `{}` | |
| supersetWebsockets.readinessProbe.failureThreshold | int | `3` | |
| supersetWebsockets.readinessProbe.httpGet.path | string | `"/health"` | |
| supersetWebsockets.readinessProbe.httpGet.port | string | `"ws"` | |
| supersetWebsockets.readinessProbe.initialDelaySeconds | int | `5` | |
| supersetWebsockets.readinessProbe.periodSeconds | int | `5` | |
| supersetWebsockets.readinessProbe.successThreshold | int | `1` | |
| supersetWebsockets.readinessProbe.timeoutSeconds | int | `1` | |
| supersetWebsockets.replicaCount | int | `1` | |
| supersetWebsockets.resources | object | `{}` | |
| supersetWebsockets.service.annotations | object | `{}` | |
| supersetWebsockets.service.port | int | `8080` | |
| supersetWebsockets.service.type | string | `"ClusterIP"` | |
| supersetWebsockets.startupProbe.failureThreshold | int | `60` | |
| supersetWebsockets.startupProbe.httpGet.path | string | `"/health"` | |
| supersetWebsockets.startupProbe.httpGet.port | string | `"ws"` | |
| supersetWebsockets.startupProbe.initialDelaySeconds | int | `5` | |
| supersetWebsockets.startupProbe.periodSeconds | int | `5` | |
| supersetWebsockets.startupProbe.successThreshold | int | `1` | |
| supersetWebsockets.startupProbe.timeoutSeconds | int | `1` | |
| supersetWebsockets.strategy | object | `{}` | |
| supersetWorker.command | list | a `celery worker` command | Worker startup command |
| supersetWorker.containerSecurityContext | object | `{}` | |
| supersetWorker.deploymentAnnotations | object | `{}` | Annotations to be added to supersetWorker deployment |
| supersetWorker.forceReload | bool | `false` | If true, forces deployment to reload on each upgrade |
| supersetWorker.initContainers | list | a container waiting for postgres and redis | Init container |
| supersetWorker.livenessProbe.exec.command | list | a `celery inspect ping` command | Liveness probe command |
| supersetWorker.livenessProbe.failureThreshold | int | `3` | |
| supersetWorker.livenessProbe.initialDelaySeconds | int | `120` | |
| supersetWorker.livenessProbe.periodSeconds | int | `60` | |
| supersetWorker.livenessProbe.successThreshold | int | `1` | |
| supersetWorker.livenessProbe.timeoutSeconds | int | `60` | |
| supersetWorker.podAnnotations | object | `{}` | Annotations to be added to supersetWorker pods |
| supersetWorker.podLabels | object | `{}` | Labels to be added to supersetWorker pods |
| supersetWorker.podSecurityContext | object | `{}` | |
| supersetWorker.readinessProbe | object | `{}` | No startup/readiness probes by default since we don't really care about its startup time (it doesn't serve traffic) |
| supersetWorker.replicaCount | int | `1` | |
| supersetWorker.resources | object | `{}` | Resource settings for the supersetWorker pods - these settings overwrite might existing values from the global resources object defined above. |
| supersetWorker.startupProbe | object | `{}` | No startup/readiness probes by default since we don't really care about its startup time (it doesn't serve traffic) |
| supersetWorker.strategy | object | `{}` | |
| tolerations | list | `[]` | |

View File

@ -0,0 +1,40 @@
<!--
Licensed to the Apache Software Foundation (ASF) under one
or more contributor license agreements. See the NOTICE file
distributed with this work for additional information
regarding copyright ownership. The ASF licenses this file
to you under the Apache License, Version 2.0 (the
"License"); you may not use this file except in compliance
with the License. You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing,
software distributed under the License is distributed on an
"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
KIND, either express or implied. See the License for the
specific language governing permissions and limitations
under the License.
-->
{{ template "chart.header" . }}
{{ template "chart.deprecationWarning" . }}
{{ template "chart.versionBadge" . }}
{{ template "chart.description" . }}
{{ template "chart.homepageLine" . }}
{{ template "chart.sourcesSection" . }}
## TL;DR
```console
helm repo add superset http://apache.github.io/superset/
helm install my-superset superset/superset
```
{{ template "chart.requirementsSection" . }}
{{ template "chart.valuesSection" . }}

View File

@ -26,7 +26,7 @@ metadata:
heritage: {{ .Release.Service }}
{{- if .Values.supersetCeleryBeat.deploymentAnnotations }}
annotations:
{{ toYaml .Values.supersetCeleryBeat.deploymentAnnotations | nindent 4 }}
{{- toYaml .Values.supersetCeleryBeat.deploymentAnnotations | nindent 4 }}
{{- end }}
spec:
# This must be a singleton
@ -50,13 +50,13 @@ spec:
force-reload: {{ randAlphaNum 5 | quote }}
{{ end }}
{{- if .Values.supersetCeleryBeat.podAnnotations }}
{{ toYaml .Values.supersetCeleryBeat.podAnnotations | nindent 8 }}
{{- toYaml .Values.supersetCeleryBeat.podAnnotations | nindent 8 }}
{{- end }}
labels:
app: {{ template "superset.name" . }}-celerybeat
app: "{{ template "superset.name" . }}-celerybeat"
release: {{ .Release.Name }}
{{- if .Values.supersetCeleryBeat.podLabels }}
{{ toYaml .Values.supersetCeleryBeat.podLabels | nindent 8 }}
{{- toYaml .Values.supersetCeleryBeat.podLabels | nindent 8 }}
{{- end }}
spec:
{{- if or (.Values.serviceAccount.create) (.Values.serviceAccountName) }}
@ -65,21 +65,21 @@ spec:
securityContext:
runAsUser: {{ .Values.runAsUser }}
{{- if .Values.supersetCeleryBeat.podSecurityContext }}
{{ toYaml .Values.supersetCeleryBeat.podSecurityContext | nindent 8 }}
{{- toYaml .Values.supersetCeleryBeat.podSecurityContext | nindent 8 }}
{{- end }}
{{- if .Values.supersetCeleryBeat.initContainers }}
initContainers:
{{- tpl (toYaml .Values.supersetCeleryBeat.initContainers) . | nindent 6 }}
{{- end }}
{{- with .Values.hostAliases }}
hostAliases: {{ toYaml . | nindent 6 }}
hostAliases: {{- toYaml . | nindent 6 }}
{{- end }}
containers:
- name: {{ .Chart.Name }}
- name: "{{ .Chart.Name }}-celerybeat"
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
{{- if .Values.supersetCeleryBeat.containerSecurityContext }}
securityContext: {{ toYaml .Values.supersetCeleryBeat.containerSecurityContext | nindent 12 }}
securityContext: {{- toYaml .Values.supersetCeleryBeat.containerSecurityContext | nindent 12 }}
{{- end }}
command: {{ tpl (toJson .Values.supersetCeleryBeat.command) . }}
env:
@ -108,25 +108,25 @@ spec:
{{- end }}
resources:
{{- if .Values.supersetCeleryBeat.resources }}
{{ toYaml .Values.supersetCeleryBeat.resources | indent 12 }}
{{- toYaml .Values.supersetCeleryBeat.resources | nindent 12 }}
{{- else }}
{{ toYaml .Values.resources | indent 12 }}
{{- toYaml .Values.resources | nindent 12 }}
{{- end }}
{{- with .Values.nodeSelector }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.affinity }}
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.tolerations }}
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{ toYaml . | indent 8 }}
{{- end }}
{{- if .Values.imagePullSecrets }}
{{- toYaml . | nindent 8 }}
{{- end }}
{{- if .Values.imagePullSecrets }}
imagePullSecrets:
{{ toYaml .Values.imagePullSecrets | indent 8 }}
{{- toYaml .Values.imagePullSecrets | nindent 8 }}
{{- end }}
volumes:
- name: superset-config

View File

@ -0,0 +1,142 @@
{{- if .Values.supersetCeleryFlower.enabled -}}
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ template "superset.fullname" . }}-flower
labels:
app: {{ template "superset.name" . }}-flower
chart: {{ template "superset.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- if .Values.supersetCeleryFlower.deploymentAnnotations }}
annotations:
{{- toYaml .Values.supersetCeleryFlower.deploymentAnnotations | nindent 4 }}
{{- end }}
spec:
replicas: {{ .Values.supersetCeleryFlower.replicaCount }}
selector:
matchLabels:
app: {{ template "superset.name" . }}-flower
release: {{ .Release.Name }}
template:
metadata:
annotations:
checksum/config: {{ include "superset-config" . | sha256sum }}
checksum/secrets: {{ tpl (toJson .Values.extraSecretEnv) . | sha256sum }}
{{- if .Values.supersetCeleryFlower.podAnnotations }}
{{- toYaml .Values.supersetCeleryFlower.podAnnotations | nindent 8 }}
{{- end }}
labels:
app: "{{ template "superset.name" . }}-flower"
release: {{ .Release.Name }}
{{- if .Values.supersetCeleryFlower.podLabels }}
{{- toYaml .Values.supersetCeleryFlower.podLabels | nindent 8 }}
{{- end }}
spec:
{{- if or (.Values.serviceAccount.create) (.Values.serviceAccountName) }}
serviceAccountName: {{ template "superset.serviceAccountName" . }}
{{- end }}
securityContext:
runAsUser: {{ .Values.runAsUser }}
{{- if .Values.supersetCeleryFlower.podSecurityContext }}
{{- toYaml .Values.supersetCeleryFlower.podSecurityContext | nindent 8 }}
{{- end }}
{{- if .Values.supersetCeleryFlower.initContainers }}
initContainers:
{{- tpl (toYaml .Values.supersetCeleryFlower.initContainers) . | nindent 6 }}
{{- end }}
{{- with .Values.hostAliases }}
hostAliases: {{- toYaml . | nindent 6 }}
{{- end }}
containers:
- name: "{{ .Chart.Name }}-flower"
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
{{- if .Values.supersetCeleryFlower.containerSecurityContext }}
securityContext: {{- toYaml .Values.supersetCeleryFlower.containerSecurityContext | nindent 12 }}
{{- end }}
command: {{ tpl (toJson .Values.supersetCeleryFlower.command) . }}
env:
{{- range $key, $value := .Values.extraEnv }}
- name: {{ $key | quote}}
value: {{ $value | quote }}
{{- end }}
{{- if .Values.extraEnvRaw }}
{{- toYaml .Values.extraEnvRaw | nindent 12 }}
{{- end }}
envFrom:
- secretRef:
name: {{ tpl .Values.envFromSecret . | quote }}
{{- range .Values.envFromSecrets }}
- secretRef:
name: {{ tpl . $ | quote }}
{{- end }}
ports:
- name: flower
containerPort: 5555
protocol: TCP
volumeMounts:
- name: superset-config
mountPath: {{ .Values.configMountPath | quote }}
readOnly: true
{{- with .Values.extraVolumeMounts }}
{{- tpl (toYaml .) $ | nindent 12 -}}
{{- end }}
{{- if .Values.supersetCeleryFlower.startupProbe }}
startupProbe:
{{- .Values.supersetCeleryFlower.startupProbe | toYaml | nindent 12 }}
{{- end }}
{{- if .Values.supersetCeleryFlower.readinessProbe }}
readinessProbe:
{{- .Values.supersetCeleryFlower.readinessProbe | toYaml | nindent 12 }}
{{- end }}
{{- if .Values.supersetCeleryFlower.livenessProbe }}
livenessProbe:
{{- .Values.supersetCeleryFlower.livenessProbe | toYaml | nindent 12 }}
{{- end }}
resources:
{{- if .Values.supersetCeleryFlower.resources }}
{{- toYaml .Values.supersetCeleryFlower.resources | nindent 12 }}
{{- else }}
{{- toYaml .Values.resources | nindent 12 }}
{{- end }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- if .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml .Values.imagePullSecrets | nindent 8 }}
{{- end }}
volumes:
- name: superset-config
secret:
secretName: {{ tpl .Values.configFromSecret . }}
{{- with .Values.extraVolumes }}
{{- tpl (toYaml .) $ | nindent 8 -}}
{{- end }}
{{- end -}}

View File

@ -25,7 +25,7 @@ metadata:
heritage: {{ .Release.Service }}
{{- if .Values.supersetWorker.deploymentAnnotations }}
annotations:
{{ toYaml .Values.supersetWorker.deploymentAnnotations | nindent 4 }}
{{- toYaml .Values.supersetWorker.deploymentAnnotations | nindent 4 }}
{{- end }}
spec:
replicas: {{ .Values.supersetWorker.replicaCount }}
@ -52,13 +52,13 @@ spec:
force-reload: {{ randAlphaNum 5 | quote }}
{{ end }}
{{- if .Values.supersetWorker.podAnnotations }}
{{ toYaml .Values.supersetWorker.podAnnotations | nindent 8 }}
{{- toYaml .Values.supersetWorker.podAnnotations | nindent 8 }}
{{- end }}
labels:
app: {{ template "superset.name" . }}-worker
release: {{ .Release.Name }}
{{- if .Values.supersetWorker.podLabels }}
{{ toYaml .Values.supersetWorker.podLabels | nindent 8 }}
{{- toYaml .Values.supersetWorker.podLabels | nindent 8 }}
{{- end }}
spec:
{{- if or (.Values.serviceAccount.create) (.Values.serviceAccountName) }}
@ -67,21 +67,21 @@ spec:
securityContext:
runAsUser: {{ .Values.runAsUser }}
{{- if .Values.supersetWorker.podSecurityContext }}
{{ toYaml .Values.supersetWorker.podSecurityContext | nindent 8 }}
{{- toYaml .Values.supersetWorker.podSecurityContext | nindent 8 }}
{{- end }}
{{- if .Values.supersetWorker.initContainers }}
initContainers:
{{- tpl (toYaml .Values.supersetWorker.initContainers) . | nindent 6 }}
{{- end }}
{{- with .Values.hostAliases }}
hostAliases: {{ toYaml . | nindent 6 }}
hostAliases: {{- toYaml . | nindent 6 }}
{{- end }}
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
{{- if .Values.supersetWorker.containerSecurityContext }}
securityContext: {{ toYaml .Values.supersetWorker.containerSecurityContext | nindent 12 }}
securityContext: {{- toYaml .Values.supersetWorker.containerSecurityContext | nindent 12 }}
{{- end }}
command: {{ tpl (toJson .Values.supersetWorker.command) . }}
env:
@ -113,27 +113,39 @@ spec:
{{- with .Values.extraVolumeMounts }}
{{- tpl (toYaml .) $ | nindent 12 -}}
{{- end }}
{{- if .Values.supersetWorker.startupProbe }}
startupProbe:
{{- .Values.supersetWorker.startupProbe | toYaml | nindent 12 }}
{{- end }}
{{- if .Values.supersetWorker.readinessProbe }}
readinessProbe:
{{- .Values.supersetWorker.readinessProbe | toYaml | nindent 12 }}
{{- end }}
{{- if .Values.supersetWorker.livenessProbe }}
livenessProbe:
{{- .Values.supersetWorker.livenessProbe | toYaml | nindent 12 }}
{{- end }}
resources:
{{- if .Values.supersetWorker.resources }}
{{ toYaml .Values.supersetWorker.resources | indent 12 }}
{{- toYaml .Values.supersetWorker.resources | nindent 12 }}
{{- else }}
{{ toYaml .Values.resources | indent 12 }}
{{- toYaml .Values.resources | nindent 12 }}
{{- end }}
{{- with .Values.nodeSelector }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.affinity }}
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.tolerations }}
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{ toYaml . | indent 8 }}
{{- end }}
{{- if .Values.imagePullSecrets }}
{{- toYaml . | nindent 8 }}
{{- end }}
{{- if .Values.imagePullSecrets }}
imagePullSecrets:
{{ toYaml .Values.imagePullSecrets | indent 8 }}
{{- toYaml .Values.imagePullSecrets | nindent 8 }}
{{- end }}
volumes:
- name: superset-config

View File

@ -0,0 +1,138 @@
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
{{- if .Values.supersetWebsockets.enabled }}
apiVersion: apps/v1
kind: Deployment
metadata:
name: "{{ template "superset.fullname" . }}-ws"
labels:
app: "{{ template "superset.name" . }}-ws"
chart: {{ template "superset.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- if .Values.supersetWebsockets.deploymentAnnotations }}
annotations:
{{- toYaml .Values.supersetWebsockets.deploymentAnnotations | nindent 4 }}
{{- end }}
spec:
replicas: {{ .Values.supersetWebsockets.replicaCount }}
selector:
matchLabels:
app: "{{ template "superset.name" . }}-ws"
release: {{ .Release.Name }}
{{- if .Values.supersetWebsockets.strategy }}
strategy:
{{- toYaml .Values.supersetWebsockets.strategy | nindent 4 }}
{{- end }}
template:
metadata:
annotations:
checksum/wsconfig: {{ tpl (toJson .Values.supersetWebsockets.config) . | sha256sum }}
checksum/secrets: {{ tpl (toJson .Values.extraSecretEnv) . | sha256sum }}
{{- if .Values.supersetWebsockets.podAnnotations }}
{{- toYaml .Values.supersetWebsockets.podAnnotations | nindent 8 }}
{{- end }}
labels:
app: "{{ template "superset.name" . }}-ws"
release: {{ .Release.Name }}
{{- if .Values.supersetWebsockets.podLabels }}
{{- toYaml .Values.supersetWebsockets.podLabels | nindent 8 }}
{{- end }}
spec:
{{- if or (.Values.serviceAccount.create) (.Values.serviceAccountName) }}
serviceAccountName: {{ template "superset.serviceAccountName" . }}
{{- end }}
securityContext:
runAsUser: {{ .Values.runAsUser }}
{{- if .Values.supersetWebsockets.podSecurityContext }}
{{- toYaml .Values.supersetWebsockets.podSecurityContext | nindent 8 }}
{{- end }}
{{- with .Values.hostAliases }}
hostAliases: {{- toYaml . | nindent 6 }}
{{- end }}
containers:
- name: "{{ .Chart.Name }}-ws"
image: "{{ .Values.supersetWebsockets.image.repository }}:{{ .Values.supersetWebsockets.image.tag }}"
imagePullPolicy: {{ .Values.supersetWebsockets.image.pullPolicy }}
{{- if .Values.supersetWebsockets.containerSecurityContext }}
securityContext: {{- toYaml .Values.supersetWebsockets.containerSecurityContext | nindent 12 }}
{{- end }}
command: {{ tpl (toJson .Values.supersetWebsockets.command) . }}
# Passing all the envs is a bit blunt... we only need a few (see https://github.com/apache/superset/blob/master/superset-websocket/src/config.ts)...
env:
{{- range $key, $value := .Values.extraEnv }}
- name: {{ $key | quote}}
value: {{ $value | quote }}
{{- end }}
{{- if .Values.extraEnvRaw }}
{{- toYaml .Values.extraEnvRaw | nindent 12 }}
{{- end }}
envFrom:
- secretRef:
name: {{ tpl .Values.envFromSecret . | quote }}
{{- range .Values.envFromSecrets }}
- secretRef:
name: {{ tpl . $ | quote }}
{{- end }}
ports:
- name: ws
containerPort: {{ .Values.supersetWebsockets.config.port }}
protocol: TCP
volumeMounts:
- name: superset-ws-config
mountPath: /home/superset-websocket/config.json
subPath: config.json
readOnly: true
resources:
{{- if .Values.supersetWebsockets.resources }}
{{- toYaml .Values.supersetWebsockets.resources | nindent 12 }}
{{- else }}
{{- toYaml .Values.resources | nindent 12 }}
{{- end }}
{{- if .Values.supersetWebsockets.startupProbe }}
startupProbe:
{{- .Values.supersetWebsockets.startupProbe | toYaml | nindent 12 }}
{{- end }}
{{- if .Values.supersetWebsockets.readinessProbe }}
readinessProbe:
{{- .Values.supersetWebsockets.readinessProbe | toYaml | nindent 12 }}
{{- end }}
{{- if .Values.supersetWebsockets.livenessProbe }}
livenessProbe:
{{- .Values.supersetWebsockets.livenessProbe | toYaml | nindent 12 }}
{{- end }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- if .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml .Values.imagePullSecrets | nindent 8 }}
{{- end }}
volumes:
- name: superset-ws-config
secret:
secretName: "{{ template "superset.fullname" . }}-ws-config"
{{- end }}

View File

@ -25,7 +25,7 @@ metadata:
heritage: {{ .Release.Service }}
{{- if .Values.supersetNode.deploymentAnnotations }}
annotations:
{{ toYaml .Values.supersetNode.deploymentAnnotations | nindent 4 }}
{{- toYaml .Values.supersetNode.deploymentAnnotations | nindent 4 }}
{{- end }}
spec:
replicas: {{ .Values.supersetNode.replicaCount }}
@ -55,13 +55,13 @@ spec:
force-reload: {{ randAlphaNum 5 | quote }}
{{- end }}
{{- if .Values.supersetNode.podAnnotations }}
{{ toYaml .Values.supersetNode.podAnnotations | nindent 8 }}
{{- toYaml .Values.supersetNode.podAnnotations | nindent 8 }}
{{- end }}
labels:
app: {{ template "superset.name" . }}
release: {{ .Release.Name }}
{{- if .Values.supersetNode.podLabels }}
{{ toYaml .Values.supersetNode.podLabels | nindent 8 }}
{{- toYaml .Values.supersetNode.podLabels | nindent 8 }}
{{- end }}
spec:
{{- if or (.Values.serviceAccount.create) (.Values.serviceAccountName) }}
@ -70,21 +70,21 @@ spec:
securityContext:
runAsUser: {{ .Values.runAsUser }}
{{- if .Values.supersetNode.podSecurityContext }}
{{ toYaml .Values.supersetNode.podSecurityContext | nindent 8 }}
{{- toYaml .Values.supersetNode.podSecurityContext | nindent 8 }}
{{- end }}
{{- if .Values.supersetNode.initContainers }}
initContainers:
{{- tpl (toYaml .Values.supersetNode.initContainers) . | nindent 6 }}
{{- end }}
{{- with .Values.hostAliases }}
hostAliases: {{ toYaml . | nindent 6 }}
hostAliases: {{- toYaml . | nindent 6 }}
{{- end }}
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
{{- if .Values.supersetNode.containerSecurityContext }}
securityContext: {{ toYaml .Values.supersetNode.containerSecurityContext | nindent 12 }}
securityContext: {{- toYaml .Values.supersetNode.containerSecurityContext | nindent 12 }}
{{- end }}
command: {{ tpl (toJson .Values.supersetNode.command) . }}
env:
@ -124,45 +124,39 @@ spec:
- name: http
containerPort: {{ .Values.service.port }}
protocol: TCP
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: {{ .Values.supersetNode.livenessProbe.initialDelaySeconds }}
timeoutSeconds: {{ .Values.supersetNode.livenessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.supersetNode.livenessProbe.failureThreshold }}
periodSeconds: {{ .Values.supersetNode.livenessProbe.periodSeconds }}
successThreshold: {{ .Values.supersetNode.livenessProbe.successThreshold }}
{{- if .Values.supersetNode.startupProbe }}
startupProbe:
{{- .Values.supersetNode.startupProbe | toYaml | nindent 12 }}
{{- end }}
{{- if .Values.supersetNode.readinessProbe }}
readinessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: {{ .Values.supersetNode.readinessProbe.initialDelaySeconds }}
timeoutSeconds: {{ .Values.supersetNode.readinessProbe.timeoutSeconds }}
failureThreshold: {{ .Values.supersetNode.readinessProbe.failureThreshold }}
periodSeconds: {{ .Values.supersetNode.readinessProbe.periodSeconds }}
successThreshold: {{ .Values.supersetNode.readinessProbe.successThreshold }}
{{- .Values.supersetNode.readinessProbe | toYaml | nindent 12 }}
{{- end }}
{{- if .Values.supersetNode.livenessProbe }}
livenessProbe:
{{- .Values.supersetNode.livenessProbe | toYaml | nindent 12 }}
{{- end }}
resources:
{{- if .Values.supersetNode.resources }}
{{ toYaml .Values.supersetNode.resources | indent 12 }}
{{- toYaml .Values.supersetNode.resources | nindent 12 }}
{{- else }}
{{ toYaml .Values.resources | indent 12 }}
{{- toYaml .Values.resources | nindent 12 }}
{{- end }}
{{- with .Values.nodeSelector }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.affinity }}
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.tolerations }}
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{ toYaml . | indent 8 }}
{{- end }}
{{- if .Values.imagePullSecrets }}
{{- toYaml . | nindent 8 }}
{{- end }}
{{- if .Values.imagePullSecrets }}
imagePullSecrets:
{{ toYaml .Values.imagePullSecrets | indent 8 }}
{{- toYaml .Values.imagePullSecrets | nindent 8 }}
{{- end }}
volumes:

View File

@ -25,10 +25,10 @@ metadata:
chart: {{ template "superset.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- with .Values.ingress.annotations }}
{{- with .Values.ingress.annotations }}
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- if .Values.ingress.ingressClassName }}
ingressClassName: {{ .Values.ingress.ingressClassName }}
@ -55,5 +55,14 @@ spec:
name: {{ $fullName }}
port:
name: http
{{- if $.Values.supersetWebsockets.enabled }}
- path: {{ $.Values.supersetWebsockets.ingress.path }}
pathType: {{ $.Values.supersetWebsockets.ingress.pathType }}
backend:
service:
name: "{{ template "superset.fullname" $ }}-ws"
port:
name: ws
{{- end }}
{{- end }}
{{- end }}

View File

@ -28,7 +28,7 @@ spec:
name: {{ template "superset.name" . }}-init-db
{{- if .Values.init.podAnnotations }}
annotations:
{{ toYaml .Values.init.podAnnotations | nindent 8 }}
{{- toYaml .Values.init.podAnnotations | nindent 8 }}
{{- end }}
spec:
{{- if or (.Values.serviceAccount.create) (.Values.serviceAccountName) }}
@ -37,7 +37,7 @@ spec:
securityContext:
runAsUser: {{ .Values.runAsUser }}
{{- if .Values.init.podSecurityContext }}
{{ toYaml .Values.init.podSecurityContext | nindent 8 }}
{{- toYaml .Values.init.podSecurityContext | nindent 8 }}
{{- end }}
{{- if .Values.init.initContainers }}
initContainers:
@ -65,7 +65,7 @@ spec:
{{- end }}
imagePullPolicy: {{ .Values.image.pullPolicy }}
{{- if .Values.init.containerSecurityContext }}
securityContext: {{ toYaml .Values.init.containerSecurityContext | nindent 12 }}
securityContext: {{- toYaml .Values.init.containerSecurityContext | nindent 12 }}
{{- end }}
volumeMounts:
- name: superset-config
@ -81,10 +81,10 @@ spec:
{{- end }}
command: {{ tpl (toJson .Values.init.command) . }}
resources:
{{ toYaml .Values.init.resources | indent 10 }}
{{- if .Values.imagePullSecrets }}
{{- toYaml .Values.init.resources | nindent 10 }}
{{- if .Values.imagePullSecrets }}
imagePullSecrets:
{{ toYaml .Values.imagePullSecrets | indent 8 }}
{{- toYaml .Values.imagePullSecrets | nindent 8 }}
{{- end }}
volumes:
- name: superset-config

View File

@ -0,0 +1,31 @@
#
# Licensed to the Apache Software Foundation (ASF) under one or more
# contributor license agreements. See the NOTICE file distributed with
# this work for additional information regarding copyright ownership.
# The ASF licenses this file to You under the Apache License, Version 2.0
# (the "License"); you may not use this file except in compliance with
# the License. You may obtain a copy of the License at
#
# http://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
{{- if .Values.supersetWebsockets.enabled }}
apiVersion: v1
kind: Secret
metadata:
name: "{{ template "superset.fullname" . }}-ws-config"
labels:
app: {{ template "superset.fullname" . }}
chart: {{ template "superset.chart" . }}
release: "{{ .Release.Name }}"
heritage: "{{ .Release.Service }}"
type: Opaque
stringData:
config.json: |
{{- tpl (toJson .Values.supersetWebsockets.config) . | nindent 6 }}
{{- end }}

View File

@ -40,3 +40,61 @@ spec:
{{- if .Values.service.loadBalancerIP }}
loadBalancerIP: {{ .Values.service.loadBalancerIP }}
{{- end }}
---
{{- if .Values.supersetCeleryFlower.enabled }}
apiVersion: v1
kind: Service
metadata:
name: "{{ template "superset.fullname" . }}-flower"
labels:
app: {{ template "superset.name" . }}
chart: {{ template "superset.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- with .Values.supersetCeleryFlower.service.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
type: {{ .Values.supersetCeleryFlower.service.type }}
ports:
- port: {{ .Values.supersetCeleryFlower.service.port }}
targetPort: flower
protocol: TCP
name: flower
selector:
app: {{ template "superset.name" . }}-flower
release: {{ .Release.Name }}
{{- if .Values.supersetCeleryFlower.service.loadBalancerIP }}
loadBalancerIP: {{ .Values.supersetCeleryFlower.service.loadBalancerIP }}
{{- end }}
{{- end }}
---
{{- if .Values.supersetWebsockets.enabled }}
apiVersion: v1
kind: Service
metadata:
name: "{{ template "superset.fullname" . }}-ws"
labels:
app: {{ template "superset.name" . }}
chart: {{ template "superset.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- with .Values.supersetWebsockets.service.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
type: {{ .Values.supersetWebsockets.service.type }}
ports:
- port: {{ .Values.supersetWebsockets.service.port }}
targetPort: ws
protocol: TCP
name: ws
selector:
app: "{{ template "superset.name" . }}-ws"
release: {{ .Release.Name }}
{{- if .Values.supersetWebsockets.service.loadBalancerIP }}
loadBalancerIP: {{ .Values.supersetWebsockets.service.loadBalancerIP }}
{{- end }}
{{- end }}

View File

@ -1,700 +0,0 @@
{
"$schema": "http://json-schema.org/draft-04/schema#",
"type": "object",
"additionalProperties": true,
"properties": {
"runAsUser": {
"type": "integer"
},
"serviceAccount": {
"type": "object",
"additionalProperties": false,
"properties": {
"create": {
"type": "boolean"
},
"annotations": {
"type": "object"
}
},
"required": [
"create"
]
},
"bootstrapScript": {
"type": "string"
},
"configFromSecret": {
"type": "string"
},
"envFromSecret": {
"type": "string"
},
"envFromSecrets": {
"type": "array"
},
"extraEnv": {
"type": "object"
},
"extraEnvRaw": {
"type": "array"
},
"extraSecretEnv": {
"type": "object"
},
"extraConfigs": {
"type": "object"
},
"extraSecrets": {
"type": "object"
},
"extraVolumes": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.api.apps.v1.PodSpec/properties/volumes"
},
"extraVolumeMounts": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.api.apps.v1.PodSpec/properties/volumeMounts"
},
"configOverrides": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"properties": {
"extend_timeout": {
"type": "string"
},
"enable_oauth": {
"type": "string"
}
}
},
"configOverridesFiles": {
"type": "object",
"additionalProperties": {
"type": "string"
},
"properties": {
"extend_timeout": {
"type": "string"
},
"enable_oauth": {
"type": "string"
}
}
},
"configMountPath": {
"type": "string"
},
"extraConfigMountPath": {
"type": "string"
},
"image": {
"type": "object",
"additionalProperties": false,
"properties": {
"repository": {
"type": "string"
},
"tag": {
"type": "string"
},
"pullPolicy": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.api.core.v1.Container/properties/imagePullPolicy"
}
},
"required": [
"repository",
"tag",
"pullPolicy"
]
},
"imagePullSecrets": {
"type": "array"
},
"initImage": {
"type": "object",
"additionalProperties": false,
"properties": {
"repository": {
"type": "string"
},
"tag": {
"type": "string"
},
"pullPolicy": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.api.core.v1.Container/properties/imagePullPolicy"
}
},
"required": [
"repository",
"tag",
"pullPolicy"
]
},
"service": {
"type": "object",
"additionalProperties": false,
"properties": {
"type": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.api.core.v1.ServiceSpec/properties/type"
},
"port": {
"type": "integer"
},
"annotations": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta/properties/annotations"
},
"loadBalancerIP": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.api.core.v1.ServiceSpec/properties/loadBalancerIP"
}
},
"required": [
"type",
"port"
]
},
"ingress": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"type": "boolean"
},
"annotations": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta/properties/annotations"
},
"path": {
"type": "string"
},
"pathType": {
"type": "string"
},
"ingressClassName": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.api.networking.v1.IngressSpec/properties/ingressClassName"
},
"hosts": {
"type": "array",
"items": {
"type": "string"
}
},
"tls": {
"type": "array",
"items": {
"type": "object",
"additionalProperties": false,
"properties": {
"secretName": {
"type": "string"
},
"hosts": {
"type": "array",
"items": {
"type": "string"
}
}
}
}
}
},
"required": [
"enabled",
"annotations",
"path",
"pathType",
"hosts",
"tls"
]
},
"resources": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.api.core.v1.Container/properties/resources"
},
"hostAliases": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.api.core.v1.PodSpec/properties/hostAliases"
},
"supersetNode": {
"type": "object",
"additionalProperties": false,
"properties": {
"replicaCount": {
"type": "integer"
},
"command": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.api.core.v1.Container/properties/command"
},
"connections": {
"type": "object",
"additionalProperties": false,
"properties": {
"redis_host": {
"type": "string"
},
"redis_password": {
"type": "string"
},
"redis_port": {
"type": "string"
},
"db_host": {
"type": "string"
},
"db_port": {
"type": "string"
},
"db_user": {
"type": "string"
},
"db_pass": {
"type": "string"
},
"db_name": {
"type": "string"
}
},
"required": [
"redis_host",
"redis_port",
"db_host",
"db_port",
"db_user",
"db_pass",
"db_name"
]
},
"env": {
"type": "object"
},
"forceReload": {
"type": "boolean"
},
"initContainers": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.api.core.v1.PodSpec/properties/initContainers"
},
"deploymentAnnotations": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta/properties/annotations"
},
"podAnnotations": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta/properties/annotations"
},
"podLabels": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta/properties/labels"
},
"livenessProbe": {
"type": "object",
"additionalProperties": false,
"properties": {
"initialDelaySeconds": {
"type": "integer"
},
"timeoutSeconds": {
"type": "integer"
},
"failureThreshold": {
"type": "integer"
},
"periodSeconds": {
"type": "integer"
},
"successThreshold": {
"type": "integer"
}
},
"required": [
"initialDelaySeconds",
"timeoutSeconds",
"failureThreshold",
"periodSeconds",
"successThreshold"
]
},
"readinessProbe": {
"type": "object",
"additionalProperties": false,
"properties": {
"initialDelaySeconds": {
"type": "integer"
},
"timeoutSeconds": {
"type": "integer"
},
"failureThreshold": {
"type": "integer"
},
"periodSeconds": {
"type": "integer"
},
"successThreshold": {
"type": "integer"
}
},
"required": [
"initialDelaySeconds",
"timeoutSeconds",
"failureThreshold",
"periodSeconds",
"successThreshold"
]
},
"resources": {
"type": "object"
},
"podSecurityContext": {
"type": "object"
},
"containerSecurityContext": {
"type": "object"
},
"strategy": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.api.apps.v1.DeploymentStrategy"
}
},
"required": [
"replicaCount",
"command",
"connections",
"env",
"forceReload"
]
},
"supersetWorker": {
"type": "object",
"additionalProperties": false,
"properties": {
"replicaCount": {
"type": "integer"
},
"command": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.api.core.v1.Container/properties/command"
},
"forceReload": {
"type": "boolean"
},
"initContainers": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.api.core.v1.PodSpec/properties/initContainers"
},
"deploymentAnnotations": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta/properties/annotations"
},
"podAnnotations": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta/properties/annotations"
},
"podLabels": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta/properties/labels"
},
"resources": {
"type": "object"
},
"podSecurityContext": {
"type": "object"
},
"containerSecurityContext": {
"type": "object"
},
"strategy": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.api.apps.v1.DeploymentStrategy"
}
},
"required": [
"replicaCount",
"command",
"forceReload"
]
},
"supersetCeleryBeat": {
"type": "object",
"additionalProperties": false,
"properties": {
"enabled": {
"type": "boolean"
},
"command": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.api.core.v1.Container/properties/command"
},
"forceReload": {
"type": "boolean"
},
"initContainers": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.api.core.v1.PodSpec/properties/initContainers"
},
"deploymentAnnotations": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta/properties/annotations"
},
"podAnnotations": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta/properties/annotations"
},
"podLabels": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta/properties/labels"
},
"resources": {
"type": "object"
},
"podSecurityContext": {
"type": "object"
},
"containerSecurityContext": {
"type": "object"
}
},
"required": [
"enabled",
"command",
"forceReload"
]
},
"init": {
"type": "object",
"additionalProperties": false,
"properties": {
"resources": {
"type": "object"
},
"command": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.api.core.v1.Container/properties/command"
},
"enabled": {
"type": "boolean"
},
"loadExamples": {
"type": "boolean"
},
"createAdmin": {
"type": "boolean"
},
"adminUser": {
"type": "object",
"additionalProperties": false,
"properties": {
"username": {
"type": "string"
},
"firstname": {
"type": "string"
},
"lastname": {
"type": "string"
},
"email": {
"type": "string"
},
"password": {
"type": "string"
}
},
"required": [
"username",
"firstname",
"lastname",
"email",
"password"
]
},
"initContainers": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.api.core.v1.PodSpec/properties/initContainers"
},
"initscript": {
"type": "string"
},
"podAnnotations": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.apimachinery.pkg.apis.meta.v1.ObjectMeta/properties/annotations"
},
"podSecurityContext": {
"type": "object"
},
"containerSecurityContext": {
"type": "object"
}
},
"required": [
"resources",
"command",
"enabled",
"loadExamples",
"createAdmin",
"adminUser",
"initscript"
]
},
"postgresql": {
"type": "object",
"properties": {
"auth": {
"type": "object",
"properties": {
"database": {
"type": "string"
},
"existingSecret": {
"type": [
"string",
"null"
]
},
"password": {
"type": "string"
},
"username": {
"type": "string"
}
}
},
"enabled": {
"type": "boolean"
},
"primary": {
"type": "object",
"properties": {
"persistence": {
"type": "object",
"properties": {
"accessModes": {
"type": "array",
"items": {
"type": "string"
}
},
"enabled": {
"type": "boolean"
}
}
},
"service": {
"type": "object",
"properties": {
"ports": {
"type": "object",
"properties": {
"postgresql": {
"type": "string"
}
}
}
}
}
}
}
}
},
"redis": {
"type": "object",
"additionalProperties": true,
"properties": {
"enabled": {
"type": "boolean"
},
"architecture": {
"type": "string"
},
"auth": {
"type": "object",
"properties": {
"enabled": {
"type": "boolean"
},
"existingSecret": {
"type": "string"
},
"existingSecretKey": {
"type": "string"
},
"password": {
"type": "string"
}
},
"required": [
"enabled"
]
},
"master": {
"type": "object",
"additionalProperties": true,
"properties": {
"persistence": {
"type": "object",
"additionalProperties": true,
"properties": {
"enabled": {
"type": "boolean"
},
"accessModes": {
"type": "array",
"items": [
{
"type": "string"
}
]
}
},
"required": [
"enabled",
"accessModes"
]
}
},
"required": [
"persistence"
]
},
"cluster": {
"type": "object",
"additionalProperties": true,
"properties": {
"enabled": {
"type": "boolean"
}
},
"required": [
"enabled"
]
}
},
"required": [
"enabled",
"architecture",
"master"
]
},
"nodeSelector": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.api.apps.v1.PodSpec/properties/nodeSelector"
},
"tolerations": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json##/definitions/io.k8s.api.apps.v1.PodSpec/properties/tolerations"
},
"affinity": {
"$ref": "https://raw.githubusercontent.com/yannh/kubernetes-json-schema/master/v1.23.0/_definitions.json#/definitions/io.k8s.api.core.v1.Affinity"
}
},
"required": [
"runAsUser",
"serviceAccount",
"bootstrapScript",
"configFromSecret",
"envFromSecret",
"envFromSecrets",
"extraEnv",
"extraEnvRaw",
"extraSecretEnv",
"extraConfigs",
"extraSecrets",
"extraVolumes",
"extraVolumeMounts",
"configOverrides",
"configOverridesFiles",
"configMountPath",
"extraConfigMountPath",
"image",
"imagePullSecrets",
"service",
"ingress",
"resources",
"hostAliases",
"supersetNode",
"supersetWorker",
"supersetCeleryBeat",
"init",
"postgresql",
"redis",
"nodeSelector",
"tolerations",
"affinity"
]
}

View File

@ -19,18 +19,22 @@
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
# User ID directive. This user must have enough permissions to run the bootstrap script
# Runn containers as root is not recommended in production. Change this to another UID - e.g. 1000 to be more secure
# A README is automatically generated from this file to document it, using helm-docs (see https://github.com/norwoodj/helm-docs)
# To update it, install helm-docs and run helm-docs from the root of this chart
# -- User ID directive. This user must have enough permissions to run the bootstrap script
# Running containers as root is not recommended in production. Change this to another UID - e.g. 1000 to be more secure
runAsUser: 0
# Create custom service account for Superset. If create: true and name is not provided, superset.fullname will be used.
# serviceAccountName: superset
serviceAccount:
# -- Create custom service account for Superset. If create: true and name is not provided, `superset.fullname` will be used.
create: false
annotations: {}
# Install additional packages and do any other bootstrap configuration in this script
# -- Install additional packages and do any other bootstrap configuration in this script
# For production clusters it's recommended to build own image with this step done in CI
# @default -- see `values.yaml`
bootstrapScript: |
#!/bin/bash
rm -rf /var/lib/apt/lists/* && \
@ -39,21 +43,19 @@ bootstrapScript: |
redis==3.5.3 && \
if [ ! -f ~/bootstrap ]; then echo "Running Superset with uid {{ .Values.runAsUser }}" > ~/bootstrap; fi
## The name of the secret which we will use to generate a superset_config.py file
## Note: this secret must have the key superset_config.py in it and can include other files as well
##
# -- The name of the secret which we will use to generate a superset_config.py file
# Note: this secret must have the key superset_config.py in it and can include other files as well
configFromSecret: '{{ template "superset.fullname" . }}-config'
## The name of the secret which we will use to populate env vars in deployed pods
## This can be useful for secret keys, etc.
##
# -- The name of the secret which we will use to populate env vars in deployed pods
# This can be useful for secret keys, etc.
envFromSecret: '{{ template "superset.fullname" . }}-env'
## This can be a list of template strings
# -- This can be a list of templated strings
envFromSecrets: []
## Extra environment variables that will be passed into pods
##
extraEnv: {}
# -- Extra environment variables that will be passed into pods
extraEnv:
{}
# Different gunicorn settings, refer to the gunicorn documentation
# https://docs.gunicorn.org/en/stable/settings.html#
# These variables are used as Flags at the gunicorn startup
@ -75,9 +77,9 @@ extraEnv: {}
# # this includes any random Gmail address if your OAuth2 Web App is set to External.
# OAUTH_WHITELIST_REGEX: ...
## Extra environment variables in RAW format that will be passed into pods
##
extraEnvRaw: []
# -- Extra environment variables in RAW format that will be passed into pods
extraEnvRaw:
[]
# Load DB password from other secret (e.g. for zalando operator)
# - name: DB_PASS
# valueFrom:
@ -85,15 +87,17 @@ extraEnvRaw: []
# name: superset.superset-postgres.credentials.postgresql.acid.zalan.do
# key: password
## Extra environment variables to pass as secrets
##
extraSecretEnv: {}
# -- Extra environment variables to pass as secrets
extraSecretEnv:
{}
# MAPBOX_API_KEY: ...
# # Google API Keys: https://console.cloud.google.com/apis/credentials
# GOOGLE_KEY: ...
# GOOGLE_SECRET: ...
extraConfigs: {}
# -- Extra files to mount on `/app/pythonpath`
extraConfigs:
{}
# import_datasources.yaml: |
# databases:
# - allow_file_upload: true
@ -106,34 +110,38 @@ extraConfigs: {}
# sqlalchemy_uri: example://example-db.local
# tables: []
# -- Extra files to mount on `/app/pythonpath` as secrets
extraSecrets: {}
extraVolumes: []
# - name: customConfig
# configMap:
# name: '{{ template "superset.fullname" . }}-custom-config'
# - name: additionalSecret
# secret:
# secretName: my-secret
# defaultMode: 0600
extraVolumes:
[]
# - name: customConfig
# configMap:
# name: '{{ template "superset.fullname" . }}-custom-config'
# - name: additionalSecret
# secret:
# secretName: my-secret
# defaultMode: 0600
extraVolumeMounts: []
# - name: customConfig
# mountPath: /mnt/config
# readOnly: true
# - name: additionalSecret:
# mountPath: /mnt/secret
extraVolumeMounts:
[]
# - name: customConfig
# mountPath: /mnt/config
# readOnly: true
# - name: additionalSecret:
# mountPath: /mnt/secret
# A dictionary of overrides to append at the end of superset_config.py - the name does not matter
# -- A dictionary of overrides to append at the end of superset_config.py - the name does not matter
# WARNING: the order is not guaranteed
configOverrides: {}
# extend_timeout: |
# Files can be passed as helm --set-file configOverrides.my-override=my-file.py
configOverrides:
{}
# extend_timeout: |
# # Extend timeout to allow long running queries.
# SUPERSET_WEBSERVER_TIMEOUT = ...
# enable_oauth: |
# from flask_appbuilder.security.manager import (AUTH_DB, AUTH_OAUTH)
# AUTH_TYPE = AUTH_OAUTH
# OAUTH_PROVIDERS = [
# {
# "name": "google",
@ -162,12 +170,13 @@ configOverrides: {}
# secret: |
# # Generate your own secret key for encryption. Use openssl rand -base64 42 to generate a good key
# SECRET_KEY = 'YOUR_OWN_RANDOM_GENERATED_SECRET_KEY'
# Same as above but the values are files
configOverridesFiles: {}
# -- Same as above but the values are files
configOverridesFiles:
{}
# extend_timeout: extend_timeout.py
# enable_oauth: enable_oauth.py
configMountPath: "/app/pythonpath"
extraConfigMountPath: "/app/configs"
@ -180,21 +189,23 @@ image:
imagePullSecrets: []
initImage:
repository: busybox
repository: jwilder/dockerize
tag: latest
pullPolicy: IfNotPresent
service:
type: ClusterIP
port: 8088
annotations: {}
annotations:
{}
# cloud.google.com/load-balancer-type: "Internal"
loadBalancerIP: null
ingress:
enabled: false
# ingressClassName: nginx
annotations: {}
annotations:
{}
# kubernetes.io/tls-acme: "true"
## Extend timeout to allow long running queries.
# nginx.ingress.kubernetes.io/proxy-connect-timeout: "300"
@ -209,7 +220,8 @@ ingress:
# hosts:
# - chart-example.local
resources: {}
resources:
{}
# We usually recommend not to specify default resources and to leave this as a conscious
# choice for the user. This also increases chances charts run on environments with little
# resources, such as Minikube. If you do want to specify resources, uncomment the following
@ -223,25 +235,24 @@ resources: {}
# cpu: 100m
# memory: 128Mi
##
## Custom hostAliases for all superset pods
# -- Custom hostAliases for all superset pods
## https://kubernetes.io/docs/tasks/network/customize-hosts-file-for-pods/
hostAliases: []
# - hostnames:
# - nodns.my.lan
# ip: 18.27.36.45
##
## Superset node configuration
# Superset node configuration
supersetNode:
replicaCount: 1
# -- Startup command
# @default -- See `values.yaml`
command:
- "/bin/sh"
- "-c"
- ". {{ .Values.configMountPath }}/superset_bootstrap.sh; /usr/bin/run-server.sh"
connections:
# Change in case of bringing your own redis and then also set redis.enabled:false
# -- Change in case of bringing your own redis and then also set redis.enabled:false
redis_host: '{{ template "superset.fullname" . }}-redis-headless'
# redis_password: superset
redis_port: "6379"
@ -252,35 +263,57 @@ supersetNode:
db_pass: superset
db_name: superset
env: {}
forceReload: false # If true, forces deployment to reload on each upgrade
# -- If true, forces deployment to reload on each upgrade
forceReload: false
# -- Init containers
# @default -- a container waiting for postgres
initContainers:
- name: wait-for-postgres
image: "{{ .Values.initImage.repository }}:{{ .Values.initImage.tag }}"
imagePullPolicy: "{{ .Values.initImage.pullPolicy }}"
envFrom:
- secretRef:
name: '{{ tpl .Values.envFromSecret . }}'
command: [ "/bin/sh", "-c", "until nc -zv $DB_HOST $DB_PORT -w1; do echo 'waiting for db'; sleep 1; done" ]
## Annotations to be added to supersetNode deployment
name: "{{ tpl .Values.envFromSecret . }}"
command:
- /bin/sh
- -c
- dockerize -wait "tcp://$DB_HOST:$DB_PORT" -timeout 120s
# -- Annotations to be added to supersetNode deployment
deploymentAnnotations: {}
## Annotations to be added to supersetNode pods
# -- Annotations to be added to supersetNode pods
podAnnotations: {}
## Labels to be added to supersetNode pods
# -- Labels to be added to supersetNode pods
podLabels: {}
startupProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 15
timeoutSeconds: 1
failureThreshold: 60
periodSeconds: 5
successThreshold: 1
livenessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 15
timeoutSeconds: 1
failureThreshold: 3
periodSeconds: 15
successThreshold: 1
readinessProbe:
httpGet:
path: /health
port: http
initialDelaySeconds: 15
timeoutSeconds: 1
failureThreshold: 3
periodSeconds: 15
successThreshold: 1
# Resource settings for the supersetNode pods - these settings overwrite might existing values from the global resources object defined above.
resources: {}
# -- Resource settings for the supersetNode pods - these settings overwrite might existing values from the global resources object defined above.
resources:
{}
# limits:
# cpu: 100m
# memory: 128Mi
@ -289,37 +322,46 @@ supersetNode:
# memory: 128Mi
podSecurityContext: {}
containerSecurityContext: {}
strategy: {}
strategy:
{}
# type: RollingUpdate
# rollingUpdate:
# maxSurge: 25%
# maxUnavailable: 25%
##
## Superset worker configuration
# Superset Celery worker configuration
supersetWorker:
replicaCount: 1
# -- Worker startup command
# @default -- a `celery worker` command
command:
- "/bin/sh"
- "-c"
- ". {{ .Values.configMountPath }}/superset_bootstrap.sh; celery --app=superset.tasks.celery_app:app worker"
forceReload: false # If true, forces deployment to reload on each upgrade
# -- If true, forces deployment to reload on each upgrade
forceReload: false
# -- Init container
# @default -- a container waiting for postgres and redis
initContainers:
- name: wait-for-postgres
- name: wait-for-postgres-redis
image: "{{ .Values.initImage.repository }}:{{ .Values.initImage.tag }}"
imagePullPolicy: "{{ .Values.initImage.pullPolicy }}"
envFrom:
- secretRef:
name: '{{ tpl .Values.envFromSecret . }}'
command: [ "/bin/sh", "-c", "until nc -zv $DB_HOST $DB_PORT -w1; do echo 'waiting for db'; sleep 1; done" ]
## Annotations to be added to supersetWorker deployment
name: "{{ tpl .Values.envFromSecret . }}"
command:
- /bin/sh
- -c
- dockerize -wait "tcp://$DB_HOST:$DB_PORT" -wait "tcp://$REDIS_HOST:$REDIS_PORT" -timeout 120s
# -- Annotations to be added to supersetWorker deployment
deploymentAnnotations: {}
## Annotations to be added to supersetWorker pods
# -- Annotations to be added to supersetWorker pods
podAnnotations: {}
## Labels to be added to supersetWorker pods
# -- Labels to be added to supersetWorker pods
podLabels: {}
# Resource settings for the supersetWorker pods - these settings overwrite might existing values from the global resources object defined above.
resources: {}
# -- Resource settings for the supersetWorker pods - these settings overwrite might existing values from the global resources object defined above.
resources:
{}
# limits:
# cpu: 100m
# memory: 128Mi
@ -328,38 +370,64 @@ supersetWorker:
# memory: 128Mi
podSecurityContext: {}
containerSecurityContext: {}
strategy: {}
strategy:
{}
# type: RollingUpdate
# rollingUpdate:
# maxSurge: 25%
# maxUnavailable: 25%
livenessProbe:
exec:
# -- Liveness probe command
# @default -- a `celery inspect ping` command
command:
- sh
- -c
- celery -A superset.tasks.celery_app:app inspect ping -d celery@$HOSTNAME
initialDelaySeconds: 120
timeoutSeconds: 60
failureThreshold: 3
periodSeconds: 60
successThreshold: 1
# -- No startup/readiness probes by default since we don't really care about its startup time (it doesn't serve traffic)
startupProbe: {}
# -- No startup/readiness probes by default since we don't really care about its startup time (it doesn't serve traffic)
readinessProbe: {}
##
## Superset beat configuration (to trigger scheduled jobs like reports)
# Superset beat configuration (to trigger scheduled jobs like reports)
supersetCeleryBeat:
# This is only required if you intend to use alerts and reports
# -- This is only required if you intend to use alerts and reports
enabled: false
# -- Command
# @default -- a `celery beat` command
command:
- "/bin/sh"
- "-c"
- ". {{ .Values.configMountPath }}/superset_bootstrap.sh; celery --app=superset.tasks.celery_app:app beat --pidfile /tmp/celerybeat.pid --schedule /tmp/celerybeat-schedule"
forceReload: false # If true, forces deployment to reload on each upgrade
# -- If true, forces deployment to reload on each upgrade
forceReload: false
# -- List of init containers
# @default -- a container waiting for postgres
initContainers:
- name: wait-for-postgres
- name: wait-for-postgres-redis
image: "{{ .Values.initImage.repository }}:{{ .Values.initImage.tag }}"
imagePullPolicy: "{{ .Values.initImage.pullPolicy }}"
envFrom:
- secretRef:
name: '{{ tpl .Values.envFromSecret . }}'
command: [ "/bin/sh", "-c", "until nc -zv $DB_HOST $DB_PORT -w1; do echo 'waiting for db'; sleep 1; done" ]
## Annotations to be added to supersetCeleryBeat deployment
name: "{{ tpl .Values.envFromSecret . }}"
command:
- /bin/sh
- -c
- dockerize -wait "tcp://$DB_HOST:$DB_PORT" -wait "tcp://$REDIS_HOST:$REDIS_PORT" -timeout 120s
# -- Annotations to be added to supersetCeleryBeat deployment
deploymentAnnotations: {}
## Annotations to be added to supersetCeleryBeat pods
# -- Annotations to be added to supersetCeleryBeat pods
podAnnotations: {}
## Labels to be added to supersetCeleryBeat pods
# -- Labels to be added to supersetCeleryBeat pods
podLabels: {}
# Resource settings for the CeleryBeat pods - these settings overwrite might existing values from the global resources object defined above.
resources: {}
# -- Resource settings for the CeleryBeat pods - these settings overwrite might existing values from the global resources object defined above.
resources:
{}
# limits:
# cpu: 100m
# memory: 128Mi
@ -368,21 +436,172 @@ supersetCeleryBeat:
# memory: 128Mi
podSecurityContext: {}
containerSecurityContext: {}
##
## Init job configuration
supersetCeleryFlower:
# -- Enables a Celery flower deployment (management UI to monitor celery jobs)
# WARNING: on superset 1.x, this requires a Superset image that has `flower<1.0.0` installed (which is NOT the case of the default images)
# flower>=1.0.0 requires Celery 5+ which Superset 1.5 does not support
enabled: false
replicaCount: 1
# -- Command
# @default -- a `celery flower` command
command:
- "/bin/sh"
- "-c"
- "celery --app=superset.tasks.celery_app:app flower"
service:
type: ClusterIP
annotations: {}
port: 5555
startupProbe:
httpGet:
path: /api/workers
port: flower
initialDelaySeconds: 5
timeoutSeconds: 1
failureThreshold: 60
periodSeconds: 5
successThreshold: 1
livenessProbe:
httpGet:
path: /api/workers
port: flower
initialDelaySeconds: 5
timeoutSeconds: 1
failureThreshold: 3
periodSeconds: 5
successThreshold: 1
readinessProbe:
httpGet:
path: /api/workers
port: flower
initialDelaySeconds: 5
timeoutSeconds: 1
failureThreshold: 3
periodSeconds: 5
successThreshold: 1
# -- List of init containers
# @default -- a container waiting for postgres and redis
initContainers:
- name: wait-for-postgres-redis
image: "{{ .Values.initImage.repository }}:{{ .Values.initImage.tag }}"
imagePullPolicy: "{{ .Values.initImage.pullPolicy }}"
envFrom:
- secretRef:
name: "{{ tpl .Values.envFromSecret . }}"
command:
- /bin/sh
- -c
- dockerize -wait "tcp://$DB_HOST:$DB_PORT" -wait "tcp://$REDIS_HOST:$REDIS_PORT" -timeout 120s
# -- Annotations to be added to supersetCeleryBeat deployment
deploymentAnnotations: {}
# -- Annotations to be added to supersetCeleryBeat pods
podAnnotations: {}
# -- Labels to be added to supersetCeleryBeat pods
podLabels: {}
# -- Resource settings for the CeleryBeat pods - these settings overwrite might existing values from the global resources object defined above.
resources:
{}
# limits:
# cpu: 100m
# memory: 128Mi
# requests:
# cpu: 100m
# memory: 128Mi
podSecurityContext: {}
containerSecurityContext: {}
supersetWebsockets:
# -- This is only required if you intend to use `GLOBAL_ASYNC_QUERIES` in `ws` mode
# see https://github.com/apache/superset/blob/master/CONTRIBUTING.md#async-chart-queries
enabled: false
replicaCount: 1
ingress:
path: /ws
pathType: Prefix
image:
# -- There is no official image (yet), this one is community-supported
repository: oneacrefund/superset-websocket
tag: latest
pullPolicy: IfNotPresent
# -- The config.json to pass to the server, see https://github.com/apache/superset/tree/master/superset-websocket
# Note that the configuration can also read from environment variables (which will have priority), see https://github.com/apache/superset/blob/master/superset-websocket/src/config.ts for a list of supported variables
# @default -- see `values.yaml`
config:
{
"port": 8080,
"logLevel": "debug",
"logToFile": false,
"logFilename": "app.log",
"statsd": { "host": "127.0.0.1", "port": 8125, "globalTags": [] },
"redis":
{
"port": 6379,
"host": "127.0.0.1",
"password": "",
"db": 0,
"ssl": false,
},
"redisStreamPrefix": "async-events-",
"jwtSecret": "CHANGE-ME",
"jwtCookieName": "async-token",
}
service:
type: ClusterIP
annotations: {}
port: 8080
command: []
resources: {}
deploymentAnnotations: {}
podAnnotations: {}
podLabels: {}
strategy: {}
podSecurityContext: {}
containerSecurityContext: {}
startupProbe:
httpGet:
path: /health
port: ws
initialDelaySeconds: 5
timeoutSeconds: 1
failureThreshold: 60
periodSeconds: 5
successThreshold: 1
livenessProbe:
httpGet:
path: /health
port: ws
initialDelaySeconds: 5
timeoutSeconds: 1
failureThreshold: 3
periodSeconds: 5
successThreshold: 1
readinessProbe:
httpGet:
path: /health
port: ws
initialDelaySeconds: 5
timeoutSeconds: 1
failureThreshold: 3
periodSeconds: 5
successThreshold: 1
init:
# Configure resources
# Warning: fab command consumes a lot of ram and can
# cause the process to be killed due to OOM if it exceeds limit
# Make sure you are giving a strong password for the admin user creation( else make sure you are changing after setup)
# Also change the admin email to your own custom email.
resources: {}
resources:
{}
# limits:
# cpu:
# memory:
# requests:
# cpu:
# memory:
# -- Command
# @default -- a `superset_init.sh` command
command:
- "/bin/sh"
- "-c"
@ -396,14 +615,21 @@ init:
lastname: Admin
email: admin@superset.com
password: admin
# -- List of initContainers
# @default -- a container waiting for postgres
initContainers:
- name: wait-for-postgres
image: "{{ .Values.initImage.repository }}:{{ .Values.initImage.tag }}"
imagePullPolicy: "{{ .Values.initImage.pullPolicy }}"
envFrom:
- secretRef:
name: '{{ tpl .Values.envFromSecret . }}'
command: [ "/bin/sh", "-c", "until nc -zv $DB_HOST $DB_PORT -w1; do echo 'waiting for db'; sleep 1; done" ]
name: "{{ tpl .Values.envFromSecret . }}"
command:
- /bin/sh
- -c
- dockerize -wait "tcp://$DB_HOST:$DB_PORT" -timeout 120s
# -- A Superset init script
# @default -- a script to create admin user and initailize roles
initscript: |-
#!/bin/sh
set -eu
@ -433,9 +659,10 @@ init:
podAnnotations: {}
podSecurityContext: {}
containerSecurityContext: {}
##
## Configuration values for the postgresql dependency.
## ref: https://github.com/kubernetes/charts/blob/master/stable/postgresql/README.md
# -- Configuration values for the postgresql dependency.
# ref: https://github.com/kubernetes/charts/blob/master/stable/postgresql/README.md
# @default -- see `values.yaml`
postgresql:
##
## Use the PostgreSQL chart dependency.
@ -453,7 +680,6 @@ postgresql:
## PostgreSQL name for a custom database to create
database: superset
## PostgreSQL Primary parameters
primary:
##
@ -475,9 +701,10 @@ postgresql:
ports:
postgresql: "5432"
## Configuration values for the Redis dependency.
## ref: https://github.com/bitnami/charts/blob/master/bitnami/redis
## More documentation can be found here: https://artifacthub.io/packages/helm/bitnami/redis
# -- Configuration values for the Redis dependency.
# ref: https://github.com/bitnami/charts/blob/master/bitnami/redis
# More documentation can be found here: https://artifacthub.io/packages/helm/bitnami/redis
# @default -- see `values.yaml`
redis:
##
## Use the redis chart dependency.
@ -508,9 +735,9 @@ redis:
##
## Image configuration
# image:
##
## docker registry secret names (list)
# pullSecrets: nil
##
## docker registry secret names (list)
# pullSecrets: nil
##
## Configure persistance
persistence:
@ -523,7 +750,7 @@ redis:
##
## Access mode:
accessModes:
- ReadWriteOnce
- ReadWriteOnce
nodeSelector: {}

View File

@ -18,7 +18,7 @@
rules:
braces:
min-spaces-inside: 0
max-spaces-inside: 0
max-spaces-inside: 1
min-spaces-inside-empty: -1
max-spaces-inside-empty: -1
brackets:
@ -37,7 +37,7 @@ rules:
require-starting-space: false
min-spaces-from-content: -1
document-end: disable
document-start: disable # No --- to start a file
document-start: disable # No --- to start a file
empty-lines:
max: 2
max-start: 0
@ -46,10 +46,10 @@ rules:
max-spaces-after: 1
indentation:
spaces: consistent
indent-sequences: whatever # - list indentation will handle both indentation and without
indent-sequences: whatever # - list indentation will handle both indentation and without
check-multi-line-strings: false
key-duplicates: enable
line-length: disable # Lines can be any length
line-length: disable # Lines can be any length
new-line-at-end-of-file: enable
new-lines:
type: unix