This is the main Helm umbrella chart that bundles all observability components together.
stackcharts/
├── Chart.yaml # Chart metadata and dependencies
├── values.yaml # Default configuration values
├── charts/ # Downloaded dependency packages (.tgz files)
└── README.md # This file
This chart includes the following sub-charts (managed via Chart.yaml):
- Grafana - Visualization and dashboards
- Loki - Log aggregation system
- Tempo - Distributed tracing backend
- Prometheus - Metrics collection and storage
- OpenTelemetry Collector - Telemetry data collection
Download the latest versions specified in Chart.yaml:
cd helm/stackcharts
helm dependency updateThis will:
- Read dependency specifications from
Chart.yaml - Download
.tgzpackages tocharts/directory - Update
Chart.lockwith exact versions
helm dependency listThe charts/ directory contains only .tgz files - the packaged Helm charts for each dependency. These files are:
- Automatically downloaded by
helm dependency update - Committed to version control for reproducibility
- Should not contain any other files (no README.md, documentation, etc.)
charts/ directory manually. Helm treats anything in that directory as a chart package.
This chart is deployed via ArgoCD, not directly with Helm. The installation script handles dependency updates:
./scripts/install_argo.shIf you need to install manually:
# Update dependencies first
cd helm/stackcharts
helm dependency update
# Install
helm install observability-stack . -n observability-lab --create-namespaceAll configuration is done in values.yaml. See that file for detailed options.
Key sections:
grafana:- Grafana configurationloki:- Loki configurationtempo:- Tempo configurationprometheus:- Prometheus configurationopentelemetry-collector:- OTel Collector configurationgarage:- Garage S3 object storage (disabled by default, seevalues/garage.yaml)
By default, Loki and Tempo use local filesystem storage via PersistentVolumeClaims.
To switch to S3-compatible object storage backed by Garage:
- Include
values/garage.yamlin your deployment (uncomment it inargocd/observability-stack.yaml, or add-f helm/stackcharts/values/garage.yamlto your helm command). This enables the Garage chart and switches Loki and Tempo to S3 storage in one step. - After the Garage pod is running, initialize it:
./scripts/setup_garage.sh(assigns the cluster layout, imports the S3 key and creates theloki-chunks,loki-ruler,loki-adminandtempo-tracesbuckets).
When values/garage.yaml is not included, Garage is not deployed and Loki/Tempo fall back to local filesystem storage.
S3 credentials live in the garage-credentials Kubernetes Secret (rendered from garageCredentials in values/garage.yaml). Loki and Tempo read them as environment variables via -config.expand-env=true, so the keys never appear in their ConfigMaps. Override garageCredentials for anything beyond a local lab.
If you see errors about missing charts:
cd helm/stackcharts
helm dependency updateCheck Chart.lock for the exact versions being used:
cat Chart.lockTo update to newer versions, modify Chart.yaml and run helm dependency update.
All dependency .tgz files in charts/ are committed to the repository. This ensures:
- Reproducible deployments
- No runtime dependency on external Helm repositories
- Faster installation (no downloads needed)
When updating dependencies, commit both:
Chart.lock(updated versions)charts/*.tgz(new packages)