-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathopensciencelab.example.yaml
86 lines (79 loc) · 5.64 KB
/
opensciencelab.example.yaml
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
---
parameters:
lab_short_name: The url-friendly short name of the lab deployment.
cost_tag_key: Name of the cost allocation tag
cost_tag_value: Value of the cost allocation tag
admin_user_name: Username of initial JupyterHub admin
certificate_arn: AWS arn of the SSL certificate held in Certificate Manager
container_namespace: A namespaced path within AWS ECR containing custom images
lab_domain: Domain of JupyterHub deployment. Use `load balancer` if not known.
portal_domain: Domain of the OSL Portal. Used to communicate with email services, etc.
days_till_volume_deletion: The number of integer days after last server use when the user's volume is deleted. To never delete volume, use value 365000.
days_till_snapshot_deletion: The number of integer days after last server use when the user's snapshot is deleted. To never delete snapshot, use value 365000.
days_after_server_stop_till_warning_email: Comma seperated list of integer days after last server use when user gets warning email. Must have minimum one value. To never send emails, use value 365000
days_after_server_stop_till_deletion_email: Number of integer days after last server use when user gets email notifiying about permanent deletion of data. Must have minimum one value. To never send emails, use value 365000
utc_hour_of_day_snapshot_cron_runs : Integer hour (UTC) when the daily snapshot cron runs.
utc_hour_of_day_volume_cron_runs: Integer hour (UTC) when the daily snapshot cron runs.
eks_version: 1.29 # https://docs.aws.amazon.com/eks/latest/userguide/kubernetes-versions.html
kubectl_version: '1.29.3/2024-04-19' # https://docs.aws.amazon.com/eks/latest/userguide/install-kubectl.html
aws_ebs_csi_driver_version: '2.32.0' # https://github.com/kubernetes-sigs/aws-ebs-csi-driver/releases
jupyterhub_helm_version: '3.3.7' # https://jupyterhub.github.io/helm-chart/
jupyterhub_hub_image_version: '4.1.5' # Match App Version of JupyterHub Helm
aws_k8s_cni_version: 'v1.18.2' # https://docs.aws.amazon.com/eks/latest/userguide/managing-vpc-cni.html
cluster_autoscaler_helm_version: '9.37.0' # https://github.com/kubernetes/autoscaler/releases > cluster-autoscaler-chart
istio_version: '1.20.8' # https://github.com/istio/istio/releases; set to None if disabling Istio
dask_helm_version: '2024.1.0' # https://helm.dask.org/ > dask-gateway-{version}; Set to None if disabling Dask
nodes:
- name: hub # Required
instance: The EC2 instance for the hub node. Type t3a.xlarge is preferred to run all needed pods.
min_number: 1 # Required
max_number: 1 # Required
node_policy: hub # Required
is_hub: True # Required
- name: daskcontroller # Required
instance: The EC2 instance for the dask controller node. Type t3a.medium is preferred.
min_number: 1 # Required
max_number: 1 # Required
node_policy: dask_controller # Required
is_dask_controller: True # Required
- name: Name of node type. Must be alphanumeric (no special characters, whitespace, etc.)
instance: The EC2 instance for the hub node (m5a.2xlarge)
min_number: Minimum number of running node of this type in the cluster (0)
max_number: Maximum number of running node of this type in the cluster (25)
node_policy: Node permission policy (user)
root_volume_size: Size of the root volume of the EC2 (GiB) (Optional, range 1 - 16,384)
is_dask_worker: Is the node is a dask worker? (Boolean, Optional)
is_spot: Is the node is suppose to be a spot instance? (Boolean, Optional)
service_accounts:
- name: service_account_name
namespace: namespace of k8s resource (jupyter)
permissions:
- Effect: "Allow"
Action:
- "AWS Resource Action"
Resource: "AWS Resource ARN"
# Dask implementation is a work-in-progress. Necessary guardrails have not been fully implemented.
dask_profiles:
- name: Name of the dask profile that users can select.
short_name: Short name of the dask profile. To be used programtically.
description: "Basic description of what the dask profile will be used for"
image_url: Uri of the dask worker image of form "AWS_ACCOUNT_ID.dkr.ecr.us-west-2.amazonaws.com/CONTAINER_NAMESPACE/IMAGE_NAME:IMAGE_TAG"
node_name: Node name as given in above section (daskworker1)
egress_profile: Name of the egress config to use. Do not include `.conf` suffix (Optional)
lab_profiles:
- name: Name of profile that users can select (SAR 1)
description: Description of profile
image_name: Name of JupyterHub single user image found in ECR (sar1)
image_tag: Tag of JupyterHub single user image found in ECR (b1f4e84)
hook_script: Name of the script ran on user server startup (sar.sh) (optional)
memory_guarantee: RAM usage guaranteed per user (6G) (Optional. Defaults to 0% RAM.)
memory_limit: RAM usage guaranteed per user (16G) (Optional. Defaults to 100% RAM of server.)
cpu_guarantee: CPU usage guaranteed per user (15) (Optional. Defaults to 0% CPU.)
cpu_limit: CPU usage limit per user (30) (Optional. Defaults to 100% CPU of server.)
storage_capacity: Size of each user's home directory (500Gi). Cannot be reduced after allocation.
node_name: Node name as given in above section (sar1)
delete_user_volumes: If True, deletes user volumes upon server stopping (Optional. Defaults to False.)
classic: If True, use Classic Notebook interface (Optional. Defaults to False, i.e. JupyterLab.)
default: If True, the specific profile is selected by default (Optional. False if not explicity set.)
service_account: Name of previously defined service account to apply to profile (Optional)
egress_profile: Name of the egress config to use. Do not include `.conf` suffix (Optional)