mirror of
https://github.com/shadoll/helm-charts.git
synced 2026-10-13 06:09:16 +00:00
Fix garage container command and drop postStart layout hook
The dxflrs/garage image ships as a single static binary with no ENTRYPOINT and no shell, so `args: [server]` alone was exec'd as the command (crash loop) and the shell-based postStart layout-bootstrap hook could never run. Set command: [/garage] explicitly, and replace the automated hook with documented one-time `kubectl exec` steps. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_014ZA4cJygj4VPCYVms4TDrH
This commit is contained in:
@@ -1,16 +1,20 @@
|
||||
Garage {{ .Chart.AppVersion }} has been deployed.
|
||||
|
||||
S3 API: http://{{ include "garage.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local:{{ .Values.service.s3ApiPort }}
|
||||
S3 API: http://{{ include "garage.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local:{{ .Values.service.s3ApiPort }}
|
||||
Admin API: http://{{ include "garage.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local:{{ .Values.service.adminPort }}
|
||||
{{- if .Values.garage.web.enabled }}
|
||||
Web: http://{{ include "garage.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local:{{ .Values.service.s3WebPort }}
|
||||
Web: http://{{ include "garage.fullname" . }}.{{ .Release.Namespace }}.svc.cluster.local:{{ .Values.service.s3WebPort }}
|
||||
{{- end }}
|
||||
|
||||
On first install, the pod's postStart hook assigns and applies a single-node
|
||||
layout automatically. Check with:
|
||||
kubectl -n {{ .Release.Namespace }} exec deploy/{{ include "garage.fullname" . }} -- /garage status
|
||||
REQUIRED one-time setup (Garage does not accept S3/admin traffic until a
|
||||
layout is assigned and applied):
|
||||
|
||||
Create a bucket and access key with:
|
||||
kubectl -n {{ .Release.Namespace }} exec deploy/{{ include "garage.fullname" . }} -- /garage status
|
||||
NODE_ID=$(kubectl -n {{ .Release.Namespace }} exec deploy/{{ include "garage.fullname" . }} -- /garage node id -q | cut -d@ -f1)
|
||||
kubectl -n {{ .Release.Namespace }} exec deploy/{{ include "garage.fullname" . }} -- /garage layout assign -z {{ .Values.garage.zone }} -c {{ .Values.garage.capacity }} "$NODE_ID"
|
||||
kubectl -n {{ .Release.Namespace }} exec deploy/{{ include "garage.fullname" . }} -- /garage layout apply --version 1
|
||||
|
||||
Then create a bucket and access key:
|
||||
kubectl -n {{ .Release.Namespace }} exec deploy/{{ include "garage.fullname" . }} -- /garage bucket create my-bucket
|
||||
kubectl -n {{ .Release.Namespace }} exec deploy/{{ include "garage.fullname" . }} -- /garage key create my-key
|
||||
kubectl -n {{ .Release.Namespace }} exec deploy/{{ include "garage.fullname" . }} -- /garage bucket allow --read --write --key my-key my-bucket
|
||||
|
||||
@@ -24,6 +24,8 @@ spec:
|
||||
- name: garage
|
||||
image: "{{ .Values.image.repository }}:{{ .Values.image.tag | default .Chart.AppVersion }}"
|
||||
imagePullPolicy: {{ .Values.image.pullPolicy }}
|
||||
command:
|
||||
- /garage
|
||||
args:
|
||||
- server
|
||||
env:
|
||||
@@ -51,28 +53,6 @@ spec:
|
||||
mountPath: /var/lib/garage/data
|
||||
- name: meta
|
||||
mountPath: /var/lib/garage/meta
|
||||
{{- if .Values.layoutJob.enabled }}
|
||||
lifecycle:
|
||||
postStart:
|
||||
exec:
|
||||
command:
|
||||
- /bin/sh
|
||||
- -c
|
||||
- |
|
||||
NODE_ID=""
|
||||
for i in $(seq 1 60); do
|
||||
NODE_ID=$(/garage node id -q 2>/dev/null | cut -d@ -f1)
|
||||
[ -n "$NODE_ID" ] && break
|
||||
sleep 2
|
||||
done
|
||||
[ -z "$NODE_ID" ] && exit 0
|
||||
if /garage layout show 2>/dev/null | grep -q "$NODE_ID"; then
|
||||
exit 0
|
||||
fi
|
||||
/garage layout assign -z {{ .Values.garage.zone }} -c {{ .Values.garage.capacity }} "$NODE_ID"
|
||||
VERSION=$(/garage layout show 2>/dev/null | grep -o 'version [0-9]*' | tail -1 | awk '{print $2+1}')
|
||||
/garage layout apply --version "${VERSION:-1}" || true
|
||||
{{- end }}
|
||||
readinessProbe:
|
||||
tcpSocket:
|
||||
port: s3-api
|
||||
|
||||
+2
-6
@@ -17,7 +17,8 @@ garage:
|
||||
replicationFactor: 1
|
||||
consistencyMode: consistent
|
||||
dbEngine: sqlite
|
||||
# Zone/capacity used by the layout job to bootstrap a single-node cluster.
|
||||
# Recommended zone/capacity for the one-time manual layout bootstrap
|
||||
# (see NOTES.txt) - `garage layout assign -z <zone> -c <capacity> <node-id>`.
|
||||
zone: dc1
|
||||
capacity: 100G
|
||||
rpcBindAddr: "[::]:3901"
|
||||
@@ -91,11 +92,6 @@ ingress:
|
||||
hosts: []
|
||||
tls: []
|
||||
|
||||
# One-shot Helm hook Job that assigns and applies a single-node layout on
|
||||
# first install. Safe to re-run; it exits early once a layout already exists.
|
||||
layoutJob:
|
||||
enabled: true
|
||||
|
||||
resources:
|
||||
requests:
|
||||
cpu: 100m
|
||||
|
||||
Reference in New Issue
Block a user