This is an automated email from the ASF dual-hosted git repository.
pingsutw pushed a commit to branch master
in repository https://gitbox.apache.org/repos/asf/submarine.git
The following commit(s) were added to refs/heads/master by this push:
new b73e60b SUBMARINE-990. Add helm templates to support storage class
configurations
b73e60b is described below
commit b73e60bfdd00c6ec4ddca39240b55e82b34d28d6
Author: Kenchu123 <[email protected]>
AuthorDate: Thu Aug 19 17:01:54 2021 +0800
SUBMARINE-990. Add helm templates to support storage class configurations
### What is this PR for?
<!-- A few sentences describing the overall goals of the pull request's
commits.
First time? Check out the contributing guide -
https://submarine.apache.org/contribution/contributions.html
-->
From SUBMARINE-975, we can find out that the storage class configurations
(provisioner, reclaim policy, etc) is unchangeable.
By adding helm templates (`_helper.tpl`) and adding more values
(`values.yaml`), we can use `helm install --set storageClass.provisioner=...`
to change the default configurations of the storage class. Therefore, we can
easily set up different configurations on different clusters such as kind.
Docs for storage class:
https://kubernetes.io/docs/concepts/storage/storage-classes/
### What type of PR is it?
[Improvement]
### Todos
* [x] - Add `_helpers.tpl` and storageClass fields values
* [x] - Change pvc access mode to `ReadWriteOnce` since local provisioner
only support this
* [x] - Modify `README.md`
### What is the Jira issue?
<!-- * Open an issue on Jira
https://issues.apache.org/jira/browse/SUBMARINE/
* Put link here, and add [SUBMARINE-*Jira number*] in PR title, eg.
`SUBMARINE-23. PR title`
-->
https://issues.apache.org/jira/browse/SUBMARINE-990
### How should this be tested?
<!--
* First time? Setup Travis CI as described on
https://submarine.apache.org/contribution/contributions.html#continuous-integration
* Strongly recommended: add automated unit tests for any new or changed
behavior
* Outline any manual steps to test the PR here.
-->
For one using minikube, you don't need to make any changes since minikube
provisioner is the default.
For one using kind, you need to add `--set
storageClass.provisioner=rancher.io/local-path --set
storageClass.volumeBindingMode=WaitForFirstConsumer` in `helm install` command.
For one using other storage class provisioners, you can simply set values
in `values.yaml` or set with `--set` as above.
ps. This only supports the submarine controlled by the submarine operator.
### Screenshots (if appropriate)
`helm install submarine-operator ./helm-charts/submarine-operator --dry-run`

`helm install submarine-operator ./helm-charts/submarine-operator --set
storageClass.provisioner=rancher.io/local-path --set
storageClass.volumeBindingMode=WaitForFirstConsumer --dry-run`

