@@ -59,31 +59,147 @@ basehub:
5959 - wildintellect
6060 singleuser :
6161 defaultUrl : /lab
62- image :
63- name : public.ecr.aws/nasa-veda/nasa-veda-singleuser
64- # Based off pangeo/pangeo-notebook:2023.07.05 which uses JupyterLab <4, so jupyterlab-git and dask-dashboard work
65- # If updating this tag, also update it in the `profile_options.image.options.pangeo.kubespawner_override.image`below
66- tag : " 5068290376e8c3151d97a36ae6485bb7ff79650b94aecc93ffb2ea1b42d76460"
6762 profileList :
68- # NOTE: About node sharing
69- #
70- # CPU/Memory requests/limits are actively considered still. This
71- # profile list is setup to involve node sharing as considered in
72- # https://github.com/2i2c-org/infrastructure/issues/2121.
73- #
74- # - Memory requests are different from the description, based on:
75- # whats found to remain allocate in k8s, subtracting 1GiB
76- # overhead for misc system pods, and transitioning from GB in
77- # description to GiB in mem_guarantee.
78- # - CPU requests are lower than the description, with a factor of
79- # 10%.
80- #
81- - display_name : " Small: up to 4 CPU / 32 GB RAM"
82- description : &profile_list_description "Start a container with at least a chosen share of capacity on a node of this type"
83- slug : small
63+ - display_name : " Modified Pangeo Notebook"
64+ slug : modified-pangeo
65+ description : Pangeo based notebook with a Python environment
8466 default : true
67+ kubespawner_override :
68+ image : public.ecr.aws/nasa-veda/nasa-veda-singleuser:5068290376e8c3151d97a36ae6485bb7ff79650b94aecc93ffb2ea1b42d76460
69+ init_containers :
70+ # Need to explicitly fix ownership here, as otherwise these directories will be owned
71+ # by root on most NFS filesystems - neither EFS nor Google Filestore support anonuid
72+ - name : volume-mount-ownership-fix
73+ image : busybox:1.36.1
74+ command :
75+ - sh
76+ - -c
77+ - id && chown 1000:1000 /home/jovyan /home/jovyan/shared && ls -lhd /home/jovyan
78+ securityContext :
79+ runAsUser : 0
80+ volumeMounts :
81+ - name : home
82+ mountPath : /home/jovyan
83+ subPath : " {username}"
84+ # mounted without readonly attribute here,
85+ # so we can chown it appropriately
86+ - name : home
87+ mountPath : /home/jovyan/shared
88+ subPath : _shared
89+ # this container uses nbgitpuller to mount https://github.com/NASA-IMPACT/veda-docs/ for user pods
90+ # image source: https://github.com/NASA-IMPACT/veda-jh-environments/tree/main/docker-images/base/nasa-veda-singleuser-init
91+ - name : nasa-veda-singleuser-init
92+ image : public.ecr.aws/nasa-veda/nasa-veda-singleuser-init:38e8998f9be64b0a59ac6c4d6d152d3403121dfc4be6d49bdf52ddc92827af8a
93+ command :
94+ - " python3"
95+ - " /opt/k8s-init-container-nb-docs.py"
96+ - " /home/jovyan"
97+ volumeMounts :
98+ - name : home
99+ mountPath : /home/jovyan
100+ subPath : " {username}"
101+ securityContext :
102+ runAsUser : 1000
103+ runAsGroup : 1000
104+ profile_options : &profile_options
105+ resource_allocation : &profile_options_resource_allocation
106+ display_name : Resource Allocation
107+ choices :
108+ mem_1_9 :
109+ display_name : 1.9 GB RAM, upto 3.75 CPUs
110+ kubespawner_override :
111+ mem_guarantee : 1991341312
112+ mem_limit : 1991341312
113+ cpu_guarantee : 0.234375
114+ cpu_limit : 3.75
115+ node_selector :
116+ node.kubernetes.io/instance-type : r5.xlarge
117+ default : true
118+ mem_3_7 :
119+ display_name : 3.7 GB RAM, upto 3.75 CPUs
120+ kubespawner_override :
121+ mem_guarantee : 3982682624
122+ mem_limit : 3982682624
123+ cpu_guarantee : 0.46875
124+ cpu_limit : 3.75
125+ node_selector :
126+ node.kubernetes.io/instance-type : r5.xlarge
127+ mem_7_4 :
128+ display_name : 7.4 GB RAM, upto 3.75 CPUs
129+ kubespawner_override :
130+ mem_guarantee : 7965365248
131+ mem_limit : 7965365248
132+ cpu_guarantee : 0.9375
133+ cpu_limit : 3.75
134+ node_selector :
135+ node.kubernetes.io/instance-type : r5.xlarge
136+ mem_14_8 :
137+ display_name : 14.8 GB RAM, upto 3.75 CPUs
138+ kubespawner_override :
139+ mem_guarantee : 15930730496
140+ mem_limit : 15930730496
141+ cpu_guarantee : 1.875
142+ cpu_limit : 3.75
143+ node_selector :
144+ node.kubernetes.io/instance-type : r5.xlarge
145+ mem_29_7 :
146+ display_name : 29.7 GB RAM, upto 3.75 CPUs
147+ kubespawner_override :
148+ mem_guarantee : 31861460992
149+ mem_limit : 31861460992
150+ cpu_guarantee : 3.75
151+ cpu_limit : 3.75
152+ node_selector :
153+ node.kubernetes.io/instance-type : r5.xlarge
154+
155+ mem_60_7 :
156+ display_name : 60.7 GB RAM, upto 15.725 CPUs
157+ kubespawner_override :
158+ mem_guarantee : 65147242496
159+ mem_limit : 65147242496
160+ cpu_guarantee : 7.8625
161+ cpu_limit : 15.725
162+ node_selector :
163+ node.kubernetes.io/instance-type : r5.4xlarge
164+ mem_121_3 :
165+ display_name : 121.3 GB RAM, upto 15.725 CPUs
166+ kubespawner_override :
167+ mem_guarantee : 130294484992
168+ mem_limit : 130294484992
169+ cpu_guarantee : 15.725
170+ cpu_limit : 15.725
171+ node_selector :
172+ node.kubernetes.io/instance-type : r5.4xlarge
173+ - display_name : " Rocker Geospatial with RStudio"
174+ slug : rocker
175+ description : R environment with many geospatial libraries pre-installed
176+ kubespawner_override :
177+ image : rocker/binder:4.3
178+ # Launch RStudio after the user logs in
179+ default_url : /rstudio
180+ # Ensures container working dir is homedir
181+ # https://github.com/2i2c-org/infrastructure/issues/2559
182+ working_dir : /home/rstudio
183+ profile_options : *profile_options
184+ - display_name : " QGIS on Linux Desktop"
185+ slug : qgis
186+ description : Linux desktop in the browser, with qgis installed
187+ kubespawner_override :
188+ # Explicitly unset this - we set this to 'jupyterhub-singleuser'
189+ # in basehub/values.yaml. We instead want to leave this unset,
190+ # so the default command for the docker image is used instead.
191+ # This is required for .desktop files to show up correctly.
192+ cmd : null
193+ # Launch people directly into the Linux desktop when they start
194+ default_url : /desktop
195+ # Built from https://github.com/jupyterhub/jupyter-remote-desktop-proxy/pull/51
196+ image : " quay.io/jupyter-remote-desktop-proxy/qgis:2023-09-27"
197+ profile_options : *profile_options
198+ - display_name : " Bring your own image"
199+ description : Specify your own docker image (must have python and jupyterhub installed in it)
200+ slug : custom
85201 profile_options :
86- image : &image_options
202+ image :
87203 display_name : Image
88204 unlisted_choice :
89205 enabled : True
@@ -92,200 +208,9 @@ basehub:
92208 validation_message : " Must be a publicly available docker image, of form <image-name>:<tag>"
93209 kubespawner_override :
94210 image : " {value}"
95- choices :
96- pangeo :
97- display_name : Modified Pangeo Notebook
98- default : true
99- slug : pangeo
100- kubespawner_override :
101- image : public.ecr.aws/nasa-veda/nasa-veda-singleuser:5068290376e8c3151d97a36ae6485bb7ff79650b94aecc93ffb2ea1b42d76460
102- init_containers :
103- # Need to explicitly fix ownership here, as otherwise these directories will be owned
104- # by root on most NFS filesystems - neither EFS nor Google Filestore support anonuid
105- - name : volume-mount-ownership-fix
106- image : busybox:1.36.1
107- command :
108- - sh
109- - -c
110- - id && chown 1000:1000 /home/jovyan /home/jovyan/shared && ls -lhd /home/jovyan
111- securityContext :
112- runAsUser : 0
113- volumeMounts :
114- - name : home
115- mountPath : /home/jovyan
116- subPath : " {username}"
117- # mounted without readonly attribute here,
118- # so we can chown it appropriately
119- - name : home
120- mountPath : /home/jovyan/shared
121- subPath : _shared
122- # this container uses nbgitpuller to mount https://github.com/NASA-IMPACT/veda-docs/ for user pods
123- # image source: https://github.com/NASA-IMPACT/veda-jh-environments/tree/main/docker-images/base/nasa-veda-singleuser-init
124- - name : nasa-veda-singleuser-init
125- image : public.ecr.aws/nasa-veda/nasa-veda-singleuser-init:38e8998f9be64b0a59ac6c4d6d152d3403121dfc4be6d49bdf52ddc92827af8a
126- command :
127- - " python3"
128- - " /opt/k8s-init-container-nb-docs.py"
129- - " /home/jovyan"
130- volumeMounts :
131- - name : home
132- mountPath : /home/jovyan
133- subPath : " {username}"
134- securityContext :
135- runAsUser : 1000
136- runAsGroup : 1000
137- qgis :
138- display_name : QGIS on Linux Desktop
139- slug : qgis
140- kubespawner_override :
141- # Explicitly unset this - we set this to 'jupyterhub-singleuser'
142- # in basehub/values.yaml. We instead want to leave this unset,
143- # so the default command for the docker image is used instead.
144- # This is required for .desktop files to show up correctly.
145- cmd : null
146- # Launch people directly into the Linux desktop when they start
147- default_url : /desktop
148- # Built from https://github.com/jupyterhub/jupyter-remote-desktop-proxy/pull/51
149- image : " quay.io/jupyter-remote-desktop-proxy/qgis:2023-09-27"
150- rocker :
151- display_name : Rocker Geospatial with RStudio
152- slug : rocker
153- kubespawner_override :
154- image : rocker/binder:4.3
155- # Launch RStudio after the user logs in
156- default_url : /rstudio
157- # Ensures container working dir is homedir
158- # https://github.com/2i2c-org/infrastructure/issues/2559
159- working_dir : /home/rstudio
160- init_containers :
161- # Need to explicitly fix ownership here, as otherwise these directories will be owned
162- # by root on most NFS filesystems - neither EFS nor Google Filestore support anonuid
163- - name : volume-mount-ownership-fix
164- image : busybox:1.36.1
165- command :
166- [
167- " sh" ,
168- " -c" ,
169- " id && chown 1000:1000 /home/rstudio && ls -lhd /home/rstudio " ,
170- ]
171- securityContext :
172- runAsUser : 0
173- volumeMounts :
174- - name : home
175- mountPath : /home/rstudio
176- subPath : " {username}"
177- # this container uses nbgitpuller to mount https://github.com/NASA-IMPACT/veda-docs/ for user pods
178- # image source: https://github.com/NASA-IMPACT/veda-jh-environments/tree/main/docker-images/base/nasa-veda-singleuser-init
179- - name : nasa-veda-singleuser-init
180- image : public.ecr.aws/nasa-veda/nasa-veda-singleuser-init:38e8998f9be64b0a59ac6c4d6d152d3403121dfc4be6d49bdf52ddc92827af8a
181- command :
182- - " python3"
183- - " /opt/k8s-init-container-nb-docs.py"
184- - " /home/rstudio"
185- volumeMounts :
186- - name : home
187- mountPath : /home/rstudio
188- subPath : " {username}"
189- securityContext :
190- runAsUser : 1000
191- runAsGroup : 1000
192- requests :
193- # NOTE: Node share choices are in active development, see comment
194- # next to profileList: above.
195- display_name : Node share
196- choices :
197- mem_1 :
198- default : true
199- display_name : ~1 GB, ~0.125 CPU
200- kubespawner_override :
201- mem_guarantee : 0.904G
202- cpu_guarantee : 0.013
203- mem_2 :
204- display_name : ~2 GB, ~0.25 CPU
205- kubespawner_override :
206- mem_guarantee : 1.809G
207- cpu_guarantee : 0.025
208- mem_4 :
209- display_name : ~4 GB, ~0.5 CPU
210- kubespawner_override :
211- mem_guarantee : 3.617G
212- cpu_guarantee : 0.05
213- mem_8 :
214- display_name : ~8 GB, ~1.0 CPU
215- kubespawner_override :
216- mem_guarantee : 7.234G
217- cpu_guarantee : 0.1
218- mem_16 :
219- display_name : ~16 GB, ~2.0 CPU
220- kubespawner_override :
221- mem_guarantee : 14.469G
222- cpu_guarantee : 0.2
223- mem_32 :
224- display_name : ~32 GB, ~4.0 CPU
225- kubespawner_override :
226- mem_guarantee : 28.937G
227- cpu_guarantee : 0.4
228- kubespawner_override :
229- cpu_limit : null
230- mem_limit : null
231- node_selector :
232- node.kubernetes.io/instance-type : r5.xlarge
233- - display_name : " Medium: up to 16 CPU / 128 GB RAM"
234- description : *profile_list_description
235- slug : medium
236- profile_options :
237- image : *image_options
238- requests :
239- # NOTE: Node share choices are in active development, see comment
240- # next to profileList: above.
241- display_name : Node share
242- choices :
243- mem_1 :
244- display_name : ~1 GB, ~0.125 CPU
245- kubespawner_override :
246- mem_guarantee : 0.942G
247- cpu_guarantee : 0.013
248- mem_2 :
249- display_name : ~2 GB, ~0.25 CPU
250- kubespawner_override :
251- mem_guarantee : 1.883G
252- cpu_guarantee : 0.025
253- mem_4 :
254- default : true
255- display_name : ~4 GB, ~0.5 CPU
256- kubespawner_override :
257- mem_guarantee : 3.766G
258- cpu_guarantee : 0.05
259- mem_8 :
260- display_name : ~8 GB, ~1.0 CPU
261- kubespawner_override :
262- mem_guarantee : 7.532G
263- cpu_guarantee : 0.1
264- mem_16 :
265- display_name : ~16 GB, ~2.0 CPU
266- kubespawner_override :
267- mem_guarantee : 15.064G
268- cpu_guarantee : 0.2
269- mem_32 :
270- display_name : ~32 GB, ~4.0 CPU
271- kubespawner_override :
272- mem_guarantee : 30.128G
273- cpu_guarantee : 0.4
274- mem_64 :
275- display_name : ~64 GB, ~8.0 CPU
276- kubespawner_override :
277- mem_guarantee : 60.257G
278- cpu_guarantee : 0.8
279- mem_128 :
280- display_name : ~128 GB, ~16.0 CPU
281- kubespawner_override :
282- mem_guarantee : 120.513G
283- cpu_guarantee : 1.6
284- kubespawner_override :
285- cpu_limit : null
286- mem_limit : null
287- node_selector :
288- node.kubernetes.io/instance-type : r5.4xlarge
211+ choices : {}
212+ resource_allocation : *profile_options_resource_allocation
213+
289214 scheduling :
290215 userScheduler :
291216 enabled : true
0 commit comments