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.

935 lines
27 KiB

fix helm install error for No such file or directory (#5250) * weed/shell: Cluster check other disk types (#5245) * week/shell: Cluster check other disk types The `cluster.check` command only took the empty (`""`) and `hdd` disk types into consideration, but a cluster with only `ssd` or `nvme` disk types would be equally valid. This commit simply checks that _any_ disk type is defined, and that some volumes are available for it. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Replace loop that copies slice Use the following construct instead of a `for` loop: ```golang x = append(x, y...) ``` See https://staticcheck.dev/docs/checks#S1011. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Check disk types when filer is in use Filer stores its metadata logs in generic (i.e. `""`) or HDD disk type volumes, so make sure those disk types exist and have volumes associated with them when Filer is deployed in the cluster. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> --------- Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Cluster check other disk types (#5245) * week/shell: Cluster check other disk types The `cluster.check` command only took the empty (`""`) and `hdd` disk types into consideration, but a cluster with only `ssd` or `nvme` disk types would be equally valid. This commit simply checks that _any_ disk type is defined, and that some volumes are available for it. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Replace loop that copies slice Use the following construct instead of a `for` loop: ```golang x = append(x, y...) ``` See https://staticcheck.dev/docs/checks#S1011. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Check disk types when filer is in use Filer stores its metadata logs in generic (i.e. `""`) or HDD disk type volumes, so make sure those disk types exist and have volumes associated with them when Filer is deployed in the cluster. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> --------- Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * fix helm install error for No such file or directory --------- Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> Co-authored-by: Benoît Knecht <bknecht@protonmail.ch>
11 months ago
fix helm install error for No such file or directory (#5250) * weed/shell: Cluster check other disk types (#5245) * week/shell: Cluster check other disk types The `cluster.check` command only took the empty (`""`) and `hdd` disk types into consideration, but a cluster with only `ssd` or `nvme` disk types would be equally valid. This commit simply checks that _any_ disk type is defined, and that some volumes are available for it. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Replace loop that copies slice Use the following construct instead of a `for` loop: ```golang x = append(x, y...) ``` See https://staticcheck.dev/docs/checks#S1011. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Check disk types when filer is in use Filer stores its metadata logs in generic (i.e. `""`) or HDD disk type volumes, so make sure those disk types exist and have volumes associated with them when Filer is deployed in the cluster. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> --------- Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Cluster check other disk types (#5245) * week/shell: Cluster check other disk types The `cluster.check` command only took the empty (`""`) and `hdd` disk types into consideration, but a cluster with only `ssd` or `nvme` disk types would be equally valid. This commit simply checks that _any_ disk type is defined, and that some volumes are available for it. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Replace loop that copies slice Use the following construct instead of a `for` loop: ```golang x = append(x, y...) ``` See https://staticcheck.dev/docs/checks#S1011. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Check disk types when filer is in use Filer stores its metadata logs in generic (i.e. `""`) or HDD disk type volumes, so make sure those disk types exist and have volumes associated with them when Filer is deployed in the cluster. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> --------- Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * fix helm install error for No such file or directory --------- Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> Co-authored-by: Benoît Knecht <bknecht@protonmail.ch>
11 months ago
fix helm install error for No such file or directory (#5250) * weed/shell: Cluster check other disk types (#5245) * week/shell: Cluster check other disk types The `cluster.check` command only took the empty (`""`) and `hdd` disk types into consideration, but a cluster with only `ssd` or `nvme` disk types would be equally valid. This commit simply checks that _any_ disk type is defined, and that some volumes are available for it. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Replace loop that copies slice Use the following construct instead of a `for` loop: ```golang x = append(x, y...) ``` See https://staticcheck.dev/docs/checks#S1011. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Check disk types when filer is in use Filer stores its metadata logs in generic (i.e. `""`) or HDD disk type volumes, so make sure those disk types exist and have volumes associated with them when Filer is deployed in the cluster. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> --------- Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Cluster check other disk types (#5245) * week/shell: Cluster check other disk types The `cluster.check` command only took the empty (`""`) and `hdd` disk types into consideration, but a cluster with only `ssd` or `nvme` disk types would be equally valid. This commit simply checks that _any_ disk type is defined, and that some volumes are available for it. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Replace loop that copies slice Use the following construct instead of a `for` loop: ```golang x = append(x, y...) ``` See https://staticcheck.dev/docs/checks#S1011. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Check disk types when filer is in use Filer stores its metadata logs in generic (i.e. `""`) or HDD disk type volumes, so make sure those disk types exist and have volumes associated with them when Filer is deployed in the cluster. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> --------- Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * fix helm install error for No such file or directory --------- Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> Co-authored-by: Benoît Knecht <bknecht@protonmail.ch>
11 months ago
fix helm install error for No such file or directory (#5250) * weed/shell: Cluster check other disk types (#5245) * week/shell: Cluster check other disk types The `cluster.check` command only took the empty (`""`) and `hdd` disk types into consideration, but a cluster with only `ssd` or `nvme` disk types would be equally valid. This commit simply checks that _any_ disk type is defined, and that some volumes are available for it. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Replace loop that copies slice Use the following construct instead of a `for` loop: ```golang x = append(x, y...) ``` See https://staticcheck.dev/docs/checks#S1011. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Check disk types when filer is in use Filer stores its metadata logs in generic (i.e. `""`) or HDD disk type volumes, so make sure those disk types exist and have volumes associated with them when Filer is deployed in the cluster. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> --------- Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Cluster check other disk types (#5245) * week/shell: Cluster check other disk types The `cluster.check` command only took the empty (`""`) and `hdd` disk types into consideration, but a cluster with only `ssd` or `nvme` disk types would be equally valid. This commit simply checks that _any_ disk type is defined, and that some volumes are available for it. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Replace loop that copies slice Use the following construct instead of a `for` loop: ```golang x = append(x, y...) ``` See https://staticcheck.dev/docs/checks#S1011. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Check disk types when filer is in use Filer stores its metadata logs in generic (i.e. `""`) or HDD disk type volumes, so make sure those disk types exist and have volumes associated with them when Filer is deployed in the cluster. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> --------- Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * fix helm install error for No such file or directory --------- Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> Co-authored-by: Benoît Knecht <bknecht@protonmail.ch>
11 months ago
fix helm install error for No such file or directory (#5250) * weed/shell: Cluster check other disk types (#5245) * week/shell: Cluster check other disk types The `cluster.check` command only took the empty (`""`) and `hdd` disk types into consideration, but a cluster with only `ssd` or `nvme` disk types would be equally valid. This commit simply checks that _any_ disk type is defined, and that some volumes are available for it. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Replace loop that copies slice Use the following construct instead of a `for` loop: ```golang x = append(x, y...) ``` See https://staticcheck.dev/docs/checks#S1011. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Check disk types when filer is in use Filer stores its metadata logs in generic (i.e. `""`) or HDD disk type volumes, so make sure those disk types exist and have volumes associated with them when Filer is deployed in the cluster. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> --------- Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Cluster check other disk types (#5245) * week/shell: Cluster check other disk types The `cluster.check` command only took the empty (`""`) and `hdd` disk types into consideration, but a cluster with only `ssd` or `nvme` disk types would be equally valid. This commit simply checks that _any_ disk type is defined, and that some volumes are available for it. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Replace loop that copies slice Use the following construct instead of a `for` loop: ```golang x = append(x, y...) ``` See https://staticcheck.dev/docs/checks#S1011. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Check disk types when filer is in use Filer stores its metadata logs in generic (i.e. `""`) or HDD disk type volumes, so make sure those disk types exist and have volumes associated with them when Filer is deployed in the cluster. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> --------- Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * fix helm install error for No such file or directory --------- Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> Co-authored-by: Benoît Knecht <bknecht@protonmail.ch>
11 months ago
fix helm install error for No such file or directory (#5250) * weed/shell: Cluster check other disk types (#5245) * week/shell: Cluster check other disk types The `cluster.check` command only took the empty (`""`) and `hdd` disk types into consideration, but a cluster with only `ssd` or `nvme` disk types would be equally valid. This commit simply checks that _any_ disk type is defined, and that some volumes are available for it. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Replace loop that copies slice Use the following construct instead of a `for` loop: ```golang x = append(x, y...) ``` See https://staticcheck.dev/docs/checks#S1011. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Check disk types when filer is in use Filer stores its metadata logs in generic (i.e. `""`) or HDD disk type volumes, so make sure those disk types exist and have volumes associated with them when Filer is deployed in the cluster. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> --------- Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Cluster check other disk types (#5245) * week/shell: Cluster check other disk types The `cluster.check` command only took the empty (`""`) and `hdd` disk types into consideration, but a cluster with only `ssd` or `nvme` disk types would be equally valid. This commit simply checks that _any_ disk type is defined, and that some volumes are available for it. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Replace loop that copies slice Use the following construct instead of a `for` loop: ```golang x = append(x, y...) ``` See https://staticcheck.dev/docs/checks#S1011. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * weed/shell: Check disk types when filer is in use Filer stores its metadata logs in generic (i.e. `""`) or HDD disk type volumes, so make sure those disk types exist and have volumes associated with them when Filer is deployed in the cluster. Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> --------- Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> * fix helm install error for No such file or directory --------- Signed-off-by: Benoît Knecht <bknecht@protonmail.ch> Co-authored-by: Benoît Knecht <bknecht@protonmail.ch>
11 months ago
4 years ago
  1. # Available parameters and their default values for the SeaweedFS chart.
  2. global:
  3. createClusterRole: true
  4. registry: ""
  5. repository: ""
  6. imageName: chrislusf/seaweedfs
  7. imagePullPolicy: IfNotPresent
  8. imagePullSecrets: ""
  9. restartPolicy: Always
  10. loggingLevel: 1
  11. enableSecurity: false
  12. masterServer: null
  13. securityConfig:
  14. jwtSigning:
  15. volumeWrite: true
  16. volumeRead: false
  17. filerWrite: false
  18. filerRead: false
  19. # we will use this serviceAccountName for all ClusterRoles/ClusterRoleBindings
  20. serviceAccountName: "seaweedfs"
  21. automountServiceAccountToken: true
  22. certificates:
  23. alphacrds: false
  24. monitoring:
  25. enabled: false
  26. gatewayHost: null
  27. gatewayPort: null
  28. additionalLabels: {}
  29. # if enabled will use global.replicationPlacment and override master & filer defaultReplicaPlacement config
  30. enableReplication: false
  31. # replication type is XYZ:
  32. # X number of replica in other data centers
  33. # Y number of replica in other racks in the same data center
  34. # Z number of replica in other servers in the same rack
  35. replicationPlacment: "001"
  36. extraEnvironmentVars:
  37. WEED_CLUSTER_DEFAULT: "sw"
  38. WEED_CLUSTER_SW_MASTER: "seaweedfs-master.seaweedfs:9333"
  39. WEED_CLUSTER_SW_FILER: "seaweedfs-filer-client.seaweedfs:8888"
  40. # WEED_JWT_SIGNING_KEY:
  41. # secretKeyRef:
  42. # name: seaweedfs-signing-key
  43. # key: signingKey
  44. image:
  45. registry: ""
  46. repository: ""
  47. master:
  48. enabled: true
  49. imageOverride: null
  50. restartPolicy: null
  51. replicas: 1
  52. port: 9333
  53. grpcPort: 19333
  54. metricsPort: 9327
  55. ipBind: "0.0.0.0"
  56. volumePreallocate: false
  57. volumeSizeLimitMB: 1000
  58. loggingOverrideLevel: null
  59. # number of seconds between heartbeats, default 5
  60. pulseSeconds: null
  61. # threshold to vacuum and reclaim spaces, default 0.3 (30%)
  62. garbageThreshold: null
  63. # Prometheus push interval in seconds, default 15
  64. metricsIntervalSec: 15
  65. # replication type is XYZ:
  66. # X number of replica in other data centers
  67. # Y number of replica in other racks in the same data center
  68. # Z number of replica in other servers in the same rack
  69. defaultReplication: "000"
  70. # Disable http request, only gRpc operations are allowed
  71. disableHttp: false
  72. config: |-
  73. # Enter any extra configuration for master.toml here.
  74. # It may be a multi-line string.
  75. # You may use ANY storage-class, example with local-path-provisioner
  76. # Annotations are optional.
  77. # data:
  78. # type: "persistentVolumeClaim"
  79. # size: "24Ti"
  80. # storageClass: "local-path-provisioner"
  81. # annotations:
  82. # "key": "value"
  83. #
  84. # You may also spacify an existing claim:
  85. # data:
  86. # type: "existingClaim"
  87. # claimName: "my-pvc"
  88. #
  89. # You can also use emptyDir storage:
  90. # data:
  91. # type: "emptyDir"
  92. data:
  93. type: "hostPath"
  94. storageClass: ""
  95. hostPathPrefix: /ssd
  96. # You may use ANY storage-class, example with local-path-provisioner
  97. # Annotations are optional.
  98. # logs:
  99. # type: "persistentVolumeClaim"
  100. # size: "24Ti"
  101. # storageClass: "local-path-provisioner"
  102. # annotations:
  103. # "key": "value"
  104. # You can also use emptyDir storage:
  105. # logs:
  106. # type: "emptyDir"
  107. logs:
  108. type: "hostPath"
  109. size: ""
  110. storageClass: ""
  111. hostPathPrefix: /storage
  112. ## @param master.sidecars Add additional sidecar containers to the master pod(s)
  113. ## e.g:
  114. ## sidecars:
  115. ## - name: your-image-name
  116. ## image: your-image
  117. ## imagePullPolicy: Always
  118. ## ports:
  119. ## - name: portname
  120. ## containerPort: 1234
  121. ##
  122. sidecars: []
  123. initContainers: ""
  124. extraVolumes: ""
  125. extraVolumeMounts: ""
  126. # Labels to be added to the master pods
  127. podLabels: {}
  128. # Annotations to be added to the master pods
  129. podAnnotations: {}
  130. ## Set podManagementPolicy
  131. podManagementPolicy: Parallel
  132. # Resource requests, limits, etc. for the master cluster placement. This
  133. # should map directly to the value of the resources field for a PodSpec,
  134. # formatted as a multi-line string. By default no direct resource request
  135. # is made.
  136. resources: {}
  137. # updatePartition is used to control a careful rolling update of SeaweedFS
  138. # masters.
  139. updatePartition: 0
  140. # Affinity Settings
  141. # Commenting out or setting as empty the affinity variable, will allow
  142. # deployment to single node services such as Minikube
  143. affinity: |
  144. podAntiAffinity:
  145. requiredDuringSchedulingIgnoredDuringExecution:
  146. - labelSelector:
  147. matchLabels:
  148. app.kubernetes.io/name: {{ template "seaweedfs.name" . }}
  149. app.kubernetes.io/instance: {{ .Release.Name }}
  150. app.kubernetes.io/component: master
  151. topologyKey: kubernetes.io/hostname
  152. # Toleration Settings for master pods
  153. # This should be a multi-line string matching the Toleration array
  154. # in a PodSpec.
  155. tolerations: ""
  156. # nodeSelector labels for master pod assignment, formatted as a muli-line string.
  157. # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
  158. # Example:
  159. nodeSelector: |
  160. kubernetes.io/arch: amd64
  161. # nodeSelector: |
  162. # sw-backend: "true"
  163. # used to assign priority to master pods
  164. # ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
  165. priorityClassName: ""
  166. # used to assign a service account.
  167. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
  168. serviceAccountName: ""
  169. # Configure security context for Pod
  170. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
  171. # Example:
  172. # podSecurityContext:
  173. # enabled: true
  174. # runAsUser: 1000
  175. # runAsGroup: 3000
  176. # fsGroup: 2000
  177. podSecurityContext: {}
  178. # Configure security context for Container
  179. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
  180. # Example:
  181. # containerSecurityContext:
  182. # enabled: true
  183. # runAsUser: 2000
  184. # allowPrivilegeEscalation: false
  185. containerSecurityContext: {}
  186. ingress:
  187. enabled: false
  188. className: "nginx"
  189. # host: false for "*" hostname
  190. host: "master.seaweedfs.local"
  191. annotations:
  192. nginx.ingress.kubernetes.io/auth-type: "basic"
  193. nginx.ingress.kubernetes.io/auth-secret: "default/ingress-basic-auth-secret"
  194. nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - SW-Master'
  195. nginx.ingress.kubernetes.io/service-upstream: "true"
  196. nginx.ingress.kubernetes.io/rewrite-target: /$1
  197. nginx.ingress.kubernetes.io/use-regex: "true"
  198. nginx.ingress.kubernetes.io/enable-rewrite-log: "true"
  199. nginx.ingress.kubernetes.io/ssl-redirect: "false"
  200. nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
  201. nginx.ingress.kubernetes.io/configuration-snippet: |
  202. sub_filter '<head>' '<head> <base href="/sw-master/">'; #add base url
  203. sub_filter '="/' '="./'; #make absolute paths to relative
  204. sub_filter '=/' '=./';
  205. sub_filter '/seaweedfsstatic' './seaweedfsstatic';
  206. sub_filter_once off;
  207. tls: []
  208. extraEnvironmentVars:
  209. WEED_MASTER_VOLUME_GROWTH_COPY_1: '7'
  210. WEED_MASTER_VOLUME_GROWTH_COPY_2: '6'
  211. WEED_MASTER_VOLUME_GROWTH_COPY_3: '3'
  212. WEED_MASTER_VOLUME_GROWTH_COPY_OTHER: '1'
  213. # used to configure livenessProbe on master-server containers
  214. #
  215. livenessProbe:
  216. enabled: true
  217. httpGet:
  218. path: /cluster/status
  219. scheme: HTTP
  220. initialDelaySeconds: 20
  221. periodSeconds: 30
  222. successThreshold: 1
  223. failureThreshold: 4
  224. timeoutSeconds: 10
  225. # used to configure readinessProbe on master-server containers
  226. #
  227. readinessProbe:
  228. enabled: true
  229. httpGet:
  230. path: /cluster/status
  231. scheme: HTTP
  232. initialDelaySeconds: 10
  233. periodSeconds: 45
  234. successThreshold: 2
  235. failureThreshold: 100
  236. timeoutSeconds: 10
  237. volume:
  238. enabled: true
  239. imageOverride: null
  240. restartPolicy: null
  241. port: 8080
  242. grpcPort: 18080
  243. metricsPort: 9327
  244. ipBind: "0.0.0.0"
  245. replicas: 1
  246. loggingOverrideLevel: null
  247. # number of seconds between heartbeats, must be smaller than or equal to the master's setting
  248. pulseSeconds: null
  249. # Choose [memory|leveldb|leveldbMedium|leveldbLarge] mode for memory~performance balance., default memory
  250. index: null
  251. # limit file size to avoid out of memory, default 256mb
  252. fileSizeLimitMB: null
  253. # minimum free disk space(in percents). If free disk space lower this value - all volumes marks as ReadOnly
  254. minFreeSpacePercent: 7
  255. # For each data disk you may use ANY storage-class, example with local-path-provisioner
  256. # Annotations are optional.
  257. # dataDirs:
  258. # - name: data:
  259. # type: "persistentVolumeClaim"
  260. # size: "24Ti"
  261. # storageClass: "local-path-provisioner"
  262. # annotations:
  263. # "key": "value"
  264. # maxVolumes: 0 # If set to zero on non-windows OS, the limit will be auto configured. (default "7")
  265. #
  266. # You may also spacify an existing claim:
  267. # - name: data
  268. # type: "existingClaim"
  269. # claimName: "my-pvc"
  270. # maxVolumes: 0 # If set to zero on non-windows OS, the limit will be auto configured. (default "7")
  271. #
  272. # You can also use emptyDir storage:
  273. # - name: data
  274. # type: "emptyDir"
  275. # maxVolumes: 0 # If set to zero on non-windows OS, the limit will be auto configured. (default "7")
  276. dataDirs:
  277. - name: data1
  278. type: "hostPath"
  279. hostPathPrefix: /ssd
  280. maxVolumes: 0
  281. # - name: data2
  282. # type: "persistentVolumeClaim"
  283. # storageClass: "yourClassNameOfChoice"
  284. # size: "800Gi"
  285. # maxVolumes: 0
  286. # This will automatically create a job for patching Kubernetes resources if the dataDirs type is 'persistentVolumeClaim' and the size has changed.
  287. resizeHook:
  288. enabled: true
  289. image: bitnami/kubectl
  290. # idx can be defined by:
  291. #
  292. # idx:
  293. # type: "hostPath"
  294. # hostPathPrefix: /ssd
  295. #
  296. # or
  297. #
  298. # idx:
  299. # type: "persistentVolumeClaim"
  300. # size: "20Gi"
  301. # storageClass: "local-path-provisioner"
  302. #
  303. # or
  304. #
  305. # idx:
  306. # type: "existingClaim"
  307. # claimName: "myClaim"
  308. #
  309. # or
  310. #
  311. # idx:
  312. # type: "emptyDir"
  313. # same applies to "logs"
  314. idx: {}
  315. logs: {}
  316. # limit background compaction or copying speed in mega bytes per second
  317. compactionMBps: "50"
  318. # Volume server's rack name
  319. rack: null
  320. # Volume server's data center name
  321. dataCenter: null
  322. # Redirect moved or non-local volumes. (default proxy)
  323. readMode: proxy
  324. # Comma separated Ip addresses having write permission. No limit if empty.
  325. whiteList: null
  326. # Adjust jpg orientation when uploading.
  327. imagesFixOrientation: false
  328. ## @param volume.sidecars Add additional sidecar containers to the volume pod(s)
  329. ## e.g:
  330. ## sidecars:
  331. ## - name: your-image-name
  332. ## image: your-image
  333. ## imagePullPolicy: Always
  334. ## ports:
  335. ## - name: portname
  336. ## containerPort: 1234
  337. ##
  338. sidecars: []
  339. initContainers: ""
  340. extraVolumes: ""
  341. extraVolumeMounts: ""
  342. # Labels to be added to the volume pods
  343. podLabels: {}
  344. # Annotations to be added to the volume pods
  345. podAnnotations: {}
  346. ## Set podManagementPolicy
  347. podManagementPolicy: Parallel
  348. # Affinity Settings
  349. # Commenting out or setting as empty the affinity variable, will allow
  350. # deployment to single node services such as Minikube
  351. affinity: |
  352. podAntiAffinity:
  353. requiredDuringSchedulingIgnoredDuringExecution:
  354. - labelSelector:
  355. matchLabels:
  356. app.kubernetes.io/name: {{ template "seaweedfs.name" . }}
  357. app.kubernetes.io/instance: {{ .Release.Name }}
  358. app.kubernetes.io/component: volume
  359. topologyKey: kubernetes.io/hostname
  360. # Resource requests, limits, etc. for the server cluster placement. This
  361. # should map directly to the value of the resources field for a PodSpec,
  362. # formatted as a multi-line string. By default no direct resource request
  363. # is made.
  364. resources: {}
  365. # Toleration Settings for server pods
  366. # This should be a multi-line string matching the Toleration array
  367. # in a PodSpec.
  368. tolerations: ""
  369. # nodeSelector labels for server pod assignment, formatted as a muli-line string.
  370. # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
  371. # Example:
  372. nodeSelector: |
  373. kubernetes.io/arch: amd64
  374. # nodeSelector: |
  375. # sw-volume: "true"
  376. # used to assign priority to server pods
  377. # ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
  378. priorityClassName: ""
  379. # used to assign a service account.
  380. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
  381. serviceAccountName: ""
  382. extraEnvironmentVars:
  383. # Configure security context for Pod
  384. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
  385. # Example:
  386. # podSecurityContext:
  387. # enabled: true
  388. # runAsUser: 1000
  389. # runAsGroup: 3000
  390. # fsGroup: 2000
  391. podSecurityContext: {}
  392. # Configure security context for Container
  393. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
  394. # Example:
  395. # containerSecurityContext:
  396. # enabled: true
  397. # runAsUser: 2000
  398. # allowPrivilegeEscalation: false
  399. containerSecurityContext: {}
  400. # used to configure livenessProbe on volume-server containers
  401. #
  402. livenessProbe:
  403. enabled: true
  404. httpGet:
  405. path: /healthz
  406. scheme: HTTP
  407. initialDelaySeconds: 20
  408. periodSeconds: 90
  409. successThreshold: 1
  410. failureThreshold: 4
  411. timeoutSeconds: 30
  412. # used to configure readinessProbe on volume-server containers
  413. #
  414. readinessProbe:
  415. enabled: true
  416. httpGet:
  417. path: /healthz
  418. scheme: HTTP
  419. initialDelaySeconds: 15
  420. periodSeconds: 15
  421. successThreshold: 1
  422. failureThreshold: 100
  423. timeoutSeconds: 30
  424. filer:
  425. enabled: true
  426. imageOverride: null
  427. restartPolicy: null
  428. replicas: 1
  429. port: 8888
  430. grpcPort: 18888
  431. metricsPort: 9327
  432. loggingOverrideLevel: null
  433. filerGroup: ""
  434. # replication type is XYZ:
  435. # X number of replica in other data centers
  436. # Y number of replica in other racks in the same data center
  437. # Z number of replica in other servers in the same rack
  438. defaultReplicaPlacement: "000"
  439. # turn off directory listing
  440. disableDirListing: false
  441. # split files larger than the limit, default 32
  442. maxMB: null
  443. # encrypt data on volume servers
  444. encryptVolumeData: false
  445. # Whether proxy or redirect to volume server during file GET request
  446. redirectOnRead: false
  447. # Limit sub dir listing size (default 100000)
  448. dirListLimit: 100000
  449. # Disable http request, only gRpc operations are allowed
  450. disableHttp: false
  451. # DEPRECATE: enablePVC, storage, storageClass
  452. # Consider replacing with filer.data section below instead.
  453. # Settings for configuring stateful storage of filer pods.
  454. # enablePVC will create a pvc for filer for data persistence.
  455. enablePVC: false
  456. # storage should be set to the disk size of the attached volume.
  457. storage: 25Gi
  458. # storageClass is the class of storage which defaults to null (the Kube cluster will pick the default).
  459. storageClass: null
  460. # You may use ANY storage-class, example with local-path-provisioner
  461. # Annotations are optional.
  462. # data:
  463. # type: "persistentVolumeClaim"
  464. # size: "24Ti"
  465. # storageClass: "local-path-provisioner"
  466. # annotations:
  467. # "key": "value"
  468. #
  469. # You may also specify an existing claim:
  470. # data:
  471. # type: "existingClaim"
  472. # claimName: "my-pvc"
  473. #
  474. # You can also use emptyDir storage:
  475. # data:
  476. # type: "emptyDir"
  477. data:
  478. type: "hostPath"
  479. size: ""
  480. storageClass: ""
  481. hostPathPrefix: /storage
  482. # You may use ANY storage-class, example with local-path-provisioner
  483. # Annotations are optional.
  484. # logs:
  485. # type: "persistentVolumeClaim"
  486. # size: "24Ti"
  487. # storageClass: "local-path-provisioner"
  488. # annotations:
  489. # "key": "value"
  490. # You can also use emptyDir storage:
  491. # logs:
  492. # type: "emptyDir"
  493. logs:
  494. type: "hostPath"
  495. size: ""
  496. storageClass: ""
  497. hostPathPrefix: /storage
  498. ## @param filer.sidecars Add additional sidecar containers to the filer pod(s)
  499. ## e.g:
  500. ## sidecars:
  501. ## - name: your-image-name
  502. ## image: your-image
  503. ## imagePullPolicy: Always
  504. ## ports:
  505. ## - name: portname
  506. ## containerPort: 1234
  507. ##
  508. sidecars: []
  509. initContainers: ""
  510. extraVolumes: ""
  511. extraVolumeMounts: ""
  512. # Labels to be added to the filer pods
  513. podLabels: {}
  514. # Annotations to be added to the filer pods
  515. podAnnotations: {}
  516. ## Set podManagementPolicy
  517. podManagementPolicy: Parallel
  518. # Affinity Settings
  519. # Commenting out or setting as empty the affinity variable, will allow
  520. # deployment to single node services such as Minikube
  521. affinity: |
  522. podAntiAffinity:
  523. requiredDuringSchedulingIgnoredDuringExecution:
  524. - labelSelector:
  525. matchLabels:
  526. app.kubernetes.io/name: {{ template "seaweedfs.name" . }}
  527. app.kubernetes.io/instance: {{ .Release.Name }}
  528. app.kubernetes.io/component: filer
  529. topologyKey: kubernetes.io/hostname
  530. # updatePartition is used to control a careful rolling update of SeaweedFS
  531. # masters.
  532. updatePartition: 0
  533. # Resource requests, limits, etc. for the server cluster placement. This
  534. # should map directly to the value of the resources field for a PodSpec,
  535. # formatted as a multi-line string. By default no direct resource request
  536. # is made.
  537. resources: {}
  538. # Toleration Settings for server pods
  539. # This should be a multi-line string matching the Toleration array
  540. # in a PodSpec.
  541. tolerations: ""
  542. # nodeSelector labels for server pod assignment, formatted as a muli-line string.
  543. # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
  544. # Example:
  545. nodeSelector: |
  546. kubernetes.io/arch: amd64
  547. # nodeSelector: |
  548. # sw-backend: "true"
  549. # used to assign priority to server pods
  550. # ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
  551. priorityClassName: ""
  552. # used to assign a service account.
  553. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
  554. serviceAccountName: ""
  555. # Configure security context for Pod
  556. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
  557. # Example:
  558. # podSecurityContext:
  559. # enabled: true
  560. # runAsUser: 1000
  561. # runAsGroup: 3000
  562. # fsGroup: 2000
  563. podSecurityContext: {}
  564. # Configure security context for Container
  565. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
  566. # Example:
  567. # containerSecurityContext:
  568. # enabled: true
  569. # runAsUser: 2000
  570. # allowPrivilegeEscalation: false
  571. containerSecurityContext: {}
  572. ingress:
  573. enabled: false
  574. className: "nginx"
  575. # host: false for "*" hostname
  576. host: "seaweedfs.cluster.local"
  577. annotations:
  578. nginx.ingress.kubernetes.io/backend-protocol: GRPC
  579. nginx.ingress.kubernetes.io/auth-type: "basic"
  580. nginx.ingress.kubernetes.io/auth-secret: "default/ingress-basic-auth-secret"
  581. nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - SW-Filer'
  582. nginx.ingress.kubernetes.io/service-upstream: "true"
  583. nginx.ingress.kubernetes.io/rewrite-target: /$1
  584. nginx.ingress.kubernetes.io/use-regex: "true"
  585. nginx.ingress.kubernetes.io/enable-rewrite-log: "true"
  586. nginx.ingress.kubernetes.io/ssl-redirect: "false"
  587. nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
  588. nginx.ingress.kubernetes.io/configuration-snippet: |
  589. sub_filter '<head>' '<head> <base href="/sw-filer/">'; #add base url
  590. sub_filter '="/' '="./'; #make absolute paths to relative
  591. sub_filter '=/' '=./';
  592. sub_filter '/seaweedfsstatic' './seaweedfsstatic';
  593. sub_filter_once off;
  594. # extraEnvVars is a list of extra enviroment variables to set with the stateful set.
  595. extraEnvironmentVars:
  596. WEED_MYSQL_ENABLED: "false"
  597. WEED_MYSQL_HOSTNAME: "mysql-db-host"
  598. WEED_MYSQL_PORT: "3306"
  599. WEED_MYSQL_DATABASE: "sw_database"
  600. WEED_MYSQL_CONNECTION_MAX_IDLE: "5"
  601. WEED_MYSQL_CONNECTION_MAX_OPEN: "75"
  602. # "refresh" connection every 10 minutes, eliminating mysql closing "old" connections
  603. WEED_MYSQL_CONNECTION_MAX_LIFETIME_SECONDS: "600"
  604. # enable usage of memsql as filer backend
  605. WEED_MYSQL_INTERPOLATEPARAMS: "true"
  606. # if you want to use leveldb2, then should enable "enablePVC". or you may lose your data.
  607. WEED_LEVELDB2_ENABLED: "true"
  608. # with http DELETE, by default the filer would check whether a folder is empty.
  609. # recursive_delete will delete all sub folders and files, similar to "rm -Rf"
  610. WEED_FILER_OPTIONS_RECURSIVE_DELETE: "false"
  611. # directories under this folder will be automatically creating a separate bucket
  612. WEED_FILER_BUCKETS_FOLDER: "/buckets"
  613. # used to configure livenessProbe on filer containers
  614. #
  615. livenessProbe:
  616. enabled: true
  617. httpGet:
  618. path: /
  619. scheme: HTTP
  620. initialDelaySeconds: 20
  621. periodSeconds: 30
  622. successThreshold: 1
  623. failureThreshold: 5
  624. timeoutSeconds: 10
  625. # used to configure readinessProbe on filer containers
  626. #
  627. readinessProbe:
  628. enabled: true
  629. httpGet:
  630. path: /
  631. scheme: HTTP
  632. initialDelaySeconds: 10
  633. periodSeconds: 15
  634. successThreshold: 1
  635. failureThreshold: 100
  636. timeoutSeconds: 10
  637. # secret env variables
  638. secretExtraEnvironmentVars: {}
  639. # WEED_POSTGRES_USERNAME:
  640. # secretKeyRef:
  641. # name: postgres-credentials
  642. # key: username
  643. # WEED_POSTGRES_PASSWORD:
  644. # secretKeyRef:
  645. # name: postgres-credentials
  646. # key: password
  647. s3:
  648. enabled: false
  649. port: 8333
  650. # add additional https port
  651. httpsPort: 0
  652. # allow empty folders
  653. allowEmptyFolder: false
  654. # Suffix of the host name, {bucket}.{domainName}
  655. domainName: ""
  656. # enable user & permission to s3 (need to inject to all services)
  657. enableAuth: false
  658. # set to the name of an existing kubernetes Secret with the s3 json config file
  659. # should have a secret key called seaweedfs_s3_config with an inline json configure
  660. existingConfigSecret: null
  661. auditLogConfig: {}
  662. # You may specify buckets to be created during the install process.
  663. # Buckets may be exposed publicly by setting `anonymousRead` to `true`
  664. # createBuckets:
  665. # - name: bucket-a
  666. # anonymousRead: true
  667. # - name: bucket-b
  668. # anonymousRead: false
  669. s3:
  670. enabled: false
  671. imageOverride: null
  672. restartPolicy: null
  673. replicas: 1
  674. bindAddress: 0.0.0.0
  675. port: 8333
  676. # add additional https port
  677. httpsPort: 0
  678. metricsPort: 9327
  679. loggingOverrideLevel: null
  680. # allow empty folders
  681. allowEmptyFolder: true
  682. # enable user & permission to s3 (need to inject to all services)
  683. enableAuth: false
  684. # set to the name of an existing kubernetes Secret with the s3 json config file
  685. # should have a secret key called seaweedfs_s3_config with an inline json config
  686. existingConfigSecret: null
  687. auditLogConfig: {}
  688. # Suffix of the host name, {bucket}.{domainName}
  689. domainName: ""
  690. ## @param s3.sidecars Add additional sidecar containers to the s3 pod(s)
  691. ## e.g:
  692. ## sidecars:
  693. ## - name: your-image-name
  694. ## image: your-image
  695. ## imagePullPolicy: Always
  696. ## ports:
  697. ## - name: portname
  698. ## containerPort: 1234
  699. ##
  700. sidecars: []
  701. initContainers: ""
  702. extraVolumes: ""
  703. extraVolumeMounts: ""
  704. # Labels to be added to the s3 pods
  705. podLabels: {}
  706. # Annotations to be added to the s3 pods
  707. podAnnotations: {}
  708. # Resource requests, limits, etc. for the server cluster placement. This
  709. # should map directly to the value of the resources field for a PodSpec,
  710. # formatted as a multi-line string. By default no direct resource request
  711. # is made.
  712. resources: {}
  713. # Toleration Settings for server pods
  714. # This should be a multi-line string matching the Toleration array
  715. # in a PodSpec.
  716. tolerations: ""
  717. # nodeSelector labels for server pod assignment, formatted as a muli-line string.
  718. # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
  719. # Example:
  720. nodeSelector: |
  721. kubernetes.io/arch: amd64
  722. # nodeSelector: |
  723. # sw-backend: "true"
  724. # used to assign priority to server pods
  725. # ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
  726. priorityClassName: ""
  727. # used to assign a service account.
  728. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
  729. serviceAccountName: ""
  730. # Configure security context for Pod
  731. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
  732. # Example:
  733. # podSecurityContext:
  734. # enabled: true
  735. # runAsUser: 1000
  736. # runAsGroup: 3000
  737. # fsGroup: 2000
  738. podSecurityContext: {}
  739. # Configure security context for Container
  740. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
  741. # Example:
  742. # containerSecurityContext:
  743. # enabled: true
  744. # runAsUser: 2000
  745. # allowPrivilegeEscalation: false
  746. containerSecurityContext: {}
  747. # You can also use emptyDir storage:
  748. # logs:
  749. # type: "emptyDir"
  750. logs:
  751. type: "hostPath"
  752. size: ""
  753. storageClass: ""
  754. hostPathPrefix: /storage
  755. extraEnvironmentVars:
  756. # used to configure livenessProbe on s3 containers
  757. #
  758. livenessProbe:
  759. enabled: true
  760. httpGet:
  761. path: /status
  762. scheme: HTTP
  763. initialDelaySeconds: 20
  764. periodSeconds: 60
  765. successThreshold: 1
  766. failureThreshold: 20
  767. timeoutSeconds: 10
  768. # used to configure readinessProbe on s3 containers
  769. #
  770. readinessProbe:
  771. enabled: true
  772. httpGet:
  773. path: /status
  774. scheme: HTTP
  775. initialDelaySeconds: 15
  776. periodSeconds: 15
  777. successThreshold: 1
  778. failureThreshold: 100
  779. timeoutSeconds: 10
  780. ingress:
  781. enabled: false
  782. className: "nginx"
  783. # host: false for "*" hostname
  784. host: "seaweedfs.cluster.local"
  785. # additional ingress annotations for the s3 endpoint
  786. annotations: {}
  787. tls: []
  788. # Deploy Kubernetes COSI Driver for SeaweedFS
  789. # Requires COSI CRDs and controller to be installed in the cluster
  790. # For more information, visit: https://container-object-storage-interface.github.io/docs/deployment-guide
  791. cosi:
  792. enabled: false
  793. image: "ghcr.io/seaweedfs/seaweedfs-cosi-driver:v0.1.1"
  794. driverName: "seaweedfs.objectstorage.k8s.io"
  795. bucketClassName: "seaweedfs"
  796. endpoint: ""
  797. region: ""
  798. sidecar:
  799. image: gcr.io/k8s-staging-sig-storage/objectstorage-sidecar/objectstorage-sidecar:v20230130-v0.1.0-24-gc0cf995
  800. # enable user & permission to s3 (need to inject to all services)
  801. enableAuth: false
  802. # set to the name of an existing kubernetes Secret with the s3 json config file
  803. # should have a secret key called seaweedfs_s3_config with an inline json configure
  804. existingConfigSecret: null
  805. podSecurityContext: {}
  806. containerSecurityContext: {}
  807. extraVolumes: ""
  808. extraVolumeMounts: ""
  809. certificates:
  810. commonName: "SeaweedFS CA"
  811. ipAddresses: []
  812. keyAlgorithm: RSA
  813. keySize: 2048
  814. duration: 2160h # 90d
  815. renewBefore: 360h # 15d
  816. externalCertificates:
  817. # This will avoid the need to use cert-manager and will rely on providing your own external certificates and CA
  818. # you will need to store your provided certificates in the secret read by the different services:
  819. # seaweedfs-master-cert, seaweedfs-filer-cert, etc. Can see any statefulset definition to see secret names
  820. enabled: false
  821. # Labels to be added to all the created pods
  822. podLabels: {}
  823. # Annotations to be added to all the created pods
  824. podAnnotations: {}