Add helm chart for Apache Druid (#11163)

* Add helm chart for Apache Druid

* Add license headers
This commit is contained in:
Benedict Jin 2021-04-29 12:38:50 +08:00 committed by GitHub
parent 941440afb6
commit ed81548ff7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
30 changed files with 2273 additions and 0 deletions

29
helm/Chart.yaml Normal file
View File

@ -0,0 +1,29 @@
# 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: v1
appVersion: 0.19.0
description: DEPRECATED Apache Druid is a high performance real-time analytics database.
name: druid
version: 0.2.18
home: https://druid.apache.org/
icon: https://druid.apache.org/img/favicon.png
deprecated: true
sources:
- https://github.com/apache/druid
keywords:
- olap
- database
- analytics

209
helm/README.md Normal file
View File

@ -0,0 +1,209 @@
<!--
~ 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.
-->
# Apache Druid
[Apache Druid](https://druid.apache.org/) is a high performance real-time analytics database.
## DEPRECATION NOTICE
This chart is deprecated and no longer supported.
## Install Chart
To install the Druid Chart into your Kubernetes cluster :
```bash
helm install --namespace "druid" --name "druid" incubator/druid
```
After installation succeeds, you can get a status of Chart
```bash
helm status "druid"
```
If you want to delete your Chart, use this command:
```bash
helm delete --purge "druid"
```
### Helm ingresses
The Chart provides ingress configuration to allow customization the installation by adapting
the `values.yaml` depending on your setup.
Please read the comments in the `values.yaml` file for more details on how to configure your reverse
proxy or load balancer.
### Chart Prefix
This Helm automatically prefixes all names using the release name to avoid collisions.
### URL prefix
This chart exposes 6 endpoints:
- Druid Overlord
- Druid Broker
- Druid Coordinator
- Druid Historical
- Druid Middle Manager
- Druid Router
### Druid configuration
Druid configuration can be changed by using environment variables from Docker image.
See the
[Druid Docker entry point](https://github.com/apache/druid/blob/master/distribution/docker/druid.sh)
for more informations
### Middle Manager and Historical Statefulset
Middle Managers and Historicals uses StatefulSet. Persistence is enabled by default.
## Helm chart Configuration
The following table lists the configurable parameters of the Druid chart and their default values.
| Parameter | Description | Default |
|------------------------------------------|---------------------------------------------------------|--------------------------------------------|
| `image.repository` | container image name | `apache/druid` |
| `image.tag` | container image tag | `0.19.0` |
| `image.pullPolicy` | container pull policy | `IfNotPresent` |
| `image.pullSecrets` | image pull secrest for private repositoty | `[]` |
| `configMap.enabled` | enable druid configuration as configmap | `true` |
| `configVars` | druid configuration variables for all components | `` |
| `gCloudStorage.enabled` | look for secret to set google cloud credentials | `false` |
| `gCloudStorage.secretName` | secretName to be mounted as google cloud credentials | `false` |
| `broker.enabled` | enable broker | `true` |
| `broker.name` | broker component name | `broker` |
| `broker.replicaCount` | broker node replicas (deployment) | `1` |
| `broker.port` | port of broker component | `8082` |
| `broker.serviceType` | service type for service | `ClusterIP` |
| `broker.resources` | broker node resources requests & limits | `{}` |
| `broker.podAnnotations` | broker deployment annotations | `{}` |
| `broker.nodeSelector` | Node labels for broker pod assignment | `{}` |
| `broker.tolerations` | broker tolerations | `[]` |
| `broker.config` | broker private config such as `JAVA_OPTS` | |
| `broker.affinity` | broker affinity policy | `{}` |
| `broker.ingress.enabled` | enable ingress | `false` |
| `broker.ingress.hosts` | hosts for the broker api | `[ "chart-example.local" ]` |
| `broker.ingress.path` | path of the broker api | `/` |
| `broker.ingress.annotations` | annotations for the broker api ingress | `{}` |
| `broker.ingress.tls` | TLS configuration for the ingress | `[]` |
| `coordinator.enabled` | enable coordinator | `true` |
| `coordinator.name` | coordinator component name | `coordinator` |
| `coordinator.replicaCount` | coordinator node replicas (deployment) | `1` |
| `coordinator.port` | port of coordinator component | `8081` |
| `coordinator.serviceType` | service type for service | `ClusterIP` |
| `coordinator.resources` | coordinator node resources requests & limits | `{}` |
| `coordinator.podAnnotations` | coordinator Deployment annotations | `{}` |
| `coordinator.nodeSelector` | node labels for coordinator pod assignment | `{}` |
| `coordinator.tolerations` | coordinator tolerations | `[]` |
| `coordinator.config` | coordinator private config such as `JAVA_OPTS` | |
| `coordinator.affinity` | coordinator affinity policy | `{}` |
| `coordinator.ingress.enabled` | enable ingress | `false` |
| `coordinator.ingress.hosts` | hosts for the coordinator api | `[ "chart-example.local" ]` |
| `coordinator.ingress.path` | path of the coordinator api | `/` |
| `coordinator.ingress.annotations` | annotations for the coordinator api ingress | `{}` |
| `coordinator.ingress.tls` | TLS configuration for the ingress | `[]` |
| `overlord.enabled` | enable overlord | `false` |
| `overlord.name` | overlord component name | `overlord` |
| `overlord.replicaCount` | overlord node replicas (deployment) | `1` |
| `overlord.port` | port of overlord component | `8081` |
| `overlord.serviceType` | service type for service | `ClusterIP` |
| `overlord.resources` | overlord node resources requests & limits | `{}` |
| `overlord.podAnnotations` | overlord Deployment annotations | `{}` |
| `overlord.nodeSelector` | node labels for overlord pod assignment | `{}` |
| `overlord.tolerations` | overlord tolerations | `[]` |
| `overlord.config` | overlord private config such as `JAVA_OPTS` | |
| `overlord.affinity` | overlord affinity policy | `{}` |
| `overlord.ingress.enabled` | enable ingress | `false` |
| `overlord.ingress.hosts` | hosts for the overlord api | `[ "chart-example.local" ]` |
| `overlord.ingress.path` | path of the overlord api | `/` |
| `overlord.ingress.annotations` | annotations for the overlord api ingress | `{}` |
| `overlord.ingress.tls` | TLS configuration for the ingress | `[]` |
| `historical.enabled` | enable historical | `true` |
| `historical.name` | historical component name | `historical` |
| `historical.replicaCount` | historical node replicas (statefulset) | `1` |
| `historical.port` | port of historical component | `8083` |
| `historical.serviceType` | service type for service | `ClusterIP` |
| `historical.resources` | historical node resources requests & limits | `{}` |
| `historical.podAnnotations` | historical Deployment annotations | `{}` |
| `historical.nodeSelector` | node labels for historical pod assignment | `{}` |
| `historical.securityContext` | custom security context for historical containers | `{ fsGroup: 1000 }` |
| `historical.tolerations` | historical tolerations | `[]` |
| `historical.config` | historical node private config such as `JAVA_OPTS` | |
| `historical.persistence.enabled` | historical persistent enabled/disabled | `true` |
| `historical.persistence.size` | historical persistent volume size | `4Gi` |
| `historical.persistence.storageClass` | historical persistent volume Class | `nil` |
| `historical.persistence.accessMode` | historical persistent Access Mode | `ReadWriteOnce` |
| `historical.antiAffinity` | historical anti-affinity policy | `soft` |
| `historical.nodeAffinity` | historical node affinity policy | `{}` |
| `historical.ingress.enabled` | enable ingress | `false` |
| `historical.ingress.hosts` | hosts for the historical api | `[ "chart-example.local" ]` |
| `historical.ingress.path` | path of the historical api | `/` |
| `historical.ingress.annotations` | annotations for the historical api ingress | `{}` |
| `historical.ingress.tls` | TLS configuration for the ingress | `[]` |
| `middleManager.enabled` | enable middleManager | `true` |
| `middleManager.name` | middleManager component name | `middleManager` |
| `middleManager.replicaCount` | middleManager node replicas (statefulset) | `1` |
| `middleManager.port` | port of middleManager component | `8091` |
| `middleManager.serviceType` | service type for service | `ClusterIP` |
| `middleManager.resources` | middleManager node resources requests & limits | `{}` |
| `middleManager.podAnnotations` | middleManager Deployment annotations | `{}` |
| `middleManager.nodeSelector` | Node labels for middleManager pod assignment | `{}` |
| `middleManager.securityContext` | custom security context for middleManager containers | `{ fsGroup: 1000 }` |
| `middleManager.tolerations` | middleManager tolerations | `[]` |
| `middleManager.config` | middleManager private config such as `JAVA_OPTS` | |
| `middleManager.persistence.enabled` | middleManager persistent enabled/disabled | `true` |
| `middleManager.persistence.size` | middleManager persistent volume size | `4Gi` |
| `middleManager.persistence.storageClass` | middleManager persistent volume Class | `nil` |
| `middleManager.persistence.accessMode` | middleManager persistent Access Mode | `ReadWriteOnce` |
| `middleManager.antiAffinity` | middleManager anti-affinity policy | `soft` |
| `middleManager.nodeAffinity` | middleManager node affinity policy | `{}` |
| `middleManager.autoscaling.enabled` | enable horizontal pod autoscaling | `false` |
| `middleManager.autoscaling.minReplicas` | middleManager autoscaling min replicas | `2` |
| `middleManager.autoscaling.maxReplicas` | middleManager autoscaling max replicas | `5` |
| `middleManager.autoscaling.metrics` | middleManager autoscaling metrics | `{}` |
| `middleManager.ingress.enabled` | enable ingress | `false` |
| `middleManager.ingress.hosts` | hosts for the middleManager api | `[ "chart-example.local" ]` |
| `middleManager.ingress.path` | path of the middleManager api | `/` |
| `middleManager.ingress.annotations` | annotations for the middleManager api ingress | `{}` |
| `middleManager.ingress.tls` | TLS configuration for the ingress | `[]` |
| `router.enabled` | enable router | `false` |
| `router.name` | router component name | `router` |
| `router.replicaCount` | router node replicas (deployment) | `1` |
| `router.port` | port of router component | `8888` |
| `router.serviceType` | service type for service | `ClusterIP` |
| `router.resources` | router node resources requests & limits | `{}` |
| `router.podAnnotations` | router Deployment annotations | `{}` |
| `router.nodeSelector` | node labels for router pod assignment | `{}` |
| `router.tolerations` | router tolerations | `[]` |
| `router.config` | router private config such as `JAVA_OPTS` | |
| `router.affinity` | router affinity policy | `{}` |
| `router.ingress.enabled` | enable ingress | `false` |
| `router.ingress.hosts` | hosts for the router api | `[ "chart-example.local" ]` |
| `router.ingress.path` | path of the router api | `/` |
| `router.ingress.annotations` | annotations for the router api ingress | `{}` |
| `router.ingress.tls` | TLS configuration for the ingress | `[]` |
Full and up-to-date documentation can be found in the comments of the `values.yaml` file.

27
helm/requirements.lock Normal file
View File

@ -0,0 +1,27 @@
# 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.
dependencies:
- name: zookeeper
repository: https://charts.helm.sh/incubator
version: 2.1.4
- name: mysql
repository: https://charts.helm.sh/stable
version: 1.6.4
- name: postgresql
repository: https://charts.helm.sh/stable
version: 8.6.4
digest: sha256:9d0d913f859b6adcd4d9006ee6fa1f7eae86795bb79c7392e1ce6d74d5d853f6
generated: "2020-10-30T03:45:54.8287927Z"

28
helm/requirements.yaml Normal file
View File

@ -0,0 +1,28 @@
# 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.
dependencies:
- name: zookeeper
version: 2.1.4
repository: https://charts.helm.sh/incubator
condition: zookeeper.enabled
- name: mysql
version: 1.6.4
repository: https://charts.helm.sh/stable
condition: mysql.enabled
- name: postgresql
version: 8.6.4
repository: https://charts.helm.sh/stable
condition: postgresql.enabled

34
helm/templates/NOTES.txt Normal file
View File

@ -0,0 +1,34 @@
# 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.
1. Get the router URL by running these commands:
{{- if .Values.router.ingress.enabled }}
{{- range .Values.router.ingress.hosts }}
http{{ if $.Values.router.ingress.tls }}s{{ end }}://{{ . }}{{ $.Values.router.ingress.path }}
{{- end }}
{{- else if contains "NodePort" .Values.router.serviceType }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "druid.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.router.serviceType }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get svc -w {{ include "druid.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "druid.fullname" . }} -o jsonpath='{.status.loadBalancer.ingress[0].ip}')
echo http://$SERVICE_IP:{{ .Values.router.port }}
{{- else if contains "ClusterIP" .Values.router.serviceType }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app={{ include "druid.name" . }},release={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl port-forward $POD_NAME 8080:{{ .Values.router.port }}
{{- end }}

100
helm/templates/_helpers.tpl Normal file
View File

@ -0,0 +1,100 @@
{{/*
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.
*/}}
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "druid.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "druid.fullname" -}}
{{- if .Values.fullnameOverride -}}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- $name := default .Chart.Name .Values.nameOverride -}}
{{- if contains $name .Release.Name -}}
{{- .Release.Name | trunc 63 | trimSuffix "-" -}}
{{- else -}}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{- end -}}
{{- end -}}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "druid.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" -}}
{{- end -}}
{{/*
Create a default fully qualified historical name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
*/}}
{{- define "druid.historical.fullname" -}}
{{ template "druid.fullname" . }}-{{ .Values.historical.name }}
{{- end -}}
{{/*
Create a default fully qualified middleManager name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
*/}}
{{- define "druid.middleManager.fullname" -}}
{{ template "druid.fullname" . }}-{{ .Values.middleManager.name }}
{{- end -}}
{{/*
Create a default fully qualified broker name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
*/}}
{{- define "druid.broker.fullname" -}}
{{ template "druid.fullname" . }}-{{ .Values.broker.name }}
{{- end -}}
{{/*
Create a default fully qualified overlord name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
*/}}
{{- define "druid.overlord.fullname" -}}
{{ template "druid.fullname" . }}-{{ .Values.overlord.name }}
{{- end -}}
{{/*
Create a default fully qualified coordinator name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
*/}}
{{- define "druid.coordinator.fullname" -}}
{{ template "druid.fullname" . }}-{{ .Values.coordinator.name }}
{{- end -}}
{{/*
Create a default fully qualified router name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
*/}}
{{- define "druid.router.fullname" -}}
{{ template "druid.fullname" . }}-{{ .Values.router.name }}
{{- end -}}

