--- apiVersion: apps/v1 kind: Deployment metadata: labels: app: mosquitto release: mqtt name: mqtt-mosquitto namespace: default spec: replicas: 1 selector: matchLabels: app: mosquitto release: mqtt strategy: type: Recreate template: metadata: labels: app: mosquitto release: mqtt spec: containers: - name: mqtt-mosquitto image: docker-registry.lan/mosquitto:arm64 imagePullPolicy: Always livenessProbe: failureThreshold: 3 initialDelaySeconds: 5 periodSeconds: 1 successThreshold: 1 tcpSocket: port: 1883 timeoutSeconds: 1 ports: - containerPort: 1883 name: mqtt protocol: TCP readinessProbe: failureThreshold: 3 initialDelaySeconds: 5 periodSeconds: 3 successThreshold: 1 tcpSocket: port: 1883 timeoutSeconds: 1 resources: limits: cpu: 100m memory: 64Mi requests: cpu: 20m memory: 24Mi terminationMessagePath: /dev/termination-log terminationMessagePolicy: File volumeMounts: - mountPath: /mosquitto/config/mosquitto.conf name: mosquitto-conf readOnly: true subPath: mosquitto.conf - mountPath: /mosquitto/data name: mosquitto-data subPath: mosquitto/data - name: mosquitto-exporter image: docker-registry.lan/mosquitto-exporter:arm64 imagePullPolicy: Always ports: - containerPort: 9234 name: mqtt-exporter protocol: TCP resources: requests: memory: "20Mi" cpu: "100m" limits: memory: "64Mi" cpu: "200m" dnsPolicy: ClusterFirst restartPolicy: Always schedulerName: default-scheduler securityContext: {} terminationGracePeriodSeconds: 30 volumes: - configMap: defaultMode: 420 name: mqtt-mosquitto name: mosquitto-conf - name: mosquitto-data persistentVolumeClaim: claimName: mqtt-mosquitto --- apiVersion: v1 kind: Service metadata: labels: app: mosquitto release: mqtt namespace: default name: mqtt-mosquitto spec: externalTrafficPolicy: Cluster loadBalancerIP: 172.23.255.3 ports: - name: mqtt port: 1883 protocol: TCP targetPort: 1883 - name: mqtt-exporter port: 9234 protocol: TCP targetPort: 9234 selector: app: mosquitto type: LoadBalancer --- apiVersion: v1 kind: PersistentVolumeClaim metadata: #annotations: # volume.beta.kubernetes.io/storage-provisioner: nfs-storage labels: app: mosquitto release: mqtt name: mqtt-mosquitto namespace: default spec: accessModes: - ReadWriteOnce resources: requests: storage: 2Gi storageClassName: nfs-ssd volumeMode: Filesystem --- apiVersion: v1 kind: ConfigMap metadata: name: mqtt-mosquitto namespace: default labels: app: mosquitto release: mqtt data: mosquitto.conf: |- log_dest none user root port 1883 persistence true persistence_location /mosquitto/data/