A Helm chart that runs Grafana Mimir in all-in-one mode (-target=all, a single
process) as one pod with filesystem storage. It's a lightweight, standalone metrics
backend for dev, small, or single-node clusters where the full distributed topology is
overkill.
The official grafana/mimir-distributed chart deploys Mimir as separate microservice pods
(distributor, ingester, store-gateway, compactor, querier, …). With backend: filesystem,
each pod gets its own volume — so on a single-node cluster with ReadWriteOnce storage
(e.g. k3d local-path), the store-gateway never sees the ingester's shipped blocks and
historical queries silently return empty. Filesystem only works when one process owns one
volume — i.e. all-in-one mode, which mimir-distributed does not offer.
This chart provides exactly that: a single -target=all Mimir pod owning one volume. For
high availability, use grafana/mimir-distributed with object storage instead — the
structuredConfig values here are the same shape, so config is portable.
helm install mimir oci://ghcr.io/opsta/mimir-standalone --version <X.Y.Z>In-cluster endpoint (ClusterIP, port 8080):
| Purpose | Path |
|---|---|
| Push (remote_write) | POST http://<release>-mimir-standalone.<ns>.svc:8080/api/v1/push |
| Query (PromQL) | GET http://<release>-mimir-standalone.<ns>.svc:8080/prometheus/api/v1/query |
| Ready | GET http://<release>-mimir-standalone.<ns>.svc:8080/ready |
Multitenancy is on by default — send X-Scope-OrgID: <tenant> on every request. To pin a
fixed Service name (e.g. mimir), set fullnameOverride: mimir.
| Key | Default | Description |
|---|---|---|
image.repository / image.tag |
grafana/mimir / "" (→ appVersion) |
Mimir image |
replicas |
1 |
Keep at 1 — filesystem all-in-one is single-pod |
persistence.enabled / .storageClass / .size |
true / "" / 10Gi |
Data volume ("" = default StorageClass) |
multitenancy.enabled |
true |
Require X-Scope-OrgID |
retention |
8760h |
compactor_blocks_retention_period (0 = infinite) |
structuredConfig |
{} |
Free-form Mimir config, deep-merged over the chart defaults (same shape as mimir-distributed) |
resources |
100m/256Mi → 1/1Gi | Container resources |
extraEnv / extraEnvFrom |
[] |
Env for ${VAR} expansion in structuredConfig |
structuredConfig is deep-merged over the chart's all-in-one defaults and rendered to
/etc/mimir/mimir.yaml with -config.expand-env=true:
structuredConfig:
limits:
max_global_series_per_user: 1000000
ingestion_rate: 50000The chart is published to oci://ghcr.io/opsta/mimir-standalone on every vX.Y.Z git tag by
.github/workflows/release.yml. Chart version follows
SemVer and is taken from the tag (Chart.yaml's version is just a dev placeholder).
appVersion tracks the bundled Mimir release.