External S3 support for loki
What does this MR do and why?
Closes: #2195 (closed)
This MR enables the option to configure an external S3 endpoint for Loki .
Tested with localstack-s3 :
values.yaml:
logging:
loki:
storageConfig:
bucketNames:
chunks: "loki-chunks"
ruler: "loki-ruler"
admin: "loki-admin"
s3:
endpoint: "172.18.0.2:4566"
accessKeyId: "test"
secretAccessKey: "test"
region: "us-east-1"
s3ForcePathStyle: true
insecure: truecluster resources:
root@dev:/opt/sylva-core (loki-s3)# kubectl get pods -A | grep -E "loki|minio-logging"
loki loki-backend-0 2/2 Running 0 92m
loki loki-chunks-cache-0 2/2 Running 0 130m
loki loki-gateway-9c6465cf4-fmw7z 1/1 Running 0 130m
loki loki-read-55c9f8f854-8t5xm 1/1 Running 0 92m
loki loki-results-cache-0 2/2 Running 0 130m
loki loki-write-0 1/1 Running 0 87m
root@dev:/opt/sylva-core (loki-s3)# kubectl get kustomization -n sylva-system | grep -E "minio-logging"
root@dev:/opt/sylva-core (loki-s3)# kubectl get helmrelease -n sylva-system loki -o jsonpath='{.spec.values.loki.storage}' | jq .
{
"bucketNames": {
"admin": "loki-admin",
"chunks": "loki-chunks",
"ruler": "loki-ruler"
},
"s3": {
"accessKeyId": "test",
"endpoint": "172.18.0.2:4566",
"insecure": true,
"region": "us-east-1",
"s3ForcePathStyle": true,
"secretAccessKey": "test"
}
}
root@dev:/opt/sylva-core (loki-s3)# docker exec test-localstack-s3 awslocal s3 ls
2026-02-02 14:50:07 loki-chunks
2026-02-02 14:50:07 loki-ruler
2026-02-02 14:50:08 loki-admin
root@dev:/opt/sylva-core (loki-s3)# docker exec test-localstack-s3 awslocal s3 ls s3://loki-chunks --recursive | head -20
2026-02-02 15:00:30 135 index/delete_requests/delete_requests.gz
2026-02-02 16:01:30 4893 index/loki_index_20486/1770047130-loki-write-0-1770041863731932653.tsdb.gz
2026-02-02 16:16:30 3999 index/loki_index_20486/1770048030-loki-write-0-1770041863731932653.tsdb.gz
2026-02-02 15:55:36 19174 index/loki_index_20486/management-cluster/1770047736246427051-compactor-1770042251278-1770045265840-15004964.tsdb.gz
2026-02-02 15:50:59 1345 management-cluster/1027ff3c1451d479/19c1ef0fb13:19c1ef0fb14:f5b77d96
2026-02-02 15:37:44 6296 management-cluster/108aa4f2644ae1e4/19c1ec0b6d4:19c1ee4a17a:1f292031
2026-02-02 16:26:42 6116 management-cluster/11841d843dbc3ba8/19c1ebde07f:19c1f2d1342:7fffb845
2026-02-02 15:18:49 1339 management-cluster/120627c10bb8472e/19c1ebdee0f:19c1ed39914:a91b3770
2026-02-02 15:34:09 3247 management-cluster/12dc49d5efd67799/19c1eda07f6:19c1edaa481:1dbe6a11
2026-02-02 15:42:30 1678 management-cluster/13938f70bee44db6/19c1ec01ebf:19c1ee9524e:6b925bc3
2026-02-02 15:30:54 2199 management-cluster/13a2b265056ee4ad/19c1ed762ab:19c1ed76374:a0671e73
2026-02-02 15:36:36 2881 management-cluster/1408378e5da5eae2/19c1ebd63db:19c1ee406e0:5cb29ec9
2026-02-02 15:01:07 1324 management-cluster/1512d1166a7d12ed/19c1ebec59d:19c1ebec59e:fd01f505
2026-02-02 15:34:43 1286 management-cluster/167cb66e2f5849c1/19c1ede6e63:19c1ede6e64:7d5db0fa
2026-02-02 15:01:10 2390 management-cluster/171bee94639400bc/19c1ebe0969:19c1ebe096a:4bff7e6d
2026-02-02 15:03:11 1398 management-cluster/18649e548faad75a/19c1ebfaf3a:19c1ec52d7b:ec047300
2026-02-02 16:02:56 1331 management-cluster/18649e548faad75a/19c1efc1bfa:19c1efc1bfb:4d60c675
2026-02-02 16:26:18 5208 management-cluster/187c7fa49722e63b/19c1ebdacc4:19c1f2cbce7:5492c0aa
2026-02-02 16:17:27 1263 management-cluster/18fc8821c05adc8/19c1f0948e6:19c1f0948e7:8e88de21
2026-02-02 15:04:42 1543 management-cluster/19651c0b78ab4165/19c1ec6d2df:19c1ec6d2e1:bc6d3a3dRelated reference(s)
Test coverage
CI configuration
Below you can choose test deployment variants to run in this MR's CI.
Click to open to CI configuration
Legend:
| Icon | Meaning | Available values |
|---|---|---|
| Infra Provider | capd, capo, capm3 |
|
| Bootstrap Provider | kubeadm (alias kadm), rke2, okd, ck8s |
|
| Node OS | ubuntu, suse, na, leapmicro |
|
| Deployment Options | light-deploy, dev-sources, ha, misc, maxsurge-0, logging, no-logging, cilium |
|
| Pipeline Scenarios | Available scenario list and description | |
| Enabled units | Any available units name, by default apply to management and workload cluster. Can be prefixed by mgmt: or wkld: to be applied only to a specific cluster type |
|
| Target platform | Can be used to select specific deployment environment (i.e real-bmh for capm3 ) |
-
🎬 preview☁️ capd🚀 kadm🐧 ubuntu -
🎬 preview☁️ capo🚀 rke2🐧 suse -
🎬 preview☁️ capm3🚀 rke2🐧 ubuntu -
☁️ capd🚀 kadm🛠️ light-deploy🐧 ubuntu -
☁️ capd🚀 rke2🛠️ light-deploy🐧 suse -
☁️ capo🚀 rke2🛠️ logging🐧 suse -
☁️ capo🚀 rke2🐧 leapmicro -
☁️ capo🚀 kadm🐧 ubuntu -
☁️ capo🚀 kadm🐧 ubuntu🟢 neuvector,mgmt:harbor -
☁️ capo🚀 rke2🎬 rolling-update🛠️ ha🐧 ubuntu -
☁️ capo🚀 kadm🎬 wkld-k8s-upgrade🐧 ubuntu -
☁️ capo🚀 rke2🎬 rolling-update-no-wkld🛠️ ha🐧 suse -
☁️ capo🚀 rke2🎬 sylva-upgrade🛠️ ha🐧 ubuntu -
☁️ capo🚀 rke2🎬 sylva-upgrade-from-1.6.x🛠️ ha,misc🐧 ubuntu -
☁️ capo🚀 rke2🛠️ ha,misc🐧 ubuntu -
☁️ capo🚀 rke2🛠️ ha,misc,openbao:penguin: suse -
☁️ capo🚀 rke2🐧 suse🎬 upgrade-from-prev-tag -
☁️ capm3🚀 rke2🛠️ logging🎬 sylva-upgrade🐧 suse -
☁️ capm3🚀 kadm🐧 ubuntu -
☁️ capm3🚀 ck8s🐧 ubuntu -
☁️ capm3🚀 kadm🎬 rolling-update-no-wkld🛠️ ha,misc🐧 ubuntu -
☁️ capm3🚀 rke2🎬 wkld-k8s-upgrade🛠️ ha🐧 suse -
☁️ capm3🚀 kadm🎬 rolling-update🛠️ ha🐧 ubuntu -
☁️ capm3🚀 rke2🎬 upgrade-from-prev-release-branch🛠️ ha🐧 suse -
☁️ capm3🚀 rke2🛠️ misc,ha🐧 suse -
☁️ capm3🚀 rke2🎬 sylva-upgrade🛠️ ha,misc🐧 suse -
☁️ capm3🚀 kadm🎬 rolling-update🛠️ ha🐧 suse -
☁️ capm3🚀 ck8s🎬 rolling-update🛠️ ha🐧 ubuntu -
☁️ capm3🚀 rke2|okd🎬 no-update🐧 ubuntu|na -
☁️ capm3🚀 rke2🐧 suse🎬 upgrade-from-release-1.5 -
☁️ capm3🚀 rke2🐧 suse🎬 upgrade-to-main
Global config for deployment pipelines
-
autorun pipelines
-
allow failure on pipelines
-
record sylvactl events
Notes:
- Enabling
autorunwill make deployment pipelines to be run automatically without human interaction - Disabling
allow failurewill make deployment pipelines mandatory for pipeline success. - if both
autorunandallow failureare disabled, deployment pipelines will need manual triggering but will be blocking the pipeline
Be aware: after configuration change, pipeline is not triggered automatically. Please run it manually (by clicking the run pipeline button in Pipelines tab) or push new code.
Edited by Thomas Morin