StatefulSet.yaml 6.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160
  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. helm.sh/chart: {{ include "emqx.chart" . }}
  22. app.kubernetes.io/instance: {{ .Release.Name }}
  23. app.kubernetes.io/managed-by: {{ .Release.Service }}
  24. annotations:
  25. {{- if .Values.persistence.storageClass }}
  26. volume.beta.kubernetes.io/storage-class: {{ .Values.persistence.storageClass | quote }}
  27. {{- else }}
  28. volume.alpha.kubernetes.io/storage-class: default
  29. {{- end }}
  30. spec:
  31. accessModes:
  32. - {{ .Values.persistence.accessMode | quote }}
  33. resources:
  34. requests:
  35. storage: {{ .Values.persistence.size | quote }}
  36. {{- end }}
  37. updateStrategy:
  38. type: RollingUpdate
  39. replicas: {{ .Values.replicaCount }}
  40. selector:
  41. matchLabels:
  42. app.kubernetes.io/name: {{ include "emqx.name" . }}
  43. app.kubernetes.io/instance: {{ .Release.Name }}
  44. template:
  45. metadata:
  46. labels:
  47. app: {{ include "emqx.name" . }}
  48. version: {{ .Chart.AppVersion }}
  49. app.kubernetes.io/name: {{ include "emqx.name" . }}
  50. app.kubernetes.io/instance: {{ .Release.Name }}
  51. {{- if .Values.recreatePods }}
  52. annotations:
  53. checksum/config: {{ include (print $.Template.BasePath "/configmap.yaml") . | sha256sum | quote }}
  54. {{- end }}
  55. spec:
  56. volumes:
  57. {{- if not .Values.persistence.enabled }}
  58. - name: emqx-data
  59. emptyDir: {}
  60. {{- else if .Values.persistence.existingClaim }}
  61. - name: emqx-data
  62. persistentVolumeClaim:
  63. {{- with .Values.persistence.existingClaim }}
  64. claimName: {{ tpl . $ }}
  65. {{- end }}
  66. {{- end }}
  67. {{- if .Values.emqxLicneseSecretName }}
  68. - name: emqx-license
  69. secret:
  70. secretName: {{ .Values.emqxLicneseSecretName }}
  71. {{- end }}
  72. serviceAccountName: {{ include "emqx.fullname" . }}
  73. {{- if .Values.podSecurityContext.enabled }}
  74. securityContext: {{- omit .Values.podSecurityContext "enabled" | toYaml | nindent 8 }}
  75. {{- end }}
  76. {{- if .Values.initContainers }}
  77. initContainers:
  78. {{ toYaml .Values.initContainers | indent 8 }}
  79. {{- end }}
  80. {{- if .Values.image.pullSecrets }}
  81. imagePullSecrets:
  82. {{- range .Values.image.pullSecrets }}
  83. - name: {{ . }}
  84. {{- end }}
  85. {{- end }}
  86. containers:
  87. - name: emqx
  88. image: "{{ .Values.image.repository }}:{{ .Chart.AppVersion }}"
  89. imagePullPolicy: {{ .Values.image.pullPolicy }}
  90. {{- if .Values.containerSecurityContext.enabled }}
  91. securityContext: {{- omit .Values.containerSecurityContext "enabled" | toYaml | nindent 12 }}
  92. {{- end }}
  93. ports:
  94. - name: mqtt
  95. containerPort: {{ .Values.emqxConfig.EMQX_LISTENERS__TCP__DEFAULT | default 1883 }}
  96. - name: mqttssl
  97. containerPort: {{ .Values.emqxConfig.EMQX_LISTENERS__SSL__DEFAULT | default 8883 }}
  98. - name: ws
  99. containerPort: {{ .Values.emqxConfig.EMQX_LISTENERS__WS__DEFAULT | default 8083 }}
  100. - name: wss
  101. containerPort: {{ .Values.emqxConfig.EMQX_LISTENERS__WSS__DEFAULT | default 8084 }}
  102. - name: dashboard
  103. containerPort: {{ .Values.emqxConfig.EMQX_DASHBOARD__LISTENER__HTTP | default 18083 }}
  104. {{- if not (empty .Values.emqxConfig.EMQX_LISTENERS__TCP__DEFAULT) }}
  105. - name: internalmqtt
  106. containerPort: {{ .Values.emqxConfig.EMQX_LISTENERS__TCP__DEFAULT }}
  107. {{- end }}
  108. {{- if not (empty .Values.emqxConfig.EMQX_DASHBOARD__LISTENER__HTTPS) }}
  109. - name: dashboardtls
  110. containerPort: {{ .Values.emqxConfig.EMQX_DASHBOARD__LISTENER__HTTPS }}
  111. {{- end }}
  112. - name: ekka
  113. containerPort: 4370
  114. envFrom:
  115. - configMapRef:
  116. name: {{ include "emqx.fullname" . }}-env
  117. {{- if .Values.envFromSecret }}
  118. - secretRef:
  119. name: {{ .Values.envFromSecret }}
  120. {{- end }}
  121. env:
  122. - name: EMQX_NAME
  123. value: {{ .Release.Name }}
  124. - name: EMQX_CLUSTER__K8S__APP_NAME
  125. value: {{ .Release.Name }}
  126. - name: EMQX_CLUSTER__DISCOVERY_STRATEGY
  127. value: k8s
  128. - name: EMQX_CLUSTER__K8S__SERVICE_NAME
  129. value: {{ include "emqx.fullname" . }}-headless
  130. - name: EMQX_CLUSTER__K8S__NAMESPACE
  131. value: {{ .Release.Namespace }}
  132. resources:
  133. {{ toYaml .Values.resources | indent 12 }}
  134. volumeMounts:
  135. - name: emqx-data
  136. mountPath: "/opt/emqx/data"
  137. {{ if .Values.emqxLicneseSecretName }}
  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: /api/v5/status
  146. port: {{ .Values.emqxConfig.EMQX_DASHBOARD__LISTENER__HTTP | default 18083 }}
  147. initialDelaySeconds: 5
  148. periodSeconds: 5
  149. {{- with .Values.nodeSelector }}
  150. nodeSelector:
  151. {{- toYaml . | nindent 8 }}
  152. {{- end }}
  153. {{- with .Values.affinity }}
  154. affinity:
  155. {{- toYaml . | nindent 8 }}
  156. {{- end }}
  157. {{- with .Values.tolerations }}
  158. tolerations:
  159. {{- toYaml . | nindent 8 }}
  160. {{- end }}