From 115756dd4134f5951a060f117a4dcc5ebc7c49b7 Mon Sep 17 00:00:00 2001 From: Chris Lu Date: Mon, 24 Aug 2026 16:31:47 -0700 Subject: [PATCH] helm: expose loadBalancerClass, loadBalancerIP, loadBalancerSourceRanges on services (#10929) --- .../templates/admin/admin-service.yaml | 1 + .../all-in-one/all-in-one-service.yml | 1 + .../seaweedfs/templates/s3/s3-service.yaml | 1 + .../templates/sftp/sftp-service.yaml | 1 + .../seaweedfs/templates/shared/_helpers.tpl | 20 +++++++++++++++++++ k8s/charts/seaweedfs/values.yaml | 16 +++++++++++++++ 6 files changed, 40 insertions(+) diff --git a/k8s/charts/seaweedfs/templates/admin/admin-service.yaml b/k8s/charts/seaweedfs/templates/admin/admin-service.yaml index 8b7567a2c..baf79610c 100644 --- a/k8s/charts/seaweedfs/templates/admin/admin-service.yaml +++ b/k8s/charts/seaweedfs/templates/admin/admin-service.yaml @@ -21,6 +21,7 @@ spec: {{- $nodePorts = .Values.admin.service.nodePorts | default dict }} {{- end }} type: {{ $serviceType }} + {{- include "seaweedfs.service.loadBalancerFields" .Values.admin.service }} ports: - name: "http" port: {{ .Values.admin.port }} diff --git a/k8s/charts/seaweedfs/templates/all-in-one/all-in-one-service.yml b/k8s/charts/seaweedfs/templates/all-in-one/all-in-one-service.yml index 467c6fe1a..5201f607b 100644 --- a/k8s/charts/seaweedfs/templates/all-in-one/all-in-one-service.yml +++ b/k8s/charts/seaweedfs/templates/all-in-one/all-in-one-service.yml @@ -21,6 +21,7 @@ spec: {{- $nodePorts = .Values.allInOne.service.nodePorts | default dict }} {{- end }} type: {{ $serviceType }} + {{- include "seaweedfs.service.loadBalancerFields" .Values.allInOne.service }} internalTrafficPolicy: {{ .Values.allInOne.service.internalTrafficPolicy | default "Cluster" }} {{- if and (semverCompare ">=1.31-0" .Capabilities.KubeVersion.GitVersion) .Values.allInOne.s3.trafficDistribution }} trafficDistribution: {{ include "seaweedfs.trafficDistribution" (dict "value" .Values.allInOne.s3.trafficDistribution "Capabilities" .Capabilities) }} diff --git a/k8s/charts/seaweedfs/templates/s3/s3-service.yaml b/k8s/charts/seaweedfs/templates/s3/s3-service.yaml index 9537c3dce..4a4e6a410 100644 --- a/k8s/charts/seaweedfs/templates/s3/s3-service.yaml +++ b/k8s/charts/seaweedfs/templates/s3/s3-service.yaml @@ -21,6 +21,7 @@ spec: {{- $nodePorts = .Values.s3.service.nodePorts | default dict }} {{- end }} type: {{ $serviceType }} + {{- include "seaweedfs.service.loadBalancerFields" .Values.s3.service }} internalTrafficPolicy: {{ .Values.s3.internalTrafficPolicy | default "Cluster" }} {{- $td := .Values.s3.trafficDistribution | default .Values.filer.s3.trafficDistribution }} {{- if and (semverCompare ">=1.31-0" .Capabilities.KubeVersion.GitVersion) $td }} diff --git a/k8s/charts/seaweedfs/templates/sftp/sftp-service.yaml b/k8s/charts/seaweedfs/templates/sftp/sftp-service.yaml index 14cf09d7a..aae3bdec1 100644 --- a/k8s/charts/seaweedfs/templates/sftp/sftp-service.yaml +++ b/k8s/charts/seaweedfs/templates/sftp/sftp-service.yaml @@ -21,6 +21,7 @@ spec: {{- $nodePorts = .Values.sftp.service.nodePorts | default dict }} {{- end }} type: {{ $serviceType }} + {{- include "seaweedfs.service.loadBalancerFields" .Values.sftp.service }} internalTrafficPolicy: {{ .Values.sftp.internalTrafficPolicy | default "Cluster" }} ports: - name: "swfs-sftp" diff --git a/k8s/charts/seaweedfs/templates/shared/_helpers.tpl b/k8s/charts/seaweedfs/templates/shared/_helpers.tpl index 7b4f90335..71ac9c62b 100644 --- a/k8s/charts/seaweedfs/templates/shared/_helpers.tpl +++ b/k8s/charts/seaweedfs/templates/shared/_helpers.tpl @@ -548,3 +548,23 @@ true {{- and (eq .value "PreferClose") (semverCompare ">=1.35-0" .Capabilities.KubeVersion.GitVersion) | ternary "PreferSameZone" .value -}} {{- end -}} {{- end -}} + +{{/* +Render LoadBalancer-specific service fields (loadBalancerClass, loadBalancerIP, +loadBalancerSourceRanges), only when the service type is LoadBalancer. +Usage: {{ include "seaweedfs.service.loadBalancerFields" .Values.s3.service }} +*/}} +{{- define "seaweedfs.service.loadBalancerFields" -}} +{{- if eq (.type | default "ClusterIP") "LoadBalancer" }} +{{- with .loadBalancerClass }} + loadBalancerClass: {{ . }} +{{- end }} +{{- with .loadBalancerIP }} + loadBalancerIP: {{ . }} +{{- end }} +{{- with .loadBalancerSourceRanges }} + loadBalancerSourceRanges: + {{- toYaml . | nindent 4 }} +{{- end }} +{{- end }} +{{- end -}} diff --git a/k8s/charts/seaweedfs/values.yaml b/k8s/charts/seaweedfs/values.yaml index 4ef94b082..460fc8eb3 100644 --- a/k8s/charts/seaweedfs/values.yaml +++ b/k8s/charts/seaweedfs/values.yaml @@ -1184,6 +1184,10 @@ s3: # Service settings service: type: ClusterIP + # used only when type is LoadBalancer + loadBalancerClass: "" + loadBalancerIP: "" + loadBalancerSourceRanges: [] # fixed nodePorts, used only when type is NodePort or LoadBalancer nodePorts: http: null @@ -1288,6 +1292,10 @@ sftp: # Service settings service: type: ClusterIP + # used only when type is LoadBalancer + loadBalancerClass: "" + loadBalancerIP: "" + loadBalancerSourceRanges: [] # fixed nodePorts, used only when type is NodePort or LoadBalancer nodePorts: sftp: null @@ -1430,6 +1438,10 @@ admin: service: type: ClusterIP annotations: {} + # used only when type is LoadBalancer + loadBalancerClass: "" + loadBalancerIP: "" + loadBalancerSourceRanges: [] # fixed nodePorts, used only when type is NodePort or LoadBalancer nodePorts: http: null @@ -1654,6 +1666,10 @@ allInOne: annotations: {} # Annotations for the service type: ClusterIP # Service type (ClusterIP, NodePort, LoadBalancer) internalTrafficPolicy: Cluster # Internal traffic policy + # used only when type is LoadBalancer + loadBalancerClass: "" + loadBalancerIP: "" + loadBalancerSourceRanges: [] # fixed nodePorts, used only when type is NodePort or LoadBalancer nodePorts: master: null