1# Available parameters and their default values for the SeaweedFS chart.
4 createClusterRole: true
7 imageName: chrislusf/seaweedfs
8 imagePullPolicy: IfNotPresent
20 # we will use this serviceAccountName for all ClusterRoles/ClusterRoleBindings
21 serviceAccountName: "seaweedfs"
28 # if enabled will use global.replicationPlacment and override master & filer defaultReplicaPlacement config
29 enableReplication: false
30 # replication type is XYZ:
31 # X number of replica in other data centers
32 # Y number of replica in other racks in the same data center
33 # Z number of replica in other servers in the same rack
34 replicationPlacment: "001"
36 WEED_CLUSTER_DEFAULT: "sw"
37 WEED_CLUSTER_SW_MASTER: "seaweedfs-master.seaweedfs:9333"
38 WEED_CLUSTER_SW_FILER: "seaweedfs-filer-client.seaweedfs:8888"
39 # WEED_JWT_SIGNING_KEY:
41 # name: seaweedfs-signing-key
51 imageOverride: cgr.dev/chainguard-private/seaweedfs-fips:4.47-r0@sha256:16ba2b7cb5bd5274852578f3e7003d174b44c6cf60e1493aef3dd57606f057f9
58 volumePreallocate: false
59 volumeSizeLimitMB: 1000
60 loggingOverrideLevel: null
61 # number of seconds between heartbeats, default 5
63 # threshold to vacuum and reclaim spaces, default 0.3 (30%)
64 garbageThreshold: null
65 # Prometheus push interval in seconds, default 15
66 metricsIntervalSec: 15
67 # replication type is XYZ:
68 # X number of replica in other data centers
69 # Y number of replica in other racks in the same data center
70 # Z number of replica in other servers in the same rack
71 defaultReplication: "000"
72 # Disable http request, only gRpc operations are allowed
75 # Enter any extra configuration for master.toml here.
76 # It may be a multi-line string.
77 # You may use ANY storage-class, example with local-path-provisioner
78 # Annotations are optional.
80 # type: "persistentVolumeClaim"
82 # storageClass: "local-path-provisioner"
86 # You may also spacify an existing claim:
88 # type: "existingClaim"
98 hostPathPrefix: /storage
99 ## @param master.sidecars Add additional sidecar containers to the master pod(s)
102 ## - name: your-image-name
104 ## imagePullPolicy: Always
107 ## containerPort: 1234
112 extraVolumeMounts: ""
113 ## Set podManagementPolicy
114 podManagementPolicy: Parallel
115 # Resource requests, limits, etc. for the master cluster placement. This
116 # should map directly to the value of the resources field for a PodSpec,
117 # formatted as a multi-line string. By default no direct resource request
120 # updatePartition is used to control a careful rolling update of SeaweedFS
124 # Commenting out or setting as empty the affinity variable, will allow
125 # deployment to single node services such as Minikube
128 requiredDuringSchedulingIgnoredDuringExecution:
131 app.kubernetes.io/name: {{ template "seaweedfs.name" . }}
132 app.kubernetes.io/instance: {{ .Release.Name }}
133 app.kubernetes.io/component: master
134 topologyKey: kubernetes.io/hostname
135 # Toleration Settings for master pods
136 # This should be a multi-line string matching the Toleration array
139 # nodeSelector labels for master pod assignment, formatted as a muli-line string.
140 # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
143 kubernetes.io/arch: amd64
147 # used to assign priority to master pods
148 # ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
149 priorityClassName: ""
150 # used to assign a service account.
151 # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
152 serviceAccountName: ""
156 # host: false for "*" hostname
157 host: "master.seaweedfs.local"
159 nginx.ingress.kubernetes.io/auth-type: "basic"
160 nginx.ingress.kubernetes.io/auth-secret: "default/ingress-basic-auth-secret"
161 nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - SW-Master'
162 nginx.ingress.kubernetes.io/service-upstream: "true"
163 nginx.ingress.kubernetes.io/rewrite-target: /$1
164 nginx.ingress.kubernetes.io/use-regex: "true"
165 nginx.ingress.kubernetes.io/enable-rewrite-log: "true"
166 nginx.ingress.kubernetes.io/ssl-redirect: "false"
167 nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
168 nginx.ingress.kubernetes.io/configuration-snippet: |
169 sub_filter '<head>' '<head> <base href="/sw-master/">'; #add base url
170 sub_filter '="/' '="./'; #make absolute paths to relative
171 sub_filter '=/' '=./';
172 sub_filter '/seaweedfsstatic' './seaweedfsstatic';
175 extraEnvironmentVars:
176 WEED_MASTER_VOLUME_GROWTH_COPY_1: '7'
177 WEED_MASTER_VOLUME_GROWTH_COPY_2: '6'
178 WEED_MASTER_VOLUME_GROWTH_COPY_3: '3'
179 WEED_MASTER_VOLUME_GROWTH_COPY_OTHER: '1'
180 # used to configure livenessProbe on master-server containers
185 path: /cluster/status
187 initialDelaySeconds: 20
192 # used to configure readinessProbe on master-server containers
197 path: /cluster/status
199 initialDelaySeconds: 10
202 failureThreshold: 100
209 imageOverride: cgr.dev/chainguard-private/seaweedfs-fips:4.47-r0@sha256:16ba2b7cb5bd5274852578f3e7003d174b44c6cf60e1493aef3dd57606f057f9
216 loggingOverrideLevel: null
217 # number of seconds between heartbeats, must be smaller than or equal to the master's setting
219 # Choose [memory|leveldb|leveldbMedium|leveldbLarge] mode for memory~performance balance., default memory
221 # limit file size to avoid out of memory, default 256mb
222 fileSizeLimitMB: null
223 # minimum free disk space(in percents). If free disk space lower this value - all volumes marks as ReadOnly
224 minFreeSpacePercent: 7
225 # For each data disk you may use ANY storage-class, example with local-path-provisioner
226 # Annotations are optional.
229 # type: "persistentVolumeClaim"
231 # storageClass: "local-path-provisioner"
234 # maxVolumes: 0 # If set to zero on non-windows OS, the limit will be auto configured. (default "7")
236 # You may also spacify an existing claim:
238 # type: "existingClaim"
239 # claimName: "my-pvc"
240 # maxVolumes: 0 # If set to zero on non-windows OS, the limit will be auto configured. (default "7")
247 # type: "persistentVolumeClaim"
248 # storageClass: "yourClassNameOfChoice"
251 # idx can be defined by:
255 # hostPathPrefix: /ssd
260 # type: "persistentVolumeClaim"
262 # storageClass: "local-path-provisioner"
267 # type: "existingClaim"
268 # claimName: "myClaim"
270 # same applies to "logs"
273 # limit background compaction or copying speed in mega bytes per second
275 # Volume server's rack name
277 # Volume server's data center name
279 # Redirect moved or non-local volumes. (default proxy)
281 # Comma separated Ip addresses having write permission. No limit if empty.
283 # Adjust jpg orientation when uploading.
284 imagesFixOrientation: false
285 ## @param volume.sidecars Add additional sidecar containers to the volume pod(s)
288 ## - name: your-image-name
290 ## imagePullPolicy: Always
293 ## containerPort: 1234
298 extraVolumeMounts: ""
299 ## Set podManagementPolicy
300 podManagementPolicy: Parallel
302 # Commenting out or setting as empty the affinity variable, will allow
303 # deployment to single node services such as Minikube
306 requiredDuringSchedulingIgnoredDuringExecution:
309 app.kubernetes.io/name: {{ template "seaweedfs.name" . }}
310 app.kubernetes.io/instance: {{ .Release.Name }}
311 app.kubernetes.io/component: volume
312 topologyKey: kubernetes.io/hostname
313 # Resource requests, limits, etc. for the server cluster placement. This
314 # should map directly to the value of the resources field for a PodSpec,
315 # formatted as a multi-line string. By default no direct resource request
318 # Toleration Settings for server pods
319 # This should be a multi-line string matching the Toleration array
322 # nodeSelector labels for server pod assignment, formatted as a muli-line string.
323 # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
326 kubernetes.io/arch: amd64
330 # used to assign priority to server pods
331 # ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
332 priorityClassName: ""
333 # used to assign a service account.
334 # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
335 serviceAccountName: ""
336 extraEnvironmentVars:
337 # used to configure livenessProbe on volume-server containers
344 initialDelaySeconds: 20
349 # used to configure readinessProbe on volume-server containers
356 initialDelaySeconds: 15
359 failureThreshold: 100
366 imageOverride: cgr.dev/chainguard-private/seaweedfs-fips:4.47-r0@sha256:16ba2b7cb5bd5274852578f3e7003d174b44c6cf60e1493aef3dd57606f057f9
372 loggingOverrideLevel: null
374 # replication type is XYZ:
375 # X number of replica in other data centers
376 # Y number of replica in other racks in the same data center
377 # Z number of replica in other servers in the same rack
378 defaultReplicaPlacement: "000"
379 # turn off directory listing
380 disableDirListing: false
381 # split files larger than the limit, default 32
383 # encrypt data on volume servers
384 encryptVolumeData: false
385 # Whether proxy or redirect to volume server during file GET request
386 redirectOnRead: false
387 # Limit sub dir listing size (default 100000)
389 # Disable http request, only gRpc operations are allowed
391 # DEPRECATE: enablePVC, storage, storageClass
392 # Consider replacing with filer.data section below instead.
394 # Settings for configuring stateful storage of filer pods.
395 # enablePVC will create a pvc for filer for data persistence.
397 # storage should be set to the disk size of the attached volume.
399 # storageClass is the class of storage which defaults to null (the Kube cluster will pick the default).
401 # You may use ANY storage-class, example with local-path-provisioner
402 # Annotations are optional.
404 # type: "persistentVolumeClaim"
406 # storageClass: "local-path-provisioner"
410 # You may also specify an existing claim:
412 # type: "existingClaim"
413 # claimName: "my-pvc"
418 hostPathPrefix: /storage
423 hostPathPrefix: /storage
424 ## @param filer.sidecars Add additional sidecar containers to the filer pod(s)
427 ## - name: your-image-name
429 ## imagePullPolicy: Always
432 ## containerPort: 1234
437 extraVolumeMounts: ""
438 ## Set podManagementPolicy
439 podManagementPolicy: Parallel
441 # Commenting out or setting as empty the affinity variable, will allow
442 # deployment to single node services such as Minikube
445 requiredDuringSchedulingIgnoredDuringExecution:
448 app.kubernetes.io/name: {{ template "seaweedfs.name" . }}
449 app.kubernetes.io/instance: {{ .Release.Name }}
450 app.kubernetes.io/component: filer
451 topologyKey: kubernetes.io/hostname
452 # updatePartition is used to control a careful rolling update of SeaweedFS
455 # Resource requests, limits, etc. for the server cluster placement. This
456 # should map directly to the value of the resources field for a PodSpec,
457 # formatted as a multi-line string. By default no direct resource request
460 # Toleration Settings for server pods
461 # This should be a multi-line string matching the Toleration array
464 # nodeSelector labels for server pod assignment, formatted as a muli-line string.
465 # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
468 kubernetes.io/arch: amd64
472 # used to assign priority to server pods
473 # ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
474 priorityClassName: ""
475 # used to assign a service account.
476 # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
477 serviceAccountName: ""
481 # host: false for "*" hostname
482 host: "seaweedfs.cluster.local"
484 nginx.ingress.kubernetes.io/backend-protocol: GRPC
485 nginx.ingress.kubernetes.io/auth-type: "basic"
486 nginx.ingress.kubernetes.io/auth-secret: "default/ingress-basic-auth-secret"
487 nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - SW-Filer'
488 nginx.ingress.kubernetes.io/service-upstream: "true"
489 nginx.ingress.kubernetes.io/rewrite-target: /$1
490 nginx.ingress.kubernetes.io/use-regex: "true"
491 nginx.ingress.kubernetes.io/enable-rewrite-log: "true"
492 nginx.ingress.kubernetes.io/ssl-redirect: "false"
493 nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
494 nginx.ingress.kubernetes.io/configuration-snippet: |
495 sub_filter '<head>' '<head> <base href="/sw-filer/">'; #add base url
496 sub_filter '="/' '="./'; #make absolute paths to relative
497 sub_filter '=/' '=./';
498 sub_filter '/seaweedfsstatic' './seaweedfsstatic';
500 # extraEnvVars is a list of extra enviroment variables to set with the stateful set.
501 extraEnvironmentVars:
502 WEED_MYSQL_ENABLED: "false"
503 WEED_MYSQL_HOSTNAME: "mysql-db-host"
504 WEED_MYSQL_PORT: "3306"
505 WEED_MYSQL_DATABASE: "sw_database"
506 WEED_MYSQL_CONNECTION_MAX_IDLE: "5"
507 WEED_MYSQL_CONNECTION_MAX_OPEN: "75"
508 # "refresh" connection every 10 minutes, eliminating mysql closing "old" connections
509 WEED_MYSQL_CONNECTION_MAX_LIFETIME_SECONDS: "600"
510 # enable usage of memsql as filer backend
511 WEED_MYSQL_INTERPOLATEPARAMS: "true"
512 # if you want to use leveldb2, then should enable "enablePVC". or you may lose your data.
513 WEED_LEVELDB2_ENABLED: "true"
514 # with http DELETE, by default the filer would check whether a folder is empty.
515 # recursive_delete will delete all sub folders and files, similar to "rm -Rf"
516 WEED_FILER_OPTIONS_RECURSIVE_DELETE: "false"
517 # directories under this folder will be automatically creating a separate bucket
518 WEED_FILER_BUCKETS_FOLDER: "/buckets"
519 # used to configure livenessProbe on filer containers
526 initialDelaySeconds: 20
531 # used to configure readinessProbe on filer containers
538 initialDelaySeconds: 10
541 failureThreshold: 100
543 # secret env variables
544 secretExtraEnvironmentVars: []
545 # WEED_POSTGRES_USERNAME:
547 # name: postgres-credentials
549 # WEED_POSTGRES_PASSWORD:
551 # name: postgres-credentials
557 # add additional https port
559 # allow empty folders
560 allowEmptyFolder: false
561 # Suffix of the host name, {bucket}.{domainName}
563 # enable user & permission to s3 (need to inject to all services)
565 # set to the name of an existing kubernetes Secret with the s3 json config file
566 # should have a secret key called seaweedfs_s3_config with an inline json configure
567 existingConfigSecret: null
569 # You may specify buckets to be created during the install process.
570 # Buckets may be exposed publicly by setting `anonymousRead` to `true`
573 # anonymousRead: true
575 # anonymousRead: false
585 # add additional https port
588 loggingOverrideLevel: null
589 # allow empty folders
590 allowEmptyFolder: true
591 # enable user & permission to s3 (need to inject to all services)
593 # set to the name of an existing kubernetes Secret with the s3 json config file
594 # should have a secret key called seaweedfs_s3_config with an inline json config
595 existingConfigSecret: null
597 # Suffix of the host name, {bucket}.{domainName}
599 ## @param s3.sidecars Add additional sidecar containers to the s3 pod(s)
602 ## - name: your-image-name
604 ## imagePullPolicy: Always
607 ## containerPort: 1234
612 extraVolumeMounts: ""
613 # Resource requests, limits, etc. for the server cluster placement. This
614 # should map directly to the value of the resources field for a PodSpec,
615 # formatted as a multi-line string. By default no direct resource request
618 # Toleration Settings for server pods
619 # This should be a multi-line string matching the Toleration array
622 # nodeSelector labels for server pod assignment, formatted as a muli-line string.
623 # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
626 kubernetes.io/arch: amd64
630 # used to assign priority to server pods
631 # ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
632 priorityClassName: ""
633 # used to assign a service account.
634 # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
635 serviceAccountName: ""
640 hostPathPrefix: /storage
641 extraEnvironmentVars:
642 # used to configure livenessProbe on s3 containers
649 initialDelaySeconds: 20
654 # used to configure readinessProbe on s3 containers
661 initialDelaySeconds: 15
664 failureThreshold: 100
669 # host: false for "*" hostname
670 host: "seaweedfs.cluster.local"
671 # additional ingress annotations for the s3 endpoint
674 imageOverride: cgr.dev/chainguard-private/seaweedfs-fips:4.47-r0@sha256:16ba2b7cb5bd5274852578f3e7003d174b44c6cf60e1493aef3dd57606f057f9
676 commonName: "SeaweedFS CA"
680 duration: 2160h # 90d
681 renewBefore: 360h # 15d
682 externalCertificates:
683 # This will avoid the need to use cert-manager and will rely on providing your own external certificates and CA
684 # you will need to store your provided certificates in the secret read by the different services:
685 # seaweedfs-master-cert, seaweedfs-filer-cert, etc. Can see any statefulset definition to see secret names
687# Labels to be added to all the created pods
689# Annotations to be added to all the created pods