| 12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274 |
- # Available parameters and their default values for the SeaweedFS chart.
- global:
- createClusterRole: true
- registry: ""
- # if repository is set, it overrides the namespace part of imageName
- repository: ""
- imageName: chrislusf/seaweedfs
- imagePullPolicy: IfNotPresent
- imagePullSecrets: ""
- restartPolicy: Always
- loggingLevel: 1
- enableSecurity: false
- masterServer: null
- securityConfig:
- jwtSigning:
- volumeWrite: true
- volumeRead: false
- filerWrite: false
- filerRead: false
- # we will use this serviceAccountName for all ClusterRoles/ClusterRoleBindings
- serviceAccountName: "seaweedfs"
- automountServiceAccountToken: true
- certificates:
- alphacrds: false
- monitoring:
- enabled: false
- gatewayHost: null
- gatewayPort: null
- additionalLabels: {}
- # if enabled will use global.replicationPlacement and override master & filer defaultReplicaPlacement config
- enableReplication: false
- # replication type is XYZ:
- # X number of replica in other data centers
- # Y number of replica in other racks in the same data center
- # Z number of replica in other servers in the same rack
- replicationPlacement: "001"
- extraEnvironmentVars:
- WEED_CLUSTER_DEFAULT: "sw"
- WEED_CLUSTER_SW_MASTER: "seaweedfs-master.seaweedfs:9333"
- WEED_CLUSTER_SW_FILER: "seaweedfs-filer-client.seaweedfs:8888"
- # WEED_JWT_SIGNING_KEY:
- # secretKeyRef:
- # name: seaweedfs-signing-key
- # key: signingKey
- image:
- registry: ""
- repository: ""
- tag: ""
- master:
- enabled: true
- imageOverride: null
- restartPolicy: null
- replicas: 1
- port: 9333
- grpcPort: 19333
- metricsPort: 9327
- metricsIp: "" # Metrics listen IP. If empty, defaults to ipBind
- ipBind: "0.0.0.0"
- volumePreallocate: false
- volumeSizeLimitMB: 1000
- loggingOverrideLevel: null
- # threshold to vacuum and reclaim spaces, default 0.3 (30%)
- garbageThreshold: null
- # Prometheus push interval in seconds, default 15
- metricsIntervalSec: 15
- # replication type is XYZ:
- # X number of replica in other data centers
- # Y number of replica in other racks in the same data center
- # Z number of replica in other servers in the same rack
- defaultReplication: "000"
- # Disable http request, only gRpc operations are allowed
- disableHttp: false
- # Resume previous state on start master server
- resumeState: false
- # Use Hashicorp Raft
- raftHashicorp: false
- # Whether to bootstrap the Raft cluster. Only use it when use Hashicorp Raft
- raftBootstrap: false
- # election timeout of master servers
- electionTimeout: "10s"
- # heartbeat interval of master servers, and will be randomly multiplied by [1, 1.25)
- heartbeatInterval: "300ms"
- # Custom command line arguments to add to the master command
- # Example to fix IPv6 metrics connectivity issues:
- # extraArgs: ["-metricsIp", "0.0.0.0"]
- # Example with multiple args:
- # extraArgs: ["-customFlag", "value", "-anotherFlag"]
- extraArgs: []
- config: |-
- # Enter any extra configuration for master.toml here.
- # It may be a multi-line string.
- # You may use ANY storage-class, example with local-path-provisioner
- # Annotations are optional.
- # data:
- # type: "persistentVolumeClaim"
- # size: "24Ti"
- # storageClass: "local-path-provisioner"
- # annotations:
- # "key": "value"
- #
- # You may also spacify an existing claim:
- # data:
- # type: "existingClaim"
- # claimName: "my-pvc"
- #
- # You can also use emptyDir storage:
- # data:
- # type: "emptyDir"
- data:
- type: "hostPath"
- storageClass: ""
- hostPathPrefix: /ssd
- # You may use ANY storage-class, example with local-path-provisioner
- # Annotations are optional.
- # logs:
- # type: "persistentVolumeClaim"
- # size: "24Ti"
- # storageClass: "local-path-provisioner"
- # annotations:
- # "key": "value"
- # You can also use emptyDir storage:
- # logs:
- # type: "emptyDir"
- logs:
- type: "hostPath"
- size: ""
- storageClass: ""
- hostPathPrefix: /storage
- ## @param master.sidecars Add additional sidecar containers to the master pod(s)
- ## e.g:
- ## sidecars:
- ## - name: your-image-name
- ## image: your-image
- ## imagePullPolicy: Always
- ## ports:
- ## - name: portname
- ## containerPort: 1234
- ##
- sidecars: []
- initContainers: ""
- extraVolumes: ""
- extraVolumeMounts: ""
- # Labels to be added to the master pods
- podLabels: {}
- # Annotations to be added to the master pods
- podAnnotations: {}
- # Annotations to be added to the master resources
- annotations: {}
- ## Set podManagementPolicy
- podManagementPolicy: Parallel
- # Resource requests, limits, etc. for the master cluster placement. This
- # should map directly to the value of the resources field for a PodSpec,
- # formatted as a multi-line string. By default no direct resource request
- # is made.
- resources: {}
- # updatePartition is used to control a careful rolling update of SeaweedFS
- # masters.
- updatePartition: 0
- # Affinity Settings
- # Commenting out or setting as empty the affinity variable, will allow
- # deployment to single node services such as Minikube
- affinity: |
- podAntiAffinity:
- requiredDuringSchedulingIgnoredDuringExecution:
- - labelSelector:
- matchLabels:
- app.kubernetes.io/name: {{ template "seaweedfs.name" . }}
- app.kubernetes.io/instance: {{ .Release.Name }}
- app.kubernetes.io/component: master
- topologyKey: kubernetes.io/hostname
- # Topology Spread Constraints Settings
- # This should map directly to the value of the topologySpreadConstraints
- # for a PodSpec. By Default no constraints are set.
- topologySpreadConstraints: ""
- # Toleration Settings for master pods
- # This should be a multi-line string matching the Toleration array
- # in a PodSpec.
- tolerations: ""
- # nodeSelector labels for master pod assignment, formatted as a muli-line string.
- # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
- # Example:
- nodeSelector: ""
- # nodeSelector: |
- # sw-backend: "true"
- # used to assign priority to master pods
- # ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
- priorityClassName: ""
- # used to assign a service account.
- # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
- serviceAccountName: ""
- # Configure security context for Pod
- # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
- # Example:
- # podSecurityContext:
- # enabled: true
- # runAsUser: 1000
- # runAsGroup: 3000
- # fsGroup: 2000
- podSecurityContext: {}
- # Configure security context for Container
- # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
- # Example:
- # containerSecurityContext:
- # enabled: true
- # runAsUser: 2000
- # allowPrivilegeEscalation: false
- containerSecurityContext: {}
- ingress:
- enabled: false
- className: "nginx"
- # host: false for "*" hostname
- host: "master.seaweedfs.local"
- annotations:
- nginx.ingress.kubernetes.io/auth-type: "basic"
- nginx.ingress.kubernetes.io/auth-secret: "default/ingress-basic-auth-secret"
- nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - SW-Master'
- nginx.ingress.kubernetes.io/service-upstream: "true"
- nginx.ingress.kubernetes.io/rewrite-target: /$1
- nginx.ingress.kubernetes.io/use-regex: "true"
- nginx.ingress.kubernetes.io/enable-rewrite-log: "true"
- nginx.ingress.kubernetes.io/ssl-redirect: "false"
- nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
- nginx.ingress.kubernetes.io/configuration-snippet: |
- sub_filter '<head>' '<head> <base href="/sw-master/">'; #add base url
- sub_filter '="/' '="./'; #make absolute paths to relative
- sub_filter '=/' '=./';
- sub_filter '/seaweedfsstatic' './seaweedfsstatic';
- sub_filter_once off;
- tls: []
- extraEnvironmentVars:
- WEED_MASTER_VOLUME_GROWTH_COPY_1: '7'
- WEED_MASTER_VOLUME_GROWTH_COPY_2: '6'
- WEED_MASTER_VOLUME_GROWTH_COPY_3: '3'
- WEED_MASTER_VOLUME_GROWTH_COPY_OTHER: '1'
- # used to configure livenessProbe on master-server containers
- #
- livenessProbe:
- enabled: true
- httpGet:
- path: /cluster/status
- scheme: HTTP
- initialDelaySeconds: 20
- periodSeconds: 30
- successThreshold: 1
- failureThreshold: 4
- timeoutSeconds: 10
- # used to configure readinessProbe on master-server containers
- #
- readinessProbe:
- enabled: true
- httpGet:
- path: /cluster/status
- scheme: HTTP
- initialDelaySeconds: 10
- periodSeconds: 45
- successThreshold: 2
- failureThreshold: 100
- timeoutSeconds: 10
- volume:
- enabled: true
- imageOverride: null
- restartPolicy: null
- port: 8080
- grpcPort: 18080
- metricsPort: 9327
- metricsIp: "" # Metrics listen IP. If empty, defaults to ipBind
- ipBind: "0.0.0.0"
- replicas: 1
- loggingOverrideLevel: null
- # number of seconds between heartbeats, must be smaller than or equal to the master's setting
- pulseSeconds: null
- # Choose [memory|leveldb|leveldbMedium|leveldbLarge] mode for memory~performance balance., default memory
- index: null
- # limit file size to avoid out of memory, default 256mb
- fileSizeLimitMB: null
- # minimum free disk space(in percents). If free disk space lower this value - all volumes marks as ReadOnly
- minFreeSpacePercent: 7
- # Custom command line arguments to add to the volume command
- # Example to fix IPv6 metrics connectivity issues:
- # extraArgs: ["-metricsIp", "0.0.0.0"]
- # Example with multiple args:
- # extraArgs: ["-customFlag", "value", "-anotherFlag"]
- extraArgs: []
- # For each data disk you may use ANY storage-class, example with local-path-provisioner
- # Annotations are optional.
- # dataDirs:
- # - name: data
- # type: "persistentVolumeClaim"
- # size: "24Ti"
- # storageClass: "local-path-provisioner"
- # annotations:
- # "key": "value"
- # maxVolumes: 0 # If set to zero on non-windows OS, the limit will be auto configured. (default "7")
- #
- # You may also spacify an existing claim:
- # - name: data
- # type: "existingClaim"
- # claimName: "my-pvc"
- # maxVolumes: 0 # If set to zero on non-windows OS, the limit will be auto configured. (default "7")
- #
- # You can also use emptyDir storage:
- # - name: data
- # type: "emptyDir"
- # maxVolumes: 0 # If set to zero on non-windows OS, the limit will be auto configured. (default "7")
- #
- # If these don't meet your needs, you can use "custom" here along with extraVolumes and extraVolumeMounts
- # Particularly useful when using more than 1 for the volume server replicas.
- # - name: data
- # type: "custom"
- # maxVolumes: 0 # If set to zero on non-windows OS, the limit will be auto configured. (default "7")
- dataDirs:
- - name: data1
- type: "hostPath"
- hostPathPrefix: /ssd
- maxVolumes: 0
- # - name: data2
- # type: "persistentVolumeClaim"
- # storageClass: "yourClassNameOfChoice"
- # size: "800Gi"
- # maxVolumes: 0
- # This will automatically create a job for patching Kubernetes resources if the dataDirs type is 'persistentVolumeClaim' and the size has changed.
- resizeHook:
- enabled: true
- image: alpine/k8s:1.28.4
- # idx can be defined by:
- #
- # idx:
- # type: "hostPath"
- # hostPathPrefix: /ssd
- #
- # or
- #
- # idx:
- # type: "persistentVolumeClaim"
- # size: "20Gi"
- # storageClass: "local-path-provisioner"
- #
- # or
- #
- # idx:
- # type: "existingClaim"
- # claimName: "myClaim"
- #
- # or
- #
- # idx:
- # type: "emptyDir"
- # same applies to "logs"
- idx: {}
- logs: {}
- # limit background compaction or copying speed in mega bytes per second
- compactionMBps: "50"
- # Volume server's rack name
- rack: null
- # Volume server's data center name
- dataCenter: null
- # Redirect moved or non-local volumes. (default proxy)
- readMode: proxy
- # Comma separated Ip addresses having write permission. No limit if empty.
- whiteList: null
- # Adjust jpg orientation when uploading.
- imagesFixOrientation: false
- ## @param volume.sidecars Add additional sidecar containers to the volume pod(s)
- ## e.g:
- ## sidecars:
- ## - name: your-image-name
- ## image: your-image
- ## imagePullPolicy: Always
- ## ports:
- ## - name: portname
- ## containerPort: 1234
- ##
- sidecars: []
- initContainers: ""
- # Example for use when using more than 1 volume server replica
- # extraVolumeMounts: |
- # - name: drive
- # mountPath: /drive
- # subPathExpr: $(POD_NAME)
- # extraVolumes: |
- # - name: drive
- # hostPath:
- # path: /var/mnt/
- extraVolumes: ""
- extraVolumeMounts: ""
- # Labels to be added to the volume pods
- podLabels: {}
- # Annotations to be added to the volume pods
- podAnnotations: {}
- # Annotations to be added to the volume resources
- annotations: {}
- ## Set podManagementPolicy
- podManagementPolicy: Parallel
- # Affinity Settings
- # Commenting out or setting as empty the affinity variable, will allow
- # deployment to single node services such as Minikube
- affinity: |
- podAntiAffinity:
- requiredDuringSchedulingIgnoredDuringExecution:
- - labelSelector:
- matchLabels:
- app.kubernetes.io/name: {{ template "seaweedfs.name" . }}
- app.kubernetes.io/instance: {{ .Release.Name }}
- app.kubernetes.io/component: {{ $volumeName }}
- topologyKey: kubernetes.io/hostname
- # Topology Spread Constraints Settings
- # This should map directly to the value of the topologySpreadConstraints
- # for a PodSpec. By Default no constraints are set.
- topologySpreadConstraints: ""
- # Resource requests, limits, etc. for the server cluster placement. This
- # should map directly to the value of the resources field for a PodSpec,
- # formatted as a multi-line string. By default no direct resource request
- # is made.
- resources: {}
- # Toleration Settings for server pods
- # This should be a multi-line string matching the Toleration array
- # in a PodSpec.
- tolerations: ""
- # nodeSelector labels for server pod assignment, formatted as a muli-line string.
- # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
- # Example:
- nodeSelector: ""
- # nodeSelector: |
- # sw-volume: "true"
- # used to assign priority to server pods
- # ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
- priorityClassName: ""
- # used to assign a service account.
- # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
- serviceAccountName: ""
- extraEnvironmentVars:
- # Configure security context for Pod
- # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
- # Example:
- # podSecurityContext:
- # enabled: true
- # runAsUser: 1000
- # runAsGroup: 3000
- # fsGroup: 2000
- podSecurityContext: {}
- # Configure security context for Container
- # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
- # Example:
- # containerSecurityContext:
- # enabled: true
- # runAsUser: 2000
- # allowPrivilegeEscalation: false
- containerSecurityContext: {}
- # used to configure livenessProbe on volume-server containers
- #
- livenessProbe:
- enabled: true
- httpGet:
- path: /healthz
- scheme: HTTP
- initialDelaySeconds: 20
- periodSeconds: 90
- successThreshold: 1
- failureThreshold: 4
- timeoutSeconds: 30
- # used to configure readinessProbe on volume-server containers
- #
- readinessProbe:
- enabled: true
- httpGet:
- path: /healthz
- scheme: HTTP
- initialDelaySeconds: 15
- periodSeconds: 15
- successThreshold: 1
- failureThreshold: 100
- timeoutSeconds: 30
- # Map of named volume groups for topology-aware deployments.
- # Each key inherits all fields from the `volume` section but can override
- # them locally—for example, replicas, nodeSelector, dataCenter, etc.
- # To switch entirely to this scheme, set `volume.enabled: false`
- # and define one entry per zone/data-center under `volumes`.
- #
- # volumes:
- # dc1:
- # replicas: 2
- # dataCenter: "dc1"
- # nodeSelector: |
- # topology.kubernetes.io/zone: dc1
- # dc2:
- # replicas: 2
- # dataCenter: "dc2"
- # nodeSelector: |
- # topology.kubernetes.io/zone: dc2
- # dc3:
- # replicas: 2
- # dataCenter: "dc3"
- # nodeSelector: |
- # topology.kubernetes.io/zone: dc3
- #
- volumes: {}
- filer:
- enabled: true
- imageOverride: null
- restartPolicy: null
- replicas: 1
- port: 8888
- grpcPort: 18888
- metricsPort: 9327
- metricsIp: "" # Metrics listen IP. If empty, defaults to ipBind
- ipBind: "0.0.0.0" # IP address to bind to. Set to 0.0.0.0 to allow external traffic
- loggingOverrideLevel: null
- filerGroup: ""
- # prefer to read and write to volumes in this data center (not set by default)
- dataCenter: null
- # prefer to write to volumes in this rack (not set by default)
- rack: null
- # replication type is XYZ:
- # X number of replica in other data centers
- # Y number of replica in other racks in the same data center
- # Z number of replica in other servers in the same rack
- defaultReplicaPlacement: "000"
- # turn off directory listing
- disableDirListing: false
- # split files larger than the limit, default 32
- maxMB: null
- # encrypt data on volume servers
- encryptVolumeData: false
- # Whether proxy or redirect to volume server during file GET request
- redirectOnRead: false
- # Limit sub dir listing size (default 100000)
- dirListLimit: 100000
- # Disable http request, only gRpc operations are allowed
- disableHttp: false
- # Custom command line arguments to add to the filer command
- # Example to fix IPv6 metrics connectivity issues:
- # extraArgs: ["-metricsIp", "0.0.0.0"]
- # Example with multiple args:
- # extraArgs: ["-customFlag", "value", "-anotherFlag"]
- extraArgs: []
- # Add a custom notification.toml to configure filer notifications
- # Example:
- # notificationConfig: |-
- # [notification.kafka]
- # enabled = false
- # hosts = [
- # "localhost:9092"
- # ]
- # topic = "seaweedfs_filer"
- # offsetFile = "./last.offset"
- # offsetSaveIntervalSeconds = 10
- notificationConfig: ""
- # DEPRECATE: enablePVC, storage, storageClass
- # Consider replacing with filer.data section below instead.
- # Settings for configuring stateful storage of filer pods.
- # enablePVC will create a pvc for filer for data persistence.
- enablePVC: false
- # storage should be set to the disk size of the attached volume.
- storage: 25Gi
- # storageClass is the class of storage which defaults to null (the Kube cluster will pick the default).
- storageClass: null
- # You may use ANY storage-class, example with local-path-provisioner
- # Annotations are optional.
- # data:
- # type: "persistentVolumeClaim"
- # size: "24Ti"
- # storageClass: "local-path-provisioner"
- # annotations:
- # "key": "value"
- #
- # You may also specify an existing claim:
- # data:
- # type: "existingClaim"
- # claimName: "my-pvc"
- #
- # You can also use emptyDir storage:
- # data:
- # type: "emptyDir"
- data:
- type: "hostPath"
- size: ""
- storageClass: ""
- hostPathPrefix: /storage
- # You may use ANY storage-class, example with local-path-provisioner
- # Annotations are optional.
- # logs:
- # type: "persistentVolumeClaim"
- # size: "24Ti"
- # storageClass: "local-path-provisioner"
- # annotations:
- # "key": "value"
- # You can also use emptyDir storage:
- # logs:
- # type: "emptyDir"
- logs:
- type: "hostPath"
- size: ""
- storageClass: ""
- hostPathPrefix: /storage
- ## @param filer.sidecars Add additional sidecar containers to the filer pod(s)
- ## e.g:
- ## sidecars:
- ## - name: your-image-name
- ## image: your-image
- ## imagePullPolicy: Always
- ## ports:
- ## - name: portname
- ## containerPort: 1234
- ##
- sidecars: []
- initContainers: ""
- extraVolumes: ""
- extraVolumeMounts: ""
- # Labels to be added to the filer pods
- podLabels: {}
- # Annotations to be added to the filer pods
- podAnnotations: {}
- # Annotations to be added to the filer resource
- annotations: {}
- ## Set podManagementPolicy
- podManagementPolicy: Parallel
- # Affinity Settings
- # Commenting out or setting as empty the affinity variable, will allow
- # deployment to single node services such as Minikube
- affinity: |
- podAntiAffinity:
- requiredDuringSchedulingIgnoredDuringExecution:
- - labelSelector:
- matchLabels:
- app.kubernetes.io/name: {{ template "seaweedfs.name" . }}
- app.kubernetes.io/instance: {{ .Release.Name }}
- app.kubernetes.io/component: filer
- topologyKey: kubernetes.io/hostname
- # Topology Spread Constraints Settings
- # This should map directly to the value of the topologySpreadConstraints
- # for a PodSpec. By Default no constraints are set.
- topologySpreadConstraints: ""
- # updatePartition is used to control a careful rolling update of SeaweedFS
- # masters.
- updatePartition: 0
- # Resource requests, limits, etc. for the server cluster placement. This
- # should map directly to the value of the resources field for a PodSpec,
- # formatted as a multi-line string. By default no direct resource request
- # is made.
- resources: {}
- # Toleration Settings for server pods
- # This should be a multi-line string matching the Toleration array
- # in a PodSpec.
- tolerations: ""
- # nodeSelector labels for server pod assignment, formatted as a muli-line string.
- # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
- # Example:
- nodeSelector: ""
- # nodeSelector: |
- # sw-backend: "true"
- # used to assign priority to server pods
- # ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
- priorityClassName: ""
- # used to assign a service account.
- # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
- serviceAccountName: ""
- # Configure security context for Pod
- # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
- # Example:
- # podSecurityContext:
- # enabled: true
- # runAsUser: 1000
- # runAsGroup: 3000
- # fsGroup: 2000
- podSecurityContext: {}
- # Configure security context for Container
- # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
- # Example:
- # containerSecurityContext:
- # enabled: true
- # runAsUser: 2000
- # allowPrivilegeEscalation: false
- containerSecurityContext: {}
- ingress:
- enabled: false
- className: "nginx"
- # host: false for "*" hostname
- host: "seaweedfs.cluster.local"
- annotations:
- nginx.ingress.kubernetes.io/backend-protocol: GRPC
- nginx.ingress.kubernetes.io/auth-type: "basic"
- nginx.ingress.kubernetes.io/auth-secret: "default/ingress-basic-auth-secret"
- nginx.ingress.kubernetes.io/auth-realm: 'Authentication Required - SW-Filer'
- nginx.ingress.kubernetes.io/service-upstream: "true"
- nginx.ingress.kubernetes.io/rewrite-target: /$1
- nginx.ingress.kubernetes.io/use-regex: "true"
- nginx.ingress.kubernetes.io/enable-rewrite-log: "true"
- nginx.ingress.kubernetes.io/ssl-redirect: "false"
- nginx.ingress.kubernetes.io/force-ssl-redirect: "false"
- nginx.ingress.kubernetes.io/configuration-snippet: |
- sub_filter '<head>' '<head> <base href="/sw-filer/">'; #add base url
- sub_filter '="/' '="./'; #make absolute paths to relative
- sub_filter '=/' '=./';
- sub_filter '/seaweedfsstatic' './seaweedfsstatic';
- sub_filter_once off;
- # extraEnvVars is a list of extra environment variables to set with the stateful set.
- extraEnvironmentVars:
- WEED_MYSQL_ENABLED: "false"
- WEED_MYSQL_HOSTNAME: "mysql-db-host"
- WEED_MYSQL_PORT: "3306"
- WEED_MYSQL_DATABASE: "sw_database"
- WEED_MYSQL_CONNECTION_MAX_IDLE: "5"
- WEED_MYSQL_CONNECTION_MAX_OPEN: "75"
- # "refresh" connection every 10 minutes, eliminating mysql closing "old" connections
- WEED_MYSQL_CONNECTION_MAX_LIFETIME_SECONDS: "600"
- # enable usage of memsql as filer backend
- WEED_MYSQL_INTERPOLATEPARAMS: "true"
- # if you want to use leveldb2, then should enable "enablePVC". or you may lose your data.
- WEED_LEVELDB2_ENABLED: "true"
- # with http DELETE, by default the filer would check whether a folder is empty.
- # recursive_delete will delete all sub folders and files, similar to "rm -Rf"
- WEED_FILER_OPTIONS_RECURSIVE_DELETE: "false"
- # directories under this folder will be automatically creating a separate bucket
- WEED_FILER_BUCKETS_FOLDER: "/buckets"
- # used to configure livenessProbe on filer containers
- #
- livenessProbe:
- enabled: true
- httpGet:
- path: /
- scheme: HTTP
- initialDelaySeconds: 20
- periodSeconds: 30
- successThreshold: 1
- failureThreshold: 5
- timeoutSeconds: 10
- # used to configure readinessProbe on filer containers
- #
- readinessProbe:
- enabled: true
- httpGet:
- path: /
- scheme: HTTP
- initialDelaySeconds: 10
- periodSeconds: 15
- successThreshold: 1
- failureThreshold: 100
- timeoutSeconds: 10
- # secret env variables
- secretExtraEnvironmentVars: {}
- # WEED_POSTGRES_USERNAME:
- # secretKeyRef:
- # name: postgres-credentials
- # key: username
- # WEED_POSTGRES_PASSWORD:
- # secretKeyRef:
- # name: postgres-credentials
- # key: password
- s3:
- enabled: false
- port: 8333
- # add additional https port
- httpsPort: 0
- # allow empty folders
- allowEmptyFolder: false
- # Suffix of the host name, {bucket}.{domainName}
- domainName: ""
- # enable user & permission to s3 (need to inject to all services)
- enableAuth: false
- # set to the name of an existing kubernetes Secret with the s3 json config file
- # should have a secret key called seaweedfs_s3_config with an inline json configure
- existingConfigSecret: null
- auditLogConfig: {}
- # You may specify buckets to be created during the install process.
- # Buckets may be exposed publicly by setting `anonymousRead` to `true`
- # createBuckets:
- # - name: bucket-a
- # anonymousRead: true
- # - name: bucket-b
- # anonymousRead: false
- s3:
- enabled: true
- imageOverride: null
- restartPolicy: null
- replicas: 1
- bindAddress: 0.0.0.0
- port: 8333
- # add additional https port
- httpsPort: 0
- metricsPort: 9327
- loggingOverrideLevel: null
- # allow empty folders
- allowEmptyFolder: true
- # enable user & permission to s3 (need to inject to all services)
- enableAuth: false
- # set to the name of an existing kubernetes Secret with the s3 json config file
- # should have a secret key called seaweedfs_s3_config with an inline json config
- existingConfigSecret: null
- auditLogConfig: {}
- # Suffix of the host name, {bucket}.{domainName}
- domainName: ""
- ## @param s3.sidecars Add additional sidecar containers to the s3 pod(s)
- ## e.g:
- ## sidecars:
- ## - name: your-image-name
- ## image: your-image
- ## imagePullPolicy: Always
- ## ports:
- ## - name: portname
- ## containerPort: 1234
- ##
- sidecars: []
- initContainers: ""
- extraVolumes: ""
- extraVolumeMounts: ""
- # Labels to be added to the s3 pods
- podLabels: {}
- # Annotations to be added to the s3 pods
- podAnnotations: {}
- # Annotations to be added to the s3 resources
- annotations: {}
- # Resource requests, limits, etc. for the server cluster placement. This
- # should map directly to the value of the resources field for a PodSpec,
- # formatted as a multi-line string. By default no direct resource request
- # is made.
- resources: {}
- # Toleration Settings for server pods
- # This should be a multi-line string matching the Toleration array
- # in a PodSpec.
- tolerations: ""
- # nodeSelector labels for server pod assignment, formatted as a muli-line string.
- # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
- # Example:
- nodeSelector: ""
- # nodeSelector: |
- # sw-backend: "true"
- # used to assign priority to server pods
- # ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
- priorityClassName: ""
- # used to assign a service account.
- # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
- serviceAccountName: ""
- # Configure security context for Pod
- # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
- # Example:
- # podSecurityContext:
- # enabled: true
- # runAsUser: 1000
- # runAsGroup: 3000
- # fsGroup: 2000
- podSecurityContext: {}
- # Configure security context for Container
- # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
- # Example:
- # containerSecurityContext:
- # enabled: true
- # runAsUser: 2000
- # allowPrivilegeEscalation: false
- containerSecurityContext: {}
- # You can also use emptyDir storage:
- # logs:
- # type: "emptyDir"
- logs:
- type: "hostPath"
- size: ""
- storageClass: ""
- hostPathPrefix: /storage
- extraEnvironmentVars:
- # Custom command line arguments to add to the s3 command
- # Example to fix connection idle seconds:
- extraArgs: ["-idleTimeout=30"]
- #extraArgs: []
- # used to configure livenessProbe on s3 containers
- #
- livenessProbe:
- enabled: true
- httpGet:
- path: /status
- scheme: HTTP
- initialDelaySeconds: 20
- periodSeconds: 60
- successThreshold: 1
- failureThreshold: 20
- timeoutSeconds: 10
- # used to configure readinessProbe on s3 containers
- #
- readinessProbe:
- enabled: true
- httpGet:
- path: /status
- scheme: HTTP
- initialDelaySeconds: 15
- periodSeconds: 15
- successThreshold: 1
- failureThreshold: 100
- timeoutSeconds: 10
- ingress:
- enabled: false
- className: "nginx"
- # host: false for "*" hostname
- host: "seaweedfs.cluster.local"
- # additional ingress annotations for the s3 endpoint
- annotations: {}
- tls: []
- sftp:
- enabled: false
- imageOverride: null
- restartPolicy: null
- replicas: 1
- bindAddress: 0.0.0.0
- port: 2022 # Default SFTP port
- metricsPort: 9327
- metricsIp: "" # If empty, defaults to bindAddress
- loggingOverrideLevel: null
- # SSH server configuration
- sshPrivateKey: "/etc/sw/seaweedfs_sftp_ssh_private_key" # Path to the SSH private key file for host authentication
- hostKeysFolder: "/etc/sw/ssh" # path to folder containing SSH private key files for host authentication
- authMethods: "password,publickey" # Comma-separated list of allowed auth methods: password, publickey, keyboard-interactive
- maxAuthTries: 6 # Maximum number of authentication attempts per connection
- bannerMessage: "SeaweedFS SFTP Server" # Message displayed before authentication
- loginGraceTime: "2m" # Timeout for authentication
- clientAliveInterval: "5s" # Interval for sending keep-alive messages
- clientAliveCountMax: 3 # Maximum number of missed keep-alive messages before disconnecting
- dataCenter: "" # Prefer to read and write to volumes in this data center
- localSocket: "" # Default to /tmp/seaweedfs-sftp-<port>.sock
- # User authentication
- enableAuth: false
- # Set to the name of an existing kubernetes Secret with the sftp json config file
- # Should have a secret key called seaweedfs_sftp_config with an inline json config
- existingConfigSecret: null
- # Set to the name of an existing kubernetes Secret with the list of ssh private keys for sftp
- existingSshConfigSecret: null
- # Additional resources
- sidecars: []
- initContainers: ""
- extraVolumes: ""
- extraVolumeMounts: ""
- podLabels: {}
- podAnnotations: {}
- annotations: {}
- resources: {}
- tolerations: ""
- nodeSelector: ""
- priorityClassName: ""
- serviceAccountName: ""
- podSecurityContext: {}
- containerSecurityContext: {}
- logs:
- type: "hostPath"
- hostPathPrefix: /storage
- extraEnvironmentVars: {}
- # Health checks
- # Health checks for SFTP - using tcpSocket instead of httpGet
- livenessProbe:
- enabled: true
- initialDelaySeconds: 20
- periodSeconds: 60
- successThreshold: 1
- failureThreshold: 20
- timeoutSeconds: 10
- # Health checks for SFTP - using tcpSocket instead of httpGet
- readinessProbe:
- enabled: true
- initialDelaySeconds: 15
- periodSeconds: 15
- successThreshold: 1
- failureThreshold: 100
- timeoutSeconds: 10
- # All-in-one deployment configuration
- allInOne:
- enabled: false
- imageOverride: null
- restartPolicy: Always
- # Core configuration
- idleTimeout: 30 # Connection idle seconds
- dataCenter: "" # Current volume server's data center name
- rack: "" # Current volume server's rack name
- whiteList: "" # Comma separated IP addresses having write permission
- disableHttp: false # Disable HTTP requests, only gRPC operations are allowed
- metricsPort: 9324 # Prometheus metrics listen port
- metricsIp: "" # Metrics listen IP. If empty, defaults to bindAddress
- loggingOverrideLevel: null # Override logging level
- # Service configuration
- s3:
- enabled: false # Whether to enable S3 gateway
- sftp:
- enabled: false # Whether to enable SFTP server
- # Service settings
- service:
- annotations: {} # Annotations for the service
- type: ClusterIP # Service type (ClusterIP, NodePort, LoadBalancer)
- # Storage configuration
- data:
- type: "emptyDir" # Options: "hostPath", "persistentVolumeClaim", "emptyDir"
- hostPathPrefix: /mnt/data # Path prefix for hostPath volumes
- claimName: seaweedfs-data-pvc # Name of the PVC to use
- size: "" # Size of the PVC
- storageClass: "" # Storage class for the PVC
- # Health checks
- readinessProbe:
- enabled: true
- httpGet:
- path: /cluster/status
- port: 9333
- scheme: HTTP
- initialDelaySeconds: 10
- periodSeconds: 15
- successThreshold: 1
- failureThreshold: 3
- timeoutSeconds: 5
- livenessProbe:
- enabled: true
- httpGet:
- path: /cluster/status
- port: 9333
- scheme: HTTP
- initialDelaySeconds: 20
- periodSeconds: 30
- successThreshold: 1
- failureThreshold: 5
- timeoutSeconds: 5
- # Additional resources
- extraEnvironmentVars: {} # Additional environment variables
- extraVolumeMounts: "" # Additional volume mounts
- extraVolumes: "" # Additional volumes
- initContainers: "" # Init containers
- sidecars: "" # Sidecar containers
- annotations: {} # Annotations for the deployment
- podAnnotations: {} # Annotations for the pods
- podLabels: {} # Labels for the pods
- # Scheduling configuration
- # Affinity Settings
- # Commenting out or setting as empty the affinity variable, will allow
- # deployment to single node services such as Minikube
- affinity: |
- podAntiAffinity:
- requiredDuringSchedulingIgnoredDuringExecution:
- - labelSelector:
- matchLabels:
- app.kubernetes.io/name: {{ template "seaweedfs.name" . }}
- app.kubernetes.io/instance: {{ .Release.Name }}
- app.kubernetes.io/component: master
- topologyKey: kubernetes.io/hostname
- # Topology Spread Constraints Settings
- # This should map directly to the value of the topologySpreadConstraints
- # for a PodSpec. By Default no constraints are set.
- topologySpreadConstraints: ""
- # Toleration Settings for master pods
- # This should be a multi-line string matching the Toleration array
- # in a PodSpec.
- tolerations: ""
- # nodeSelector labels for master pod assignment, formatted as a muli-line string.
- # ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#nodeselector
- nodeSelector: ""
- # Used to assign priority to master pods
- # ref: https://kubernetes.io/docs/concepts/configuration/pod-priority-preemption/
- priorityClassName: ""
- # Used to assign a service account.
- # ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-service-account/
- serviceAccountName: ""
- # Configure security context for Pod
- # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
- # Example:
- # podSecurityContext:
- # enabled: true
- # runAsUser: 1000
- # runAsGroup: 3000
- # fsGroup: 2000
- podSecurityContext: {}
- # Configure security context for Container
- # ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/
- # Example:
- # containerSecurityContext:
- # enabled: true
- # runAsUser: 2000
- # allowPrivilegeEscalation: false
- containerSecurityContext: {}
- # Resource management
- resources:
- limits:
- cpu: "2"
- memory: "2Gi"
- requests:
- cpu: "500m"
- memory: "1Gi"
- # Deploy Kubernetes COSI Driver for SeaweedFS
- # Requires COSI CRDs and controller to be installed in the cluster
- # For more information, visit: https://container-object-storage-interface.github.io/docs/deployment-guide
- cosi:
- enabled: false
- image: "ghcr.io/seaweedfs/seaweedfs-cosi-driver:v0.1.2"
- driverName: "seaweedfs.objectstorage.k8s.io"
- bucketClassName: "seaweedfs"
- endpoint: ""
- region: ""
- sidecar:
- image: gcr.io/k8s-staging-sig-storage/objectstorage-sidecar:v20250711-controllerv0.2.0-rc1-80-gc2f6e65
- # Resource requests, limits, etc. for the server cluster placement. This
- # should map directly to the value of the resources field for a PodSpec,
- # formatted as a multi-line string. By default no direct resource request
- # is made.
- resources: {}
- # enable user & permission to s3 (need to inject to all services)
- enableAuth: false
- # set to the name of an existing kubernetes Secret with the s3 json config file
- # should have a secret key called seaweedfs_s3_config with an inline json configure
- existingConfigSecret: null
- podSecurityContext: {}
- containerSecurityContext: {}
- extraVolumes: ""
- extraVolumeMounts: ""
- # Resource requests, limits, etc. for the server cluster placement. This
- # should map directly to the value of the resources field for a PodSpec,
- # formatted as a multi-line string. By default no direct resource request
- # is made.
- resources: {}
- certificates:
- commonName: "SeaweedFS CA"
- ipAddresses: []
- keyAlgorithm: RSA
- keySize: 2048
- duration: 2160h # 90d
- renewBefore: 360h # 15d
- externalCertificates:
- # This will avoid the need to use cert-manager and will rely on providing your own external certificates and CA
- # you will need to store your provided certificates in the secret read by the different services:
- # seaweedfs-master-cert, seaweedfs-filer-cert, etc. Can see any statefulset definition to see secret names
- enabled: false
- # Labels to be added to all the created pods
- podLabels: {}
- # Annotations to be added to all the created pods
- podAnnotations: {}
|