apiVersion: apps/v1 kind: StatefulSet metadata: name: {{ include "mosquitto.fullname" . }} labels: {{- include "mosquitto.labels" . | nindent 4 }} spec: serviceName: {{ include "mosquitto.fullname" . }} replicas: 1 selector: matchLabels: {{- include "mosquitto.selectorLabels" . | nindent 6 }} template: metadata: labels: {{- include "mosquitto.selectorLabels" . | nindent 8 }} spec: securityContext: runAsUser: {{ .Values.securityContext.runAsUser }} runAsGroup: {{ .Values.securityContext.runAsGroup }} fsGroup: {{ .Values.securityContext.runAsGroup }} containers: - name: mosquitto image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}" imagePullPolicy: {{ .Values.image.pullPolicy }} ports: - name: mqtt containerPort: {{ .Values.service.mqttPort }} {{- if .Values.websockets.enabled }} - name: ws containerPort: {{ .Values.websockets.port }} {{- end }} env: - name: MOSQUITTO_UNSAFE_ALLOW_SYMLINKS value: "1" volumeMounts: - name: config mountPath: /mosquitto/config - name: secrets mountPath: /mosquitto/secrets readOnly: true {{- if .Values.persistence.enabled }} - name: data mountPath: /mosquitto/data {{- end }} resources: {{- toYaml .Values.resources | nindent 12 }} volumes: - name: config configMap: name: {{ include "mosquitto.fullname" . }}-config - name: secrets secret: secretName: {{ .Values.auth.existingSecret }} defaultMode: 0400 {{- if not .Values.persistence.enabled }} - name: data emptyDir: {} {{- end }} {{- if .Values.persistence.enabled }} volumeClaimTemplates: - metadata: name: data spec: accessModes: ["ReadWriteOnce"] storageClassName: {{ .Values.persistence.storageClassName }} resources: requests: storage: {{ .Values.persistence.size }} {{- end }}