View File

@ -0,0 +1,90 @@
# 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.broker.enabled -}}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "druid.broker.fullname" . }}
labels:
app: {{ include "druid.name" . }}
chart: {{ include "druid.chart" . }}
component: {{ .Values.broker.name }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
replicas: {{ .Values.broker.replicaCount }}
selector:
matchLabels:
app: {{ include "druid.name" . }}
release: {{ .Release.Name }}
component: {{ .Values.broker.name }}
template:
metadata:
labels:
app: {{ include "druid.name" . }}
release: {{ .Release.Name }}
component: {{ .Values.broker.name }}
{{- with .Values.broker.podAnnotations }}
annotations:
{{ toYaml . | indent 8 }}
{{- end }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
args: [ "broker" ]
env:
{{- range $key, $val := .Values.broker.config }}
- name: {{ $key }}
value: {{ $val | quote }}
{{- end}}
envFrom:
- configMapRef:
name: {{ template "druid.name" . }}
ports:
- name: http
containerPort: {{ .Values.broker.port }}
protocol: TCP
livenessProbe:
initialDelaySeconds: 60
httpGet:
path: /status/health
port: {{ .Values.broker.port }}
readinessProbe:
initialDelaySeconds: 60
httpGet:
path: /status/health
port: {{ .Values.broker.port }}
resources:
{{ toYaml .Values.broker.resources | indent 12 }}
{{- with .Values.broker.nodeSelector }}
nodeSelector:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.broker.affinity }}
affinity:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.broker.tolerations }}
tolerations:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.image.pullSecrets }}
imagePullSecrets:
{{ toYaml . | indent 8 }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,54 @@
# 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.broker.ingress.enabled -}}
{{- $fullName := include "druid.broker.fullname" . -}}
{{- $ingressPath := .Values.broker.ingress.path -}}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ $fullName }}
labels:
app: {{ include "druid.name" . }}
chart: {{ include "druid.chart" . }}
component: {{ .Values.broker.name }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- with .Values.broker.ingress.annotations }}
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
spec:
{{- if .Values.broker.ingress.tls }}
tls:
{{- range .Values.broker.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.broker.ingress.hosts }}
- host: {{ . | quote }}
http:
paths:
- path: {{ $ingressPath }}
backend:
serviceName: {{ $fullName }}
servicePort: http
{{- end }}
{{- end }}

