apiVersion: apps/v1 kind: StatefulSet metadata: labels: mosquitto: server app: mosquitto annotations: "reloader.stakater.com/auto": "true" name: mosquitto namespace: mosquitto spec: podManagementPolicy: OrderedReady replicas: 1 selector: matchLabels: mosquitto: server app: mosquitto serviceName: mosquitto updateStrategy: type: RollingUpdate template: metadata: labels: mosquitto: server app: mosquitto spec: initContainers: - name: populate-users image: eclipse-mosquitto command: - /bin/sh - -c args: - | cd /users || exit 0 echo "creating users" touch /mosquitto/passwords/mosquitto.passwd for f in *;do echo "$f" mosquitto_passwd -b /mosquitto/passwords/mosquitto.passwd "$f" "$(cat "$f")" done volumeMounts: - mountPath: /mosquitto/passwords name: passwords - mountPath: /users name: users containers: - name: mosquitto image: eclipse-mosquitto command: - /usr/sbin/mosquitto args: - -c - /mosquitto/config/mosquitto.conf livenessProbe: tcpSocket: port: 1883 readinessProbe: tcpSocket: port: 1883 ports: - containerPort: 1883 protocol: TCP name: ssh - containerPort: 9001 protocol: TCP name: http volumeMounts: - mountPath: /mosquitto/data name: mosquitto-data - mountPath: /mosquitto/config name: mosquitto-config - mountPath: /mosquitto/passwords name: passwords - mountPath: /mosquitto/tls name: tls - mountPath: /http name: mosquitto-http-dir dnsPolicy: ClusterFirst restartPolicy: Always volumes: - name: mosquitto-config configMap: name: mosquitto-config - name: mosquitto-http-dir configMap: name: mosquitto-http-dir - name: passwords emptyDir: sizeLimit: 50Mi - name: users secret: secretName: mosquitto-users optional: true - name: tls secret: secretName: mosquitto-mtls-root-ca optional: false volumeClaimTemplates: - metadata: name: mosquitto-data spec: accessModes: [ "ReadWriteOnce" ] storageClassName: local-path resources: requests: storage: 5Gi