Пример, для storage=filesystem, с доменом loki.dev.domain.com и с ограничением по ip 1.1.1.1 и 2.2.2.2, с установкой на ноду с Taints: sku=monitoring:NoSchedule, Labels: sku=monitoring и харением логов 30 дней
helm -n monitoring upgrade --create-namespace --install loki grafana/loki \
--set global.extraArgs='["-log.format=json"]' \
--set loki.commonConfig.replication_factor=1 \
--set-json loki.schemaConfig='{"configs":[{"from":"2025-01-01","index":{"period":"24h","prefix":"loki_index_"},"object_store":"filesystem","schema":"v13","store":"tsdb"}]}' \
--set loki.compactor.retention_enabled=true \
--set loki.compactor.delete_request_store=filesystem \
--set loki.pattern_ingester.enabled=true \
--set loki.limits_config.retention_period=740h \
--set loki.limits_config.allow_structured_metadata=true \
--set loki.limits_config.volume_enabled=true \
--set loki.ruler.enable_api=true \
--set loki.auth_enabled=false \
--set loki.storage.type=filesystem \
--set gateway.ingress.enabled=true \
--set gateway.ingress.ingressClassName=nginx \
--set-json gateway.ingress.annotations='{"cert-manager.io/cluster-issuer":"letsencrypt","nginx.ingress.kubernetes.io/whitelist-source-range":"1.1.1.1,8.8.8.8"}' \
--set-json gateway.ingress.hosts='[{"host":"loki.dev.domain.com","paths":[{"path":"/","pathType":"Prefix"}]}]' \
--set-json gateway.ingress.tls='[{"hosts":["loki.dev.domain.com"],"secretName":"loki-gateway-tls"}]' \
--set deploymentMode=SingleBinary --set singleBinary.replicas=1 \
--set singleBinary.resources.requests.memory=500Mi --set singleBinary.resources.requests.cpu=50m --set singleBinary.resources.limits.memory=2Gi --set singleBinary.resources.limits.cpu=1 \
--set-json singleBinary.tolerations='[{ "key": "sku", "operator": "Equal", "value": "monitoring", "effect": "NoSchedule"}]' \
--set-json singleBinary.nodeSelector='{ "sku":"monitoring" }' \
--set-json lokiCanary.tolerations='[{ "key": "sku", "operator": "Equal", "value": "monitoring", "effect": "NoSchedule"}]' \
--set-json lokiCanary.nodeSelector='{ "sku":"monitoring" }' \
--set-json gateway.tolerations='[{ "key": "sku", "operator": "Equal", "value": "monitoring", "effect": "NoSchedule"}]' \
--set-json gateway.nodeSelector='{ "sku":"monitoring" }' \
--set-json resultsCache.tolerations='[{ "key": "sku", "operator": "Equal", "value": "monitoring", "effect": "NoSchedule"}]' \
--set-json resultsCache.affinity='{ "nodeAffinity": { "requiredDuringSchedulingIgnoredDuringExecution": { "nodeSelectorTerms": [{ "matchExpressions": [{ "key": "sku", "operator": "In", "values": ["monitoring"] }]}]}}}' \
--set-json chunksCache.tolerations='[{ "key": "sku", "operator": "Equal", "value": "monitoring", "effect": "NoSchedule"}]' \
--set-json chunksCache.affinity='{ "nodeAffinity": { "requiredDuringSchedulingIgnoredDuringExecution": { "nodeSelectorTerms": [{ "matchExpressions": [{ "key": "sku", "operator": "In", "values": ["monitoring"] }]}]}}}' \
--set backend.replicas=0 --set read.replicas=0 --set write.replicas=0 --set ingester.replicas=0 --set querier.replicas=0 --set queryFrontend.replicas=0 --set queryScheduler.replicas=0 --set distributor.replicas=0 --set compactor.replicas=0 --set indexGateway.replicas=0 --set bloomCompactor.replicas=0 --set bloomGateway.replicas=0 \
--atomic
для storage=s3 (minio), заменить:
--set-json loki.schemaConfig='{"configs":[{"from":"2025-01-01","index":{"period":"24h","prefix":"loki_index_"},"object_store":"filesystem","schema":"v13","store":"tsdb"}]}' \
--set loki.compactor.delete_request_store=filesystem \
--set loki.storage.type=filesystem \
на:
--set-json loki.schemaConfig='{"configs":[{"from":"2025-01-01","index":{"period":"24h","prefix":"loki_index_"},"object_store":"s3","schema":"v13","store":"tsdb"}]}' \
--set minio.enabled=true \