Skip to content

Commit

Permalink
Add carbonplan cluster + hubs
Browse files Browse the repository at this point in the history
- staging and prod clusters that are exactly the same,
  with just domain differences
- Uses traditional autohttps + LoadBalancer to get traffic
  into the cluster. Could be nginx-ingress later on if necessary.
- Manual DNS entries for staging.carbonplan.2i2c.cloud and
  carbonplan.2i2c.cloud. Initial manual deploy with
  `proxy.https.enabled` set to false to complete deployment,
  fetch externalIP of `proxy-public` service, setup DNS,
  then re-deploy with `proxy.https.enabled` set to true.

Ref 2i2c-org#291
  • Loading branch information
yuvipanda committed May 10, 2021
1 parent 12e5e63 commit b5535df
Show file tree
Hide file tree
Showing 2 changed files with 243 additions and 0 deletions.
210 changes: 210 additions & 0 deletions config/hubs/carbonplan.cluster.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,210 @@
name: carbonplan
provider: kubeconfig
kubeconfig:
file: secrets/carbonplan.yaml
hubs:
- name: staging
domain: staging.carbonplan.2i2c.cloud
template: daskhub
auth0:
connection: github
config: &carbonPlanHubConfig
scratchBucket:
enabled: false
basehub:
nfsPVC:
nfs:
# from https://docs.aws.amazon.com/efs/latest/ug/mounting-fs-nfs-mount-settings.html
mountOptions:
- rsize=1048576
- wsize=1048576
- timeo=600
- soft # We pick soft over hard, so NFS lockups don't lead to hung processes
- retrans=2
- noresvport
serverIP: fs-2897912f.efs.us-west-2.amazonaws.com
baseShareName: /
shareCreator:
tolerations:
- key: node-role.kubernetes.io/master
operator: "Exists"
effect: "NoSchedule"
jupyterhub:
homepage:
templateVars:
org:
name: Carbon Plan
logo_url: https://pbs.twimg.com/profile_images/1262387945971101697/5q_X3Ruk_400x400.jpg
url: https://carbonplan.org
designed_by:
name: 2i2c
url: https://2i2c.org
operated_by:
name: 2i2c
url: https://2i2c.org
funded_by:
name: Carbon Plan
url: https://carbonplan.org
singleuser:
initContainers:
# Need to explicitly fix ownership here, since EFS doesn't do anonuid
- name: volume-mount-ownership-fix
image: busybox
command: ["sh", "-c", "id && chown 1000:1000 /home/jovyan && ls -lhd /home/jovyan"]
securityContext:
runAsUser: 0
volumeMounts:
- name: home
mountPath: /home/jovyan
subPath: "{username}"
image:
name: carbonplan/r-retro-notebook
tag: latest
profileList:
# The mem-guarantees are here so k8s doesn't schedule other pods
# on these nodes.
- display_name: "Small: r5.large"
description: "~2 CPU, ~15G RAM"
kubespawner_override:
# Expllicitly unset mem_limit, so it overrides the default memory limit we set in
# basehub/values.yaml
mem_limit: null
mem_guarantee: 12G
node_selector:
hub.jupyter.org/pool-name: notebook-r5-large
- display_name: "Medium: r5.xlarge"
description: "~4 CPU, ~30G RAM"
kubespawner_override:
mem_limit: null
mem_guarantee: 29G
node_selector:
hub.jupyter.org/pool-name: notebook-r5-xlarge
- display_name: "Large: r5.2xlarge"
description: "~8 CPU, ~60G RAM"
kubespawner_override:
mem_limit: null
mem_guarantee: 60G
node_selector:
hub.jupyter.org/pool-name: notebook-r5-2xlarge
- display_name: "Huge: r5.8xlarge"
description: "~32 CPU, ~256G RAM"
kubespawner_override:
mem_limit: null
mem_guarantee: 250G
node_selector:
hub.jupyter.org/pool-name: notebook-r5-8xlarge
scheduling:
userPlaceholder:
enabled: false
replicas: 0
userScheduler:
enabled: false
proxy:
service:
type: LoadBalancer
https:
enabled: true
chp:
nodeSelector: {}
tolerations:
- key: "node-role.kubernetes.io/master"
effect: "NoSchedule"
traefik:
nodeSelector: {}
tolerations:
- key: "node-role.kubernetes.io/master"
effect: "NoSchedule"
hub:
allowNamedServers: true
networkPolicy:
# FIXME: For dask gateway
enabled: false
readinessProbe:
enabled: false
nodeSelector: {}
tolerations:
- key: "node-role.kubernetes.io/master"
effect: "NoSchedule"
dask-gateway:
traefik:
tolerations:
- key: "node-role.kubernetes.io/master"
effect: "NoSchedule"
controller:
tolerations:
- key: "node-role.kubernetes.io/master"
effect: "NoSchedule"
gateway:
tolerations:
- key: "node-role.kubernetes.io/master"
effect: "NoSchedule"
backend:
scheduler:
extraPodConfig:
nodeSelector:
hub.jupyter.org/pool-name: dask-worker
tolerations:
- key: "k8s.dask.org/dedicated"
operator: "Equal"
value: "worker"
effect: "NoSchedule"
- key: "k8s.dask.org_dedicated"
operator: "Equal"
value: "worker"
effect: "NoSchedule"
worker:
extraPodConfig:
nodeSelector:
hub.jupyter.org/pool-name: dask-worker
tolerations:
- key: "k8s.dask.org/dedicated"
operator: "Equal"
value: "worker"
effect: "NoSchedule"
- key: "k8s.dask.org_dedicated"
operator: "Equal"
value: "worker"
effect: "NoSchedule"

