Skip to content
Snippets Groups Projects
Commit 1113992d authored by Julian Paul Dasmarinas's avatar Julian Paul Dasmarinas
Browse files

feat: add valumeName for persistent volume claim template

parent 39aa23d0
Branches
Tags
Loading
...@@ -20,5 +20,8 @@ spec: ...@@ -20,5 +20,8 @@ spec:
{{- if $volume.claim.storageClass }} {{- if $volume.claim.storageClass }}
storageClassName: {{ $volume.claim.storageClass | quote }} storageClassName: {{ $volume.claim.storageClass | quote }}
{{- end }} {{- end }}
{{- if $volume.claim.volumeName }}
volumeName: {{ $volume.claim.volumeName | quote }}
{{- end }}
{{- end }} {{- end }}
{{- end -}} {{- end -}}
...@@ -16,6 +16,7 @@ func TestPvcTemplate_Single(t *testing.T) { ...@@ -16,6 +16,7 @@ func TestPvcTemplate_Single(t *testing.T) {
templates := []string{"templates/pvc.yaml"} templates := []string{"templates/pvc.yaml"}
releaseName := "test" releaseName := "test"
customStorageClassName := "MyStorageClass" customStorageClassName := "MyStorageClass"
customVolumeName := "MyVolumeName"
expectedLabels := map[string]string{ expectedLabels := map[string]string{
"app": releaseName, "app": releaseName,
"chart": chartName, "chart": chartName,
...@@ -53,6 +54,7 @@ func TestPvcTemplate_Single(t *testing.T) { ...@@ -53,6 +54,7 @@ func TestPvcTemplate_Single(t *testing.T) {
"persistence.volumes[0].claim.accessMode": "ReadOnlyMany", "persistence.volumes[0].claim.accessMode": "ReadOnlyMany",
"persistence.volumes[0].claim.size": "20Gi", "persistence.volumes[0].claim.size": "20Gi",
"persistence.volumes[0].claim.storageClass": customStorageClassName, "persistence.volumes[0].claim.storageClass": customStorageClassName,
"persistence.volumes[0].claim.volumeName": customVolumeName,
"persistence.volumes[0].mount.path": "/log", "persistence.volumes[0].mount.path": "/log",
}, },
expectedMeta: metav1.ObjectMeta{Name: "test-auto-deploy-log-dir", Labels: expectedLabels}, expectedMeta: metav1.ObjectMeta{Name: "test-auto-deploy-log-dir", Labels: expectedLabels},
...@@ -60,6 +62,7 @@ func TestPvcTemplate_Single(t *testing.T) { ...@@ -60,6 +62,7 @@ func TestPvcTemplate_Single(t *testing.T) {
AccessModes: [](coreV1.PersistentVolumeAccessMode){coreV1.ReadOnlyMany}, AccessModes: [](coreV1.PersistentVolumeAccessMode){coreV1.ReadOnlyMany},
Resources: coreV1.ResourceRequirements{Requests: coreV1.ResourceList{"storage": resource.MustParse("20Gi")}}, Resources: coreV1.ResourceRequirements{Requests: coreV1.ResourceList{"storage": resource.MustParse("20Gi")}},
StorageClassName: &customStorageClassName, StorageClassName: &customStorageClassName,
VolumeName: customVolumeName,
}, },
}, },
{ {
...@@ -83,6 +86,7 @@ func TestPvcTemplate_Single(t *testing.T) { ...@@ -83,6 +86,7 @@ func TestPvcTemplate_Single(t *testing.T) {
require.Equal(t, tc.expectedPVC.AccessModes, pvc.Spec.AccessModes) require.Equal(t, tc.expectedPVC.AccessModes, pvc.Spec.AccessModes)
require.Equal(t, tc.expectedPVC.Resources.Requests["storage"], pvc.Spec.Resources.Requests["storage"]) require.Equal(t, tc.expectedPVC.Resources.Requests["storage"], pvc.Spec.Resources.Requests["storage"])
require.Equal(t, tc.expectedPVC.StorageClassName, pvc.Spec.StorageClassName) require.Equal(t, tc.expectedPVC.StorageClassName, pvc.Spec.StorageClassName)
require.Equal(t, tc.expectedPVC.VolumeName, pvc.Spec.VolumeName)
}) })
} }
} }
...@@ -91,6 +95,7 @@ func TestPvcTemplate_Multiple(t *testing.T) { ...@@ -91,6 +95,7 @@ func TestPvcTemplate_Multiple(t *testing.T) {
templates := []string{"templates/pvc.yaml"} templates := []string{"templates/pvc.yaml"}
releaseName := "test" releaseName := "test"
customStorageClassName := "MyStorageClass" customStorageClassName := "MyStorageClass"
customVolumeName := "MyVolumeName"
expectedLabels := map[string]string{ expectedLabels := map[string]string{
"app": releaseName, "app": releaseName,
"chart": chartName, "chart": chartName,
...@@ -123,6 +128,7 @@ func TestPvcTemplate_Multiple(t *testing.T) { ...@@ -123,6 +128,7 @@ func TestPvcTemplate_Multiple(t *testing.T) {
"persistence.volumes[1].claim.accessMode": "ReadOnlyMany", "persistence.volumes[1].claim.accessMode": "ReadOnlyMany",
"persistence.volumes[1].claim.size": "20Gi", "persistence.volumes[1].claim.size": "20Gi",
"persistence.volumes[1].claim.storageClass": customStorageClassName, "persistence.volumes[1].claim.storageClass": customStorageClassName,
"persistence.volumes[1].claim.volumeName": customVolumeName,
"persistence.volumes[1].mount.path": "/log", "persistence.volumes[1].mount.path": "/log",
}, },
expectedMetas: []metav1.ObjectMeta{ expectedMetas: []metav1.ObjectMeta{
...@@ -138,6 +144,7 @@ func TestPvcTemplate_Multiple(t *testing.T) { ...@@ -138,6 +144,7 @@ func TestPvcTemplate_Multiple(t *testing.T) {
AccessModes: [](coreV1.PersistentVolumeAccessMode){coreV1.ReadOnlyMany}, AccessModes: [](coreV1.PersistentVolumeAccessMode){coreV1.ReadOnlyMany},
Resources: coreV1.ResourceRequirements{Requests: coreV1.ResourceList{"storage": resource.MustParse("20Gi")}}, Resources: coreV1.ResourceRequirements{Requests: coreV1.ResourceList{"storage": resource.MustParse("20Gi")}},
StorageClassName: &customStorageClassName, StorageClassName: &customStorageClassName,
VolumeName: customVolumeName,
}, },
}, },
}, },
...@@ -158,6 +165,7 @@ func TestPvcTemplate_Multiple(t *testing.T) { ...@@ -158,6 +165,7 @@ func TestPvcTemplate_Multiple(t *testing.T) {
require.Equal(t, tc.expectedPVCs[i].AccessModes, pvc.Spec.AccessModes) require.Equal(t, tc.expectedPVCs[i].AccessModes, pvc.Spec.AccessModes)
require.Equal(t, tc.expectedPVCs[i].Resources.Requests["storage"], pvc.Spec.Resources.Requests["storage"]) require.Equal(t, tc.expectedPVCs[i].Resources.Requests["storage"], pvc.Spec.Resources.Requests["storage"])
require.Equal(t, tc.expectedPVCs[i].StorageClassName, pvc.Spec.StorageClassName) require.Equal(t, tc.expectedPVCs[i].StorageClassName, pvc.Spec.StorageClassName)
require.Equal(t, tc.expectedPVCs[i].VolumeName, pvc.Spec.VolumeName)
} }
}) })
} }
......
...@@ -197,6 +197,9 @@ persistence: ...@@ -197,6 +197,9 @@ persistence:
# For example, GKE automatically chooses a default storage class and allocate a physical storage. # For example, GKE automatically chooses a default storage class and allocate a physical storage.
# See https://cloud.google.com/kubernetes-engine/docs/concepts/persistent-volumes for more information. # See https://cloud.google.com/kubernetes-engine/docs/concepts/persistent-volumes for more information.
# storageClass: "myStorage" # storageClass: "myStorage"
# You can also reserve a persistent volume using `volumeName`
# See https://kubernetes.io/docs/concepts/storage/persistent-volumes/#reserving-a-persistentvolume
# volumeName: "my-vol"
## Configure extra Volumes ## Configure extra Volumes
## ref: https://kubernetes.io/docs/concepts/storage/volumes/ ## ref: https://kubernetes.io/docs/concepts/storage/volumes/
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment