Deployment Guide
December 15, 2025 ยท View on GitHub
This guide explains how to deploy the CAMARA IoT Network Optimization API to a Kubernetes cluster using Helm.
Prerequisites
- A Kubernetes cluster with Knative Eventing installed.
- RabbitMQ Cluster and Knative RabbitMQ Controller (the Helm chart uses
RabbitMQBroker). - Helm 3.0+ installed locally.
- MongoDB running in the cluster (or accessible from it).
Build Images
Before deploying, you need to build the Docker images for the microservices.
# Build API
docker build -f build/package/docker/api.Dockerfile -t your-registry/iot-api:latest .
# Build Scheduler
docker build -f build/package/docker/scheduler.Dockerfile -t your-registry/iot-scheduler:latest .
# Build Worker
docker build -f build/package/docker/worker.Dockerfile -t your-registry/iot-worker:latest .
# Build Notifier
docker build -f build/package/docker/notifier.Dockerfile -t your-registry/iot-notifier:latest .
# Push images
docker push your-registry/iot-api:latest
# ... repeat for others
Helm Deployment
The project includes a Helm chart in deploy/helm/api.
1. Configure Values
Create a my-values.yaml file to override the defaults.
# my-values.yaml
# Image configuration
image:
repository: your-registry
tag: latest
pullPolicy: Always
# Database Connection
database:
uri: "mongodb://username:password@mongo-service:27017"
name: "iot_db"
# 3GPP API Configuration
easyAPI:
baseUrl: "http://nef-service.telecom.com" # Leave empty to use internal Dummy client
# Power Saving Parameters
powerSaving:
maxLatency: "100"
maxResponseTime: "200"
# Data Retention
retention:
period: "168h" # 7 days
cleanupInterval: "1h"
2. Install Chart
helm install iot-api ./deploy/helm/api \
--namespace camara-iot \
--create-namespace \
-f my-values.yaml
3. Verify Deployment
Check that all pods are running:
kubectl get pods -n camara-iot
You should see pods for:
iot-apiiot-scheduleriot-workeriot-notifier
Check that the Knative triggers are ready:
kubectl get triggers -n camara-iot
Local Development (Kind/Minikube)
For local testing, you can use the provided sinkreceiver to mock the 3GPP API and the callback receiver.
-
Install MongoDB:
helm install mongo oci://registry-1.docker.io/bitnamicharts/mongodb -n camara-iot -
Deploy the API with Dummy Mode: Set
easyAPI.baseUrlto""(empty string) or point it to thesinkreceiverservice if you deploy it.helm install iot-api ./deploy/helm/api \ --namespace camara-iot \ --set database.uri="mongodb://root:password@mongo-mongodb.camara-iot.svc.cluster.local:27017" \ --set easyAPI.baseUrl=""