Skip to content

[Feature] Allow overriding SeaweedFS component resources from Tenant values #2038

Open

Description

Currently, the Tenant chart only exposes seaweedfs as a boolean toggle:

# values.schema.json
"seaweedfs": { "type": "boolean", "default": false }

The generated HelmRelease in templates/seaweedfs.yaml has no spec.values - all configuration comes from the cozystack-values Secret, which provides no way to customize per-tenant SeaweedFS resources.

Problem:
Under heavy load, the SeaweedFS S3 gateway gets OOM-killed at the default small resource preset (512Mi / 1 CPU). The volume servers also restart under sustained write pressure. There is no supported way to increase resources without manually patching the generated HelmRelease and suspending the parent Tenant reconciliation.

The packages/extra/seaweedfs chart already supports per-component resource overrides:

s3:
  replicas: 2
  resources:
    cpu: "2"
    memory: "2Gi"
  resourcesPreset: "small"  # nano | micro | small | medium | large | xlarge | 2xlarge

However, these values are not accessible from the Tenant chart.

Proposed solution:
Change seaweedfs in the Tenant values schema from a boolean to an object with backward-compatible behavior:

# values.schema.json
"seaweedfs": {
  "description": "Deploy own SeaweedFS.",
  "oneOf": [
    { "type": "boolean" },
    {
      "type": "object",
      "properties": {
        "s3": { "$ref": "#/$defs/componentResources" },
        "volume": { "$ref": "#/$defs/componentResources" },
        "filer": { "$ref": "#/$defs/componentResources" },
        "master": { "$ref": "#/$defs/componentResources" }
      }
    }
  ]
}

And pass any nested values through to the SeaweedFS HelmRelease in templates/seaweedfs.yaml:

{{- if .Values.seaweedfs }}
spec:
  {{- if kindIs "map" .Values.seaweedfs }}
  values:
    {{- toYaml .Values.seaweedfs | nindent 4 }}
  {{- end }}
  valuesFrom:
  - kind: Secret
    name: cozystack-values
{{- end }}

Backward compatible, boolean still works:

seaweedfs: true

Or with resource overrides

seaweedfs:
  s3:
    resources:
      cpu: "2"
      memory: "2Gi"
  volume:
    resourcesPreset: "medium"

Environment:
Cozystack version: 0.41.4
SeaweedFS chart: 4.0.405
S3 gateway default resources: 512Mi memory, 1 CPU (from upstream chart defaults)

Activity

  1. added
    kind/featureCategorizes issue or PR as related to a new feature
    on Feb 12, 2026
  2. kinseii commented on Feb 13, 2026

    @kinseii
    Author

    Another problem is that it is currently impossible to redefine the size of s3 volumes. The default size is 20 GB.

  3. kvaps commented on Feb 18, 2026

    @kvaps
    Member

    Hey, Petr Dondukov (@kinseii) you should be able to update values in seaweedfs application after it get deployed.
    Is that mechanism not working for you?

  4. kinseii commented on Feb 18, 2026

    @kinseii
    Author

    Hey, @kinseii you should be able to update values in seaweedfs application after it get deployed. Is that mechanism not working for you?

    Hi! Do you mean update values via HR?

  5. dvc commented on Apr 29, 2026

    @dvc
    Contributor

    Hi! I found 2 missed parameters:

    • filer.replicas
    • s3.replicas
  6. dosubot commented on Jul 29, 2026

    @dosubot

    Hi, Petr Dondukov (@kinseii). I'm Dosu, and I'm helping the cozystack team manage their backlog and am marking this issue as stale.

    Recap

    • You requested that the Tenant chart’s seaweedfs option support an object form, not just a boolean, so SeaweedFS component resources can be overridden per deployment.
    • The goal is to preserve boolean support for backward compatibility while passing s3, volume, filer, and master resource settings through to the SeaweedFS HelmRelease.
    • You noted the default S3 volume size is only 20 GB, which can be too small for some use cases.
    • Andrei Kvapil (@kvaps) asked whether updating values in the deployed SeaweedFS application/HelmRelease would be sufficient.
    • Chernosov Denis (@dvc) identified two additional template gaps: filer.replicas and s3.replicas.

    Next Steps

    • Please confirm whether this is still relevant on the latest version of the cozystack repository; if it is, you can keep the discussion open by commenting here.
    • Otherwise, this issue will be automatically closed in 7 days.

    Thanks for your understanding and contribution.

  7. added
    lifecycle/staleDenotes an issue or PR has remained open with no activity and has become stale
    and removed on Aug 3, 2026
  8. added
    area/storageIssues or PRs related to storage (linstor, seaweedfs, bucket, velero, harbor)
    area/tenantIssues or PRs related to the tenant chart and multi-tenancy
    triage/acceptedIndicates an issue is ready to be actively worked on
    priority/backlogGeneral backlog priority. Lower than priority/important-longterm
    lifecycle/frozenIndicates that an issue or PR should not be auto-closed due to staleness
    and removed
    lifecycle/staleDenotes an issue or PR has remained open with no activity and has become stale
    triage/needs-triageIndicates an issue needs triage by a maintainer
    on Sep 23, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/storageIssues or PRs related to storage (linstor, seaweedfs, bucket, velero, harbor)area/tenantIssues or PRs related to the tenant chart and multi-tenancykind/featureCategorizes issue or PR as related to a new featurelifecycle/frozenIndicates that an issue or PR should not be auto-closed due to stalenesspriority/backlogGeneral backlog priority. Lower than priority/important-longtermtriage/acceptedIndicates an issue is ready to be actively worked on

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions