Skip to content

Commit 898ad8d

Browse files
committed
Add post hook for bucket creation in seaweedfs
1 parent 86cd8f7 commit 898ad8d

2 files changed

Lines changed: 114 additions & 0 deletions

File tree

790 Bytes
Binary file not shown.
Lines changed: 114 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,114 @@
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

Comments
 (0)