Skip to content

Commit

Permalink
feat: allow for PosgreSQL-based analytics, deprecate the in-chart Inf…
Browse files Browse the repository at this point in the history
…luxDB usage
  • Loading branch information
khvn26 authored and gagantrivedi committed May 15, 2024
1 parent ceede85 commit 653b524
Show file tree
Hide file tree
Showing 5 changed files with 58 additions and 36 deletions.
8 changes: 3 additions & 5 deletions charts/flagsmith/ci/e2e-test-values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -6,10 +6,8 @@ frontend:
SLACK_TOKEN: "${SLACK_TOKEN}"

api:
analytics:
enabled: true
extraEnv:
EMAIL_BACKEND: 'django.core.mail.backends.console.EmailBackend'
EMAIL_BACKEND: "django.core.mail.backends.console.EmailBackend"
FE_E2E_TEST_USER_EMAIL: [email protected]
influxdb2:
# Needed to set this for the tests to not fail. Possibly related to
# https://github.com/Flagsmith/flagsmith/issues/340
enabled: false
11 changes: 0 additions & 11 deletions charts/flagsmith/ci/influxdb-test-values.yaml

This file was deleted.

29 changes: 29 additions & 0 deletions charts/flagsmith/templates/NOTES.txt
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,35 @@ for information about how to gain web access to the application.

{{- end }}

{{- if not .Values.api.analytics.enabled }}

######################################################
##### Analytics capabilities are off! #####
##### Chart-provisioned InfluxDB is deprecated. #####
######################################################

If you were provisioning an InfluxDB instance for Flagsmith's
analytics with these charts, your data is safe, but no new data
will be written to it.

*In a subsequent release, chart-provisioned InfluxDB and all related
values under the `influxdb2` key will be removed.*

When you enable analytics by setting `api.analytics.enabled`
to `true`, the following database backend will be used for analytics,
in the order of preference:

1. External InfluxDB if `influxdbExternal.enabled` set to `true`
2. Dedicated PostgreSQL specified by the `ANALYTICS_DATABASE_URL`
environment variable
3. External PostgreSQL if `databaseExternal.enabled` set to `true`
4. Chart-provisioned PostgreSQL

Note that you can use a dedicated PostgreSQL instance by providing the
value for `ANALYTICS_DATABASE_URL` environment variable under the
`extraEnvFromSecret` key.
{{- end}}

{{- if not .Values.api.secretKey }}

######################################
Expand Down
28 changes: 9 additions & 19 deletions charts/flagsmith/templates/_api_environment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -17,25 +17,8 @@
{{- else }}
name: {{ template "flagsmith.fullname" . }}
key: DJANGO_SECRET_KEY
{{- end }}
{{- if .Values.influxdb2.enabled }}
- name: INFLUXDB_URL
value: http://{{- template "flagsmith.influxdb.hostname" . -}}:80
- name: INFLUXDB_BUCKET
value: {{ .Values.influxdb2.adminUser.bucket }}
- name: INFLUXDB_ORG
value: {{ .Values.influxdb2.adminUser.organization }}
- name: INFLUXDB_TOKEN
valueFrom:
secretKeyRef:
{{- if .Values.influxdb2.adminUser.existingSecret }}
name: {{ .Values.influxdb2.adminUser.existingSecret }}
key: admin-token
{{- else }}
name: {{ template "flagsmith.influxdb.fullname" . }}-auth
key: admin-token
{{- end }}
{{- else if .Values.influxdbExternal.enabled }}
{{- if .Values.api.analytics.enabled }}
{{- if .Values.influxdbExternal.enabled }}
- name: INFLUXDB_URL
value: {{ .Values.influxdbExternal.url | required "Must specify a URL for an external InfluxDB" }}
- name: INFLUXDB_BUCKET
Expand All @@ -52,6 +35,13 @@
name: {{ template "flagsmith.influxdb.fullname" . }}-external-auth
key: admin-token
{{- end }}
{{- else }}
- name: USE_POSTGRES_FOR_ANALYTICS
value: 'true'
{{- end }}
{{- else }}
- name: DISABLE_ANALYTICS_FEATURES
value: 'true'
{{- end }}
- name: DJANGO_ALLOWED_HOSTS
value: '*'
Expand Down
18 changes: 17 additions & 1 deletion charts/flagsmith/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@ api:
tag: null # defaults to .Chart.AppVersion
imagePullPolicy: IfNotPresent
imagePullSecrets: []
# Note that if setting this to false, need to set
#
# Note that if `separateApiAndFrontend` is `false`, you'll need to set
# api.image.repository to flagsmith/flagsmith (or some other
# repository hosting the image with combined frontend and backend)
# and that the image tag exists (for flagsmith/flagsmith, >=2.10.0)
Expand All @@ -19,6 +20,21 @@ api:
# (unless explicitly switched off), but both are handled by the api
# deployment's pods.
separateApiAndFrontend: true
#
# If `analytics.enabled` flag is `true`, the following database backend
# will be used for analytics, in the order of preference:
#
# 1. External InfluxDB if `influxdbExternal.enabled` set to `true`
# 2. Dedicated PostgreSQL specified by the `ANALYTICS_DATABASE_URL`
# environment variable
# 3. External PostgreSQL if `databaseExternal.enabled` set to `true`
# 4. Chart-provisioned PostgreSQL
#
# Note that you can use a dedicated PostgreSQL instance by providing the
# value for `ANALYTICS_DATABASE_URL` environment variable under the
# `extraEnvFromSecret` key.
analytics:
enabled: false
replicacount: 1
deploymentStrategy: null
podAnnotations: {}
Expand Down

0 comments on commit 653b524

Please sign in to comment.