{ "kind": "List", "apiVersion": "v1", "items": [ { "kind": "Template", "apiVersion": "v1", "metadata": { "name": "jupyter-notebook-builder", "annotations": { "openshift.io/display-name": "Jupyter Notebook Builder", "description": "Template for building Jupyter Notebook images with bundled notebooks and files.", "iconClass": "icon-python", "tags": "python,jupyter" } }, "parameters": [ { "name": "IMAGE_NAME", "value": "notebook", "required": true }, { "name": "BUILDER_IMAGE", "value": "quay.io/jupyter/minimal-notebook:latest", "required": true }, { "name": "BUILDER_SCRIPTS", "value": "https://raw.githubusercontent.com/jupyter/docker-stacks/main/examples/source-to-image", "required": true }, { "name": "GIT_REPOSITORY_URL", "value": "", "required": true }, { "name": "GIT_REFERENCE", "value": "main", "required": true }, { "name": "CONTEXT_DIR", "value": "", "required": false } ], "objects": [ { "apiVersion": "v1", "kind": "ImageStream", "metadata": { "name": "${IMAGE_NAME}", "labels": { "app": "${IMAGE_NAME}" } } }, { "apiVersion": "v1", "kind": "BuildConfig", "metadata": { "name": "${IMAGE_NAME}", "labels": { "app": "${IMAGE_NAME}" } }, "spec": { "output": { "to": { "kind": "ImageStreamTag", "name": "${IMAGE_NAME}:latest" } }, "resources": { "limits": { "memory": "1Gi" } }, "source": { "type": "Git", "git": { "uri": "${GIT_REPOSITORY_URL}", "ref": "${GIT_REFERENCE}" }, "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { "from": { "kind": "DockerImage", "name": "${BUILDER_IMAGE}" }, "scripts": "${BUILDER_SCRIPTS}" } }, "triggers": [ { "type": "ConfigChange" } ] } } ] }, { "kind": "Template", "apiVersion": "v1", "metadata": { "name": "jupyter-notebook-quickstart", "annotations": { "openshift.io/display-name": "Jupyter Notebook QuickStart", "description": "Template for deploying Jupyter Notebook images with bundled notebooks and files.", "iconClass": "icon-python", "tags": "python,jupyter" } }, "parameters": [ { "name": "APPLICATION_NAME", "value": "notebook", "required": true }, { "name": "BUILDER_IMAGE", "value": "quay.io/jupyter/minimal-notebook:latest", "required": true }, { "name": "BUILDER_SCRIPTS", "value": "https://raw.githubusercontent.com/jupyter/docker-stacks/main/examples/source-to-image", "required": true }, { "name": "GIT_REPOSITORY_URL", "value": "", "required": true }, { "name": "GIT_REFERENCE", "value": "main", "required": true }, { "name": "CONTEXT_DIR", "value": "", "required": false }, { "name": "NOTEBOOK_PASSWORD", "from": "[a-f0-9]{32}", "generate": "expression" } ], "objects": [ { "apiVersion": "v1", "kind": "ImageStream", "metadata": { "name": "${APPLICATION_NAME}", "labels": { "app": "${APPLICATION_NAME}" } } }, { "apiVersion": "v1", "kind": "BuildConfig", "metadata": { "name": "${APPLICATION_NAME}", "labels": { "app": "${APPLICATION_NAME}" } }, "spec": { "output": { "to": { "kind": "ImageStreamTag", "name": "${APPLICATION_NAME}:latest" } }, "resources": { "limits": { "memory": "1Gi" } }, "source": { "type": "Git", "git": { "uri": "${GIT_REPOSITORY_URL}", "ref": "${GIT_REFERENCE}" }, "contextDir": "${CONTEXT_DIR}" }, "strategy": { "type": "Source", "sourceStrategy": { "from": { "kind": "DockerImage", "name": "${BUILDER_IMAGE}" }, "scripts": "${BUILDER_SCRIPTS}" } }, "triggers": [ { "type": "ConfigChange" } ] } }, { "kind": "ConfigMap", "apiVersion": "v1", "metadata": { "name": "${APPLICATION_NAME}-cfg", "labels": { "app": "${APPLICATION_NAME}" } }, "data": { "jupyter_server_config.py": "import os\n\npassword = os.environ.get('JUPYTER_NOTEBOOK_PASSWORD')\n\nif password:\n from jupyter_server.auth import passwd\n c.ServerApp.password = passwd(password)\n del password\n del os.environ['JUPYTER_NOTEBOOK_PASSWORD']\n\nimage_config_file = '/home/jovyan/.jupyter/jupyter_server_config.py'\n\nif os.path.exists(image_config_file):\n with open(image_config_file) as fp:\n exec(compile(fp.read(), image_config_file, 'exec'), globals())\n" } }, { "kind": "DeploymentConfig", "apiVersion": "v1", "metadata": { "name": "${APPLICATION_NAME}", "labels": { "app": "${APPLICATION_NAME}" } }, "spec": { "strategy": { "type": "Recreate" }, "triggers": [ { "type": "ConfigChange" }, { "type": "ImageChange", "imageChangeParams": { "automatic": true, "containerNames": ["jupyter-notebook"], "from": { "kind": "ImageStreamTag", "name": "${APPLICATION_NAME}:latest" } } } ], "replicas": 1, "selector": { "app": "${APPLICATION_NAME}", "deploymentconfig": "${APPLICATION_NAME}" }, "template": { "metadata": { "annotations": { "alpha.image.policy.openshift.io/resolve-names": "*" }, "labels": { "app": "${APPLICATION_NAME}", "deploymentconfig": "${APPLICATION_NAME}" } }, "spec": { "containers": [ { "name": "jupyter-notebook", "image": "${APPLICATION_NAME}:latest", "command": [ "start-notebook.py", "--config=/etc/jupyter/openshift/jupyter_server_config.py", "--no-browser", "--ip=0.0.0.0" ], "ports": [ { "containerPort": 8888, "protocol": "TCP" } ], "env": [ { "name": "JUPYTER_NOTEBOOK_PASSWORD", "value": "${NOTEBOOK_PASSWORD}" } ], "volumeMounts": [ { "mountPath": "/etc/jupyter/openshift", "name": "configs" } ] } ], "automountServiceAccountToken": false, "securityContext": { "supplementalGroups": [100] }, "volumes": [ { "configMap": { "name": "${APPLICATION_NAME}-cfg" }, "name": "configs" } ] } } } }, { "kind": "Route", "apiVersion": "v1", "metadata": { "name": "${APPLICATION_NAME}", "labels": { "app": "${APPLICATION_NAME}" } }, "spec": { "host": "", "to": { "kind": "Service", "name": "${APPLICATION_NAME}", "weight": 100 }, "port": { "targetPort": "8888-tcp" }, "tls": { "termination": "edge", "insecureEdgeTerminationPolicy": "Redirect" } } }, { "kind": "Service", "apiVersion": "v1", "metadata": { "name": "${APPLICATION_NAME}", "labels": { "app": "${APPLICATION_NAME}" } }, "spec": { "ports": [ { "name": "8888-tcp", "protocol": "TCP", "port": 8888, "targetPort": 8888 } ], "selector": { "app": "${APPLICATION_NAME}", "deploymentconfig": "${APPLICATION_NAME}" }, "type": "ClusterIP" } } ] } ] }