tl;dr:
ruler:
storage:
s3:
bucketnames: <bucket-name>
s3: s3://<bucket-name>
endpoint: https://s3.<region>.backblazeb2.com
access_key_id: <key id>
secret_access_key: <key>
s3forcepathstyle: false
insecure: false
type: s3
If you want to use buckets with the Loki helm chart, this configuration is most likely the cleanest way to do it. The -config.expand-env=true
flag allows Loki to read config variables from env & the chart allows you to fill placeholders into the config. A secret example can also be found below.
# values.yaml
deploymentMode: SimpleScalable
loki:
storage:
bucketNames:
chunks: ${bucket}
ruler: ${bucket}
admin: ${bucket}
type: s3
s3:
endpoint: ${endpoint}
secretAccessKey: ${secretAccessKey}
accessKeyId: ${accessKeyId}
schemaConfig:
configs:
- from: 2024-04-01
object_store: s3
store: tsdb
schema: v13
index:
prefix: index_
period: 24h
# https://github.com/grafana/loki/issues/12218
# https://github.com/grafana/loki/issues/8572
backend:
extraArgs:
- -config.expand-env=true
extraEnvFrom:
- secretRef:
name: loki-objstore-secret
read:
extraArgs:
- -config.expand-env=true
extraEnvFrom:
- secretRef:
name: loki-objstore-secret
write:
extraArgs:
- -config.expand-env=true
extraEnvFrom:
- secretRef:
name: loki-objstore-secret
# secret.yaml
apiVersion: v1
kind: Secret
metadata:
name: loki-objstore-secret
type: Opaque
data:
bucket: xxx
endpoint: xxx
accessKeyId: xxx
secretAccessKey: xxx
📃 Happy Logging! :)