diff --git a/garage/templates/NOTES.txt b/garage/templates/NOTES.txt index ab65bc2..7894217 100644 --- a/garage/templates/NOTES.txt +++ b/garage/templates/NOTES.txt @@ -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 diff --git a/garage/templates/deployment.yaml b/garage/templates/deployment.yaml index 46fdc69..fbbe0ae 100644 --- a/garage/templates/deployment.yaml +++ b/garage/templates/deployment.yaml @@ -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 diff --git a/garage/values.yaml b/garage/values.yaml index 39c76a3..b88e310 100644 --- a/garage/values.yaml +++ b/garage/values.yaml @@ -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 -c `. 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