### Questions:
* Do the license files need updating? No
* Are there breaking changes for older versions? No
* Does this need new documentation? No
Author: Kenchu123 <[email protected]>
Signed-off-by: Kevin <[email protected]>
Closes #717 from Kenchu123/SUBMARINE-990 and squashes the following commits:
f12570a6 [Kenchu123] SUBMARINE-990. Make submarine pvc accessMode to be
ReadWriteOnce for local provisioner
02d6b70d [Kenchu123] SUBMARINE-990. Add volumeBindingMode. Add templates to
submarine helm install storageclass. Modify README.md.
817ef59a [Kenchu123] SUBMARINE-990. Add helm templates to set up storage
class configurations
---
.../templates/storageclass.yaml | 0
submarine-cloud-v2/README.md | 12 +++++++++++-
.../{values.yaml => templates/_helpers.tpl} | 20 ++++++++++++++++----
.../submarine-operator/templates/storageclass.yaml | 18 ++++++++++--------
.../helm-charts/submarine-operator/values.yaml | 11 +++++++++++
.../pkg/controller/submarine_database.go | 2 +-
submarine-cloud-v2/pkg/controller/submarine_minio.go | 2 +-
.../pkg/controller/submarine_mlflow.go | 2 +-
.../pkg/controller/submarine_tensorboard.go | 2 +-
9 files changed, 52 insertions(+), 17 deletions(-)
diff --git
a/helm-charts/submarine/charts/notebook-controller/templates/storageclass.yaml
b/helm-charts/submarine/templates/storageclass.yaml
similarity index 100%
rename from
helm-charts/submarine/charts/notebook-controller/templates/storageclass.yaml
rename to helm-charts/submarine/templates/storageclass.yaml
diff --git a/submarine-cloud-v2/README.md b/submarine-cloud-v2/README.md
index 5c8e78e..4b7fbbc 100644
--- a/submarine-cloud-v2/README.md
+++ b/submarine-cloud-v2/README.md
@@ -16,10 +16,12 @@
-->
# submarine-cloud-v2 (submarine operator)
+
`submarine-cloud-v2`, i.e. **submarine-operator**, implements the operator for
Submarine application. The operator provides a new option for users to deploy
the Submarine service to their Kubernetes clusters. The **submarine-operator**
can fix some errors automatically. However, if the Submarine service is
deployed with Helm, the errors need to be fixed by human operators.
# Getting Started
-* In this section, we provide two methods, including **out-of-cluter** method
and **in-cluster** method, for you to deploy your **submarine-operator**. In
addition, the out-of-cluster method is convenient for operator developers. On
the other hand, the in-cluster method is suitable for production.
+
+- In this section, we provide two methods, including **out-of-cluter** method
and **in-cluster** method, for you to deploy your **submarine-operator**. In
addition, the out-of-cluster method is convenient for operator developers. On
the other hand, the in-cluster method is suitable for production.
## Initialization
@@ -32,6 +34,14 @@ go mod vendor
minikube start --vm-driver=docker --kubernetes-version v1.15.11
```
+## Set up storage class fields
+
+One can set up storage class fields in `values.yaml` or using helm with
`--set`. We've set up minikube's provisioner for storage class as default.
+
+For example, if you are using kind in local, please add `--set
storageClass.provisioner=rancher.io/local-path --set
storageClass.volumeBindingMode=WaitForFirstConsumer` to helm install command.
+
+Documentation for storage class:
https://kubernetes.io/docs/concepts/storage/storage-classes/
+
## Run operator out-of-cluster
```bash
diff --git a/submarine-cloud-v2/helm-charts/submarine-operator/values.yaml
b/submarine-cloud-v2/helm-charts/submarine-operator/templates/_helpers.tpl
similarity index 63%
copy from submarine-cloud-v2/helm-charts/submarine-operator/values.yaml
copy to submarine-cloud-v2/helm-charts/submarine-operator/templates/_helpers.tpl
index 3b2d4e6..8f67df5 100644
--- a/submarine-cloud-v2/helm-charts/submarine-operator/values.yaml
+++ b/submarine-cloud-v2/helm-charts/submarine-operator/templates/_helpers.tpl
@@ -15,7 +15,19 @@
# limitations under the License.
#
-name: submarine-operator-demo
-replicas: 1
-image: apache/submarine:operator-0.6.0-SNAPSHOT
-dev: false
+{{/*
+Set up storage class fields
+*/}}
+{{ define "storageClass.fields" }}
+{{ with .Values.storageClass }}
+reclaimPolicy: {{ .reclaimPolicy | default "Delete" }}
+volumeBindingMode: {{ .volumeBindingMode | default "Immediate" }}
+provisioner: {{ .provisioner | default "k8s.io/minikube-hostpath" }}
+{{ if .parameters }}
+parameters:
+ {{ range $key, $val := .parameters }}
+ {{ $key }}: {{ $val | quote }}
+ {{ end }}
+{{ end }}
+{{ end }}
+{{ end }}
diff --git
a/submarine-cloud-v2/helm-charts/submarine-operator/templates/storageclass.yaml
b/submarine-cloud-v2/helm-charts/submarine-operator/templates/storageclass.yaml
index 6e29357..081f258 100644
---
a/submarine-cloud-v2/helm-charts/submarine-operator/templates/storageclass.yaml
+++
b/submarine-cloud-v2/helm-charts/submarine-operator/templates/storageclass.yaml
@@ -19,27 +19,29 @@ apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: submarine-database-sc
-provisioner: k8s.io/minikube-hostpath
-reclaimPolicy: Delete
+{{- template "storageClass.fields" . }}
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: submarine-tensorboard-sc
-provisioner: k8s.io/minikube-hostpath
-reclaimPolicy: Delete
+{{- template "storageClass.fields" . }}
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: submarine-mlflow-sc
-provisioner: k8s.io/minikube-hostpath
-reclaimPolicy: Delete
+{{- template "storageClass.fields" . }}
---
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: submarine-minio-sc
-provisioner: k8s.io/minikube-hostpath
-reclaimPolicy: Delete
+{{- template "storageClass.fields" . }}
+---
+apiVersion: storage.k8s.io/v1
+kind: StorageClass
+metadata:
+ name: notebook-storageclass
+{{- template "storageClass.fields" . }}
diff --git a/submarine-cloud-v2/helm-charts/submarine-operator/values.yaml
b/submarine-cloud-v2/helm-charts/submarine-operator/values.yaml
index 3b2d4e6..373b685 100644
--- a/submarine-cloud-v2/helm-charts/submarine-operator/values.yaml
+++ b/submarine-cloud-v2/helm-charts/submarine-operator/values.yaml
@@ -18,4 +18,15 @@
name: submarine-operator-demo
replicas: 1
image: apache/submarine:operator-0.6.0-SNAPSHOT
+# dev is to tell helm to install submarine-operator or not
dev: false
+# storageClass is for dynamically creating persistent volumes
+storageClass:
+ # reclaimPolicy is to determine the action after the persistent volume is
released
+ reclaimPolicy: Delete
+ # volumeBindingMode controls when volume binding and dynamically
provisioning should occur
+ volumeBindingMode: Immediate
+ # provisioner is to determine what volume plugin is used for provisioning PVs
+ provisioner: k8s.io/minikube-hostpath
+ # parameters describe volumes belonging to the storage class
+ parameters:
diff --git a/submarine-cloud-v2/pkg/controller/submarine_database.go
b/submarine-cloud-v2/pkg/controller/submarine_database.go
index d92a804..867179a 100644
--- a/submarine-cloud-v2/pkg/controller/submarine_database.go
+++ b/submarine-cloud-v2/pkg/controller/submarine_database.go
@@ -43,7 +43,7 @@ func newSubmarineDatabasePersistentVolumeClaim(submarine
*v1alpha1.Submarine) *c
},
Spec: corev1.PersistentVolumeClaimSpec{
AccessModes: []corev1.PersistentVolumeAccessMode{
- corev1.ReadWriteMany,
+ corev1.ReadWriteOnce,
},
Resources: corev1.ResourceRequirements{
Requests: corev1.ResourceList{
diff --git a/submarine-cloud-v2/pkg/controller/submarine_minio.go
b/submarine-cloud-v2/pkg/controller/submarine_minio.go
index 7c0873c..0fb0121 100644
--- a/submarine-cloud-v2/pkg/controller/submarine_minio.go
+++ b/submarine-cloud-v2/pkg/controller/submarine_minio.go
@@ -45,7 +45,7 @@ func newSubmarineMinioPersistentVolumeClaim(submarine
*v1alpha1.Submarine) *core
},
Spec: corev1.PersistentVolumeClaimSpec{
AccessModes: []corev1.PersistentVolumeAccessMode{
- corev1.ReadWriteMany,
+ corev1.ReadWriteOnce,
},
Resources: corev1.ResourceRequirements{
Requests: corev1.ResourceList{
diff --git a/submarine-cloud-v2/pkg/controller/submarine_mlflow.go
b/submarine-cloud-v2/pkg/controller/submarine_mlflow.go
index 1e5e8d5..33e6061 100644
--- a/submarine-cloud-v2/pkg/controller/submarine_mlflow.go
+++ b/submarine-cloud-v2/pkg/controller/submarine_mlflow.go
@@ -43,7 +43,7 @@ func newSubmarineMlflowPersistentVolumeClaim(submarine
*v1alpha1.Submarine) *cor
},
Spec: corev1.PersistentVolumeClaimSpec{
AccessModes: []corev1.PersistentVolumeAccessMode{
- corev1.ReadWriteMany,
+ corev1.ReadWriteOnce,
},
Resources: corev1.ResourceRequirements{
Requests: corev1.ResourceList{
diff --git a/submarine-cloud-v2/pkg/controller/submarine_tensorboard.go
b/submarine-cloud-v2/pkg/controller/submarine_tensorboard.go
index cc71b25..e2a584e 100644
--- a/submarine-cloud-v2/pkg/controller/submarine_tensorboard.go
+++ b/submarine-cloud-v2/pkg/controller/submarine_tensorboard.go
@@ -45,7 +45,7 @@ func newSubmarineTensorboardPersistentVolumeClaim(submarine
*v1alpha1.Submarine)
},
Spec: corev1.PersistentVolumeClaimSpec{
AccessModes: []corev1.PersistentVolumeAccessMode{
- corev1.ReadWriteMany,
+ corev1.ReadWriteOnce,
},
Resources: corev1.ResourceRequirements{
Requests: corev1.ResourceList{
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]