View File

@ -0,0 +1,38 @@
# 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.broker.enabled -}}
apiVersion: v1
kind: Service
metadata:
name: {{ include "druid.broker.fullname" . }}
labels:
app: {{ include "druid.name" . }}
chart: {{ include "druid.chart" . }}
component: {{ .Values.broker.name }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
type: {{ .Values.broker.serviceType }}
ports:
- port: {{ .Values.broker.port }}
targetPort: http
protocol: TCP
name: http
selector:
app: {{ include "druid.name" . }}
release: {{ .Release.Name }}
component: {{ .Values.broker.name }}
{{- end }}

View File

@ -0,0 +1,48 @@
# 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.configMap.enabled -}}
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ template "druid.name" . }}
labels:
app: {{ template "druid.name" . }}
chart: {{ template "druid.chart" . }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
data:
{{ toYaml .Values.configVars | indent 2 }}
{{- if .Values.zookeeper.enabled }}
druid_zk_service_host: {{ .Release.Name }}-zookeeper-headless:2181
{{- else }}
druid_zk_service_host: {{ .Values.zkHosts }}
{{- end }}
{{- if .Values.mysql.enabled }}
druid_metadata_storage_type: mysql
druid_metadata_storage_connector_connectURI: jdbc:mysql://{{ .Release.Name }}-mysql:3306/{{ .Values.mysql.mysqlDatabase}}
druid_metadata_storage_connector_user: {{ .Values.mysql.mysqlUser }}
druid_metadata_storage_connector_password: {{ .Values.mysql.mysqlPassword }}
{{- end }}
{{- if .Values.postgresql.enabled }}
druid_metadata_storage_type: postgresql
druid_metadata_storage_connector_connectURI: jdbc:postgresql://{{ .Release.Name }}-postgresql:{{ .Values.postgresql.service.port}}/{{ .Values.postgresql.postgresqlDatabase }}
druid_metadata_storage_connector_user: {{ .Values.postgresql.postgresqlUsername }}
druid_metadata_storage_connector_password: {{ .Values.postgresql.postgresqlPassword }}
{{- end }}
{{- if .Values.gCloudStorage.enabled }}
GOOGLE_APPLICATION_CREDENTIALS: /var/secrets/google/key.json
{{- end }}
{{- end }}

View File

@ -0,0 +1,101 @@
# 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.coordinator.enabled -}}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "druid.coordinator.fullname" . }}
labels:
app: {{ include "druid.name" . }}
chart: {{ include "druid.chart" . }}
component: {{ .Values.coordinator.name }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
replicas: {{ .Values.coordinator.replicaCount }}
selector:
matchLabels:
app: {{ include "druid.name" . }}
release: {{ .Release.Name }}
component: {{ .Values.coordinator.name }}
template:
metadata:
labels:
app: {{ include "druid.name" . }}
release: {{ .Release.Name }}
component: {{ .Values.coordinator.name }}
{{- with .Values.coordinator.podAnnotations }}
annotations:
{{ toYaml . | indent 8 }}
{{- end }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
args: [ "coordinator" ]
env:
{{- range $key, $val := .Values.coordinator.config }}
- name: {{ $key }}
value: {{ $val | quote }}
{{- end}}
envFrom:
- configMapRef:
name: {{ template "druid.name" . }}
ports:
- name: http
containerPort: {{ .Values.coordinator.port }}
protocol: TCP
livenessProbe:
initialDelaySeconds: 60
httpGet:
path: /status/health
port: {{ .Values.coordinator.port }}
readinessProbe:
initialDelaySeconds: 60
httpGet:
path: /status/health
port: {{ .Values.coordinator.port }}
resources:
{{ toYaml .Values.coordinator.resources | indent 12 }}
volumeMounts:
{{- if .Values.gCloudStorage.enabled }}
- name: google-cloud-key
mountPath: /var/secrets/google
{{- end }}
volumes:
{{- if .Values.gCloudStorage.enabled }}
- name: google-cloud-key
secret:
secretName: {{ .Values.gCloudStorage.secretName }}
{{- end }}
{{- with .Values.coordinator.nodeSelector }}
nodeSelector:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.coordinator.affinity }}
affinity:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.coordinator.tolerations }}
tolerations:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.image.pullSecrets }}
imagePullSecrets:
{{ toYaml . | indent 8 }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,54 @@
# 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.coordinator.ingress.enabled -}}
{{- $fullName := include "druid.coordinator.fullname" . -}}
{{- $ingressPath := .Values.coordinator.ingress.path -}}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ $fullName }}
labels:
app: {{ include "druid.name" . }}
chart: {{ include "druid.chart" . }}
component: {{ .Values.coordinator.name }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- with .Values.coordinator.ingress.annotations }}
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
spec:
{{- if .Values.coordinator.ingress.tls }}
tls:
{{- range .Values.coordinator.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.coordinator.ingress.hosts }}
- host: {{ . | quote }}
http:
paths:
- path: {{ $ingressPath }}
backend:
serviceName: {{ $fullName }}
servicePort: http
{{- end }}
{{- end }}

View File

@ -0,0 +1,38 @@
# 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.coordinator.enabled -}}
apiVersion: v1
kind: Service
metadata:
name: {{ include "druid.coordinator.fullname" . }}
labels:
app: {{ include "druid.name" . }}
chart: {{ include "druid.chart" . }}
component: {{ .Values.coordinator.name }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
type: {{ .Values.coordinator.serviceType }}
ports:
- port: {{ .Values.coordinator.port }}
targetPort: http
protocol: TCP
name: http
selector:
app: {{ include "druid.name" . }}
release: {{ .Release.Name }}
component: {{ .Values.coordinator.name }}
{{- end }}

View File

@ -0,0 +1,54 @@
# 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.historical.ingress.enabled -}}
{{- $fullName := include "druid.historical.fullname" . -}}
{{- $ingressPath := .Values.historical.ingress.path -}}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ $fullName }}
labels:
app: {{ include "druid.name" . }}
chart: {{ include "druid.chart" . }}
component: {{ .Values.historical.name }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- with .Values.historical.ingress.annotations }}
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
spec:
{{- if .Values.historical.ingress.tls }}
tls:
{{- range .Values.historical.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.historical.ingress.hosts }}
- host: {{ . | quote }}
http:
paths:
- path: {{ $ingressPath }}
backend:
serviceName: {{ $fullName }}
servicePort: http
{{- end }}
{{- end }}

View File

