diff --git a/metro-ai-suite/metro-vision-ai-app-recipe/compose-scenescape.yml b/metro-ai-suite/metro-vision-ai-app-recipe/compose-scenescape.yml index 3b5371d10..1f716932e 100644 --- a/metro-ai-suite/metro-vision-ai-app-recipe/compose-scenescape.yml +++ b/metro-ai-suite/metro-vision-ai-app-recipe/compose-scenescape.yml @@ -57,10 +57,11 @@ services: networks: - scenescape volumes: - - ./${SAMPLE_APP}/src/node-red/flows.json:/tmp/flows.json + - ./${SAMPLE_APP}/src/node-red/flows.json:/data/flows.json - ./${SAMPLE_APP}/src/node-red/flows_cred.json:/tmp/flows_cred.json - - ./${SAMPLE_APP}/src/node-red/settings.js:/tmp/settings.js - - ./${SAMPLE_APP}/src/node-red/install_package.sh:/tmp/install_package.sh + - ./${SAMPLE_APP}/src/node-red/settings.js:/data/settings.js + - ./${SAMPLE_APP}/src/node-red/install_package.sh:/data/install_package.sh + - node-red-node-modules:/usr/src/node-red/node_modules secrets: - influxdb2-admin-token - root-cert @@ -75,11 +76,9 @@ services: "/bin/bash", "-e", "-c", - "cp /tmp/flows.json /data/flows.json && \ - cp /tmp/settings.js /data/settings.js && \ - cp /tmp/flows_cred.json /data/flows_cred.json && \ + "cp /tmp/flows_cred.json /data/flows_cred.json && \ sed -i \"s//$(cat /run/secrets/influxdb2-admin-token)/g\" /data/flows_cred.json && \ - bash /tmp/install_package.sh && \ + bash /data/install_package.sh && \ /usr/src/node-red/entrypoint.sh", ] restart: on-failure:5 @@ -167,9 +166,9 @@ services: devices: - "/dev/dri:/dev/dri" device_cgroup_rules: - - 'c 189:* rmw' - - 'c 209:* rmw' - - 'a 189:* rwm' + - "c 189:* rmw" + - "c 209:* rmw" + - "a 189:* rwm" group_add: - "109" - "110" @@ -398,3 +397,4 @@ volumes: pgserver-db: pgserver-migrations: pgserver-media: + node-red-node-modules: diff --git a/metro-ai-suite/metro-vision-ai-app-recipe/compose-without-scenescape.yml b/metro-ai-suite/metro-vision-ai-app-recipe/compose-without-scenescape.yml index 3cb2c3848..58ffb787e 100644 --- a/metro-ai-suite/metro-vision-ai-app-recipe/compose-without-scenescape.yml +++ b/metro-ai-suite/metro-vision-ai-app-recipe/compose-without-scenescape.yml @@ -49,9 +49,9 @@ services: - "110" - "992" device_cgroup_rules: - - 'c 189:* rmw' - - 'c 209:* rmw' - - 'a 189:* rwm' + - "c 189:* rmw" + - "c 209:* rmw" + - "a 189:* rwm" devices: - "/dev:/dev" networks: @@ -139,8 +139,14 @@ services: volumes: - "./${SAMPLE_APP}/src/node-red:/data" - "./${SAMPLE_APP}/src/dlstreamer-pipeline-server/videos:/data/public/videos" + - node-red-node-modules:/usr/src/node-red/node_modules ipc: "none" - entrypoint: [ "/bin/bash", "-c", "/data/install_package.sh && /usr/src/node-red/entrypoint.sh" ] + entrypoint: + [ + "/bin/bash", + "-c", + "/data/install_package.sh && /usr/src/node-red/entrypoint.sh", + ] user: root networks: - app_network @@ -171,7 +177,7 @@ services: HTTPS_PROXY: ${https_proxy} NO_PROXY: $no_proxy,prometheus,dlstreamer-pipeline-server,localhost,127.0.0.1 volumes: - - ./${SAMPLE_APP}/configs/open_telemetry/otel-collector-config.yaml:/etc/otelcol-contrib/config.yaml # OpenTelemetry Collector config + - ./${SAMPLE_APP}/configs/open_telemetry/otel-collector-config.yaml:/etc/otelcol-contrib/config.yaml # OpenTelemetry Collector config restart: always networks: - app_network @@ -188,3 +194,4 @@ volumes: device: tmpfs prometheus_data: driver: local + node-red-node-modules: diff --git a/metro-ai-suite/metro-vision-ai-app-recipe/smart-intersection/chart/templates/nodered/deployment.yaml b/metro-ai-suite/metro-vision-ai-app-recipe/smart-intersection/chart/templates/nodered/deployment.yaml index d79cc567a..88e0d9e2a 100644 --- a/metro-ai-suite/metro-vision-ai-app-recipe/smart-intersection/chart/templates/nodered/deployment.yaml +++ b/metro-ai-suite/metro-vision-ai-app-recipe/smart-intersection/chart/templates/nodered/deployment.yaml @@ -20,6 +20,9 @@ spec: - name: nodered-config configMap: name: {{ .Release.Name }}-nodered # Reference the ConfigMap created above + - name: nodered-node-modules + persistentVolumeClaim: + claimName: {{ .Release.Name }}-nodered - name: secrets-volume projected: sources: @@ -65,6 +68,8 @@ spec: mountPath: /mosquitto/secrets - name: nodered-config mountPath: /config + - name: nodered-node-modules + mountPath: /usr/src/node-red/node_modules livenessProbe: failureThreshold: 3 initialDelaySeconds: 30 diff --git a/metro-ai-suite/metro-vision-ai-app-recipe/smart-intersection/chart/templates/nodered/pv.yaml b/metro-ai-suite/metro-vision-ai-app-recipe/smart-intersection/chart/templates/nodered/pv.yaml new file mode 100644 index 000000000..99b133346 --- /dev/null +++ b/metro-ai-suite/metro-vision-ai-app-recipe/smart-intersection/chart/templates/nodered/pv.yaml @@ -0,0 +1,12 @@ +apiVersion: v1 +kind: PersistentVolume +metadata: + name: {{ .Release.Name }}-nodered +spec: + capacity: + storage: {{ .Values.nodered.storageSize }} + accessModes: + - ReadWriteOnce + persistentVolumeReclaimPolicy: Delete + hostPath: + path: /mnt/data/nodered # Replace with a valid path on your node \ No newline at end of file diff --git a/metro-ai-suite/metro-vision-ai-app-recipe/smart-intersection/chart/templates/nodered/pvc.yaml b/metro-ai-suite/metro-vision-ai-app-recipe/smart-intersection/chart/templates/nodered/pvc.yaml new file mode 100644 index 000000000..7e0d52453 --- /dev/null +++ b/metro-ai-suite/metro-vision-ai-app-recipe/smart-intersection/chart/templates/nodered/pvc.yaml @@ -0,0 +1,11 @@ +apiVersion: v1 +kind: PersistentVolumeClaim +metadata: + name: {{ .Release.Name }}-nodered + namespace: {{ .Release.Namespace }} +spec: + accessModes: + - ReadWriteOnce + resources: + requests: + storage: {{ .Values.nodered.storageSize }} \ No newline at end of file diff --git a/metro-ai-suite/metro-vision-ai-app-recipe/smart-intersection/chart/values.yaml b/metro-ai-suite/metro-vision-ai-app-recipe/smart-intersection/chart/values.yaml index e9d06b6c5..8effecd1c 100644 --- a/metro-ai-suite/metro-vision-ai-app-recipe/smart-intersection/chart/values.yaml +++ b/metro-ai-suite/metro-vision-ai-app-recipe/smart-intersection/chart/values.yaml @@ -1,13 +1,13 @@ namespace: replicaCount: 1 -http_proxy: -https_proxy: -no_proxy: +http_proxy: +https_proxy: +no_proxy: # Global configuration global: # External IP address for certificate generation - externalIP: + externalIP: # Global image pull policy for all containers imagePullPolicy: IfNotPresent @@ -43,6 +43,7 @@ nodered: tag: "latest" # Overrides the storage class name storageClassName: "standard" + storageSize: "1Gi" broker: repository: eclipse-mosquitto