From 619dc92f5c1c03a8219d4cc638e87fa941dad152 Mon Sep 17 00:00:00 2001 From: rjshrjndrn Date: Fri, 16 Aug 2024 17:05:29 +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 c0618e1d5..fd208d5b7 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 @@ -116,6 +116,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 @@ -162,6 +168,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 }}' @@ -285,6 +297,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 }}' @@ -320,6 +338,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 a4273492c..ee391e8d2 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