job-assets-copy.yaml 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. {{- if .Values.mastodon.hooks.s3Upload.enabled -}}
  2. apiVersion: batch/v1
  3. kind: Job
  4. metadata:
  5. name: {{ include "mastodon.fullname" . }}-assets-upload
  6. labels:
  7. {{- include "mastodon.labels" . | nindent 4 }}
  8. annotations:
  9. "helm.sh/hook": pre-install,pre-upgrade
  10. "helm.sh/hook-delete-policy": before-hook-creation,hook-succeeded
  11. "helm.sh/hook-weight": "-1"
  12. spec:
  13. template:
  14. metadata:
  15. name: {{ include "mastodon.fullname" . }}-assets-upload
  16. {{- with .Values.jobAnnotations }}
  17. annotations:
  18. {{- toYaml . | nindent 8 }}
  19. {{- end }}
  20. spec:
  21. {{- with .Values.imagePullSecrets }}
  22. imagePullSecrets:
  23. {{- toYaml . | nindent 8 }}
  24. {{- end }}
  25. volumes:
  26. restartPolicy: Never
  27. initContainers:
  28. - name: extract-assets
  29. image: "{{ coalesce .Values.mastodon.web.image.repository .Values.image.repository }}:{{ coalesce .Values.mastodon.web.image.tag .Values.image.tag .Chart.AppVersion }}"
  30. imagePullPolicy: Always
  31. command:
  32. - cp
  33. args:
  34. - -rv
  35. - public
  36. - /assets
  37. volumeMounts:
  38. - mountPath: /assets
  39. name: assets
  40. containers:
  41. - name: upload-assets
  42. image: rclone/rclone:1
  43. imagePullPolicy: Always
  44. env:
  45. - name: RCLONE_S3_NO_CHECK_BUCKET
  46. value: "true"
  47. - name: RCLONE_S3_ACL
  48. value: {{ required "Please specify a canned ACL for S3 asset uploads" .Values.mastodon.hooks.s3Upload.acl }}
  49. - name: RCLONE_CONFIG_REMOTE_TYPE
  50. value: s3
  51. - name: RCLONE_CONFIG_REMOTE_PROVIDER
  52. value: AWS
  53. - name: RCLONE_CONFIG_REMOTE_ENDPOINT
  54. value: {{ required "Please specify an endpoint for S3 asset uploads" .Values.mastodon.hooks.s3Upload.endpoint }}
  55. - name: RCLONE_CONFIG_REMOTE_ACCESS_KEY_ID
  56. valueFrom:
  57. secretKeyRef:
  58. name: {{ required "Please specify a secret with S3 credentials for S3 asset uploads" .Values.mastodon.hooks.s3Upload.secretRef.name }}
  59. key: {{ .Values.mastodon.hooks.s3Upload.secretRef.keys.accesKeyId }}
  60. - name: RCLONE_CONFIG_REMOTE_SECRET_ACCESS_KEY
  61. valueFrom:
  62. secretKeyRef:
  63. name: {{ required "Please specify a secret with S3 credentials for S3 asset uploads" .Values.mastodon.hooks.s3Upload.secretRef.name }}
  64. key: {{ .Values.mastodon.hooks.s3Upload.secretRef.keys.secretAccessKey }}
  65. {{- with .Values.mastodon.hooks.s3Upload.rclone.env }}
  66. {{- toYaml . | nindent 12 }}
  67. {{- end }}
  68. command:
  69. - rclone
  70. args:
  71. - copy
  72. - /assets/public
  73. - "remote:{{ required "Please specify a bucket for S3 asset uploads" .Values.mastodon.hooks.s3Upload.bucket }}"
  74. - --fast-list
  75. - --transfers=32
  76. - --include
  77. - "{assets,packs}/**"
  78. - --progress
  79. - -vv
  80. volumeMounts:
  81. - mountPath: /assets
  82. name: assets
  83. resources:
  84. requests:
  85. cpu: 100m
  86. memory: 256Mi
  87. limits:
  88. memory: 500Mi
  89. volumes:
  90. - name: assets
  91. emptyDir: {}
  92. {{- end -}}