From f1887a5de81647c42f05746c8e007e46dab87192 Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Mon, 8 Sep 2025 18:10:59 +0700 Subject: [PATCH 01/25] add docker-compose configs --- deployment/docker/compose-cluster.yml | 41 +++++++++++++++++++++++++++ deployment/docker/compose-single.yml | 30 ++++++++++++++++++++ deployment/docker/config-cluster.yaml | 28 ++++++++++++++++++ deployment/docker/config-single.yaml | 5 ++++ deployment/docker/config.seq-ui.yaml | 24 ++++++++++++++++ deployment/docker/mappings.yaml | 17 +++++++++++ 6 files changed, 145 insertions(+) create mode 100644 deployment/docker/compose-cluster.yml create mode 100644 deployment/docker/compose-single.yml create mode 100644 deployment/docker/config-cluster.yaml create mode 100644 deployment/docker/config-single.yaml create mode 100644 deployment/docker/config.seq-ui.yaml create mode 100644 deployment/docker/mappings.yaml diff --git a/deployment/docker/compose-cluster.yml b/deployment/docker/compose-cluster.yml new file mode 100644 index 00000000..4d7c8ddd --- /dev/null +++ b/deployment/docker/compose-cluster.yml @@ -0,0 +1,41 @@ +version: '3.8' + +services: + seq-db-proxy: + image: ghcr.io/ozontech/seq-db:v0.61.0 + ports: + - "9002:9002" # Default HTTP port + - "9004:9004" # Default gRPC port + - "9200:9200" # Default debug port + command: + --mode=proxy + --config=/configs/config.yaml + depends_on: + - seq-db-store + volumes: + - ./config-cluster.yaml:/configs/config.yaml + - ./mappings.yaml:/configs/mappings.yaml + seq-db-store: + image: ghcr.io/ozontech/seq-db:v0.61.0 + command: + --mode=store + --config=/configs/config.yaml + volumes: + - ./config-cluster.yaml:/configs/config.yaml + - ./mappings.yaml:/configs/mappings.yaml + - seqdbdata:/data + stdin_open: true + tty: true + restart: unless-stopped + seq-ui: + image: ghcr.io/ozontech/seq-ui:latest + volumes: + - ./config.seq-ui.yaml:/seq-ui/config.yaml + ports: + - "5555:5555" # Default HTTP port + - "5556:5556" # Default gRPC port + - "5557:5557" # Default debug port + command: --config config.yaml + +volumes: + seqdbdata: {} \ No newline at end of file diff --git a/deployment/docker/compose-single.yml b/deployment/docker/compose-single.yml new file mode 100644 index 00000000..6ffacd1e --- /dev/null +++ b/deployment/docker/compose-single.yml @@ -0,0 +1,30 @@ +version: '3.8' + +services: + seq-db: + image: ghcr.io/ozontech/seq-db:v0.61.0 + ports: + - "9002:9002" # Default HTTP port + - "9004:9004" # Default gRPC port + - "9200:9200" # Default debug port + command: + --config=/configs/config.yaml + --mode=single + volumes: + - ./config-single.yaml:/configs/config.yaml:ro + - seqdbdata:/data + stdin_open: true + tty: true + restart: unless-stopped + seq-ui: + image: ghcr.io/ozontech/seq-ui:latest + volumes: + - ./config.seq-ui.yaml:/seq-ui/config.yaml + ports: + - "5555:5555" # Default HTTP port + - "5556:5556" # Default gRPC port + - "5557:5557" # Default debug port + command: --config config.yaml + +volumes: + seqdbdata: {} \ No newline at end of file diff --git a/deployment/docker/config-cluster.yaml b/deployment/docker/config-cluster.yaml new file mode 100644 index 00000000..c6dd78c3 --- /dev/null +++ b/deployment/docker/config-cluster.yaml @@ -0,0 +1,28 @@ +storage: + data_dir: /data + frac_size: 256MiB + total_size: 100GiB + +cluster: + hot_replicas: 1 + # shuffle_replicas: true + hot_stores: + - seq-db-store:9004 + # colds + # read_stores: + # - seq-db-store:9004 + # write_stores: + # - seq-db-store:9004 + + + + +mapping: + enable_updates: true + path: /configs/mappings.yaml + update_period: 5s + +slow_logs: + bulk_threshold: 100ms + search_threshold: 20ms + fetch_threshold: 20ms \ No newline at end of file diff --git a/deployment/docker/config-single.yaml b/deployment/docker/config-single.yaml new file mode 100644 index 00000000..cee06272 --- /dev/null +++ b/deployment/docker/config-single.yaml @@ -0,0 +1,5 @@ +storage: + data_dir: /data + +mapping: + path: auto \ No newline at end of file diff --git a/deployment/docker/config.seq-ui.yaml b/deployment/docker/config.seq-ui.yaml new file mode 100644 index 00000000..2ee7f5bb --- /dev/null +++ b/deployment/docker/config.seq-ui.yaml @@ -0,0 +1,24 @@ +server: + http_addr: "0.0.0.0:5555" + grpc_addr: "0.0.0.0:5556" + debug_addr: "0.0.0.0:5557" +clients: + seq_db_addrs: + - "seq-db-proxy:9004" + seq_db_timeout: 15s + seq_db_avg_doc_size: 100 + request_retries: 3 + proxy_client_mode: "grpc" + grpc_keepalive_params: + time: 10s + timeout: 10s + permit_without_stream: true +handlers: + seq_api: + seq_cli_max_search_limit: 10000 + max_search_limit: 1000 + max_search_total_limit: 100000 + max_search_offset_limit: 100000 + max_export_limit: 10000 + max_parallel_export_requests: 1 + max_aggregations_per_request: 3 \ No newline at end of file diff --git a/deployment/docker/mappings.yaml b/deployment/docker/mappings.yaml new file mode 100644 index 00000000..d46b2c14 --- /dev/null +++ b/deployment/docker/mappings.yaml @@ -0,0 +1,17 @@ +mapping-list: + - type: "keyword" + name: "k8s_pod" + - type: "keyword" + name: "k8s_namespace" + - type: "keyword" + name: "k8s_container" + - type: "text" + name: "request" + - type: "path" + name: "request_uri" + - name: "message" + types: + - type: "text" + - title: "keyword" + type: "keyword" + size: 18 From 11cee0edddd9890cb00d10049c213cf594a8f2c4 Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Wed, 10 Sep 2025 14:47:47 +0700 Subject: [PATCH 02/25] add helm chart --- deployment/k8s/helm-chart/.helmignore | 23 ++ deployment/k8s/helm-chart/Chart.yaml | 24 ++ deployment/k8s/helm-chart/output.yaml | 105 +++++++ deployment/k8s/helm-chart/templates/NOTES.txt | 22 ++ .../k8s/helm-chart/templates/_helpers.tpl | 62 ++++ .../k8s/helm-chart/templates/ingress.yaml | 43 +++ .../helm-chart/templates/seq-ui/_helpers.tpl | 62 ++++ .../templates/seq-ui/deployment.yaml | 80 ++++++ .../helm-chart/templates/seq-ui/ingress.yaml | 43 +++ .../helm-chart/templates/seq-ui/service.yaml | 15 + .../k8s/helm-chart/templates/service.yaml | 19 ++ .../helm-chart/templates/serviceaccount.yaml | 13 + .../k8s/helm-chart/templates/statefulset.yaml | 84 ++++++ deployment/k8s/helm-chart/values.yaml | 264 ++++++++++++++++++ 14 files changed, 859 insertions(+) create mode 100644 deployment/k8s/helm-chart/.helmignore create mode 100644 deployment/k8s/helm-chart/Chart.yaml create mode 100644 deployment/k8s/helm-chart/output.yaml create mode 100644 deployment/k8s/helm-chart/templates/NOTES.txt create mode 100644 deployment/k8s/helm-chart/templates/_helpers.tpl create mode 100644 deployment/k8s/helm-chart/templates/ingress.yaml create mode 100644 deployment/k8s/helm-chart/templates/seq-ui/_helpers.tpl create mode 100644 deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml create mode 100644 deployment/k8s/helm-chart/templates/seq-ui/ingress.yaml create mode 100644 deployment/k8s/helm-chart/templates/seq-ui/service.yaml create mode 100644 deployment/k8s/helm-chart/templates/service.yaml create mode 100644 deployment/k8s/helm-chart/templates/serviceaccount.yaml create mode 100644 deployment/k8s/helm-chart/templates/statefulset.yaml create mode 100644 deployment/k8s/helm-chart/values.yaml diff --git a/deployment/k8s/helm-chart/.helmignore b/deployment/k8s/helm-chart/.helmignore new file mode 100644 index 00000000..0e8a0eb3 --- /dev/null +++ b/deployment/k8s/helm-chart/.helmignore @@ -0,0 +1,23 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*.orig +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ diff --git a/deployment/k8s/helm-chart/Chart.yaml b/deployment/k8s/helm-chart/Chart.yaml new file mode 100644 index 00000000..e46cde94 --- /dev/null +++ b/deployment/k8s/helm-chart/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +name: seq-db +description: A Helm chart for Kubernetes + +# A chart can be either an 'application' or a 'library' chart. +# +# Application charts are a collection of templates that can be packaged into versioned archives +# to be deployed. +# +# Library charts provide useful utilities or functions for the chart developer. They're included as +# a dependency of application charts to inject those utilities and functions into the rendering +# pipeline. Library charts do not define any templates and therefore cannot be deployed. +type: application + +# This is the chart version. This version number should be incremented each time you make changes +# to the chart and its templates, including the app version. +# Versions are expected to follow Semantic Versioning (https://semver.org/) +version: 0.1.0 + +# This is the version number of the application being deployed. This version number should be +# incremented each time you make changes to the application. Versions are not expected to +# follow Semantic Versioning. They should reflect the version the application is using. +# It is recommended to use it with quotes. +appVersion: "latest" diff --git a/deployment/k8s/helm-chart/output.yaml b/deployment/k8s/helm-chart/output.yaml new file mode 100644 index 00000000..9ed3f715 --- /dev/null +++ b/deployment/k8s/helm-chart/output.yaml @@ -0,0 +1,105 @@ +--- +# Source: seq-db/templates/serviceaccount.yaml +apiVersion: v1 +kind: ServiceAccount +metadata: + name: release-name-seq-db + labels: + helm.sh/chart: seq-db-0.1.0 + app.kubernetes.io/name: seq-db + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "latest" + app.kubernetes.io/managed-by: Helm +automountServiceAccountToken: true +--- +# Source: seq-db/templates/seq-ui/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: release-name-seq-db + labels: + helm.sh/chart: seq-db-0.1.0 + app.kubernetes.io/name: seq-db + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "latest" + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + ports: + - port: + targetPort: http + protocol: TCP + name: http + selector: + app.kubernetes.io/name: seq-db + app.kubernetes.io/instance: release-name +--- +# Source: seq-db/templates/service.yaml +apiVersion: v1 +kind: Service +metadata: + name: release-name-seq-db + labels: + helm.sh/chart: seq-db-0.1.0 + app.kubernetes.io/name: seq-db + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "latest" + app.kubernetes.io/managed-by: Helm +spec: + type: ClusterIP + ports: + - port: 9002 + targetPort: http + protocol: TCP + name: http + - port: 9004 + targetPort: grpc + protocol: TCP + name: grpc + selector: + app.kubernetes.io/name: seq-db + app.kubernetes.io/instance: release-name +--- +# Source: seq-db/templates/statefulset.yaml +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: release-name-seq-db + labels: + helm.sh/chart: seq-db-0.1.0 + app.kubernetes.io/name: seq-db + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "latest" + app.kubernetes.io/managed-by: Helm +spec: + replicas: 1 + updateStrategy: + type: + selector: + matchLabels: + app.kubernetes.io/name: seq-db + app.kubernetes.io/instance: release-name + template: + metadata: + labels: + helm.sh/chart: seq-db-0.1.0 + app.kubernetes.io/name: seq-db + app.kubernetes.io/instance: release-name + app.kubernetes.io/version: "latest" + app.kubernetes.io/managed-by: Helm + spec: + serviceAccountName: release-name-seq-db + containers: + - name: seq-db + image: "ghcr.io/ozontech/seq-db:latest" + imagePullPolicy: IfNotPresent + ports: + - name: http + containerPort: 9002 + protocol: TCP + - name: grpc + containerPort: 9004 + protocol: TCP + - name: debug + containerPort: 9200 + protocol: TCP diff --git a/deployment/k8s/helm-chart/templates/NOTES.txt b/deployment/k8s/helm-chart/templates/NOTES.txt new file mode 100644 index 00000000..fd8e31e8 --- /dev/null +++ b/deployment/k8s/helm-chart/templates/NOTES.txt @@ -0,0 +1,22 @@ +1. Get the application URL by running these commands: +{{- if .Values.ingress.enabled }} +{{- range $host := .Values.ingress.hosts }} + {{- range .paths }} + http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} + {{- end }} +{{- end }} +{{- else if contains "NodePort" .Values.service.type }} + export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "seq-db.fullname" . }}) + export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") + echo http://$NODE_IP:$NODE_PORT +{{- else if contains "LoadBalancer" .Values.service.type }} + NOTE: It may take a few minutes for the LoadBalancer IP to be available. + You can watch its status by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "seq-db.fullname" . }}' + export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "seq-db.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") + echo http://$SERVICE_IP:{{ .Values.service.port }} +{{- else if contains "ClusterIP" .Values.service.type }} + export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "seq-db.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") + export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") + echo "Visit http://127.0.0.1:8080 to use your application" + kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT +{{- end }} diff --git a/deployment/k8s/helm-chart/templates/_helpers.tpl b/deployment/k8s/helm-chart/templates/_helpers.tpl new file mode 100644 index 00000000..cc9149e5 --- /dev/null +++ b/deployment/k8s/helm-chart/templates/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "seq-db.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "seq-db.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "seq-db.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "seq-db.labels" -}} +helm.sh/chart: {{ include "seq-db.chart" . }} +{{ include "seq-db.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "seq-db.selectorLabels" -}} +app.kubernetes.io/name: {{ include "seq-db.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "seq-db.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "seq-db.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/deployment/k8s/helm-chart/templates/ingress.yaml b/deployment/k8s/helm-chart/templates/ingress.yaml new file mode 100644 index 00000000..16bbe7fd --- /dev/null +++ b/deployment/k8s/helm-chart/templates/ingress.yaml @@ -0,0 +1,43 @@ +{{- if .Values.ingress.enabled -}} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ include "seq-db.fullname" . }} + labels: + {{- include "seq-db.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- with .Values.ingress.className }} + ingressClassName: {{ . }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- with .pathType }} + pathType: {{ . }} + {{- end }} + backend: + service: + name: {{ include "seq-db.fullname" $ }} + port: + number: {{ $.Values.service.port }} + {{- end }} + {{- end }} +{{- end }} diff --git a/deployment/k8s/helm-chart/templates/seq-ui/_helpers.tpl b/deployment/k8s/helm-chart/templates/seq-ui/_helpers.tpl new file mode 100644 index 00000000..e86e7dc6 --- /dev/null +++ b/deployment/k8s/helm-chart/templates/seq-ui/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "seq-ui.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "seq-ui.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "seq-ui.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "seq-ui.labels" -}} +helm.sh/chart: {{ include "seq-ui.chart" . }} +{{ include "seq-ui.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "seq-ui.selectorLabels" -}} +app.kubernetes.io/name: {{ include "seq-ui.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "seq-ui.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "seq-ui.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml b/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml new file mode 100644 index 00000000..87689b0c --- /dev/null +++ b/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml @@ -0,0 +1,80 @@ +{{- if .Values.sequi.enabled -}} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "seq-ui.fullname" . }} + labels: + {{- include "seq-ui.labels" . | nindent 4 }} +spec: + {{- if not .Values.sequi.autoscaling.enabled }} + replicas: {{ .Values.sequi.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "seq-ui.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.sequi.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "seq-ui.labels" . | nindent 8 }} + {{- with .Values.sequi.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + {{- with .Values.sequi.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "seq-ui.serviceAccountName" . }} + {{- with .Values.sequi.podSecurityContext }} + securityContext: + {{- toYaml . | nindent 8 }} + {{- end }} + containers: + - name: {{ .Chart.Name }} + {{- with .Values.sequi.securityContext }} + securityContext: + {{- toYaml . | nindent 12 }} + {{- end }} + image: "{{ .Values.sequi.image.repository }}:{{ .Values.sequi.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.sequi.image.pullPolicy }} + ports: + - name: http + containerPort: {{ .Values.sequi.service.port }} + protocol: TCP + {{- with .Values.sequi.livenessProbe }} + livenessProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.sequi.readinessProbe }} + readinessProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.sequi.resources }} + resources: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.sequi.volumeMounts }} + volumeMounts: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.sequi.volumes }} + volumes: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.sequi.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.sequi.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.sequi.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} +{{- end }} diff --git a/deployment/k8s/helm-chart/templates/seq-ui/ingress.yaml b/deployment/k8s/helm-chart/templates/seq-ui/ingress.yaml new file mode 100644 index 00000000..01a4ee0d --- /dev/null +++ b/deployment/k8s/helm-chart/templates/seq-ui/ingress.yaml @@ -0,0 +1,43 @@ +{{- if .Values.ingress.enabled -}} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ include "seq-ui.fullname" . }} + labels: + {{- include "seq-ui.labels" . | nindent 4 }} + {{- with .Values.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- with .Values.ingress.className }} + ingressClassName: {{ . }} + {{- end }} + {{- if .Values.ingress.tls }} + tls: + {{- range .Values.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- with .pathType }} + pathType: {{ . }} + {{- end }} + backend: + service: + name: {{ include "seq-ui.fullname" $ }} + port: + number: {{ $.Values.service.port }} + {{- end }} + {{- end }} +{{- end }} diff --git a/deployment/k8s/helm-chart/templates/seq-ui/service.yaml b/deployment/k8s/helm-chart/templates/seq-ui/service.yaml new file mode 100644 index 00000000..77f2f621 --- /dev/null +++ b/deployment/k8s/helm-chart/templates/seq-ui/service.yaml @@ -0,0 +1,15 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "seq-ui.fullname" . }} + labels: + {{- include "seq-ui.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.port }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "seq-ui.selectorLabels" . | nindent 4 }} diff --git a/deployment/k8s/helm-chart/templates/service.yaml b/deployment/k8s/helm-chart/templates/service.yaml new file mode 100644 index 00000000..1e7958b1 --- /dev/null +++ b/deployment/k8s/helm-chart/templates/service.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "seq-db.fullname" . }} + labels: + {{- include "seq-db.labels" . | nindent 4 }} +spec: + type: {{ .Values.service.type }} + ports: + - port: {{ .Values.service.httpPort }} + targetPort: http + protocol: TCP + name: http + - port: {{ .Values.service.grpcPort }} + targetPort: grpc + protocol: TCP + name: grpc + selector: + {{- include "seq-db.selectorLabels" . | nindent 4 }} diff --git a/deployment/k8s/helm-chart/templates/serviceaccount.yaml b/deployment/k8s/helm-chart/templates/serviceaccount.yaml new file mode 100644 index 00000000..f78a2da3 --- /dev/null +++ b/deployment/k8s/helm-chart/templates/serviceaccount.yaml @@ -0,0 +1,13 @@ +{{- if .Values.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "seq-db.serviceAccountName" . }} + labels: + {{- include "seq-db.labels" . | nindent 4 }} + {{- with .Values.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +automountServiceAccountToken: {{ .Values.serviceAccount.automount }} +{{- end }} diff --git a/deployment/k8s/helm-chart/templates/statefulset.yaml b/deployment/k8s/helm-chart/templates/statefulset.yaml new file mode 100644 index 00000000..eb81bfb0 --- /dev/null +++ b/deployment/k8s/helm-chart/templates/statefulset.yaml @@ -0,0 +1,84 @@ +apiVersion: apps/v1 +kind: StatefulSet +metadata: + name: {{ include "seq-db.fullname" . }} + labels: + {{- include "seq-db.labels" . | nindent 4 }} +spec: + replicas: {{ .Values.replicaCount }} + updateStrategy: + type: {{ .Values.updateStrategy }} + selector: + matchLabels: + {{- include "seq-db.selectorLabels" . | nindent 6 }} + template: + metadata: + {{- with .Values.podAnnotations }} + annotations: + {{- toYaml . | nindent 8 }} + {{- end }} + labels: + {{- include "seq-db.labels" . | nindent 8 }} + {{- with .Values.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + {{- with .Values.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "seq-db.serviceAccountName" . }} + {{- with .Values.podSecurityContext }} + securityContext: + {{- toYaml . | nindent 8 }} + {{- end }} + containers: + - name: {{ .Chart.Name }} + {{- with .Values.securityContext }} + securityContext: + {{- toYaml . | nindent 12 }} + {{- end }} + image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.image.pullPolicy }} + ports: + - name: http + containerPort: {{ .Values.service.httpPort }} + protocol: TCP + - name: grpc + containerPort: {{ .Values.service.grpcPort }} + protocol: TCP + - name: debug + containerPort: {{ .Values.service.debugPort }} + protocol: TCP + {{- with .Values.livenessProbe }} + livenessProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.readinessProbe }} + readinessProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.resources }} + resources: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.volumeMounts }} + volumeMounts: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.volumes }} + volumes: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} diff --git a/deployment/k8s/helm-chart/values.yaml b/deployment/k8s/helm-chart/values.yaml new file mode 100644 index 00000000..2ce162ca --- /dev/null +++ b/deployment/k8s/helm-chart/values.yaml @@ -0,0 +1,264 @@ +# Default values for seq-db. +# This is a YAML-formatted file. +# Declare variables to be passed into your templates. + +# This will set the replicaset count more information can be found here: https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/ +replicaCount: 1 + +# This sets the container image more information can be found here: https://kubernetes.io/docs/concepts/containers/images/ +image: + repository: ghcr.io/ozontech/seq-db + # This sets the pull policy for images. + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + +modes: + - single + - proxy + - store + +# This is for the secrets for pulling an image from a private repository more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ +imagePullSecrets: [] +# This is to override the chart name. +nameOverride: "" +fullnameOverride: "" + +# This section builds out the service account more information can be found here: https://kubernetes.io/docs/concepts/security/service-accounts/ +serviceAccount: + # Specifies whether a service account should be created + create: true + # Automatically mount a ServiceAccount's API credentials? + automount: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + +# This is for setting Kubernetes Annotations to a Pod. +# For more information checkout: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ +podAnnotations: {} +# This is for setting Kubernetes Labels to a Pod. +# For more information checkout: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ +podLabels: {} + +podSecurityContext: {} + # fsGroup: 2000 + +securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + +podManagementPolicy: "Parallel" + +# This is for setting up a service more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/ +service: + # This sets the service type more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + type: ClusterIP + # This sets the ports more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#field-spec-ports + httpPort: 9002 + grpcPort: 9004 + debugPort: 9200 + +# This block is for setting up the ingress for more information can be found here: https://kubernetes.io/docs/concepts/services-networking/ingress/ +ingress: + enabled: false + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: chart-example.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + +resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + +# This is to setup the liveness and readiness probes more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ +# livenessProbe: +# httpGet: +# path: / +# port: http +# readinessProbe: +# httpGet: +# path: / +# port: http + +# Additional volumes on the output Deployment definition. +volumes: [] +# - name: foo +# secret: +# secretName: mysecret +# optional: false + +# Additional volumeMounts on the output Deployment definition. +volumeMounts: [] +# - name: foo +# mountPath: "/etc/foo" +# readOnly: true + +volumeClaimTemplate: + accessModes: ["ReadWriteOnce"] + resources: + requests: + storage: 30Gi + + +persistence: + enabled: true + labels: + # Add default labels for the volumeClaimTemplate of the StatefulSet + enabled: false + annotations: {} + +nodeSelector: {} + +tolerations: [] + +affinity: {} + +sequi: + enabled: false + # Default values for seq-ui. + # This is a YAML-formatted file. + # Declare variables to be passed into your templates. + + # This will set the replicaset count more information can be found here: https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/ + replicaCount: 1 + + # This sets the container image more information can be found here: https://kubernetes.io/docs/concepts/containers/images/ + image: + repository: nginx + # This sets the pull policy for images. + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + + # This is for the secrets for pulling an image from a private repository more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + imagePullSecrets: [] + # This is to override the chart name. + nameOverride: "" + fullnameOverride: "" + + # This section builds out the service account more information can be found here: https://kubernetes.io/docs/concepts/security/service-accounts/ + serviceAccount: + # Specifies whether a service account should be created + create: true + # Automatically mount a ServiceAccount's API credentials? + automount: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + + # This is for setting Kubernetes Annotations to a Pod. + # For more information checkout: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + podAnnotations: {} + # This is for setting Kubernetes Labels to a Pod. + # For more information checkout: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + podLabels: {} + + podSecurityContext: {} + # fsGroup: 2000 + + securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + + # This is for setting up a service more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/ + service: + # This sets the service type more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + type: ClusterIP + # This sets the ports more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#field-spec-ports + port: 80 + + # This block is for setting up the ingress for more information can be found here: https://kubernetes.io/docs/concepts/services-networking/ingress/ + ingress: + enabled: false + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: chart-example.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + + resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + + # This is to setup the liveness and readiness probes more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http + + # This section is for setting up autoscaling more information can be found here: https://kubernetes.io/docs/concepts/workloads/autoscaling/ + autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + + # Additional volumes on the output Deployment definition. + volumes: [] + # - name: foo + # secret: + # secretName: mysecret + # optional: false + + # Additional volumeMounts on the output Deployment definition. + volumeMounts: [] + # - name: foo + # mountPath: "/etc/foo" + # readOnly: true + + nodeSelector: {} + + tolerations: [] + + affinity: {} From 4b4b75343a44688f6dbe853ace85db0ab461e94d Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Wed, 10 Sep 2025 17:54:56 +0700 Subject: [PATCH 03/25] add seq-proxy helm chart --- deployment/k8s/helm-chart/README.md | 13 ++ deployment/k8s/helm-chart/templates/NOTES.txt | 22 --- .../k8s/helm-chart/templates/configmap.yaml | 17 ++ .../templates/seq-proxy/_helpers.tpl | 62 +++++++ .../templates/seq-proxy/configmap.yaml | 26 +++ .../templates/seq-proxy/deployment.yaml | 96 +++++++++++ .../helm-chart/templates/seq-proxy/hpa.yaml | 32 ++++ .../templates/seq-proxy/ingress.yaml | 43 +++++ .../templates/seq-proxy/service.yaml | 19 +++ .../templates/seq-proxy/serviceaccount.yaml | 13 ++ .../helm-chart/templates/seq-ui/_helpers.tpl | 6 +- .../templates/seq-ui/configmap.yaml | 37 ++++ .../templates/seq-ui/deployment.yaml | 3 + .../helm-chart/templates/seq-ui/service.yaml | 2 + .../k8s/helm-chart/templates/statefulset.yaml | 27 ++- .../k8s/helm-chart/values.minikube.yaml | 4 + deployment/k8s/helm-chart/values.yaml | 159 ++++++++++++++++-- 17 files changed, 535 insertions(+), 46 deletions(-) create mode 100644 deployment/k8s/helm-chart/README.md create mode 100644 deployment/k8s/helm-chart/templates/configmap.yaml create mode 100644 deployment/k8s/helm-chart/templates/seq-proxy/_helpers.tpl create mode 100644 deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml create mode 100644 deployment/k8s/helm-chart/templates/seq-proxy/deployment.yaml create mode 100644 deployment/k8s/helm-chart/templates/seq-proxy/hpa.yaml create mode 100644 deployment/k8s/helm-chart/templates/seq-proxy/ingress.yaml create mode 100644 deployment/k8s/helm-chart/templates/seq-proxy/service.yaml create mode 100644 deployment/k8s/helm-chart/templates/seq-proxy/serviceaccount.yaml create mode 100644 deployment/k8s/helm-chart/templates/seq-ui/configmap.yaml create mode 100644 deployment/k8s/helm-chart/values.minikube.yaml diff --git a/deployment/k8s/helm-chart/README.md b/deployment/k8s/helm-chart/README.md new file mode 100644 index 00000000..ce00b393 --- /dev/null +++ b/deployment/k8s/helm-chart/README.md @@ -0,0 +1,13 @@ +# Helm Chart + +Install [Helm](https://helm.sh/docs/intro/install/) + +## Examples for Minikube Minikube + +Install [Minikube](https://minikube.sigs.k8s.io/docs/start/) + +### Install + +```shell +helm upgrade --install seq-db . -f values.minikube.yaml +``` diff --git a/deployment/k8s/helm-chart/templates/NOTES.txt b/deployment/k8s/helm-chart/templates/NOTES.txt index fd8e31e8..e69de29b 100644 --- a/deployment/k8s/helm-chart/templates/NOTES.txt +++ b/deployment/k8s/helm-chart/templates/NOTES.txt @@ -1,22 +0,0 @@ -1. Get the application URL by running these commands: -{{- if .Values.ingress.enabled }} -{{- range $host := .Values.ingress.hosts }} - {{- range .paths }} - http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ .path }} - {{- end }} -{{- end }} -{{- else if contains "NodePort" .Values.service.type }} - export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "seq-db.fullname" . }}) - export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}") - echo http://$NODE_IP:$NODE_PORT -{{- else if contains "LoadBalancer" .Values.service.type }} - NOTE: It may take a few minutes for the LoadBalancer IP to be available. - You can watch its status by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "seq-db.fullname" . }}' - export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "seq-db.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}") - echo http://$SERVICE_IP:{{ .Values.service.port }} -{{- else if contains "ClusterIP" .Values.service.type }} - export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "seq-db.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}") - export CONTAINER_PORT=$(kubectl get pod --namespace {{ .Release.Namespace }} $POD_NAME -o jsonpath="{.spec.containers[0].ports[0].containerPort}") - echo "Visit http://127.0.0.1:8080 to use your application" - kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:$CONTAINER_PORT -{{- end }} diff --git a/deployment/k8s/helm-chart/templates/configmap.yaml b/deployment/k8s/helm-chart/templates/configmap.yaml new file mode 100644 index 00000000..9a5819b3 --- /dev/null +++ b/deployment/k8s/helm-chart/templates/configmap.yaml @@ -0,0 +1,17 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ template "seq-db.fullname" . }}-config + labels: + app: "{{ template "seq-db.fullname" . }}" + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + heritage: {{ .Release.Service | quote }} + release: {{ .Release.Name | quote }} +data: + config.yaml: | + storage: + data_dir: /data + frac_size: 256MiB + total_size: 10GiB + mapping: + path: auto \ No newline at end of file diff --git a/deployment/k8s/helm-chart/templates/seq-proxy/_helpers.tpl b/deployment/k8s/helm-chart/templates/seq-proxy/_helpers.tpl new file mode 100644 index 00000000..21baf78e --- /dev/null +++ b/deployment/k8s/helm-chart/templates/seq-proxy/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "seq-proxy.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}-proxy +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "seq-proxy.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}-proxy +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }}-proxy +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}-proxy +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "seq-proxy.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "seq-proxy.labels" -}} +helm.sh/chart: {{ include "seq-proxy.chart" . }} +{{ include "seq-proxy.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "seq-proxy.selectorLabels" -}} +app.kubernetes.io/name: {{ include "seq-proxy.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "seq-proxy.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "seq-proxy.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml b/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml new file mode 100644 index 00000000..2fd0094c --- /dev/null +++ b/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml @@ -0,0 +1,26 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ template "seq-proxy.fullname" . }}-config + labels: + app: "{{ template "seq-proxy.fullname" . }}" + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + heritage: {{ .Release.Service | quote }} + release: {{ .Release.Name | quote }} +data: + config.yaml: | + storage: + data_dir: /data + cluster: + replicas: {{ .Values.seqproxy.cluster.replicas }} + shuffle_replicas: {{ .Values.seqproxy.cluster.shuffle_replicas }} + hot_stores: + {{- if .Values.seqproxy.cluster.hotStores }} + {{- toYaml .Values.seqproxy.cluster.hotStores | nindent 8 }} + {{- else }} + {{- range $i := until (.Values.replicaCount | int) }} + - {{ $.Release.Name }}-{{ $i }}.{{ $.Release.Name }}.{{ $.Release.Namespace }}.svc.cluster.local.:9004 + {{- end }} + {{- end }} + mapping: + path: auto \ No newline at end of file diff --git a/deployment/k8s/helm-chart/templates/seq-proxy/deployment.yaml b/deployment/k8s/helm-chart/templates/seq-proxy/deployment.yaml new file mode 100644 index 00000000..7f860e79 --- /dev/null +++ b/deployment/k8s/helm-chart/templates/seq-proxy/deployment.yaml @@ -0,0 +1,96 @@ +{{- if .Values.seqproxy.enabled -}} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "seq-proxy.fullname" . }} + labels: + {{- include "seq-proxy.labels" . | nindent 4 }} +spec: + {{- if not .Values.seqproxy.autoscaling.enabled }} + replicas: {{ .Values.seqproxy.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "seq-proxy.selectorLabels" . | nindent 6 }} + template: + metadata: + annotations: + {{- with .Values.seqproxy.podAnnotations }} + {{- toYaml . | nindent 8 }} + {{- end }} + checksum/config: {{ include (print .Template.BasePath "/seq-proxy/configmap.yaml") . | sha256sum }} + labels: + {{- include "seq-proxy.labels" . | nindent 8 }} + {{- with .Values.seqproxy.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + {{- with .Values.seqproxy.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "seq-proxy.serviceAccountName" . }} + {{- with .Values.seqproxy.podSecurityContext }} + securityContext: + {{- toYaml . | nindent 8 }} + {{- end }} + containers: + - name: {{ .Chart.Name }} + {{- with .Values.seqproxy.securityContext }} + securityContext: + {{- toYaml . | nindent 12 }} + {{- end }} + image: "{{ .Values.seqproxy.image.repository }}:{{ .Values.seqproxy.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.seqproxy.image.pullPolicy }} + ports: + - name: http + containerPort: {{ .Values.seqproxy.service.httpPort }} + protocol: TCP + - name: grpc + containerPort: {{ .Values.seqproxy.service.grpcPort }} + protocol: TCP + - name: debug + containerPort: {{ .Values.seqproxy.service.debugPort }} + protocol: TCP + args: + - --mode=proxy + - --config=/configs/config.yaml + {{- with .Values.seqproxy.livenessProbe }} + livenessProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.seqproxy.readinessProbe }} + readinessProbe: + {{- toYaml . | nindent 12 }} + {{- end }} + {{- with .Values.seqproxy.resources }} + resources: + {{- toYaml . | nindent 12 }} + {{- end }} + volumeMounts: + - name: "{{ template "seq-proxy.fullname" . }}-config" + mountPath: "/configs" + readOnly: true + {{- with .Values.seqproxy.volumeMounts }} + {{- toYaml . | nindent 12 }} + {{- end }} + volumes: + - name: {{ template "seq-proxy.fullname" . }}-config + configMap: + name: {{ template "seq-proxy.fullname" . }}-config + {{- with .Values.seqproxy.volumes }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.seqproxy.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.seqproxy.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.seqproxy.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} +{{- end }} diff --git a/deployment/k8s/helm-chart/templates/seq-proxy/hpa.yaml b/deployment/k8s/helm-chart/templates/seq-proxy/hpa.yaml new file mode 100644 index 00000000..da2dc72d --- /dev/null +++ b/deployment/k8s/helm-chart/templates/seq-proxy/hpa.yaml @@ -0,0 +1,32 @@ +{{- if .Values.seqproxy.autoscaling.enabled }} +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "seq-proxy.fullname" . }} + labels: + {{- include "seq-proxy.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "seq-proxy.fullname" . }} + minReplicas: {{ .Values.seqproxy.autoscaling.minReplicas }} + maxReplicas: {{ .Values.seqproxy.autoscaling.maxReplicas }} + metrics: + {{- if .Values.seqproxy.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.seqproxy.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.seqproxy.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: {{ .Values.seqproxy.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/deployment/k8s/helm-chart/templates/seq-proxy/ingress.yaml b/deployment/k8s/helm-chart/templates/seq-proxy/ingress.yaml new file mode 100644 index 00000000..479a76c5 --- /dev/null +++ b/deployment/k8s/helm-chart/templates/seq-proxy/ingress.yaml @@ -0,0 +1,43 @@ +{{- if .Values.seqproxy.ingress.enabled -}} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ include "seq-proxy.fullname" . }} + labels: + {{- include "seq-proxy.labels" . | nindent 4 }} + {{- with .Values.seqproxy.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- with .Values.seqproxy.ingress.className }} + ingressClassName: {{ . }} + {{- end }} + {{- if .Values.seqproxy.ingress.tls }} + tls: + {{- range .Values.seqproxy.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.seqproxy.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- with .pathType }} + pathType: {{ . }} + {{- end }} + backend: + service: + name: {{ include "seq-proxy.fullname" $ }} + port: + number: {{ $.Values.seqproxy.service.port }} + {{- end }} + {{- end }} +{{- end }} diff --git a/deployment/k8s/helm-chart/templates/seq-proxy/service.yaml b/deployment/k8s/helm-chart/templates/seq-proxy/service.yaml new file mode 100644 index 00000000..1b4e7fc2 --- /dev/null +++ b/deployment/k8s/helm-chart/templates/seq-proxy/service.yaml @@ -0,0 +1,19 @@ +apiVersion: v1 +kind: Service +metadata: + name: {{ include "seq-proxy.fullname" . }} + labels: + {{- include "seq-proxy.labels" . | nindent 4 }} +spec: + type: {{ .Values.seqproxy.service.type }} + ports: + - port: {{ .Values.seqproxy.service.httpPort }} + targetPort: http + protocol: TCP + name: http + - port: {{ .Values.seqproxy.service.grpcPort }} + targetPort: grpc + protocol: TCP + name: grpc + selector: + {{- include "seq-proxy.selectorLabels" . | nindent 4 }} diff --git a/deployment/k8s/helm-chart/templates/seq-proxy/serviceaccount.yaml b/deployment/k8s/helm-chart/templates/seq-proxy/serviceaccount.yaml new file mode 100644 index 00000000..e5f20c99 --- /dev/null +++ b/deployment/k8s/helm-chart/templates/seq-proxy/serviceaccount.yaml @@ -0,0 +1,13 @@ +{{- if .Values.seqproxy.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "seq-proxy.serviceAccountName" . }} + labels: + {{- include "seq-proxy.labels" . | nindent 4 }} + {{- with .Values.seqproxy.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +automountServiceAccountToken: {{ .Values.seqproxy.serviceAccount.automount }} +{{- end }} diff --git a/deployment/k8s/helm-chart/templates/seq-ui/_helpers.tpl b/deployment/k8s/helm-chart/templates/seq-ui/_helpers.tpl index e86e7dc6..cd167311 100644 --- a/deployment/k8s/helm-chart/templates/seq-ui/_helpers.tpl +++ b/deployment/k8s/helm-chart/templates/seq-ui/_helpers.tpl @@ -2,7 +2,7 @@ Expand the name of the chart. */}} {{- define "seq-ui.name" -}} -{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}-sequi {{- end }} {{/* @@ -12,11 +12,11 @@ If release name contains chart name it will be used as a full name. */}} {{- define "seq-ui.fullname" -}} {{- if .Values.fullnameOverride }} -{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}-sequi {{- else }} {{- $name := default .Chart.Name .Values.nameOverride }} {{- if contains $name .Release.Name }} -{{- .Release.Name | trunc 63 | trimSuffix "-" }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }}-sequi {{- else }} {{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} {{- end }} diff --git a/deployment/k8s/helm-chart/templates/seq-ui/configmap.yaml b/deployment/k8s/helm-chart/templates/seq-ui/configmap.yaml new file mode 100644 index 00000000..9d13f0d3 --- /dev/null +++ b/deployment/k8s/helm-chart/templates/seq-ui/configmap.yaml @@ -0,0 +1,37 @@ +{{- if .Values.sequi.enabled -}} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ template "seq-ui.fullname" . }}-config + labels: + app: "{{ template "seq-ui.fullname" . }}" + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + heritage: {{ .Release.Service | quote }} + release: {{ .Release.Name | quote }} +data: + config.seq-ui.yaml: | + server: + http_addr: "0.0.0.0:5555" + grpc_addr: "0.0.0.0:5556" + debug_addr: "0.0.0.0:5557" + clients: + seq_db_addrs: + - {{ $.Release.Name }}-proxy.{{ $.Release.Namespace }}.svc.cluster.local.:9004 + seq_db_timeout: 15s + seq_db_avg_doc_size: 100 + request_retries: 3 + proxy_client_mode: "grpc" + grpc_keepalive_params: + time: 10s + timeout: 10s + permit_without_stream: true + handlers: + seq_api: + seq_cli_max_search_limit: 10000 + max_search_limit: 1000 + max_search_total_limit: 100000 + max_search_offset_limit: 100000 + max_export_limit: 10000 + max_parallel_export_requests: 1 + max_aggregations_per_request: 3 +{{- end }} diff --git a/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml b/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml index 87689b0c..14e7cc91 100644 --- a/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml +++ b/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml @@ -63,6 +63,9 @@ spec: {{- end }} {{- with .Values.sequi.volumes }} volumes: + - name: {{ template "seq-ui.fullname" . }}-config + configMap: + name: {{ template "seq-ui.fullname" . }}-config {{- toYaml . | nindent 8 }} {{- end }} {{- with .Values.sequi.nodeSelector }} diff --git a/deployment/k8s/helm-chart/templates/seq-ui/service.yaml b/deployment/k8s/helm-chart/templates/seq-ui/service.yaml index 77f2f621..186b1a5f 100644 --- a/deployment/k8s/helm-chart/templates/seq-ui/service.yaml +++ b/deployment/k8s/helm-chart/templates/seq-ui/service.yaml @@ -1,3 +1,4 @@ +{{- if .Values.sequi.enabled -}} apiVersion: v1 kind: Service metadata: @@ -13,3 +14,4 @@ spec: name: http selector: {{- include "seq-ui.selectorLabels" . | nindent 4 }} +{{- end }} diff --git a/deployment/k8s/helm-chart/templates/statefulset.yaml b/deployment/k8s/helm-chart/templates/statefulset.yaml index eb81bfb0..9e39812e 100644 --- a/deployment/k8s/helm-chart/templates/statefulset.yaml +++ b/deployment/k8s/helm-chart/templates/statefulset.yaml @@ -11,12 +11,22 @@ spec: selector: matchLabels: {{- include "seq-db.selectorLabels" . | nindent 6 }} + volumeClaimTemplates: + - metadata: + name: data + spec: + accessModes: ["ReadWriteOnce"] + storageClassName: {{ .Values.persistence.storageClass | default "" }} + resources: + requests: + storage: {{ .Values.persistence.size | default "10Gi" }} template: metadata: - {{- with .Values.podAnnotations }} annotations: + {{- with .Values.podAnnotations }} {{- toYaml . | nindent 8 }} {{- end }} + checksum/config: {{ include (print .Template.BasePath "/configmap.yaml") . | sha256sum }} labels: {{- include "seq-db.labels" . | nindent 8 }} {{- with .Values.podLabels }} @@ -50,6 +60,9 @@ spec: - name: debug containerPort: {{ .Values.service.debugPort }} protocol: TCP + args: + - --mode=store + - --config=/configs/config.yaml {{- with .Values.livenessProbe }} livenessProbe: {{- toYaml . | nindent 12 }} @@ -62,12 +75,20 @@ spec: resources: {{- toYaml . | nindent 12 }} {{- end }} - {{- with .Values.volumeMounts }} volumeMounts: + - name: "{{ template "seq-db.fullname" . }}-config" + mountPath: "/configs" + readOnly: true + - mountPath: /data + name: data + {{- with .Values.volumeMounts }} {{- toYaml . | nindent 12 }} {{- end }} - {{- with .Values.volumes }} volumes: + - name: {{ template "seq-db.fullname" . }}-config + configMap: + name: {{ template "seq-db.fullname" . }}-config + {{- with .Values.volumes }} {{- toYaml . | nindent 8 }} {{- end }} {{- with .Values.nodeSelector }} diff --git a/deployment/k8s/helm-chart/values.minikube.yaml b/deployment/k8s/helm-chart/values.minikube.yaml new file mode 100644 index 00000000..b2841d81 --- /dev/null +++ b/deployment/k8s/helm-chart/values.minikube.yaml @@ -0,0 +1,4 @@ +replicaCount: 2 + +sequi: + enabled: true \ No newline at end of file diff --git a/deployment/k8s/helm-chart/values.yaml b/deployment/k8s/helm-chart/values.yaml index 2ce162ca..25b8bc2b 100644 --- a/deployment/k8s/helm-chart/values.yaml +++ b/deployment/k8s/helm-chart/values.yaml @@ -13,11 +13,6 @@ image: # Overrides the image tag whose default is the chart appVersion. tag: "" -modes: - - single - - proxy - - store - # This is for the secrets for pulling an image from a private repository more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ imagePullSecrets: [] # This is to override the chart name. @@ -55,6 +50,7 @@ securityContext: {} # runAsUser: 1000 podManagementPolicy: "Parallel" +updateStrategy: "RollingUpdate" # This is for setting up a service more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/ service: @@ -117,19 +113,10 @@ volumeMounts: [] # mountPath: "/etc/foo" # readOnly: true -volumeClaimTemplate: - accessModes: ["ReadWriteOnce"] - resources: - requests: - storage: 30Gi - - persistence: enabled: true - labels: - # Add default labels for the volumeClaimTemplate of the StatefulSet - enabled: false - annotations: {} + size: 10Gi + storageClass: "" nodeSelector: {} @@ -137,8 +124,144 @@ tolerations: [] affinity: {} +seqproxy: + enabled: true + # Default values for seq-proxy. + # This is a YAML-formatted file. + # Declare variables to be passed into your templates. + + # This will set the replicaset count more information can be found here: https://kubernetes.io/docs/concepts/workloads/controllers/replicaset/ + replicaCount: 1 + + # This sets the container image more information can be found here: https://kubernetes.io/docs/concepts/containers/images/ + image: + repository: ghcr.io/ozontech/seq-db + # This sets the pull policy for images. + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + + # This is for the secrets for pulling an image from a private repository more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + imagePullSecrets: [] + # This is to override the chart name. + nameOverride: "" + fullnameOverride: "" + + cluster: + replicas: 1 + shuffle_replicas: true + hotStores: [] + + # This section builds out the service account more information can be found here: https://kubernetes.io/docs/concepts/security/service-accounts/ + serviceAccount: + # Specifies whether a service account should be created + create: true + # Automatically mount a ServiceAccount's API credentials? + automount: true + # Annotations to add to the service account + annotations: {} + # The name of the service account to use. + # If not set and create is true, a name is generated using the fullname template + name: "" + + # This is for setting Kubernetes Annotations to a Pod. + # For more information checkout: https://kubernetes.io/docs/concepts/overview/working-with-objects/annotations/ + podAnnotations: {} + # This is for setting Kubernetes Labels to a Pod. + # For more information checkout: https://kubernetes.io/docs/concepts/overview/working-with-objects/labels/ + podLabels: {} + + podSecurityContext: {} + # fsGroup: 2000 + + securityContext: {} + # capabilities: + # drop: + # - ALL + # readOnlyRootFilesystem: true + # runAsNonRoot: true + # runAsUser: 1000 + + # This is for setting up a service more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/ + service: + # This sets the service type more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + type: ClusterIP + # This sets the ports more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#field-spec-ports + httpPort: 9002 + grpcPort: 9004 + debugPort: 9200 + + # This block is for setting up the ingress for more information can be found here: https://kubernetes.io/docs/concepts/services-networking/ingress/ + ingress: + enabled: false + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: chart-example.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - chart-example.local + + resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + + # This is to setup the liveness and readiness probes more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ + livenessProbe: + httpGet: + path: / + port: http + readinessProbe: + httpGet: + path: / + port: http + + # This section is for setting up autoscaling more information can be found here: https://kubernetes.io/docs/concepts/workloads/autoscaling/ + autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + + # Additional volumes on the output Deployment definition. + volumes: [] + # - name: foo + # secret: + # secretName: mysecret + # optional: false + + # Additional volumeMounts on the output Deployment definition. + volumeMounts: [] + # - name: foo + # mountPath: "/etc/foo" + # readOnly: true + + nodeSelector: {} + + tolerations: [] + + affinity: {} + + + + sequi: - enabled: false + enabled: true # Default values for seq-ui. # This is a YAML-formatted file. # Declare variables to be passed into your templates. @@ -148,7 +271,7 @@ sequi: # This sets the container image more information can be found here: https://kubernetes.io/docs/concepts/containers/images/ image: - repository: nginx + repository: ghcr.io/ozontech/seq-ui # This sets the pull policy for images. pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. From a3679dc95446f5482809b3576de0d8c0e6a88911 Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Thu, 11 Sep 2025 07:19:43 +0700 Subject: [PATCH 04/25] fix seq-ui helm charts --- .../helm-chart/templates/seq-ui/deployment.yaml | 15 +++++++++++---- .../k8s/helm-chart/templates/seq-ui/service.yaml | 8 ++++++-- deployment/k8s/helm-chart/values.minikube.yaml | 3 --- deployment/k8s/helm-chart/values.yaml | 4 +++- 4 files changed, 20 insertions(+), 10 deletions(-) diff --git a/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml b/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml index 14e7cc91..27b22839 100644 --- a/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml +++ b/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml @@ -14,10 +14,11 @@ spec: {{- include "seq-ui.selectorLabels" . | nindent 6 }} template: metadata: - {{- with .Values.sequi.podAnnotations }} annotations: + {{- with .Values.sequi.podAnnotations }} {{- toYaml . | nindent 8 }} {{- end }} + checksum/config: {{ include (print .Template.BasePath "/seq-ui/configmap.yaml") . | sha256sum }} labels: {{- include "seq-ui.labels" . | nindent 8 }} {{- with .Values.sequi.podLabels }} @@ -43,7 +44,10 @@ spec: imagePullPolicy: {{ .Values.sequi.image.pullPolicy }} ports: - name: http - containerPort: {{ .Values.sequi.service.port }} + containerPort: {{ .Values.sequi.service.httpPort }} + protocol: TCP + - name: grpc + containerPort: {{ .Values.sequi.service.grpcPort }} protocol: TCP {{- with .Values.sequi.livenessProbe }} livenessProbe: @@ -57,15 +61,18 @@ spec: resources: {{- toYaml . | nindent 12 }} {{- end }} - {{- with .Values.sequi.volumeMounts }} volumeMounts: + - name: "{{ template "seq-ui.fullname" . }}-config" + mountPath: "/configs" + readOnly: true + {{- with .Values.sequi.volumeMounts }} {{- toYaml . | nindent 12 }} {{- end }} - {{- with .Values.sequi.volumes }} volumes: - name: {{ template "seq-ui.fullname" . }}-config configMap: name: {{ template "seq-ui.fullname" . }}-config + {{- with .Values.sequi.volumes }} {{- toYaml . | nindent 8 }} {{- end }} {{- with .Values.sequi.nodeSelector }} diff --git a/deployment/k8s/helm-chart/templates/seq-ui/service.yaml b/deployment/k8s/helm-chart/templates/seq-ui/service.yaml index 186b1a5f..55e3bcdd 100644 --- a/deployment/k8s/helm-chart/templates/seq-ui/service.yaml +++ b/deployment/k8s/helm-chart/templates/seq-ui/service.yaml @@ -6,12 +6,16 @@ metadata: labels: {{- include "seq-ui.labels" . | nindent 4 }} spec: - type: {{ .Values.service.type }} + type: {{ .Values.sequi.service.type }} ports: - - port: {{ .Values.service.port }} + - port: {{ .Values.sequi.service.httpPort }} targetPort: http protocol: TCP name: http + - port: {{ .Values.sequi.service.grpcPort }} + targetPort: grpc + protocol: TCP + name: grpc selector: {{- include "seq-ui.selectorLabels" . | nindent 4 }} {{- end }} diff --git a/deployment/k8s/helm-chart/values.minikube.yaml b/deployment/k8s/helm-chart/values.minikube.yaml index b2841d81..5ef7832c 100644 --- a/deployment/k8s/helm-chart/values.minikube.yaml +++ b/deployment/k8s/helm-chart/values.minikube.yaml @@ -1,4 +1 @@ replicaCount: 2 - -sequi: - enabled: true \ No newline at end of file diff --git a/deployment/k8s/helm-chart/values.yaml b/deployment/k8s/helm-chart/values.yaml index 25b8bc2b..536c2a8f 100644 --- a/deployment/k8s/helm-chart/values.yaml +++ b/deployment/k8s/helm-chart/values.yaml @@ -318,7 +318,9 @@ sequi: # This sets the service type more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types type: ClusterIP # This sets the ports more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#field-spec-ports - port: 80 + httpPort: 5555 + grpcPort: 5556 + debugPort: 5557 # This block is for setting up the ingress for more information can be found here: https://kubernetes.io/docs/concepts/services-networking/ingress/ ingress: From 95425118c7f5ced6dc14b82c8182c7d88ef80944 Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Thu, 11 Sep 2025 09:22:53 +0300 Subject: [PATCH 05/25] add healthcheck probes in helm chart --- deployment/k8s/helm-chart/output.yaml | 105 ------------------ .../templates/seq-ui/configmap.yaml | 2 +- .../templates/seq-ui/deployment.yaml | 18 +-- .../templates/seq-ui/serviceaccount.yaml | 13 +++ deployment/k8s/helm-chart/values.yaml | 30 ++--- 5 files changed, 39 insertions(+), 129 deletions(-) delete mode 100644 deployment/k8s/helm-chart/output.yaml create mode 100644 deployment/k8s/helm-chart/templates/seq-ui/serviceaccount.yaml diff --git a/deployment/k8s/helm-chart/output.yaml b/deployment/k8s/helm-chart/output.yaml deleted file mode 100644 index 9ed3f715..00000000 --- a/deployment/k8s/helm-chart/output.yaml +++ /dev/null @@ -1,105 +0,0 @@ ---- -# Source: seq-db/templates/serviceaccount.yaml -apiVersion: v1 -kind: ServiceAccount -metadata: - name: release-name-seq-db - labels: - helm.sh/chart: seq-db-0.1.0 - app.kubernetes.io/name: seq-db - app.kubernetes.io/instance: release-name - app.kubernetes.io/version: "latest" - app.kubernetes.io/managed-by: Helm -automountServiceAccountToken: true ---- -# Source: seq-db/templates/seq-ui/service.yaml -apiVersion: v1 -kind: Service -metadata: - name: release-name-seq-db - labels: - helm.sh/chart: seq-db-0.1.0 - app.kubernetes.io/name: seq-db - app.kubernetes.io/instance: release-name - app.kubernetes.io/version: "latest" - app.kubernetes.io/managed-by: Helm -spec: - type: ClusterIP - ports: - - port: - targetPort: http - protocol: TCP - name: http - selector: - app.kubernetes.io/name: seq-db - app.kubernetes.io/instance: release-name ---- -# Source: seq-db/templates/service.yaml -apiVersion: v1 -kind: Service -metadata: - name: release-name-seq-db - labels: - helm.sh/chart: seq-db-0.1.0 - app.kubernetes.io/name: seq-db - app.kubernetes.io/instance: release-name - app.kubernetes.io/version: "latest" - app.kubernetes.io/managed-by: Helm -spec: - type: ClusterIP - ports: - - port: 9002 - targetPort: http - protocol: TCP - name: http - - port: 9004 - targetPort: grpc - protocol: TCP - name: grpc - selector: - app.kubernetes.io/name: seq-db - app.kubernetes.io/instance: release-name ---- -# Source: seq-db/templates/statefulset.yaml -apiVersion: apps/v1 -kind: StatefulSet -metadata: - name: release-name-seq-db - labels: - helm.sh/chart: seq-db-0.1.0 - app.kubernetes.io/name: seq-db - app.kubernetes.io/instance: release-name - app.kubernetes.io/version: "latest" - app.kubernetes.io/managed-by: Helm -spec: - replicas: 1 - updateStrategy: - type: - selector: - matchLabels: - app.kubernetes.io/name: seq-db - app.kubernetes.io/instance: release-name - template: - metadata: - labels: - helm.sh/chart: seq-db-0.1.0 - app.kubernetes.io/name: seq-db - app.kubernetes.io/instance: release-name - app.kubernetes.io/version: "latest" - app.kubernetes.io/managed-by: Helm - spec: - serviceAccountName: release-name-seq-db - containers: - - name: seq-db - image: "ghcr.io/ozontech/seq-db:latest" - imagePullPolicy: IfNotPresent - ports: - - name: http - containerPort: 9002 - protocol: TCP - - name: grpc - containerPort: 9004 - protocol: TCP - - name: debug - containerPort: 9200 - protocol: TCP diff --git a/deployment/k8s/helm-chart/templates/seq-ui/configmap.yaml b/deployment/k8s/helm-chart/templates/seq-ui/configmap.yaml index 9d13f0d3..7e9aca9a 100644 --- a/deployment/k8s/helm-chart/templates/seq-ui/configmap.yaml +++ b/deployment/k8s/helm-chart/templates/seq-ui/configmap.yaml @@ -9,7 +9,7 @@ metadata: heritage: {{ .Release.Service | quote }} release: {{ .Release.Name | quote }} data: - config.seq-ui.yaml: | + config.yaml: | server: http_addr: "0.0.0.0:5555" grpc_addr: "0.0.0.0:5556" diff --git a/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml b/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml index 27b22839..790c1cab 100644 --- a/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml +++ b/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml @@ -49,6 +49,8 @@ spec: - name: grpc containerPort: {{ .Values.sequi.service.grpcPort }} protocol: TCP + args: + - -config=/configs/config.yaml {{- with .Values.sequi.livenessProbe }} livenessProbe: {{- toYaml . | nindent 12 }} @@ -63,18 +65,18 @@ spec: {{- end }} volumeMounts: - name: "{{ template "seq-ui.fullname" . }}-config" - mountPath: "/configs" - readOnly: true - {{- with .Values.sequi.volumeMounts }} - {{- toYaml . | nindent 12 }} - {{- end }} + mountPath: "/configs" + readOnly: true + {{- with .Values.sequi.volumeMounts }} + {{- toYaml . | nindent 12 }} + {{- end }} volumes: - name: {{ template "seq-ui.fullname" . }}-config configMap: name: {{ template "seq-ui.fullname" . }}-config - {{- with .Values.sequi.volumes }} - {{- toYaml . | nindent 8 }} - {{- end }} + {{- with .Values.sequi.volumes }} + {{- toYaml . | nindent 8 }} + {{- end }} {{- with .Values.sequi.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} diff --git a/deployment/k8s/helm-chart/templates/seq-ui/serviceaccount.yaml b/deployment/k8s/helm-chart/templates/seq-ui/serviceaccount.yaml new file mode 100644 index 00000000..59069956 --- /dev/null +++ b/deployment/k8s/helm-chart/templates/seq-ui/serviceaccount.yaml @@ -0,0 +1,13 @@ +{{- if .Values.sequi.serviceAccount.create -}} +apiVersion: v1 +kind: ServiceAccount +metadata: + name: {{ include "seq-ui.serviceAccountName" . }} + labels: + {{- include "seq-ui.labels" . | nindent 4 }} + {{- with .Values.sequi.serviceAccount.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +automountServiceAccountToken: {{ .Values.sequi.serviceAccount.automount }} +{{- end }} diff --git a/deployment/k8s/helm-chart/values.yaml b/deployment/k8s/helm-chart/values.yaml index 536c2a8f..d579b535 100644 --- a/deployment/k8s/helm-chart/values.yaml +++ b/deployment/k8s/helm-chart/values.yaml @@ -93,12 +93,12 @@ resources: {} # This is to setup the liveness and readiness probes more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ # livenessProbe: # httpGet: -# path: / -# port: http -# readinessProbe: -# httpGet: -# path: / +# path: /live # port: http +readinessProbe: + httpGet: + path: /ready + port: 9200 # Additional volumes on the output Deployment definition. volumes: [] @@ -221,14 +221,14 @@ seqproxy: # memory: 128Mi # This is to setup the liveness and readiness probes more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ - livenessProbe: - httpGet: - path: / - port: http + # livenessProbe: + # httpGet: + # path: /live + # port: http readinessProbe: httpGet: - path: / - port: http + path: /ready + port: 9200 # This section is for setting up autoscaling more information can be found here: https://kubernetes.io/docs/concepts/workloads/autoscaling/ autoscaling: @@ -354,12 +354,12 @@ sequi: # This is to setup the liveness and readiness probes more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ livenessProbe: httpGet: - path: / - port: http + path: /live + port: 5557 readinessProbe: httpGet: - path: / - port: http + path: /ready + port: 5557 # This section is for setting up autoscaling more information can be found here: https://kubernetes.io/docs/concepts/workloads/autoscaling/ autoscaling: From 676d71d86b5a4955374b6fe6c7f6f1364dc104d3 Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Thu, 11 Sep 2025 11:21:30 +0300 Subject: [PATCH 06/25] helm-chart: clusterip none --- deployment/k8s/helm-chart/templates/service.yaml | 1 + deployment/k8s/helm-chart/templates/statefulset.yaml | 1 + 2 files changed, 2 insertions(+) diff --git a/deployment/k8s/helm-chart/templates/service.yaml b/deployment/k8s/helm-chart/templates/service.yaml index 1e7958b1..cc7a0adb 100644 --- a/deployment/k8s/helm-chart/templates/service.yaml +++ b/deployment/k8s/helm-chart/templates/service.yaml @@ -6,6 +6,7 @@ metadata: {{- include "seq-db.labels" . | nindent 4 }} spec: type: {{ .Values.service.type }} + clusterIP: None ports: - port: {{ .Values.service.httpPort }} targetPort: http diff --git a/deployment/k8s/helm-chart/templates/statefulset.yaml b/deployment/k8s/helm-chart/templates/statefulset.yaml index 9e39812e..c27b9080 100644 --- a/deployment/k8s/helm-chart/templates/statefulset.yaml +++ b/deployment/k8s/helm-chart/templates/statefulset.yaml @@ -11,6 +11,7 @@ spec: selector: matchLabels: {{- include "seq-db.selectorLabels" . | nindent 6 }} + serviceName: {{ include "seq-db.fullname" . }} volumeClaimTemplates: - metadata: name: data From 0ede633a4871ffdb78f0deb261993013ac4bb3dc Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Thu, 11 Sep 2025 11:47:55 +0300 Subject: [PATCH 07/25] helm-chart: add mapping config --- .../templates/configmap-mappings.yaml | 13 ++++++++++++ .../k8s/helm-chart/templates/configmap.yaml | 4 +++- .../templates/seq-proxy/configmap.yaml | 4 +++- .../templates/seq-proxy/deployment.yaml | 6 ++++++ .../k8s/helm-chart/templates/statefulset.yaml | 6 ++++++ .../k8s/helm-chart/values.minikube.yaml | 20 +++++++++++++++++++ deployment/k8s/helm-chart/values.yaml | 6 ++++++ 7 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 deployment/k8s/helm-chart/templates/configmap-mappings.yaml diff --git a/deployment/k8s/helm-chart/templates/configmap-mappings.yaml b/deployment/k8s/helm-chart/templates/configmap-mappings.yaml new file mode 100644 index 00000000..46a39e26 --- /dev/null +++ b/deployment/k8s/helm-chart/templates/configmap-mappings.yaml @@ -0,0 +1,13 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ template "seq-db.fullname" . }}-mappings + labels: + app: "{{ template "seq-db.fullname" . }}" + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + heritage: {{ .Release.Service | quote }} + release: {{ .Release.Name | quote }} +data: + mappings.yaml: | + mapping-list: +{{ .Values.mapping.mapping_list | toYaml | indent 4 }} \ No newline at end of file diff --git a/deployment/k8s/helm-chart/templates/configmap.yaml b/deployment/k8s/helm-chart/templates/configmap.yaml index 9a5819b3..1800df1a 100644 --- a/deployment/k8s/helm-chart/templates/configmap.yaml +++ b/deployment/k8s/helm-chart/templates/configmap.yaml @@ -14,4 +14,6 @@ data: frac_size: 256MiB total_size: 10GiB mapping: - path: auto \ No newline at end of file + enable_updates: {{ .Values.mapping.enable_updates }} + path: /mappings/mappings.yaml + update_period: {{ .Values.mapping.update_period }} \ No newline at end of file diff --git a/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml b/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml index 2fd0094c..45949c9a 100644 --- a/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml +++ b/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml @@ -23,4 +23,6 @@ data: {{- end }} {{- end }} mapping: - path: auto \ No newline at end of file + enable_updates: {{ .Values.mapping.enable_updates }} + path: /mappings/mappings.yaml + update_period: {{ .Values.mapping.update_period }} \ No newline at end of file diff --git a/deployment/k8s/helm-chart/templates/seq-proxy/deployment.yaml b/deployment/k8s/helm-chart/templates/seq-proxy/deployment.yaml index 7f860e79..7206046b 100644 --- a/deployment/k8s/helm-chart/templates/seq-proxy/deployment.yaml +++ b/deployment/k8s/helm-chart/templates/seq-proxy/deployment.yaml @@ -71,6 +71,9 @@ spec: - name: "{{ template "seq-proxy.fullname" . }}-config" mountPath: "/configs" readOnly: true + - name: "{{ template "seq-proxy.fullname" . }}-mappings" + mountPath: "/mappings" + readOnly: true {{- with .Values.seqproxy.volumeMounts }} {{- toYaml . | nindent 12 }} {{- end }} @@ -78,6 +81,9 @@ spec: - name: {{ template "seq-proxy.fullname" . }}-config configMap: name: {{ template "seq-proxy.fullname" . }}-config + - name: {{ template "seq-proxy.fullname" . }}-mappings + configMap: + name: {{ template "seq-db.fullname" . }}-mappings {{- with .Values.seqproxy.volumes }} {{- toYaml . | nindent 8 }} {{- end }} diff --git a/deployment/k8s/helm-chart/templates/statefulset.yaml b/deployment/k8s/helm-chart/templates/statefulset.yaml index c27b9080..27152c33 100644 --- a/deployment/k8s/helm-chart/templates/statefulset.yaml +++ b/deployment/k8s/helm-chart/templates/statefulset.yaml @@ -80,6 +80,9 @@ spec: - name: "{{ template "seq-db.fullname" . }}-config" mountPath: "/configs" readOnly: true + - name: "{{ template "seq-db.fullname" . }}-mappings" + mountPath: "/mappings" + readOnly: true - mountPath: /data name: data {{- with .Values.volumeMounts }} @@ -89,6 +92,9 @@ spec: - name: {{ template "seq-db.fullname" . }}-config configMap: name: {{ template "seq-db.fullname" . }}-config + - name: {{ template "seq-db.fullname" . }}-mappings + configMap: + name: {{ template "seq-db.fullname" . }}-mappings {{- with .Values.volumes }} {{- toYaml . | nindent 8 }} {{- end }} diff --git a/deployment/k8s/helm-chart/values.minikube.yaml b/deployment/k8s/helm-chart/values.minikube.yaml index 5ef7832c..c8bfb7de 100644 --- a/deployment/k8s/helm-chart/values.minikube.yaml +++ b/deployment/k8s/helm-chart/values.minikube.yaml @@ -1 +1,21 @@ replicaCount: 2 + +mapping: + enable_updates: true + mapping_list: + - type: "keyword" + name: "k8s_pod" + - type: "keyword" + name: "k8s_namespace" + - type: "keyword" + name: "k8s_container" + - type: "text" + name: "request" + - type: "path" + name: "request_uri" + - name: "message" + types: + - type: "text" + - title: "keyword" + type: "keyword" + size: 18 diff --git a/deployment/k8s/helm-chart/values.yaml b/deployment/k8s/helm-chart/values.yaml index d579b535..690adbda 100644 --- a/deployment/k8s/helm-chart/values.yaml +++ b/deployment/k8s/helm-chart/values.yaml @@ -124,6 +124,12 @@ tolerations: [] affinity: {} + +mapping: + enable_updates: false + update_period: 5s + mapping_list: [] + seqproxy: enabled: true # Default values for seq-proxy. From d808d75af917de4d3e3be69aad5d869fab105d0e Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Thu, 11 Sep 2025 12:07:35 +0300 Subject: [PATCH 08/25] helm-chart: seq-ui config --- .../templates/seq-ui/configmap.yaml | 28 +++++++++---------- deployment/k8s/helm-chart/values.yaml | 21 ++++++++++++++ 2 files changed, 35 insertions(+), 14 deletions(-) diff --git a/deployment/k8s/helm-chart/templates/seq-ui/configmap.yaml b/deployment/k8s/helm-chart/templates/seq-ui/configmap.yaml index 7e9aca9a..47fe4ff0 100644 --- a/deployment/k8s/helm-chart/templates/seq-ui/configmap.yaml +++ b/deployment/k8s/helm-chart/templates/seq-ui/configmap.yaml @@ -17,21 +17,21 @@ data: clients: seq_db_addrs: - {{ $.Release.Name }}-proxy.{{ $.Release.Namespace }}.svc.cluster.local.:9004 - seq_db_timeout: 15s - seq_db_avg_doc_size: 100 - request_retries: 3 - proxy_client_mode: "grpc" + seq_db_timeout: {{ .Values.sequi.config.clients.seq_db_timeout | default "15s" }} + seq_db_avg_doc_size: {{ .Values.sequi.config.clients.seq_db_avg_doc_size | default 100 }} + request_retries: {{ .Values.sequi.config.clients.request_retries | default 3 }} + proxy_client_mode: {{ .Values.sequi.config.clients.proxy_client_mode | default "grpc" | quote }} grpc_keepalive_params: - time: 10s - timeout: 10s - permit_without_stream: true + time: {{ .Values.sequi.config.clients.grpc_keepalive_params.time | default "10s" }} + timeout: {{ .Values.sequi.config.clients.grpc_keepalive_params.timeout | default "10s" }} + permit_without_stream: {{ .Values.sequi.config.clients.grpc_keepalive_params.permit_without_stream | default true }} handlers: seq_api: - seq_cli_max_search_limit: 10000 - max_search_limit: 1000 - max_search_total_limit: 100000 - max_search_offset_limit: 100000 - max_export_limit: 10000 - max_parallel_export_requests: 1 - max_aggregations_per_request: 3 + seq_cli_max_search_limit: {{ .Values.sequi.config.handlers.seq_api.seq_cli_max_search_limit | default 10000 }} + max_search_limit: {{ .Values.sequi.config.handlers.seq_api.max_search_limit | default 1000 }} + max_search_total_limit: {{ .Values.sequi.config.handlers.seq_api.max_search_total_limit | default 100000 }} + max_search_offset_limit: {{ .Values.sequi.config.handlers.seq_api.max_search_offset_limit | default 100000 }} + max_export_limit: {{ .Values.sequi.config.handlers.seq_api.max_export_limit | default 10000 }} + max_parallel_export_requests: {{ .Values.sequi.config.handlers.seq_api.max_parallel_export_requests | default 1 }} + max_aggregations_per_request: {{ .Values.sequi.config.handlers.seq_api.max_aggregations_per_request | default 3 }} {{- end }} diff --git a/deployment/k8s/helm-chart/values.yaml b/deployment/k8s/helm-chart/values.yaml index 690adbda..631229cc 100644 --- a/deployment/k8s/helm-chart/values.yaml +++ b/deployment/k8s/helm-chart/values.yaml @@ -375,6 +375,27 @@ sequi: targetCPUUtilizationPercentage: 80 # targetMemoryUtilizationPercentage: 80 + + config: + clients: + seq_db_timeout: "15s" + seq_db_avg_doc_size: 100 + request_retries: 3 + proxy_client_mode: "grpc" + grpc_keepalive_params: + time: "10s" + timeout: "10s" + permit_without_stream: true + handlers: + seq_api: + seq_cli_max_search_limit: 10000 + max_search_limit: 1000 + max_search_total_limit: 100000 + max_search_offset_limit: 100000 + max_export_limit: 10000 + max_parallel_export_requests: 1 + max_aggregations_per_request: 3 + # Additional volumes on the output Deployment definition. volumes: [] # - name: foo From 2c1f820d830473f7a455b295faa2189d6fff4588 Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Thu, 11 Sep 2025 12:12:21 +0300 Subject: [PATCH 09/25] helm-chart: auto-mapping by default --- deployment/k8s/helm-chart/templates/configmap.yaml | 4 ++++ deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml | 4 ++++ deployment/k8s/helm-chart/values.minikube.yaml | 1 + deployment/k8s/helm-chart/values.yaml | 1 + 4 files changed, 10 insertions(+) diff --git a/deployment/k8s/helm-chart/templates/configmap.yaml b/deployment/k8s/helm-chart/templates/configmap.yaml index 1800df1a..ed278579 100644 --- a/deployment/k8s/helm-chart/templates/configmap.yaml +++ b/deployment/k8s/helm-chart/templates/configmap.yaml @@ -15,5 +15,9 @@ data: total_size: 10GiB mapping: enable_updates: {{ .Values.mapping.enable_updates }} + {{- if .Values.mapping.auto }} + path: auto + {{- else }} path: /mappings/mappings.yaml + {{- end }} update_period: {{ .Values.mapping.update_period }} \ No newline at end of file diff --git a/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml b/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml index 45949c9a..2cd96a47 100644 --- a/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml +++ b/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml @@ -24,5 +24,9 @@ data: {{- end }} mapping: enable_updates: {{ .Values.mapping.enable_updates }} + {{- if .Values.mapping.auto }} + path: auto + {{- else }} path: /mappings/mappings.yaml + {{- end }} update_period: {{ .Values.mapping.update_period }} \ No newline at end of file diff --git a/deployment/k8s/helm-chart/values.minikube.yaml b/deployment/k8s/helm-chart/values.minikube.yaml index c8bfb7de..c594b40a 100644 --- a/deployment/k8s/helm-chart/values.minikube.yaml +++ b/deployment/k8s/helm-chart/values.minikube.yaml @@ -1,6 +1,7 @@ replicaCount: 2 mapping: + auto: false enable_updates: true mapping_list: - type: "keyword" diff --git a/deployment/k8s/helm-chart/values.yaml b/deployment/k8s/helm-chart/values.yaml index 631229cc..94e2c3e7 100644 --- a/deployment/k8s/helm-chart/values.yaml +++ b/deployment/k8s/helm-chart/values.yaml @@ -126,6 +126,7 @@ affinity: {} mapping: + auto: true enable_updates: false update_period: 5s mapping_list: [] From e046961417455f5bcd320ce6a2182e632021e9c1 Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Thu, 11 Sep 2025 12:39:15 +0300 Subject: [PATCH 10/25] helm-chart: fix ingresses --- .../k8s/helm-chart/templates/ingress.yaml | 43 ------------------- .../templates/seq-proxy/ingress.yaml | 2 +- .../templates/seq-ui/deployment.yaml | 3 ++ .../helm-chart/templates/seq-ui/ingress.yaml | 14 +++--- deployment/k8s/helm-chart/values.yaml | 33 ++++---------- 5 files changed, 19 insertions(+), 76 deletions(-) delete mode 100644 deployment/k8s/helm-chart/templates/ingress.yaml diff --git a/deployment/k8s/helm-chart/templates/ingress.yaml b/deployment/k8s/helm-chart/templates/ingress.yaml deleted file mode 100644 index 16bbe7fd..00000000 --- a/deployment/k8s/helm-chart/templates/ingress.yaml +++ /dev/null @@ -1,43 +0,0 @@ -{{- if .Values.ingress.enabled -}} -apiVersion: networking.k8s.io/v1 -kind: Ingress -metadata: - name: {{ include "seq-db.fullname" . }} - labels: - {{- include "seq-db.labels" . | nindent 4 }} - {{- with .Values.ingress.annotations }} - annotations: - {{- toYaml . | nindent 4 }} - {{- end }} -spec: - {{- with .Values.ingress.className }} - ingressClassName: {{ . }} - {{- end }} - {{- if .Values.ingress.tls }} - tls: - {{- range .Values.ingress.tls }} - - hosts: - {{- range .hosts }} - - {{ . | quote }} - {{- end }} - secretName: {{ .secretName }} - {{- end }} - {{- end }} - rules: - {{- range .Values.ingress.hosts }} - - host: {{ .host | quote }} - http: - paths: - {{- range .paths }} - - path: {{ .path }} - {{- with .pathType }} - pathType: {{ . }} - {{- end }} - backend: - service: - name: {{ include "seq-db.fullname" $ }} - port: - number: {{ $.Values.service.port }} - {{- end }} - {{- end }} -{{- end }} diff --git a/deployment/k8s/helm-chart/templates/seq-proxy/ingress.yaml b/deployment/k8s/helm-chart/templates/seq-proxy/ingress.yaml index 479a76c5..4c7a44b8 100644 --- a/deployment/k8s/helm-chart/templates/seq-proxy/ingress.yaml +++ b/deployment/k8s/helm-chart/templates/seq-proxy/ingress.yaml @@ -37,7 +37,7 @@ spec: service: name: {{ include "seq-proxy.fullname" $ }} port: - number: {{ $.Values.seqproxy.service.port }} + number: {{ $.Values.seqproxy.service.httpPort }} {{- end }} {{- end }} {{- end }} diff --git a/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml b/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml index 790c1cab..add68271 100644 --- a/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml +++ b/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml @@ -49,6 +49,9 @@ spec: - name: grpc containerPort: {{ .Values.sequi.service.grpcPort }} protocol: TCP + - name: debug + containerPort: {{ .Values.sequi.service.debugPort }} + protocol: TCP args: - -config=/configs/config.yaml {{- with .Values.sequi.livenessProbe }} diff --git a/deployment/k8s/helm-chart/templates/seq-ui/ingress.yaml b/deployment/k8s/helm-chart/templates/seq-ui/ingress.yaml index 01a4ee0d..c422f5ff 100644 --- a/deployment/k8s/helm-chart/templates/seq-ui/ingress.yaml +++ b/deployment/k8s/helm-chart/templates/seq-ui/ingress.yaml @@ -1,21 +1,21 @@ -{{- if .Values.ingress.enabled -}} +{{- if .Values.sequi.ingress.enabled -}} apiVersion: networking.k8s.io/v1 kind: Ingress metadata: name: {{ include "seq-ui.fullname" . }} labels: {{- include "seq-ui.labels" . | nindent 4 }} - {{- with .Values.ingress.annotations }} + {{- with .Values.sequi.ingress.annotations }} annotations: {{- toYaml . | nindent 4 }} {{- end }} spec: - {{- with .Values.ingress.className }} + {{- with .Values.sequi.ingress.className }} ingressClassName: {{ . }} {{- end }} - {{- if .Values.ingress.tls }} + {{- if .Values.sequi.ingress.tls }} tls: - {{- range .Values.ingress.tls }} + {{- range .Values.sequi.ingress.tls }} - hosts: {{- range .hosts }} - {{ . | quote }} @@ -24,7 +24,7 @@ spec: {{- end }} {{- end }} rules: - {{- range .Values.ingress.hosts }} + {{- range .Values.sequi.ingress.hosts }} - host: {{ .host | quote }} http: paths: @@ -37,7 +37,7 @@ spec: service: name: {{ include "seq-ui.fullname" $ }} port: - number: {{ $.Values.service.port }} + number: {{ $.Values.sequi.service.httpPort }} {{- end }} {{- end }} {{- end }} diff --git a/deployment/k8s/helm-chart/values.yaml b/deployment/k8s/helm-chart/values.yaml index 94e2c3e7..56a01d6d 100644 --- a/deployment/k8s/helm-chart/values.yaml +++ b/deployment/k8s/helm-chart/values.yaml @@ -61,23 +61,6 @@ service: grpcPort: 9004 debugPort: 9200 -# This block is for setting up the ingress for more information can be found here: https://kubernetes.io/docs/concepts/services-networking/ingress/ -ingress: - enabled: false - className: "" - annotations: {} - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" - hosts: - - host: chart-example.local - paths: - - path: / - pathType: ImplementationSpecific - tls: [] - # - secretName: chart-example-tls - # hosts: - # - chart-example.local - resources: {} # We usually recommend not to specify default resources and to leave this as a conscious # choice for the user. This also increases chances charts run on environments with little @@ -98,7 +81,7 @@ resources: {} readinessProbe: httpGet: path: /ready - port: 9200 + port: debug # Additional volumes on the output Deployment definition. volumes: [] @@ -206,14 +189,14 @@ seqproxy: # kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: "true" hosts: - - host: chart-example.local + - host: seq-proxy.local paths: - path: / pathType: ImplementationSpecific tls: [] # - secretName: chart-example-tls # hosts: - # - chart-example.local + # - seq-proxy.local resources: {} # We usually recommend not to specify default resources and to leave this as a conscious @@ -235,7 +218,7 @@ seqproxy: readinessProbe: httpGet: path: /ready - port: 9200 + port: debug # This section is for setting up autoscaling more information can be found here: https://kubernetes.io/docs/concepts/workloads/autoscaling/ autoscaling: @@ -337,14 +320,14 @@ sequi: # kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: "true" hosts: - - host: chart-example.local + - host: sequi.local paths: - path: / pathType: ImplementationSpecific tls: [] # - secretName: chart-example-tls # hosts: - # - chart-example.local + # - sequi.local resources: {} # We usually recommend not to specify default resources and to leave this as a conscious @@ -362,11 +345,11 @@ sequi: livenessProbe: httpGet: path: /live - port: 5557 + port: debug readinessProbe: httpGet: path: /ready - port: 5557 + port: debug # This section is for setting up autoscaling more information can be found here: https://kubernetes.io/docs/concepts/workloads/autoscaling/ autoscaling: From 1c9d30ed62df94ad49c6e2e5e9b68e7d70be224b Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Thu, 11 Sep 2025 12:42:41 +0300 Subject: [PATCH 11/25] add seq-ui hpa --- .../k8s/helm-chart/templates/seq-ui/hpa.yaml | 32 +++++++++++++++++++ 1 file changed, 32 insertions(+) create mode 100644 deployment/k8s/helm-chart/templates/seq-ui/hpa.yaml diff --git a/deployment/k8s/helm-chart/templates/seq-ui/hpa.yaml b/deployment/k8s/helm-chart/templates/seq-ui/hpa.yaml new file mode 100644 index 00000000..7861c0b7 --- /dev/null +++ b/deployment/k8s/helm-chart/templates/seq-ui/hpa.yaml @@ -0,0 +1,32 @@ +{{- if .Values.sequi.autoscaling.enabled }} +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "seq-ui.fullname" . }} + labels: + {{- include "seq-ui.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "seq-ui.fullname" . }} + minReplicas: {{ .Values.sequi.autoscaling.minReplicas }} + maxReplicas: {{ .Values.sequi.autoscaling.maxReplicas }} + metrics: + {{- if .Values.sequi.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.sequi.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.sequi.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: {{ .Values.sequi.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} From f1f870ccb8e3e4110c9c904a4bfa238ba5731f96 Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Thu, 11 Sep 2025 13:36:18 +0300 Subject: [PATCH 12/25] configure storage params --- .../k8s/helm-chart/templates/configmap.yaml | 14 +++++++++++--- .../templates/seq-proxy/configmap.yaml | 6 +++++- deployment/k8s/helm-chart/values.minikube.yaml | 4 ++++ deployment/k8s/helm-chart/values.yaml | 18 ++++++++++-------- 4 files changed, 30 insertions(+), 12 deletions(-) diff --git a/deployment/k8s/helm-chart/templates/configmap.yaml b/deployment/k8s/helm-chart/templates/configmap.yaml index ed278579..f17504c4 100644 --- a/deployment/k8s/helm-chart/templates/configmap.yaml +++ b/deployment/k8s/helm-chart/templates/configmap.yaml @@ -11,8 +11,12 @@ data: config.yaml: | storage: data_dir: /data - frac_size: 256MiB - total_size: 10GiB + {{- if .Values.storage.frac_size }} + frac_size: {{ .Values.storage.frac_size }} + {{- end }} + {{- if .Values.storage.total_size }} + total_size: {{ .Values.storage.total_size }} + {{- end }} mapping: enable_updates: {{ .Values.mapping.enable_updates }} {{- if .Values.mapping.auto }} @@ -20,4 +24,8 @@ data: {{- else }} path: /mappings/mappings.yaml {{- end }} - update_period: {{ .Values.mapping.update_period }} \ No newline at end of file + update_period: {{ .Values.mapping.update_period }} + slow_logs: + bulk_threshold: 0ms + fetch_threshold: 3s + search_threshold: 3s diff --git a/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml b/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml index 2cd96a47..1deb4465 100644 --- a/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml +++ b/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml @@ -29,4 +29,8 @@ data: {{- else }} path: /mappings/mappings.yaml {{- end }} - update_period: {{ .Values.mapping.update_period }} \ No newline at end of file + update_period: {{ .Values.mapping.update_period }} + slow_logs: + bulk_threshold: 0ms + fetch_threshold: 3s + search_threshold: 3s diff --git a/deployment/k8s/helm-chart/values.minikube.yaml b/deployment/k8s/helm-chart/values.minikube.yaml index c594b40a..5ce03d70 100644 --- a/deployment/k8s/helm-chart/values.minikube.yaml +++ b/deployment/k8s/helm-chart/values.minikube.yaml @@ -20,3 +20,7 @@ mapping: - title: "keyword" type: "keyword" size: 18 + +storage: + frac_size: "256MiB" + total_size: "10GiB" \ No newline at end of file diff --git a/deployment/k8s/helm-chart/values.yaml b/deployment/k8s/helm-chart/values.yaml index 56a01d6d..7b1b6ea1 100644 --- a/deployment/k8s/helm-chart/values.yaml +++ b/deployment/k8s/helm-chart/values.yaml @@ -74,10 +74,10 @@ resources: {} # memory: 128Mi # This is to setup the liveness and readiness probes more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ -# livenessProbe: -# httpGet: -# path: /live -# port: http +livenessProbe: + httpGet: + path: /live + port: debug readinessProbe: httpGet: path: /ready @@ -114,6 +114,8 @@ mapping: update_period: 5s mapping_list: [] +storage: {} + seqproxy: enabled: true # Default values for seq-proxy. @@ -211,10 +213,10 @@ seqproxy: # memory: 128Mi # This is to setup the liveness and readiness probes more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ - # livenessProbe: - # httpGet: - # path: /live - # port: http + livenessProbe: + httpGet: + path: /live + port: debug readinessProbe: httpGet: path: /ready From 06edcfd82a05766793fd13d0f3bd9a55c59ce249 Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Thu, 11 Sep 2025 13:43:02 +0300 Subject: [PATCH 13/25] use latest images in docker-compose --- deployment/docker/compose-cluster.yml | 4 ++-- deployment/docker/compose-single.yml | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/deployment/docker/compose-cluster.yml b/deployment/docker/compose-cluster.yml index 4d7c8ddd..3469509b 100644 --- a/deployment/docker/compose-cluster.yml +++ b/deployment/docker/compose-cluster.yml @@ -2,7 +2,7 @@ version: '3.8' services: seq-db-proxy: - image: ghcr.io/ozontech/seq-db:v0.61.0 + image: ghcr.io/ozontech/seq-db:latest ports: - "9002:9002" # Default HTTP port - "9004:9004" # Default gRPC port @@ -16,7 +16,7 @@ services: - ./config-cluster.yaml:/configs/config.yaml - ./mappings.yaml:/configs/mappings.yaml seq-db-store: - image: ghcr.io/ozontech/seq-db:v0.61.0 + image: ghcr.io/ozontech/seq-db:latest command: --mode=store --config=/configs/config.yaml diff --git a/deployment/docker/compose-single.yml b/deployment/docker/compose-single.yml index 6ffacd1e..e023e1b1 100644 --- a/deployment/docker/compose-single.yml +++ b/deployment/docker/compose-single.yml @@ -2,7 +2,7 @@ version: '3.8' services: seq-db: - image: ghcr.io/ozontech/seq-db:v0.61.0 + image: ghcr.io/ozontech/seq-db:latest ports: - "9002:9002" # Default HTTP port - "9004:9004" # Default gRPC port From 88ebd1b50e8609c3bf3681a0ef0f3a9dfef9b3df Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Thu, 11 Sep 2025 17:25:33 +0300 Subject: [PATCH 14/25] remove unused seq-ui params from helm-chart --- .../k8s/helm-chart/templates/seq-ui/configmap.yaml | 10 ---------- deployment/k8s/helm-chart/values.yaml | 10 ---------- 2 files changed, 20 deletions(-) diff --git a/deployment/k8s/helm-chart/templates/seq-ui/configmap.yaml b/deployment/k8s/helm-chart/templates/seq-ui/configmap.yaml index 47fe4ff0..2c99d31c 100644 --- a/deployment/k8s/helm-chart/templates/seq-ui/configmap.yaml +++ b/deployment/k8s/helm-chart/templates/seq-ui/configmap.yaml @@ -18,20 +18,10 @@ data: seq_db_addrs: - {{ $.Release.Name }}-proxy.{{ $.Release.Namespace }}.svc.cluster.local.:9004 seq_db_timeout: {{ .Values.sequi.config.clients.seq_db_timeout | default "15s" }} - seq_db_avg_doc_size: {{ .Values.sequi.config.clients.seq_db_avg_doc_size | default 100 }} request_retries: {{ .Values.sequi.config.clients.request_retries | default 3 }} - proxy_client_mode: {{ .Values.sequi.config.clients.proxy_client_mode | default "grpc" | quote }} - grpc_keepalive_params: - time: {{ .Values.sequi.config.clients.grpc_keepalive_params.time | default "10s" }} - timeout: {{ .Values.sequi.config.clients.grpc_keepalive_params.timeout | default "10s" }} - permit_without_stream: {{ .Values.sequi.config.clients.grpc_keepalive_params.permit_without_stream | default true }} handlers: seq_api: - seq_cli_max_search_limit: {{ .Values.sequi.config.handlers.seq_api.seq_cli_max_search_limit | default 10000 }} max_search_limit: {{ .Values.sequi.config.handlers.seq_api.max_search_limit | default 1000 }} - max_search_total_limit: {{ .Values.sequi.config.handlers.seq_api.max_search_total_limit | default 100000 }} - max_search_offset_limit: {{ .Values.sequi.config.handlers.seq_api.max_search_offset_limit | default 100000 }} - max_export_limit: {{ .Values.sequi.config.handlers.seq_api.max_export_limit | default 10000 }} max_parallel_export_requests: {{ .Values.sequi.config.handlers.seq_api.max_parallel_export_requests | default 1 }} max_aggregations_per_request: {{ .Values.sequi.config.handlers.seq_api.max_aggregations_per_request | default 3 }} {{- end }} diff --git a/deployment/k8s/helm-chart/values.yaml b/deployment/k8s/helm-chart/values.yaml index 7b1b6ea1..4f1a5bad 100644 --- a/deployment/k8s/helm-chart/values.yaml +++ b/deployment/k8s/helm-chart/values.yaml @@ -365,20 +365,10 @@ sequi: config: clients: seq_db_timeout: "15s" - seq_db_avg_doc_size: 100 request_retries: 3 - proxy_client_mode: "grpc" - grpc_keepalive_params: - time: "10s" - timeout: "10s" - permit_without_stream: true handlers: seq_api: - seq_cli_max_search_limit: 10000 max_search_limit: 1000 - max_search_total_limit: 100000 - max_search_offset_limit: 100000 - max_export_limit: 10000 max_parallel_export_requests: 1 max_aggregations_per_request: 3 From 8d547e465182b460f695edd6fd20f6383866fb83 Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Wed, 17 Sep 2025 20:01:31 +0700 Subject: [PATCH 15/25] add seq-ui front --- .../templates/seq-ui/configmap.yaml | 13 +++++ .../templates/seq-ui/deployment.yaml | 20 +++++++- .../templates/seq-ui/ingress-front.yaml | 43 +++++++++++++++++ .../helm-chart/templates/seq-ui/service.yaml | 4 ++ .../k8s/helm-chart/values.minikube.yaml | 2 +- deployment/k8s/helm-chart/values.yaml | 48 +++++++++++++++++++ 6 files changed, 128 insertions(+), 2 deletions(-) create mode 100644 deployment/k8s/helm-chart/templates/seq-ui/ingress-front.yaml diff --git a/deployment/k8s/helm-chart/templates/seq-ui/configmap.yaml b/deployment/k8s/helm-chart/templates/seq-ui/configmap.yaml index 2c99d31c..8a7ba6da 100644 --- a/deployment/k8s/helm-chart/templates/seq-ui/configmap.yaml +++ b/deployment/k8s/helm-chart/templates/seq-ui/configmap.yaml @@ -14,6 +14,19 @@ data: http_addr: "0.0.0.0:5555" grpc_addr: "0.0.0.0:5556" debug_addr: "0.0.0.0:5557" + cors: + allowed_headers: + - Content-Type + - Authorization + allowed_methods: + - HEAD + - GET + - POST + - PATCH + - DELETE + allowed_origins: + - '*' + max_age: 300 clients: seq_db_addrs: - {{ $.Release.Name }}-proxy.{{ $.Release.Namespace }}.svc.cluster.local.:9004 diff --git a/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml b/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml index add68271..4e0bbd07 100644 --- a/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml +++ b/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml @@ -35,7 +35,7 @@ spec: {{- toYaml . | nindent 8 }} {{- end }} containers: - - name: {{ .Chart.Name }} + - name: api {{- with .Values.sequi.securityContext }} securityContext: {{- toYaml . | nindent 12 }} @@ -73,6 +73,24 @@ spec: {{- with .Values.sequi.volumeMounts }} {{- toYaml . | nindent 12 }} {{- end }} + - name: front + {{- with .Values.sequi.securityContext }} + securityContext: + {{- toYaml . | nindent 12 }} + {{- end }} + image: "{{ .Values.sequi.front.image.repository }}:{{ .Values.sequi.front.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.sequi.image.pullPolicy }} + env: + - name: SEQ_UI_URL + value: http://localhost:5555/ + ports: + - name: fronthttp + containerPort: {{ .Values.sequi.front.service.httpPort }} + protocol: TCP + {{- with .Values.sequi.front.resources }} + resources: + {{- toYaml . | nindent 12 }} + {{- end }} volumes: - name: {{ template "seq-ui.fullname" . }}-config configMap: diff --git a/deployment/k8s/helm-chart/templates/seq-ui/ingress-front.yaml b/deployment/k8s/helm-chart/templates/seq-ui/ingress-front.yaml new file mode 100644 index 00000000..32a219c8 --- /dev/null +++ b/deployment/k8s/helm-chart/templates/seq-ui/ingress-front.yaml @@ -0,0 +1,43 @@ +{{- if .Values.sequi.front.ingress.enabled -}} +apiVersion: networking.k8s.io/v1 +kind: Ingress +metadata: + name: {{ include "seq-ui.fullname" . }}-front + labels: + {{- include "seq-ui.labels" . | nindent 4 }} + {{- with .Values.sequi.front.ingress.annotations }} + annotations: + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + {{- with .Values.sequi.front.ingress.className }} + ingressClassName: {{ . }} + {{- end }} + {{- if .Values.sequi.front.ingress.tls }} + tls: + {{- range .Values.sequi.front.ingress.tls }} + - hosts: + {{- range .hosts }} + - {{ . | quote }} + {{- end }} + secretName: {{ .secretName }} + {{- end }} + {{- end }} + rules: + {{- range .Values.sequi.front.ingress.hosts }} + - host: {{ .host | quote }} + http: + paths: + {{- range .paths }} + - path: {{ .path }} + {{- with .pathType }} + pathType: {{ . }} + {{- end }} + backend: + service: + name: {{ include "seq-ui.fullname" $ }} + port: + number: {{ $.Values.sequi.service.front.httpPort }} + {{- end }} + {{- end }} +{{- end }} diff --git a/deployment/k8s/helm-chart/templates/seq-ui/service.yaml b/deployment/k8s/helm-chart/templates/seq-ui/service.yaml index 55e3bcdd..cd1549d2 100644 --- a/deployment/k8s/helm-chart/templates/seq-ui/service.yaml +++ b/deployment/k8s/helm-chart/templates/seq-ui/service.yaml @@ -12,6 +12,10 @@ spec: targetPort: http protocol: TCP name: http + - port: {{ .Values.sequi.front.service.httpPort }} + targetPort: fronthttp + protocol: TCP + name: fronthttp - port: {{ .Values.sequi.service.grpcPort }} targetPort: grpc protocol: TCP diff --git a/deployment/k8s/helm-chart/values.minikube.yaml b/deployment/k8s/helm-chart/values.minikube.yaml index 5ce03d70..d0c198fa 100644 --- a/deployment/k8s/helm-chart/values.minikube.yaml +++ b/deployment/k8s/helm-chart/values.minikube.yaml @@ -23,4 +23,4 @@ mapping: storage: frac_size: "256MiB" - total_size: "10GiB" \ No newline at end of file + total_size: "10GiB" diff --git a/deployment/k8s/helm-chart/values.yaml b/deployment/k8s/helm-chart/values.yaml index 4f1a5bad..ef265cb8 100644 --- a/deployment/k8s/helm-chart/values.yaml +++ b/deployment/k8s/helm-chart/values.yaml @@ -390,3 +390,51 @@ sequi: tolerations: [] affinity: {} + front: + image: + repository: ghcr.io/ozontech/seq-ui-fe + # This sets the pull policy for images. + pullPolicy: IfNotPresent + # Overrides the image tag whose default is the chart appVersion. + tag: "" + + # This is for the secrets for pulling an image from a private repository more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ + imagePullSecrets: [] + + # This is for setting up a service more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/ + service: + # This sets the service type more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types + type: ClusterIP + # This sets the ports more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#field-spec-ports + httpPort: 80 + + # This block is for setting up the ingress for more information can be found here: https://kubernetes.io/docs/concepts/services-networking/ingress/ + ingress: + enabled: false + className: "" + annotations: {} + # kubernetes.io/ingress.class: nginx + # kubernetes.io/tls-acme: "true" + hosts: + - host: sequi-front.local + paths: + - path: / + pathType: ImplementationSpecific + tls: [] + # - secretName: chart-example-tls + # hosts: + # - sequi.local + + resources: {} + # We usually recommend not to specify default resources and to leave this as a conscious + # choice for the user. This also increases chances charts run on environments with little + # resources, such as Minikube. If you do want to specify resources, uncomment the following + # lines, adjust them as necessary, and remove the curly braces after 'resources:'. + # limits: + # cpu: 100m + # memory: 128Mi + # requests: + # cpu: 100m + # memory: 128Mi + + \ No newline at end of file From c0209f2967d4c1d5b16485ad1fd70093408dd1ed Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Fri, 19 Sep 2025 14:22:57 +0700 Subject: [PATCH 16/25] add seq-ui to docker -compose --- deployment/docker/compose-cluster.yml | 5 ++++- deployment/docker/compose-single.yml | 10 ---------- deployment/docker/config.seq-ui.yaml | 13 +++++++++++++ 3 files changed, 17 insertions(+), 11 deletions(-) diff --git a/deployment/docker/compose-cluster.yml b/deployment/docker/compose-cluster.yml index 3469509b..d532384d 100644 --- a/deployment/docker/compose-cluster.yml +++ b/deployment/docker/compose-cluster.yml @@ -36,6 +36,9 @@ services: - "5556:5556" # Default gRPC port - "5557:5557" # Default debug port command: --config config.yaml - + seq-ui-fe: + image: ghcr.io/ozontech/seq-ui-fe:latest + ports: + - "5173:80" volumes: seqdbdata: {} \ No newline at end of file diff --git a/deployment/docker/compose-single.yml b/deployment/docker/compose-single.yml index e023e1b1..6cbd5086 100644 --- a/deployment/docker/compose-single.yml +++ b/deployment/docker/compose-single.yml @@ -16,15 +16,5 @@ services: stdin_open: true tty: true restart: unless-stopped - seq-ui: - image: ghcr.io/ozontech/seq-ui:latest - volumes: - - ./config.seq-ui.yaml:/seq-ui/config.yaml - ports: - - "5555:5555" # Default HTTP port - - "5556:5556" # Default gRPC port - - "5557:5557" # Default debug port - command: --config config.yaml - volumes: seqdbdata: {} \ No newline at end of file diff --git a/deployment/docker/config.seq-ui.yaml b/deployment/docker/config.seq-ui.yaml index 2ee7f5bb..66ce317d 100644 --- a/deployment/docker/config.seq-ui.yaml +++ b/deployment/docker/config.seq-ui.yaml @@ -2,6 +2,19 @@ server: http_addr: "0.0.0.0:5555" grpc_addr: "0.0.0.0:5556" debug_addr: "0.0.0.0:5557" + cors: + allowed_headers: + - Content-Type + - Authorization + allowed_methods: + - HEAD + - GET + - POST + - PATCH + - DELETE + allowed_origins: + - '*' + max_age: 300 clients: seq_db_addrs: - "seq-db-proxy:9004" From 743d5dbc82bb04c3a536dd355ef726827303bbc9 Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Tue, 30 Sep 2025 11:41:06 +0700 Subject: [PATCH 17/25] set config for seq-ui-fe --- deployment/docker/compose-cluster.yml | 14 +++++++------- deployment/docker/compose-single.yml | 13 ++++++------- deployment/docker/config-cluster.yaml | 5 +---- deployment/docker/config-single.yaml | 2 +- deployment/docker/config.seq-ui.yaml | 6 +++--- deployment/docker/seq-ui-fe-config.json | 3 +++ 6 files changed, 21 insertions(+), 22 deletions(-) create mode 100644 deployment/docker/seq-ui-fe-config.json diff --git a/deployment/docker/compose-cluster.yml b/deployment/docker/compose-cluster.yml index d532384d..49ad7f90 100644 --- a/deployment/docker/compose-cluster.yml +++ b/deployment/docker/compose-cluster.yml @@ -1,4 +1,4 @@ -version: '3.8' +version: "3.8" services: seq-db-proxy: @@ -7,8 +7,7 @@ services: - "9002:9002" # Default HTTP port - "9004:9004" # Default gRPC port - "9200:9200" # Default debug port - command: - --mode=proxy + command: --mode=proxy --config=/configs/config.yaml depends_on: - seq-db-store @@ -17,8 +16,7 @@ services: - ./mappings.yaml:/configs/mappings.yaml seq-db-store: image: ghcr.io/ozontech/seq-db:latest - command: - --mode=store + command: --mode=store --config=/configs/config.yaml volumes: - ./config-cluster.yaml:/configs/config.yaml @@ -39,6 +37,8 @@ services: seq-ui-fe: image: ghcr.io/ozontech/seq-ui-fe:latest ports: - - "5173:80" + - "5173:80" + volumes: + - ./seq-ui-fe-config.json:/usr/share/nginx/html/config.json volumes: - seqdbdata: {} \ No newline at end of file + seqdbdata: {} diff --git a/deployment/docker/compose-single.yml b/deployment/docker/compose-single.yml index 6cbd5086..c5348d47 100644 --- a/deployment/docker/compose-single.yml +++ b/deployment/docker/compose-single.yml @@ -1,14 +1,13 @@ -version: '3.8' +version: "3.8" services: seq-db: image: ghcr.io/ozontech/seq-db:latest ports: - - "9002:9002" # Default HTTP port - - "9004:9004" # Default gRPC port - - "9200:9200" # Default debug port - command: - --config=/configs/config.yaml + - "9002:9002" # Default HTTP port + - "9004:9004" # Default gRPC port + - "9200:9200" # Default debug port + command: --config=/configs/config.yaml --mode=single volumes: - ./config-single.yaml:/configs/config.yaml:ro @@ -17,4 +16,4 @@ services: tty: true restart: unless-stopped volumes: - seqdbdata: {} \ No newline at end of file + seqdbdata: {} diff --git a/deployment/docker/config-cluster.yaml b/deployment/docker/config-cluster.yaml index c6dd78c3..5ca2409a 100644 --- a/deployment/docker/config-cluster.yaml +++ b/deployment/docker/config-cluster.yaml @@ -14,9 +14,6 @@ cluster: # write_stores: # - seq-db-store:9004 - - - mapping: enable_updates: true path: /configs/mappings.yaml @@ -25,4 +22,4 @@ mapping: slow_logs: bulk_threshold: 100ms search_threshold: 20ms - fetch_threshold: 20ms \ No newline at end of file + fetch_threshold: 20ms diff --git a/deployment/docker/config-single.yaml b/deployment/docker/config-single.yaml index cee06272..05d52219 100644 --- a/deployment/docker/config-single.yaml +++ b/deployment/docker/config-single.yaml @@ -2,4 +2,4 @@ storage: data_dir: /data mapping: - path: auto \ No newline at end of file + path: auto diff --git a/deployment/docker/config.seq-ui.yaml b/deployment/docker/config.seq-ui.yaml index 66ce317d..d8d8c233 100644 --- a/deployment/docker/config.seq-ui.yaml +++ b/deployment/docker/config.seq-ui.yaml @@ -13,8 +13,8 @@ server: - PATCH - DELETE allowed_origins: - - '*' - max_age: 300 + - "*" + max_age: 300 clients: seq_db_addrs: - "seq-db-proxy:9004" @@ -34,4 +34,4 @@ handlers: max_search_offset_limit: 100000 max_export_limit: 10000 max_parallel_export_requests: 1 - max_aggregations_per_request: 3 \ No newline at end of file + max_aggregations_per_request: 3 diff --git a/deployment/docker/seq-ui-fe-config.json b/deployment/docker/seq-ui-fe-config.json new file mode 100644 index 00000000..d263b74c --- /dev/null +++ b/deployment/docker/seq-ui-fe-config.json @@ -0,0 +1,3 @@ +{ + "SEQ_UI_URL": "http://localhost:5555/" +} From ae94c29a392eee3cd1f52a1ff2a71a7be295130d Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Tue, 30 Sep 2025 17:00:19 +0700 Subject: [PATCH 18/25] add seq-ui-front --- .../templates/seq-ui/deployment.yaml | 18 ----- .../templates/seq-ui/front/_helpers.tpl | 62 +++++++++++++++ .../templates/seq-ui/front/configmap.yaml | 16 ++++ .../templates/seq-ui/front/deployment.yaml | 77 +++++++++++++++++++ .../templates/seq-ui/front/hpa.yaml | 32 ++++++++ .../ingress.yaml} | 8 +- .../templates/seq-ui/front/service.yaml | 17 ++++ .../k8s/helm-chart/values.minikube.yaml | 7 ++ deployment/k8s/helm-chart/values.yaml | 27 ++++--- 9 files changed, 232 insertions(+), 32 deletions(-) create mode 100644 deployment/k8s/helm-chart/templates/seq-ui/front/_helpers.tpl create mode 100644 deployment/k8s/helm-chart/templates/seq-ui/front/configmap.yaml create mode 100644 deployment/k8s/helm-chart/templates/seq-ui/front/deployment.yaml create mode 100644 deployment/k8s/helm-chart/templates/seq-ui/front/hpa.yaml rename deployment/k8s/helm-chart/templates/seq-ui/{ingress-front.yaml => front/ingress.yaml} (80%) create mode 100644 deployment/k8s/helm-chart/templates/seq-ui/front/service.yaml diff --git a/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml b/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml index 4e0bbd07..4c953fa8 100644 --- a/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml +++ b/deployment/k8s/helm-chart/templates/seq-ui/deployment.yaml @@ -73,24 +73,6 @@ spec: {{- with .Values.sequi.volumeMounts }} {{- toYaml . | nindent 12 }} {{- end }} - - name: front - {{- with .Values.sequi.securityContext }} - securityContext: - {{- toYaml . | nindent 12 }} - {{- end }} - image: "{{ .Values.sequi.front.image.repository }}:{{ .Values.sequi.front.image.tag | default .Chart.AppVersion }}" - imagePullPolicy: {{ .Values.sequi.image.pullPolicy }} - env: - - name: SEQ_UI_URL - value: http://localhost:5555/ - ports: - - name: fronthttp - containerPort: {{ .Values.sequi.front.service.httpPort }} - protocol: TCP - {{- with .Values.sequi.front.resources }} - resources: - {{- toYaml . | nindent 12 }} - {{- end }} volumes: - name: {{ template "seq-ui.fullname" . }}-config configMap: diff --git a/deployment/k8s/helm-chart/templates/seq-ui/front/_helpers.tpl b/deployment/k8s/helm-chart/templates/seq-ui/front/_helpers.tpl new file mode 100644 index 00000000..c8cd8d78 --- /dev/null +++ b/deployment/k8s/helm-chart/templates/seq-ui/front/_helpers.tpl @@ -0,0 +1,62 @@ +{{/* +Expand the name of the chart. +*/}} +{{- define "seq-ui-front.name" -}} +{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}-sequi-front +{{- end }} + +{{/* +Create a default fully qualified app name. +We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec). +If release name contains chart name it will be used as a full name. +*/}} +{{- define "seq-ui-front.fullname" -}} +{{- if .Values.fullnameOverride }} +{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}-sequi-front +{{- else }} +{{- $name := default .Chart.Name .Values.nameOverride }} +{{- if contains $name .Release.Name }} +{{- .Release.Name | trunc 63 | trimSuffix "-" }}-sequi-front +{{- else }} +{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }} +{{- end }} +{{- end }} +{{- end }} + +{{/* +Create chart name and version as used by the chart label. +*/}} +{{- define "seq-ui-front.chart" -}} +{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }} +{{- end }} + +{{/* +Common labels +*/}} +{{- define "seq-ui-front.labels" -}} +helm.sh/chart: {{ include "seq-ui-front.chart" . }} +{{ include "seq-ui-front.selectorLabels" . }} +{{- if .Chart.AppVersion }} +app.kubernetes.io/version: {{ .Chart.AppVersion | quote }} +{{- end }} +app.kubernetes.io/managed-by: {{ .Release.Service }} +{{- end }} + +{{/* +Selector labels +*/}} +{{- define "seq-ui-front.selectorLabels" -}} +app.kubernetes.io/name: {{ include "seq-ui-front.name" . }} +app.kubernetes.io/instance: {{ .Release.Name }} +{{- end }} + +{{/* +Create the name of the service account to use +*/}} +{{- define "seq-ui-front.serviceAccountName" -}} +{{- if .Values.serviceAccount.create }} +{{- default (include "seq-ui-front.fullname" .) .Values.serviceAccount.name }} +{{- else }} +{{- default "default" .Values.serviceAccount.name }} +{{- end }} +{{- end }} diff --git a/deployment/k8s/helm-chart/templates/seq-ui/front/configmap.yaml b/deployment/k8s/helm-chart/templates/seq-ui/front/configmap.yaml new file mode 100644 index 00000000..ee63e2bb --- /dev/null +++ b/deployment/k8s/helm-chart/templates/seq-ui/front/configmap.yaml @@ -0,0 +1,16 @@ +{{- if .Values.sequi.front.enabled -}} +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ template "seq-ui-front.fullname" . }}-config + labels: + app: "{{ template "seq-ui-front.fullname" . }}" + chart: "{{ .Chart.Name }}-{{ .Chart.Version }}" + heritage: {{ .Release.Service | quote }} + release: {{ .Release.Name | quote }} +data: + config.json: | + { + 'SEQ_UI_URL': 'http://sequi.local/' + } +{{- end }} diff --git a/deployment/k8s/helm-chart/templates/seq-ui/front/deployment.yaml b/deployment/k8s/helm-chart/templates/seq-ui/front/deployment.yaml new file mode 100644 index 00000000..cd3eeffc --- /dev/null +++ b/deployment/k8s/helm-chart/templates/seq-ui/front/deployment.yaml @@ -0,0 +1,77 @@ +{{- if .Values.sequi.front.enabled -}} +apiVersion: apps/v1 +kind: Deployment +metadata: + name: {{ include "seq-ui-front.fullname" . }} + labels: + {{- include "seq-ui-front.labels" . | nindent 4 }} +spec: + {{- if not .Values.sequi.front.autoscaling.enabled }} + replicas: {{ .Values.sequi.front.replicaCount }} + {{- end }} + selector: + matchLabels: + {{- include "seq-ui-front.selectorLabels" . | nindent 6 }} + template: + metadata: + annotations: + {{- with .Values.sequi.front.podAnnotations }} + {{- toYaml . | nindent 8 }} + {{- end }} + checksum/config: {{ include (print .Template.BasePath "/seq-ui/front/configmap.yaml") . | sha256sum }} + labels: + {{- include "seq-ui-front.labels" . | nindent 8 }} + {{- with .Values.sequi.front.podLabels }} + {{- toYaml . | nindent 8 }} + {{- end }} + spec: + {{- with .Values.sequi.front.imagePullSecrets }} + imagePullSecrets: + {{- toYaml . | nindent 8 }} + {{- end }} + serviceAccountName: {{ include "seq-ui.serviceAccountName" . }} + {{- with .Values.sequi.front.podSecurityContext }} + securityContext: + {{- toYaml . | nindent 8 }} + {{- end }} + containers: + - name: front + {{- with .Values.sequi.securityContext }} + securityContext: + {{- toYaml . | nindent 12 }} + {{- end }} + image: "{{ .Values.sequi.front.image.repository }}:{{ .Values.sequi.front.image.tag | default .Chart.AppVersion }}" + imagePullPolicy: {{ .Values.sequi.front.image.pullPolicy }} + ports: + - name: http + containerPort: {{ .Values.sequi.front.service.httpPort }} + protocol: TCP + {{- with .Values.sequi.front.resources }} + resources: + {{- toYaml . | nindent 12 }} + {{- end }} + volumeMounts: + - name: "{{ template "seq-ui-front.fullname" . }}-config" + mountPath: "/usr/share/nginx/html/config.json" + subPath: config.json + readOnly: true + volumes: + - name: {{ template "seq-ui-front.fullname" . }}-config + configMap: + name: {{ template "seq-ui-front.fullname" . }}-config + {{- with .Values.sequi.front.volumes }} + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.sequi.front.nodeSelector }} + nodeSelector: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.sequi.front.affinity }} + affinity: + {{- toYaml . | nindent 8 }} + {{- end }} + {{- with .Values.sequi.front.tolerations }} + tolerations: + {{- toYaml . | nindent 8 }} + {{- end }} +{{- end }} diff --git a/deployment/k8s/helm-chart/templates/seq-ui/front/hpa.yaml b/deployment/k8s/helm-chart/templates/seq-ui/front/hpa.yaml new file mode 100644 index 00000000..29092f4b --- /dev/null +++ b/deployment/k8s/helm-chart/templates/seq-ui/front/hpa.yaml @@ -0,0 +1,32 @@ +{{- if .Values.sequi.front.autoscaling.enabled }} +apiVersion: autoscaling/v2 +kind: HorizontalPodAutoscaler +metadata: + name: {{ include "seq-ui.fullname" . }} + labels: + {{- include "seq-ui.labels" . | nindent 4 }} +spec: + scaleTargetRef: + apiVersion: apps/v1 + kind: Deployment + name: {{ include "seq-ui.fullname" . }} + minReplicas: {{ .Values.sequi.front.autoscaling.minReplicas }} + maxReplicas: {{ .Values.sequi.front.autoscaling.maxReplicas }} + metrics: + {{- if .Values.sequi.front.autoscaling.targetCPUUtilizationPercentage }} + - type: Resource + resource: + name: cpu + target: + type: Utilization + averageUtilization: {{ .Values.sequi.front.autoscaling.targetCPUUtilizationPercentage }} + {{- end }} + {{- if .Values.sequi.front.autoscaling.targetMemoryUtilizationPercentage }} + - type: Resource + resource: + name: memory + target: + type: Utilization + averageUtilization: {{ .Values.sequi.front.autoscaling.targetMemoryUtilizationPercentage }} + {{- end }} +{{- end }} diff --git a/deployment/k8s/helm-chart/templates/seq-ui/ingress-front.yaml b/deployment/k8s/helm-chart/templates/seq-ui/front/ingress.yaml similarity index 80% rename from deployment/k8s/helm-chart/templates/seq-ui/ingress-front.yaml rename to deployment/k8s/helm-chart/templates/seq-ui/front/ingress.yaml index 32a219c8..1a0d5bac 100644 --- a/deployment/k8s/helm-chart/templates/seq-ui/ingress-front.yaml +++ b/deployment/k8s/helm-chart/templates/seq-ui/front/ingress.yaml @@ -2,9 +2,9 @@ apiVersion: networking.k8s.io/v1 kind: Ingress metadata: - name: {{ include "seq-ui.fullname" . }}-front + name: {{ include "seq-ui-front.fullname" . }}-front labels: - {{- include "seq-ui.labels" . | nindent 4 }} + {{- include "seq-ui-front.labels" . | nindent 4 }} {{- with .Values.sequi.front.ingress.annotations }} annotations: {{- toYaml . | nindent 4 }} @@ -35,9 +35,9 @@ spec: {{- end }} backend: service: - name: {{ include "seq-ui.fullname" $ }} + name: {{ include "seq-ui-front.fullname" $ }} port: - number: {{ $.Values.sequi.service.front.httpPort }} + number: {{ $.Values.sequi.front.service.httpPort }} {{- end }} {{- end }} {{- end }} diff --git a/deployment/k8s/helm-chart/templates/seq-ui/front/service.yaml b/deployment/k8s/helm-chart/templates/seq-ui/front/service.yaml new file mode 100644 index 00000000..124f9376 --- /dev/null +++ b/deployment/k8s/helm-chart/templates/seq-ui/front/service.yaml @@ -0,0 +1,17 @@ +{{- if .Values.sequi.front.enabled -}} +apiVersion: v1 +kind: Service +metadata: + name: {{ include "seq-ui-front.fullname" . }} + labels: + {{- include "seq-ui-front.labels" . | nindent 4 }} +spec: + type: {{ .Values.sequi.front.service.type }} + ports: + - port: {{ .Values.sequi.front.service.httpPort }} + targetPort: http + protocol: TCP + name: http + selector: + {{- include "seq-ui-front.selectorLabels" . | nindent 4 }} +{{- end }} diff --git a/deployment/k8s/helm-chart/values.minikube.yaml b/deployment/k8s/helm-chart/values.minikube.yaml index d0c198fa..02080ed1 100644 --- a/deployment/k8s/helm-chart/values.minikube.yaml +++ b/deployment/k8s/helm-chart/values.minikube.yaml @@ -24,3 +24,10 @@ mapping: storage: frac_size: "256MiB" total_size: "10GiB" + +sequi: + ingress: + enabled: true + front: + ingress: + enabled: true diff --git a/deployment/k8s/helm-chart/values.yaml b/deployment/k8s/helm-chart/values.yaml index ef265cb8..2b47ebbe 100644 --- a/deployment/k8s/helm-chart/values.yaml +++ b/deployment/k8s/helm-chart/values.yaml @@ -107,7 +107,6 @@ tolerations: [] affinity: {} - mapping: auto: true enable_updates: false @@ -249,9 +248,6 @@ seqproxy: affinity: {} - - - sequi: enabled: true # Default values for seq-ui. @@ -263,7 +259,7 @@ sequi: # This sets the container image more information can be found here: https://kubernetes.io/docs/concepts/containers/images/ image: - repository: ghcr.io/ozontech/seq-ui + repository: ghcr.io/ozontech/seq-ui # This sets the pull policy for images. pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. @@ -361,7 +357,6 @@ sequi: targetCPUUtilizationPercentage: 80 # targetMemoryUtilizationPercentage: 80 - config: clients: seq_db_timeout: "15s" @@ -391,8 +386,9 @@ sequi: affinity: {} front: + enabled: true image: - repository: ghcr.io/ozontech/seq-ui-fe + repository: ghcr.io/ozontech/seq-ui-fe # This sets the pull policy for images. pullPolicy: IfNotPresent # Overrides the image tag whose default is the chart appVersion. @@ -400,7 +396,7 @@ sequi: # This is for the secrets for pulling an image from a private repository more information can be found here: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/ imagePullSecrets: [] - + # This is for setting up a service more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/ service: # This sets the service type more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types @@ -416,7 +412,7 @@ sequi: # kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: "true" hosts: - - host: sequi-front.local + - host: logging.local paths: - path: / pathType: ImplementationSpecific @@ -437,4 +433,15 @@ sequi: # cpu: 100m # memory: 128Mi - \ No newline at end of file + autoscaling: + enabled: false + minReplicas: 1 + maxReplicas: 100 + targetCPUUtilizationPercentage: 80 + # targetMemoryUtilizationPercentage: 80 + + nodeSelector: {} + + tolerations: [] + + affinity: {} From 2c7a4c4e63a654bb2f010ed7e2db0c43732b58a1 Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Tue, 30 Sep 2025 17:53:29 +0700 Subject: [PATCH 19/25] get seq-ui-url from ingress --- deployment/k8s/helm-chart/README.md | 19 +++++++++++++++++++ .../templates/seq-ui/front/_helpers.tpl | 14 ++++++++++++++ .../templates/seq-ui/front/configmap.yaml | 2 +- .../templates/seq-ui/front/ingress.yaml | 2 +- .../k8s/helm-chart/values.minikube.yaml | 4 ++++ deployment/k8s/helm-chart/values.yaml | 6 ++++-- 6 files changed, 43 insertions(+), 4 deletions(-) diff --git a/deployment/k8s/helm-chart/README.md b/deployment/k8s/helm-chart/README.md index ce00b393..0139017e 100644 --- a/deployment/k8s/helm-chart/README.md +++ b/deployment/k8s/helm-chart/README.md @@ -10,4 +10,23 @@ Install [Minikube](https://minikube.sigs.k8s.io/docs/start/) ```shell helm upgrade --install seq-db . -f values.minikube.yaml + +# add ingress hosts +echo "$( minikube ip ) seq-proxy.local" >> /etc/hosts +echo "$( minikube ip ) sequi-server.local" >> /etc/hosts +echo "$( minikube ip ) sequi.local" >> /etc/hosts + +# send test data +curl --request POST \ + --url http://seq-proxy.local/_bulk \ + --header 'Content-Type: application/json' \ + --data '{"index" : {"unused-key":""}} +{"k8s_pod": "app-backend-123", "k8s_namespace": "production", "k8s_container": "app-backend", "request": "POST", "request_uri": "/api/v1/orders", "message": "New order created successfully"} +{"index" : {"unused-key":""}} +{"k8s_pod": "app-frontend-456", "k8s_namespace": "production", "k8s_container": "app-frontend", "request": "GET", "request_uri": "/api/v1/products", "message": "Product list retrieved"} +{"index" : {"unused-key":""}} +{"k8s_pod": "payment-service-789", "k8s_namespace": "production", "k8s_container": "payment-service", "request": "POST", "request_uri": "/api/v1/payments", "message": "failed"} +' ``` + +Open http://sequi.local/?from=3600 diff --git a/deployment/k8s/helm-chart/templates/seq-ui/front/_helpers.tpl b/deployment/k8s/helm-chart/templates/seq-ui/front/_helpers.tpl index c8cd8d78..8fa909d0 100644 --- a/deployment/k8s/helm-chart/templates/seq-ui/front/_helpers.tpl +++ b/deployment/k8s/helm-chart/templates/seq-ui/front/_helpers.tpl @@ -60,3 +60,17 @@ Create the name of the service account to use {{- default "default" .Values.serviceAccount.name }} {{- end }} {{- end }} + +{{- define "seq-ui.url" -}} + {{- if .Values.sequi.ingress.enabled -}} + {{- $protocol := "http" -}} + {{- if .Values.sequi.ingress.tls -}} + {{- $protocol = "https" -}} + {{- end -}} + {{- $host := (index .Values.sequi.ingress.hosts 0).host -}} + {{- $path := (index (index .Values.sequi.ingress.hosts 0).paths 0).path -}} + {{- printf "%s://%s%s" $protocol $host $path -}} + {{- else -}} + {{- .Values.sequi.front.SEQ_UI_URL -}} + {{- end -}} +{{- end -}} diff --git a/deployment/k8s/helm-chart/templates/seq-ui/front/configmap.yaml b/deployment/k8s/helm-chart/templates/seq-ui/front/configmap.yaml index ee63e2bb..9687aba7 100644 --- a/deployment/k8s/helm-chart/templates/seq-ui/front/configmap.yaml +++ b/deployment/k8s/helm-chart/templates/seq-ui/front/configmap.yaml @@ -11,6 +11,6 @@ metadata: data: config.json: | { - 'SEQ_UI_URL': 'http://sequi.local/' + 'SEQ_UI_URL': {{ include "seq-ui.url" . | quote }} } {{- end }} diff --git a/deployment/k8s/helm-chart/templates/seq-ui/front/ingress.yaml b/deployment/k8s/helm-chart/templates/seq-ui/front/ingress.yaml index 1a0d5bac..1129a488 100644 --- a/deployment/k8s/helm-chart/templates/seq-ui/front/ingress.yaml +++ b/deployment/k8s/helm-chart/templates/seq-ui/front/ingress.yaml @@ -2,7 +2,7 @@ apiVersion: networking.k8s.io/v1 kind: Ingress metadata: - name: {{ include "seq-ui-front.fullname" . }}-front + name: {{ include "seq-ui-front.fullname" . }} labels: {{- include "seq-ui-front.labels" . | nindent 4 }} {{- with .Values.sequi.front.ingress.annotations }} diff --git a/deployment/k8s/helm-chart/values.minikube.yaml b/deployment/k8s/helm-chart/values.minikube.yaml index 02080ed1..7592261c 100644 --- a/deployment/k8s/helm-chart/values.minikube.yaml +++ b/deployment/k8s/helm-chart/values.minikube.yaml @@ -25,6 +25,10 @@ storage: frac_size: "256MiB" total_size: "10GiB" +seqproxy: + ingress: + enabled: true + sequi: ingress: enabled: true diff --git a/deployment/k8s/helm-chart/values.yaml b/deployment/k8s/helm-chart/values.yaml index 2b47ebbe..dca5be6e 100644 --- a/deployment/k8s/helm-chart/values.yaml +++ b/deployment/k8s/helm-chart/values.yaml @@ -318,7 +318,7 @@ sequi: # kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: "true" hosts: - - host: sequi.local + - host: sequi-server.local paths: - path: / pathType: ImplementationSpecific @@ -404,6 +404,8 @@ sequi: # This sets the ports more information can be found here: https://kubernetes.io/docs/concepts/services-networking/service/#field-spec-ports httpPort: 80 + SEQ_UI_URL: "" + # This block is for setting up the ingress for more information can be found here: https://kubernetes.io/docs/concepts/services-networking/ingress/ ingress: enabled: false @@ -412,7 +414,7 @@ sequi: # kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: "true" hosts: - - host: logging.local + - host: sequi.local paths: - path: / pathType: ImplementationSpecific From 59a69c8f1e1a12869bddb89cf3d2d74255d84498 Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Mon, 6 Oct 2025 14:31:15 +0700 Subject: [PATCH 20/25] set config for seq-db and seq-proxy --- .../k8s/helm-chart/templates/configmap.yaml | 5 +---- .../templates/seq-proxy/configmap.yaml | 5 +---- .../k8s/helm-chart/values.minikube.yaml | 21 +++++++++++++++++++ deployment/k8s/helm-chart/values.yaml | 4 ++++ 4 files changed, 27 insertions(+), 8 deletions(-) diff --git a/deployment/k8s/helm-chart/templates/configmap.yaml b/deployment/k8s/helm-chart/templates/configmap.yaml index f17504c4..0ddabdcb 100644 --- a/deployment/k8s/helm-chart/templates/configmap.yaml +++ b/deployment/k8s/helm-chart/templates/configmap.yaml @@ -25,7 +25,4 @@ data: path: /mappings/mappings.yaml {{- end }} update_period: {{ .Values.mapping.update_period }} - slow_logs: - bulk_threshold: 0ms - fetch_threshold: 3s - search_threshold: 3s + {{- toYaml .Values.config | nindent 4 }} diff --git a/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml b/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml index 1deb4465..f47bede3 100644 --- a/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml +++ b/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml @@ -30,7 +30,4 @@ data: path: /mappings/mappings.yaml {{- end }} update_period: {{ .Values.mapping.update_period }} - slow_logs: - bulk_threshold: 0ms - fetch_threshold: 3s - search_threshold: 3s + {{- toYaml .Values.seqproxy.config | nindent 4 }} diff --git a/deployment/k8s/helm-chart/values.minikube.yaml b/deployment/k8s/helm-chart/values.minikube.yaml index 7592261c..06b16cd4 100644 --- a/deployment/k8s/helm-chart/values.minikube.yaml +++ b/deployment/k8s/helm-chart/values.minikube.yaml @@ -28,6 +28,19 @@ storage: seqproxy: ingress: enabled: true + config: + slow_logs: + bulk_threshold: 0ms + fetch_threshold: 3s + search_threshold: 3s + limits: + query_rate: 2.0 + search_requests: 32 + bulk_requests: 32 + inflight_bulks: 32 + fraction_hits: 6000 + search_docs: 100000 + doc_size: "128KiB" sequi: ingress: @@ -35,3 +48,11 @@ sequi: front: ingress: enabled: true + +config: + compression: + docs_zstd_compression_level: -1 + metas_zstd_compression_level: -1 + docs_sorting: + doc_block_size: "1MiB" + enabled: false diff --git a/deployment/k8s/helm-chart/values.yaml b/deployment/k8s/helm-chart/values.yaml index dca5be6e..654ac3a5 100644 --- a/deployment/k8s/helm-chart/values.yaml +++ b/deployment/k8s/helm-chart/values.yaml @@ -115,6 +115,8 @@ mapping: storage: {} +config: {} + seqproxy: enabled: true # Default values for seq-proxy. @@ -138,6 +140,8 @@ seqproxy: nameOverride: "" fullnameOverride: "" + config: {} + cluster: replicas: 1 shuffle_replicas: true From b5ea0bc70a15ad45ee6c6b51e24c58714c5609b8 Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Mon, 13 Oct 2025 16:03:34 +0700 Subject: [PATCH 21/25] helm-chart: when config is empty --- deployment/k8s/helm-chart/templates/configmap.yaml | 5 ++++- deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/deployment/k8s/helm-chart/templates/configmap.yaml b/deployment/k8s/helm-chart/templates/configmap.yaml index 0ddabdcb..b0c8fb28 100644 --- a/deployment/k8s/helm-chart/templates/configmap.yaml +++ b/deployment/k8s/helm-chart/templates/configmap.yaml @@ -25,4 +25,7 @@ data: path: /mappings/mappings.yaml {{- end }} update_period: {{ .Values.mapping.update_period }} - {{- toYaml .Values.config | nindent 4 }} + {{- with .Values.config }} + {{ toYaml . | nindent 4 }} + {{- else }} + {{- end }} diff --git a/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml b/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml index f47bede3..b6202404 100644 --- a/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml +++ b/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml @@ -30,4 +30,7 @@ data: path: /mappings/mappings.yaml {{- end }} update_period: {{ .Values.mapping.update_period }} - {{- toYaml .Values.seqproxy.config | nindent 4 }} + {{- with .Values.seqproxy.config }} + {{ toYaml . | nindent 4 }} + {{- else }} + {{- end }} From f7d60d0120c4818c6c850959c68c75a46b6e621d Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Fri, 17 Oct 2025 13:41:19 +0700 Subject: [PATCH 22/25] helm-chart: remove storage config from seq-proxy --- deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml | 2 -- 1 file changed, 2 deletions(-) diff --git a/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml b/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml index b6202404..1e485900 100644 --- a/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml +++ b/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml @@ -9,8 +9,6 @@ metadata: release: {{ .Release.Name | quote }} data: config.yaml: | - storage: - data_dir: /data cluster: replicas: {{ .Values.seqproxy.cluster.replicas }} shuffle_replicas: {{ .Values.seqproxy.cluster.shuffle_replicas }} From eef3bcc2c4af51fb36a9ab0416719ba8d515c21a Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Fri, 17 Oct 2025 13:52:02 +0700 Subject: [PATCH 23/25] helm-chart: remove notes --- deployment/k8s/helm-chart/templates/NOTES.txt | 0 1 file changed, 0 insertions(+), 0 deletions(-) delete mode 100644 deployment/k8s/helm-chart/templates/NOTES.txt diff --git a/deployment/k8s/helm-chart/templates/NOTES.txt b/deployment/k8s/helm-chart/templates/NOTES.txt deleted file mode 100644 index e69de29b..00000000 From 618ec1240c88cfb449b7b0b112331f11c2c26529 Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Fri, 17 Oct 2025 14:12:40 +0700 Subject: [PATCH 24/25] seq-ui-fe config and remove docker-compose configs from deployment --- deployment/docker/compose-cluster.yml | 44 ------------------- deployment/docker/compose-single.yml | 19 -------- deployment/docker/config-cluster.yaml | 25 ----------- deployment/docker/config-single.yaml | 5 --- deployment/docker/config.seq-ui.yaml | 37 ---------------- deployment/docker/mappings.yaml | 17 ------- quickstart/docker-compose.seq-ui.yaml | 3 +- .../seq-ui-fe-config.json | 0 8 files changed, 2 insertions(+), 148 deletions(-) delete mode 100644 deployment/docker/compose-cluster.yml delete mode 100644 deployment/docker/compose-single.yml delete mode 100644 deployment/docker/config-cluster.yaml delete mode 100644 deployment/docker/config-single.yaml delete mode 100644 deployment/docker/config.seq-ui.yaml delete mode 100644 deployment/docker/mappings.yaml rename {deployment/docker => quickstart}/seq-ui-fe-config.json (100%) diff --git a/deployment/docker/compose-cluster.yml b/deployment/docker/compose-cluster.yml deleted file mode 100644 index 49ad7f90..00000000 --- a/deployment/docker/compose-cluster.yml +++ /dev/null @@ -1,44 +0,0 @@ -version: "3.8" - -services: - seq-db-proxy: - image: ghcr.io/ozontech/seq-db:latest - ports: - - "9002:9002" # Default HTTP port - - "9004:9004" # Default gRPC port - - "9200:9200" # Default debug port - command: --mode=proxy - --config=/configs/config.yaml - depends_on: - - seq-db-store - volumes: - - ./config-cluster.yaml:/configs/config.yaml - - ./mappings.yaml:/configs/mappings.yaml - seq-db-store: - image: ghcr.io/ozontech/seq-db:latest - command: --mode=store - --config=/configs/config.yaml - volumes: - - ./config-cluster.yaml:/configs/config.yaml - - ./mappings.yaml:/configs/mappings.yaml - - seqdbdata:/data - stdin_open: true - tty: true - restart: unless-stopped - seq-ui: - image: ghcr.io/ozontech/seq-ui:latest - volumes: - - ./config.seq-ui.yaml:/seq-ui/config.yaml - ports: - - "5555:5555" # Default HTTP port - - "5556:5556" # Default gRPC port - - "5557:5557" # Default debug port - command: --config config.yaml - seq-ui-fe: - image: ghcr.io/ozontech/seq-ui-fe:latest - ports: - - "5173:80" - volumes: - - ./seq-ui-fe-config.json:/usr/share/nginx/html/config.json -volumes: - seqdbdata: {} diff --git a/deployment/docker/compose-single.yml b/deployment/docker/compose-single.yml deleted file mode 100644 index c5348d47..00000000 --- a/deployment/docker/compose-single.yml +++ /dev/null @@ -1,19 +0,0 @@ -version: "3.8" - -services: - seq-db: - image: ghcr.io/ozontech/seq-db:latest - ports: - - "9002:9002" # Default HTTP port - - "9004:9004" # Default gRPC port - - "9200:9200" # Default debug port - command: --config=/configs/config.yaml - --mode=single - volumes: - - ./config-single.yaml:/configs/config.yaml:ro - - seqdbdata:/data - stdin_open: true - tty: true - restart: unless-stopped -volumes: - seqdbdata: {} diff --git a/deployment/docker/config-cluster.yaml b/deployment/docker/config-cluster.yaml deleted file mode 100644 index 5ca2409a..00000000 --- a/deployment/docker/config-cluster.yaml +++ /dev/null @@ -1,25 +0,0 @@ -storage: - data_dir: /data - frac_size: 256MiB - total_size: 100GiB - -cluster: - hot_replicas: 1 - # shuffle_replicas: true - hot_stores: - - seq-db-store:9004 - # colds - # read_stores: - # - seq-db-store:9004 - # write_stores: - # - seq-db-store:9004 - -mapping: - enable_updates: true - path: /configs/mappings.yaml - update_period: 5s - -slow_logs: - bulk_threshold: 100ms - search_threshold: 20ms - fetch_threshold: 20ms diff --git a/deployment/docker/config-single.yaml b/deployment/docker/config-single.yaml deleted file mode 100644 index 05d52219..00000000 --- a/deployment/docker/config-single.yaml +++ /dev/null @@ -1,5 +0,0 @@ -storage: - data_dir: /data - -mapping: - path: auto diff --git a/deployment/docker/config.seq-ui.yaml b/deployment/docker/config.seq-ui.yaml deleted file mode 100644 index d8d8c233..00000000 --- a/deployment/docker/config.seq-ui.yaml +++ /dev/null @@ -1,37 +0,0 @@ -server: - http_addr: "0.0.0.0:5555" - grpc_addr: "0.0.0.0:5556" - debug_addr: "0.0.0.0:5557" - cors: - allowed_headers: - - Content-Type - - Authorization - allowed_methods: - - HEAD - - GET - - POST - - PATCH - - DELETE - allowed_origins: - - "*" - max_age: 300 -clients: - seq_db_addrs: - - "seq-db-proxy:9004" - seq_db_timeout: 15s - seq_db_avg_doc_size: 100 - request_retries: 3 - proxy_client_mode: "grpc" - grpc_keepalive_params: - time: 10s - timeout: 10s - permit_without_stream: true -handlers: - seq_api: - seq_cli_max_search_limit: 10000 - max_search_limit: 1000 - max_search_total_limit: 100000 - max_search_offset_limit: 100000 - max_export_limit: 10000 - max_parallel_export_requests: 1 - max_aggregations_per_request: 3 diff --git a/deployment/docker/mappings.yaml b/deployment/docker/mappings.yaml deleted file mode 100644 index d46b2c14..00000000 --- a/deployment/docker/mappings.yaml +++ /dev/null @@ -1,17 +0,0 @@ -mapping-list: - - type: "keyword" - name: "k8s_pod" - - type: "keyword" - name: "k8s_namespace" - - type: "keyword" - name: "k8s_container" - - type: "text" - name: "request" - - type: "path" - name: "request_uri" - - name: "message" - types: - - type: "text" - - title: "keyword" - type: "keyword" - size: 18 diff --git a/quickstart/docker-compose.seq-ui.yaml b/quickstart/docker-compose.seq-ui.yaml index 4d150832..b6dc0bd8 100644 --- a/quickstart/docker-compose.seq-ui.yaml +++ b/quickstart/docker-compose.seq-ui.yaml @@ -12,7 +12,8 @@ services: image: ghcr.io/ozontech/seq-ui-fe:latest ports: - "5173:80" - + volumes: + - ./seq-ui-fe-config.json:/usr/share/nginx/html/config.json seq-db-proxy: image: ghcr.io/ozontech/seq-db:latest volumes: diff --git a/deployment/docker/seq-ui-fe-config.json b/quickstart/seq-ui-fe-config.json similarity index 100% rename from deployment/docker/seq-ui-fe-config.json rename to quickstart/seq-ui-fe-config.json From 2bbdedabf2b6ce520d3ab6f3b95bcc103a921698 Mon Sep 17 00:00:00 2001 From: Dmitry Romanov Date: Fri, 17 Oct 2025 16:17:39 +0700 Subject: [PATCH 25/25] helm-chart: extended config for seq-db and seq-proxy --- deployment/k8s/helm-chart/templates/configmap.yaml | 4 ++-- .../k8s/helm-chart/templates/seq-proxy/configmap.yaml | 4 ++-- deployment/k8s/helm-chart/values.minikube.yaml | 7 ++++++- deployment/k8s/helm-chart/values.yaml | 4 ++-- 4 files changed, 12 insertions(+), 7 deletions(-) diff --git a/deployment/k8s/helm-chart/templates/configmap.yaml b/deployment/k8s/helm-chart/templates/configmap.yaml index b0c8fb28..889cae14 100644 --- a/deployment/k8s/helm-chart/templates/configmap.yaml +++ b/deployment/k8s/helm-chart/templates/configmap.yaml @@ -25,7 +25,7 @@ data: path: /mappings/mappings.yaml {{- end }} update_period: {{ .Values.mapping.update_period }} - {{- with .Values.config }} - {{ toYaml . | nindent 4 }} + {{- with .Values.extendedConfig }} + {{- toYaml . | nindent 4 }} {{- else }} {{- end }} diff --git a/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml b/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml index 1e485900..852db91b 100644 --- a/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml +++ b/deployment/k8s/helm-chart/templates/seq-proxy/configmap.yaml @@ -28,7 +28,7 @@ data: path: /mappings/mappings.yaml {{- end }} update_period: {{ .Values.mapping.update_period }} - {{- with .Values.seqproxy.config }} - {{ toYaml . | nindent 4 }} + {{- with .Values.seqproxy.extendedConfig }} + {{- toYaml . | nindent 4 }} {{- else }} {{- end }} diff --git a/deployment/k8s/helm-chart/values.minikube.yaml b/deployment/k8s/helm-chart/values.minikube.yaml index 06b16cd4..e221c9b3 100644 --- a/deployment/k8s/helm-chart/values.minikube.yaml +++ b/deployment/k8s/helm-chart/values.minikube.yaml @@ -25,10 +25,15 @@ storage: frac_size: "256MiB" total_size: "10GiB" +extendedConfig: + compression: + docs_zstd_compression_level: 1 + metas_zstd_compression_level: 1 + seqproxy: ingress: enabled: true - config: + extendedConfig: slow_logs: bulk_threshold: 0ms fetch_threshold: 3s diff --git a/deployment/k8s/helm-chart/values.yaml b/deployment/k8s/helm-chart/values.yaml index 654ac3a5..75f92ef7 100644 --- a/deployment/k8s/helm-chart/values.yaml +++ b/deployment/k8s/helm-chart/values.yaml @@ -115,7 +115,7 @@ mapping: storage: {} -config: {} +extendedConfig: {} seqproxy: enabled: true @@ -140,7 +140,7 @@ seqproxy: nameOverride: "" fullnameOverride: "" - config: {} + extendedConfig: {} cluster: replicas: 1