@ -0,0 +1,39 @@
# 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.historical.podDisruptionBudget.enabled }}
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
labels:
app: {{ template "druid.name" . }}
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
component: {{ .Values.historical.name }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
name: {{ template "druid.historical.fullname" . }}
spec:
{{- if .Values.historical.podDisruptionBudget.minAvailable }}
minAvailable: {{ .Values.historical.podDisruptionBudget.minAvailable }}
{{- end }}
{{- if .Values.historical.podDisruptionBudget.maxUnavailable }}
maxUnavailable: {{ .Values.historical.podDisruptionBudget.maxUnavailable }}
{{- end }}
selector:
matchLabels:
app: {{ template "druid.name" . }}
component: {{ .Values.historical.name }}
release: {{ .Release.Name }}
{{- end }}

View File

@ -0,0 +1,38 @@
# 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.historical.enabled -}}
apiVersion: v1
kind: Service
metadata:
name: {{ include "druid.historical.fullname" . }}
labels:
app: {{ include "druid.name" . }}
chart: {{ include "druid.chart" . }}
component: {{ .Values.historical.name }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
type: {{ .Values.historical.serviceType }}
ports:
- port: {{ .Values.historical.port }}
targetPort: http
protocol: TCP
name: http
selector:
app: {{ include "druid.name" . }}
release: {{ .Release.Name }}
component: {{ .Values.historical.name }}
{{- end }}

View File

@ -0,0 +1,155 @@
# 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.historical.enabled -}}
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app: {{ template "druid.name" . }}
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
component: {{ .Values.historical.name }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
name: {{ template "druid.historical.fullname" . }}
spec:
serviceName: {{ template "druid.historical.fullname" . }}
replicas: {{ .Values.historical.replicaCount }}
selector:
matchLabels:
app: {{ include "druid.name" . }}
release: {{ .Release.Name }}
component: {{ .Values.historical.name }}
template:
metadata:
labels:
app: {{ template "druid.name" . }}
component: {{ .Values.historical.name }}
release: {{ .Release.Name }}
{{- with .Values.historical.podAnnotations }}
annotations:
{{ toYaml . | indent 8 }}
{{- end }}
spec:
{{- if or .Values.historical.antiAffinity .Values.historical.nodeAffinity }}
affinity:
{{- end }}
{{- if eq .Values.historical.antiAffinity "hard" }}
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- topologyKey: "kubernetes.io/hostname"
labelSelector:
matchLabels:
app: "{{ template "druid.name" . }}"
release: "{{ .Release.Name }}"
component: "{{ .Values.historical.name }}"
{{- else if eq .Values.historical.antiAffinity "soft" }}
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
podAffinityTerm:
topologyKey: kubernetes.io/hostname
labelSelector:
matchLabels:
app: "{{ template "druid.name" . }}"
release: "{{ .Release.Name }}"
component: "{{ .Values.historical.name }}"
{{- end }}
{{- with .Values.historical.nodeAffinity }}
nodeAffinity:
{{ toYaml . | indent 10 }}
{{- end }}
{{- if .Values.historical.nodeSelector }}
nodeSelector:
{{ toYaml .Values.historical.nodeSelector | indent 8 }}
{{- end }}
{{- if .Values.historical.securityContext }}
securityContext:
{{ toYaml .Values.historical.securityContext | indent 8 }}
{{- end }}
{{- if .Values.historical.tolerations }}
tolerations:
{{ toYaml .Values.historical.tolerations | indent 8 }}
{{- end }}
{{- if .Values.image.pullSecrets }}
imagePullSecrets:
{{ toYaml .Values.image.pullSecrets | indent 8 }}
{{- end }}
containers:
- name: druid
args: [ "historical" ]
env:
{{- range $key, $val := .Values.historical.config }}
- name: {{ $key }}
value: {{ $val | quote }}
{{- end}}
envFrom:
- configMapRef:
name: {{ template "druid.name" . }}
resources:
{{ toYaml .Values.historical.resources | indent 12 }}
livenessProbe:
initialDelaySeconds: 60
httpGet:
path: /status/health
port: {{ .Values.historical.port }}
readinessProbe:
initialDelaySeconds: 60
httpGet:
path: /status/health
port: {{ .Values.historical.port }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
ports:
- containerPort: {{ .Values.historical.port }}
name: http
volumeMounts:
- mountPath: /opt/druid/var/druid/
name: data
{{- if .Values.gCloudStorage.enabled }}
- name: google-cloud-key
mountPath: /var/secrets/google
{{- end }}
volumes:
{{- if not .Values.historical.persistence.enabled }}
- name: data
emptyDir: {}
{{- end }}
{{- if .Values.gCloudStorage.enabled }}
- name: google-cloud-key
secret:
secretName: {{ .Values.gCloudStorage.secretName }}
{{- end }}
updateStrategy:
type: {{ .Values.historical.updateStrategy.type }}
{{- if .Values.historical.persistence.enabled }}
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes:
- {{ .Values.historical.persistence.accessMode | quote }}
{{- if .Values.historical.persistence.storageClass }}
{{- if (eq "-" .Values.historical.persistence.storageClass) }}
storageClassName: ""
{{- else }}
storageClassName: "{{ .Values.historical.persistence.storageClass }}"
{{- end }}
{{- end }}
resources:
requests:
storage: "{{ .Values.historical.persistence.size }}"
{{- end }}
{{- end }}

View File

@ -0,0 +1,36 @@
# 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.middleManager.autoscaling.enabled }}
apiVersion: autoscaling/v2beta2
kind: HorizontalPodAutoscaler
metadata:
name: {{ include "druid.middleManager.fullname" . }}
labels:
app: {{ include "druid.name" . }}
chart: {{ include "druid.chart" . }}
component: "{{ .Values.name }}"
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: StatefulSet
name: {{ include "druid.middleManager.fullname" . }}
minReplicas: {{ .Values.middleManager.autoscaling.minReplicas }}
maxReplicas: {{ .Values.middleManager.autoscaling.maxReplicas }}
metrics:
{{ toYaml .Values.middleManager.autoscaling.metrics | indent 4 }}
{{- end }}

View File

@ -0,0 +1,54 @@
# 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.middleManager.ingress.enabled -}}
{{- $fullName := include "druid.middleManager.fullname" . -}}
{{- $ingressPath := .Values.middleManager.ingress.path -}}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ $fullName }}
labels:
app: {{ include "druid.name" . }}
chart: {{ include "druid.chart" . }}
component: {{ .Values.middleManager.name }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- with .Values.middleManager.ingress.annotations }}
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
spec:
{{- if .Values.middleManager.ingress.tls }}
tls:
{{- range .Values.middleManager.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.middleManager.ingress.hosts }}
- host: {{ . | quote }}
http:
paths:
- path: {{ $ingressPath }}
backend:
serviceName: {{ $fullName }}
servicePort: http
{{- end }}
{{- end }}

View File

@ -0,0 +1,39 @@
# 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.middleManager.podDisruptionBudget.enabled }}
apiVersion: policy/v1beta1
kind: PodDisruptionBudget
metadata:
labels:
app: {{ template "druid.name" . }}
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
component: {{ .Values.middleManager.name }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
name: {{ template "druid.middleManager.fullname" . }}
spec:
{{- if .Values.middleManager.podDisruptionBudget.minAvailable }}
minAvailable: {{ .Values.middleManager.podDisruptionBudget.minAvailable }}
{{- end }}
{{- if .Values.middleManager.podDisruptionBudget.maxUnavailable }}
maxUnavailable: {{ .Values.middleManager.podDisruptionBudget.maxUnavailable }}
{{- end }}
selector:
matchLabels:
app: {{ template "druid.name" . }}
component: {{ .Values.middleManager.name }}
release: {{ .Release.Name }}
{{- end }}

View File

@ -0,0 +1,38 @@
# 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.middleManager.enabled -}}
apiVersion: v1
kind: Service
metadata:
name: {{ include "druid.middleManager.fullname" . }}
labels:
app: {{ include "druid.name" . }}
chart: {{ include "druid.chart" . }}
component: {{ .Values.middleManager.name }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
type: {{ .Values.middleManager.serviceType }}
ports:
- port: {{ .Values.middleManager.port }}
targetPort: http
protocol: TCP
name: http
selector:
app: {{ include "druid.name" . }}
release: {{ .Release.Name }}
component: {{ .Values.middleManager.name }}
{{- end }}

View File

@ -0,0 +1,155 @@
# 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.middleManager.enabled -}}
apiVersion: apps/v1
kind: StatefulSet
metadata:
labels:
app: {{ template "druid.name" . }}
chart: {{ .Chart.Name }}-{{ .Chart.Version }}
component: {{ .Values.middleManager.name }}
heritage: {{ .Release.Service }}
release: {{ .Release.Name }}
name: {{ template "druid.middleManager.fullname" . }}
spec:
serviceName: {{ template "druid.middleManager.fullname" . }}
replicas: {{ .Values.middleManager.replicaCount }}
selector:
matchLabels:
app: {{ include "druid.name" . }}
release: {{ .Release.Name }}
component: {{ .Values.middleManager.name }}
template:
metadata:
labels:
app: {{ template "druid.name" . }}
component: {{ .Values.middleManager.name }}
release: {{ .Release.Name }}
{{- if .Values.middleManager.podAnnotations }}
annotations:
{{ toYaml .Values.middleManager.podAnnotations | indent 8 }}
{{- end }}
spec:
{{- if or .Values.middleManager.antiAffinity .Values.middleManager.nodeAffinity }}
affinity:
{{- end }}
{{- if eq .Values.middleManager.antiAffinity "hard" }}
podAntiAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
- topologyKey: "kubernetes.io/hostname"
labelSelector:
matchLabels:
app: "{{ template "druid.name" . }}"
release: "{{ .Release.Name }}"
component: "{{ .Values.middleManager.name }}"
{{- else if eq .Values.middleManager.antiAffinity "soft" }}
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1
podAffinityTerm:
topologyKey: kubernetes.io/hostname
labelSelector:
matchLabels:
app: "{{ template "druid.name" . }}"
release: "{{ .Release.Name }}"
component: "{{ .Values.middleManager.name }}"
{{- end }}
{{- with .Values.middleManager.nodeAffinity }}
nodeAffinity:
{{ toYaml . | indent 10 }}
{{- end }}
{{- if .Values.middleManager.nodeSelector }}
nodeSelector:
{{ toYaml .Values.middleManager.nodeSelector | indent 8 }}
{{- end }}
{{- if .Values.middleManager.securityContext }}
securityContext:
{{ toYaml .Values.middleManager.securityContext | indent 8 }}
{{- end }}
{{- if .Values.middleManager.tolerations }}
tolerations:
{{ toYaml .Values.middleManager.tolerations | indent 8 }}
{{- end }}
{{- if .Values.image.pullSecrets }}
imagePullSecrets:
{{ toYaml .Values.image.pullSecrets | indent 8 }}
{{- end }}
containers:
- name: druid
args: [ "middleManager" ]
env:
{{- range $key, $val := .Values.middleManager.config }}
- name: {{ $key }}
value: {{ $val | quote }}
{{- end}}
envFrom:
- configMapRef:
name: {{ template "druid.name" . }}
resources:
{{ toYaml .Values.middleManager.resources | indent 12 }}
livenessProbe:
initialDelaySeconds: 60
httpGet:
path: /status/health
port: {{ .Values.middleManager.port }}
readinessProbe:
initialDelaySeconds: 60
httpGet:
path: /status/health
port: {{ .Values.middleManager.port }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy | quote }}
ports:
- containerPort: {{ .Values.middleManager.port }}
name: http
volumeMounts:
- mountPath: /opt/druid/var/druid/
name: data
{{- if .Values.gCloudStorage.enabled }}
- name: google-cloud-key
mountPath: /var/secrets/google
{{- end }}
volumes:
{{- if not .Values.middleManager.persistence.enabled }}
- name: data
emptyDir: {}
{{- end }}
{{- if .Values.gCloudStorage.enabled }}
- name: google-cloud-key
secret:
secretName: {{ .Values.gCloudStorage.secretName }}
{{- end }}
updateStrategy:
type: {{ .Values.middleManager.updateStrategy.type }}
{{- if .Values.middleManager.persistence.enabled }}
volumeClaimTemplates:
- metadata:
name: data
spec:
accessModes:
- {{ .Values.middleManager.persistence.accessMode | quote }}
{{- if .Values.middleManager.persistence.storageClass }}
{{- if (eq "-" .Values.middleManager.persistence.storageClass) }}
storageClassName: ""
{{- else }}
storageClassName: "{{ .Values.middleManager.persistence.storageClass }}"
{{- end }}
{{- end }}
resources:
requests:
storage: "{{ .Values.middleManager.persistence.size }}"
{{- end }}
{{- end }}

View File

@ -0,0 +1,101 @@
# 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.overlord.enabled -}}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "druid.overlord.fullname" . }}
labels:
app: {{ include "druid.name" . }}
chart: {{ include "druid.chart" . }}
component: {{ .Values.overlord.name }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
replicas: {{ .Values.overlord.replicaCount }}
selector:
matchLabels:
app: {{ include "druid.name" . }}
release: {{ .Release.Name }}
component: {{ .Values.overlord.name }}
template:
metadata:
labels:
app: {{ include "druid.name" . }}
release: {{ .Release.Name }}
component: {{ .Values.overlord.name }}
{{- with .Values.overlord.podAnnotations }}
annotations:
{{ toYaml . | indent 8 }}
{{- end }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
args: [ "overlord" ]
env:
{{- range $key, $val := .Values.overlord.config }}
- name: {{ $key }}
value: {{ $val | quote }}
{{- end}}
envFrom:
- configMapRef:
name: {{ template "druid.name" . }}
ports:
- name: http
containerPort: {{ .Values.overlord.port }}
protocol: TCP
livenessProbe:
initialDelaySeconds: 60
httpGet:
path: /status/health
port: {{ .Values.overlord.port }}
readinessProbe:
initialDelaySeconds: 60
httpGet:
path: /status/health
port: {{ .Values.overlord.port }}
resources:
{{ toYaml .Values.overlord.resources | indent 12 }}
volumeMounts:
{{- if .Values.gCloudStorage.enabled }}
- name: google-cloud-key
mountPath: /var/secrets/google
{{- end }}
volumes:
{{- if .Values.gCloudStorage.enabled }}
- name: google-cloud-key
secret:
secretName: {{ .Values.gCloudStorage.secretName }}
{{- end }}
{{- with .Values.overlord.nodeSelector }}
nodeSelector:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.overlord.affinity }}
affinity:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.overlord.tolerations }}
tolerations:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.image.pullSecrets }}
imagePullSecrets:
{{ toYaml . | indent 8 }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,54 @@
# 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.overlord.ingress.enabled -}}
{{- $fullName := include "druid.overlord.fullname" . -}}
{{- $ingressPath := .Values.overlord.ingress.path -}}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ $fullName }}
labels:
app: {{ include "druid.name" . }}
chart: {{ include "druid.chart" . }}
component: {{ .Values.overlord.name }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- with .Values.overlord.ingress.annotations }}
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
spec:
{{- if .Values.overlord.ingress.tls }}
tls:
{{- range .Values.overlord.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.overlord.ingress.hosts }}
- host: {{ . | quote }}
http:
paths:
- path: {{ $ingressPath }}
backend:
serviceName: {{ $fullName }}
servicePort: http
{{- end }}
{{- end }}

