| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122 |
- {{- if .Values.master.enabled }}
- {{- if .Values.filer.s3.enabled }}
- {{- if .Values.filer.s3.createBuckets }}
- ---
- apiVersion: batch/v1
- kind: Job
- metadata:
- name: "{{ $.Release.Name }}-bucket-hook"
- labels:
- app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
- app.kubernetes.io/instance: {{ .Release.Name | quote }}
- annotations:
- "helm.sh/hook": post-install
- "helm.sh/hook-weight": "-5"
- "helm.sh/hook-delete-policy": hook-succeeded
- spec:
- template:
- metadata:
- name: "{{ .Release.Name }}"
- labels:
- app.kubernetes.io/managed-by: {{ .Release.Service | quote }}
- app.kubernetes.io/instance: {{ .Release.Name | quote }}
- spec:
- restartPolicy: Never
- {{- if .Values.filer.podSecurityContext.enabled }}
- securityContext: {{- omit .Values.filer.podSecurityContext "enabled" | toYaml | nindent 8 }}
- {{- end }}
- containers:
- - name: post-install-job
- image: {{ template "master.image" . }}
- env:
- - name: WEED_CLUSTER_DEFAULT
- value: "sw"
- - name: WEED_CLUSTER_SW_MASTER
- value: "{{ template "seaweedfs.name" . }}-master.{{ .Release.Namespace }}:{{ .Values.master.port }}"
- - name: WEED_CLUSTER_SW_FILER
- value: "{{ template "seaweedfs.name" . }}-filer-client.{{ .Release.Namespace }}:{{ .Values.filer.port }}"
- - name: POD_IP
- valueFrom:
- fieldRef:
- fieldPath: status.podIP
- - name: POD_NAME
- valueFrom:
- fieldRef:
- fieldPath: metadata.name
- - name: NAMESPACE
- valueFrom:
- fieldRef:
- fieldPath: metadata.namespace
- - name: SEAWEEDFS_FULLNAME
- value: "{{ template "seaweedfs.name" . }}"
- command:
- - "/bin/sh"
- - "-ec"
- - |
- wait_for_service() {
- local url=$1
- local max_attempts=60 # 5 minutes total (5s * 60)
- local attempt=1
-
- echo "Waiting for service at $url..."
- while [ $attempt -le $max_attempts ]; do
- if wget -q --spider "$url" >/dev/null 2>&1; then
- echo "Service at $url is up!"
- return 0
- fi
- echo "Attempt $attempt: Service not ready yet, retrying in 5s..."
- sleep 5
- attempt=$((attempt + 1))
- done
- echo "Service at $url failed to become ready within 5 minutes"
- exit 1
- }
- wait_for_service "http://$WEED_CLUSTER_SW_MASTER{{ .Values.master.readinessProbe.httpGet.path }}"
- wait_for_service "http://$WEED_CLUSTER_SW_FILER{{ .Values.filer.readinessProbe.httpGet.path }}"
- {{- range $reg, $props := $.Values.filer.s3.createBuckets }}
- exec /bin/echo \
- "s3.bucket.create --name {{ $props.name }}" |\
- /usr/bin/weed shell
- {{- end }}
- {{- range $reg, $props := $.Values.filer.s3.createBuckets }}
- {{- if $props.anonymousRead }}
- exec /bin/echo \
- "s3.configure --user anonymous \
- --buckets {{ $props.name }} \
- --actions Read \
- --apply true" |\
- /usr/bin/weed shell
- {{- end }}
- {{- end }}
- {{- if .Values.filer.s3.enableAuth }}
- volumeMounts:
- - name: config-users
- mountPath: /etc/sw
- readOnly: true
- {{- end }}
- ports:
- - containerPort: {{ .Values.master.port }}
- name: swfs-master
- {{- if and .Values.global.monitoring.enabled .Values.master.metricsPort }}
- - containerPort: {{ .Values.master.metricsPort }}
- name: metrics
- {{- end }}
- - containerPort: {{ .Values.master.grpcPort }}
- #name: swfs-master-grpc
- {{- if .Values.filer.containerSecurityContext.enabled }}
- securityContext: {{- omit .Values.filer.containerSecurityContext "enabled" | toYaml | nindent 12 }}
- {{- end }}
- {{- if .Values.filer.s3.enableAuth }}
- volumes:
- - name: config-users
- secret:
- defaultMode: 420
- {{- if not (empty .Values.filer.s3.existingConfigSecret) }}
- secretName: {{ .Values.filer.s3.existingConfigSecret }}
- {{- else }}
- secretName: seaweedfs-s3-secret
- {{- end }}
- {{- end }}{{/** if .Values.filer.s3.enableAuth **/}}
- {{- end }}{{/** if .Values.master.enabled **/}}
- {{- end }}{{/** if .Values.filer.s3.enabled **/}}
- {{- end }}{{/** if .Values.filer.s3.createBuckets **/}}
|