--- apiVersion: apps/v1 kind: Deployment metadata: name: camera annotations: reloader.stakater.com/auto: "true" spec: revisionHistoryLimit: 0 replicas: 0 strategy: type: Recreate selector: matchLabels: component: camera template: metadata: labels: component: camera spec: containers: - name: camera image: docker.io/cyrilix/robocar-camera args: - "-mqtt-pub-frequency=$(MQTT_CAMERA_PUB_FREQUENCY)" - "-video-device=0" - "-video-width=$(CAMERA_WIDTH)" - "-video-height=$(CAMERA_HEIGHT)" - "-log=info" securityContext: runAsUser: 1234 runAsGroup: 44 # Set 44/video group to access to video device privileged: true volumeMounts: - name: camera-device mountPath: /dev/video0 env: - name: MQTT_BROKER valueFrom: configMapKeyRef: key: MQTT_BROKER name: robocar - name: MQTT_USERNAME valueFrom: secretKeyRef: key: MQTT_USERNAME name: mqtt-credentials - name: MQTT_PASSWORD valueFrom: secretKeyRef: key: MQTT_PASSWORD name: mqtt-credentials - name: MQTT_CLIENT_ID value: rc-camera - name: MQTT_TOPIC valueFrom: configMapKeyRef: key: MQTT_TOPIC_CAMERA name: robocar - name: CAMERA_WIDTH valueFrom: configMapKeyRef: key: CAMERA_WIDTH name: robocar-camera - name: CAMERA_HEIGHT valueFrom: configMapKeyRef: key: CAMERA_HEIGHT name: robocar-camera - name: MQTT_CAMERA_PUB_FREQUENCY valueFrom: configMapKeyRef: key: MQTT_CAMERA_PUB_FREQUENCY name: robocar-camera - name: MQTT_QOS value: "0" - name: TZ value: "Europe/Paris" volumes: - name: camera-device hostPath: path: "/dev/video0" type: CharDevice --- apiVersion: apps/v1 kind: Deployment metadata: name: oak-camera annotations: reloader.stakater.com/auto: "true" spec: revisionHistoryLimit: 0 replicas: 1 strategy: type: Recreate selector: matchLabels: component: oak-camera template: metadata: labels: component: oak-camera spec: containers: - name: camera image: docker.io/cyrilix/robocar-oak-camera args: - "--image-width=$(CAMERA_WIDTH)" - "--image-height=$(CAMERA_HEIGHT)" securityContext: runAsUser: 1234 privileged: true volumeMounts: - name: sys mountPath: /sys - name: dev mountPath: /dev env: - name: MQTT_BROKER valueFrom: configMapKeyRef: key: MQTT_BROKER_HOST name: robocar - name: MQTT_USERNAME valueFrom: secretKeyRef: key: MQTT_USERNAME name: mqtt-credentials - name: MQTT_PASSWORD valueFrom: secretKeyRef: key: MQTT_PASSWORD name: mqtt-credentials - name: MQTT_CLIENT_ID value: rc-oak-camera - name: MQTT_TOPIC_CAMERA valueFrom: configMapKeyRef: key: MQTT_TOPIC_CAMERA_OAK_COLOR name: robocar - name: CAMERA_WIDTH valueFrom: configMapKeyRef: key: CAMERA_WIDTH name: robocar-camera - name: CAMERA_HEIGHT valueFrom: configMapKeyRef: key: CAMERA_HEIGHT name: robocar-camera - name: MQTT_QOS value: "0" - name: TZ value: "Europe/Paris" hostNetwork: true volumes: - name: sys hostPath: path: /sys - name: dev hostPath: path: "/dev" --- apiVersion: apps/v1 kind: Deployment metadata: name: pca9685-steering annotations: reloader.stakater.com/auto: "true" spec: revisionHistoryLimit: 0 replicas: 1 strategy: type: Recreate selector: matchLabels: component: pca9685 template: metadata: labels: component: pca9685 spec: containers: - name: pca9685 image: docker.io/cyrilix/robocar-pca9685-python args: - "--i2c-bus=1" - "--i2c-address=40" - "--pca9685-channel=0" - "--left-pulse=$(STEERING_LEFT_PWM)" - "--right-pulse=$(STEERING_RIGHT_PWM)" securityContext: runAsUser: 1234 runAsGroup: 998 # Set 998/i2c group to access to i2c device privileged: true volumeMounts: - mountPath: /dev/i2c-1 name: i2c env: - name: MQTT_BROKER valueFrom: configMapKeyRef: key: MQTT_BROKER name: robocar - name: MQTT_USERNAME valueFrom: secretKeyRef: key: MQTT_USERNAME name: mqtt-credentials - name: MQTT_PASSWORD valueFrom: secretKeyRef: key: MQTT_PASSWORD name: mqtt-credentials - name: MQTT_CLIENT_ID value: rc-pca9685 - name: MQTT_TOPIC valueFrom: configMapKeyRef: key: MQTT_TOPIC_STEERING name: robocar - name: MQTT_QOS value: "0" - name: STEERING_LEFT_PWM valueFrom: configMapKeyRef: name: robocar-pca9685 key: STEERING_LEFT_PWM - name: STEERING_RIGHT_PWM valueFrom: configMapKeyRef: name: robocar-pca9685 key: STEERING_RIGHT_PWM - name: STEERING_CENTER_PWM valueFrom: configMapKeyRef: name: robocar-pca9685 key: STEERING_CENTER_PWM - name: TZ value: "Europe/Paris" volumes: - name: i2c hostPath: path: /dev/i2c-1 type: CharDevice --- apiVersion: apps/v1 kind: Deployment metadata: name: pca9685-throttle annotations: reloader.stakater.com/auto: "true" spec: revisionHistoryLimit: 0 replicas: 1 strategy: type: Recreate selector: matchLabels: component: pca9685 template: metadata: labels: component: pca9685 spec: containers: - name: pca9685-steering image: docker.io/cyrilix/robocar-pca9685-python args: - "--zero-pulse=378" - "--min-pulse=250" - "--max-pulse=500" - "--i2c-bus=1" - "--i2c-address=40" - "--pca9685-channel=1" securityContext: runAsUser: 1234 runAsGroup: 998 # Set 998/i2c group to access to i2c device privileged: true volumeMounts: - mountPath: /dev/i2c-1 name: i2c env: - name: MQTT_BROKER valueFrom: configMapKeyRef: key: MQTT_BROKER name: robocar - name: MQTT_USERNAME valueFrom: secretKeyRef: key: MQTT_USERNAME name: mqtt-credentials - name: MQTT_PASSWORD valueFrom: secretKeyRef: key: MQTT_PASSWORD name: mqtt-credentials - name: MQTT_CLIENT_ID value: rc-pca9685 - name: MQTT_TOPIC valueFrom: configMapKeyRef: key: MQTT_TOPIC_THROTTLE name: robocar - name: MQTT_QOS value: "0" - name: TZ value: "Europe/Paris" volumes: - name: i2c hostPath: path: /dev/i2c-1 type: CharDevice