post-install-bucket-hook.yaml 4.6 KB

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