You are viewing a plain text version of this content. The canonical link for it is here.
Posted to dev@submarine.apache.org by ka...@apache.org on 2021/05/15 01:38:38 UTC

[submarine] branch master updated: SUBMARINE 819. Create namespace for single user

This is an automated email from the ASF dual-hosted git repository.

kaihsun 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 9463906  SUBMARINE 819. Create namespace for single user
9463906 is described below

commit 94639069d3fd6b1f1c993669f24d2928ca0873a8
Author: Kenchu123 <k8...@gmail.com>
AuthorDate: Sat May 15 02:26:45 2021 +0800

    SUBMARINE 819. Create namespace for single user
    
    ### What is this PR for?
    
    Create a namespace `submarine-user-test` of submarine for single user
    
    ### What type of PR is it?
    [Feature]
    
    ### Todos
    
    ### What is the Jira issue?
    
    https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE-819
    
    ### How should this be tested?
    
    Create submarine:
    ```bash
    cd submarine-cloud-v2
    kubectl create ns submarine-operator-test
    kubectl apply -f artifacts/example/crd.yaml
    kubectl apply -f artifacts/examples/example-submarine.yaml -n submarine-operator-test
    go builld -o submarine-operator
    ./submarine-operator
    kubectl port-forward --address 0.0.0.0 service/traefik 32080:80 -n submarine-user-test
    ```
    
    Delete submarine:
    ```bash
    kubectl delete submarine example-submarine -n submarine-operator-test
    ```
    
    ### Screenshots (if appropriate)
    
    https://user-images.githubusercontent.com/17617373/118001859-b1c7ad00-b379-11eb-8651-a829e90c050a.mov
    
    ### Questions:
    
    * Do the license files need updating? No
    * Are there breaking changes for older versions? No
    * Does this need new documentation? No
    
    Author: Kenchu123 <k8...@gmail.com>
    
    Signed-off-by: Kai-Hsun Chen <ka...@apache.org>
    
    Closes #586 from Kenchu123/SUBMARINE-819 and squashes the following commits:
    
    c398d72c [Kenchu123] SUBMARINE-819. Remove some klog line and add comment
    88951cc5 [Kenchu123] SUBMARINE-819. Place create namespace in ADD
    8be2d897 [Kenchu123] SUBMARINE-819. Create new namespace submarine-user-test
---
 submarine-cloud-v2/controller.go | 30 ++++++++++++++++++++++--------
 submarine-cloud-v2/main.go       | 11 ++++++-----
 2 files changed, 28 insertions(+), 13 deletions(-)

diff --git a/submarine-cloud-v2/controller.go b/submarine-cloud-v2/controller.go
index bf54e36..863de53 100644
--- a/submarine-cloud-v2/controller.go
+++ b/submarine-cloud-v2/controller.go
@@ -1069,6 +1069,7 @@ func (c *Controller) syncHandler(workqueueItem WorkQueueItem) error {
 		utilruntime.HandleError(fmt.Errorf("Invalid resource key: %s", key))
 		return nil
 	}
+	newNamespace := "submarine-user-test"
 
 	klog.Info("syncHandler: ", key, " / ", action)
 
