webdav.yaml 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149
  1. ---
  2. apiVersion: apps/v1
  3. kind: Deployment
  4. metadata:
  5. name: webdav-deployment
  6. namespace: default
  7. labels:
  8. app: webdav
  9. spec:
  10. replicas: 1
  11. selector:
  12. matchLabels:
  13. app: webdav
  14. template:
  15. metadata:
  16. labels:
  17. app: webdav
  18. spec:
  19. containers:
  20. - image: rclone/rclone:1.68
  21. name: rclone
  22. imagePullPolicy: Always
  23. ports:
  24. - containerPort: 80
  25. volumeMounts:
  26. - name: webdav-data-vol
  27. mountPath: /data
  28. - name: webdav-config-vol
  29. mountPath: /config
  30. args: ["serve", "webdav", "/data", "--addr", ":80", "--htpasswd", "/config/htpasswd"]
  31. volumes:
  32. - name: webdav-data-vol
  33. hostPath:
  34. path: /mnt/webdav/data
  35. type: Directory
  36. - name: webdav-config-vol
  37. hostPath:
  38. path: /mnt/webdav/config
  39. type: Directory
  40. ---
  41. apiVersion: v1
  42. kind: Service
  43. metadata:
  44. name: webdav
  45. namespace: default
  46. labels:
  47. app: webdav
  48. spec:
  49. type: ClusterIP
  50. selector:
  51. app: webdav
  52. ports:
  53. - port: 80
  54. targetPort: 80
  55. ---
  56. apiVersion: cert-manager.io/v1
  57. kind: Certificate
  58. metadata:
  59. name: webdav.bodicsek.host
  60. spec:
  61. secretName: webdav.bodicsek.host
  62. issuerRef:
  63. name: letsencrypt-prod
  64. kind: ClusterIssuer
  65. dnsNames:
  66. - webdav.bodicsek.host
  67. ---
  68. apiVersion: traefik.containo.us/v1alpha1
  69. kind: Middleware
  70. metadata:
  71. name: webdav-options-support
  72. spec:
  73. headers:
  74. accessControlAllowMethods:
  75. - "GET"
  76. - "HEAD"
  77. - "POST"
  78. - "PUT"
  79. - "DELETE"
  80. - "PATCH"
  81. - "COPY"
  82. - "LOCK"
  83. - "UNLOCK"
  84. - "MKCOL"
  85. - "MOVE"
  86. - "PROPFIND"
  87. - "PROPPATCH"
  88. - "OPTIONS"
  89. accessControlAllowHeaders:
  90. - "*"
  91. accessControlAllowOriginList:
  92. - "*"
  93. accessControlMaxAge: 100
  94. ---
  95. apiVersion: traefik.containo.us/v1alpha1
  96. kind: IngressRoute
  97. metadata:
  98. name: webdav
  99. namespace: default
  100. spec:
  101. entryPoints:
  102. - websecure
  103. routes:
  104. - kind: Rule
  105. match: Host(`webdav.bodicsek.host`)
  106. middlewares:
  107. - name: webdav-options-support
  108. services:
  109. - kind: Service
  110. name: webdav
  111. namespace: default
  112. passHostHeader: true
  113. port: 80
  114. tls:
  115. secretName: webdav.bodicsek.host
  116. ---
  117. apiVersion: cert-manager.io/v1
  118. kind: Certificate
  119. metadata:
  120. name: note.bodicsek.host
  121. spec:
  122. secretName: note.bodicsek.host
  123. issuerRef:
  124. name: letsencrypt-prod
  125. kind: ClusterIssuer
  126. dnsNames:
  127. - note.bodicsek.host
  128. ---
  129. apiVersion: traefik.containo.us/v1alpha1
  130. kind: IngressRoute
  131. metadata:
  132. name: note
  133. namespace: default
  134. spec:
  135. entryPoints:
  136. - websecure
  137. routes:
  138. - kind: Rule
  139. match: Host(`note.bodicsek.host`)
  140. middlewares:
  141. - name: webdav-options-support
  142. services:
  143. - kind: Service
  144. name: webdav
  145. namespace: default
  146. passHostHeader: true
  147. port: 80
  148. tls:
  149. secretName: note.bodicsek.host