{{- if or .Values.s3.enabled .Values.filer.s3.enabled }} apiVersion: v1 kind: Service metadata: name: {{ include "seaweedfs.componentName" (list . "s3") }} namespace: {{ .Release.Namespace }} labels: app.kubernetes.io/name: {{ template "seaweedfs.name" . }} app.kubernetes.io/component: s3 helm.sh/chart: {{ .Chart.Name }}-{{ .Chart.Version | replace "+" "_" }} app.kubernetes.io/managed-by: {{ .Release.Service }} app.kubernetes.io/instance: {{ .Release.Name }} {{- if .Values.s3.annotations }} annotations: {{- toYaml .Values.s3.annotations | nindent 4 }} {{- end }} spec: {{- $serviceType := .Values.s3.service.type }} {{- $nodePorts := dict }} {{- if or (eq $serviceType "NodePort") (eq $serviceType "LoadBalancer") }} {{- $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 }} trafficDistribution: {{ include "seaweedfs.trafficDistribution" (dict "value" $td "Capabilities" .Capabilities) }} {{- end }} ports: - name: "swfs-s3" port: {{ if .Values.s3.enabled }}{{ .Values.s3.port }}{{ else }}{{ .Values.filer.s3.port }}{{ end }} targetPort: {{ if .Values.s3.enabled }}{{ .Values.s3.port }}{{ else }}{{ .Values.filer.s3.port }}{{ end }} {{- if $nodePorts.http }} nodePort: {{ $nodePorts.http }} {{- end }} protocol: TCP {{- if and .Values.s3.enabled .Values.s3.icebergPort }} - name: "swfs-iceberg" port: {{ .Values.s3.icebergPort }} targetPort: {{ .Values.s3.icebergPort }} {{- if $nodePorts.iceberg }} nodePort: {{ $nodePorts.iceberg }} {{- end }} protocol: TCP {{- end }} {{- if and .Values.s3.enabled .Values.s3.lancePort }} - name: "swfs-lance" port: {{ .Values.s3.lancePort }} targetPort: {{ .Values.s3.lancePort }} {{- if $nodePorts.lance }} nodePort: {{ $nodePorts.lance }} {{- end }} protocol: TCP {{- end }} {{- if and .Values.s3.enabled .Values.s3.httpsPort }} - name: "swfs-s3-tls" port: {{ .Values.s3.httpsPort }} targetPort: {{ .Values.s3.httpsPort }} {{- if $nodePorts.https }} nodePort: {{ $nodePorts.https }} {{- end }} protocol: TCP {{- end }} {{- if and .Values.s3.enabled .Values.s3.metricsPort }} - name: "metrics" port: {{ .Values.s3.metricsPort }} targetPort: {{ .Values.s3.metricsPort }} {{- if $nodePorts.metrics }} nodePort: {{ $nodePorts.metrics }} {{- end }} protocol: TCP {{- end }} selector: app.kubernetes.io/name: {{ template "seaweedfs.name" . }} app.kubernetes.io/instance: {{ .Release.Name }} app.kubernetes.io/component: {{ if .Values.s3.enabled }}s3{{ else }}filer{{ end }} {{- end }}