Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

feat: add database snapshot functionality to Helm chart #9956

Open
wants to merge 7 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
9 changes: 7 additions & 2 deletions helm/charts/determined/templates/db-deployment.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -61,6 +61,11 @@ spec:
volumes:
- name: determined-db-storage
persistentVolumeClaim:
claimName: determined-db-pvc-{{ .Release.Name }}
claimName:
{{ if .Values.db.claimName }}
determined-db-pvc-{{ .Values.db.claimName }}
{{- else -}}
determined-db-pvc-{{ .Release.Name }}
{{ end }}
{{ end }}
{{ end}}
{{ end }}
13 changes: 12 additions & 1 deletion helm/charts/determined/templates/db-persistent-volume-claim.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,25 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: determined-db-pvc-{{ .Release.Name }}
name:
{{ if and .Release.IsUpgrade .Values.db.restoreSnapshotName }}
determined-db-pvc-{{ .Values.db.restoreSnapshotName }}
{{- else -}}
determined-db-pvc-{{ .Release.Name }}
{{ end }}
namespace: {{ .Release.Namespace }}
labels:
app: determined-db-{{ .Release.Name }}
release: {{ .Release.Name }}
spec:
accessModes:
- ReadWriteOnce
{{- if and .Release.IsUpgrade .Values.db.restoreSnapshotName }}
dataSource:
name: determined-db-snapshot-{{ .Values.db.restoreSnapshotName }}
kind: VolumeSnapshot
apiGroup: snapshot.storage.k8s.io
{{ end }}
resources:
requests:
storage: {{ required "A valid Values.db.storageSize entry is required!" .Values.db.storageSize }}
Expand Down
Original file line number Diff line number Diff line change
@@ -0,0 +1,6 @@
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshotClass
metadata:
name: determined-db-snapshot-class
driver: pd.csi.storage.gke.io
deletionPolicy: Retain
19 changes: 19 additions & 0 deletions helm/charts/determined/templates/db-volume-snapshot.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,19 @@
{{- if and .Release.IsUpgrade .Values.db.snapshotName }}
apiVersion: snapshot.storage.k8s.io/v1
kind: VolumeSnapshot
metadata:
name: determined-db-snapshot-{{ .Values.db.snapshotName }}
namespace: default
labels:
app: determined-db-{{ .Release.Name }}
release: {{ .Release.Name }}
spec:
volumeSnapshotClassName: determined-db-snapshot-class
source:
persistentVolumeClaimName:
{{ if .Values.db.claimName }}
determined-db-pvc-{{ .Values.db.claimName }}
{{- else -}}
determined-db-pvc-{{ .Release.Name }}
{{ end }}
{{ end }}
17 changes: 17 additions & 0 deletions helm/charts/determined/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -196,6 +196,23 @@ db:
# resourceType: <secret/configMap>
# certResourceName: <secret/configMap name>

# claimName refers to the persistent volume claim name for the database.
# If left undefined, a new PVC is created, named "determined-db-pvc-{{ .Release.name }}".
# Otherwise, use the pvc provided, given that it exists in the current context.
# claimName:

# snapshotName refers to the volume snapshot name, a backup of the database's persistent volume.
# If defined, Helm will "snapshot" the DB upon its next upgrade, creating a volumeSnapshot called
# `determined-db-snapsnot-{{ .Values.snapshotName}}`. This CANNOT be the name of a persistent volume claim
# that already exists, like the `determined-db-pvc-{{Release.Name}}`.
# snapshotName: determined1

# restoreSnapshotName refers to the volume snapshot name which you wish to restore the DB to.
# This only applies during a Helm upgrade, and if defined. This CANNOT be the name of a PVC that
# already exists, like the {{Release.Name}}. A new persistent volume & claim will be created, named
# `determined-db-pvc-{{ .Values.restoreSnapshotName}}`, restoring the data from
# `determined-db-snapsnot-{{ .Values.restoreSnapshotName}}`.
# restoreSnapshotName:

# checkpointStorage controls where checkpoints are stored. Supported types include `shared_fs`,
# `gcs`, and `s3`.
Expand Down
Loading