# TODO: figure out a replacement for userLimits.
extraConfig:
optionHandler: |
from dask_gateway_server.options import Options, Integer, Float, String
def cluster_options(user):
def option_handler(options):
if ":" not in options.image:
raise ValueError("When specifying an image you must also provide a tag")
extra_annotations = {
"hub.jupyter.org/username": user.name,
"prometheus.io/scrape": "true",
"prometheus.io/port": "8787",
}
extra_labels = {
"hub.jupyter.org/username": user.name,
}
return {
"worker_cores_limit": options.worker_cores,
"worker_cores": min(options.worker_cores / 2, 1),
"worker_memory": "%fG" % options.worker_memory,
"image": options.image,
"scheduler_extra_pod_annotations": extra_annotations,
"worker_extra_pod_annotations": extra_annotations,
"scheduler_extra_pod_labels": extra_labels,
"worker_extra_pod_labels": extra_labels,
}
return Options(
Integer("worker_cores", 2, min=1, max=16, label="Worker Cores"),
Float("worker_memory", 4, min=1, max=32, label="Worker Memory (GiB)"),
String("image", default="pangeo/pangeo-notebook:latest", label="Image"),
handler=option_handler,
)
c.Backend.cluster_options = cluster_options
idle: |
# timeout after 30 minutes of inactivity
c.KubeClusterConfig.idle_timeout = 1800
- name: prod
domain: carbonplan.2i2c.cloud
template: daskhub
auth0:
connection: github
config: *carbonPlanHubConfig
33 changes: 33 additions & 0 deletions secrets/carbonplan.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,33 @@
apiVersion: ENC[AES256_GCM,data:Jpo=,iv:lyP0+xfZQ++dLycJ8oU5iFLkpxQsXzvnLBUJKDU+u1c=,tag:KWxZ+98SrWvzNe0LmdKYkQ==,type:str]
clusters:
- cluster:
certificate-authority-data: ENC[AES256_GCM,data:3AwnbHYxXx+6R4j2KUSMGz/9yZ3Ls63yJE4rlXkJqmUFmXTMQyFXzCwoaMzynhqpp2T5IeodUFPSkbXNj7G12bO8o06Wk81M6Ad5mz0BUgBQCUkEMA6pgqVaWrkKa5swNh4YkBkNEG3Z9U0VDOlNi9pO+8T7OhEwtewRHu4WYPUzYfk2hwweHG0al7DsHANT83CQdxL0clX+1H5z2VcKu6OBucdmGOGe8S2z5VJ/4/vOk9NpWZmU1ieoi+wiwjsfSCchQX3MsdzgHWjwtLCyf3pFDgEkyNTKCIZ4JlIyrshKhepKRH33eNLbnFFrIFMIoxIWnfPSm1ek+xosCel507ZYx4d+85auVRXU4XBXsPphPCDbaf5AGdE6Mn6/IaByOt+z4wm+5fzVuSKqwLaITBe/RMiPScqUA4vfI8MfljlSEaphXU7OQMyftm/zs5boCliydBcKD/f4plCDKi9wZ2kgaZfWirEZ5s+BRD+m5lqyg2HqXAtXYnpf4f/njm2/vvNop8+l1zNm2rXspa3Wn6MpoTZ/8ZHBaTuVKl8Y0M807YOGQVHSDxzisNi9l+Ldj2o0vfv2T6do6JCQPXuUautoQSSubXTZa+q7f+deQ5l3t+0m44tF2mNwQ4lJKvSB6NeoEXo4dDQ9MDHRMQ5BMHAjsxBWnxLFCEMUDde2LdF4EYHZhoRAXT/IJyCsIRcL7ppNxO1Os3afDokFhNyQBtAfYHD0Lwel2xK0QyzNHravHbo8GLdHxDw0He/UCPWWhgygEu9btlJ7WRfINlmQvp7eG88AJFuKOPlzPAtgfOGQBxCoY/HG7hNcVcOF3DG42FAWLpqn3TY+QBJk/UjUrrpAgnWSQeWoqWzdOC+lsHwbTV/6AjYa1bncDQySKYQ0hr+gLDTaGqRizeSwElZq3X3tbolvKouKDbvNuX6Oe72OWJzHL+1n5EVM7AvdRrAlSjERiwBM9ensSbzV2jBnROabfrGLn8rppN6kObsxYsVhSDqTh+bmmUjfabgv2yEyiXdSRsMIbQw+T9r7ojW0JGQ1mqCT7V01c19R2uDlTZdZt4WUTZmSLS0GdnbNAY5TB6z0gkDyAujwEvdGtfsKCwm0gnXEuoF2/zOSTqRsCwkYE3RN7G93tK7ntf+sOolBb08u7uWTbta0zhKLKKI/J2Nv6AGolR4j2ohxIcg7BPJqgy+JxSEJhM8bsiSUMWhoErlMHkkZieUbZlcXr9aWOqWKRCcbM0UopkTLwSvly4i88qfMGqibDEBgGJX7TtTijwpPfRSYar+ShuXjoTYNcT6m1hZbQSfSgammWp3ORvX4Hwu6coImrd+N16Z3FH8LMPfhMcuWpiKgW1ORQTxG1e2MQUWaamtWHePel59yf+Zz1YZchEVjmc5F3P88fLea/CsrqpdI52e0B3q6RUs5exboQWCTVcSETrUjk1bZNkXP5eMwACQyfdm3Ryq6tFfN81D27dhpHNcDsiwQ6Gjau6vAsbW5rKOGXG3NFxK6+ASqUdre7m8YdplxdRuDjkK0VL6f3FzOFtwbM5ki90skVom8+EoXLEfySY0ayheuyH1QcJUKUr8LTf87ewEQ+c3qwnWlh20S1aGGzHSHFPhxqhZ5JFTiI5xgp9F3Qli2gpHzsLY84reqwlaR/CK/DKxTG95tWSzxWG1n9MnGgEMn4kaQKSrpnTm15k8CRPIpS1lsg4ZY/+pUJBC0XKLReQ6UXpOCryG9Hmuufg8r460gm6FiXmnUWpZCMIaU451k5/T41YJWvcHqLjvcSkBw+1V45x39swoROsouOhMm+DzQjVcd2Joq814cQZTg/3rL9pFKiMut71WinpTRogvNDgi+DPz2NREQKOUpeHe1u/MwcdQHHxn4DW2xp/x9pNQk53JDP4EhdcH6k9hT83DUcAq3o8ZFDw==,iv:w5OZN0GZZcfam1EZZFPmodhHLtuM7DJHBcYTbHL5YkA=,tag:SJMcHsd2gMWPgjIZLfhLmw==,type:str]
server: ENC[AES256_GCM,data:6syyGxOJVVKJuafONJLvDGcxjsNZamwpM3nlai/XzjwEVCcL2AU0aotTITq7dRxq3UzTFDFfHlIOoOttDCLM/2ML1hDksvKXv0XVDJW7TA==,iv:8JkMVUULGwPAr1ex0541ML7mtzsFWASskxCoG40d7B0=,tag:1TDOlMl1MOSuA2ixUCPvMg==,type:str]
name: ENC[AES256_GCM,data:Tn/6Zhy+CsRngO9/k0uLYKuldAHl8Bk=,iv:3wdHmttch2xna41q5U77rMURb6YVjcfpruoCJBJ0bck=,tag:DI09Rph0WUHzK/Ti4NWgqg==,type:str]
contexts:
- context:
cluster: ENC[AES256_GCM,data:wPo4tztl6bOkhVLd54hwn9WSj0vfBk8=,iv:paJp95y/YA8NgzsrPToNruQmGQOeeMOG38i1aj7OJfQ=,tag:HoeiurynOpqfljXY2opjLg==,type:str]
user: ENC[AES256_GCM,data:7iPDh5EKQ8LHaztvAIzGMfVy0wQF6yE=,iv:urVMXazL+ZYn1GKGEwTI/yhMPyEVa8VZOUkjFb+eojE=,tag:ov1rFT7/IHvAF5J5f11fng==,type:str]
name: ENC[AES256_GCM,data:MOCzSvUViwVZjFHAjMKtHPC0diuFxFw=,iv:CEIHGCt+/IWpXH+6eeHsckKne3c8cnpa6CQ31Es+OSM=,tag:MoREm99ZyOlrBpi7xI3AQg==,type:str]
current-context: ENC[AES256_GCM,data:+XE07HU+QDfHqJ0o2LbY+D3aN3o0XQU=,iv:mbraHPQfBopbpebbzmizIHNiJbPUPZyuQDVDyIYTxuY=,tag:4ab/QvwdZdbJVv9PErXZ3g==,type:str]
kind: ENC[AES256_GCM,data:r/FzqNYQ,iv:FOogwzFq4fZd/KRfM5z52cl5tW3BOodobU5rAbxH8Lw=,tag:OnKZJPEh9AShHjyvaD3NYA==,type:str]
preferences: {}
users:
- name: ENC[AES256_GCM,data:eR7e+4X2GrnyCLTPMaYesDyjHcPPAns=,iv:gYg8ETXenwsGSRjOGwsTTyw5QllkXQ2B8u6Vdgrfvog=,tag:DQMW/N7cAyeg8yzwSzajyw==,type:str]
user:
client-certificate-data: ENC[AES256_GCM,data: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,iv:efCIgmdnzcW/0vXjMirln8t+NFRmboaVaRxme6H2XaM=,tag:sxMpJUlNNGk1fK+W/KtEcA==,type:str]
client-key-data: ENC[AES256_GCM,data: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,iv:Yd0SBcdQbcA6AwEAr7rLYfX5XTPyITVVIJ/Lbexq6kc=,tag:XmTFiGg5tesV+jw5VTCLxg==,type:str]
sops:
kms: []
gcp_kms:
- resource_id: projects/two-eye-two-see/locations/global/keyRings/sops-keys/cryptoKeys/similar-hubs
created_at: "2021-05-10T17:35:08Z"
enc: CiQA4OM7eLM6u6MlzoUjfIYlN5H/wC7Dr3n4xmiRNdOO6TKOd+YSSQBy9hCYancmxxKoD4g2+zDN2GU4aKKSHq2BwUiYNCBwLs8U5BV2yhzKSnjY5cEbM+9YMV2holXPYrthBCtola5bR69V0nORC9g=
azure_kv: []
hc_vault: []
age: []
lastmodified: "2021-05-10T17:35:10Z"
mac: ENC[AES256_GCM,data:nIIqCgBY7lmTp0k5If5BXHFeeRUJ0OdkU66Z7/bZOc4EElu9JbXSrNPfjcllk6pzXB6XGOIU2RuIhDTcl/DZSvCAgYuFkorQLYZ2js/2yNxSZY2sYcRnQB+C/R7PgwpEyObpTQ2faRmcVEYPzGKTBml9GyZo1RfNllxOuUeykHM=,iv:oxKFojrFq7/AiX8ytiiwq/1lA3IuHg3aOh/EBfknsUo=,tag:KX7fhH78UOvzSPm/rjqXBQ==,type:str]
pgp: []
unencrypted_suffix: _unencrypted
version: 3.7.1

0 comments on commit b5535df

Please sign in to comment.