Files
docker-stacks/examples/source-to-image/templates.json
2022-07-07 14:51:09 +04:00

373 lines
10 KiB
JSON

{
"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": "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": "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 import notebook.auth\n c.NotebookApp.password = notebook.auth.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.sh",
"--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"
}
}
]
}
]
}