View File

@ -0,0 +1,38 @@
# 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.overlord.enabled -}}
apiVersion: v1
kind: Service
metadata:
name: {{ include "druid.overlord.fullname" . }}
labels:
app: {{ include "druid.name" . }}
chart: {{ include "druid.chart" . }}
component: {{ .Values.overlord.name }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
type: {{ .Values.overlord.serviceType }}
ports:
- port: {{ .Values.overlord.port }}
targetPort: http
protocol: TCP
name: http
selector:
app: {{ include "druid.name" . }}
release: {{ .Release.Name }}
component: {{ .Values.overlord.name }}
{{- end }}

View File

@ -0,0 +1,90 @@
# 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.router.enabled -}}
apiVersion: apps/v1
kind: Deployment
metadata:
name: {{ include "druid.router.fullname" . }}
labels:
app: {{ include "druid.name" . }}
chart: {{ include "druid.chart" . }}
component: {{ .Values.router.name }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
replicas: {{ .Values.router.replicaCount }}
selector:
matchLabels:
app: {{ include "druid.name" . }}
release: {{ .Release.Name }}
component: {{ .Values.router.name }}
template:
metadata:
labels:
app: {{ include "druid.name" . }}
release: {{ .Release.Name }}
component: {{ .Values.router.name }}
{{- with .Values.router.podAnnotations }}
annotations:
{{ toYaml . | indent 8 }}
{{- end }}
spec:
containers:
- name: {{ .Chart.Name }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
args: [ "router" ]
env:
{{- range $key, $val := .Values.router.config }}
- name: {{ $key }}
value: {{ $val | quote }}
{{- end}}
envFrom:
- configMapRef:
name: {{ template "druid.name" . }}
ports:
- name: http
containerPort: {{ .Values.router.port }}
protocol: TCP
livenessProbe:
initialDelaySeconds: 60
httpGet:
path: /status/health
port: {{ .Values.router.port }}
readinessProbe:
initialDelaySeconds: 60
httpGet:
path: /status/health
port: {{ .Values.router.port }}
resources:
{{ toYaml .Values.router.resources | indent 12 }}
{{- with .Values.router.nodeSelector }}
nodeSelector:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.router.affinity }}
affinity:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.router.tolerations }}
tolerations:
{{ toYaml . | indent 8 }}
{{- end }}
{{- with .Values.image.pullSecrets }}
imagePullSecrets:
{{ toYaml . | indent 8 }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,54 @@
# 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.router.ingress.enabled -}}
{{- $fullName := include "druid.router.fullname" . -}}
{{- $ingressPath := .Values.router.ingress.path -}}
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: {{ $fullName }}
labels:
app: {{ include "druid.name" . }}
chart: {{ include "druid.chart" . }}
component: {{ .Values.router.name }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
{{- with .Values.router.ingress.annotations }}
annotations:
{{ toYaml . | indent 4 }}
{{- end }}
spec:
{{- if .Values.router.ingress.tls }}
tls:
{{- range .Values.router.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.router.ingress.hosts }}
- host: {{ . | quote }}
http:
paths:
- path: {{ $ingressPath }}
backend:
serviceName: {{ $fullName }}
servicePort: http
{{- end }}
{{- end }}

View File

@ -0,0 +1,38 @@
# 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.router.enabled -}}
apiVersion: v1
kind: Service
metadata:
name: {{ include "druid.router.fullname" . }}
labels:
app: {{ include "druid.name" . }}
chart: {{ include "druid.chart" . }}
component: {{ .Values.router.name }}
release: {{ .Release.Name }}
heritage: {{ .Release.Service }}
spec:
type: {{ .Values.router.serviceType }}
ports:
- port: {{ .Values.router.port }}
targetPort: http
protocol: TCP
name: http
selector:
app: {{ include "druid.name" . }}
release: {{ .Release.Name }}
component: {{ .Values.router.name }}
{{- end }}

View File

@ -0,0 +1,24 @@
# 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.gCloudStorage.enabled -}}
apiVersion: v1
kind: Secret
metadata:
name: google-cloud-key
type: Opaque
data:
key.json: {{ .Values.google.gcsAPIKey }}
{{- end }}

416
helm/values.yaml Normal file
View File

@ -0,0 +1,416 @@
# 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.
# Default values for druid.
image:
repository: apache/druid
tag: 0.19.0
pullPolicy: IfNotPresent
pullSecrets: []
configMap:
## If false, configMap will not be applied
##
enabled: true
## Define the key value pairs in the configmap
configVars:
## DRUID env vars. ref: https://github.com/apache/druid/blob/master/distribution/docker/druid.sh#L29
# DRUID_LOG_LEVEL: "warn"
# DRUID_LOG4J: <?xml version="1.0" encoding="UTF-8" ?><Configuration status="WARN"><Appenders><Console name="Console" target="SYSTEM_OUT"><PatternLayout pattern="%d{ISO8601} %p [%t] %c - %m%n"/></Console></Appenders><Loggers><Root level="info"><AppenderRef ref="Console"/></Root><Logger name="org.apache.druid.jetty.RequestLog" additivity="false" level="DEBUG"><AppenderRef ref="Console"/></Logger></Loggers></Configuration>
DRUID_USE_CONTAINER_IP: "true"
## Druid Common Configurations. ref: https://druid.apache.org/docs/latest/configuration/index.html#common-configurations
druid_extensions_loadList: '["druid-histogram", "druid-datasketches", "druid-lookups-cached-global", "postgresql-metadata-storage"]'
druid_metadata_storage_type: postgresql
druid_metadata_storage_connector_connectURI: jdbc:postgresql://postgres:5432/druid
druid_metadata_storage_connector_user: druid
druid_metadata_storage_connector_password: druid
druid_storage_type: local
druid_indexer_logs_type: file
druid_indexer_logs_directory: /opt/data/indexing-logs
## Druid Emitting Metrics. ref: https://druid.apache.org/docs/latest/configuration/index.html#emitting-metrics
druid_emitter: noop
druid_emitter_logging_logLevel: debug
druid_emitter_http_recipientBaseUrl: http://druid_exporter_url:druid_exporter_port/druid
gCloudStorage:
enabled: false
secretName: google-cloud-key
broker:
## If false, broker will not be installed
##
enabled: true
name: broker
replicaCount: 1
port: 8082
serviceType: ClusterIP
config:
DRUID_XMX: 512m
DRUID_XMS: 512m
DRUID_MAXDIRECTMEMORYSIZE: 400m
druid_processing_buffer_sizeBytes: '50000000'
druid_processing_numMergeBuffers: 2
druid_processing_numThreads: 1
# druid_monitoring_monitors: '["org.apache.druid.client.cache.CacheMonitor", "org.apache.druid.server.metrics.QueryCountStatsMonitor"]'
ingress:
enabled: false
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
path: /
hosts:
- chart-example.local
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
resources: {}
# limits:
# cpu: 1
# memory: 1Gi
# requests:
# cpu: 250m
# memory: 512Mi
nodeSelector: {}
tolerations: []
affinity: {}
podAnnotations: {}
coordinator:
## If false, coordinator will not be installed
##
enabled: true
name: coordinator
replicaCount: 1
port: 8081
serviceType: ClusterIP
config:
DRUID_XMX: 256m
DRUID_XMS: 256m
# druid_monitoring_monitors: '["org.apache.druid.server.metrics.TaskCountStatsMonitor"]'
ingress:
enabled: false
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
path: /
hosts:
- chart-example.local
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
resources: {}
# limits:
# cpu: 500m
# memory: 1Gi
# requests:
# cpu: 250m
# memory: 512Mi
nodeSelector: {}
tolerations: []
affinity: {}
podAnnotations: {}
overlord:
## If true, the separate overlord will be installed
##
enabled: false
name: overlord
replicaCount: 1
port: 8081
serviceType: ClusterIP
javaOpts: "-Xms1G -Xmx1G"
ingress:
enabled: false
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
path: /
hosts:
- chart-example.local
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
resources: {}
nodeSelector: {}
tolerations: []
affinity: {}
podAnnotations: {}
historical:
## If false, historical will not be installed
##
enabled: true
name: historical
replicaCount: 1
port: 8083
serviceType: ClusterIP
config:
DRUID_XMX: 512m
DRUID_XMS: 512m
DRUID_MAXDIRECTMEMORYSIZE: 400m
druid_processing_buffer_sizeBytes: '50000000'
druid_processing_numMergeBuffers: 2
druid_processing_numThreads: 1
# druid_monitoring_monitors: '["org.apache.druid.client.cache.CacheMonitor", "org.apache.druid.server.metrics.HistoricalMetricsMonitor", "org.apache.druid.server.metrics.QueryCountStatsMonitor"]'
# druid_segmentCache_locations: '[{"path":"/var/druid/segment-cache","maxSize":300000000000}]'
ingress:
enabled: false
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
path: /
hosts:
- chart-example.local
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
persistence:
enabled: true
accessMode: ReadWriteOnce
size: "4Gi"
# storageClass: "ssd"
antiAffinity: "soft"
nodeAffinity: {}
nodeSelector: {}
securityContext:
fsGroup: 1000
tolerations: []
resources: {}
# limits:
# cpu: 2
# memory: 2Gi
# requests:
# cpu: 500m
# memory: 512Mi
## (dict) If specified, apply these annotations to each master Pod
podAnnotations: {}
podDisruptionBudget:
enabled: false
# minAvailable: 2
maxUnavailable: 1
updateStrategy:
type: RollingUpdate
middleManager:
## If false, middleManager will not be installed
##
enabled: true
name: middle-manager
replicaCount: 1
port: 8091
serviceType: ClusterIP
config:
DRUID_XMX: 64m
DRUID_XMS: 64m
druid_indexer_runner_javaOptsArray: '["-server", "-Xms256m", "-Xmx256m", "-XX:MaxDirectMemorySize=300m", "-Duser.timezone=UTC", "-Dfile.encoding=UTF-8", "-XX:+ExitOnOutOfMemoryError", "-Djava.util.logging.manager=org.apache.logging.log4j.jul.LogManager"]'
druid_indexer_fork_property_druid_processing_buffer_sizeBytes: '25000000'
autoscaling:
enabled: false
minReplicas: 2
maxReplicas: 5
metrics:
- type: Resource
resource:
name: cpu
target:
type: Utilization
averageUtilization: 60
- type: Resource
resource:
name: memory
target:
type: Utilization
averageUtilization: 60
ingress:
enabled: false
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
path: /
hosts:
- chart-example.local
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
persistence:
enabled: true
accessMode: ReadWriteOnce
size: "4Gi"
# storageClass: "ssd"
antiAffinity: "soft"
nodeAffinity: {}
nodeSelector: {}
securityContext:
fsGroup: 1000
tolerations: []
resources: {}
# limits:
# cpu: 500m
# memory: 1Gi
# requests:
# cpu: 250m
# memory: 256Mi
## (dict) If specified, apply these annotations to each master Pod
podAnnotations: {}
podDisruptionBudget:
enabled: false
# minAvailable: 2
maxUnavailable: 1
updateStrategy:
type: RollingUpdate
router:
## If false, router will not be installed
##
enabled: true
name: router
replicaCount: 1
port: 8888
serviceType: ClusterIP
config:
DRUID_XMX: 128m
DRUID_XMS: 128m
DRUID_MAXDIRECTMEMORYSIZE: 128m
ingress:
enabled: false
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
path: /
hosts:
- chart-example.local
tls: []
# - secretName: chart-example-tls
# hosts:
# - chart-example.local
resources: {}
# limits:
# cpu: 250m
# memory: 256Mi
# requests:
# cpu: 100m
# memory: 128Mi
nodeSelector: {}
tolerations: []
affinity: {}
podAnnotations: {}
# ------------------------------------------------------------------------------
# Zookeeper:
# ------------------------------------------------------------------------------
# zkHosts: druid-zookeeper-headless:2181
zookeeper:
enabled: true
## Environmental variables to set in Zookeeper
##
env:
## The JVM heap size to allocate to Zookeeper
ZK_HEAP_SIZE: "512M"
## Configure Zookeeper headless
headless:
publishNotReadyAddresses: true
# ------------------------------------------------------------------------------
# MySQL:
# ------------------------------------------------------------------------------
mysql:
enabled: false
mysqlRootPassword: druidroot
mysqlUser: druid
mysqlPassword: druid
mysqlDatabase: druid
configurationFiles:
mysql_collate.cnf: |-
[mysqld]
character-set-server=utf8
collation-server=utf8_unicode_ci
# ------------------------------------------------------------------------------
# postgres:
# ------------------------------------------------------------------------------
postgresql:
enabled: true
postgresqlUsername: druid
postgresqlPassword: druid
postgresqlDatabase: druid
service:
port: 5432
# Secrets