Recipe: Kubernetes Log Ingestion
Use the Helm chart to run the agent on each node and the dashboard in-cluster.
The Helm chart runs blazerules_agent as a DaemonSet and blazerules_dashboard as a Deployment.
Install
helm install blazerules ./charts/blazerules \
--set image.repository=your-registry/blazerules \
--set image.tag=0.1.0Python equivalent: run Helm from a deployment script
import subprocess
subprocess.run([
"helm", "install", "blazerules", "./charts/blazerules",
"--set", "image.repository=your-registry/blazerules",
"--set", "image.tag=0.1.0",
], check=True)Default agent input:
agent:
enabled: true
mode: daemonset
input:
type: file_tail
path: /var/log/containers/blazerules.log
output:
type: ndjson
path: /var/log/blazerules/decisions.ndjsonCustom Values
image:
repository: ghcr.io/your-org/blazerules
tag: 0.1.0
agent:
batchSize: 4096
flushMs: 250
input:
type: file_tail
path: /var/log/containers/checkout.log
output:
type: ndjson
path: /var/log/blazerules/decisions.ndjson
dedupe:
enabled: true
keyFields: [event_id]
ttlSeconds: 3600
dashboard:
enabled: true
service:
type: ClusterIP
decisionLogPath: /var/log/blazerules/decisions.ndjson
deadLetterLogPath: /var/log/blazerules/dead_letters.ndjson
persistence:
enabled: true
size: 20GiApply:
helm upgrade --install blazerules ./charts/blazerules -f values.yamlPython equivalent: upgrade from a deployment script
import subprocess
subprocess.run([
"helm", "upgrade", "--install", "blazerules",
"./charts/blazerules",
"-f", "values.yaml",
], check=True)Notes
- Keep the dashboard behind internal access controls. It has no built-in auth.
- Enable persistence if you need decision/DLQ files after pod restart.
- For cloud object storage, supply AWS profile/region/endpoint credentials through environment variables or your platform secret mechanism.