From e94d6f78d7584b64115905d4d6f7959160dd1936 Mon Sep 17 00:00:00 2001 From: kaiyou Date: Sat, 29 Oct 2022 21:07:02 +0200 Subject: [PATCH] Enable daemonset deployment using the helm chart DaemonSet is a k8s resource that schedules one instance per node, which is useful for some garage deployment use cases, including managing garage nodes using k8s node labels --- .../{statefulset.yaml => workload.yaml} | 23 ++++++++++++++++--- script/helm/garage/values.yaml | 12 ++++++++-- 2 files changed, 30 insertions(+), 5 deletions(-) rename script/helm/garage/templates/{statefulset.yaml => workload.yaml} (84%) diff --git a/script/helm/garage/templates/statefulset.yaml b/script/helm/garage/templates/workload.yaml similarity index 84% rename from script/helm/garage/templates/statefulset.yaml rename to script/helm/garage/templates/workload.yaml index bda40117..f41eff6f 100644 --- a/script/helm/garage/templates/statefulset.yaml +++ b/script/helm/garage/templates/workload.yaml @@ -1,15 +1,17 @@ apiVersion: apps/v1 -kind: StatefulSet +kind: {{ .Values.deployment.kind }} metadata: name: {{ include "garage.fullname" . }} labels: {{- include "garage.labels" . | nindent 4 }} spec: - replicas: {{ .Values.replicaCount }} selector: matchLabels: {{- include "garage.selectorLabels" . | nindent 6 }} + {{- if eq .Values.deployment.kind "StatefulSet" }} + replicas: {{ .Values.deployment.replicaCount }} serviceName: {{ include "garage.fullname" . }} + {{- end }} template: metadata: {{- with .Values.podAnnotations }} @@ -79,6 +81,21 @@ spec: name: {{ include "garage.fullname" . }}-config - name: etc emptyDir: {} + {{- if eq .Values.deployment.kind "DaemonSet" }} + {{- if .Values.persistence.enabled }} + - name: meta + hostPath: + path: {{ .Values.persistence.meta.hostPath }} + - name: data + hostPath: + path: {{ .Values.persistence.data.hostPath }} + {{- else }} + {{- end }} + - name: meta + emptyDir: {} + - name: data + emptyDir: {} + {{- end }} {{- with .Values.nodeSelector }} nodeSelector: {{- toYaml . | nindent 8 }} @@ -91,7 +108,7 @@ spec: tolerations: {{- toYaml . | nindent 8 }} {{- end }} - {{- if .Values.persistence.enabled }} + {{- if and .Values.persistence.enabled (eq .Values.deployment.kind "StatefulSet") }} volumeClaimTemplates: - metadata: name: meta diff --git a/script/helm/garage/values.yaml b/script/helm/garage/values.yaml index 608ee53c..52f1910a 100644 --- a/script/helm/garage/values.yaml +++ b/script/helm/garage/values.yaml @@ -29,12 +29,20 @@ persistence: meta: # storageClass: "fast-storage-class" size: 100Mi + # used only for daemon sets + hostPath: /var/lib/garage/meta data: # storageClass: "slow-storage-class" size: 100Mi + # used only for daemon sets + hostPath: /var/lib/garage/data -# Number of StatefulSet replicas/garage nodes to start -replicaCount: 3 +# Deployment configuration +deployment: + # Switchable to DaemonSet + kind: StatefulSet + # Number of StatefulSet replicas/garage nodes to start + replicaCount: 3 image: repository: dxflrs/amd64_garage