Deploying Splunk Observability Cloud on Raspberry Pi 5 with MicroK8s and Helm
This article provides a technical guide for deploying the open-source OpenTelemetry Demo application with the Splunk OpenTelemetry Collector on a Raspberry Pi 5 using MicroK8s and Helm.
The deployment enables streaming of critical metrics, traces, and logs to Splunk Observability Cloud without requiring application code modifications. This setup demonstrates the versatility of lightweight Kubernetes distributions and Splunk OpenTelemetry in extending full-stack observability to compact, edge environments, and can be adapted to monitor your own custom applications running on your Raspberry Pi.
The Raspberry Pi 5 is ideal for its affordability and compact form factor, suitable for running lightweight Kubernetes clusters with MicroK8s. Helm is used to simplify application deployment and configuration management.
Configuration files are available in the GitHub repository https://github.com/Heathbarj/SplunkOtelDemoHelm. The YAML files here allow the OpenTelemetry Demo application to be set up with the Splunk OpenTelemetry Collector, making it easier for you to deploy and get instant results.
Prerequisites
- Hardware: Raspberry Pi 5 (8GB RAM recommended) for optimal performance
- Operating System: Ubuntu Server 64-bit for Raspberry Pi
- Storage: High-quality microSD card (32GB or larger, Class 10) or NVMe SSD via PCIe slot for improved I/O
- Network: Stable power supply and preferably Ethernet connectivity
- Access: SSH access to the Raspberry Pi
- Skills: Basic familiarity with Linux command line, Git, Kubernetes, and Helm
1. Obtain Splunk Observability Cloud trial
Register for a free 14-day trial at Splunk Observability Cloud Trial. You should make a note of the assigned Splunk realm (for example, us0, eu0) and access token for later use.
If you need help locating your access token, see Create and manage organization access tokens using Splunk Observability Cloud. If you need help locating your realm, see View your realm, API endpoints, and organization.
2. Prepare Raspberry Pi 5
If Kubernetes is already installed on the target environment, you can skip all of the subtasks in this step and move to step 3.
2.1 Install Ubuntu Server
Install Ubuntu Server 64-bit on the Raspberry Pi 5 using the Raspberry Pi Imager. You'll need to enable SSH for remote access during setup.
2.2 Update system packages
Copy the following into your Linux command shell to ensure your system is up-to-date with the latest updates.
sudo apt update && sudo apt upgrade -y
2.3 Enable cgroups for MicroK8s
MicroK8s, like other Kubernetes distributions, requires cgroups to be enabled for proper resource management. This is a critical step for Raspberry Pi devices.
Edit cmdline.txt to enable memory cgroups:
sudo nano /boot/firmware/cmdline.txt
Append cgroup_enable=memory cgroup_memory=1
to the existing line without line breaks. It should look like this:
Save and exit using Ctrl+X, Y, and enter.
Reboot the device to apply changes:
sudo reboot
2.4 Install MicroK8s
Install MicroK8s via snap:
sudo snap install microk8s --classic
Add the current user to the MicroK8s group. This allows you to run Microk8s and kubectl commands without sudo:
sudo usermod -a -G microk8s $USER
newgrp microk8s
You might need to log out and log back in (or reboot) for the group changes to take full effect.
Configure kubectl access:
mkdir -p ~/.kube
microk8s config > ~/.kube/config
chmod 600 ~/.kube/config
For convenience, you can also create an alias. This ensures that when you type "kubectl", it uses the Microk8s version:
echo "alias kubectl='microk8s kubectl'" >> ~/.bashrc
source ~/.bashrc
Enable the Helm 3 addon. While Helm3 might be enabled by default, explicitly enabling it ensures it's definitely available:
microk8s enable helm3
Finally, verify that MicroK8s is installed and ready. The Microk8s status --wait-ready
command waits until all core Kubernetes services are initialized. You should see your Raspberry Pi listed as a ready node:
microk8s status --wait-ready
kubectl get nodes
3. Add Helm repositories and deploy components
Add the required Helm repositories:
microk8s helm repo add splunk-otel-collector-chart https://signalfx.github.io/splunk-otel-collector-chart
microk8s helm repo add open-telemetry https://open-telemetry.github.io/opentelemetry-helm-charts
3.1 Install Splunk OpenTelemetry Collector
Replace YOURACCESSTOKEN
and REALM
with the values you noted from step 1.
microk8s helm install splunk-otel-collector \
--set "splunkObservability.accessToken=YOURACCESSTOKEN" \
--set "clusterName=PI" \
--set "splunkObservability.realm=REALM" \
--set "gateway.enabled=false" \
--set "splunkObservability.profilingEnabled=true" \
--set "environment=MyLabName" \
--set "operatorcrds.install=true" \
--set "operator.enabled=true" \
--set "agent.discovery.enabled=true" \
splunk-otel-collector-chart/splunk-otel-collector \
-f https://raw.githubusercontent.com/Heathbarj/SplunkOtelDemoHelm/refs/heads/main/splunk-otel-collector-values.yaml
3.2 Install the OpenTelemetry Demo application
The OpenTelemetry Demo is an e-commerce application that provides a realistic example of a distributed system that can be used to demonstrate OpenTelemetry instrumentation and observability.
microk8s helm install otel-demo open-telemetry/opentelemetry-demo --set components.frontend-proxy.service.type=NodePort --set components.frontend-proxy.service.nodePort=30080 --set opentelemetry-collector.enabled=false -f https://raw.githubusercontent.com/Heathbarj/SplunkOtelDemoHelm/refs/heads/main/otel-demo-values.yaml
4. Verify your deployment and access your data
- Check pod status:
microk8s kubectl get pods -n default # Or the namespace specified in the chart
Wait until all pods are in Running or Completed state. This might take a few minutes as Docker images are pulled and containers start.
- Log in to Splunk Observability Cloud.
- Navigate to Infrastructure Monitoring to view metrics from the Raspberry Pi cluster and demo application. It might take a few minutes for data points to appear.
- Access APM to analyze application traces.
You've now successfully deployed a demo application sending rich observability data to Splunk Observability Cloud, orchestrated from your Raspberry Pi 5 using MicroK8s and Helm.
Finally, if you want to access the application UI from your browser, forward the front-end proxy port to local machine:
IP_ADDRESS=$(hostname -I | awk '{print $1}')
kubectl --address $IP_ADDRESS --namespace default port-forward svc/frontend-proxy 8080:8080
Access the demo application in a browser at https://PI_IP_ADDRESS
, replacing PI_IP_ADDRESS
with the Raspberry Pi's IP address.
Uninstallation
To remove the deployed components:
microk8s helm uninstall otel-demo
microk8s helm uninstall splunk-otel-collector