1+ {{- if .Values.filer.s3.createBuckets }}
2+ ---
3+ apiVersion : batch/v1
4+ kind : Job
5+ metadata :
6+ name : " {{ $.Release.Name }}-bucket-hook"
7+ labels :
8+ app : {{ template "portal.name" . }}
9+ chart : {{ template "portal.chart" . }}
10+ release : {{ .Release.Name }}
11+ heritage : {{ .Release.Service }}
12+ annotations :
13+ " helm.sh/hook " : post-install, post-upgrade
14+ " helm.sh/hook-weight " : " -5"
15+ spec :
16+ template :
17+ metadata :
18+ name : " {{ .Release.Name }}"
19+ spec :
20+ restartPolicy : Never
21+ {{- if .Values.podSecurityContext.enabled }}
22+ securityContext : {{- omit .Values.podSecurityContext "enabled" | toYaml | nindent 8 }}
23+ {{- end }}
24+ {{- if .Values.global.pullSecret }}
25+ imagePullSecrets :
26+ - name : " {{ .Values.global.pullSecret }}"
27+ {{- end }}
28+ containers :
29+ - name : install-bucket-job
30+ image : " {{ .Values.global.portalRepository }}{{ .Values.image.seaweedfs }}"
31+ imagePullPolicy : {{ default "IfNotPresent" .Values.imagePullPolicy }}
32+ env :
33+ - name : WEED_CLUSTER_DEFAULT
34+ value : " sw"
35+ - name : WEED_CLUSTER_SW_MASTER
36+ value : " seaweedfs-s3:{{ .Values.master.port }}"
37+ - name : WEED_CLUSTER_SW_S3
38+ value : " seaweedfs-s3:{{ .Values.s3.port }}"
39+ - name : POD_IP
40+ valueFrom :
41+ fieldRef :
42+ fieldPath : status.podIP
43+ - name : POD_NAME
44+ valueFrom :
45+ fieldRef :
46+ fieldPath : metadata.name
47+ - name : NAMESPACE
48+ valueFrom :
49+ fieldRef :
50+ fieldPath : metadata.namespace
51+ - name : SEAWEEDFS_FULLNAME
52+ value : " seaweedfs-s3"
53+ command :
54+ - " /bin/bash"
55+ - " -ec"
56+ - |
57+ wait_for_service() {
58+ local port=$1
59+ local max_attempts=240 # 20 minutes total (5s * 240)
60+ local attempt=1
61+
62+ echo "Waiting for service at $url..."
63+ while [ $attempt -le $max_attempts ]; do
64+ if timeout $TIMEOUT_SECONDS bash -c ">/dev/tcp/seaweedfs-s3/$port" 2>/dev/null; then
65+ echo "Service at seaweedfs-s3:$port is up!"
66+ return 0
67+ fi
68+ echo "Attempt $attempt: Service not ready yet, retrying in 5s..."
69+ sleep 5
70+ attempt=$((attempt + 1))
71+ done
72+ echo "Service at seaweedfs-s3:$port failed to become ready within 10 minutes"
73+ exit 1
74+ }
75+ wait_for_service "{{ .Values.readinessProbe.httpGet.port }}"
76+ {{- range $reg, $props := $.Values.filer.s3.createBuckets }}
77+ exec /bin/echo \
78+ " s3.bucket.create --name {{ $props.name }}" |\
79+ /opt/bitnami/seaweedfs/bin/weed shell
80+ {{- end }}
81+ {{- range $reg, $props := $.Values.filer.s3.createBuckets }}
82+ {{- if $props.anonymousRead }}
83+ exec /bin/echo \
84+ " s3.configure --user anonymous \
85+ --buckets {{ $props.name }} \
86+ --actions Read \
87+ --apply true" |\
88+ /opt/bitnami/seaweedfs/bin/weed shell
89+ {{- end }}
90+ {{- end }}
91+ {{- if .Values.filer.s3.enableAuth }}
92+ volumeMounts :
93+ - name : config-users
94+ mountPath : /etc/sw
95+ readOnly : true
96+ {{- end }}
97+ ports :
98+ - containerPort : {{ .Values.master.port }}
99+ name : swfs-master
100+ {{- if .Values.containerSecurityContext.enabled }}
101+ securityContext : {{- omit .Values.containerSecurityContext "enabled" | toYaml | nindent 12 }}
102+ {{- end }}
103+ {{- if .Values.filer.s3.enableAuth }}
104+ volumes :
105+ - name : config-users
106+ secret :
107+ defaultMode : 420
108+ {{- if not (empty .Values.filer.s3.existingConfigSecret) }}
109+ secretName : {{ .Values.filer.s3.existingConfigSecret }}
110+ {{- else }}
111+ secretName : seaweedfs-s3-secret
112+ {{- end }}
113+ {{- end }}{{/** if .Values.filer.s3.enableAuth **/}}
114+ {{- end }}{{/** if .Values.filer.s3.createBuckets **/}}
0 commit comments