# Cameras Camtiler is the umbrella name for our homegrown camera surveilance system. Everything besides [Camera](#camera)s is deployed with Kubernetes. ## Components ![cameras.graphviz.svg](cameras.graphviz.svg) ### 📸 Camera Cameras are listed in [application.yml](application.yml) as `kind: Camera`. Two types of camera hosts: - GL-AR150 with [openwrt-camera-images](https://git.k-space.ee/k-space/openwrt-camera-image). - [Doors](https://wiki.k-space.ee/e/en/hosting/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 ```