From fdc281a406bfde644d8aa7fcd9f86c5771159f64 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Wed, 6 Nov 2024 14:54:44 +0100 Subject: [PATCH] chore(helm): Adding opereplay config map for Installation agnostic version access. This is useful for db migration, especially when we install using argo, or other means precedence to the autogenereated prev version. Set migration is true if its argo deployment fix the forceMigration override --- scripts/helmcharts/openreplay/files/dbops.sh | 16 +++++++++++ .../openreplay/templates/configmap.yaml | 10 +++++++ .../helmcharts/openreplay/templates/job.yaml | 28 +++++++++++++++++-- scripts/helmcharts/openreplay/values.yaml | 5 ++++ 4 files changed, 57 insertions(+), 2 deletions(-) create mode 100644 scripts/helmcharts/openreplay/templates/configmap.yaml diff --git a/scripts/helmcharts/openreplay/files/dbops.sh b/scripts/helmcharts/openreplay/files/dbops.sh index 3217f0262..dddae7a7d 100644 --- a/scripts/helmcharts/openreplay/files/dbops.sh +++ b/scripts/helmcharts/openreplay/files/dbops.sh @@ -5,9 +5,25 @@ cd $(dirname $0) is_migrate=$1 +# Check if the openreplay version is set. +# This will take precedence over the .Values.fromVersion variable +# Because its created by installation programatically. +if [[ -n $OPENREPLAY_VERSION ]]; then + is_migrate=true + PREVIOUS_APP_VERSION=$OPENREPLAY_VERSION + echo "$OPENREPLAY_VERSION set" +fi + +if [[ $FORCE_MIGRATION == "true" ]]; then + is_migrate=true +fi + # Passed from env # PREVIOUS_APP_VERSION # CHART_APP_VERSION +# Converting alphaneumeric to number. +PREVIOUS_APP_VERSION=$(echo $PREVIOUS_APP_VERSION | cut -d "v" -f2) +CHART_APP_VERSION=$(echo $CHART_APP_VERSION | cut -d "v" -f2) function migration() { ls -la /opt/openreplay/openreplay diff --git a/scripts/helmcharts/openreplay/templates/configmap.yaml b/scripts/helmcharts/openreplay/templates/configmap.yaml new file mode 100644 index 000000000..8189a3163 --- /dev/null +++ b/scripts/helmcharts/openreplay/templates/configmap.yaml @@ -0,0 +1,10 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: openreplay-version + namespace: "{{ .Release.Namespace }}" + annotations: + "helm.sh/hook": post-install, post-upgrade + "helm.sh/hook-weight": "-6" # Higher precidence, so the first the config map will get created. +data: + version: {{ .Chart.AppVersion }} diff --git a/scripts/helmcharts/openreplay/templates/job.yaml b/scripts/helmcharts/openreplay/templates/job.yaml index 889e862f3..4a9722b1e 100644 --- a/scripts/helmcharts/openreplay/templates/job.yaml +++ b/scripts/helmcharts/openreplay/templates/job.yaml @@ -3,8 +3,8 @@ Don't have to trigger migration if there is no version change Don't have to trigger migration if skipMigration is set Have to trigger migration if forceMigration is set */}} -{{- $versionChange := and (eq .Values.fromVersion .Chart.AppVersion) (.Release.IsUpgrade) }} -{{- if or (not (or .Values.skipMigration $versionChange)) .Values.forceMigration }} +{{- $versionChange := (or .Values.deployment.argo (and (not (eq .Values.fromVersion .Chart.AppVersion)) .Release.IsUpgrade)) }} +{{- if or .Values.forceMigration (and (not .Values.skipMigration) $versionChange) }} --- apiVersion: v1 kind: ConfigMap @@ -187,6 +187,12 @@ spec: containers: - name: postgres env: + - name: OPENREPLAY_VERSION + valueFrom: + configMapKeyRef: + name: openreplay-version + key: version + optional: true - name: FORCE_MIGRATION value: "{{ .Values.forceMigration }}" - name: PREVIOUS_APP_VERSION @@ -233,6 +239,12 @@ spec: - name: minio image: bitnami/minio:2023.11.20 env: + - name: OPENREPLAY_VERSION + valueFrom: + configMapKeyRef: + name: openreplay-version + key: version + optional: true {{- range $key, $val := .Values.global.env }} - name: {{ $key }} value: '{{ $val }}' @@ -356,6 +368,12 @@ spec: - name: clickhouse image: clickhouse/clickhouse-server:22.12-alpine env: + - name: OPENREPLAY_VERSION + valueFrom: + configMapKeyRef: + name: openreplay-version + key: version + optional: true {{- range $key, $val := .Values.global.env }} - name: {{ $key }} value: '{{ $val }}' @@ -391,6 +409,12 @@ spec: - name: kafka image: bitnami/kafka:2.6.0-debian-10-r30 env: + - name: OPENREPLAY_VERSION + valueFrom: + configMapKeyRef: + name: openreplay-version + key: version + optional: true {{- range $key, $val := .Values.global.env }} - name: {{ $key }} value: '{{ $val }}' diff --git a/scripts/helmcharts/openreplay/values.yaml b/scripts/helmcharts/openreplay/values.yaml index 96164aa20..9d90dfef2 100644 --- a/scripts/helmcharts/openreplay/values.yaml +++ b/scripts/helmcharts/openreplay/values.yaml @@ -5,6 +5,11 @@ migrationJob: migration: env: {} +deployment: + argo: false +forceMigration: false +skipMigration: false + redis: &redis tls: enabled: false