Add thermo history Helm chart

This commit is contained in:
Bitó Attila
2026-08-05 23:56:11 +02:00
commit 6b7dc1840d
10 changed files with 473 additions and 0 deletions

View File

@@ -0,0 +1,72 @@
apiVersion: v1
kind: ConfigMap
metadata:
name: {{ include "thermo.fullname" . }}-postgres-init
labels:
{{- include "thermo.labels" . | nindent 4 }}
data:
01-schema.sql: |
CREATE TABLE sensor_events (
event_id uuid PRIMARY KEY,
observed_at timestamptz NOT NULL,
ingested_at timestamptz NOT NULL,
source text NOT NULL,
event_type text NOT NULL,
severity text NOT NULL,
collector_id text,
device_id text NOT NULL,
raw_event jsonb NOT NULL,
stored_at timestamptz NOT NULL DEFAULT now()
);
CREATE TABLE sensor_measurements (
event_id uuid NOT NULL REFERENCES sensor_events(event_id) ON DELETE CASCADE,
observed_at timestamptz NOT NULL,
source text NOT NULL,
collector_id text,
device_id text NOT NULL,
metric_name text NOT NULL,
numeric_value double precision,
text_value text,
unit text,
source_updated_at timestamptz,
PRIMARY KEY (event_id, metric_name),
CHECK (numeric_value IS NOT NULL OR text_value IS NOT NULL)
);
CREATE INDEX sensor_events_device_time_idx
ON sensor_events (device_id, observed_at DESC);
CREATE INDEX sensor_measurements_metric_device_time_idx
ON sensor_measurements (metric_name, device_id, observed_at DESC);
CREATE INDEX sensor_measurements_time_idx
ON sensor_measurements (observed_at DESC);
CREATE VIEW grafana_sensor_measurements AS
SELECT
observed_at AS time,
source,
collector_id,
device_id,
metric_name,
numeric_value,
text_value,
unit
FROM sensor_measurements;
02-reader.sh: |
#!/bin/sh
set -eu
psql --set ON_ERROR_STOP=1 \
--username "$POSTGRES_USER" \
--dbname "$POSTGRES_DB" \
--set reader_user="$GRAFANA_USER" \
--set reader_password="$GRAFANA_PASSWORD" <<'SQL'
SELECT format('CREATE ROLE %I LOGIN PASSWORD %L', :'reader_user', :'reader_password')
WHERE NOT EXISTS (SELECT 1 FROM pg_roles WHERE rolname = :'reader_user') \gexec
GRANT CONNECT ON DATABASE {{ .Values.postgres.database }} TO :"reader_user";
GRANT USAGE ON SCHEMA public TO :"reader_user";
GRANT SELECT ON sensor_events, sensor_measurements, grafana_sensor_measurements TO :"reader_user";
ALTER DEFAULT PRIVILEGES IN SCHEMA public GRANT SELECT ON TABLES TO :"reader_user";
SQL