Add thermo history Helm chart
This commit is contained in:
72
templates/postgres-init-configmap.yaml
Normal file
72
templates/postgres-init-configmap.yaml
Normal 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
|
||||
Reference in New Issue
Block a user