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

liuxun 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 3c285b0  SUBMARINE-532. Use Notebook CRD & controller to spawn jupyter 
notebook
3c285b0 is described below

commit 3c285b051b2320228af15342768cc1149f833e8d
Author: Ryan Lo <[email protected]>
AuthorDate: Wed Jul 1 21:40:15 2020 +0800

    SUBMARINE-532. Use Notebook CRD & controller to spawn jupyter notebook
    
    ### What is this PR for?
    This PR shows how to use Kubeflow's Notebook CRD & controller to spawn 
jupyter notebook
    
    ### What type of PR is it?
    [Improvement]
    
    ### Todos
    1. User doc of notebook and example yaml
    
    ### What is the Jira issue?
    
[SUBMARINE-532](https://issues.apache.org/jira/projects/SUBMARINE/issues/SUBMARINE-532)
    
    ### How should this be tested?
    [CI](https://travis-ci.org/github/lowc1012/submarine/builds/703459155)
    
    ### Screenshots (if appropriate)
    
    ### Questions:
    * Does the licenses files need update? No
    * Is there breaking changes for older versions? No
    * Does this needs documentation? No
    
    Author: Ryan Lo <[email protected]>
    
    Closes #335 from lowc1012/SUBMARINE-532 and squashes the following commits:
    
    dc4985c [Ryan Lo] SUBMARINE-532. Add user docs of notebook controller and 
example of usage
    29ec6f6 [Ryan Lo] SUBMARINE-532. Use Notebook CRD & controller to spawn 
jupyter notebook
---
 dev-support/docker-images/jupyter/Dockerfile       |   6 +-
 dev-support/k8s/deploy-notebook-controller.sh      |  62 ++++++++++++
 .../notebook-controller/cluster-role-binding.yaml  |  11 +++
 .../k8s/notebook-controller/cluster-role.yaml      | 107 +++++++++++++++++++++
 dev-support/k8s/notebook-controller/crd.yaml       |  64 ++++++++++++
 .../k8s/notebook-controller/deployment.yaml        |  23 +++++
 .../k8s/notebook-controller/deployment_patch.yaml  |  15 +++
 .../k8s/notebook-controller/kustomization.yaml     |  42 ++++++++
 .../k8s/notebook-controller/service-account.yaml   |   4 +
 dev-support/k8s/notebook-controller/service.yaml   |   7 ++
 docs/userdocs/k8s/jupyter-example.yaml             |  36 +++++++
 docs/userdocs/k8s/notebook.md                      |  70 ++++++++++++++
 submarine-cloud/hack/deploy-submarine.sh           |   6 --
 submarine-cloud/hack/integration-test.sh           |   2 +-
 submarine-cloud/hack/kind-cluster-build.sh         |   3 -
 .../manifests/submarine-cluster/jupyter.yaml       |  53 ----------
 .../submarine-cluster/submarine-server.yaml        |   4 -
 17 files changed, 444 insertions(+), 71 deletions(-)

diff --git a/dev-support/docker-images/jupyter/Dockerfile 
b/dev-support/docker-images/jupyter/Dockerfile
index 69eb76e..110ed43 100644
--- a/dev-support/docker-images/jupyter/Dockerfile
+++ b/dev-support/docker-images/jupyter/Dockerfile
@@ -19,7 +19,7 @@ FROM $BASE_IMAGE
 
 ARG NB_USER="jovyan"
 ARG NB_UID="1000"
-ARG NB_PREFIX="/jupyter/"
+ARG NB_PREFIX="/"
 ARG NB_PORT=8888
 
 USER root
@@ -72,9 +72,7 @@ RUN mv /tini /usr/local/bin/tini && chmod +x 
/usr/local/bin/tini
 
 # Install python package
 RUN pip uninstall -y enum34
-RUN pip3 --no-cache-dir install \
-    jupyterhub \
-    jupyterlab
+RUN pip3 --no-cache-dir install jupyterlab
 
 # Configure container startup
 EXPOSE $NB_PORT
diff --git a/dev-support/k8s/deploy-notebook-controller.sh 
b/dev-support/k8s/deploy-notebook-controller.sh
new file mode 100755
index 0000000..a672daa
--- /dev/null
+++ b/dev-support/k8s/deploy-notebook-controller.sh
@@ -0,0 +1,62 @@
+#!/bin/bash
+#
+# Licensed to the Apache Software Foundation (ASF) under one
+# or more contributor license agreements.  See the NOTICE file
+# distributed with this work for additional information
+# regarding copyright ownership.  The ASF licenses this file
+# to you under the Apache License, Version 2.0 (the
+# "License"); you may not use this file except in compliance
+# with the License.  You may obtain a copy of the License at
+#
+#     http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+set -e
+
+readonly 
NOTEBOOK_CONTROLLER_IMAGE="gcr.io/kubeflow-images-public/notebook-controller:v1.1.0-g253890cb"
+
+if [ -L "${BASH_SOURCE-$0}" ]; then
+  PWD=$(dirname "$(readlink "${BASH_SOURCE-$0}")")
+else
+  PWD=$(dirname "${BASH_SOURCE-$0}")
+fi
+CURRENT_PATH=$(cd "${PWD}">/dev/null; pwd)
+export CURRENT_PATH
+export SUBMARINE_HOME=${CURRENT_PATH}/../..
+# lib.sh use the ROOT variable
+export ROOT="${SUBMARINE_HOME}/submarine-cloud/"
+export KUBECONFIG="${HOME}/.kube/kind-config-${clusterName:-kind}"
+
+# shellcheck source=./../../submarine-cloud/hack/lib.sh
+source "${SUBMARINE_HOME}/submarine-cloud/hack/lib.sh"
+
+###########################################
+# Load local docker image into registry
+# Globals:
+#   KIND_BIN
+# Arguments:
+#   image
+###########################################
+function load_image_to_registry() {
+  if [[ ! $(docker inspect "$1" > /dev/null) ]] ; then
+    docker pull "$1"
+  fi
+  ${KIND_BIN} load docker-image "$1"
+}
+
+
+function main() {
+
+  hack::ensure_kubectl
+
+  load_image_to_registry "${NOTEBOOK_CONTROLLER_IMAGE}"
+  ${KUBECTL_BIN} apply -k "${CURRENT_PATH}/notebook-controller"
+
+}
+
+main "$@"
diff --git a/dev-support/k8s/notebook-controller/cluster-role-binding.yaml 
b/dev-support/k8s/notebook-controller/cluster-role-binding.yaml
new file mode 100644
index 0000000..a1a3945
--- /dev/null
+++ b/dev-support/k8s/notebook-controller/cluster-role-binding.yaml
@@ -0,0 +1,11 @@
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRoleBinding
+metadata:
+  name: role-binding
+roleRef:
+  apiGroup: rbac.authorization.k8s.io
+  kind: ClusterRole
+  name: role
+subjects:
+- kind: ServiceAccount
+  name: service-account
diff --git a/dev-support/k8s/notebook-controller/cluster-role.yaml 
b/dev-support/k8s/notebook-controller/cluster-role.yaml
new file mode 100644
index 0000000..16b6253
--- /dev/null
+++ b/dev-support/k8s/notebook-controller/cluster-role.yaml
@@ -0,0 +1,107 @@
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+  name: role
+rules:
+- apiGroups:
+  - apps
+  resources:
+  - statefulsets
+  - deployments
+  verbs:
+  - '*'
+- apiGroups:
+  - ""
+  resources:
+  - pods
+  verbs:
+  - get
+  - list
+  - watch
+- apiGroups:
+  - ""
+  resources:
+  - services
+  verbs:
+  - '*'
+- apiGroups:
+  - ""
+  resources:
+  - events
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+- apiGroups:
+  - kubeflow.org
+  resources:
+  - notebooks
+  - notebooks/status
+  - notebooks/finalizers
+  verbs:
+  - '*'
+- apiGroups:
+  - networking.istio.io
+  resources:
+  - virtualservices
+  verbs:
+  - '*'
+
+---
+
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+  name: kubeflow-notebooks-admin
+  labels:
+    rbac.authorization.kubeflow.org/aggregate-to-kubeflow-admin: "true"
+aggregationRule:
+  clusterRoleSelectors:
+  - matchLabels:
+      rbac.authorization.kubeflow.org/aggregate-to-kubeflow-notebooks-admin: 
"true"
+rules: []
+
+---
+
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+  name: kubeflow-notebooks-edit
+  labels:
+    rbac.authorization.kubeflow.org/aggregate-to-kubeflow-edit: "true"
+    rbac.authorization.kubeflow.org/aggregate-to-kubeflow-notebooks-admin: 
"true"
+rules:
+- apiGroups:
+  - kubeflow.org
+  resources:
+  - notebooks
+  - notebooks/status
+  verbs:
+  - get
+  - list
+  - watch
+  - create
+  - delete
+  - deletecollection
+  - patch
+  - update
+
+---
+
+apiVersion: rbac.authorization.k8s.io/v1
+kind: ClusterRole
+metadata:
+  name: kubeflow-notebooks-view
+  labels:
+    rbac.authorization.kubeflow.org/aggregate-to-kubeflow-view: "true"
+rules:
+- apiGroups:
+  - kubeflow.org
+  resources:
+  - notebooks
+  - notebooks/status
+  verbs:
+  - get
+  - list
+  - watch
diff --git a/dev-support/k8s/notebook-controller/crd.yaml 
b/dev-support/k8s/notebook-controller/crd.yaml
new file mode 100644
index 0000000..b6556bd
--- /dev/null
+++ b/dev-support/k8s/notebook-controller/crd.yaml
@@ -0,0 +1,64 @@
+apiVersion: apiextensions.k8s.io/v1beta1
+kind: CustomResourceDefinition
+metadata:
+  name: notebooks.kubeflow.org
+spec:
+  group: kubeflow.org
+  names:
+    kind: Notebook
+    plural: notebooks
+    singular: notebook
+  scope: Namespaced
+  subresources:
+    status: {}
+  versions:
+  - name: v1alpha1
+    served: true
+    storage: false
+  - name: v1beta1
+    served: true
+    storage: true
+  - name: v1
+    served: true
+    storage: false
+  validation:
+    openAPIV3Schema:
+      properties:
+        apiVersion:
+          description: 'APIVersion defines the versioned schema of this 
representation
+            of an object. Servers should convert recognized schemas to the 
latest
+            internal value, and may reject unrecognized values. More info: 
https://git.k8s.io/community/contributors/devel/api-conventions.md#resources'
+          type: string
+        kind:
+          description: 'Kind is a string value representing the REST resource 
this
+            object represents. Servers may infer this from the endpoint the 
client
+            submits requests to. Cannot be updated. In CamelCase. More info: 
https://git.k8s.io/community/contributors/devel/api-conventions.md#types-kinds'
+          type: string
+        metadata:
+          type: object
+        spec:
+          properties:
+            template:
+              description: 'INSERT ADDITIONAL SPEC FIELDS - desired state of 
cluster
+                Important: Run "make" to regenerate code after modifying this 
file'
+              properties:
+                spec:
+                  type: object
+              type: object
+          type: object
+        status:
+          properties:
+            conditions:
+              description: Conditions is an array of current conditions
+              items:
+                properties:
+                  type:
+                    description: Type of the confition/
+                    type: string
+                required:
+                - type
+                type: object
+              type: array
+          required:
+          - conditions
+          type: object
diff --git a/dev-support/k8s/notebook-controller/deployment.yaml 
b/dev-support/k8s/notebook-controller/deployment.yaml
new file mode 100644
index 0000000..ded2ad0
--- /dev/null
+++ b/dev-support/k8s/notebook-controller/deployment.yaml
@@ -0,0 +1,23 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: deployment
+spec:
+  template:
+    metadata:
+      annotations:
+        sidecar.istio.io/inject: "false"
+    spec:
+      containers:
+      - name: manager
+        image: 
gcr.io/kubeflow-images-public/notebook-controller:v1.1.0-g253890cb
+        command:
+          - /manager
+        imagePullPolicy: IfNotPresent
+        livenessProbe:
+          httpGet:
+            path: /metrics
+            port: 8080
+          initialDelaySeconds: 30
+          periodSeconds: 30
+      serviceAccountName: service-account
diff --git a/dev-support/k8s/notebook-controller/deployment_patch.yaml 
b/dev-support/k8s/notebook-controller/deployment_patch.yaml
new file mode 100644
index 0000000..a7dfb43
--- /dev/null
+++ b/dev-support/k8s/notebook-controller/deployment_patch.yaml
@@ -0,0 +1,15 @@
+apiVersion: apps/v1
+kind: Deployment
+metadata:
+  name: deployment
+spec:
+  template:
+    spec:
+      containers:
+      - name: manager        
+        env:
+          # We use a patch to set the USE_ISTIO because in other patches
+          # we want to set it to a configMapRef and so if we include the value
+          # in the base when we do the merge we end up with 2 fields setting 
the value.
+          - name: USE_ISTIO
+            value: "false"        
\ No newline at end of file
diff --git a/dev-support/k8s/notebook-controller/kustomization.yaml 
b/dev-support/k8s/notebook-controller/kustomization.yaml
new file mode 100644
index 0000000..dbc92d0
--- /dev/null
+++ b/dev-support/k8s/notebook-controller/kustomization.yaml
@@ -0,0 +1,42 @@
+apiVersion: kustomize.config.k8s.io/v1beta1
+kind: Kustomization
+resources:
+- cluster-role-binding.yaml
+- cluster-role.yaml
+- crd.yaml
+- deployment.yaml
+- service-account.yaml
+- service.yaml
+namePrefix: notebook-controller-
+namespace: default
+patchesStrategicMerge:
+- deployment_patch.yaml
+commonLabels:
+  app: notebook-controller
+  kustomize.component: notebook-controller
+images:
+- name: gcr.io/kubeflow-images-public/notebook-controller
+  newName: gcr.io/kubeflow-images-public/notebook-controller
+  newTag: v1.1.0-g253890cb
+configMapGenerator:
+- name: parameters
+  literals:
+    - USE_ISTIO=false
+    - ISTIO_GATEWAY=
+generatorOptions:
+  disableNameSuffixHash: true
+vars:
+- fieldref:
+    fieldPath: data.USE_ISTIO
+  name: USE_ISTIO
+  objref:
+    apiVersion: v1
+    kind: ConfigMap
+    name: parameters
+- fieldref:
+    fieldPath: data.ISTIO_GATEWAY
+  name: ISTIO_GATEWAY
+  objref:
+    apiVersion: v1
+    kind: ConfigMap
+    name: parameters
diff --git a/dev-support/k8s/notebook-controller/service-account.yaml 
b/dev-support/k8s/notebook-controller/service-account.yaml
new file mode 100644
index 0000000..a36cbd8
--- /dev/null
+++ b/dev-support/k8s/notebook-controller/service-account.yaml
@@ -0,0 +1,4 @@
+apiVersion: v1
+kind: ServiceAccount
+metadata:
+  name: service-account
diff --git a/dev-support/k8s/notebook-controller/service.yaml 
b/dev-support/k8s/notebook-controller/service.yaml
new file mode 100644
index 0000000..c7368f9
--- /dev/null
+++ b/dev-support/k8s/notebook-controller/service.yaml
@@ -0,0 +1,7 @@
+apiVersion: v1
+kind: Service
+metadata:
+  name: service
+spec:
+  ports:
+  - port: 443
diff --git a/docs/userdocs/k8s/jupyter-example.yaml 
b/docs/userdocs/k8s/jupyter-example.yaml
new file mode 100644
index 0000000..35c5fac
--- /dev/null
+++ b/docs/userdocs/k8s/jupyter-example.yaml
@@ -0,0 +1,36 @@
+#
+# Licensed to the Apache Software Foundation (ASF) under one or more
+# contributor license agreements.  See the NOTICE file distributed with
+# this work for additional information regarding copyright ownership.
+# The ASF licenses this file to You under the Apache License, Version 2.0
+# (the "License"); you may not use this file except in compliance with
+# the License.  You may obtain a copy of the License at
+#
+#    http://www.apache.org/licenses/LICENSE-2.0
+#
+# Unless required by applicable law or agreed to in writing, software
+# distributed under the License is distributed on an "AS IS" BASIS,
+# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+# See the License for the specific language governing permissions and
+# limitations under the License.
+#
+
+apiVersion: kubeflow.org/v1alpha1
+kind: Notebook
+metadata:
+  labels:
+    app: my-nb
+  name: my-nb
+  namespace: default
+spec:
+  template:
+    spec:
+      containers:
+      - env: []
+        image: apache/submarine:tf2.1.0-jupyter
+        name: my-nb
+        resources:
+          limits: {}
+          requests:
+            cpu: "0.5"
+            memory: 1.0Gi
diff --git a/docs/userdocs/k8s/notebook.md b/docs/userdocs/k8s/notebook.md
new file mode 100644
index 0000000..33583d2
--- /dev/null
+++ b/docs/userdocs/k8s/notebook.md
@@ -0,0 +1,70 @@
+<!--
+Licensed to the Apache Software Foundation (ASF) under one
+or more contributor license agreements.  See the NOTICE file
+distributed with this work for additional information
+regarding copyright ownership.  The ASF licenses this file
+to you under the Apache License, Version 2.0 (the
+"License"); you may not use this file except in compliance
+with the License.  You may obtain a copy of the License at
+
+  http://www.apache.org/licenses/LICENSE-2.0
+
+Unless required by applicable law or agreed to in writing,
+software distributed under the License is distributed on an
+"AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
+KIND, either express or implied.  See the License for the
+specific language governing permissions and limitations
+under the License.
+-->
+
+# Notebook Guide
+This guide describes how to use Kubeflow's notebook-controller to manage 
jupyter notebook instances.
+
+## Notebook Controller
+The controller creates a StatefulSet to manage the notebook instance, and a 
Service to expose its port. \
+Please refer to the 
[link](https://github.com/kubeflow/kubeflow/tree/master/components/notebook-controller)
 for more info.
+
+
+### Pod Spec
+To specify the PodSpec for the jupyter notebook.
+```yaml
+apiVersion: kubeflow.org/v1alpha1
+kind: Notebook
+metadata:
+  name: {NOTEBOOK_NAME}
+  namespace: {NAMESPACE}
+  labels:
+      app: {NOTEBOOK_NAME}
+spec:
+  template:
+    spec:
+      containers:
+      - image: {IMAGE_NAME}
+        name: {NOTEBOOK_NAME}
+        env: []
+        resources:
+          requests:
+            cpu: "0.5"
+            memory: "1.0Gi"
+      volumes: []
+        ...
+        ..
+```
+You could refer to this sample 
[Dockerfile](../../../dev-support/docker-images/jupyter/Dockerfile) for 
building your own
+jupyter docker image and the CR (Notebook) [example](jupyter-example.yaml).
+
+### Create a notebook instance
+```
+kubectl apply -f jupyter-example.yaml
+```
+
+## Access the notebook locally
+The controller creates a Service which will target TCP port 8888 on jupyter 
pod and be exposed on port 80 internally. \
+You can use the following command to set up port forwarding to the notebook.
+```
+kubectl port-forward -n ${NAMESPACE} svc/${NOTEBOOK_NAME} 8888:80
+```
+To access the jupyter notebook, open the following URL in your browser.
+```
+http://localhost:8888/notebook/${NAMESPACE}/${NOTEBOOK_NAME}
+```
diff --git a/submarine-cloud/hack/deploy-submarine.sh 
b/submarine-cloud/hack/deploy-submarine.sh
index 48d8f1e..900634b 100755
--- a/submarine-cloud/hack/deploy-submarine.sh
+++ b/submarine-cloud/hack/deploy-submarine.sh
@@ -21,7 +21,6 @@ ROOT=$(unset CDPATH && cd $(dirname "${BASH_SOURCE[0]}")/.. 
&& pwd)
 cd $ROOT
 SUBMARINE_HOME=${ROOT}/..
 SUBMARINE_VERSION="0.4.0"
-TF_JUPYTER_IMAGE="apache/submarine:tf2.1.0-jupyter";
 
 source $ROOT/hack/lib.sh
 
@@ -71,11 +70,6 @@ function install_submarine() {
     fi
     $KIND_BIN load docker-image apache/submarine:database-${SUBMARINE_VERSION}
 
-    if ! docker inspect ${TF_JUPYTER_IMAGE} >/dev/null ; then
-      docker pull ${TF_JUPYTER_IMAGE}
-    fi
-    $KIND_BIN load docker-image ${TF_JUPYTER_IMAGE} >/dev/null
-
     if ! docker inspect apache/submarine:server-${SUBMARINE_VERSION} 
>/dev/null ; then
       docker pull apache/submarine:server-${SUBMARINE_VERSION}
     fi
diff --git a/submarine-cloud/hack/integration-test.sh 
b/submarine-cloud/hack/integration-test.sh
index 48fd23d..51a6723 100755
--- a/submarine-cloud/hack/integration-test.sh
+++ b/submarine-cloud/hack/integration-test.sh
@@ -31,6 +31,7 @@ export KUBECONFIG=~/.kube/kind-config-${clusterName:-kind}
 function start() {
   $ROOT/hack/kind-cluster-build.sh
   $SUBMARINE_HOME/dev-support/k8s/deploy-kubeflow-operators.sh -a
+  $SUBMARINE_HOME/dev-support/k8s/deploy-notebook-controller.sh
   $ROOT/hack/deploy-submarine.sh --test
 
   for((i=1;i<=30;i++)); do
@@ -75,7 +76,6 @@ function update_docker_images() {
   $SUBMARINE_HOME/dev-support/docker-images/database/build.sh
   $SUBMARINE_HOME/dev-support/docker-images/operator/build.sh
   $SUBMARINE_HOME/dev-support/docker-images/submarine/build.sh
-  $SUBMARINE_HOME/dev-support/docker-images/jupyter/build.sh
 
   docker images
 }
diff --git a/submarine-cloud/hack/kind-cluster-build.sh 
b/submarine-cloud/hack/kind-cluster-build.sh
index f1c743d..b252f25 100755
--- a/submarine-cloud/hack/kind-cluster-build.sh
+++ b/submarine-cloud/hack/kind-cluster-build.sh
@@ -136,12 +136,9 @@ EOF
     for ((k=1;k<=${volumeNum};k++))
     do
         mkdir -p ${data_dir}/worker${i}/vol${k}
-        mkdir -p ${data_dir}/worker${i}/submarine-jupyter
         cat <<EOF >> ${configFile}
   - containerPath: /mnt/disks/vol${k}
     hostPath: ${data_dir}/worker${i}/vol${k}
-  - containerPath: /mnt/disks/submarine-jupyter
-    hostPath: ${data_dir}/worker${i}/submarine-jupyter
 EOF
     done
 done
diff --git a/submarine-cloud/manifests/submarine-cluster/jupyter.yaml 
b/submarine-cloud/manifests/submarine-cluster/jupyter.yaml
deleted file mode 100644
index 1015c68..0000000
--- a/submarine-cloud/manifests/submarine-cluster/jupyter.yaml
+++ /dev/null
@@ -1,53 +0,0 @@
-# Licensed to the Apache Software Foundation (ASF) under one or more
-# contributor license agreements. See the NOTICE file distributed with
-# this work for additional information regarding copyright ownership.
-# The ASF licenses this file to You under the Apache License, Version 2.0
-# (the "License"); you may not use this file except in compliance with
-# the License. You may obtain a copy of the License at
-#
-# http://www.apache.org/licenses/LICENSE-2.0
-#
-# Unless required by applicable law or agreed to in writing, software
-# distributed under the License is distributed on an "AS IS" BASIS,
-# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
-# See the License for the specific language governing permissions and
-# limitations under the License.
-
-apiVersion: extensions/v1beta1
-kind: Deployment
-metadata:
-  name: jupyter-notebook
-  labels:
-    app: jupyter
-spec:
-  selector:
-    matchLabels:
-      app: jupyter
-  replicas: 1
-  template:
-    metadata:
-      labels:
-        app: jupyter
-    spec:
-      containers:
-        - name: jupyter
-          image: apache/submarine:tf2.1.0-jupyter
-          imagePullPolicy: IfNotPresent
-          volumeMounts:
-            - mountPath: /home/jovyan
-              name: jupyter-storage
-      volumes:
-        - name: jupyter-storage
-          hostPath:
-            path: /mnt/disks/submarine-jupyter
-            type: DirectoryOrCreate
----
-kind: Service
-apiVersion: v1
-metadata:
-  name: jupyter-svc
-spec:
-  selector:
-    app: jupyter
-  ports:
-    - port: 8888
diff --git a/submarine-cloud/manifests/submarine-cluster/submarine-server.yaml 
b/submarine-cloud/manifests/submarine-cluster/submarine-server.yaml
index dc566a3..c318eb7 100644
--- a/submarine-cloud/manifests/submarine-cluster/submarine-server.yaml
+++ b/submarine-cloud/manifests/submarine-cluster/submarine-server.yaml
@@ -108,10 +108,6 @@ spec:
             backend:
               serviceName: submarine-svc
               servicePort: 8080
-          - path: /jupyter
-            backend:
-              serviceName: jupyter-svc
-              servicePort: 8888
 
 ---
 # You can also access the submarine workbench via port-forward


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to