values.yaml 38 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274
  1. # Available parameters and their default values for the SeaweedFS chart.
  2. global:
  3. createClusterRole: true
  4. registry: ""
  5. # if repository is set, it overrides the namespace part of imageName
  6. repository: ""
  7. imageName: chrislusf/seaweedfs
  8. imagePullPolicy: IfNotPresent
  9. imagePullSecrets: ""
  10. restartPolicy: Always
  11. loggingLevel: 1
  12. enableSecurity: false
  13. masterServer: null
  14. securityConfig:
  15. jwtSigning:
  16. volumeWrite: true
  17. volumeRead: false
  18. filerWrite: false
  19. filerRead: false
  20. # we will use this serviceAccountName for all ClusterRoles/ClusterRoleBindings
  21. serviceAccountName: "seaweedfs"
  22. automountServiceAccountToken: true
  23. certificates:
  24. alphacrds: false
  25. monitoring:
  26. enabled: false
  27. gatewayHost: null
  28. gatewayPort: null
  29. additionalLabels: {}
  30. # if enabled will use global.replicationPlacement and override master & filer defaultReplicaPlacement config
  31. enableReplication: false
  32. # replication type is XYZ:
  33. # X number of replica in other data centers
  34. # Y number of replica in other racks in the same data center
  35. # Z number of replica in other servers in the same rack
  36. replicationPlacement: "001"
  37. extraEnvironmentVars:
  38. WEED_CLUSTER_DEFAULT: "sw"
  39. WEED_CLUSTER_SW_MASTER: "seaweedfs-master.seaweedfs:9333"
  40. WEED_CLUSTER_SW_FILER: "seaweedfs-filer-client.seaweedfs:8888"
  41. # WEED_JWT_SIGNING_KEY:
  42. # secretKeyRef:
  43. # name: seaweedfs-signing-key
  44. # key: signingKey
  45. image:
  46. registry: ""
  47. repository: ""
  48. tag: ""
  49. master:
  50. enabled: true
  51. imageOverride: null
  52. restartPolicy: null
  53. replicas: 1
  54. port: 9333
  55. grpcPort: 19333
  56. metricsPort: 9327
  57. metricsIp: "" # Metrics listen IP. If empty, defaults to ipBind
  58. ipBind: "0.0.0.0"
  59. volumePreallocate: false
  60. volumeSizeLimitMB: 1000
  61. loggingOverrideLevel: null
  62. # threshold to vacuum and reclaim spaces, default 0.3 (30%)
  63. garbageThreshold: null
  64. # Prometheus push interval in seconds, default 15
  65. metricsIntervalSec: 15
  66. # replication type is XYZ:
  67. # X number of replica in other data centers
  68. # Y number of replica in other racks in the same data center
  69. # Z number of replica in other servers in the same rack
  70. defaultReplication: "000"
  71. # Disable http request, only gRpc operations are allowed
  72. disableHttp: false
  73. # Resume previous state on start master server
  74. resumeState: false
  75. # Use Hashicorp Raft
  76. raftHashicorp: false
  77. # Whether to bootstrap the Raft cluster. Only use it when use Hashicorp Raft
  78. raftBootstrap: false
  79. # election timeout of master servers
  80. electionTimeout: "10s"
  81. # heartbeat interval of master servers, and will be randomly multiplied by [1, 1.25)
  82. heartbeatInterval: "300ms"
  83. # Custom command line arguments to add to the master command
  84. # Example to fix IPv6 metrics connectivity issues:
  85. # extraArgs: ["-metricsIp", "0.0.0.0"]
  86. # Example with multiple args:
  87. # extraArgs: ["-customFlag", "value", "-anotherFlag"]
  88. extraArgs: []
  89. config: |-
  90. # Enter any extra configuration for master.toml here.
  91. # It may be a multi-line string.
  92. # You may use ANY storage-class, example with local-path-provisioner
  93. # Annotations are optional.
  94. # data:
  95. # type: "persistentVolumeClaim"
  96. # size: "24Ti"
  97. # storageClass: "local-path-provisioner"
  98. # annotations:
  99. # "key": "value"
  100. #
  101. # You may also spacify an existing claim:
  102. # data:
  103. # type: "existingClaim"
  104. # claimName: "my-pvc"
  105. #
  106. # You can also use emptyDir storage:
  107. # data:
  108. # type: "emptyDir"
  109. data:
  110. type: "hostPath"
  111. storageClass: ""
  112. hostPathPrefix: /ssd
  113. # You may use ANY storage-class, example with local-path-provisioner
  114. # Annotations are optional.
  115. # logs:
  116. # type: "persistentVolumeClaim"
  117. # size: "24Ti"
  118. # storageClass: "local-path-provisioner"
  119. # annotations:
  120. # "key": "value"
  121. # You can also use emptyDir storage:
  122. # logs:
  123. # type: "emptyDir"
  124. logs:
  125. type: "hostPath"
  126. size: ""
  127. storageClass: ""
  128. hostPathPrefix: /storage
  129. ## @param master.sidecars Add additional sidecar containers to the master pod(s)
  130. ## e.g:
  131. ## sidecars:
  132. ## - name: your-image-name
  133. ## image: your-image
  134. ## imagePullPolicy: Always
  135. ## ports:
  136. ## - name: portname
  137. ## containerPort: 1234
  138. ##
  139. sidecars: []
  140. initContainers: ""
  141. extraVolumes: ""
  142. extraVolumeMounts: ""
  143. # Labels to be added to the master pods
  144. podLabels: {}
  145. # Annotations to be added to the master pods
  146. podAnnotations: {}
  147. # Annotations to be added to the master resources
  148. annotations: {}
  149. ## Set podManagementPolicy
  150. podManagementPolicy: Parallel
  151. # Resource requests, limits, etc. for the master cluster placement. This
  152. # should map directly to the value of the resources field for a PodSpec,
  153. # formatted as a multi-line string. By default no direct resource request
  154. # is made.
  155. resources: {}
  156. # updatePartition is used to control a careful rolling update of SeaweedFS
  157. # masters.
  158. updatePartition: 0
  159. # Affinity Settings
  160. # Commenting out or setting as empty the affinity variable, will allow
  161. # deployment to single node services such as Minikube
  162. affinity: |
  163. podAntiAffinity:
  164. requiredDuringSchedulingIgnoredDuringExecution:
  165. - labelSelector:
  166. matchLabels:
  167. app.kubernetes.io/name: {{ template "seaweedfs.name" . }}
  168. app.kubernetes.io/instance: {{ .Release.Name }}
  169. app.kubernetes.io/component: master
  170. topologyKey: kubernetes.io/hostname
  171. # Topology Spread Constraints Settings
  172. # This should map directly to the value of the topologySpreadConstraints
  173. # for a PodSpec. By Default no constraints are set.
  174. topologySpreadConstraints: ""
  175. # Toleration Settings for master pods
  176. # This should be a multi-line string matching the Toleration array
  177. # in a PodSpec.
  178. tolerations: ""
  179. # nodeSelector labels for master pod assignment, formatted as a muli-line string.
  180. # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
  181. # Example:
  182. nodeSelector: ""
  183. # nodeSelector: |
  184. # sw-backend: "true"
  185. # used to assign priority to master pods
  186. # ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
  187. priorityClassName: ""
  188. # used to assign a service account.
  189. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
  190. serviceAccountName: ""
  191. # Configure security context for Pod
  192. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
  193. # Example:
  194. # podSecurityContext:
  195. # enabled: true
  196. # runAsUser: 1000
  197. # runAsGroup: 3000
  198. # fsGroup: 2000
  199. podSecurityContext: {}
  200. # Configure security context for Container
  201. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
  202. # Example:
  203. # containerSecurityContext:
  204. # enabled: true
  205. # runAsUser: 2000
  206. # allowPrivilegeEscalation: false
  207. containerSecurityContext: {}
  208. ingress:
  209. enabled: false
  210. className: "nginx"
  211. # host: false for "*" hostname
  212. host: "master.seaweedfs.local"
  213. annotations:
  214. nginx.ingress.kubernetes.io/auth-type: "basic"
  215. nginx.ingress.kubernetes.io/auth-secret: "default/ingress-basic-auth-secret"
  216. nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - SW-Master'
  217. nginx.ingress.kubernetes.io/service-upstream: "true"
  218. nginx.ingress.kubernetes.io/rewrite-target: /$1
  219. nginx.ingress.kubernetes.io/use-regex: "true"
  220. nginx.ingress.kubernetes.io/enable-rewrite-log: "true"
  221. nginx.ingress.kubernetes.io/ssl-redirect: "false"
  222. nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
  223. nginx.ingress.kubernetes.io/configuration-snippet: |
  224. sub_filter '<head>' '<head> <base href="/sw-master/">'; #add base url
  225. sub_filter '="/' '="./'; #make absolute paths to relative
  226. sub_filter '=/' '=./';
  227. sub_filter '/seaweedfsstatic' './seaweedfsstatic';
  228. sub_filter_once off;
  229. tls: []
  230. extraEnvironmentVars:
  231. WEED_MASTER_VOLUME_GROWTH_COPY_1: '7'
  232. WEED_MASTER_VOLUME_GROWTH_COPY_2: '6'
  233. WEED_MASTER_VOLUME_GROWTH_COPY_3: '3'
  234. WEED_MASTER_VOLUME_GROWTH_COPY_OTHER: '1'
  235. # used to configure livenessProbe on master-server containers
  236. #
  237. livenessProbe:
  238. enabled: true
  239. httpGet:
  240. path: /cluster/status
  241. scheme: HTTP
  242. initialDelaySeconds: 20
  243. periodSeconds: 30
  244. successThreshold: 1
  245. failureThreshold: 4
  246. timeoutSeconds: 10
  247. # used to configure readinessProbe on master-server containers
  248. #
  249. readinessProbe:
  250. enabled: true
  251. httpGet:
  252. path: /cluster/status
  253. scheme: HTTP
  254. initialDelaySeconds: 10
  255. periodSeconds: 45
  256. successThreshold: 2
  257. failureThreshold: 100
  258. timeoutSeconds: 10
  259. volume:
  260. enabled: true
  261. imageOverride: null
  262. restartPolicy: null
  263. port: 8080
  264. grpcPort: 18080
  265. metricsPort: 9327
  266. metricsIp: "" # Metrics listen IP. If empty, defaults to ipBind
  267. ipBind: "0.0.0.0"
  268. replicas: 1
  269. loggingOverrideLevel: null
  270. # number of seconds between heartbeats, must be smaller than or equal to the master's setting
  271. pulseSeconds: null
  272. # Choose [memory|leveldb|leveldbMedium|leveldbLarge] mode for memory~performance balance., default memory
  273. index: null
  274. # limit file size to avoid out of memory, default 256mb
  275. fileSizeLimitMB: null
  276. # minimum free disk space(in percents). If free disk space lower this value - all volumes marks as ReadOnly
  277. minFreeSpacePercent: 7
  278. # Custom command line arguments to add to the volume command
  279. # Example to fix IPv6 metrics connectivity issues:
  280. # extraArgs: ["-metricsIp", "0.0.0.0"]
  281. # Example with multiple args:
  282. # extraArgs: ["-customFlag", "value", "-anotherFlag"]
  283. extraArgs: []
  284. # For each data disk you may use ANY storage-class, example with local-path-provisioner
  285. # Annotations are optional.
  286. # dataDirs:
  287. # - name: data
  288. # type: "persistentVolumeClaim"
  289. # size: "24Ti"
  290. # storageClass: "local-path-provisioner"
  291. # annotations:
  292. # "key": "value"
  293. # maxVolumes: 0 # If set to zero on non-windows OS, the limit will be auto configured. (default "7")
  294. #
  295. # You may also spacify an existing claim:
  296. # - name: data
  297. # type: "existingClaim"
  298. # claimName: "my-pvc"
  299. # maxVolumes: 0 # If set to zero on non-windows OS, the limit will be auto configured. (default "7")
  300. #
  301. # You can also use emptyDir storage:
  302. # - name: data
  303. # type: "emptyDir"
  304. # maxVolumes: 0 # If set to zero on non-windows OS, the limit will be auto configured. (default "7")
  305. #
  306. # If these don't meet your needs, you can use "custom" here along with extraVolumes and extraVolumeMounts
  307. # Particularly useful when using more than 1 for the volume server replicas.
  308. # - name: data
  309. # type: "custom"
  310. # maxVolumes: 0 # If set to zero on non-windows OS, the limit will be auto configured. (default "7")
  311. dataDirs:
  312. - name: data1
  313. type: "hostPath"
  314. hostPathPrefix: /ssd
  315. maxVolumes: 0
  316. # - name: data2
  317. # type: "persistentVolumeClaim"
  318. # storageClass: "yourClassNameOfChoice"
  319. # size: "800Gi"
  320. # maxVolumes: 0
  321. # This will automatically create a job for patching Kubernetes resources if the dataDirs type is 'persistentVolumeClaim' and the size has changed.
  322. resizeHook:
  323. enabled: true
  324. image: alpine/k8s:1.28.4
  325. # idx can be defined by:
  326. #
  327. # idx:
  328. # type: "hostPath"
  329. # hostPathPrefix: /ssd
  330. #
  331. # or
  332. #
  333. # idx:
  334. # type: "persistentVolumeClaim"
  335. # size: "20Gi"
  336. # storageClass: "local-path-provisioner"
  337. #
  338. # or
  339. #
  340. # idx:
  341. # type: "existingClaim"
  342. # claimName: "myClaim"
  343. #
  344. # or
  345. #
  346. # idx:
  347. # type: "emptyDir"
  348. # same applies to "logs"
  349. idx: {}
  350. logs: {}
  351. # limit background compaction or copying speed in mega bytes per second
  352. compactionMBps: "50"
  353. # Volume server's rack name
  354. rack: null
  355. # Volume server's data center name
  356. dataCenter: null
  357. # Redirect moved or non-local volumes. (default proxy)
  358. readMode: proxy
  359. # Comma separated Ip addresses having write permission. No limit if empty.
  360. whiteList: null
  361. # Adjust jpg orientation when uploading.
  362. imagesFixOrientation: false
  363. ## @param volume.sidecars Add additional sidecar containers to the volume pod(s)
  364. ## e.g:
  365. ## sidecars:
  366. ## - name: your-image-name
  367. ## image: your-image
  368. ## imagePullPolicy: Always
  369. ## ports:
  370. ## - name: portname
  371. ## containerPort: 1234
  372. ##
  373. sidecars: []
  374. initContainers: ""
  375. # Example for use when using more than 1 volume server replica
  376. # extraVolumeMounts: |
  377. # - name: drive
  378. # mountPath: /drive
  379. # subPathExpr: $(POD_NAME)
  380. # extraVolumes: |
  381. # - name: drive
  382. # hostPath:
  383. # path: /var/mnt/
  384. extraVolumes: ""
  385. extraVolumeMounts: ""
  386. # Labels to be added to the volume pods
  387. podLabels: {}
  388. # Annotations to be added to the volume pods
  389. podAnnotations: {}
  390. # Annotations to be added to the volume resources
  391. annotations: {}
  392. ## Set podManagementPolicy
  393. podManagementPolicy: Parallel
  394. # Affinity Settings
  395. # Commenting out or setting as empty the affinity variable, will allow
  396. # deployment to single node services such as Minikube
  397. affinity: |
  398. podAntiAffinity:
  399. requiredDuringSchedulingIgnoredDuringExecution:
  400. - labelSelector:
  401. matchLabels:
  402. app.kubernetes.io/name: {{ template "seaweedfs.name" . }}
  403. app.kubernetes.io/instance: {{ .Release.Name }}
  404. app.kubernetes.io/component: {{ $volumeName }}
  405. topologyKey: kubernetes.io/hostname
  406. # Topology Spread Constraints Settings
  407. # This should map directly to the value of the topologySpreadConstraints
  408. # for a PodSpec. By Default no constraints are set.
  409. topologySpreadConstraints: ""
  410. # Resource requests, limits, etc. for the server cluster placement. This
  411. # should map directly to the value of the resources field for a PodSpec,
  412. # formatted as a multi-line string. By default no direct resource request
  413. # is made.
  414. resources: {}
  415. # Toleration Settings for server pods
  416. # This should be a multi-line string matching the Toleration array
  417. # in a PodSpec.
  418. tolerations: ""
  419. # nodeSelector labels for server pod assignment, formatted as a muli-line string.
  420. # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
  421. # Example:
  422. nodeSelector: ""
  423. # nodeSelector: |
  424. # sw-volume: "true"
  425. # used to assign priority to server pods
  426. # ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
  427. priorityClassName: ""
  428. # used to assign a service account.
  429. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
  430. serviceAccountName: ""
  431. extraEnvironmentVars:
  432. # Configure security context for Pod
  433. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
  434. # Example:
  435. # podSecurityContext:
  436. # enabled: true
  437. # runAsUser: 1000
  438. # runAsGroup: 3000
  439. # fsGroup: 2000
  440. podSecurityContext: {}
  441. # Configure security context for Container
  442. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
  443. # Example:
  444. # containerSecurityContext:
  445. # enabled: true
  446. # runAsUser: 2000
  447. # allowPrivilegeEscalation: false
  448. containerSecurityContext: {}
  449. # used to configure livenessProbe on volume-server containers
  450. #
  451. livenessProbe:
  452. enabled: true
  453. httpGet:
  454. path: /healthz
  455. scheme: HTTP
  456. initialDelaySeconds: 20
  457. periodSeconds: 90
  458. successThreshold: 1
  459. failureThreshold: 4
  460. timeoutSeconds: 30
  461. # used to configure readinessProbe on volume-server containers
  462. #
  463. readinessProbe:
  464. enabled: true
  465. httpGet:
  466. path: /healthz
  467. scheme: HTTP
  468. initialDelaySeconds: 15
  469. periodSeconds: 15
  470. successThreshold: 1
  471. failureThreshold: 100
  472. timeoutSeconds: 30
  473. # Map of named volume groups for topology-aware deployments.
  474. # Each key inherits all fields from the `volume` section but can override
  475. # them locally—for example, replicas, nodeSelector, dataCenter, etc.
  476. # To switch entirely to this scheme, set `volume.enabled: false`
  477. # and define one entry per zone/data-center under `volumes`.
  478. #
  479. # volumes:
  480. # dc1:
  481. # replicas: 2
  482. # dataCenter: "dc1"
  483. # nodeSelector: |
  484. # topology.kubernetes.io/zone: dc1
  485. # dc2:
  486. # replicas: 2
  487. # dataCenter: "dc2"
  488. # nodeSelector: |
  489. # topology.kubernetes.io/zone: dc2
  490. # dc3:
  491. # replicas: 2
  492. # dataCenter: "dc3"
  493. # nodeSelector: |
  494. # topology.kubernetes.io/zone: dc3
  495. #
  496. volumes: {}
  497. filer:
  498. enabled: true
  499. imageOverride: null
  500. restartPolicy: null
  501. replicas: 1
  502. port: 8888
  503. grpcPort: 18888
  504. metricsPort: 9327
  505. metricsIp: "" # Metrics listen IP. If empty, defaults to ipBind
  506. ipBind: "0.0.0.0" # IP address to bind to. Set to 0.0.0.0 to allow external traffic
  507. loggingOverrideLevel: null
  508. filerGroup: ""
  509. # prefer to read and write to volumes in this data center (not set by default)
  510. dataCenter: null
  511. # prefer to write to volumes in this rack (not set by default)
  512. rack: null
  513. # replication type is XYZ:
  514. # X number of replica in other data centers
  515. # Y number of replica in other racks in the same data center
  516. # Z number of replica in other servers in the same rack
  517. defaultReplicaPlacement: "000"
  518. # turn off directory listing
  519. disableDirListing: false
  520. # split files larger than the limit, default 32
  521. maxMB: null
  522. # encrypt data on volume servers
  523. encryptVolumeData: false
  524. # Whether proxy or redirect to volume server during file GET request
  525. redirectOnRead: false
  526. # Limit sub dir listing size (default 100000)
  527. dirListLimit: 100000
  528. # Disable http request, only gRpc operations are allowed
  529. disableHttp: false
  530. # Custom command line arguments to add to the filer command
  531. # Example to fix IPv6 metrics connectivity issues:
  532. # extraArgs: ["-metricsIp", "0.0.0.0"]
  533. # Example with multiple args:
  534. # extraArgs: ["-customFlag", "value", "-anotherFlag"]
  535. extraArgs: []
  536. # Add a custom notification.toml to configure filer notifications
  537. # Example:
  538. # notificationConfig: |-
  539. # [notification.kafka]
  540. # enabled = false
  541. # hosts = [
  542. # "localhost:9092"
  543. # ]
  544. # topic = "seaweedfs_filer"
  545. # offsetFile = "./last.offset"
  546. # offsetSaveIntervalSeconds = 10
  547. notificationConfig: ""
  548. # DEPRECATE: enablePVC, storage, storageClass
  549. # Consider replacing with filer.data section below instead.
  550. # Settings for configuring stateful storage of filer pods.
  551. # enablePVC will create a pvc for filer for data persistence.
  552. enablePVC: false
  553. # storage should be set to the disk size of the attached volume.
  554. storage: 25Gi
  555. # storageClass is the class of storage which defaults to null (the Kube cluster will pick the default).
  556. storageClass: null
  557. # You may use ANY storage-class, example with local-path-provisioner
  558. # Annotations are optional.
  559. # data:
  560. # type: "persistentVolumeClaim"
  561. # size: "24Ti"
  562. # storageClass: "local-path-provisioner"
  563. # annotations:
  564. # "key": "value"
  565. #
  566. # You may also specify an existing claim:
  567. # data:
  568. # type: "existingClaim"
  569. # claimName: "my-pvc"
  570. #
  571. # You can also use emptyDir storage:
  572. # data:
  573. # type: "emptyDir"
  574. data:
  575. type: "hostPath"
  576. size: ""
  577. storageClass: ""
  578. hostPathPrefix: /storage
  579. # You may use ANY storage-class, example with local-path-provisioner
  580. # Annotations are optional.
  581. # logs:
  582. # type: "persistentVolumeClaim"
  583. # size: "24Ti"
  584. # storageClass: "local-path-provisioner"
  585. # annotations:
  586. # "key": "value"
  587. # You can also use emptyDir storage:
  588. # logs:
  589. # type: "emptyDir"
  590. logs:
  591. type: "hostPath"
  592. size: ""
  593. storageClass: ""
  594. hostPathPrefix: /storage
  595. ## @param filer.sidecars Add additional sidecar containers to the filer pod(s)
  596. ## e.g:
  597. ## sidecars:
  598. ## - name: your-image-name
  599. ## image: your-image
  600. ## imagePullPolicy: Always
  601. ## ports:
  602. ## - name: portname
  603. ## containerPort: 1234
  604. ##
  605. sidecars: []
  606. initContainers: ""
  607. extraVolumes: ""
  608. extraVolumeMounts: ""
  609. # Labels to be added to the filer pods
  610. podLabels: {}
  611. # Annotations to be added to the filer pods
  612. podAnnotations: {}
  613. # Annotations to be added to the filer resource
  614. annotations: {}
  615. ## Set podManagementPolicy
  616. podManagementPolicy: Parallel
  617. # Affinity Settings
  618. # Commenting out or setting as empty the affinity variable, will allow
  619. # deployment to single node services such as Minikube
  620. affinity: |
  621. podAntiAffinity:
  622. requiredDuringSchedulingIgnoredDuringExecution:
  623. - labelSelector:
  624. matchLabels:
  625. app.kubernetes.io/name: {{ template "seaweedfs.name" . }}
  626. app.kubernetes.io/instance: {{ .Release.Name }}
  627. app.kubernetes.io/component: filer
  628. topologyKey: kubernetes.io/hostname
  629. # Topology Spread Constraints Settings
  630. # This should map directly to the value of the topologySpreadConstraints
  631. # for a PodSpec. By Default no constraints are set.
  632. topologySpreadConstraints: ""
  633. # updatePartition is used to control a careful rolling update of SeaweedFS
  634. # masters.
  635. updatePartition: 0
  636. # Resource requests, limits, etc. for the server cluster placement. This
  637. # should map directly to the value of the resources field for a PodSpec,
  638. # formatted as a multi-line string. By default no direct resource request
  639. # is made.
  640. resources: {}
  641. # Toleration Settings for server pods
  642. # This should be a multi-line string matching the Toleration array
  643. # in a PodSpec.
  644. tolerations: ""
  645. # nodeSelector labels for server pod assignment, formatted as a muli-line string.
  646. # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
  647. # Example:
  648. nodeSelector: ""
  649. # nodeSelector: |
  650. # sw-backend: "true"
  651. # used to assign priority to server pods
  652. # ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
  653. priorityClassName: ""
  654. # used to assign a service account.
  655. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
  656. serviceAccountName: ""
  657. # Configure security context for Pod
  658. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
  659. # Example:
  660. # podSecurityContext:
  661. # enabled: true
  662. # runAsUser: 1000
  663. # runAsGroup: 3000
  664. # fsGroup: 2000
  665. podSecurityContext: {}
  666. # Configure security context for Container
  667. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
  668. # Example:
  669. # containerSecurityContext:
  670. # enabled: true
  671. # runAsUser: 2000
  672. # allowPrivilegeEscalation: false
  673. containerSecurityContext: {}
  674. ingress:
  675. enabled: false
  676. className: "nginx"
  677. # host: false for "*" hostname
  678. host: "seaweedfs.cluster.local"
  679. annotations:
  680. nginx.ingress.kubernetes.io/backend-protocol: GRPC
  681. nginx.ingress.kubernetes.io/auth-type: "basic"
  682. nginx.ingress.kubernetes.io/auth-secret: "default/ingress-basic-auth-secret"
  683. nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - SW-Filer'
  684. nginx.ingress.kubernetes.io/service-upstream: "true"
  685. nginx.ingress.kubernetes.io/rewrite-target: /$1
  686. nginx.ingress.kubernetes.io/use-regex: "true"
  687. nginx.ingress.kubernetes.io/enable-rewrite-log: "true"
  688. nginx.ingress.kubernetes.io/ssl-redirect: "false"
  689. nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
  690. nginx.ingress.kubernetes.io/configuration-snippet: |
  691. sub_filter '<head>' '<head> <base href="/sw-filer/">'; #add base url
  692. sub_filter '="/' '="./'; #make absolute paths to relative
  693. sub_filter '=/' '=./';
  694. sub_filter '/seaweedfsstatic' './seaweedfsstatic';
  695. sub_filter_once off;
  696. # extraEnvVars is a list of extra environment variables to set with the stateful set.
  697. extraEnvironmentVars:
  698. WEED_MYSQL_ENABLED: "false"
  699. WEED_MYSQL_HOSTNAME: "mysql-db-host"
  700. WEED_MYSQL_PORT: "3306"
  701. WEED_MYSQL_DATABASE: "sw_database"
  702. WEED_MYSQL_CONNECTION_MAX_IDLE: "5"
  703. WEED_MYSQL_CONNECTION_MAX_OPEN: "75"
  704. # "refresh" connection every 10 minutes, eliminating mysql closing "old" connections
  705. WEED_MYSQL_CONNECTION_MAX_LIFETIME_SECONDS: "600"
  706. # enable usage of memsql as filer backend
  707. WEED_MYSQL_INTERPOLATEPARAMS: "true"
  708. # if you want to use leveldb2, then should enable "enablePVC". or you may lose your data.
  709. WEED_LEVELDB2_ENABLED: "true"
  710. # with http DELETE, by default the filer would check whether a folder is empty.
  711. # recursive_delete will delete all sub folders and files, similar to "rm -Rf"
  712. WEED_FILER_OPTIONS_RECURSIVE_DELETE: "false"
  713. # directories under this folder will be automatically creating a separate bucket
  714. WEED_FILER_BUCKETS_FOLDER: "/buckets"
  715. # used to configure livenessProbe on filer containers
  716. #
  717. livenessProbe:
  718. enabled: true
  719. httpGet:
  720. path: /
  721. scheme: HTTP
  722. initialDelaySeconds: 20
  723. periodSeconds: 30
  724. successThreshold: 1
  725. failureThreshold: 5
  726. timeoutSeconds: 10
  727. # used to configure readinessProbe on filer containers
  728. #
  729. readinessProbe:
  730. enabled: true
  731. httpGet:
  732. path: /
  733. scheme: HTTP
  734. initialDelaySeconds: 10
  735. periodSeconds: 15
  736. successThreshold: 1
  737. failureThreshold: 100
  738. timeoutSeconds: 10
  739. # secret env variables
  740. secretExtraEnvironmentVars: {}
  741. # WEED_POSTGRES_USERNAME:
  742. # secretKeyRef:
  743. # name: postgres-credentials
  744. # key: username
  745. # WEED_POSTGRES_PASSWORD:
  746. # secretKeyRef:
  747. # name: postgres-credentials
  748. # key: password
  749. s3:
  750. enabled: false
  751. port: 8333
  752. # add additional https port
  753. httpsPort: 0
  754. # allow empty folders
  755. allowEmptyFolder: false
  756. # Suffix of the host name, {bucket}.{domainName}
  757. domainName: ""
  758. # enable user & permission to s3 (need to inject to all services)
  759. enableAuth: false
  760. # set to the name of an existing kubernetes Secret with the s3 json config file
  761. # should have a secret key called seaweedfs_s3_config with an inline json configure
  762. existingConfigSecret: null
  763. auditLogConfig: {}
  764. # You may specify buckets to be created during the install process.
  765. # Buckets may be exposed publicly by setting `anonymousRead` to `true`
  766. # createBuckets:
  767. # - name: bucket-a
  768. # anonymousRead: true
  769. # - name: bucket-b
  770. # anonymousRead: false
  771. s3:
  772. enabled: true
  773. imageOverride: null
  774. restartPolicy: null
  775. replicas: 1
  776. bindAddress: 0.0.0.0
  777. port: 8333
  778. # add additional https port
  779. httpsPort: 0
  780. metricsPort: 9327
  781. loggingOverrideLevel: null
  782. # allow empty folders
  783. allowEmptyFolder: true
  784. # enable user & permission to s3 (need to inject to all services)
  785. enableAuth: false
  786. # set to the name of an existing kubernetes Secret with the s3 json config file
  787. # should have a secret key called seaweedfs_s3_config with an inline json config
  788. existingConfigSecret: null
  789. auditLogConfig: {}
  790. # Suffix of the host name, {bucket}.{domainName}
  791. domainName: ""
  792. ## @param s3.sidecars Add additional sidecar containers to the s3 pod(s)
  793. ## e.g:
  794. ## sidecars:
  795. ## - name: your-image-name
  796. ## image: your-image
  797. ## imagePullPolicy: Always
  798. ## ports:
  799. ## - name: portname
  800. ## containerPort: 1234
  801. ##
  802. sidecars: []
  803. initContainers: ""
  804. extraVolumes: ""
  805. extraVolumeMounts: ""
  806. # Labels to be added to the s3 pods
  807. podLabels: {}
  808. # Annotations to be added to the s3 pods
  809. podAnnotations: {}
  810. # Annotations to be added to the s3 resources
  811. annotations: {}
  812. # Resource requests, limits, etc. for the server cluster placement. This
  813. # should map directly to the value of the resources field for a PodSpec,
  814. # formatted as a multi-line string. By default no direct resource request
  815. # is made.
  816. resources: {}
  817. # Toleration Settings for server pods
  818. # This should be a multi-line string matching the Toleration array
  819. # in a PodSpec.
  820. tolerations: ""
  821. # nodeSelector labels for server pod assignment, formatted as a muli-line string.
  822. # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
  823. # Example:
  824. nodeSelector: ""
  825. # nodeSelector: |
  826. # sw-backend: "true"
  827. # used to assign priority to server pods
  828. # ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
  829. priorityClassName: ""
  830. # used to assign a service account.
  831. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
  832. serviceAccountName: ""
  833. # Configure security context for Pod
  834. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
  835. # Example:
  836. # podSecurityContext:
  837. # enabled: true
  838. # runAsUser: 1000
  839. # runAsGroup: 3000
  840. # fsGroup: 2000
  841. podSecurityContext: {}
  842. # Configure security context for Container
  843. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
  844. # Example:
  845. # containerSecurityContext:
  846. # enabled: true
  847. # runAsUser: 2000
  848. # allowPrivilegeEscalation: false
  849. containerSecurityContext: {}
  850. # You can also use emptyDir storage:
  851. # logs:
  852. # type: "emptyDir"
  853. logs:
  854. type: "hostPath"
  855. size: ""
  856. storageClass: ""
  857. hostPathPrefix: /storage
  858. extraEnvironmentVars:
  859. # Custom command line arguments to add to the s3 command
  860. # Example to fix connection idle seconds:
  861. extraArgs: ["-idleTimeout=30"]
  862. #extraArgs: []
  863. # used to configure livenessProbe on s3 containers
  864. #
  865. livenessProbe:
  866. enabled: true
  867. httpGet:
  868. path: /status
  869. scheme: HTTP
  870. initialDelaySeconds: 20
  871. periodSeconds: 60
  872. successThreshold: 1
  873. failureThreshold: 20
  874. timeoutSeconds: 10
  875. # used to configure readinessProbe on s3 containers
  876. #
  877. readinessProbe:
  878. enabled: true
  879. httpGet:
  880. path: /status
  881. scheme: HTTP
  882. initialDelaySeconds: 15
  883. periodSeconds: 15
  884. successThreshold: 1
  885. failureThreshold: 100
  886. timeoutSeconds: 10
  887. ingress:
  888. enabled: false
  889. className: "nginx"
  890. # host: false for "*" hostname
  891. host: "seaweedfs.cluster.local"
  892. # additional ingress annotations for the s3 endpoint
  893. annotations: {}
  894. tls: []
  895. sftp:
  896. enabled: false
  897. imageOverride: null
  898. restartPolicy: null
  899. replicas: 1
  900. bindAddress: 0.0.0.0
  901. port: 2022 # Default SFTP port
  902. metricsPort: 9327
  903. metricsIp: "" # If empty, defaults to bindAddress
  904. loggingOverrideLevel: null
  905. # SSH server configuration
  906. sshPrivateKey: "/etc/sw/seaweedfs_sftp_ssh_private_key" # Path to the SSH private key file for host authentication
  907. hostKeysFolder: "/etc/sw/ssh" # path to folder containing SSH private key files for host authentication
  908. authMethods: "password,publickey" # Comma-separated list of allowed auth methods: password, publickey, keyboard-interactive
  909. maxAuthTries: 6 # Maximum number of authentication attempts per connection
  910. bannerMessage: "SeaweedFS SFTP Server" # Message displayed before authentication
  911. loginGraceTime: "2m" # Timeout for authentication
  912. clientAliveInterval: "5s" # Interval for sending keep-alive messages
  913. clientAliveCountMax: 3 # Maximum number of missed keep-alive messages before disconnecting
  914. dataCenter: "" # Prefer to read and write to volumes in this data center
  915. localSocket: "" # Default to /tmp/seaweedfs-sftp-<port>.sock
  916. # User authentication
  917. enableAuth: false
  918. # Set to the name of an existing kubernetes Secret with the sftp json config file
  919. # Should have a secret key called seaweedfs_sftp_config with an inline json config
  920. existingConfigSecret: null
  921. # Set to the name of an existing kubernetes Secret with the list of ssh private keys for sftp
  922. existingSshConfigSecret: null
  923. # Additional resources
  924. sidecars: []
  925. initContainers: ""
  926. extraVolumes: ""
  927. extraVolumeMounts: ""
  928. podLabels: {}
  929. podAnnotations: {}
  930. annotations: {}
  931. resources: {}
  932. tolerations: ""
  933. nodeSelector: ""
  934. priorityClassName: ""
  935. serviceAccountName: ""
  936. podSecurityContext: {}
  937. containerSecurityContext: {}
  938. logs:
  939. type: "hostPath"
  940. hostPathPrefix: /storage
  941. extraEnvironmentVars: {}
  942. # Health checks
  943. # Health checks for SFTP - using tcpSocket instead of httpGet
  944. livenessProbe:
  945. enabled: true
  946. initialDelaySeconds: 20
  947. periodSeconds: 60
  948. successThreshold: 1
  949. failureThreshold: 20
  950. timeoutSeconds: 10
  951. # Health checks for SFTP - using tcpSocket instead of httpGet
  952. readinessProbe:
  953. enabled: true
  954. initialDelaySeconds: 15
  955. periodSeconds: 15
  956. successThreshold: 1
  957. failureThreshold: 100
  958. timeoutSeconds: 10
  959. # All-in-one deployment configuration
  960. allInOne:
  961. enabled: false
  962. imageOverride: null
  963. restartPolicy: Always
  964. # Core configuration
  965. idleTimeout: 30 # Connection idle seconds
  966. dataCenter: "" # Current volume server's data center name
  967. rack: "" # Current volume server's rack name
  968. whiteList: "" # Comma separated IP addresses having write permission
  969. disableHttp: false # Disable HTTP requests, only gRPC operations are allowed
  970. metricsPort: 9324 # Prometheus metrics listen port
  971. metricsIp: "" # Metrics listen IP. If empty, defaults to bindAddress
  972. loggingOverrideLevel: null # Override logging level
  973. # Service configuration
  974. s3:
  975. enabled: false # Whether to enable S3 gateway
  976. sftp:
  977. enabled: false # Whether to enable SFTP server
  978. # Service settings
  979. service:
  980. annotations: {} # Annotations for the service
  981. type: ClusterIP # Service type (ClusterIP, NodePort, LoadBalancer)
  982. # Storage configuration
  983. data:
  984. type: "emptyDir" # Options: "hostPath", "persistentVolumeClaim", "emptyDir"
  985. hostPathPrefix: /mnt/data # Path prefix for hostPath volumes
  986. claimName: seaweedfs-data-pvc # Name of the PVC to use
  987. size: "" # Size of the PVC
  988. storageClass: "" # Storage class for the PVC
  989. # Health checks
  990. readinessProbe:
  991. enabled: true
  992. httpGet:
  993. path: /cluster/status
  994. port: 9333
  995. scheme: HTTP
  996. initialDelaySeconds: 10
  997. periodSeconds: 15
  998. successThreshold: 1
  999. failureThreshold: 3
  1000. timeoutSeconds: 5
  1001. livenessProbe:
  1002. enabled: true
  1003. httpGet:
  1004. path: /cluster/status
  1005. port: 9333
  1006. scheme: HTTP
  1007. initialDelaySeconds: 20
  1008. periodSeconds: 30
  1009. successThreshold: 1
  1010. failureThreshold: 5
  1011. timeoutSeconds: 5
  1012. # Additional resources
  1013. extraEnvironmentVars: {} # Additional environment variables
  1014. extraVolumeMounts: "" # Additional volume mounts
  1015. extraVolumes: "" # Additional volumes
  1016. initContainers: "" # Init containers
  1017. sidecars: "" # Sidecar containers
  1018. annotations: {} # Annotations for the deployment
  1019. podAnnotations: {} # Annotations for the pods
  1020. podLabels: {} # Labels for the pods
  1021. # Scheduling configuration
  1022. # Affinity Settings
  1023. # Commenting out or setting as empty the affinity variable, will allow
  1024. # deployment to single node services such as Minikube
  1025. affinity: |
  1026. podAntiAffinity:
  1027. requiredDuringSchedulingIgnoredDuringExecution:
  1028. - labelSelector:
  1029. matchLabels:
  1030. app.kubernetes.io/name: {{ template "seaweedfs.name" . }}
  1031. app.kubernetes.io/instance: {{ .Release.Name }}
  1032. app.kubernetes.io/component: master
  1033. topologyKey: kubernetes.io/hostname
  1034. # Topology Spread Constraints Settings
  1035. # This should map directly to the value of the topologySpreadConstraints
  1036. # for a PodSpec. By Default no constraints are set.
  1037. topologySpreadConstraints: ""
  1038. # Toleration Settings for master pods
  1039. # This should be a multi-line string matching the Toleration array
  1040. # in a PodSpec.
  1041. tolerations: ""
  1042. # nodeSelector labels for master pod assignment, formatted as a muli-line string.
  1043. # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
  1044. nodeSelector: ""
  1045. # Used to assign priority to master pods
  1046. # ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
  1047. priorityClassName: ""
  1048. # Used to assign a service account.
  1049. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
  1050. serviceAccountName: ""
  1051. # Configure security context for Pod
  1052. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
  1053. # Example:
  1054. # podSecurityContext:
  1055. # enabled: true
  1056. # runAsUser: 1000
  1057. # runAsGroup: 3000
  1058. # fsGroup: 2000
  1059. podSecurityContext: {}
  1060. # Configure security context for Container
  1061. # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
  1062. # Example:
  1063. # containerSecurityContext:
  1064. # enabled: true
  1065. # runAsUser: 2000
  1066. # allowPrivilegeEscalation: false
  1067. containerSecurityContext: {}
  1068. # Resource management
  1069. resources:
  1070. limits:
  1071. cpu: "2"
  1072. memory: "2Gi"
  1073. requests:
  1074. cpu: "500m"
  1075. memory: "1Gi"
  1076. # Deploy Kubernetes COSI Driver for SeaweedFS
  1077. # Requires COSI CRDs and controller to be installed in the cluster
  1078. # For more information, visit: https://container-object-storage-interface.github.io/docs/deployment-guide
  1079. cosi:
  1080. enabled: false
  1081. image: "ghcr.io/seaweedfs/seaweedfs-cosi-driver:v0.1.2"
  1082. driverName: "seaweedfs.objectstorage.k8s.io"
  1083. bucketClassName: "seaweedfs"
  1084. endpoint: ""
  1085. region: ""
  1086. sidecar:
  1087. image: gcr.io/k8s-staging-sig-storage/objectstorage-sidecar:v20250711-controllerv0.2.0-rc1-80-gc2f6e65
  1088. # Resource requests, limits, etc. for the server cluster placement. This
  1089. # should map directly to the value of the resources field for a PodSpec,
  1090. # formatted as a multi-line string. By default no direct resource request
  1091. # is made.
  1092. resources: {}
  1093. # enable user & permission to s3 (need to inject to all services)
  1094. enableAuth: false
  1095. # set to the name of an existing kubernetes Secret with the s3 json config file
  1096. # should have a secret key called seaweedfs_s3_config with an inline json configure
  1097. existingConfigSecret: null
  1098. podSecurityContext: {}
  1099. containerSecurityContext: {}
  1100. extraVolumes: ""
  1101. extraVolumeMounts: ""
  1102. # Resource requests, limits, etc. for the server cluster placement. This
  1103. # should map directly to the value of the resources field for a PodSpec,
  1104. # formatted as a multi-line string. By default no direct resource request
  1105. # is made.
  1106. resources: {}
  1107. certificates:
  1108. commonName: "SeaweedFS CA"
  1109. ipAddresses: []
  1110. keyAlgorithm: RSA
  1111. keySize: 2048
  1112. duration: 2160h # 90d
  1113. renewBefore: 360h # 15d
  1114. externalCertificates:
  1115. # This will avoid the need to use cert-manager and will rely on providing your own external certificates and CA
  1116. # you will need to store your provided certificates in the secret read by the different services:
  1117. # seaweedfs-master-cert, seaweedfs-filer-cert, etc. Can see any statefulset definition to see secret names
  1118. enabled: false
  1119. # Labels to be added to all the created pods
  1120. podLabels: {}
  1121. # Annotations to be added to all the created pods
  1122. podAnnotations: {}