StatefulSet.yaml 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168
  1. apiVersion: apps/v1
  2. kind: StatefulSet
  3. metadata:
  4. name: {{ include "emqx.fullname" . }}
  5. namespace: {{ .Release.Namespace }}
  6. labels:
  7. app.kubernetes.io/name: {{ include "emqx.name" . }}
  8. helm.sh/chart: {{ include "emqx.chart" . }}
  9. app.kubernetes.io/instance: {{ .Release.Name }}
  10. app.kubernetes.io/managed-by: {{ .Release.Service }}
  11. spec:
  12. serviceName: {{ include "emqx.fullname" . }}-headless
  13. podManagementPolicy: {{ .Values.podManagementPolicy }}
  14. {{- if and .Values.persistence.enabled (not .Values.persistence.existingClaim) }}
  15. volumeClaimTemplates:
  16. - metadata:
  17. name: emqx-data
  18. namespace: {{ .Release.Namespace }}
  19. labels:
  20. app.kubernetes.io/name: {{ include "emqx.name" . }}
  21. app.kubernetes.io/instance: {{ .Release.Name }}
  22. app.kubernetes.io/managed-by: {{ .Release.Service }}
  23. spec:
  24. {{- if .Values.persistence.storageClassName }}
  25. storageClassName: {{ .Values.persistence.storageClassName | quote }}
  26. {{- end }}
  27. accessModes:
  28. - {{ .Values.persistence.accessMode | quote }}
  29. resources:
  30. requests:
  31. storage: {{ .Values.persistence.size | quote }}
  32. {{- end }}
  33. updateStrategy:
  34. type: RollingUpdate
  35. replicas: {{ .Values.replicaCount }}
  36. selector:
  37. matchLabels:
  38. app.kubernetes.io/name: {{ include "emqx.name" . }}
  39. app.kubernetes.io/instance: {{ .Release.Name }}
  40. template:
  41. metadata:
  42. labels:
  43. app: {{ include "emqx.name" . }}
  44. version: {{ .Chart.AppVersion }}
  45. app.kubernetes.io/name: {{ include "emqx.name" . }}
  46. app.kubernetes.io/instance: {{ .Release.Name }}
  47. annotations:
  48. {{- with .Values.podAnnotations }}
  49. {{- toYaml . | nindent 8 }}
  50. {{- end }}
  51. {{- if .Values.recreatePods }}
  52. checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum | quote }}
  53. {{- end }}
  54. spec:
  55. volumes:
  56. {{- if .Values.ssl.enabled }}
  57. - name: ssl-cert
  58. secret:
  59. secretName: {{ include "emqx.fullname" . }}-tls
  60. {{- end }}
  61. {{- if not .Values.persistence.enabled }}
  62. - name: emqx-data
  63. emptyDir: {}
  64. {{- else if .Values.persistence.existingClaim }}
  65. - name: emqx-data
  66. persistentVolumeClaim:
  67. {{- with .Values.persistence.existingClaim }}
  68. claimName: {{ tpl . $ }}
  69. {{- end }}
  70. {{- end }}
  71. {{- if .Values.emqxLicenseSecretName }}
  72. - name: emqx-license
  73. secret:
  74. secretName: {{ .Values.emqxLicenseSecretName }}
  75. {{- end }}
  76. {{- if eq .Values.emqxConfig.EMQX_CLUSTER__DISCOVERY_STRATEGY "k8s"}}
  77. serviceAccountName: {{ include "emqx.fullname" . }}
  78. {{- end }}
  79. {{- if .Values.podSecurityContext.enabled }}
  80. securityContext: {{- omit .Values.podSecurityContext "enabled" | toYaml | nindent 8 }}
  81. {{- end }}
  82. {{- if .Values.initContainers }}
  83. initContainers:
  84. {{ toYaml .Values.initContainers | indent 8 }}
  85. {{- end }}
  86. {{- if .Values.image.pullSecrets }}
  87. imagePullSecrets:
  88. {{- range .Values.image.pullSecrets }}
  89. - name: {{ . }}
  90. {{- end }}
  91. {{- end }}
  92. containers:
  93. - name: emqx
  94. image: "{{ .Values.image.repository }}:{{ .Chart.AppVersion }}"
  95. imagePullPolicy: {{ .Values.image.pullPolicy }}
  96. {{- if .Values.containerSecurityContext.enabled }}
  97. securityContext: {{- omit .Values.containerSecurityContext "enabled" | toYaml | nindent 12 }}
  98. {{- end }}
  99. ports:
  100. - name: mqtt
  101. containerPort: {{ .Values.emqxConfig.EMQX_LISTENERS__TCP__DEFAULT | default 1883 }}
  102. - name: mqttssl
  103. containerPort: {{ .Values.emqxConfig.EMQX_LISTENERS__SSL__DEFAULT | default 8883 }}
  104. - name: ws
  105. containerPort: {{ .Values.emqxConfig.EMQX_LISTENERS__WS__DEFAULT | default 8083 }}
  106. - name: wss
  107. containerPort: {{ .Values.emqxConfig.EMQX_LISTENERS__WSS__DEFAULT | default 8084 }}
  108. - name: dashboard
  109. containerPort: {{ .Values.emqxConfig.EMQX_DASHBOARD__LISTENER__HTTP | default 18083 }}
  110. {{- if not (empty .Values.emqxConfig.EMQX_LISTENERS__TCP__DEFAULT) }}
  111. - name: internalmqtt
  112. containerPort: {{ .Values.emqxConfig.EMQX_LISTENERS__TCP__DEFAULT }}
  113. {{- end }}
  114. {{- if not (empty .Values.emqxConfig.EMQX_DASHBOARD__LISTENER__HTTPS) }}
  115. - name: dashboardtls
  116. containerPort: {{ .Values.emqxConfig.EMQX_DASHBOARD__LISTENER__HTTPS }}
  117. {{- end }}
  118. - name: ekka
  119. containerPort: 4370
  120. envFrom:
  121. - configMapRef:
  122. name: {{ include "emqx.fullname" . }}-env
  123. {{- if .Values.envFromSecret }}
  124. - secretRef:
  125. name: {{ .Values.envFromSecret }}
  126. {{- end }}
  127. resources:
  128. {{ toYaml .Values.resources | indent 12 }}
  129. volumeMounts:
  130. - name: emqx-data
  131. mountPath: "/opt/emqx/data"
  132. {{- if .Values.ssl.enabled }}
  133. - name: ssl-cert
  134. mountPath: /tmp/ssl
  135. readOnly: true
  136. {{- end}}
  137. {{ if .Values.emqxLicenseSecretName }}
  138. - name: emqx-license
  139. mountPath: "/opt/emqx/etc/emqx.lic"
  140. subPath: "emqx.lic"
  141. readOnly: true
  142. {{- end }}
  143. readinessProbe:
  144. httpGet:
  145. path: /status
  146. port: {{ .Values.emqxConfig.EMQX_DASHBOARD__LISTENER__HTTP | default 18083 }}
  147. initialDelaySeconds: 10
  148. periodSeconds: 5
  149. failureThreshold: 30
  150. livenessProbe:
  151. httpGet:
  152. path: /status
  153. port: {{ .Values.emqxConfig.EMQX_DASHBOARD__LISTENER__HTTP | default 18083 }}
  154. initialDelaySeconds: 60
  155. periodSeconds: 30
  156. failureThreshold: 10
  157. {{- with .Values.nodeSelector }}
  158. nodeSelector:
  159. {{- toYaml . | nindent 8 }}
  160. {{- end }}
  161. {{- with .Values.affinity }}
  162. affinity:
  163. {{- toYaml . | nindent 8 }}
  164. {{- end }}
  165. {{- with .Values.tolerations }}
  166. tolerations:
  167. {{- toYaml . | nindent 8 }}
  168. {{- end }}