-
-
Notifications
You must be signed in to change notification settings - Fork 1.4k
fix(hosting): deploy ClickHouse from the official image instead of Bitnami #4249
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: main
Are you sure you want to change the base?
Changes from all commits
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
| Original file line number | Diff line number | Diff line change |
|---|---|---|
| @@ -0,0 +1,17 @@ | ||
| <!-- | ||
| Keeps ClickHouse's on-disk layout compatible with data volumes created by | ||
| the previous Bitnami-based setup, which stored everything under a data/ | ||
| subdirectory of the volume. Fresh installs get the same layout. tmp lives | ||
| outside data/ because old volumes contain a dangling tmp symlink there. | ||
| --> | ||
| <clickhouse> | ||
| <path>/var/lib/clickhouse/data/</path> | ||
| <tmp_path>/var/lib/clickhouse/tmp/</tmp_path> | ||
| <user_files_path>/var/lib/clickhouse/data/user_files/</user_files_path> | ||
| <format_schema_path>/var/lib/clickhouse/data/format_schemas/</format_schema_path> | ||
| <user_directories> | ||
| <local_directory> | ||
| <path>/var/lib/clickhouse/data/access/</path> | ||
| </local_directory> | ||
| </user_directories> | ||
| </clickhouse> |
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -26,10 +26,6 @@ dependencies: | |
| version: "21.2.6" | ||
| repository: "oci://registry-1.docker.io/bitnamicharts" | ||
| condition: redis.deploy | ||
| - name: clickhouse | ||
| version: "9.4.4" | ||
| repository: "oci://registry-1.docker.io/bitnamicharts" | ||
| condition: clickhouse.deploy | ||
| - name: minio | ||
|
Comment on lines
-29
to
33
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔍 Bitnami ClickHouse subchart removal is a major Helm upgrade event Removing the bitnami clickhouse dependency from Was this helpful? React with 👍 or 👎 to provide feedback. |
||
| version: "17.0.9" | ||
| repository: "oci://registry-1.docker.io/bitnamicharts" | ||
|
|
||
| Original file line number | Diff line number | Diff line change |
|---|---|---|
|
|
@@ -415,7 +415,7 @@ ClickHouse hostname | |
| {{- if .Values.clickhouse.host }} | ||
| {{- .Values.clickhouse.host }} | ||
| {{- else if .Values.clickhouse.deploy }} | ||
| {{- printf "%s-clickhouse" .Release.Name }} | ||
| {{- printf "%s-clickhouse" (include "trigger-v4.fullname" .) }} | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔍 Helm hostname helper changed from Release.Name to fullname — naming shift for existing releases The ClickHouse hostname helper ( Was this helpful? React with 👍 or 👎 to provide feedback. |
||
| {{- end }} | ||
| {{- end }} | ||
|
|
||
|
|
@@ -439,7 +439,7 @@ hex-encoded password or percent-encode before storing in the Secret. | |
| {{- if .Values.clickhouse.deploy -}} | ||
| {{- $protocol := ternary "https" "http" .Values.clickhouse.secure -}} | ||
| {{- $secure := ternary "true" "false" .Values.clickhouse.secure -}} | ||
| {{ $protocol }}://{{ .Values.clickhouse.auth.username }}:{{ .Values.clickhouse.auth.password }}@{{ include "trigger-v4.clickhouse.hostname" . }}:8123?secure={{ $secure }} | ||
| {{ $protocol }}://{{ .Values.clickhouse.auth.username }}:{{ .Values.clickhouse.auth.password }}@{{ include "trigger-v4.clickhouse.hostname" . }}:{{ .Values.clickhouse.service.ports.http }}?secure={{ $secure }} | ||
|
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win 🧩 Analysis chain🏁 Script executed: #!/bin/bash
# Check the Helm version and Chart.yaml apiVersion
fd -t f 'Chart.yaml' hosting/k8s/helm --exec cat {}
\;
# Also verify urlquery is a recognized built-in by rendering a test template
helm version --short 2>/dev/null || echo "Helm not installed in sandbox"Repository: triggerdotdev/trigger.dev Length of output: 1011 🏁 Script executed: #!/bin/bash
set -euo pipefail
# Inspect the ClickHouse URL helper blocks around the referenced lines.
file="hosting/k8s/helm/templates/_helpers.tpl"
wc -l "$file"
sed -n '420,485p' "$file"
# Locate all ClickHouse URL constructions in this file.
rg -n 'clickhouse\.(url|replication\.url|auth|external)' "$file"Repository: triggerdotdev/trigger.dev Length of output: 5830 🌐 Web query:
💡 Result: The urlquery function in Helm is a built-in template function derived from the Go text/template package [1][2]. It is used to escape a string so that it is suitable for embedding within the query portion of a URL [3][4][1]. When used in a Helm template, it functions as follows: - Purpose: It returns the escaped version of the provided argument, ensuring special characters are encoded correctly for URL query parameters [3][4]. - Usage: It can be used as a function or in a pipeline [3][4]. For example: $var:= urlquery "string for query" or {{.Values.myParam | urlquery }} This function is native to the underlying Go template engine [1][2]. Note that in Go, the equivalent function is often referred to as URLQueryEscaper, but it is exposed in templates as urlquery [1][2]. This function is available in text/template but is generally unavailable in html/template due to security considerations regarding automatic context-aware escaping [1][2]. Citations:
URL-encode the ClickHouse credentials in these URL helpers. The deploy and external branches interpolate usernames/passwords directly into the URL userinfo, so reserved characters like |
||
| {{- else if .Values.clickhouse.external.host -}} | ||
| {{- $protocol := ternary "https" "http" .Values.clickhouse.external.secure -}} | ||
| {{- $secure := ternary "true" "false" .Values.clickhouse.external.secure -}} | ||
|
|
@@ -460,7 +460,7 @@ applies to the replication URL. | |
| {{- define "trigger-v4.clickhouse.replication.url" -}} | ||
| {{- if .Values.clickhouse.deploy -}} | ||
| {{- $protocol := ternary "https" "http" .Values.clickhouse.secure -}} | ||
| {{ $protocol }}://{{ .Values.clickhouse.auth.username }}:{{ .Values.clickhouse.auth.password }}@{{ include "trigger-v4.clickhouse.hostname" . }}:8123 | ||
| {{ $protocol }}://{{ .Values.clickhouse.auth.username }}:{{ .Values.clickhouse.auth.password }}@{{ include "trigger-v4.clickhouse.hostname" . }}:{{ .Values.clickhouse.service.ports.http }} | ||
| {{- else if .Values.clickhouse.external.host -}} | ||
| {{- $protocol := ternary "https" "http" .Values.clickhouse.external.secure -}} | ||
| {{- if .Values.clickhouse.external.existingSecret -}} | ||
|
|
||
| Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| @@ -0,0 +1,199 @@ | ||||||||||||||||||||||||||||||||||||||
| {{- if .Values.clickhouse.deploy }} | ||||||||||||||||||||||||||||||||||||||
| apiVersion: v1 | ||||||||||||||||||||||||||||||||||||||
| kind: ConfigMap | ||||||||||||||||||||||||||||||||||||||
| metadata: | ||||||||||||||||||||||||||||||||||||||
| name: {{ include "trigger-v4.fullname" . }}-clickhouse-config | ||||||||||||||||||||||||||||||||||||||
| labels: | ||||||||||||||||||||||||||||||||||||||
| {{- $component := "clickhouse" }} | ||||||||||||||||||||||||||||||||||||||
| {{- include "trigger-v4.componentLabels" (dict "Chart" .Chart "Release" .Release "Values" .Values "component" $component) | nindent 4 }} | ||||||||||||||||||||||||||||||||||||||
| data: | ||||||||||||||||||||||||||||||||||||||
| {{- if not (hasKey .Values.clickhouse.configdFiles "data-paths.xml") }} | ||||||||||||||||||||||||||||||||||||||
| {{- /* Keeps the on-disk layout compatible with data volumes created by the | ||||||||||||||||||||||||||||||||||||||
| Bitnami subchart this chart used previously, which stored everything | ||||||||||||||||||||||||||||||||||||||
| under a data/ subdirectory of the volume. Fresh installs get the same | ||||||||||||||||||||||||||||||||||||||
| layout. tmp lives outside data/ because old volumes contain a | ||||||||||||||||||||||||||||||||||||||
| dangling tmp symlink there. */}} | ||||||||||||||||||||||||||||||||||||||
| data-paths.xml: | | ||||||||||||||||||||||||||||||||||||||
| <clickhouse> | ||||||||||||||||||||||||||||||||||||||
| <path>/var/lib/clickhouse/data/</path> | ||||||||||||||||||||||||||||||||||||||
| <tmp_path>/var/lib/clickhouse/tmp/</tmp_path> | ||||||||||||||||||||||||||||||||||||||
| <user_files_path>/var/lib/clickhouse/data/user_files/</user_files_path> | ||||||||||||||||||||||||||||||||||||||
| <format_schema_path>/var/lib/clickhouse/data/format_schemas/</format_schema_path> | ||||||||||||||||||||||||||||||||||||||
| <user_directories> | ||||||||||||||||||||||||||||||||||||||
| <local_directory> | ||||||||||||||||||||||||||||||||||||||
| <path>/var/lib/clickhouse/data/access/</path> | ||||||||||||||||||||||||||||||||||||||
| </local_directory> | ||||||||||||||||||||||||||||||||||||||
| </user_directories> | ||||||||||||||||||||||||||||||||||||||
| </clickhouse> | ||||||||||||||||||||||||||||||||||||||
| {{- end }} | ||||||||||||||||||||||||||||||||||||||
| {{- range $filename, $content := .Values.clickhouse.configdFiles }} | ||||||||||||||||||||||||||||||||||||||
| {{ $filename }}: | | ||||||||||||||||||||||||||||||||||||||
| {{- $content | nindent 4 }} | ||||||||||||||||||||||||||||||||||||||
| {{- end }} | ||||||||||||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||||||||||||
| {{- /* Reuse an existing data PVC instead of creating one via | ||||||||||||||||||||||||||||||||||||||
| volumeClaimTemplates. Set explicitly through persistence.existingClaim, | ||||||||||||||||||||||||||||||||||||||
| or detected automatically: upgrades from chart versions that bundled | ||||||||||||||||||||||||||||||||||||||
| the Bitnami subchart leave their PVC behind under the old name, and | ||||||||||||||||||||||||||||||||||||||
| adopting it preserves all ClickHouse data with no manual migration. | ||||||||||||||||||||||||||||||||||||||
| (lookup returns nothing during template/dry-run rendering; set | ||||||||||||||||||||||||||||||||||||||
| persistence.existingClaim explicitly when pre-rendering manifests, | ||||||||||||||||||||||||||||||||||||||
| e.g. with GitOps tools.) */}} | ||||||||||||||||||||||||||||||||||||||
| {{- $existingClaim := .Values.clickhouse.persistence.existingClaim }} | ||||||||||||||||||||||||||||||||||||||
| {{- if and (not $existingClaim) .Values.clickhouse.persistence.enabled }} | ||||||||||||||||||||||||||||||||||||||
| {{- $legacyName := printf "data-%s-clickhouse-shard0-0" .Release.Name }} | ||||||||||||||||||||||||||||||||||||||
| {{- if lookup "v1" "PersistentVolumeClaim" .Release.Namespace $legacyName }} | ||||||||||||||||||||||||||||||||||||||
| {{- $existingClaim = $legacyName }} | ||||||||||||||||||||||||||||||||||||||
| {{- end }} | ||||||||||||||||||||||||||||||||||||||
| {{- end }} | ||||||||||||||||||||||||||||||||||||||
| apiVersion: apps/v1 | ||||||||||||||||||||||||||||||||||||||
| kind: StatefulSet | ||||||||||||||||||||||||||||||||||||||
| metadata: | ||||||||||||||||||||||||||||||||||||||
| name: {{ include "trigger-v4.fullname" . }}-clickhouse | ||||||||||||||||||||||||||||||||||||||
| labels: | ||||||||||||||||||||||||||||||||||||||
| {{- $component := "clickhouse" }} | ||||||||||||||||||||||||||||||||||||||
| {{- include "trigger-v4.componentLabels" (dict "Chart" .Chart "Release" .Release "Values" .Values "component" $component) | nindent 4 }} | ||||||||||||||||||||||||||||||||||||||
| spec: | ||||||||||||||||||||||||||||||||||||||
| replicas: 1 | ||||||||||||||||||||||||||||||||||||||
| serviceName: {{ include "trigger-v4.fullname" . }}-clickhouse | ||||||||||||||||||||||||||||||||||||||
| selector: | ||||||||||||||||||||||||||||||||||||||
| matchLabels: | ||||||||||||||||||||||||||||||||||||||
| {{- include "trigger-v4.componentSelectorLabels" (dict "Chart" .Chart "Release" .Release "Values" .Values "component" $component) | nindent 6 }} | ||||||||||||||||||||||||||||||||||||||
| template: | ||||||||||||||||||||||||||||||||||||||
| metadata: | ||||||||||||||||||||||||||||||||||||||
| annotations: | ||||||||||||||||||||||||||||||||||||||
| checksum/config: {{ .Values.clickhouse.configdFiles | toYaml | sha256sum }} | ||||||||||||||||||||||||||||||||||||||
| {{- with .Values.clickhouse.podAnnotations }} | ||||||||||||||||||||||||||||||||||||||
| {{- toYaml . | nindent 8 }} | ||||||||||||||||||||||||||||||||||||||
| {{- end }} | ||||||||||||||||||||||||||||||||||||||
| labels: | ||||||||||||||||||||||||||||||||||||||
| {{- include "trigger-v4.componentSelectorLabels" (dict "Chart" .Chart "Release" .Release "Values" .Values "component" $component) | nindent 8 }} | ||||||||||||||||||||||||||||||||||||||
| spec: | ||||||||||||||||||||||||||||||||||||||
| {{- with .Values.global.imagePullSecrets }} | ||||||||||||||||||||||||||||||||||||||
| imagePullSecrets: | ||||||||||||||||||||||||||||||||||||||
| {{- toYaml . | nindent 8 }} | ||||||||||||||||||||||||||||||||||||||
| {{- end }} | ||||||||||||||||||||||||||||||||||||||
| {{- with .Values.clickhouse.podSecurityContext }} | ||||||||||||||||||||||||||||||||||||||
| securityContext: | ||||||||||||||||||||||||||||||||||||||
| {{- toYaml . | nindent 8 }} | ||||||||||||||||||||||||||||||||||||||
| {{- end }} | ||||||||||||||||||||||||||||||||||||||
| containers: | ||||||||||||||||||||||||||||||||||||||
| - name: clickhouse | ||||||||||||||||||||||||||||||||||||||
| {{- with .Values.clickhouse.securityContext }} | ||||||||||||||||||||||||||||||||||||||
| securityContext: | ||||||||||||||||||||||||||||||||||||||
| {{- toYaml . | nindent 12 }} | ||||||||||||||||||||||||||||||||||||||
| {{- end }} | ||||||||||||||||||||||||||||||||||||||
| image: "{{ .Values.global.imageRegistry | default .Values.clickhouse.image.registry }}/{{ .Values.clickhouse.image.repository }}:{{ .Values.clickhouse.image.tag }}{{ with .Values.clickhouse.image.digest }}@{{ . }}{{ end }}" | ||||||||||||||||||||||||||||||||||||||
| imagePullPolicy: {{ .Values.clickhouse.image.pullPolicy }} | ||||||||||||||||||||||||||||||||||||||
| env: | ||||||||||||||||||||||||||||||||||||||
| - name: CLICKHOUSE_USER | ||||||||||||||||||||||||||||||||||||||
| value: {{ .Values.clickhouse.auth.username | quote }} | ||||||||||||||||||||||||||||||||||||||
| - name: CLICKHOUSE_PASSWORD | ||||||||||||||||||||||||||||||||||||||
| value: {{ .Values.clickhouse.auth.password | quote }} | ||||||||||||||||||||||||||||||||||||||
|
Comment on lines
+89
to
+92
Contributor
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 🔒 Security & Privacy | 🟠 Major | ⚡ Quick win ClickHouse password is stored as a plaintext environment variable. The password from 🔒 Suggested refactor: use a Secret for the ClickHouse passwordAdd a conditional Secret resource (or support an existing one) and reference it in the env section: env:
- name: CLICKHOUSE_USER
value: {{ .Values.clickhouse.auth.username | quote }}
- name: CLICKHOUSE_PASSWORD
- value: {{ .Values.clickhouse.auth.password | quote }}
+ {{- if .Values.clickhouse.auth.existingSecret }}
+ valueFrom:
+ secretKeyRef:
+ name: {{ .Values.clickhouse.auth.existingSecret }}
+ key: password
+ {{- else }}
+ valueFrom:
+ secretKeyRef:
+ name: {{ include "trigger-v4.fullname" . }}-clickhouse
+ key: password
+ {{- end }}
- name: CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT
value: "1"And add a Secret resource (conditionally generated when no {{- if and .Values.clickhouse.deploy (not .Values.clickhouse.auth.existingSecret) }}
apiVersion: v1
kind: Secret
metadata:
name: {{ include "trigger-v4.fullname" . }}-clickhouse
labels:
{{- include "trigger-v4.componentLabels" (dict "Chart" .Chart "Release" .Release "Values" .Values "component" "clickhouse") | nindent 4 }}
type: Opaque
stringData:
password: {{ .Values.clickhouse.auth.password | quote }}
{{- end }}📝 Committable suggestion
Suggested change
|
||||||||||||||||||||||||||||||||||||||
| - name: CLICKHOUSE_DEFAULT_ACCESS_MANAGEMENT | ||||||||||||||||||||||||||||||||||||||
| value: "1" | ||||||||||||||||||||||||||||||||||||||
| ports: | ||||||||||||||||||||||||||||||||||||||
| - name: http | ||||||||||||||||||||||||||||||||||||||
| containerPort: 8123 | ||||||||||||||||||||||||||||||||||||||
| protocol: TCP | ||||||||||||||||||||||||||||||||||||||
| - name: native | ||||||||||||||||||||||||||||||||||||||
| containerPort: 9000 | ||||||||||||||||||||||||||||||||||||||
| protocol: TCP | ||||||||||||||||||||||||||||||||||||||
| {{- if .Values.clickhouse.livenessProbe.enabled }} | ||||||||||||||||||||||||||||||||||||||
| livenessProbe: | ||||||||||||||||||||||||||||||||||||||
| httpGet: | ||||||||||||||||||||||||||||||||||||||
| path: /ping | ||||||||||||||||||||||||||||||||||||||
| port: http | ||||||||||||||||||||||||||||||||||||||
| initialDelaySeconds: {{ .Values.clickhouse.livenessProbe.initialDelaySeconds }} | ||||||||||||||||||||||||||||||||||||||
| periodSeconds: {{ .Values.clickhouse.livenessProbe.periodSeconds }} | ||||||||||||||||||||||||||||||||||||||
| timeoutSeconds: {{ .Values.clickhouse.livenessProbe.timeoutSeconds }} | ||||||||||||||||||||||||||||||||||||||
| failureThreshold: {{ .Values.clickhouse.livenessProbe.failureThreshold }} | ||||||||||||||||||||||||||||||||||||||
| successThreshold: {{ .Values.clickhouse.livenessProbe.successThreshold }} | ||||||||||||||||||||||||||||||||||||||
| {{- end }} | ||||||||||||||||||||||||||||||||||||||
| {{- if .Values.clickhouse.readinessProbe.enabled }} | ||||||||||||||||||||||||||||||||||||||
| readinessProbe: | ||||||||||||||||||||||||||||||||||||||
| httpGet: | ||||||||||||||||||||||||||||||||||||||
| path: /ping | ||||||||||||||||||||||||||||||||||||||
| port: http | ||||||||||||||||||||||||||||||||||||||
| initialDelaySeconds: {{ .Values.clickhouse.readinessProbe.initialDelaySeconds }} | ||||||||||||||||||||||||||||||||||||||
| periodSeconds: {{ .Values.clickhouse.readinessProbe.periodSeconds }} | ||||||||||||||||||||||||||||||||||||||
| timeoutSeconds: {{ .Values.clickhouse.readinessProbe.timeoutSeconds }} | ||||||||||||||||||||||||||||||||||||||
| failureThreshold: {{ .Values.clickhouse.readinessProbe.failureThreshold }} | ||||||||||||||||||||||||||||||||||||||
| successThreshold: {{ .Values.clickhouse.readinessProbe.successThreshold }} | ||||||||||||||||||||||||||||||||||||||
| {{- end }} | ||||||||||||||||||||||||||||||||||||||
| resources: | ||||||||||||||||||||||||||||||||||||||
| {{- toYaml .Values.clickhouse.resources | nindent 12 }} | ||||||||||||||||||||||||||||||||||||||
| volumeMounts: | ||||||||||||||||||||||||||||||||||||||
| - name: data | ||||||||||||||||||||||||||||||||||||||
| mountPath: /var/lib/clickhouse | ||||||||||||||||||||||||||||||||||||||
| - name: logs | ||||||||||||||||||||||||||||||||||||||
| mountPath: /var/log/clickhouse-server | ||||||||||||||||||||||||||||||||||||||
| {{- /* Mount each override file individually: shadowing the whole | ||||||||||||||||||||||||||||||||||||||
| config.d directory would remove the image's built-in | ||||||||||||||||||||||||||||||||||||||
| docker_related_config.xml, which makes the server listen on | ||||||||||||||||||||||||||||||||||||||
| 0.0.0.0 instead of localhost only. */}} | ||||||||||||||||||||||||||||||||||||||
| {{- if not (hasKey .Values.clickhouse.configdFiles "data-paths.xml") }} | ||||||||||||||||||||||||||||||||||||||
| - name: config | ||||||||||||||||||||||||||||||||||||||
| mountPath: /etc/clickhouse-server/config.d/data-paths.xml | ||||||||||||||||||||||||||||||||||||||
| subPath: data-paths.xml | ||||||||||||||||||||||||||||||||||||||
| {{- end }} | ||||||||||||||||||||||||||||||||||||||
| {{- range $filename, $_ := .Values.clickhouse.configdFiles }} | ||||||||||||||||||||||||||||||||||||||
| - name: config | ||||||||||||||||||||||||||||||||||||||
| mountPath: /etc/clickhouse-server/config.d/{{ $filename }} | ||||||||||||||||||||||||||||||||||||||
| subPath: {{ $filename }} | ||||||||||||||||||||||||||||||||||||||
| {{- end }} | ||||||||||||||||||||||||||||||||||||||
| volumes: | ||||||||||||||||||||||||||||||||||||||
| - name: config | ||||||||||||||||||||||||||||||||||||||
| configMap: | ||||||||||||||||||||||||||||||||||||||
| name: {{ include "trigger-v4.fullname" . }}-clickhouse-config | ||||||||||||||||||||||||||||||||||||||
| - name: logs | ||||||||||||||||||||||||||||||||||||||
| emptyDir: {} | ||||||||||||||||||||||||||||||||||||||
| {{- if not .Values.clickhouse.persistence.enabled }} | ||||||||||||||||||||||||||||||||||||||
| - name: data | ||||||||||||||||||||||||||||||||||||||
| emptyDir: {} | ||||||||||||||||||||||||||||||||||||||
| {{- else if $existingClaim }} | ||||||||||||||||||||||||||||||||||||||
| - name: data | ||||||||||||||||||||||||||||||||||||||
| persistentVolumeClaim: | ||||||||||||||||||||||||||||||||||||||
| claimName: {{ $existingClaim }} | ||||||||||||||||||||||||||||||||||||||
| {{- end }} | ||||||||||||||||||||||||||||||||||||||
| {{- if and .Values.clickhouse.persistence.enabled (not $existingClaim) }} | ||||||||||||||||||||||||||||||||||||||
| volumeClaimTemplates: | ||||||||||||||||||||||||||||||||||||||
| - metadata: | ||||||||||||||||||||||||||||||||||||||
| name: data | ||||||||||||||||||||||||||||||||||||||
| {{- if .Values.clickhouse.persistence.retain }} | ||||||||||||||||||||||||||||||||||||||
| annotations: | ||||||||||||||||||||||||||||||||||||||
| helm.sh/resource-policy: keep | ||||||||||||||||||||||||||||||||||||||
| {{- end }} | ||||||||||||||||||||||||||||||||||||||
| spec: | ||||||||||||||||||||||||||||||||||||||
| accessModes: | ||||||||||||||||||||||||||||||||||||||
| - {{ .Values.clickhouse.persistence.accessMode }} | ||||||||||||||||||||||||||||||||||||||
| resources: | ||||||||||||||||||||||||||||||||||||||
| requests: | ||||||||||||||||||||||||||||||||||||||
| storage: {{ .Values.clickhouse.persistence.size }} | ||||||||||||||||||||||||||||||||||||||
| {{- $storageClass := .Values.clickhouse.persistence.storageClass | default .Values.global.storageClass }} | ||||||||||||||||||||||||||||||||||||||
| {{- if $storageClass }} | ||||||||||||||||||||||||||||||||||||||
| storageClassName: {{ $storageClass }} | ||||||||||||||||||||||||||||||||||||||
| {{- end }} | ||||||||||||||||||||||||||||||||||||||
| {{- end }} | ||||||||||||||||||||||||||||||||||||||
| --- | ||||||||||||||||||||||||||||||||||||||
| apiVersion: v1 | ||||||||||||||||||||||||||||||||||||||
| kind: Service | ||||||||||||||||||||||||||||||||||||||
| metadata: | ||||||||||||||||||||||||||||||||||||||
| name: {{ include "trigger-v4.fullname" . }}-clickhouse | ||||||||||||||||||||||||||||||||||||||
| labels: | ||||||||||||||||||||||||||||||||||||||
| {{- $component := "clickhouse" }} | ||||||||||||||||||||||||||||||||||||||
| {{- include "trigger-v4.componentLabels" (dict "Chart" .Chart "Release" .Release "Values" .Values "component" $component) | nindent 4 }} | ||||||||||||||||||||||||||||||||||||||
| spec: | ||||||||||||||||||||||||||||||||||||||
| type: {{ .Values.clickhouse.service.type }} | ||||||||||||||||||||||||||||||||||||||
| ports: | ||||||||||||||||||||||||||||||||||||||
| - port: {{ .Values.clickhouse.service.ports.http }} | ||||||||||||||||||||||||||||||||||||||
| targetPort: http | ||||||||||||||||||||||||||||||||||||||
| protocol: TCP | ||||||||||||||||||||||||||||||||||||||
| name: http | ||||||||||||||||||||||||||||||||||||||
| - port: {{ .Values.clickhouse.service.ports.native }} | ||||||||||||||||||||||||||||||||||||||
| targetPort: native | ||||||||||||||||||||||||||||||||||||||
| protocol: TCP | ||||||||||||||||||||||||||||||||||||||
| name: native | ||||||||||||||||||||||||||||||||||||||
| selector: | ||||||||||||||||||||||||||||||||||||||
| {{- include "trigger-v4.componentSelectorLabels" (dict "Chart" .Chart "Release" .Release "Values" .Values "component" $component) | nindent 4 }} | ||||||||||||||||||||||||||||||||||||||
| {{- end }} | ||||||||||||||||||||||||||||||||||||||
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
🩺 Stability & Availability | 🟠 Major | ⚡ Quick win
🧩 Analysis chain
🏁 Script executed:
Repository: triggerdotdev/trigger.dev
Length of output: 1037
🏁 Script executed:
Repository: triggerdotdev/trigger.dev
Length of output: 4728
Document the ClickHouse volume migration
Renaming the named volume from
clickhousetoclickhouse-datawill leave existing installs pointing at a fresh empty volume on upgrade. Add migration steps fordocs/self-hosting/docker.mdxso users can carry over their existing ClickHouse data.