From ef0f73a24e26e2c713a23175175454d70662f8a4 Mon Sep 17 00:00:00 2001 From: Evgeniy Devyatykh Date: Thu, 18 Jun 2026 13:03:06 +0500 Subject: [PATCH] feat: fix #21: support 'deployment' mode --- charts/uptrace/templates/_uptrace-pod.tpl | 84 +++++++++++++++++++ .../uptrace/templates/uptrace-deployment.yaml | 27 ++++++ .../templates/uptrace-statefulset.yaml | 84 +------------------ charts/uptrace/values.yaml | 1 + 4 files changed, 115 insertions(+), 81 deletions(-) create mode 100644 charts/uptrace/templates/_uptrace-pod.tpl create mode 100644 charts/uptrace/templates/uptrace-deployment.yaml diff --git a/charts/uptrace/templates/_uptrace-pod.tpl b/charts/uptrace/templates/_uptrace-pod.tpl new file mode 100644 index 0000000..d1c0f8f --- /dev/null +++ b/charts/uptrace/templates/_uptrace-pod.tpl @@ -0,0 +1,84 @@ +{{- define "uptrace.pod" -}} +{{- with .Values.uptrace.imagePullSecrets }} +imagePullSecrets: + {{- toYaml . | nindent 2 }} +{{- end }} +serviceAccountName: {{ include "uptrace.serviceAccountName" . }} +securityContext: + {{- toYaml .Values.podSecurityContext | nindent 2 }} +containers: + - name: {{ .Chart.Name }} + securityContext: + {{- toYaml .Values.containerSecurityContext | nindent 6 }} + image: "{{ .Values.uptrace.image.repository }}:{{ .Values.uptrace.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.uptrace.image.pullPolicy }} + args: ["serve"] + volumeMounts: + - name: config + mountPath: /etc/uptrace/config.yml + subPath: uptrace.yml + ports: + - name: http + containerPort: {{ .Values.uptrace.config.listen.http.addr | splitList ":" | last }} + protocol: TCP + - name: grpc + containerPort: {{ .Values.uptrace.config.listen.grpc.addr | splitList ":" | last }} + protocol: TCP + {{ with (tpl .Values.uptrace.config.site.url $) | urlParse }} + livenessProbe: + httpGet: + path: {{ .path }} + port: http + scheme: {{ if $.Values.uptrace.config.listen.tls }}HTTPS{{ else }}HTTP{{ end }} + readinessProbe: + httpGet: + path: {{ .path }} + port: http + scheme: {{ if $.Values.uptrace.config.listen.tls }}HTTPS{{ else }}HTTP{{ end }} + {{ end }} + env: + {{- if .Values.postgresql.enabled }} + - name: PG_HOST + valueFrom: + secretKeyRef: + name: uptrace-postgresql-app + key: host + - name: PG_USER + valueFrom: + secretKeyRef: + name: uptrace-postgresql-app + key: username + - name: PG_PASSWORD + valueFrom: + secretKeyRef: + name: uptrace-postgresql-app + key: password + - name: PG_DATABASE + valueFrom: + secretKeyRef: + name: uptrace-postgresql-app + key: dbname + {{- end }} + {{- toYaml .Values.uptrace.env | nindent 6 }} + envFrom: + {{- toYaml .Values.uptrace.envFrom | nindent 6 }} + resources: + {{- toYaml .Values.uptrace.resources | nindent 6 }} +{{- with .Values.uptrace.nodeSelector }} +nodeSelector: + {{- toYaml . | nindent 2 }} +{{- end }} +{{- with .Values.uptrace.affinity }} +affinity: + {{- toYaml . | nindent 2 }} +{{- end }} +{{- with .Values.uptrace.tolerations }} +tolerations: + {{- toYaml . | nindent 2 }} +{{- end }} +volumes: + - name: config + configMap: + name: {{ include "uptrace.fullname" . }} + +{{- end }} \ No newline at end of file diff --git a/charts/uptrace/templates/uptrace-deployment.yaml b/charts/uptrace/templates/uptrace-deployment.yaml new file mode 100644 index 0000000..0277215 --- /dev/null +++ b/charts/uptrace/templates/uptrace-deployment.yaml @@ -0,0 +1,27 @@ +{{- if eq .Values.uptrace.mode "deployment" -}} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "uptrace.fullname" . }} + labels: + app: uptrace + {{- include "uptrace.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.uptrace.replicaCount }} + selector: + matchLabels: + app: uptrace + {{- include "uptrace.selectorLabels" . | nindent 6 }} + template: + metadata: + annotations: + checksum/config: {{ .Values.uptrace.config | toYaml | sha256sum }} + {{- with .Values.podAnnotations }} + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + app: uptrace + {{- include "uptrace.selectorLabels" . | nindent 8 }} + spec: + {{- include "uptrace.pod" . | nindent 6 }} +{{- end }} \ No newline at end of file diff --git a/charts/uptrace/templates/uptrace-statefulset.yaml b/charts/uptrace/templates/uptrace-statefulset.yaml index e356f20..137386b 100644 --- a/charts/uptrace/templates/uptrace-statefulset.yaml +++ b/charts/uptrace/templates/uptrace-statefulset.yaml @@ -1,3 +1,4 @@ +{{- if eq .Values.uptrace.mode "statefulset" -}} apiVersion: apps/v1 kind: StatefulSet metadata: @@ -23,84 +24,5 @@ spec: app: uptrace {{- include "uptrace.selectorLabels" . | nindent 8 }} spec: - {{- with .Values.uptrace.imagePullSecrets }} - imagePullSecrets: - {{- toYaml . | nindent 8 }} - {{- end }} - serviceAccountName: {{ include "uptrace.serviceAccountName" . }} - securityContext: - {{- toYaml .Values.podSecurityContext | nindent 8 }} - containers: - - name: {{ .Chart.Name }} - securityContext: - {{- toYaml .Values.containerSecurityContext | nindent 12 }} - image: "{{ .Values.uptrace.image.repository }}:{{ .Values.uptrace.image.tag | default .Chart.AppVersion }}" - imagePullPolicy: {{ .Values.uptrace.image.pullPolicy }} - args: ["serve"] - volumeMounts: - - name: config - mountPath: /etc/uptrace/config.yml - subPath: uptrace.yml - ports: - - name: http - containerPort: {{ .Values.uptrace.config.listen.http.addr | splitList ":" | last }} - protocol: TCP - - name: grpc - containerPort: {{ .Values.uptrace.config.listen.grpc.addr | splitList ":" | last }} - protocol: TCP - {{ with (tpl .Values.uptrace.config.site.url $) | urlParse }} - livenessProbe: - httpGet: - path: {{ .path }} - port: http - scheme: {{ if $.Values.uptrace.config.listen.tls }}HTTPS{{ else }}HTTP{{ end }} - readinessProbe: - httpGet: - path: {{ .path }} - port: http - scheme: {{ if $.Values.uptrace.config.listen.tls }}HTTPS{{ else }}HTTP{{ end }} - {{ end }} - env: - {{- if .Values.postgresql.enabled }} - - name: PG_HOST - valueFrom: - secretKeyRef: - name: uptrace-postgresql-app - key: host - - name: PG_USER - valueFrom: - secretKeyRef: - name: uptrace-postgresql-app - key: username - - name: PG_PASSWORD - valueFrom: - secretKeyRef: - name: uptrace-postgresql-app - key: password - - name: PG_DATABASE - valueFrom: - secretKeyRef: - name: uptrace-postgresql-app - key: dbname - {{- end }} - {{- toYaml .Values.uptrace.env | nindent 12 }} - envFrom: - {{- toYaml .Values.uptrace.envFrom | nindent 12 }} - resources: - {{- toYaml .Values.uptrace.resources | nindent 12 }} - {{- with .Values.uptrace.nodeSelector }} - nodeSelector: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.uptrace.affinity }} - affinity: - {{- toYaml . | nindent 8 }} - {{- end }} - {{- with .Values.uptrace.tolerations }} - tolerations: - {{- toYaml . | nindent 8 }} - {{- end }} - volumes: - - name: config - configMap: - name: {{ include "uptrace.fullname" . }} + {{- include "uptrace.pod" . | nindent 6 }} +{{- end }} \ No newline at end of file diff --git a/charts/uptrace/values.yaml b/charts/uptrace/values.yaml index dc491e5..b72182b 100644 --- a/charts/uptrace/values.yaml +++ b/charts/uptrace/values.yaml @@ -269,6 +269,7 @@ ingress: # - chart-example.local uptrace: + mode: "statefulset" # statefulset or deployment replicaCount: 1 migrate: