.. | ||
.gitignore | ||
application.yml | ||
camera-tiler.yml | ||
cams.graphviz.svg | ||
ingress.yml | ||
logmower.yml | ||
mongodb-support.yml | ||
mongodb.yml | ||
mongoexpress.yml | ||
network-policies.yml | ||
networkpolicy-base.yml | ||
README.md |
Cameras
Camtiler is the umbrella name for our homegrown camera surveilance system.
Everything besides Cameras is deployed with Kubernetes.
Components
📸 Camera
Cameras are listed in application.yml as kind: Camera
.
Two types of camera hosts:
- GL-AR150 with openwrt-camera-images.
- Doors (Raspberry Pi) with mjpg-streamer.
camera-tiler (cam.k-space.ee/tiled)
Out-of-bound, connects to cameras and streams to web browser.
One instance per every camera
camera-operator
Functionally the same as a kubernetes deployment for camera-tiler.
Operator/deployer for camera-tiler.
camera-motion-detect
Connects to cameras, on motion writes events to Mongo and frames to S3.
cam.k-space.ee (logmower)
Fetches motion-detect events from mongo. Fetches referenced images from S3 (minio).
camtiler-event-broker
MitM between motion-detect -> mongo. Appends S3 URLs to the response.
Kubernetes commands
Apply changes:
kubectl apply -n camtiler \
-f application.yml \
-f minio.yml \
-f mongoexpress.yml \
-f mongodb-support.yml \
-f camera-tiler.yml \
-f logmower.yml \
-f ingress.yml \
-f network-policies.yml \
-f networkpolicy-base.yml
Deploy changes:
kubectl -n camtiler rollout restart deployment.apps/camtiler
Initialize secrets:
kubectl create secret generic -n camtiler mongodb-application-readwrite-password --from-literal="password=$(cat /dev/urandom | base64 | head -c 30)"
kubectl create secret generic -n camtiler mongodb-application-readonly-password --from-literal="password=$(cat /dev/urandom | base64 | head -c 30)"
kubectl create secret generic -n camtiler minio-secrets \
--from-literal="MINIO_ROOT_USER=root" \
--from-literal="MINIO_ROOT_PASSWORD=$(cat /dev/urandom | base64 | head -c 30)"
kubectl -n camtiler create secret generic camera-secrets \
--from-literal=username=... \
--from-literal=password=...
Restart all deployments:
for j in $(kubectl get deployments -n camtiler -o name); do kubectl rollout restart -n camtiler $j; done