Skip to content

Commit fa4be2e

Browse files
authored
Migrate 2i2c/temple to temple/prod (#7156)
* feat: enable temple prod * feat: temporarily use next.temple * feat: grow prod disk * fix: add 2GB profile, add node selector * feat: revert hostname * fix: new CILogon clients We don't need a new one for the advanced hub, but creating a new one lets us ensure the name matches * feat!: remove 2i2c/temple * fix: remove profile selector from teaching hub * docs: initial pass * docs: fix formatting error * docs: improve flow * docs: fix missing reference target * docs: add missing label
1 parent a861ae6 commit fa4be2e

16 files changed

+449
-207
lines changed

config/clusters/2i2c/cluster.yaml

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,14 +34,6 @@ hubs:
3434
- daskhub-common.values.yaml
3535
- dask-staging.values.yaml
3636
- enc-dask-staging.secret.values.yaml
37-
- name: temple
38-
display_name: Temple University
39-
domain: temple.2i2c.cloud
40-
helm_chart: basehub
41-
helm_chart_values_files:
42-
- basehub-common.values.yaml
43-
- temple.values.yaml
44-
- enc-temple.secret.values.yaml
4537
# Temporary deploy a staging hub for UCMerced
4638
# to help them transition to new user images
4739
# ref: https://github.com/2i2c-org/infrastructure/issues/3188

config/clusters/2i2c/enc-temple.secret.values.yaml

Lines changed: 0 additions & 19 deletions
This file was deleted.

config/clusters/2i2c/temple.values.yaml

Lines changed: 0 additions & 81 deletions
This file was deleted.

config/clusters/temple/cluster.yaml

Lines changed: 14 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -20,16 +20,26 @@ hubs:
2020
helm_chart: basehub
2121
helm_chart_values_files:
2222
- common.values.yaml
23-
- enc-common.secret.values.yaml
23+
- common-teaching.values.yaml
2424
- staging.values.yaml
2525
- enc-staging.secret.values.yaml
26+
- name: prod
27+
display_name: Temple University
28+
domain: temple.2i2c.cloud
29+
helm_chart: basehub
30+
helm_chart_values_files:
31+
- common.values.yaml
32+
- common-teaching.values.yaml
33+
- prod.values.yaml
34+
- enc-prod.secret.values.yaml
2635
- name: advanced
2736
display_name: Temple University (Advanced)
2837
domain: advanced.temple.2i2c.cloud
2938
helm_chart: basehub
3039
helm_chart_values_files:
3140
- common.values.yaml
32-
- enc-common.secret.values.yaml
41+
- common-non-teaching.values.yaml
42+
- enc-common-non-teaching.secret.values.yaml
3343
- advanced.values.yaml
3444
- enc-advanced.secret.values.yaml
3545
- name: research
@@ -38,6 +48,7 @@ hubs:
3848
helm_chart: basehub
3949
helm_chart_values_files:
4050
- common.values.yaml
41-
- enc-common.secret.values.yaml
51+
- common-non-teaching.values.yaml
52+
- enc-common-non-teaching.secret.values.yaml
4253
- research.values.yaml
4354
- enc-research.secret.values.yaml
Lines changed: 85 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,85 @@
1+
jupyterhub:
2+
singleuser:
3+
profileList:
4+
- display_name: Default
5+
description: Choose image and resource allocation
6+
default: true
7+
profile_options:
8+
image:
9+
display_name: Image
10+
dynamic_image_building:
11+
enabled: true
12+
unlisted_choice:
13+
enabled: true
14+
display_name: Custom image
15+
validation_regex: ^.+:.+$
16+
validation_message: Must be a publicly available docker image, of form <image-name>:<tag>
17+
kubespawner_override:
18+
image: '{value}'
19+
choices:
20+
datascience:
21+
display_name: Data Science
22+
slug: regular-profile
23+
kubespawner_override:
24+
image: docker.io/laserchemist/datascience:v13
25+
requests:
26+
display_name: Resource Allocation
27+
choices:
28+
mem_4_gb:
29+
default: true
30+
display_name: ~4 GB RAM, ~0.5 CPUs
31+
description: Up to ~4 CPUs when available
32+
kubespawner_override:
33+
mem_guarantee: 3902839759
34+
mem_limit: 3902839759
35+
cpu_guarantee: 0.4563125
36+
cpu_limit: 3.6505
37+
node_selector:
38+
node.kubernetes.io/instance-type: r5.xlarge
39+
mem_7_gb:
40+
display_name: ~7 GB RAM, ~0.9 CPUs
41+
description: Up to ~4 CPUs when available
42+
kubespawner_override:
43+
mem_guarantee: 7805679519
44+
mem_limit: 7805679519
45+
cpu_guarantee: 0.912625
46+
cpu_limit: 3.6505
47+
node_selector:
48+
node.kubernetes.io/instance-type: r5.xlarge
49+
mem_15_gb:
50+
display_name: ~15 GB RAM, ~1.8 CPUs
51+
description: Up to ~4 CPUs when available
52+
kubespawner_override:
53+
mem_guarantee: 15611359038
54+
mem_limit: 15611359038
55+
cpu_guarantee: 1.82525
56+
cpu_limit: 3.6505
57+
node_selector:
58+
node.kubernetes.io/instance-type: r5.xlarge
59+
mem_29_gb:
60+
display_name: ~29 GB RAM, ~4 CPUs
61+
description: ~4 CPUs always available
62+
kubespawner_override:
63+
mem_guarantee: 31222718077
64+
mem_limit: 31222718077
65+
cpu_guarantee: 3.6505
66+
cpu_limit: 3.6505
67+
binderhub-service:
68+
enabled: true
69+
# Explicitly specify what nodes we want for our builds
70+
# Otherwise we may scale up a larger node than needed
71+
networkPolicy:
72+
enabled: true
73+
dockerApi:
74+
nodeSelector:
75+
node.kubernetes.io/instance-type: r5.xlarge
76+
config:
77+
KubernetesBuildExecutor:
78+
node_selector:
79+
node.kubernetes.io/instance-type: r5.xlarge
80+
DockerRegistry:
81+
url: &url https://quay.io
82+
username: &username imagebuilding-non-gcp-hubs+image_builder
83+
buildPodsRegistryCredentials:
84+
server: *url
85+
username: *username
Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
jupyterhub:
2+
singleuser:
3+
image:
4+
name: laserchemist/datascience
5+
tag: v13
6+
# Taken from `deployer generate resource-allocation choices r5.xlarge:5`
7+
memory:
8+
guarantee: 1951419879
9+
limit: 1951419879
10+
cpu:
11+
guarantee: 0.22815625
12+
limit: 3.6505
13+
nodeSelector:
14+
node.kubernetes.io/instance-type: r5.xlarge

config/clusters/temple/common.values.yaml

Lines changed: 0 additions & 84 deletions
Original file line numberDiff line numberDiff line change
@@ -58,90 +58,6 @@ jupyterhub:
5858
allow_existing_users: true
5959
singleuser:
6060
defaultUrl: /lab
61-
profileList:
62-
- display_name: Default
63-
description: Choose image and resource allocation
64-
default: true
65-
profile_options:
66-
image:
67-
display_name: Image
68-
dynamic_image_building:
69-
enabled: true
70-
unlisted_choice:
71-
enabled: true
72-
display_name: Custom image
73-
validation_regex: ^.+:.+$
74-
validation_message: Must be a publicly available docker image, of form <image-name>:<tag>
75-
kubespawner_override:
76-
image: '{value}'
77-
choices:
78-
datascience:
79-
display_name: Data Science
80-
slug: regular-profile
81-
kubespawner_override:
82-
image: docker.io/laserchemist/datascience:v13
83-
requests:
84-
display_name: Resource Allocation
85-
choices:
86-
mem_4_gb:
87-
display_name: ~4 GB RAM, ~0.5 CPUs
88-
description: Up to ~4 CPUs when available
89-
default: true
90-
kubespawner_override:
91-
mem_guarantee: 3902839759
92-
mem_limit: 3902839759
93-
cpu_guarantee: 0.4563125
94-
cpu_limit: 3.6505
95-
node_selector:
96-
node.kubernetes.io/instance-type: r5.xlarge
97-
mem_7_gb:
98-
display_name: ~7 GB RAM, ~0.9 CPUs
99-
description: Up to ~4 CPUs when available
100-
kubespawner_override:
101-
mem_guarantee: 7805679519
102-
mem_limit: 7805679519
103-
cpu_guarantee: 0.912625
104-
cpu_limit: 3.6505
105-
node_selector:
106-
node.kubernetes.io/instance-type: r5.xlarge
107-
mem_15_gb:
108-
display_name: ~15 GB RAM, ~1.8 CPUs
109-
description: Up to ~4 CPUs when available
110-
kubespawner_override:
111-
mem_guarantee: 15611359038
112-
mem_limit: 15611359038
113-
cpu_guarantee: 1.82525
114-
cpu_limit: 3.6505
115-
node_selector:
116-
node.kubernetes.io/instance-type: r5.xlarge
117-
mem_29_gb:
118-
display_name: ~29 GB RAM, ~4 CPUs
119-
description: ~4 CPUs always available
120-
kubespawner_override:
121-
mem_guarantee: 31222718077
122-
mem_limit: 31222718077
123-
cpu_guarantee: 3.6505
124-
cpu_limit: 3.6505
12561
scheduling:
12662
userScheduler:
12763
enabled: true
128-
129-
binderhub-service:
130-
enabled: true
131-
# Explicitly specify what nodes we want for our builds
132-
# Otherwise we may scale up a larger node than needed
133-
networkPolicy:
134-
enabled: true
135-
dockerApi:
136-
nodeSelector:
137-
node.kubernetes.io/instance-type: r5.xlarge
138-
config:
139-
KubernetesBuildExecutor:
140-
node_selector:
141-
node.kubernetes.io/instance-type: r5.xlarge
142-
DockerRegistry:
143-
url: &url https://quay.io
144-
username: &username imagebuilding-non-gcp-hubs+image_builder
145-
buildPodsRegistryCredentials:
146-
server: *url
147-
username: *username
Lines changed: 10 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
1-
jupyterhub-home-nfs:
2-
quotaEnforcer:
3-
extraConfig:
4-
secret-quota-overrides: ENC[AES256_GCM,data:QjlnlksOhgEfYQDZDvfJyJki6XhvIMIJ/0izVvuKFJft1IXhC+NtRbheBn2X9MF1YtZ+fMKKoQ==,iv:2Q/mNdrVI/cU4f5aoIU/T0hbjWrOCUYNnGp9Dz5NxTc=,tag:vmVVwcMP+hY3XMFZXaRPRw==,type:str]
51
jupyterhub:
62
hub:
73
config:
84
CILogonOAuthenticator:
9-
client_id: ENC[AES256_GCM,data:krzjCyDwZojV6A0jJtO9XnvjlytIkG0L60nRecSvlzTPnsFpuVvKhgdCGiSCaurjxb6u,iv:AlWllQU1vWjoZnBlfqrHXu9iVdLQok0Y2we+gUf7L4I=,tag:vhHvv9WLz9MJlzWylF4qxA==,type:str]
10-
client_secret: ENC[AES256_GCM,data:Tf7dJ5fhiB8H+wPbtYmJjQxRhtBUjo0TXlPRUTxuu4okKNWJuMH1Z33YOs6M28duN/kRwJ5g1unZKzRaADwrvjl7AhxXY82dPJjD6mfNIAyLtqo4S9w=,iv:28uevnHKfq8eqBMG8oM18yyawS+45YnVoSeJY5jTdAs=,tag:XiEZcENmvPXGiOoqW/Or0A==,type:str]
5+
client_id: ENC[AES256_GCM,data:QLHfGqsfiYXNYE1kN+M6BHWA56MtoYjfRFzSrCFCmnCXsEY5oylqGquBPwj1nEvgipC/,iv:eIcJkNjzUJhT84qYcO7u+/urhzcvIA7vzd1uBVVVsyA=,tag:vwvLNRzW3gEYo117AV7WiA==,type:str]
6+
client_secret: ENC[AES256_GCM,data:b0q+TIghWKDSVrctFpQuhRzPZfawfI/Q9KEeio4x6OqFH/iWvB9tmnaQc9aBFVovAJEuTNpji+1uoRFBwxLN0s/aKNEA6win/9M/FKUSDKFvfjZjbeY=,iv:6bGBvpQ/cffZSSP8Ay2ltmyG5tB6yI8Co3h4r7zo67I=,tag:J1kAMV4gu5TSowpZBYh5bA==,type:str]
7+
jupyterhub-home-nfs:
8+
quotaEnforcer:
9+
extraConfig:
10+
secret-quota-overrides: ENC[AES256_GCM,data:4oYpjDEFZ+XchWcwGMJNCHomSKIciTDlUCS7uoLPGTq2ZXmrSc0d75JIcLYkoJQldlTNK8Il+w==,iv:m/q8Vcotz7ik6oFkSkhoxkv6s0ca+dJAbLuXfiZ4V5M=,tag:grUz0GtzbTVDU+4o6rl50w==,type:str]
1111
sops:
1212
gcp_kms:
1313
- resource_id: projects/two-eye-two-see/locations/global/keyRings/sops-keys/cryptoKeys/similar-hubs
14-
created_at: '2025-08-21T12:41:58Z'
15-
enc: CiUA4OM7eLQmbuwHl3C1D1pnJNKW5QG0tlnQ4OXd/0zv9mJOsRqSEkkAXpa10JXyOgSU/pVlI7HwffT7L2cpHk35xZManciCWjkuK4YvIelcq2Um8FJcFMmDJ2zX1xJbvP0Zak4yaf1jrImv2oaQH5nH
16-
lastmodified: '2025-10-20T12:08:26Z'
17-
mac: ENC[AES256_GCM,data:GCSObYQavtgLPAn4p2NA71gdc/6pdMydJdkDxsRNzLTCdedlDL+C4+/HecCaW3BMiyoMCB7lAf+rzhrmb8YtrNKJdULDovdTLw1H94II/HPWAQshyys09OBzYxj67ejRq8kBVUckFwi8botx+sNBkQVt2cmgz6qD+Oyz7dKCoPE=,iv:cM+4g1Z+W+xWYIt/9s2Yn1pkaVSva6BAvR97Gi5k5hI=,tag:5fDlNjlix2f4j4dXFMBNsw==,type:str]
14+
created_at: '2025-11-24T12:58:01Z'
15+
enc: CiUA4OM7eBxqftkBWE/moPT8gQxgQLALCGKI2BHGvbtpp6kLIh7NEkkAZoeZpmSfVbNyrl/oRjb8DvhttZKZKltIixCIq+0q+4qZ/bkMJHOd1y3Ndmn4DQ7f4jlWtD9GnH8DhCI1K59NqUkZZ45MlEyT
16+
lastmodified: '2025-11-24T12:58:01Z'
17+
mac: ENC[AES256_GCM,data:KE+LURCZ7hfTGpZRpRYaqAB3JXcYwE6B24NTnDwiwAQGmJ5bgZAKAa6LoxYtMwjUEUYXQfdhaEajieLx4y2fFw+5g7ODJPMO+T25oZRfeb+0G02mGoO6fugoSzxdAG78WnPKJh1xtSlUpU3n5G5ReS8hviKS6xM3o+6naPZMd1E=,iv:iA5RPUA5asicNHoI/RsHZDFMEm5NIDgY8/l7b05Y0B4=,tag:hSsgulVV1K4hUnrVskq86g==,type:str]
1818
unencrypted_suffix: _unencrypted
1919
version: 3.10.2
Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
jupyterhub:
2+
hub:
3+
config:
4+
CILogonOAuthenticator:
5+
client_id: ENC[AES256_GCM,data:YG8dMcdhs0xGVpKQrOLGH+MYx4hpnoPT2to/U6kjuEEZI/MnPD+ewOlGQd3EOSU2J8gv,iv:AWi+oImq/dAKa0BAAXctuII2DZlluM437OCoGAdPZP8=,tag:j+v9sfc+jEosXCc1eMAMpw==,type:str]
6+
client_secret: ENC[AES256_GCM,data:wbotT8c7pyfc345s85idVGoupPiTECwT4lLf8IA40/KummzpIcawR82ZZuZmeCOsaYQ4InX95wi4WV11/VxHodWJqXrRO6gb29zazERP1J6dHr5SnG4=,iv:Y492YqhIihZF9Px0EZGfKm4uRcXOcL3PVzipJZ34yZI=,tag:eBev95btt2VLHC6j000RKg==,type:str]
7+
jupyterhub-home-nfs:
8+
quotaEnforcer:
9+
extraConfig:
10+
secret-quota-overrides: ENC[AES256_GCM,data:O6qT1VOCqWL/kJN6GWGzP1MADxN6jOTR7gA5WFg81KpTSGBAsgfGk5JpRVNz1I0yXftAhAAy,iv:IsNz7wXZq5UoJMnDlFDNyCNpU1wWJIQEvwXgI3eBgjY=,tag:Bhtq1toYAUY/Ej2lJuhOQg==,type:str]
11+
sops:
12+
gcp_kms:
13+
- resource_id: projects/two-eye-two-see/locations/global/keyRings/sops-keys/cryptoKeys/similar-hubs
14+
created_at: '2025-11-24T12:57:13Z'
15+
enc: CiUA4OM7eFwBAnVGsAP7LHN57SxQGCwug6LPuZwe0y2y78049NcLEkkAZoeZpmSEkuTMPiJ5TTVTZCdQdWcPB6hS5wxAmGuBWT0ZTmGqRnXXSQe2jdjv8gv3WdTGn1l1TFVDxrsyppZweWPjLTHzPVVH
16+
lastmodified: '2025-11-24T12:57:13Z'
17+
mac: ENC[AES256_GCM,data:gKPGJsu+OZndNwqjwa1YvcLtOiYY0IXD9VvFo9W8D61+bX5CweNQs01fbu3Yl7ITy+rSj/LKHE6mKBZ1Pm5JqCqrnjPOthWAMWG0+HgUC1NmaMWjKkL9w9S1ZsoJsUaDmVNmuIwEsgy5ZCThtcKsFy8A70eIf6+B/HiBucvKMSM=,iv:GSuCTYOYrDmnYN5UW+AvZyoCtgONZUiwZrY2EpGM/Ys=,tag:QRqEC//kdC47Gpw/u8CLGA==,type:str]
18+
unencrypted_suffix: _unencrypted
19+
version: 3.10.2

0 commit comments

Comments
 (0)