Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Add documentation on preparing for exams #2449

Merged
merged 6 commits into from
Dec 13, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
73 changes: 73 additions & 0 deletions docs/howto/exam.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,73 @@
# Set up a hub for an exam

We provide support for using a JupyterHub in a *controlled* physical
space for exams. This is an extra paid feature where we charge hourly
for responsiveness.

This page documents what we do to prep, based on our prior experiences.

1. **Exact dates and times are known and at least two engineers available**

Make sure the exact dates and times of the exam are checked well in
advance, and we have at least two engineers available during this time period.

2. **Check engineer access**

Engineers should *test* their access to the infrastructure and the
hub beforehand, to make sure they can fix issues if needed.

Simple checklist:
- 🔲 Access and login to the hub admin page
- 🔲 Access and login to the cluster grafana
- 🔲 Access and login to the cloud console
- 🔲 Test access to Logs Explorer for container logs if on GCP
- 🔲 Test that running `deployer use-cluster-credentials $CLUSTER` and then `kubectl get pods -A` work

3. **Ensure user pods have a guaranteed quality of service class**

For the duration of the exam, all user pods must have a
[guaranteed quality of service class](https://kubernetes.io/docs/tasks/configure-pod-container/quality-service-pod/).

In practice, this means we have memory & cpu requests set to be the same
as guarantees. This is to ensure equity - no user should get more or less
resources than any other. It also improves reliability.

This usually increases cost too, so should be done **no more than 12h before**
the start of the exam. It should be reverted back soon after the exam
is done.

If the hub has a profile list enabled, based on the instance types setup for
the hub, you can find the new allocation options by running:

```{bash}
deployer generate resource-allocation choices <instance-type>
```

Running this command will output options where memory requests equal limits.

4. **Ensure instructor tests the hub before the exam**

The instructor running the exam should test out their exam on the hub,
and make sure that it will complete within the amount of resources assigned
to it. They should also make sure that the environment (packages, python
versions, etc) are set up appropriately. From the time they test this until
the exam is over, new environment changes are put on hold.

Responsibilities:
- the **community and partnerships** team makes sure that the community's
**expectations** around exams are correctly set
- the **engineer(s)** leading the exam, should make sure **they are respected**

5. **Pre-warm the cluster**

We should pre-warm the cluster the hub is on before the start of the exam,
to make sure that all users can start a notebook without having to wait. This
is also for equity reasons, to make sure we don't disadvantage one user from
another.

6. **Follow freshdesk for any questions/issues**

Issues during the exam are communicated via freshdesk, and what we are paid
for is to make sure we respond immediately - there is no guarantee of fixes,
although we try very hard to make sure the infrastructure is stable during this
period.
1 change: 1 addition & 0 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -70,6 +70,7 @@ deployed occasionally as a specific addition.
howto/features/index.md
howto/bill.md
howto/custom-jupyterhub-image.md
howto/exam.md
howto/manage-domains/index.md
howto/grafana-github-auth.md
howto/update-env.md
Expand Down