formerly known as qryn
This Helm chart provides Kubernetes deployment configurations for gigapipe a polyglot, lighweight, multi-standard observability framework for Logs, Metrics , Traces and Profiling designed to be drop-in compatible with Loki, Prometheus, Tempo, Pyroscope + Opentelemetry
- Kubernetes 1.19+
- Helm 3.7+
- A running ClickHouse server (optional but recommended)
Get Repository Info
helm repo add gigapipe https://metrico.github.io/gigapipe-helm/
helm repo updateSee helm repository for command documentation.
Install Chart To deploy gigapipe using this Helm chart, use the following command:
helm repo add gigapipe https://metrico.github.io/gigapipe-helm/
helm install [RELEASE_NAME] gigapipe/gigapipe --version [Helm chart version]See helm install for command documentation.
For customization, you can provide a values.yaml file or use --set flags to override specific configurations during installation.
Feel free to modify the configurations based on your requirements and environment.
Below are commonly tuned values. Refer to values.yaml for the full list.
| Key | Type | Default | Description |
|---|---|---|---|
image.repository |
string | ghcr.io/metrico/gigapipe |
Application image |
image.tag |
string | "" |
Image tag (pin in prod) |
image.pullPolicy |
string | IfNotPresent |
Pull policy |
imagePullSecrets |
list | [] |
Image pull secrets |
| Key | Type | Default | Description |
|---|---|---|---|
replicaCount |
int | 1 |
Number of replicas |
resources |
map | {} |
CPU/memory requests & limits |
nodeSelector |
map | {} |
Node selector |
tolerations |
list | [] |
Tolerations |
affinity |
map | {} |
Affinity |
podAnnotations |
map | {} |
Pod annotations |
| Key | Type | Default | Description |
|---|---|---|---|
service.type |
string | ClusterIP |
Service type |
service.port |
int | 80 |
Service port |
ingress.enabled |
bool | false |
Enable Ingress |
ingress.className |
string | "" |
Ingress class name |
ingress.hosts |
list | [] |
Hosts & paths |
ingress.tls |
list | [] |
TLS secrets |
| Key | Type | Default | Description |
|---|---|---|---|
env |
map | {} |
Plain environment variables injected directly into the container. Use this for non‑sensitive config. |
envRenderSecret |
map | {} |
Map of ENV_NAME: value pairs that the chart renders into a Secret and injects as env vars. Values support Helm templating via tpl. See Rendered Secret. |
| Key | Type | Default | Description |
|---|---|---|---|
auth.clickhouse.existingSecret |
string | "" |
Name of an existing Secret containing username/password keys. |
auth.clickhouse.userKey |
string | username |
Key in the Secret for the username. |
auth.clickhouse.passwordKey |
string | password |
Key in the Secret for the password. |
The application expects an env var
CLICKHOUSE_AUTHwith the valueuser:password. You can set it directly inenvor let the chart compose it from an existing Secret (see below).
Use envRenderSecret when you want the chart to create a Secret for sensitive env vars. Each map entry becomes a Secret key; the Deployment injects them as env vars.
Example
# values.yaml
envRenderSecret:
OAUTH_CLIENT_SECRET: "{{ .Values.oauth.clientSecret }}" # templated at render time
API_TOKEN: "s3cr3t-token"This produces a Secret (name is chart‑derived) and sets OAUTH_CLIENT_SECRET and API_TOKEN in the container environment.
Values are passed through
tplinternally — you can reference other Helm values like{{ .Release.Namespace }}.
CLICKHOUSE_AUTH must be in the form user:password. Choose one of the following approaches:
# values.yaml
env:
CLICKHOUSE_SERVER: clickhouse.default.svc
CLICKHOUSE_PORT: "8123"
CLICKHOUSE_DB: gigapipe
CLICKHOUSE_AUTH: "admin:s3cr3t"- Create (or reference) a Secret with two keys, e.g.
usernameandpassword:
apiVersion: v1
kind: Secret
metadata:
name: some-secret
namespace: gigapipe
type: Opaque
stringData:
username: admin
password: s3cr3tOr via kubectl:
kubectl -n gigapipe create secret generic some-secret \
--from-literal=username=admin \
--from-literal=password='s3cr3t'- Point the values to that Secret and omit
env.CLICKHOUSE_AUTH. The chart will setCLICKHOUSE_USER/CLICKHOUSE_PASSWORDfrom the Secret and composeCLICKHOUSE_AUTHas$(CLICKHOUSE_USER):$(CLICKHOUSE_PASSWORD).
# values.yaml
auth:
clickhouse:
existingSecret: some-secret
userKey: username
passwordKey: password
env:
CLICKHOUSE_SERVER: clickhouse.default.svc
CLICKHOUSE_PORT: "8123"
CLICKHOUSE_DB: gigapipehttps://gigapipe.com/docs/config.html#parameters
| ENV Variable | Default | Description |
|---|---|---|
CLICKHOUSE_SERVER |
localhost |
Clickhouse Server address |
CLICKHOUSE_PORT |
9000 |
Clickhouse Server port (binary) |
CLICKHOUSE_DB |
gigapipe |
Clickhouse Database Name |
CLICKHOUSE_AUTH |
default: |
Clickhouse Authentication (user:password) |
CLICKHOUSE_PROTO |
tcp |
Clickhouse Protocol (tcp, tls) |
CLICKHOUSE_TIMEFIELD |
record_datetime |
Clickhouse DateTime column for native queries |
CLUSTER_NAME |
undefined |
Clickhouse Cluster name |
STORAGE_POLICY |
undefined |
Clickhouse Cluster storage policy |
BULK_MAXAGE |
2000 |
Max Age for Bulk Inserts |
BULK_MAXSIZE |
5000 |
Max Size for Bulk Inserts |
BULK_MAXCACHE |
50000 |
Max Labels in Memory Cache |
LABELS_DAYS |
7 |
Max Days before Label rotation |
SAMPLES_DAYS |
7 |
Max Days before Timeseries rotation |
HOST |
0.0.0.0 |
HTTP API IP |
PORT |
3100 |
HTTP API PORT |
QRYN_LOGIN |
undefined |
Basic HTTP Username |
QRYN_PASSWORD |
undefined |
Basic HTTP Password |
READONLY |
false |
Readonly Mode, no DB Init |
OMIT_CREATE_TABLES |
false |
Omit database provisioning on startup. Dangerous. |
ADVANCED_PROMETHEUS_MAX_SAMPLES |
5000000 |
Max samples per a promql request |
CORS_ALLOW_ORIGIN. |
* |
CORS Allow Origin, default to any |
TEMPO_SPAN |
24 |
Default span for Tempo queries in hours |
TEMPO_TAGTRACE |
false |
Optional tagging of TraceID (expensive) |
DEBUG |
false |
Debug Mode (for backwards compatibility) |
LOG_LEVEL |
info |
Log Level |
HASH |
xxhash64 |
Hash function using for fingerprints. Currently supported short-hash and xxhash64 (xxhash64 function) |
ALERTMAN_URL |
false |
Alertmanager API URL, ie: http://my_alertmanager_url:1234 |
ADVANCED_SAMPLES_ORDERING |
timestamp_ns |
Specify the 'ORDER BY' your samples table should use (for multiple use comma-separated list fingerprint,timestamp_ns) |
BULK_MAX_SIZE_BYTE |
`` | max size of the bulk in bytes (empty = infinite) |
BULK_MAX_AGE_MS |
100 |
max age of the bulk in milliseconds. Minimum value 100ms |
MODE |
all |
all, writer, reader, init_only (init db and exit) |
SELF_SIGNED_CERT |
false |
Allow self-signed certificates |
Whether it's code, documentation or grammar, we ❤️ all contributions. Not sure where to get started?
- Join our Matrix Channel, and ask us any questions.
- Have a PR or idea? Request a session / code walkthrough with our team for guidance.
Footnotes
-
Gigapipe is a 100% clear-room api implementation and does not fork, use or derivate from Grafana code or design concepts.1 ↩
-
Gigapipe is not affiliated or endorsed by Grafana Labs or ClickHouse Inc. All rights belong to their respective owners.2 ↩
-
Grafana®, Loki™ and Tempo® are a Trademark of Raintank, Grafana Labs. ClickHouse® is a trademark of ClickHouse Inc.3 ↩
