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.

138 lines
4.6 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. {{- if .Values.initcontainer.enabled }}
  23. initContainers:
  24. - name: init-peertube
  25. image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
  26. imagePullPolicy: {{ .Values.image.pullPolicy }}
  27. volumeMounts:
  28. - name: data
  29. mountPath: /data
  30. - name: config
  31. mountPath: /config
  32. - mountPath: /init
  33. name: peertube-init
  34. readOnly: true
  35. command:
  36. - sh
  37. - /init/peertube-init.sh
  38. {{- end }}
  39. containers:
  40. - name: {{ .Chart.Name }}
  41. image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
  42. imagePullPolicy: {{ .Values.image.pullPolicy }}
  43. ports:
  44. - name: http
  45. containerPort: 9000
  46. protocol: TCP
  47. livenessProbe:
  48. httpGet:
  49. path: /
  50. port: http
  51. initialDelaySeconds: 60
  52. readinessProbe:
  53. httpGet:
  54. path: /
  55. port: http
  56. initialDelaySeconds: 60
  57. command:
  58. - gosu
  59. - peertube
  60. - npm
  61. - start
  62. env:
  63. - name: PEERTUBE_WEBSERVER_HOSTNAME
  64. value: {{ .Values.environment.hostname }}
  65. - name: PEERTUBE_WEBSERVER_PORT
  66. value: {{ .Values.environment.http | quote }}
  67. - name: PEERTUBE_WEBSERVER_HTTPS
  68. value: {{ .Values.environment.httpsEnabled | quote }}
  69. - name: PEERTUBE_DB_HOSTNAME
  70. value: {{ .Values.environment.dbHostname }}
  71. - name: PEERTUBE_DB_SUFFIX
  72. value: _prod
  73. - name: PEERTUBE_DB_USERNAME
  74. value: {{ .Values.environment.dbUser }}
  75. - name: PEERTUBE_DB_PASSWORD
  76. value: {{ .Values.environment.dbPassword }}
  77. - name: PEERTUBE_REDIS_HOSTNAME
  78. value: {{ .Release.Name }}-{{ .Values.environment.redisHostname }}-master
  79. - name: PEERTUBE_SMTP_USERNAME
  80. value: {{ .Values.environment.smtpUser | quote }}
  81. - name: PEERTUBE_SMTP_PASSWORD
  82. value: {{ .Values.environment.smtpPassword }}
  83. - name: PEERTUBE_SMTP_HOSTNAME
  84. value: {{ .Values.environment.smtpHostname }}
  85. - name: PEERTUBE_SMTP_PORT
  86. value: {{ .Values.environment.smtpPort | quote }}
  87. - name: PEERTUBE_SMTP_FROM
  88. value: {{ .Values.environment.smtpFrom | quote }}
  89. - name: PEERTUBE_SMTP_TLS
  90. value: {{ .Values.environment.smtpTls | quote }}
  91. - name: PEERTUBE_ADMIN_EMAIL
  92. value: {{ .Values.environment.admin | quote }}
  93. - name: PEERTUBE_SIGNUP_ENABLED
  94. value: {{ .Values.environment.signup | quote }}
  95. - name: PEERTUBE_TRANSCODING_ENABLED
  96. value: {{ .Values.environment.transcoding | quote }}
  97. - name: PEERTUBE_TRUST_PROXY
  98. value: {{ .Values.environment.trustProxy | quote }}
  99. volumeMounts:
  100. - name: data
  101. mountPath: /data
  102. - name: config
  103. mountPath: /config
  104. resources:
  105. {{ toYaml .Values.resources | indent 12 }}
  106. {{- with .Values.nodeSelector }}
  107. nodeSelector:
  108. {{ toYaml . | indent 8 }}
  109. {{- end }}
  110. {{- with .Values.affinity }}
  111. affinity:
  112. {{ toYaml . | indent 8 }}
  113. {{- end }}
  114. {{- with .Values.tolerations }}
  115. tolerations:
  116. {{ toYaml . | indent 8 }}
  117. {{- end }}
  118. volumes:
  119. {{- if .Values.persistence.data.enabled }}
  120. - name: data
  121. persistentVolumeClaim:
  122. claimName: {{ .Values.persistence.data.existingClaim }}
  123. {{- else }}
  124. - name: data
  125. emptyDir: {}
  126. {{- end }}
  127. {{- if .Values.persistence.config.enabled }}
  128. - name: config
  129. persistentVolumeClaim:
  130. claimName: {{ .Values.persistence.config.existingClaim }}
  131. {{- else }}
  132. - name: config
  133. emptyDir: {}
  134. {{- end }}
  135. - configMap:
  136. defaultMode: 420
  137. name: peertube-init
  138. name: peertube-init