From 36814f688af51d2b5c619b13340568a3dd08addf Mon Sep 17 00:00:00 2001 From: IvanHunters Date: Thu, 16 Apr 2026 22:54:20 +0300 Subject: [PATCH 1/2] feat(seaweedfs): limit single PUT request size to 5GB Add nginx ingress annotation to limit single PUT request body size to 5GB for both system and tenant SeaweedFS S3 endpoints. This enforces the use of S3 multipart upload API for files larger than 5GB, which prevents issues commonly seen with large monolithic uploads and reduces support load. Changes: - Set proxy-body-size to "5g" in system seaweedfs values.yaml - Set proxy-body-size to "5g" in tenant seaweedfs template - Add explanatory comments for the limitation Signed-off-by: IvanHunters --- packages/extra/seaweedfs/templates/seaweedfs.yaml | 5 ++++- packages/system/seaweedfs/values.yaml | 5 ++++- 2 files changed, 8 insertions(+), 2 deletions(-) diff --git a/packages/extra/seaweedfs/templates/seaweedfs.yaml b/packages/extra/seaweedfs/templates/seaweedfs.yaml index 42441b26..cfd0184a 100644 --- a/packages/extra/seaweedfs/templates/seaweedfs.yaml +++ b/packages/extra/seaweedfs/templates/seaweedfs.yaml @@ -240,7 +240,10 @@ spec: className: {{ $ingress }} host: {{ .Values.host | default (printf "s3.%s" $host) }} annotations: - nginx.ingress.kubernetes.io/proxy-body-size: "0" + # Limit single PUT request to 5GB to enforce multipart uploads for large files. + # This prevents issues with large file uploads and reduces support load. + # For files >5GB, clients must use S3 multipart upload API. + nginx.ingress.kubernetes.io/proxy-body-size: "5g" nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" {{- if eq $solver "http01" }} acme.cert-manager.io/http01-ingress-class: {{ $ingress }} diff --git a/packages/system/seaweedfs/values.yaml b/packages/system/seaweedfs/values.yaml index daf2c055..16759eec 100644 --- a/packages/system/seaweedfs/values.yaml +++ b/packages/system/seaweedfs/values.yaml @@ -102,7 +102,10 @@ seaweedfs: className: "tenant-root" host: "seaweedfs.demo.cozystack.io" annotations: - nginx.ingress.kubernetes.io/proxy-body-size: "0" + # Limit single PUT request to 5GB to enforce multipart uploads for large files. + # This prevents issues with large file uploads and reduces support load. + # For files >5GB, clients must use S3 multipart upload API. + nginx.ingress.kubernetes.io/proxy-body-size: "5g" nginx.ingress.kubernetes.io/proxy-buffering: "off" nginx.ingress.kubernetes.io/proxy-request-buffering: "off" nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" From 355fd1de0d0f629889f925a04e4a43b9000f18db Mon Sep 17 00:00:00 2001 From: IvanHunters Date: Fri, 17 Apr 2026 12:39:56 +0300 Subject: [PATCH 2/2] feat(seaweedfs): add timeout and buffering annotations to tenant ingress Align tenant SeaweedFS S3 ingress annotations with system configuration by adding proxy buffering, request buffering, and timeout settings. This ensures consistent handling of large file uploads and prevents connection timeout issues for tenant buckets. Changes: - Add proxy-buffering and proxy-request-buffering annotations - Add proxy-read-timeout, proxy-send-timeout timeouts (3600s) - Add client-body-timeout and client-header-timeout settings - Add service-upstream annotation for load balancing Signed-off-by: IvanHunters --- packages/extra/seaweedfs/templates/seaweedfs.yaml | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/packages/extra/seaweedfs/templates/seaweedfs.yaml b/packages/extra/seaweedfs/templates/seaweedfs.yaml index cfd0184a..0951e610 100644 --- a/packages/extra/seaweedfs/templates/seaweedfs.yaml +++ b/packages/extra/seaweedfs/templates/seaweedfs.yaml @@ -244,7 +244,14 @@ spec: # This prevents issues with large file uploads and reduces support load. # For files >5GB, clients must use S3 multipart upload API. nginx.ingress.kubernetes.io/proxy-body-size: "5g" + nginx.ingress.kubernetes.io/proxy-buffering: "off" + nginx.ingress.kubernetes.io/proxy-request-buffering: "off" nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" + nginx.ingress.kubernetes.io/proxy-read-timeout: "3600" + nginx.ingress.kubernetes.io/proxy-send-timeout: "3600" + nginx.ingress.kubernetes.io/client-body-timeout: "3600" + nginx.ingress.kubernetes.io/client-header-timeout: "120" + nginx.ingress.kubernetes.io/service-upstream: "true" {{- if eq $solver "http01" }} acme.cert-manager.io/http01-ingress-class: {{ $ingress }} {{- end }}