├── .github └── workflows │ ├── ci.yaml │ └── release.yml ├── LICENSE ├── README.md ├── artifacthub-repo.yml └── charts └── quickwit ├── .helmignore ├── Chart.yaml ├── templates ├── _helpers.tpl ├── configmap-bootstrap.yaml ├── configmap.yaml ├── control-plane-deployment.yaml ├── indexer-pdb.yaml ├── indexer-statefulset.yaml ├── ingress.yaml ├── janitor-deployment.yaml ├── job-create-indices.yaml ├── job-create-sources.yaml ├── metastore-deployment.yaml ├── prometheusrule.yaml ├── searcher-pdb.yaml ├── searcher-statefulset.yaml ├── service.yaml ├── serviceaccount.yaml └── servicemonitor.yaml └── values.yaml /.github/workflows/ci.yaml: -------------------------------------------------------------------------------- 1 | name: Lint and Test Charts 2 | 3 | on: pull_request 4 | jobs: 5 | lint-test: 6 | runs-on: ubuntu-latest 7 | steps: 8 | - name: Checkout 9 | uses: actions/checkout@v2 10 | with: 11 | fetch-depth: 0 12 | 13 | - name: Set up Helm 14 | uses: azure/setup-helm@v3 15 | with: 16 | version: v3.10.0 17 | 18 | - uses: actions/setup-python@v4 19 | with: 20 | python-version: '3.9' 21 | check-latest: true 22 | 23 | - name: Set up chart-testing 24 | uses: helm/chart-testing-action@v2.3.1 25 | 26 | - name: Run chart-testing (list-changed) 27 | id: list-changed 28 | run: | 29 | changed=$(ct list-changed --target-branch ${{ github.event.repository.default_branch }}) 30 | if [[ -n "$changed" ]]; then 31 | echo "::set-output name=changed::true" 32 | fi 33 | 34 | - name: Run chart-testing (lint) 35 | run: ct lint --target-branch ${{ github.event.repository.default_branch }} 36 | 37 | - name: Create kind cluster 38 | uses: helm/kind-action@v1.4.0 39 | if: steps.list-changed.outputs.changed == 'true' 40 | 41 | - name: Run chart-testing (install) 42 | run: ct install --target-branch ${{ github.event.repository.default_branch }} 43 | -------------------------------------------------------------------------------- /.github/workflows/release.yml: -------------------------------------------------------------------------------- 1 | name: Release Charts 2 | 3 | on: 4 | push: 5 | branches: 6 | - main 7 | 8 | jobs: 9 | release: 10 | runs-on: ubuntu-latest 11 | steps: 12 | - name: Checkout 13 | uses: actions/checkout@v2 14 | with: 15 | fetch-depth: 0 16 | 17 | - name: Configure Git 18 | run: | 19 | git config --global user.email "quickwit-bot@quickwit.io" 20 | git config --global user.name "Quickwit Bot" 21 | 22 | - name: Run chart-releaser 23 | uses: helm/chart-releaser-action@v1.4.1 24 | env: 25 | CR_TOKEN: "${{ secrets.GITHUB_TOKEN }}" 26 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2022 Quickwit, Inc. 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # Quickwit Helm Chart 2 | 3 | ## Usage 4 | 5 | [Helm](https://helm.sh) must be installed to use the charts. Please refer to 6 | Helm's [documentation](https://helm.sh/docs) to get started. 7 | 8 | Once Helm has been set up correctly, add the repo as follows: 9 | 10 | helm repo add quickwit https://helm.quickwit.io 11 | 12 | If you had already added this repo earlier, run `helm repo update` to retrieve 13 | the latest versions of the packages. You can then run `helm search repo 14 | quickwit` to see the charts. 15 | 16 | To install the quickwit chart: 17 | 18 | helm install my-quickwit quickwit/quickwit 19 | 20 | To uninstall the chart: 21 | 22 | helm delete my-quickwit 23 | 24 | ## Upgrade helm chart from 0.4.0 to 0.5.0 25 | 26 | The way storage config is defined changed and you have to update your helm values to upgrade to 0.5.0. 27 | 28 | The changes are: 29 | - the `config.s3` and `config.azure_blob` values are no more supported. You now have to use the storage config as defined in the [docs](https://quickwit.io/docs/configuration/storage-config). 30 | - the keys of secrets have changed: `s3.secret_key` is replaced by `storage.s3.secret_access_key` and `azure_blob.access_key` is replace by `storage.azure.access_key`. 31 | 32 | ## Upgrade helm chart from 0.5.0 to 0.6.0 33 | 34 | The way the `config` value works has changed in 0.6.0. It is now copied "as is" 35 | to the Quickwit nodes' configurations. In particular: 36 | 37 | - the `config.postgres` section does not support the following attributes 38 | anymore 39 | ``` 40 | host: "" 41 | port: 5432 42 | database: metastore 43 | username: quickwit 44 | assword: "" 45 | ``` 46 | Configure `QW_METASTORE_URI` in `extraEnvFrom` instead (see 47 | [documentation](https://quickwit.io/docs/configuration/metastore-config) for 48 | more details). 49 | 50 | - the seed configuration has moved from `config` to a dedicated attribute. The 51 | changes are: 52 | - the `config.indexes` field is moved to `seed.indexes` 53 | - the `config.sources` field is moved to `seed.sources` 54 | 55 | ## Upgrade helm chart from 0.6.0 to 0.7.0 56 | 57 | The `jobs` and `bootstrap` sections got merged in 0.7.0: 58 | 59 | * `jobs.sources` section is now replaced by `bootstrap.sources` 60 | * `jobs.indexes` section is now replaced by `bootstrap.indexes` 61 | -------------------------------------------------------------------------------- /artifacthub-repo.yml: -------------------------------------------------------------------------------- 1 | repositoryID: a70501fa-55bf-4218-9cc8-89d8f64520f8 2 | owners: 3 | - name: fmassot 4 | email: francois@quickwit.io 5 | - name: guilload 6 | email: adrien@quickwit.io 7 | 8 | -------------------------------------------------------------------------------- /charts/quickwit/.helmignore: -------------------------------------------------------------------------------- 1 | # Patterns to ignore when building packages. 2 | # This supports shell glob matching, relative path matching, and 3 | # negation (prefixed with !). Only one pattern per line. 4 | .DS_Store 5 | # Common VCS dirs 6 | .git/ 7 | .gitignore 8 | .bzr/ 9 | .bzrignore 10 | .hg/ 11 | .hgignore 12 | .svn/ 13 | # Common backup files 14 | *.swp 15 | *.bak 16 | *.tmp 17 | *.orig 18 | *~ 19 | # Various IDEs 20 | .project 21 | .idea/ 22 | *.tmproj 23 | .vscode/ 24 | -------------------------------------------------------------------------------- /charts/quickwit/Chart.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v2 2 | name: quickwit 3 | description: Sub-second search & analytics engine on cloud storage. 4 | type: application 5 | version: 0.7.16 6 | appVersion: v0.8.2 7 | keywords: 8 | - quickwit 9 | - search 10 | - analytics 11 | - tracing 12 | - logs 13 | home: https://quickwit.io/ 14 | sources: 15 | - https://github.com/quickwit-oss/quickwit/ 16 | icon: https://avatars.githubusercontent.com/u/98504233?s=200&v=4 17 | maintainers: 18 | - name: Quickwit 19 | email: hello@quickwit.io 20 | - name: mkhpalm 21 | email: mkhpalm@gmail.com 22 | -------------------------------------------------------------------------------- /charts/quickwit/templates/_helpers.tpl: -------------------------------------------------------------------------------- 1 | {{/* 2 | Expand the name of the chart. 3 | */}} 4 | {{- define "quickwit.name" -}} 5 | {{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} 6 | {{- end }} 7 | 8 | {{/* 9 | Create a default fully qualified app name. 10 | We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). 11 | If release name contains chart name it will be used as a full name. 12 | */}} 13 | {{- define "quickwit.fullname" -}} 14 | {{- if .Values.fullnameOverride }} 15 | {{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} 16 | {{- else }} 17 | {{- $name := default .Chart.Name .Values.nameOverride }} 18 | {{- if contains $name .Release.Name }} 19 | {{- .Release.Name | trunc 63 | trimSuffix "-" }} 20 | {{- else }} 21 | {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} 22 | {{- end }} 23 | {{- end }} 24 | {{- end }} 25 | 26 | {{/* 27 | Create chart name and version as used by the chart label. 28 | */}} 29 | {{- define "quickwit.chart" -}} 30 | {{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} 31 | {{- end }} 32 | 33 | {{/* 34 | Custom labels 35 | */}} 36 | {{- define "quickwit.additionalLabels" -}} 37 | {{- if .Values.additionalLabels }} 38 | {{ toYaml .Values.additionalLabels }} 39 | {{- end }} 40 | {{- end }} 41 | 42 | {{/* 43 | Common labels 44 | */}} 45 | {{- define "quickwit.labels" -}} 46 | helm.sh/chart: {{ include "quickwit.chart" . }} 47 | {{ include "quickwit.selectorLabels" . }} 48 | {{- if .Chart.AppVersion }} 49 | app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} 50 | {{- end }} 51 | app.kubernetes.io/managed-by: {{ .Release.Service }} 52 | {{- include "quickwit.additionalLabels" . }} 53 | {{- end }} 54 | 55 | {{/* 56 | Selector labels 57 | */}} 58 | {{- define "quickwit.selectorLabels" -}} 59 | app.kubernetes.io/name: {{ include "quickwit.name" . }} 60 | app.kubernetes.io/instance: {{ .Release.Name }} 61 | {{- end }} 62 | 63 | {{/* 64 | Searcher Selector labels 65 | */}} 66 | {{- define "quickwit.searcher.selectorLabels" -}} 67 | {{ include "quickwit.selectorLabels" . }} 68 | app.kubernetes.io/component: searcher 69 | {{- end }} 70 | 71 | {{/* 72 | Janitor Selector labels 73 | */}} 74 | {{- define "quickwit.janitor.selectorLabels" -}} 75 | {{ include "quickwit.selectorLabels" . }} 76 | app.kubernetes.io/component: janitor 77 | {{- end }} 78 | 79 | {{/* 80 | Metastore Selector labels 81 | */}} 82 | {{- define "quickwit.metastore.selectorLabels" -}} 83 | {{ include "quickwit.selectorLabels" . }} 84 | app.kubernetes.io/component: metastore 85 | {{- end }} 86 | 87 | {{/* 88 | Control Plane Selector labels 89 | */}} 90 | {{- define "quickwit.control_plane.selectorLabels" -}} 91 | {{ include "quickwit.selectorLabels" . }} 92 | app.kubernetes.io/component: control-plane 93 | {{- end }} 94 | 95 | {{/* 96 | Indexer Selector labels 97 | */}} 98 | {{- define "quickwit.indexer.selectorLabels" -}} 99 | {{ include "quickwit.selectorLabels" . }} 100 | app.kubernetes.io/component: indexer 101 | {{- end }} 102 | 103 | {{/* 104 | Create the name of the service account to use 105 | */}} 106 | {{- define "quickwit.serviceAccountName" -}} 107 | {{- if .Values.serviceAccount.create }} 108 | {{- default (include "quickwit.fullname" .) .Values.serviceAccount.name }} 109 | {{- else }} 110 | {{- default "default" .Values.serviceAccount.name }} 111 | {{- end }} 112 | {{- end }} 113 | 114 | {{/* 115 | Quickwit ports 116 | */}} 117 | {{- define "quickwit.ports" -}} 118 | - name: rest 119 | containerPort: 7280 120 | protocol: TCP 121 | - name: grpc 122 | containerPort: 7281 123 | protocol: TCP 124 | - name: discovery 125 | containerPort: 7282 126 | protocol: UDP 127 | {{- end }} 128 | 129 | 130 | {{/* 131 | Quickwit environment 132 | */}} 133 | {{- define "quickwit.environment" -}} 134 | - name: NAMESPACE 135 | valueFrom: 136 | fieldRef: 137 | fieldPath: metadata.namespace 138 | - name: POD_NAME 139 | valueFrom: 140 | fieldRef: 141 | fieldPath: metadata.name 142 | - name: POD_IP 143 | valueFrom: 144 | fieldRef: 145 | fieldPath: status.podIP 146 | - name: QW_CONFIG 147 | value: {{ .Values.configLocation }} 148 | - name: QW_CLUSTER_ID 149 | value: {{ .Release.Namespace }}-{{ include "quickwit.fullname" . }} 150 | - name: QW_NODE_ID 151 | value: "$(POD_NAME)" 152 | - name: QW_PEER_SEEDS 153 | value: {{ include "quickwit.fullname" . }}-headless 154 | - name: QW_ADVERTISE_ADDRESS 155 | value: "$(POD_IP)" 156 | - name: QW_CLUSTER_ENDPOINT 157 | value: http://{{ include "quickwit.fullname" $ }}-metastore.{{ $.Release.Namespace }}.svc.{{ .Values.clusterDomain }}:7280 158 | {{- range $key, $value := .Values.environment }} 159 | - name: "{{ $key }}" 160 | value: "{{ $value }}" 161 | {{- end }} 162 | {{- end }} 163 | -------------------------------------------------------------------------------- /charts/quickwit/templates/configmap-bootstrap.yaml: -------------------------------------------------------------------------------- 1 | {{- if and (or .Values.seed.sources .Values.seed.indexes) .Values.bootstrap.enabled -}} 2 | apiVersion: v1 3 | kind: ConfigMap 4 | metadata: 5 | name: {{ include "quickwit.fullname" . }}-bootstrap 6 | labels: 7 | {{- include "quickwit.labels" . | nindent 4 }} 8 | data: 9 | {{- range .Values.seed.indexes }} 10 | {{ .index_id }}.yaml: |- 11 | {{- toYaml . | nindent 4 }} 12 | {{- end }} 13 | {{- range .Values.seed.sources }} 14 | {{ .source.source_id }}.yaml: |- 15 | {{- toYaml .source | nindent 4 }} 16 | {{- end }} 17 | {{- end }} 18 | -------------------------------------------------------------------------------- /charts/quickwit/templates/configmap.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: ConfigMap 3 | metadata: 4 | name: {{ include "quickwit.fullname" . }} 5 | labels: 6 | {{- include "quickwit.labels" . | nindent 4 }} 7 | data: 8 | node.yaml: |- 9 | {{- toYaml .Values.config | nindent 4 }} 10 | -------------------------------------------------------------------------------- /charts/quickwit/templates/control-plane-deployment.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.control_plane.enabled }} 2 | apiVersion: apps/v1 3 | kind: Deployment 4 | metadata: 5 | name: {{ include "quickwit.fullname" . }}-control-plane 6 | labels: 7 | {{- include "quickwit.labels" . | nindent 4 }} 8 | annotations: 9 | {{- with .Values.annotations }} 10 | {{- toYaml . | nindent 4 }} 11 | {{- end }} 12 | {{- with .Values.control_plane.annotations }} 13 | {{- toYaml . | nindent 4 }} 14 | {{- end }} 15 | spec: 16 | replicas: 1 17 | selector: 18 | matchLabels: 19 | {{- include "quickwit.control_plane.selectorLabels" . | nindent 6 }} 20 | strategy: 21 | type: Recreate 22 | template: 23 | metadata: 24 | annotations: 25 | checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} 26 | {{- with .Values.podAnnotations }} 27 | {{- toYaml . | nindent 8 }} 28 | {{- end }} 29 | {{- with .Values.control_plane.podAnnotations }} 30 | {{- toYaml . | nindent 8 }} 31 | {{- end }} 32 | labels: 33 | {{- include "quickwit.additionalLabels" . | nindent 8 }} 34 | {{- include "quickwit.control_plane.selectorLabels" . | nindent 8 }} 35 | spec: 36 | {{- with .Values.imagePullSecrets }} 37 | imagePullSecrets: 38 | {{- toYaml . | nindent 8 }} 39 | {{- end }} 40 | serviceAccountName: {{ include "quickwit.serviceAccountName" . }} 41 | securityContext: 42 | {{- toYaml .Values.podSecurityContext | nindent 8 }} 43 | {{- with .Values.control_plane.initContainers }} 44 | initContainers: 45 | {{- toYaml . | nindent 8 }} 46 | {{ end }} 47 | containers: 48 | - name: {{ .Chart.Name }} 49 | securityContext: 50 | {{- toYaml .Values.securityContext | nindent 12 }} 51 | image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" 52 | imagePullPolicy: {{ .Values.image.pullPolicy }} 53 | {{- if $.Values.control_plane.args }} 54 | args: {{- toYaml $.Values.control_plane.args | nindent 10 }} 55 | {{- else }} 56 | args: ["run", "--service", "control_plane"] 57 | {{- end }} 58 | env: 59 | {{- include "quickwit.environment" . | nindent 12 }} 60 | {{- range $key, $value := .Values.control_plane.extraEnv }} 61 | - name: "{{ $key }}" 62 | value: "{{ $value }}" 63 | {{- end }} 64 | {{- if or (.Values.environmentFrom) (.Values.control_plane.extraEnvFrom) }} 65 | envFrom: 66 | {{- with .Values.environmentFrom }} 67 | {{- toYaml . | nindent 12 }} 68 | {{- end }} 69 | {{- with .Values.control_plane.extraEnvFrom }} 70 | {{- toYaml . | nindent 12 }} 71 | {{- end }} 72 | {{- end }} 73 | ports: 74 | {{- include "quickwit.ports" . | nindent 12 }} 75 | startupProbe: 76 | {{- toYaml .Values.control_plane.startupProbe | nindent 12 }} 77 | livenessProbe: 78 | {{- toYaml .Values.control_plane.livenessProbe | nindent 12 }} 79 | readinessProbe: 80 | {{- toYaml .Values.control_plane.readinessProbe | nindent 12 }} 81 | volumeMounts: 82 | - name: config 83 | mountPath: /quickwit/node.yaml 84 | subPath: node.yaml 85 | - name: data 86 | mountPath: /quickwit/qwdata 87 | {{- range .Values.configMaps }} 88 | - name: {{ .name }} 89 | mountPath: {{ .mountPath }} 90 | {{- end }} 91 | {{- with .Values.indexer.extraVolumeMounts }} 92 | {{- toYaml . | nindent 12 }} 93 | {{- end }} 94 | resources: 95 | {{- toYaml .Values.control_plane.resources | nindent 14 }} 96 | volumes: 97 | - name: config 98 | configMap: 99 | name: {{ template "quickwit.fullname" . }} 100 | items: 101 | - key: node.yaml 102 | path: node.yaml 103 | - name: data 104 | emptyDir: {} 105 | {{- range .Values.configMaps }} 106 | - name: {{ .name }} 107 | configMap: 108 | name: {{ .name }} 109 | {{- end }} 110 | {{- with .Values.indexer.extraVolumes }} 111 | {{- toYaml . | nindent 8 }} 112 | {{- end }} 113 | {{- with .Values.control_plane.nodeSelector }} 114 | nodeSelector: 115 | {{- toYaml . | nindent 8 }} 116 | {{- end }} 117 | {{- with merge .Values.affinity .Values.control_plane.affinity }} 118 | affinity: 119 | {{- toYaml . | nindent 8 }} 120 | {{- end }} 121 | {{- $tolerations := concat .Values.tolerations .Values.control_plane.tolerations | compact | uniq }} 122 | tolerations: 123 | {{- toYaml $tolerations | nindent 8 }} 124 | {{- if .Values.control_plane.runtimeClassName }} 125 | runtimeClassName: {{ .Values.control_plane.runtimeClassName | quote }} 126 | {{- end }} 127 | {{- end }} 128 | -------------------------------------------------------------------------------- /charts/quickwit/templates/indexer-pdb.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.indexer.podDisruptionBudget -}} 2 | apiVersion: policy/v1 3 | kind: PodDisruptionBudget 4 | metadata: 5 | name: {{ include "quickwit.fullname" . }}-indexer 6 | labels: 7 | {{- include "quickwit.labels" . | nindent 4 }} 8 | spec: 9 | selector: 10 | matchLabels: 11 | {{- include "quickwit.indexer.selectorLabels" . | nindent 6 }} 12 | {{- toYaml .Values.indexer.podDisruptionBudget | nindent 2 }} 13 | {{- end -}} 14 | -------------------------------------------------------------------------------- /charts/quickwit/templates/indexer-statefulset.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.indexer.enabled }} 2 | apiVersion: apps/v1 3 | kind: StatefulSet 4 | metadata: 5 | name: {{ include "quickwit.fullname" . }}-indexer 6 | labels: 7 | {{- include "quickwit.labels" . | nindent 4 }} 8 | annotations: 9 | {{- with .Values.annotations }} 10 | {{- toYaml . | nindent 4 }} 11 | {{- end }} 12 | {{- with .Values.indexer.annotations }} 13 | {{- toYaml . | nindent 4 }} 14 | {{- end }} 15 | spec: 16 | {{- if hasKey .Values.indexer "replicaCount" }} 17 | replicas: {{ .Values.indexer.replicaCount }} 18 | {{- end }} 19 | serviceName: {{ include "quickwit.fullname" . }}-headless 20 | {{- if .Values.indexer.podManagementPolicy }} 21 | podManagementPolicy: {{ .Values.indexer.podManagementPolicy }} 22 | {{- end }} 23 | selector: 24 | matchLabels: 25 | {{- include "quickwit.indexer.selectorLabels" . | nindent 6 }} 26 | updateStrategy: 27 | {{- toYaml .Values.indexer.updateStrategy | nindent 4 }} 28 | template: 29 | metadata: 30 | annotations: 31 | checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} 32 | {{- with .Values.podAnnotations }} 33 | {{- toYaml . | nindent 8 }} 34 | {{- end }} 35 | {{- with .Values.indexer.podAnnotations }} 36 | {{- toYaml . | nindent 8 }} 37 | {{- end }} 38 | labels: 39 | {{- include "quickwit.additionalLabels" . | nindent 8 }} 40 | {{- include "quickwit.indexer.selectorLabels" . | nindent 8 }} 41 | spec: 42 | {{- with .Values.imagePullSecrets }} 43 | imagePullSecrets: 44 | {{- toYaml . | nindent 8 }} 45 | {{- end }} 46 | serviceAccountName: {{ include "quickwit.serviceAccountName" . }} 47 | securityContext: 48 | {{- toYaml .Values.podSecurityContext | nindent 8 }} 49 | {{- with .Values.indexer.initContainers }} 50 | initContainers: 51 | {{- toYaml . | nindent 8 }} 52 | {{ end }} 53 | containers: 54 | - name: {{ .Chart.Name }} 55 | securityContext: 56 | {{- toYaml .Values.securityContext | nindent 12 }} 57 | image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" 58 | imagePullPolicy: {{ .Values.image.pullPolicy }} 59 | {{- if $.Values.indexer.args }} 60 | args: {{- toYaml $.Values.indexer.args | nindent 10 }} 61 | {{- else }} 62 | args: ["run", "--service", "indexer"] 63 | {{- end }} 64 | env: 65 | {{- include "quickwit.environment" . | nindent 12 }} 66 | {{- range $key, $value := .Values.indexer.extraEnv }} 67 | - name: "{{ $key }}" 68 | value: "{{ $value }}" 69 | {{- end }} 70 | {{- if or (.Values.environmentFrom) (.Values.indexer.extraEnvFrom) }} 71 | envFrom: 72 | {{- with .Values.environmentFrom }} 73 | {{- toYaml . | nindent 12 }} 74 | {{- end }} 75 | {{- with .Values.indexer.extraEnvFrom }} 76 | {{- toYaml . | nindent 12 }} 77 | {{- end }} 78 | {{- end }} 79 | ports: 80 | {{- include "quickwit.ports" . | nindent 12 }} 81 | startupProbe: 82 | {{- toYaml .Values.indexer.startupProbe | nindent 12 }} 83 | livenessProbe: 84 | {{- toYaml .Values.indexer.livenessProbe | nindent 12 }} 85 | readinessProbe: 86 | {{- toYaml .Values.indexer.readinessProbe | nindent 12 }} 87 | volumeMounts: 88 | - name: config 89 | mountPath: /quickwit/node.yaml 90 | subPath: node.yaml 91 | - name: data 92 | mountPath: /quickwit/qwdata 93 | {{- range .Values.configMaps }} 94 | - name: {{ .name }} 95 | mountPath: {{ .mountPath }} 96 | {{- end }} 97 | {{- with .Values.indexer.extraVolumeMounts }} 98 | {{- toYaml . | nindent 12 }} 99 | {{- end }} 100 | resources: 101 | {{- toYaml .Values.indexer.resources | nindent 12 }} 102 | {{- if .Values.indexer.lifecycleHooks }} 103 | lifecycle: 104 | {{- toYaml .Values.indexer.lifecycleHooks | nindent 12 }} 105 | {{- end }} 106 | terminationGracePeriodSeconds: {{ .Values.indexer.terminationGracePeriodSeconds }} 107 | volumes: 108 | - name: config 109 | configMap: 110 | name: {{ template "quickwit.fullname" . }} 111 | items: 112 | - key: node.yaml 113 | path: node.yaml 114 | {{- if ne .Values.indexer.persistentVolume.enabled true }} 115 | - name: data 116 | emptyDir: {} 117 | {{- end }} 118 | {{- range .Values.configMaps }} 119 | - name: {{ .name }} 120 | configMap: 121 | name: {{ .name }} 122 | {{- end }} 123 | {{- with .Values.indexer.extraVolumes }} 124 | {{- toYaml . | nindent 8 }} 125 | {{- end }} 126 | {{- with .Values.indexer.nodeSelector }} 127 | nodeSelector: 128 | {{- toYaml . | nindent 8 }} 129 | {{- end }} 130 | {{- with merge .Values.affinity .Values.indexer.affinity }} 131 | affinity: 132 | {{- toYaml . | nindent 8 }} 133 | {{- end }} 134 | {{- $tolerations := concat .Values.tolerations .Values.indexer.tolerations | compact | uniq }} 135 | tolerations: 136 | {{- toYaml $tolerations | nindent 8 }} 137 | {{- if .Values.indexer.runtimeClassName }} 138 | runtimeClassName: {{ .Values.indexer.runtimeClassName | quote }} 139 | {{- end }} 140 | {{- if .Values.indexer.persistentVolume.enabled }} 141 | volumeClaimTemplates: 142 | - metadata: 143 | name: data 144 | spec: 145 | accessModes: 146 | - ReadWriteOnce 147 | resources: 148 | requests: 149 | storage: "{{ .Values.indexer.persistentVolume.storage }}" 150 | {{- if .Values.indexer.persistentVolume.storageClass }} 151 | storageClassName: "{{ .Values.indexer.persistentVolume.storageClass }}" 152 | {{- end }} 153 | {{- end }} 154 | {{- end }} -------------------------------------------------------------------------------- /charts/quickwit/templates/ingress.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.ingress.enabled -}} 2 | {{- $fullname := include "quickwit.fullname" . }} 3 | apiVersion: networking.k8s.io/v1 4 | kind: Ingress 5 | metadata: 6 | name: {{ $fullname }} 7 | labels: 8 | {{- include "quickwit.labels" . | nindent 4 }} 9 | {{- with .Values.ingress.annotations }} 10 | annotations: 11 | {{- toYaml . | nindent 4 }} 12 | {{- end }} 13 | spec: 14 | ingressClassName: {{ .Values.ingress.className }} 15 | {{- if .Values.ingress.tls }} 16 | tls: 17 | {{- range .Values.ingress.tls }} 18 | - hosts: 19 | {{- range .hosts }} 20 | - {{ . | quote }} 21 | {{- end }} 22 | secretName: {{ .secretName }} 23 | {{- end }} 24 | {{- end }} 25 | rules: 26 | {{- if and .Values.ingress.hosts (eq (first .Values.ingress.hosts).host "*") }} 27 | {{- $host := first .Values.ingress.hosts }} 28 | - http: 29 | paths: 30 | {{- range $host.paths }} 31 | - path: {{ .path }} 32 | pathType: {{ .pathType }} 33 | backend: 34 | service: 35 | name: {{ $fullname }}-{{ .service | default "searcher" }} 36 | {{- $port := .port | default "rest" }} 37 | port: 38 | {{- if kindIs "string" $port }} 39 | name: {{ $port }} 40 | {{- else }} 41 | number: {{ $port }} 42 | {{- end }} 43 | {{- end }} 44 | {{- else }} 45 | {{- range .Values.ingress.hosts }} 46 | - host: {{ .host | quote }} 47 | http: 48 | paths: 49 | {{- range .paths }} 50 | - path: {{ .path }} 51 | pathType: {{ .pathType }} 52 | backend: 53 | service: 54 | name: {{ $fullname }}-{{ .service | default "searcher" }} 55 | {{- $port := .port | default "rest" }} 56 | port: 57 | {{- if kindIs "string" $port }} 58 | name: {{ $port }} 59 | {{- else }} 60 | number: {{ $port }} 61 | {{- end }} 62 | {{- end }} 63 | {{- end }} 64 | {{- end }} 65 | {{- end }} 66 | -------------------------------------------------------------------------------- /charts/quickwit/templates/janitor-deployment.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.janitor.enabled }} 2 | apiVersion: apps/v1 3 | kind: Deployment 4 | metadata: 5 | name: {{ include "quickwit.fullname" . }}-janitor 6 | labels: 7 | {{- include "quickwit.labels" . | nindent 4 }} 8 | annotations: 9 | {{- with .Values.annotations }} 10 | {{- toYaml . | nindent 4 }} 11 | {{- end }} 12 | {{- with .Values.janitor.annotations }} 13 | {{- toYaml . | nindent 4 }} 14 | {{- end }} 15 | spec: 16 | replicas: 1 17 | selector: 18 | matchLabels: 19 | {{- include "quickwit.janitor.selectorLabels" . | nindent 6 }} 20 | strategy: 21 | type: Recreate 22 | template: 23 | metadata: 24 | annotations: 25 | checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} 26 | {{- with .Values.podAnnotations }} 27 | {{- toYaml . | nindent 8 }} 28 | {{- end }} 29 | {{- with .Values.janitor.podAnnotations }} 30 | {{- toYaml . | nindent 8 }} 31 | {{- end }} 32 | labels: 33 | {{- include "quickwit.additionalLabels" . | nindent 8 }} 34 | {{- include "quickwit.janitor.selectorLabels" . | nindent 8 }} 35 | spec: 36 | {{- with .Values.imagePullSecrets }} 37 | imagePullSecrets: 38 | {{- toYaml . | nindent 8 }} 39 | {{- end }} 40 | serviceAccountName: {{ include "quickwit.serviceAccountName" . }} 41 | securityContext: 42 | {{- toYaml .Values.podSecurityContext | nindent 8 }} 43 | {{- with .Values.janitor.initContainers }} 44 | initContainers: 45 | {{ toYaml . | nindent 8 }} 46 | {{ end }} 47 | containers: 48 | - name: {{ .Chart.Name }} 49 | securityContext: 50 | {{- toYaml .Values.securityContext | nindent 12 }} 51 | image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" 52 | imagePullPolicy: {{ .Values.image.pullPolicy }} 53 | {{- if $.Values.janitor.args }} 54 | args: {{- toYaml $.Values.janitor.args | nindent 10 }} 55 | {{- else }} 56 | args: ["run", "--service", "janitor"] 57 | {{- end }} 58 | env: 59 | {{- include "quickwit.environment" . | nindent 12 }} 60 | {{- range $key, $value := .Values.janitor.extraEnv }} 61 | - name: "{{ $key }}" 62 | value: "{{ $value }}" 63 | {{- end }} 64 | {{- if or (.Values.environmentFrom) (.Values.janitor.extraEnvFrom) }} 65 | envFrom: 66 | {{- with .Values.environmentFrom }} 67 | {{- toYaml . | nindent 12 }} 68 | {{- end }} 69 | {{- with .Values.janitor.extraEnvFrom }} 70 | {{- toYaml . | nindent 12 }} 71 | {{- end }} 72 | {{- end }} 73 | ports: 74 | {{- include "quickwit.ports" . | nindent 12 }} 75 | startupProbe: 76 | {{- toYaml .Values.janitor.startupProbe | nindent 12 }} 77 | livenessProbe: 78 | {{- toYaml .Values.janitor.livenessProbe | nindent 12 }} 79 | readinessProbe: 80 | {{- toYaml .Values.janitor.readinessProbe | nindent 12 }} 81 | volumeMounts: 82 | - name: config 83 | mountPath: /quickwit/node.yaml 84 | subPath: node.yaml 85 | - name: data 86 | mountPath: /quickwit/qwdata 87 | {{- range .Values.configMaps }} 88 | - name: {{ .name }} 89 | mountPath: {{ .mountPath }} 90 | {{- end }} 91 | {{- with .Values.indexer.extraVolumeMounts }} 92 | {{- toYaml . | nindent 12 }} 93 | {{- end }} 94 | resources: 95 | {{- toYaml .Values.janitor.resources | nindent 14 }} 96 | volumes: 97 | - name: config 98 | configMap: 99 | name: {{ template "quickwit.fullname" . }} 100 | items: 101 | - key: node.yaml 102 | path: node.yaml 103 | - name: data 104 | emptyDir: {} 105 | {{- range .Values.configMaps }} 106 | - name: {{ .name }} 107 | configMap: 108 | name: {{ .name }} 109 | {{- end }} 110 | {{- with .Values.indexer.extraVolumes }} 111 | {{- toYaml . | nindent 8 }} 112 | {{- end }} 113 | {{- with .Values.janitor.nodeSelector }} 114 | nodeSelector: 115 | {{- toYaml . | nindent 8 }} 116 | {{- end }} 117 | {{- with merge .Values.affinity .Values.janitor.affinity }} 118 | affinity: 119 | {{- toYaml . | nindent 8 }} 120 | {{- end }} 121 | {{- $tolerations := concat .Values.tolerations .Values.janitor.tolerations | compact | uniq }} 122 | tolerations: 123 | {{- toYaml $tolerations | nindent 8 }} 124 | {{- if .Values.janitor.runtimeClassName }} 125 | runtimeClassName: {{ .Values.janitor.runtimeClassName | quote }} 126 | {{- end }} 127 | {{- end }} 128 | -------------------------------------------------------------------------------- /charts/quickwit/templates/job-create-indices.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.bootstrap.enabled -}} 2 | {{- range .Values.seed.indexes }} 3 | --- 4 | apiVersion: batch/v1 5 | kind: Job 6 | metadata: 7 | name: {{ printf "%s-index-%s" (include "quickwit.fullname" $ | trunc 47) .index_id | trunc 63 | trimSuffix "-" }} 8 | labels: 9 | {{- include "quickwit.labels" $ | nindent 4 }} 10 | annotations: 11 | "helm.sh/hook": post-install,post-upgrade 12 | "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded 13 | "helm.sh/hook-weight": "1" 14 | spec: 15 | template: 16 | metadata: 17 | name: "{{ $.Release.Name }}" 18 | labels: 19 | app.kubernetes.io/managed-by: {{ $.Release.Service | quote }} 20 | app.kubernetes.io/instance: {{ $.Release.Name | quote }} 21 | helm.sh/chart: "{{ $.Chart.Name }}-{{ $.Chart.Version }}" 22 | spec: 23 | {{- with $.Values.imagePullSecrets }} 24 | imagePullSecrets: 25 | {{- toYaml . | nindent 8 }} 26 | {{- end }} 27 | serviceAccountName: {{ include "quickwit.serviceAccountName" $ }} 28 | securityContext: 29 | {{- toYaml $.Values.podSecurityContext | nindent 8 }} 30 | restartPolicy: Never 31 | {{- with $.Values.bootstrap.indexes.initContainers }} 32 | initContainers: 33 | {{- toYaml . | nindent 8 }} 34 | {{ end }} 35 | containers: 36 | - name: {{ $.Chart.Name }} 37 | securityContext: 38 | {{- toYaml $.Values.securityContext | nindent 10 }} 39 | image: "{{ $.Values.image.repository }}:{{ $.Values.image.tag | default $.Chart.AppVersion }}" 40 | imagePullPolicy: {{ $.Values.image.pullPolicy }} 41 | {{- if $.Values.bootstrap.indexes.command }} 42 | command: {{- toYaml $.Values.bootstrap.sources.command | nindent 8 }} 43 | {{- else }} 44 | command: ["/bin/bash","-c","quickwit index describe --index {{ .index_id }} --endpoint ${QW_CLUSTER_ENDPOINT} || quickwit index create --index-config {{ .index_id }}.yaml --endpoint ${QW_CLUSTER_ENDPOINT}"] 45 | {{- end }} 46 | env: 47 | {{- include "quickwit.environment" $ | nindent 10 }} 48 | {{- range $key, $value := $.Values.bootstrap.extraEnv }} 49 | - name: "{{ $key }}" 50 | value: "{{ $value }}" 51 | {{- end }} 52 | {{- if or ($.Values.environmentFrom) ($.Values.bootstrap.extraEnvFrom) }} 53 | envFrom: 54 | {{- with $.Values.environmentFrom }} 55 | {{- toYaml . | nindent 12 }} 56 | {{- end }} 57 | {{- with $.Values.bootstrap.extraEnvFrom }} 58 | {{- toYaml . | nindent 12 }} 59 | {{- end }} 60 | {{- end }} 61 | volumeMounts: 62 | - name: config 63 | mountPath: /quickwit/node.yaml 64 | subPath: node.yaml 65 | - name: index 66 | mountPath: /quickwit/{{ .index_id }}.yaml 67 | subPath: {{ .index_id }}.yaml 68 | {{- with $.Values.bootstrap.indexes.extraVolumeMounts }} 69 | {{- toYaml . | nindent 10 }} 70 | {{- end }} 71 | resources: 72 | {{- toYaml $.Values.bootstrap.resources | nindent 10 }} 73 | volumes: 74 | - name: config 75 | configMap: 76 | name: {{ template "quickwit.fullname" $ }} 77 | items: 78 | - key: node.yaml 79 | path: node.yaml 80 | - name: index 81 | configMap: 82 | name: {{ template "quickwit.fullname" $ }}-bootstrap 83 | items: 84 | - key: {{ .index_id }}.yaml 85 | path: {{ .index_id }}.yaml 86 | {{- with $.Values.bootstrap.indexes.extraVolumes }} 87 | {{- toYaml . | nindent 8 }} 88 | {{- end }} 89 | {{- with $.Values.bootstrap.nodeSelector }} 90 | nodeSelector: 91 | {{- toYaml . | nindent 8 }} 92 | {{- end }} 93 | {{- with merge $.Values.affinity $.Values.bootstrap.affinity }} 94 | affinity: 95 | {{- toYaml . | nindent 8 }} 96 | {{- end }} 97 | {{- $tolerations := concat $.Values.tolerations $.Values.bootstrap.tolerations | compact | uniq }} 98 | tolerations: 99 | {{- toYaml $tolerations | nindent 8 }} 100 | {{- if $.Values.bootstrap.runtimeClassName }} 101 | runtimeClassName: {{ $.Values.bootstrap.runtimeClassName | quote }} 102 | {{- end }} 103 | {{- end }} 104 | {{- end }} 105 | -------------------------------------------------------------------------------- /charts/quickwit/templates/job-create-sources.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.bootstrap.enabled -}} 2 | {{- range .Values.seed.sources }} 3 | --- 4 | apiVersion: batch/v1 5 | kind: Job 6 | metadata: 7 | name: {{ printf "%s-source-%s" (include "quickwit.fullname" $ | trunc 46) .source.source_id | trunc 63 | trimSuffix "-" }} 8 | labels: 9 | {{- include "quickwit.labels" $ | nindent 4 }} 10 | annotations: 11 | "helm.sh/hook": post-install,post-upgrade 12 | "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded 13 | "helm.sh/hook-weight": "2" 14 | spec: 15 | template: 16 | metadata: 17 | name: "{{ $.Release.Name }}" 18 | labels: 19 | app.kubernetes.io/managed-by: {{ $.Release.Service | quote }} 20 | app.kubernetes.io/instance: {{ $.Release.Name | quote }} 21 | helm.sh/chart: "{{ $.Chart.Name }}-{{ $.Chart.Version }}" 22 | spec: 23 | {{- with $.Values.imagePullSecrets }} 24 | imagePullSecrets: 25 | {{- toYaml . | nindent 8 }} 26 | {{- end }} 27 | serviceAccountName: {{ include "quickwit.serviceAccountName" $ }} 28 | securityContext: 29 | {{- toYaml $.Values.podSecurityContext | nindent 8 }} 30 | restartPolicy: Never 31 | {{- with $.Values.bootstrap.sources.initContainers }} 32 | initContainers: 33 | {{- toYaml . | nindent 8 }} 34 | {{ end }} 35 | containers: 36 | - name: {{ $.Chart.Name }} 37 | securityContext: 38 | {{- toYaml $.Values.securityContext | nindent 10 }} 39 | image: "{{ $.Values.image.repository }}:{{ $.Values.image.tag | default $.Chart.AppVersion }}" 40 | imagePullPolicy: {{ $.Values.image.pullPolicy }} 41 | {{- if $.Values.bootstrap.sources.command }} 42 | command: {{- toYaml $.Values.bootstrap.sources.command | nindent 8 }} 43 | {{- else }} 44 | command: ["/bin/bash","-c","quickwit source describe --index {{ .index }} --source {{ .source.source_id }} --endpoint ${QW_CLUSTER_ENDPOINT} || quickwit source create --index {{ .index }} --source-config {{ .source.source_id }}.yaml --endpoint ${QW_CLUSTER_ENDPOINT}"] 45 | {{- end }} 46 | env: 47 | {{- include "quickwit.environment" $ | nindent 10 }} 48 | {{- range $key, $value := $.Values.bootstrap.extraEnv }} 49 | - name: "{{ $key }}" 50 | value: "{{ $value }}" 51 | {{- end }} 52 | {{- if or ($.Values.environmentFrom) ($.Values.bootstrap.extraEnvFrom) }} 53 | envFrom: 54 | {{- with $.Values.environmentFrom }} 55 | {{- toYaml . | nindent 12 }} 56 | {{- end }} 57 | {{- with $.Values.bootstrap.extraEnvFrom }} 58 | {{- toYaml . | nindent 12 }} 59 | {{- end }} 60 | {{- end }} 61 | volumeMounts: 62 | - name: config 63 | mountPath: /quickwit/node.yaml 64 | subPath: node.yaml 65 | {{- if $.Values.seed.sources }} 66 | - name: source 67 | mountPath: /quickwit/{{ .source.source_id }}.yaml 68 | subPath: {{ .source.source_id }}.yaml 69 | {{- end }} 70 | {{- with $.Values.bootstrap.sources.extraVolumeMounts }} 71 | {{- toYaml . | nindent 10 }} 72 | {{- end }} 73 | resources: 74 | {{- toYaml $.Values.bootstrap.resources | nindent 10 }} 75 | volumes: 76 | - name: config 77 | configMap: 78 | name: {{ template "quickwit.fullname" $ }} 79 | items: 80 | - key: node.yaml 81 | path: node.yaml 82 | - name: source 83 | configMap: 84 | name: {{ template "quickwit.fullname" $ }}-bootstrap 85 | items: 86 | - key: {{ .source.source_id }}.yaml 87 | path: {{ .source.source_id }}.yaml 88 | {{- with $.Values.bootstrap.sources.extraVolumes }} 89 | {{- toYaml . | nindent 8 }} 90 | {{- end }} 91 | {{- with $.Values.bootstrap.nodeSelector }} 92 | nodeSelector: 93 | {{- toYaml . | nindent 8 }} 94 | {{- end }} 95 | {{- with merge $.Values.affinity $.Values.bootstrap.affinity }} 96 | affinity: 97 | {{- toYaml . | nindent 8 }} 98 | {{- end }} 99 | {{- $tolerations := concat $.Values.tolerations $.Values.bootstrap.tolerations | compact | uniq }} 100 | tolerations: 101 | {{- toYaml $tolerations | nindent 8 }} 102 | {{- if $.Values.bootstrap.runtimeClassName }} 103 | runtimeClassName: {{ $.Values.bootstrap.runtimeClassName | quote }} 104 | {{- end }} 105 | {{- end }} 106 | {{- end }} 107 | -------------------------------------------------------------------------------- /charts/quickwit/templates/metastore-deployment.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: Deployment 3 | metadata: 4 | name: {{ include "quickwit.fullname" . }}-metastore 5 | labels: 6 | {{- include "quickwit.labels" . | nindent 4 }} 7 | annotations: 8 | {{- with .Values.annotations }} 9 | {{- toYaml . | nindent 4 }} 10 | {{- end }} 11 | {{- with .Values.metastore.annotations }} 12 | {{- toYaml . | nindent 4 }} 13 | {{- end }} 14 | spec: 15 | replicas: {{ .Values.metastore.replicaCount }} 16 | selector: 17 | matchLabels: 18 | {{- include "quickwit.metastore.selectorLabels" . | nindent 6 }} 19 | strategy: {{- toYaml .Values.metastore.strategy | nindent 4 }} 20 | template: 21 | metadata: 22 | annotations: 23 | checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} 24 | {{- with .Values.podAnnotations }} 25 | {{- toYaml . | nindent 8 }} 26 | {{- end }} 27 | {{- with .Values.metastore.podAnnotations }} 28 | {{- toYaml . | nindent 8 }} 29 | {{- end }} 30 | labels: 31 | {{- include "quickwit.additionalLabels" . | nindent 8 }} 32 | {{- include "quickwit.metastore.selectorLabels" . | nindent 8 }} 33 | spec: 34 | {{- with .Values.imagePullSecrets }} 35 | imagePullSecrets: 36 | {{- toYaml . | nindent 8 }} 37 | {{- end }} 38 | serviceAccountName: {{ include "quickwit.serviceAccountName" . }} 39 | securityContext: 40 | {{- toYaml .Values.podSecurityContext | nindent 8 }} 41 | {{- with .Values.metastore.initContainers }} 42 | initContainers: 43 | {{- toYaml . | nindent 8 }} 44 | {{ end }} 45 | containers: 46 | - name: {{ .Chart.Name }} 47 | securityContext: 48 | {{- toYaml .Values.securityContext | nindent 12 }} 49 | image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" 50 | imagePullPolicy: {{ .Values.image.pullPolicy }} 51 | {{- if $.Values.metastore.args }} 52 | args: {{- toYaml $.Values.metastore.args | nindent 10 }} 53 | {{- else }} 54 | args: ["run", "--service", "metastore"] 55 | {{- end }} 56 | env: 57 | {{- include "quickwit.environment" . | nindent 12 }} 58 | {{- range $key, $value := .Values.metastore.extraEnv }} 59 | - name: "{{ $key }}" 60 | value: "{{ $value }}" 61 | {{- end }} 62 | {{- if or (.Values.environmentFrom) (.Values.metastore.extraEnvFrom) }} 63 | envFrom: 64 | {{- with .Values.environmentFrom }} 65 | {{- toYaml . | nindent 12 }} 66 | {{- end }} 67 | {{- with .Values.metastore.extraEnvFrom }} 68 | {{- toYaml . | nindent 12 }} 69 | {{- end }} 70 | {{- end }} 71 | ports: 72 | {{- include "quickwit.ports" . | nindent 12 }} 73 | startupProbe: 74 | {{- toYaml .Values.metastore.startupProbe | nindent 12 }} 75 | livenessProbe: 76 | {{- toYaml .Values.metastore.livenessProbe | nindent 12 }} 77 | readinessProbe: 78 | {{- toYaml .Values.metastore.readinessProbe | nindent 12 }} 79 | volumeMounts: 80 | - name: config 81 | mountPath: /quickwit/node.yaml 82 | subPath: node.yaml 83 | - name: data 84 | mountPath: /quickwit/qwdata 85 | {{- range .Values.configMaps }} 86 | - name: {{ .name }} 87 | mountPath: {{ .mountPath }} 88 | {{- end }} 89 | {{- with .Values.metastore.extraVolumeMounts }} 90 | {{- toYaml . | nindent 12 }} 91 | {{- end }} 92 | resources: 93 | {{- toYaml .Values.metastore.resources | nindent 14 }} 94 | volumes: 95 | - name: config 96 | configMap: 97 | name: {{ template "quickwit.fullname" . }} 98 | items: 99 | - key: node.yaml 100 | path: node.yaml 101 | - name: data 102 | emptyDir: {} 103 | {{- range .Values.configMaps }} 104 | - name: {{ .name }} 105 | configMap: 106 | name: {{ .name }} 107 | {{- end }} 108 | {{- with .Values.metastore.extraVolumes }} 109 | {{- toYaml . | nindent 8 }} 110 | {{- end }} 111 | {{- with .Values.metastore.nodeSelector }} 112 | nodeSelector: 113 | {{- toYaml . | nindent 8 }} 114 | {{- end }} 115 | {{- with merge .Values.affinity .Values.metastore.affinity }} 116 | affinity: 117 | {{- toYaml . | nindent 8 }} 118 | {{- end }} 119 | {{- $tolerations := concat .Values.tolerations .Values.metastore.tolerations | compact | uniq }} 120 | tolerations: 121 | {{- toYaml $tolerations | nindent 8 }} 122 | {{- if .Values.metastore.runtimeClassName }} 123 | runtimeClassName: {{ .Values.metastore.runtimeClassName | quote }} 124 | {{- end }} 125 | -------------------------------------------------------------------------------- /charts/quickwit/templates/prometheusrule.yaml: -------------------------------------------------------------------------------- 1 | {{- if and ( .Capabilities.APIVersions.Has "monitoring.coreos.com/v1" ) .Values.prometheusRule.enabled }} 2 | apiVersion: monitoring.coreos.com/v1 3 | kind: PrometheusRule 4 | metadata: 5 | name: {{ include "quickwit.fullname" . }} 6 | labels: 7 | {{- include "quickwit.labels" . | nindent 4 }} 8 | {{- with .Values.prometheusRule.additionalLabels }} 9 | {{- toYaml . | nindent 4 }} 10 | {{- end }} 11 | spec: 12 | groups: 13 | - name: {{ include "quickwit.fullname" . }} 14 | rules: 15 | {{- toYaml .Values.prometheusRule.rules | nindent 8 }} 16 | {{- end }} 17 | -------------------------------------------------------------------------------- /charts/quickwit/templates/searcher-pdb.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.searcher.podDisruptionBudget -}} 2 | apiVersion: policy/v1 3 | kind: PodDisruptionBudget 4 | metadata: 5 | name: {{ include "quickwit.fullname" . }}-searcher 6 | labels: 7 | {{- include "quickwit.labels" . | nindent 4 }} 8 | spec: 9 | selector: 10 | matchLabels: 11 | {{- include "quickwit.searcher.selectorLabels" . | nindent 6 }} 12 | {{- toYaml .Values.searcher.podDisruptionBudget | nindent 2 }} 13 | {{- end -}} 14 | -------------------------------------------------------------------------------- /charts/quickwit/templates/searcher-statefulset.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: apps/v1 2 | kind: StatefulSet 3 | metadata: 4 | name: {{ include "quickwit.fullname" . }}-searcher 5 | labels: 6 | {{- include "quickwit.labels" . | nindent 4 }} 7 | annotations: 8 | {{- with .Values.annotations }} 9 | {{- toYaml . | nindent 4 }} 10 | {{- end }} 11 | {{- with .Values.searcher.annotations }} 12 | {{- toYaml . | nindent 4 }} 13 | {{- end }} 14 | spec: 15 | {{- if hasKey .Values.searcher "replicaCount" }} 16 | replicas: {{ .Values.searcher.replicaCount }} 17 | {{- end }} 18 | serviceName: {{ include "quickwit.fullname" . }}-headless 19 | {{- if .Values.searcher.podManagementPolicy }} 20 | podManagementPolicy: {{ .Values.searcher.podManagementPolicy }} 21 | {{- end }} 22 | selector: 23 | matchLabels: 24 | {{- include "quickwit.searcher.selectorLabels" . | nindent 6 }} 25 | updateStrategy: 26 | {{- toYaml .Values.searcher.updateStrategy | nindent 4 }} 27 | template: 28 | metadata: 29 | annotations: 30 | checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum }} 31 | {{- with .Values.podAnnotations }} 32 | {{- toYaml . | nindent 8 }} 33 | {{- end }} 34 | {{- with .Values.searcher.podAnnotations }} 35 | {{- toYaml . | nindent 8 }} 36 | {{- end }} 37 | labels: 38 | {{- include "quickwit.additionalLabels" . | nindent 8 }} 39 | {{- include "quickwit.searcher.selectorLabels" . | nindent 8 }} 40 | spec: 41 | {{- with .Values.imagePullSecrets }} 42 | imagePullSecrets: 43 | {{- toYaml . | nindent 8 }} 44 | {{- end }} 45 | serviceAccountName: {{ include "quickwit.serviceAccountName" . }} 46 | securityContext: 47 | {{- toYaml .Values.podSecurityContext | nindent 8 }} 48 | {{- with .Values.searcher.initContainers }} 49 | initContainers: 50 | {{- toYaml . | nindent 8 }} 51 | {{ end }} 52 | containers: 53 | - name: {{ .Chart.Name }} 54 | securityContext: 55 | {{- toYaml .Values.securityContext | nindent 12 }} 56 | image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" 57 | imagePullPolicy: {{ .Values.image.pullPolicy }} 58 | {{- if $.Values.searcher.args }} 59 | args: {{- toYaml $.Values.searcher.args | nindent 10 }} 60 | {{- else }} 61 | args: ["run", "--service", "searcher"] 62 | {{- end }} 63 | env: 64 | {{- include "quickwit.environment" . | nindent 12 }} 65 | {{- range $key, $value := .Values.searcher.extraEnv }} 66 | - name: "{{ $key }}" 67 | value: "{{ $value }}" 68 | {{- end }} 69 | {{- if or (.Values.environmentFrom) (.Values.searcher.extraEnvFrom) }} 70 | envFrom: 71 | {{- with .Values.environmentFrom }} 72 | {{- toYaml . | nindent 12 }} 73 | {{- end }} 74 | {{- with .Values.searcher.extraEnvFrom }} 75 | {{- toYaml . | nindent 12 }} 76 | {{- end }} 77 | {{- end }} 78 | ports: 79 | {{- include "quickwit.ports" . | nindent 12 }} 80 | startupProbe: 81 | {{- toYaml .Values.searcher.startupProbe | nindent 12 }} 82 | livenessProbe: 83 | {{- toYaml .Values.searcher.livenessProbe | nindent 12 }} 84 | readinessProbe: 85 | {{- toYaml .Values.searcher.readinessProbe | nindent 12 }} 86 | volumeMounts: 87 | - name: config 88 | mountPath: /quickwit/node.yaml 89 | subPath: node.yaml 90 | - name: data 91 | mountPath: /quickwit/qwdata 92 | {{- range .Values.configMaps }} 93 | - name: {{ .name }} 94 | mountPath: {{ .mountPath }} 95 | {{- end }} 96 | {{- with .Values.searcher.extraVolumeMounts }} 97 | {{- toYaml . | nindent 12 }} 98 | {{- end }} 99 | resources: 100 | {{- toYaml .Values.searcher.resources | nindent 14 }} 101 | {{- if .Values.searcher.lifecycleHooks }} 102 | lifecycle: 103 | {{- toYaml .Values.searcher.lifecycleHooks | nindent 14 }} 104 | {{- end }} 105 | {{- if .Values.searcher.terminationGracePeriodSeconds }} 106 | terminationGracePeriodSeconds: {{ .Values.searcher.terminationGracePeriodSeconds }} 107 | {{- end }} 108 | volumes: 109 | - name: config 110 | configMap: 111 | name: {{ template "quickwit.fullname" . }} 112 | items: 113 | - key: node.yaml 114 | path: node.yaml 115 | {{- if not .Values.searcher.persistentVolume.enabled }} 116 | - name: data 117 | emptyDir: {} 118 | {{- end }} 119 | {{- range .Values.configMaps }} 120 | - name: {{ .name }} 121 | configMap: 122 | name: {{ .name }} 123 | {{- end }} 124 | {{- with .Values.searcher.extraVolumes }} 125 | {{- toYaml . | nindent 8 }} 126 | {{- end }} 127 | {{- with .Values.searcher.nodeSelector }} 128 | nodeSelector: 129 | {{- toYaml . | nindent 8 }} 130 | {{- end }} 131 | {{- with merge .Values.affinity .Values.searcher.affinity }} 132 | affinity: 133 | {{- toYaml . | nindent 8 }} 134 | {{- end }} 135 | {{- $tolerations := concat .Values.tolerations .Values.searcher.tolerations | compact | uniq }} 136 | tolerations: 137 | {{- toYaml $tolerations | nindent 8 }} 138 | {{- if .Values.searcher.runtimeClassName }} 139 | runtimeClassName: {{ .Values.searcher.runtimeClassName | quote }} 140 | {{- end }} 141 | {{- if .Values.searcher.persistentVolume.enabled }} 142 | volumeClaimTemplates: 143 | - metadata: 144 | name: data 145 | spec: 146 | accessModes: 147 | - ReadWriteOnce 148 | resources: 149 | requests: 150 | storage: "{{ .Values.searcher.persistentVolume.storage }}" 151 | {{- if .Values.searcher.persistentVolume.storageClass }} 152 | storageClassName: "{{ .Values.searcher.persistentVolume.storageClass }}" 153 | {{- end }} 154 | {{- end }} 155 | -------------------------------------------------------------------------------- /charts/quickwit/templates/service.yaml: -------------------------------------------------------------------------------- 1 | apiVersion: v1 2 | kind: Service 3 | metadata: 4 | name: {{ include "quickwit.fullname" . }}-searcher 5 | labels: 6 | {{- include "quickwit.labels" . | nindent 4 }} 7 | annotations: 8 | {{- with .Values.service.annotations }} 9 | {{- toYaml . | nindent 4 }} 10 | {{- end }} 11 | {{- with .Values.searcher.serviceAnnotations }} 12 | {{- toYaml . | nindent 4 }} 13 | {{- end }} 14 | spec: 15 | type: {{ .Values.searcher.serviceType | default .Values.service.type }} 16 | {{- if .Values.service.ipFamilyPolicy }} 17 | ipFamilyPolicy: {{ .Values.service.ipFamilyPolicy }} 18 | {{- end }} 19 | {{- if .Values.service.ipFamilies }} 20 | ipFamilies: {{ .Values.service.ipFamilies | toYaml | nindent 2 }} 21 | {{- end }} 22 | ports: 23 | - port: 7280 24 | targetPort: rest 25 | protocol: TCP 26 | name: rest 27 | - port: 7281 28 | targetPort: grpc 29 | name: grpc 30 | selector: 31 | {{- include "quickwit.searcher.selectorLabels" . | nindent 4 }} 32 | --- 33 | apiVersion: v1 34 | kind: Service 35 | metadata: 36 | name: {{ include "quickwit.fullname" . }}-headless 37 | labels: 38 | {{- include "quickwit.labels" . | nindent 4 }} 39 | annotations: 40 | {{- with .Values.service.annotations }} 41 | {{- toYaml . | nindent 4 }} 42 | {{- end }} 43 | spec: 44 | type: ClusterIP 45 | {{- if .Values.service.ipFamilyPolicy }} 46 | ipFamilyPolicy: {{ .Values.service.ipFamilyPolicy }} 47 | {{- end }} 48 | {{- if .Values.service.ipFamilies }} 49 | ipFamilies: {{ .Values.service.ipFamilies | toYaml | nindent 2 }} 50 | {{- end }} 51 | clusterIP: None 52 | publishNotReadyAddresses: true 53 | ports: 54 | # Needed by istio with mTLS mode set to STRICT. 55 | # The port names must starts with "tcp-" or "udp-" to work... 56 | # See https://istio.io/latest/docs/ops/common-problems/network-issues/#503-error-while-accessing-headless-services 57 | - name: udp 58 | port: 7282 59 | protocol: UDP 60 | - name: tcp-http 61 | port: 7280 62 | protocol: TCP 63 | - name: tcp-grpc 64 | port: 7281 65 | protocol: TCP 66 | selector: 67 | {{- include "quickwit.selectorLabels" . | nindent 4 }} 68 | --- 69 | apiVersion: v1 70 | kind: Service 71 | metadata: 72 | name: {{ include "quickwit.fullname" . }}-indexer 73 | labels: 74 | {{- include "quickwit.labels" . | nindent 4 }} 75 | annotations: 76 | {{- with .Values.service.annotations }} 77 | {{- toYaml . | nindent 4 }} 78 | {{- end }} 79 | {{- with .Values.indexer.serviceAnnotations }} 80 | {{- toYaml . | nindent 4 }} 81 | {{- end }} 82 | spec: 83 | type: {{ .Values.indexer.serviceType | default .Values.service.type }} 84 | {{- if .Values.service.ipFamilyPolicy }} 85 | ipFamilyPolicy: {{ .Values.service.ipFamilyPolicy }} 86 | {{- end }} 87 | {{- if .Values.service.ipFamilies }} 88 | ipFamilies: {{ .Values.service.ipFamilies | toYaml | nindent 2 }} 89 | {{- end }} 90 | ports: 91 | - port: 7280 92 | targetPort: rest 93 | protocol: TCP 94 | name: rest 95 | - port: 7281 96 | targetPort: grpc 97 | name: grpc 98 | selector: 99 | {{- include "quickwit.indexer.selectorLabels" . | nindent 4 }} 100 | --- 101 | apiVersion: v1 102 | kind: Service 103 | metadata: 104 | name: {{ include "quickwit.fullname" . }}-metastore 105 | labels: 106 | {{- include "quickwit.labels" . | nindent 4 }} 107 | annotations: 108 | {{- with .Values.service.annotations }} 109 | {{- toYaml . | nindent 4 }} 110 | {{- end }} 111 | {{- with .Values.metastore.serviceAnnotations }} 112 | {{- toYaml . | nindent 4 }} 113 | {{- end }} 114 | spec: 115 | type: {{ .Values.metastore.serviceType | default .Values.service.type }} 116 | {{- if .Values.service.ipFamilyPolicy }} 117 | ipFamilyPolicy: {{ .Values.service.ipFamilyPolicy }} 118 | {{- end }} 119 | {{- if .Values.service.ipFamilies }} 120 | ipFamilies: {{ .Values.service.ipFamilies | toYaml | nindent 2 }} 121 | {{- end }} 122 | ports: 123 | - port: 7280 124 | targetPort: rest 125 | protocol: TCP 126 | name: rest 127 | - port: 7281 128 | targetPort: grpc 129 | name: grpc 130 | selector: 131 | {{- include "quickwit.metastore.selectorLabels" . | nindent 4 }} 132 | --- 133 | apiVersion: v1 134 | kind: Service 135 | metadata: 136 | name: {{ include "quickwit.fullname" . }}-control-plane 137 | labels: 138 | {{- include "quickwit.labels" . | nindent 4 }} 139 | annotations: 140 | {{- with .Values.service.annotations }} 141 | {{- toYaml . | nindent 4 }} 142 | {{- end }} 143 | {{- with .Values.control_plane.serviceAnnotations }} 144 | {{- toYaml . | nindent 4 }} 145 | {{- end }} 146 | spec: 147 | type: {{ .Values.control_plane.serviceType | default .Values.service.type }} 148 | {{- if .Values.service.ipFamilyPolicy }} 149 | ipFamilyPolicy: {{ .Values.service.ipFamilyPolicy }} 150 | {{- end }} 151 | {{- if .Values.service.ipFamilies }} 152 | ipFamilies: {{ .Values.service.ipFamilies | toYaml | nindent 2 }} 153 | {{- end }} 154 | ports: 155 | - port: 7280 156 | targetPort: rest 157 | protocol: TCP 158 | name: rest 159 | - port: 7281 160 | targetPort: grpc 161 | name: grpc 162 | selector: 163 | {{- include "quickwit.control_plane.selectorLabels" . | nindent 4 }} 164 | 165 | --- 166 | apiVersion: v1 167 | kind: Service 168 | metadata: 169 | name: {{ include "quickwit.fullname" . }}-janitor 170 | labels: 171 | {{- include "quickwit.labels" . | nindent 4 }} 172 | annotations: 173 | {{- with .Values.service.annotations }} 174 | {{- toYaml . | nindent 4 }} 175 | {{- end }} 176 | {{- with .Values.janitor.serviceAnnotations }} 177 | {{- toYaml . | nindent 4 }} 178 | {{- end }} 179 | spec: 180 | type: {{ .Values.janitor.serviceType | default .Values.service.type }} 181 | {{- if .Values.service.ipFamilyPolicy }} 182 | ipFamilyPolicy: {{ .Values.service.ipFamilyPolicy }} 183 | {{- end }} 184 | {{- if .Values.service.ipFamilies }} 185 | ipFamilies: {{ .Values.service.ipFamilies | toYaml | nindent 2 }} 186 | {{- end }} 187 | ports: 188 | - port: 7280 189 | targetPort: rest 190 | protocol: TCP 191 | name: rest 192 | - port: 7281 193 | targetPort: grpc 194 | name: grpc 195 | selector: 196 | {{- include "quickwit.janitor.selectorLabels" . | nindent 4 }} 197 | -------------------------------------------------------------------------------- /charts/quickwit/templates/serviceaccount.yaml: -------------------------------------------------------------------------------- 1 | {{- if .Values.serviceAccount.create -}} 2 | apiVersion: v1 3 | kind: ServiceAccount 4 | metadata: 5 | name: {{ include "quickwit.serviceAccountName" . }} 6 | labels: 7 | {{- include "quickwit.labels" . | nindent 4 }} 8 | {{- with .Values.serviceAccount.annotations }} 9 | annotations: 10 | {{- toYaml . | nindent 4 }} 11 | {{- end }} 12 | {{- end }} 13 | -------------------------------------------------------------------------------- /charts/quickwit/templates/servicemonitor.yaml: -------------------------------------------------------------------------------- 1 | {{- if and ( .Capabilities.APIVersions.Has "monitoring.coreos.com/v1" ) .Values.serviceMonitor.enabled }} 2 | apiVersion: monitoring.coreos.com/v1 3 | kind: ServiceMonitor 4 | metadata: 5 | name: {{ include "quickwit.fullname" . }} 6 | labels: 7 | {{- include "quickwit.labels" . | nindent 4 }} 8 | {{- with .Values.serviceMonitor.additionalLabels }} 9 | {{- toYaml . | nindent 4 }} 10 | {{- end }} 11 | spec: 12 | endpoints: 13 | - path: /metrics 14 | port: rest 15 | interval: {{ .Values.serviceMonitor.interval }} 16 | scrapeTimeout: {{ .Values.serviceMonitor.scrapeTimeout }} 17 | metricRelabelings: 18 | {{- toYaml .Values.serviceMonitor.metricRelabelings | nindent 8 }} 19 | relabelings: 20 | {{- toYaml .Values.serviceMonitor.relabelings | nindent 8 }} 21 | jobLabel: app.kubernetes.io/instance 22 | selector: 23 | matchLabels: 24 | {{- include "quickwit.selectorLabels" . | nindent 6 }} 25 | {{- end }} 26 | -------------------------------------------------------------------------------- /charts/quickwit/values.yaml: -------------------------------------------------------------------------------- 1 | # Default values for quickwit. 2 | # This is a YAML-formatted file. 3 | # Declare variables to be passed into your templates. 4 | 5 | image: 6 | repository: quickwit/quickwit 7 | pullPolicy: IfNotPresent 8 | # Overrides the image tag whose default is the chart appVersion. 9 | # tag: v0.8.2 10 | 11 | imagePullSecrets: [] 12 | nameOverride: "" 13 | fullnameOverride: "" 14 | 15 | # Set the Kuberentes cluster domain if not default. It's used to build URLs for the services. 16 | clusterDomain: cluster.local 17 | 18 | # -- Additional labels to add to all resources 19 | additionalLabels: {} 20 | # app: quickwit 21 | 22 | serviceAccount: 23 | # Specifies whether a service account should be created 24 | create: true 25 | # Annotations to add to the service account 26 | annotations: {} 27 | # The name of the service account to use. 28 | # If not set and create is true, a name is generated using the fullname template 29 | name: "" 30 | 31 | annotations: {} 32 | 33 | podAnnotations: {} 34 | 35 | podSecurityContext: 36 | fsGroup: 1005 37 | 38 | securityContext: 39 | runAsNonRoot: true 40 | runAsUser: 1005 41 | 42 | # Additional global env 43 | environment: {} 44 | # KEY: VALUE 45 | environmentFrom: [] 46 | # - secretRef: 47 | # name: quickwit 48 | # - configMapRef: 49 | # name: quickwit 50 | 51 | configMaps: [] 52 | # - name: configmap1 53 | # mountPath: /quickwit/configmaps/ 54 | 55 | # Global tolerations applied to all deployments 56 | tolerations: [] 57 | 58 | # Global affinity settings applied to all deployments 59 | affinity: {} 60 | 61 | searcher: 62 | replicaCount: 3 63 | 64 | # Extra env for searcher 65 | extraEnv: {} 66 | # KEY: VALUE 67 | extraEnvFrom: [] 68 | # - secretRef: 69 | # name: quickwit-searcher 70 | # - configMapRef: 71 | # name: quickwit-searcher 72 | 73 | # extraVolumes -- Additional volumes to use with Pods. 74 | extraVolumes: [] 75 | 76 | # extraVolumeMounts -- Additional volumes to mount into Quickwit containers. 77 | extraVolumeMounts: [] 78 | 79 | resources: {} 80 | # limits: 81 | # cpu: 100m 82 | # memory: 128Mi 83 | # requests: 84 | # cpu: 100m 85 | # memory: 128Mi 86 | 87 | ## Pod distruption budget 88 | podDisruptionBudget: {} 89 | # maxUnavailable: 1 90 | # minAvailable: 2 91 | 92 | persistentVolume: 93 | enabled: false 94 | # storage: "1Gi" 95 | # storageClass: "" 96 | 97 | updateStrategy: {} 98 | # type: RollingUpdate 99 | 100 | startupProbe: 101 | httpGet: 102 | path: /health/livez 103 | port: rest 104 | failureThreshold: 12 105 | periodSeconds: 5 106 | 107 | livenessProbe: 108 | httpGet: 109 | path: /health/livez 110 | port: rest 111 | 112 | readinessProbe: 113 | httpGet: 114 | path: /health/readyz 115 | port: rest 116 | 117 | # StatefulSet allows you to relax its ordering guarantees 118 | # - OrderedReady 119 | # - Parallel 120 | podManagementPolicy: OrderedReady 121 | 122 | lifecycleHooks: {} 123 | # preStop: 124 | # exec: 125 | # command: 126 | # - /bin/sh 127 | # - -c 128 | # - sleep 30 129 | 130 | # Override args for starting container 131 | args: [] 132 | 133 | # initContainers -- Init containers to be added to the pods 134 | initContainers: [] 135 | 136 | annotations: {} 137 | 138 | podAnnotations: {} 139 | 140 | serviceAnnotations: {} 141 | 142 | # serviceType: ClusterIP 143 | 144 | nodeSelector: {} 145 | 146 | tolerations: [] 147 | 148 | affinity: {} 149 | 150 | runtimeClassName: "" 151 | 152 | indexer: 153 | enabled: true 154 | 155 | replicaCount: 1 156 | 157 | # Extra env for indexer 158 | extraEnv: {} 159 | # KEY: VALUE 160 | extraEnvFrom: [] 161 | # - secretRef: 162 | # name: quickwit-indexer 163 | # - configMapRef: 164 | # name: quickwit-indexer 165 | 166 | # extraVolumes -- Additional volumes to use with Pods. 167 | extraVolumes: [] 168 | 169 | # extraVolumeMounts -- Additional volumes to mount into Quickwit containers. 170 | extraVolumeMounts: [] 171 | 172 | resources: {} 173 | # limits: 174 | # cpu: 100m 175 | # memory: 128Mi 176 | # requests: 177 | # cpu: 100m 178 | # memory: 128Mi 179 | 180 | ## Pod distruption budget 181 | podDisruptionBudget: {} 182 | # maxUnavailable: 1 183 | # minAvailable: 2 184 | 185 | updateStrategy: {} 186 | # type: RollingUpdate 187 | 188 | startupProbe: 189 | httpGet: 190 | path: /health/livez 191 | port: rest 192 | failureThreshold: 12 193 | periodSeconds: 5 194 | 195 | livenessProbe: 196 | httpGet: 197 | path: /health/livez 198 | port: rest 199 | 200 | readinessProbe: 201 | httpGet: 202 | path: /health/readyz 203 | port: rest 204 | 205 | # StatefulSet allows you to relax its ordering guarantees 206 | # - OrderedReady 207 | # - Parallel 208 | podManagementPolicy: OrderedReady 209 | 210 | # Override args for starting container 211 | args: [] 212 | 213 | # initContainers -- Init containers to be added to the pods 214 | initContainers: [] 215 | 216 | annotations: {} 217 | 218 | podAnnotations: {} 219 | 220 | serviceAnnotations: {} 221 | 222 | # serviceType: ClusterIP 223 | 224 | nodeSelector: {} 225 | 226 | tolerations: [] 227 | 228 | affinity: {} 229 | 230 | lifecycleHooks: {} 231 | # preStop: 232 | # exec: 233 | # command: 234 | # - /bin/sh 235 | # - -c 236 | # - sleep 30 237 | 238 | # Long grace period is recommended to wait for all index commit_timeout_secs and splits to be published 239 | # See https://quickwit.io/docs/configuration/index-config#indexing-settings 240 | terminationGracePeriodSeconds: 120 241 | 242 | runtimeClassName: "" 243 | 244 | persistentVolume: 245 | enabled: false 246 | # storage: "1Gi" 247 | # storageClass: "" 248 | 249 | metastore: 250 | replicaCount: 1 251 | 252 | # Extra env for metastore 253 | extraEnv: {} 254 | # KEY: VALUE 255 | # This is the recommended way to inject `QW_METASTORE_URI` when using the postgres metastore (see https://quickwit.io/docs/configuration/metastore-config) 256 | extraEnvFrom: [] 257 | # - secretRef: 258 | # name: quickwit-metastore 259 | # - configMapRef: 260 | # name: quickwit-metastore 261 | 262 | # extraVolumes -- Additional volumes to use with Pods. 263 | extraVolumes: [] 264 | 265 | # extraVolumeMounts -- Additional volumes to mount into Quickwit containers. 266 | extraVolumeMounts: [] 267 | 268 | resources: {} 269 | # limits: 270 | # cpu: 100m 271 | # memory: 128Mi 272 | # requests: 273 | # cpu: 100m 274 | # memory: 128Mi 275 | 276 | updateStrategy: {} 277 | # type: RollingUpdate 278 | 279 | startupProbe: 280 | httpGet: 281 | path: /health/livez 282 | port: rest 283 | failureThreshold: 12 284 | periodSeconds: 5 285 | 286 | livenessProbe: 287 | httpGet: 288 | path: /health/livez 289 | port: rest 290 | 291 | readinessProbe: 292 | httpGet: 293 | path: /health/readyz 294 | port: rest 295 | 296 | # Override args for starting container 297 | args: [] 298 | 299 | # initContainers -- Init containers to be added to the pods 300 | initContainers: [] 301 | 302 | annotations: {} 303 | 304 | podAnnotations: {} 305 | 306 | serviceAnnotations: {} 307 | 308 | # serviceType: ClusterIP 309 | 310 | nodeSelector: {} 311 | 312 | tolerations: [] 313 | 314 | affinity: {} 315 | 316 | runtimeClassName: "" 317 | 318 | control_plane: 319 | enabled: true 320 | 321 | # Extra env for control plane 322 | extraEnv: {} 323 | # KEY: VALUE 324 | extraEnvFrom: [] 325 | # - secretRef: 326 | # name: quickwit-control-plane 327 | # - configMapRef: 328 | # name: quickwit-control-plane 329 | 330 | # extraVolumes -- Additional volumes to use with Pods. 331 | extraVolumes: [] 332 | 333 | # extraVolumeMounts -- Additional volumes to mount into Quickwit containers. 334 | extraVolumeMounts: [] 335 | 336 | resources: {} 337 | # limits: 338 | # cpu: 100m 339 | # memory: 128Mi 340 | # requests: 341 | # cpu: 100m 342 | # memory: 128Mi 343 | 344 | startupProbe: 345 | httpGet: 346 | path: /health/livez 347 | port: rest 348 | failureThreshold: 12 349 | periodSeconds: 5 350 | 351 | livenessProbe: 352 | httpGet: 353 | path: /health/livez 354 | port: rest 355 | 356 | readinessProbe: 357 | httpGet: 358 | path: /health/readyz 359 | port: rest 360 | 361 | # Override args for starting container 362 | args: [] 363 | 364 | # initContainers -- Init containers to be added to the pods 365 | initContainers: [] 366 | 367 | annotations: {} 368 | 369 | podAnnotations: {} 370 | 371 | serviceAnnotations: {} 372 | 373 | # serviceType: ClusterIP 374 | 375 | nodeSelector: {} 376 | 377 | tolerations: [] 378 | 379 | affinity: {} 380 | 381 | runtimeClassName: "" 382 | 383 | janitor: 384 | # Enable Janitor service 385 | enabled: true 386 | 387 | # Extra env for janitor 388 | extraEnv: {} 389 | # KEY: VALUE 390 | extraEnvFrom: [] 391 | # - secretRef: 392 | # name: quickwit-janitor 393 | # - configMapRef: 394 | # name: quickwit-janitor 395 | 396 | # extraVolumes -- Additional volumes to use with Pods. 397 | extraVolumes: [] 398 | 399 | # extraVolumeMounts -- Additional volumes to mount into Quickwit containers. 400 | extraVolumeMounts: [] 401 | 402 | resources: {} 403 | # limits: 404 | # cpu: 100m 405 | # memory: 128Mi 406 | # requests: 407 | # cpu: 100m 408 | # memory: 128Mi 409 | 410 | startupProbe: 411 | httpGet: 412 | path: /health/livez 413 | port: rest 414 | failureThreshold: 12 415 | periodSeconds: 5 416 | 417 | livenessProbe: 418 | httpGet: 419 | path: /health/livez 420 | port: rest 421 | 422 | readinessProbe: 423 | httpGet: 424 | path: /health/readyz 425 | port: rest 426 | 427 | # Override args for starting container 428 | args: [] 429 | 430 | # initContainers -- Init containers to be added to the pods 431 | initContainers: [] 432 | 433 | annotations: {} 434 | 435 | podAnnotations: {} 436 | 437 | serviceAnnotations: {} 438 | 439 | # serviceType: ClusterIP 440 | 441 | nodeSelector: {} 442 | 443 | tolerations: [] 444 | 445 | affinity: {} 446 | 447 | runtimeClassName: "" 448 | 449 | # Deploy jobs to bootstrap creation of indexes and sources for quickwit clusters 450 | bootstrap: 451 | # Enable bootstrap jobs 452 | enabled: false 453 | 454 | # Extra env for bootstrap jobs 455 | extraEnv: {} 456 | # KEY: VALUE 457 | extraEnvFrom: [] 458 | # - secretRef: 459 | # name: quickwit-bootstrap 460 | # - configMapRef: 461 | # name: quickwit-bootstrap 462 | 463 | resources: {} 464 | # limits: 465 | # cpu: 100m 466 | # memory: 128Mi 467 | # requests: 468 | # cpu: 100m 469 | # memory: 128Mi 470 | 471 | nodeSelector: {} 472 | 473 | tolerations: [] 474 | 475 | affinity: {} 476 | 477 | runtimeClassName: "" 478 | 479 | sources: 480 | # Override command for starting container 481 | command: [] 482 | 483 | # initContainers -- Init containers to be executed before the source creation. 484 | initContainers: [] 485 | 486 | # extraVolumes -- Additional volumes to use with bootstrap Pods. 487 | extraVolumes: [] 488 | 489 | # extraVolumeMounts -- Additional volumes to mount into bootstrap containers (not the init containers). 490 | extraVolumeMounts: [] 491 | 492 | indexes: 493 | # initContainers -- Init containers to be executed before the index creation. 494 | initContainers: [] 495 | 496 | # extraVolumes -- Additional volumes to use with bootstrap Pods. 497 | extraVolumes: [] 498 | 499 | # extraVolumeMounts -- Additional volumes to mount into bootstrap containers (not the init containers). 500 | extraVolumeMounts: [] 501 | 502 | # Quickwit configuration 503 | # Warning: This config is writed directly into a configMap 504 | # to avoid passing sensitive value you can pass environment variables. 505 | # https://quickwit.io/docs/configuration/node-config#using-environment-variables-in-the-configuration 506 | configLocation: /quickwit/node.yaml 507 | 508 | config: 509 | version: 0.8 510 | listen_address: 0.0.0.0 511 | gossip_listen_port: 7282 512 | data_dir: /quickwit/qwdata 513 | default_index_root_uri: s3://quickwit/indexes 514 | 515 | # postgres: 516 | # max_num_connections: 50 517 | 518 | # storage: 519 | # s3: 520 | # endpoint: "http://custom-s3-endpoint" 521 | # region: eu-east-1 522 | # We recommend using IAM roles and permissions to access Amazon S3 resources, 523 | # but you can specify a pair of access and secret keys if necessary. 524 | # access_key_id: 525 | # secret_access_key: ${AWS_ACCESS_KEY_ID} 526 | # azure: 527 | # account: "" 528 | # access_key: ${QW_AZURE_STORAGE_ACCESS_KEY} 529 | 530 | # Indexer settings 531 | # indexer: 532 | # split_store_max_num_bytes: 200G 533 | # split_store_max_num_splits: 10000 534 | # Ingest API settings 535 | # ingest_api: 536 | # max_queue_memory_usage: 2GiB 537 | # max_queue_disk_usage: 4GiB 538 | # Searcher settings 539 | # searcher: 540 | # fast_field_cache_capacity: 10G 541 | # split_footer_cache_capacity: 1G 542 | # max_num_concurrent_split_streams: 100 543 | 544 | # Seed configuration 545 | seed: 546 | indexes: [] 547 | # - version: 0.8 548 | # index_id: my-index 549 | # doc_mapping: 550 | # field_mappings: 551 | # - name: timestamp 552 | # type: datetime 553 | # fast: true 554 | # input_formats: 555 | # - unix_timestamp 556 | # output_format: unix_timestamp_secs 557 | # - name: body 558 | # type: text 559 | # timestamp_field: timestamp 560 | # search_settings: 561 | # default_search_fields: [body] 562 | # indexing_settings: 563 | # merge_policy: 564 | # type: limit_merge 565 | # max_merge_ops: 3 566 | # merge_factor: 10 567 | # max_merge_factor: 12 568 | 569 | sources: [] 570 | # - index: my-index 571 | # source: 572 | # version: 0.8 573 | # source_id: my-source 574 | # source_type: kafka 575 | # num_pipelines: 1 576 | # params: 577 | # topic: quickwit-topic 578 | # client_params: 579 | # bootstrap.servers: kafka-server-endpoint1:9092,kafka-server-endpoint2:9092 580 | 581 | # Prometheus metrics 582 | serviceMonitor: 583 | enabled: false 584 | # -- Additional labels to add to monitoring resources 585 | additionalLabels: {} 586 | interval: 60s 587 | scrapeTimeout: 10s 588 | metricRelabelings: [] 589 | # - action: replace 590 | # regex: quickwit-(.*) 591 | # replacement: $1 592 | # sourceLabels: [cluster] 593 | # targetLabel: qw_cluster 594 | # - action: labeldrop 595 | # regex: (endpoint|cluster) 596 | relabelings: [] 597 | # - sourceLabels: [__meta_kubernetes_pod_node_name] 598 | # targetLabel: instance 599 | 600 | # Prometheus Operator alertmanager alerts 601 | prometheusRule: 602 | enabled: false 603 | # -- Additional labels to add to PrometheusRule resources 604 | additionalLabels: {} 605 | rules: [] 606 | # - alert: Example 607 | # expr: metric == 1 608 | # for: 1m 609 | # labels: 610 | # severity: warning 611 | 612 | service: 613 | # Service type configuration default for all Quickwit services 614 | type: ClusterIP 615 | 616 | # -- Set the ip family policy to configure dual-stack see [Configure dual-stack](https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services) 617 | ipFamilyPolicy: "" 618 | # -- Sets the families that should be supported and the order in which they should be applied to ClusterIP as well. Can be IPv4 and/or IPv6. 619 | ipFamilies: [] 620 | 621 | annotations: {} 622 | 623 | ingress: 624 | enabled: false 625 | className: nginx 626 | annotations: 627 | nginx.ingress.kubernetes.io/proxy-body-size: 10m 628 | nginx.ingress.kubernetes.io/use-regex: "true" 629 | hosts: 630 | - host: "*" 631 | paths: 632 | # Ingest and ES bulk endpoints to quickwit-indexer 633 | - path: /api/v1/.*/ingest 634 | pathType: ImplementationSpecific 635 | service: indexer 636 | port: rest 637 | - path: /api/v1/_elastic/bulk 638 | pathType: ImplementationSpecific 639 | service: indexer 640 | port: rest 641 | - path: /api/v1/_elastic/.*/_bulk 642 | pathType: ImplementationSpecific 643 | service: indexer 644 | port: rest 645 | # Indexes API endpoints to quickwit-metastore 646 | - path: /api/v1/indexes 647 | pathType: Prefix 648 | service: metastore 649 | port: rest 650 | # Everything else to quickwit-searcher 651 | - path: / 652 | pathType: ImplementationSpecific 653 | service: searcher 654 | port: rest 655 | tls: [] 656 | # - secretName: chart-example-tls 657 | # hosts: 658 | # - chart-example.local 659 | 660 | resources: {} 661 | # We usually recommend not to specify default resources and to leave this as a conscious 662 | # choice for the user. This also increases chances charts run on environments with little 663 | # resources, such as Minikube. If you do want to specify resources, uncomment the following 664 | # lines, adjust them as necessary, and remove the curly braces after 'resources:'. 665 | # limits: 666 | # cpu: 100m 667 | # memory: 128Mi 668 | # requests: 669 | # cpu: 100m 670 | # memory: 128Mi 671 | --------------------------------------------------------------------------------