A Helm chart for deploying a single-node TimescaleDB (OSS) instance for use with NBomber Studio.
This chart deploys:
- A single-node TimescaleDB (OSS) StatefulSet
- A ClusterIP service for internal access
- Optional secret management for PostgreSQL credentials
- Persistent storage for database data
It is designed for simplicity and can be used in development, testing, or production environments.
Add repository
helm repo add timescale https://pragmaticflow.github.io/nbomber-timescale-helm/Install chart
helm install nbomber-timescale timescale/timescale- Kubernetes 1.20+
- Helm 3+
- Sufficient resources for PostgreSQL:
- At least 2Gi memory for testing
- At least 4Gi memory limit recommended for heavier workloads
By default, this installs a TimescaleDB instance with:
nb_studio_dbdatabasetimescaledbuser- 10Gi persistent volume
Note: You must provide either
postgresql.passwordorpostgresql.existingSecret.
The following table lists the configurable parameters of the chart and their default values:
| Parameter | Description | Default |
|---|---|---|
image.repository |
Docker image repository | timescale/timescaledb |
image.tag |
Docker image tag (defaults to Chart appVersion) | "" |
image.pullPolicy |
Image pull policy | IfNotPresent |
resources.requests.memory |
Memory request for the pod | 2Gi |
resources.limits.memory |
Memory limit for the pod | 4Gi |
service.type |
Kubernetes service type | ClusterIP |
service.port |
Service port | 5432 |
service.annotations |
Annotations to add to the Service resource | {} |
persistence.size |
Persistent volume size | 10Gi |
persistence.storageClass |
Storage class for PVC | "" |
postgresql.user |
PostgreSQL username | timescaledb |
postgresql.database |
PostgreSQL database | nb_studio_db |
postgresql.config.max_connections |
Maximum concurrent database connections | 300 |
postgresql.password |
PostgreSQL password (required if no existingSecret) | "" |
postgresql.existingSecret |
Use an existing secret for credentials | "" |
nameOverride |
Override chart name | "" |
fullnameOverride |
Override full resource name | "" |
nodeSelector |
Node selector for pod scheduling | {} |
affinity |
Pod affinity rules | {} |
tolerations |
Pod tolerations | [] |
You can override any of these values in a values.yaml file:
postgresql:
user: timescaledb
database: nb_studio_db
password: supersecretpassword
persistence:
size: 10GiYou can also add custom annotations to the Service, for example to configure an external load balancer or monitoring scraping:
service:
annotations:
prometheus.io/scrape: "true"
prometheus.io/port: "5432"Additionally you can attach your own secret or create a new one:
kubectl create secret generic my-timescale-credentials \
--from-literal=postgres-password=SuperSecret123 postgresql:
existingSecret: "my-timescale-credentials"
user: timescaledb
database: nb_studio_db
password: ""