Helm chart for deploying Peertube on kubernetes
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

156 lines
5.2 KiB

  1. apiVersion: apps/v1beta2
  2. kind: Deployment
  3. metadata:
  4. name: {{ template "peertube.fullname" . }}
  5. labels:
  6. app: {{ template "peertube.name" . }}
  7. chart: {{ template "peertube.chart" . }}
  8. release: {{ .Release.Name }}
  9. heritage: {{ .Release.Service }}
  10. spec:
  11. replicas: {{ .Values.replicaCount }}
  12. selector:
  13. matchLabels:
  14. app: {{ template "peertube.name" . }}
  15. release: {{ .Release.Name }}
  16. template:
  17. metadata:
  18. labels:
  19. app: {{ template "peertube.name" . }}
  20. release: {{ .Release.Name }}
  21. spec:
  22. initContainers:
  23. - name: peertube-init
  24. image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
  25. imagePullPolicy: {{ .Values.image.pullPolicy }}
  26. volumeMounts:
  27. - name: data
  28. mountPath: /data
  29. - name: config
  30. mountPath: /config
  31. - mountPath: /init
  32. name: peertube-init
  33. readOnly: true
  34. command:
  35. - sh
  36. - /init/peertube-init.sh
  37. {{- if .Values.chowncontainer.enabled }}
  38. - name: peertube-chown
  39. image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
  40. imagePullPolicy: {{ .Values.image.pullPolicy }}
  41. volumeMounts:
  42. - name: data
  43. mountPath: /data
  44. - name: config
  45. mountPath: /config
  46. - mountPath: /init
  47. name: peertube-chown
  48. readOnly: true
  49. command:
  50. - sh
  51. - /init/peertube-chown.sh
  52. {{- end }}
  53. containers:
  54. - name: {{ .Chart.Name }}
  55. image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
  56. imagePullPolicy: {{ .Values.image.pullPolicy }}
  57. ports:
  58. - name: http
  59. containerPort: 9000
  60. protocol: TCP
  61. livenessProbe:
  62. httpGet:
  63. path: /
  64. port: http
  65. initialDelaySeconds: 60
  66. readinessProbe:
  67. httpGet:
  68. path: /
  69. port: http
  70. initialDelaySeconds: 60
  71. command:
  72. - gosu
  73. - peertube
  74. - npm
  75. - start
  76. env:
  77. - name: PEERTUBE_WEBSERVER_HOSTNAME
  78. value: {{ .Values.environment.hostname }}
  79. - name: PEERTUBE_WEBSERVER_PORT
  80. value: {{ .Values.environment.http | quote }}
  81. - name: PEERTUBE_WEBSERVER_HTTPS
  82. value: {{ .Values.environment.httpsEnabled | quote }}
  83. - name: PEERTUBE_DB_HOSTNAME
  84. value: {{ .Values.environment.dbHostname }}
  85. - name: PEERTUBE_DB_SUFFIX
  86. value: _prod
  87. - name: PEERTUBE_DB_USERNAME
  88. value: {{ .Values.environment.dbUser }}
  89. - name: PEERTUBE_DB_PASSWORD
  90. value: {{ .Values.environment.dbPassword }}
  91. - name: PEERTUBE_REDIS_HOSTNAME
  92. value: {{ .Release.Name }}-{{ .Values.environment.redisHostname }}-master
  93. - name: PEERTUBE_SMTP_USERNAME
  94. value: {{ .Values.environment.smtpUser | quote }}
  95. - name: PEERTUBE_SMTP_PASSWORD
  96. value: {{ .Values.environment.smtpPassword }}
  97. - name: PEERTUBE_SMTP_HOSTNAME
  98. value: {{ .Values.environment.smtpHostname }}
  99. - name: PEERTUBE_SMTP_PORT
  100. value: {{ .Values.environment.smtpPort | quote }}
  101. - name: PEERTUBE_SMTP_FROM
  102. value: {{ .Values.environment.smtpFrom | quote }}
  103. - name: PEERTUBE_SMTP_TLS
  104. value: {{ .Values.environment.smtpTls | quote }}
  105. - name: PEERTUBE_ADMIN_EMAIL
  106. value: {{ .Values.environment.admin | quote }}
  107. - name: PEERTUBE_SIGNUP_ENABLED
  108. value: {{ .Values.environment.signup | quote }}
  109. - name: PEERTUBE_TRANSCODING_ENABLED
  110. value: {{ .Values.environment.transcoding | quote }}
  111. - name: PEERTUBE_TRUST_PROXY
  112. value: {{ .Values.environment.trustProxy | quote }}
  113. volumeMounts:
  114. - name: data
  115. mountPath: /data
  116. - name: config
  117. mountPath: /config
  118. resources:
  119. {{ toYaml .Values.resources | indent 12 }}
  120. {{- with .Values.nodeSelector }}
  121. nodeSelector:
  122. {{ toYaml . | indent 8 }}
  123. {{- end }}
  124. {{- with .Values.affinity }}
  125. affinity:
  126. {{ toYaml . | indent 8 }}
  127. {{- end }}
  128. {{- with .Values.tolerations }}
  129. tolerations:
  130. {{ toYaml . | indent 8 }}
  131. {{- end }}
  132. volumes:
  133. {{- if .Values.persistence.data.enabled }}
  134. - name: data
  135. persistentVolumeClaim:
  136. claimName: {{ .Values.persistence.data.existingClaim }}
  137. {{- else }}
  138. - name: data
  139. emptyDir: {}
  140. {{- end }}
  141. {{- if .Values.persistence.config.enabled }}
  142. - name: config
  143. persistentVolumeClaim:
  144. claimName: {{ .Values.persistence.config.existingClaim }}
  145. {{- else }}
  146. - name: config
  147. emptyDir: {}
  148. {{- end }}
  149. - configMap:
  150. defaultMode: 420
  151. name: peertube-init
  152. name: peertube-init
  153. - configMap:
  154. defaultMode: 420
  155. name: peertube-chown
  156. name: peertube-chown