Grafana Mimir¶
Grafana Mimir provides Prometheus-compatible, long-term metrics storage. Big
Bang deploys the mimir-distributed chart as the mimir release in the
mimir namespace. Configure the package through the umbrella addons.mimir
entry; package-specific values are supplied beneath addons.mimir.values.
Configuration¶
The package passes addons.mimir.values.upstream to the upstream
mimir-distributed chart. Refer to the
upstream chart values for version 6.2.1
for its complete configuration surface.
Big Bang defaults to the classic gRPC ingest path. To use the Kafka-backed
ingest-storage path, configure the umbrella-owned
addons.mimir.kafkaIngestStorage settings, including the broker endpoint and,
when network policies are enabled, its network CIDR. The package enables ingest
storage and disables the classic gRPC push path together. Use a production
Kafka service for production workloads; the bundled Kafka image is intended for
testing only.
Storage and availability¶
Mimir uses filesystem storage by default, which is suitable only for temporary
or evaluation use. For durable metrics, configure the umbrella-owned
addons.mimir.s3ObjectStorage settings for an S3-compatible backend. The
umbrella creates and supplies storage credentials when access and secret keys
are provided; workload-identity users can leave those keys blank and configure
the service-account annotations through addons.mimir.serviceAccountAnnotations.
The package supports upstream zone-aware replication through the passthrough
values. Its rollout operator protects zone-aware workloads, but Big Bang sets
the webhook failure policy to Ignore to prevent GitOps upgrade deadlocks.
When that webhook is unavailable, its zone-aware safety checks are bypassed, so
operators should keep it healthy and follow the package
6.x upgrade guidance before changing replication or upgrading
from earlier releases.
Integrations and network access¶
Prometheus and Alloy can send metrics to the Mimir API, and Grafana can query Mimir as a datasource. When the corresponding Big Bang packages are enabled, the umbrella configures their required network-policy access and enables Mimir monitoring and Grafana dashboard integration.
For Alloy remote writes through a separately deployed Cortex Tenant proxy, enable
addons.mimir.values.networkPolicies.ingress.to.mimir-distributor:8080.from.k8s.cortex-tenant/cortex-tenant.
The package defines this distributor rule with the correct pod selector but keeps
it disabled by default. Cortex Tenant must forward writes with X-Scope-OrgID.
With Istio enabled, Big Bang adds the package resources required for Mimir’s
internal gRPC and memberlist traffic. Add external object-storage or Kafka
destinations through the package’s istio.serviceEntries.custom value. For
Kafka configured through addons.mimir.kafkaIngestStorage, the umbrella can
also render the required broker routes from its broker host and cluster-domain
settings. Ensure any external endpoint is permitted by both Istio and the
selected network-policy configuration.
Mimir’s gateway route is disabled by default. Enable and configure
routes.inbound.mimir-gateway only when an external API endpoint is required;
Mimir does not provide a general-purpose web UI.
Granting Egress to Blocked Services¶
Configuring object storage does not grant network access to its API. Block, ruler, and alertmanager storage can use different endpoints; S3 virtual-hosted bucket requests and workload identity can also require hosts beyond the base storage endpoint. Kafka clients need the advertised broker destinations, not only their bootstrap host. Review the actual selected backend and identity path.
In sidecar mode, traffic captured by a proxy with effective REGISTRY_ONLY
policy can be denied if its destination is unregistered. The chart exposes
istio.sidecar.outboundTrafficPolicyMode; rendering a Sidecar does not inject a
proxy. Check namespace enrollment, pod injection, and capture exceptions first.
Discovering Blocked Hosts¶
Confirm the intended kubeconfig and list Mimir pods using their default label:
kubectl -n mimir get pods -l app.kubernetes.io/name=mimir --show-labels
Use the failing component’s application errors to identify the endpoint. Select a pod making that request, such as an ingester or store-gateway for block storage, rather than assuming the gateway or rollout operator makes it:
SOURCE_POD="replace-with-failing-component-pod-name"
kubectl -n mimir get pod "$SOURCE_POD" \
-o jsonpath='{.spec.containers[*].name}{"\n"}{.spec.initContainers[*].name}{"\n"}'
If it has an istio-proxy, inspect recent proxy logs during the failed request:
kubectl -n mimir logs "$SOURCE_POD" -c istio-proxy --since=10m \
| grep -i 'BlackHoleCluster'
With proxy access logging enabled, BlackHoleCluster entries can help identify
unregistered destinations. No match does not establish reachability: check DNS,
NetworkPolicies, TLS trust, storage credentials, and backend permissions too.
In ambient mode there may be no pod proxy; inspect the relevant ztunnel/waypoint
path using the umbrella’s
ambient guidance.
Redact credentials, signed URLs, and sensitive metric metadata before sharing logs.
Registering External Destinations¶
These umbrella values register one HTTPS object-storage endpoint. Replace the example with the host actually used by the client; register additional required bucket or identity hosts deliberately, not with a broad cloud wildcard:
addons:
mimir:
values:
istio:
enabled: true
serviceEntries:
custom:
- name: object-storage
spec:
hosts:
- storage.example.com
exportTo: ["."]
location: MESH_EXTERNAL
resolution: DNS
ports:
- number: 443
name: https
protocol: TLS
The mesh and its APIs must already be available; this does not enable injection
or configure Mimir’s storage backend. Direct chart values start at istio.
The custom array replaces existing entries, so preserve those still needed.
For Kafka, prefer the umbrella broker-route integration described above and
verify its rendered hosts against broker-advertised addresses and ports.
Mesh registration does not grant destination IP/port access through enabled
NetworkPolicies. Review the affected component’s networkPolicies.egress rules,
DNS access, and endpoint IP changes separately. Do not change to ALLOW_ANY or
broad internet egress as a routine fix. Commit narrowly scoped changes through
GitOps, then verify backend operations and ingestion/query health with synthetic
metrics; a rendered ServiceEntry is not proof of storage durability.
See the bundled bb-common 1.6.1
Istio
and NetworkPolicy
guides; match the version to Chart.yaml.