@@ -1089,8 +1090,15 @@ func (c *Controller) syncHandler(workqueueItem WorkQueueItem) error {
 		b, err := json.MarshalIndent(submarine.Spec, "", "  ")
 		fmt.Println(string(b))
 
+		// create submarine in a new namespace
+		nsSpec := &corev1.Namespace{ObjectMeta: metav1.ObjectMeta{Name: newNamespace}}
+		_, err = c.kubeclientset.CoreV1().Namespaces().Create(context.TODO(), nsSpec, metav1.CreateOptions{})
+		if err != nil {
+			return err
+		}
+
 		// Install subcharts
-		c.newSubCharts(namespace)
+		c.newSubCharts(newNamespace)
 
 		// Create submarine-server
 		serverImage := submarine.Spec.Server.Image
@@ -1098,31 +1106,31 @@ func (c *Controller) syncHandler(workqueueItem WorkQueueItem) error {
 		if serverImage == "" {
 			serverImage = "apache/submarine:server-" + submarine.Spec.Version
 		}
-		err = c.newSubmarineServer(namespace, serverImage, serverReplicas)
+		err = c.newSubmarineServer(newNamespace, serverImage, serverReplicas)
 		if err != nil {
 			return err
 		}
 
 		// Create Submarine Database
-		err = c.newSubmarineDatabase(namespace, &submarine.Spec)
+		err = c.newSubmarineDatabase(newNamespace, &submarine.Spec)
 		if err != nil {
 			return err
 		}
 
 		// Create ingress
-		err = c.newIngress(namespace)
+		err = c.newIngress(newNamespace)
 		if err != nil {
 			return err
 		}
 
 		// Create RBAC
-		err = c.newSubmarineServerRBAC(namespace)
+		err = c.newSubmarineServerRBAC(newNamespace)
 		if err != nil {
 			return err
 		}
 
 		// Create Submarine Tensorboard
-		err = c.newSubmarineTensorboard(namespace, &submarine.Spec)
+		err = c.newSubmarineTensorboard(newNamespace, &submarine.Spec)
 		if err != nil {
 			return err
 		}
@@ -1134,18 +1142,24 @@ func (c *Controller) syncHandler(workqueueItem WorkQueueItem) error {
 		c.charts = nil
 
 		// Delete namespace: Delete all namespaced resources, ex: POD, Deployment, ... etc.
+		err = c.kubeclientset.CoreV1().Namespaces().Delete(context.TODO(), newNamespace, metav1.DeleteOptions{})
+		if err != nil {
+			return err
+		}
+		klog.Info("Delete Namespace: ", newNamespace)
+
 		err = c.kubeclientset.CoreV1().Namespaces().Delete(context.TODO(), namespace, metav1.DeleteOptions{})
 		if err != nil {
 			return err
 		}
 
 		// Delete non-namespaced resources (ex: PersistentVolume)
-		err = c.kubeclientset.CoreV1().PersistentVolumes().Delete(context.TODO(), "submarine-database-pv--"+namespace, metav1.DeleteOptions{})
+		err = c.kubeclientset.CoreV1().PersistentVolumes().Delete(context.TODO(), "submarine-database-pv--"+newNamespace, metav1.DeleteOptions{})
 		if err != nil {
 			return err
 		}
 
-		err = c.kubeclientset.CoreV1().PersistentVolumes().Delete(context.TODO(), "submarine-tensorboard-pv--"+namespace, metav1.DeleteOptions{})
+		err = c.kubeclientset.CoreV1().PersistentVolumes().Delete(context.TODO(), "submarine-tensorboard-pv--"+newNamespace, metav1.DeleteOptions{})
 		if err != nil {
 			return err
 		}
diff --git a/submarine-cloud-v2/main.go b/submarine-cloud-v2/main.go
index 47236e9..1f1d1fb 100644
--- a/submarine-cloud-v2/main.go
+++ b/submarine-cloud-v2/main.go
@@ -19,17 +19,18 @@ package main
 
 import (
 	"flag"
-	kubeinformers "k8s.io/client-go/informers"
-	"k8s.io/client-go/kubernetes"
-	"k8s.io/client-go/rest"
-	"k8s.io/client-go/tools/clientcmd"
-	"k8s.io/klog/v2"
 	"os"
 	clientset "submarine-cloud-v2/pkg/generated/clientset/versioned"
 	informers "submarine-cloud-v2/pkg/generated/informers/externalversions"
 	"submarine-cloud-v2/pkg/signals"
 	"time"
 
+	kubeinformers "k8s.io/client-go/informers"
+	"k8s.io/client-go/kubernetes"
+	"k8s.io/client-go/rest"
+	"k8s.io/client-go/tools/clientcmd"
+	"k8s.io/klog/v2"
+
 	traefikclientset "github.com/traefik/traefik/v2/pkg/provider/kubernetes/crd/generated/clientset/versioned"
 	traefikinformers "github.com/traefik/traefik/v2/pkg/provider/kubernetes/crd/generated/informers/externalversions"
 )

---------------------------------------------------------------------
To unsubscribe, e-mail: dev-unsubscribe@submarine.apache.org
For additional commands, e-mail: dev-help@submarine.apache.org