diff --git a/.github/workflows/deploy-grafana-dashboards.yaml b/.github/workflows/deploy-grafana-dashboards.yaml index 8aa99d2d4e..a64a38e63f 100644 --- a/.github/workflows/deploy-grafana-dashboards.yaml +++ b/.github/workflows/deploy-grafana-dashboards.yaml @@ -25,7 +25,6 @@ jobs: - cluster_name: jupyter-meets-the-earth - cluster_name: leap - cluster_name: linked-earth - - cluster_name: m2lines - cluster_name: meom-ige - cluster_name: nasa-cryo - cluster_name: nasa-esdis diff --git a/.github/workflows/deploy-hubs.yaml b/.github/workflows/deploy-hubs.yaml index 10b9356a51..f91acf5e3e 100644 --- a/.github/workflows/deploy-hubs.yaml +++ b/.github/workflows/deploy-hubs.yaml @@ -189,7 +189,6 @@ jobs: failure_openscapes: "${{ env.failure_openscapes }}" failure_pangeo-hubs: "${{ env.failure_pangeo-hubs }}" failure_utoronto: "${{ env.failure_utoronto }}" - failure_m2lines: "${{ env.failure_m2lines }}" failure_linked-earth: "${{ env.failure_linked-earth }}" failure_awi-ciroh: "${{ env.failure_awi-ciroh }}" failure_callysto: "${{ env.failure_callysto }}" diff --git a/config/clusters/2i2c/cluster.yaml b/config/clusters/2i2c/cluster.yaml index c450f972dc..4151b30592 100644 --- a/config/clusters/2i2c/cluster.yaml +++ b/config/clusters/2i2c/cluster.yaml @@ -128,11 +128,3 @@ hubs: - basehub-common.values.yaml - mtu.values.yaml - enc-mtu.secret.values.yaml - - name: jackeddy - display_name: "Jack Eddy Symposium" - domain: jackeddy.2i2c.cloud - helm_chart: daskhub - helm_chart_values_files: - - daskhub-common.values.yaml - - jackeddy.values.yaml - - enc-jackeddy.secret.values.yaml diff --git a/config/clusters/2i2c/jackeddy.values.yaml b/config/clusters/2i2c/jackeddy.values.yaml deleted file mode 100644 index a222dd89f6..0000000000 --- a/config/clusters/2i2c/jackeddy.values.yaml +++ /dev/null @@ -1,164 +0,0 @@ -basehub: - userServiceAccount: - annotations: - iam.gke.io/gcp-service-account: pilot-hubs-jackeddy@two-eye-two-see.iam.gserviceaccount.com - jupyterhub: - ingress: - hosts: - - jackeddy.2i2c.cloud - tls: - - secretName: https-auto-tls - hosts: - - jackeddy.2i2c.cloud - custom: - 2i2c: - add_staff_user_ids_to_admin_users: true - add_staff_user_ids_of_type: "github" - homepage: - templateVars: - org: - name: Jack Eddy Symposium - url: https://cpaess.ucar.edu/meetings/4th-eddy-cross-disciplinary-symposium - logo_url: https://cpaess.ucar.edu/sites/default/files/styles/extra_large/public/2023-08/EddySymposium-900x400.jpg?itok=8qG7Dqi3 - designed_by: - name: 2i2c - url: https://2i2c.org - operated_by: - name: 2i2c - url: https://2i2c.org - funded_by: - name: "" - url: "" - custom_html: NASA's Living with a Star program and UCAR/CPAESS - singleuser: - # https://infrastructure.2i2c.org/howto/features/dedicated-nodepool/ - nodeSelector: - # Applied to all profile options - 2i2c.org/community: jackeddy - extraTolerations: - - key: "2i2c.org/community" - operator: "Equal" - value: "jackeddy" - effect: "NoSchedule" - defaultUrl: /lab - extraEnv: - # https://infrastructure.2i2c.org/howto/features/buckets/ - SCRATCH_BUCKET: gcs://pilot-hubs-jackeddy-scratch/$(JUPYTERHUB_USER) - PANGEO_SCRATCH: gcs://pilot-hubs-jackeddy-scratch/$(JUPYTERHUB_USER) - # https://infrastructure.2i2c.org/howto/features/github - GH_SCOPED_CREDS_CLIENT_ID: "Iv1.37646d01f3f58a80" - GH_SCOPED_CREDS_APP_URL: https://github.com/apps/jack-eddy-jupyterhub-push-access - profileList: - - display_name: "Image and resource allocation" - description: "Choose the user image and what resources to be allocated for the server" - slug: only-choice - profile_options: - requests: - # Configuration setup based on https://github.com/2i2c-org/infrastructure/issues/2121. - # Allocate resources from a n2-highmem-16 node, instead of a - # n2-highmem-4 node to help reduce startup times. - # Based on past usages of this hub, it is highly possible it will use notable - # amounts of RAM. - # The choice of this node, will avoid putting only two users requesting ~16 GB on - # a ~32 GB node (if we went with a n2-highmem-4) and will instead allow for - # at least eight users to fit per node on a n2-highmem-16 machine. - # ref: https://github.com/2i2c-org/infrastructure/issues/3166#issuecomment-1755630637 - display_name: Resource Allocation - choices: - mem_1_9: - display_name: 1.9 GB RAM, upto 3.75 CPUs - description: Fastest spinup time - kubespawner_override: - mem_guarantee: 1992701952 - mem_limit: 1992701952 - cpu_guarantee: 0.234375 - cpu_limit: 3.75 - node_selector: - node.kubernetes.io/instance-type: n2-highmem-16 - default: true - mem_3_7: - display_name: 3.7 GB RAM, upto 3.75 CPUs - kubespawner_override: - mem_guarantee: 3985403904 - mem_limit: 3985403904 - cpu_guarantee: 0.46875 - cpu_limit: 3.75 - node_selector: - node.kubernetes.io/instance-type: n2-highmem-16 - mem_7_4: - display_name: 7.4 GB RAM, upto 3.75 CPUs - kubespawner_override: - mem_guarantee: 7970807808 - mem_limit: 7970807808 - cpu_guarantee: 0.9375 - cpu_limit: 3.75 - node_selector: - node.kubernetes.io/instance-type: n2-highmem-16 - mem_14_8: - display_name: 14.8 GB RAM, upto 3.75 CPUs - kubespawner_override: - mem_guarantee: 15941615616 - mem_limit: 15941615616 - cpu_guarantee: 1.875 - cpu_limit: 3.75 - node_selector: - node.kubernetes.io/instance-type: n2-highmem-16 - mem_29_7: - display_name: 29.7 GB RAM, upto 3.75 CPUs - kubespawner_override: - mem_guarantee: 31883231232 - mem_limit: 31883231232 - cpu_guarantee: 3.75 - cpu_limit: 3.75 - node_selector: - node.kubernetes.io/instance-type: n2-highmem-16 - mem_60_6: - display_name: 60.6 GB RAM, upto 15.72 CPUs - kubespawner_override: - mem_guarantee: 65105797120 - mem_limit: 65105797120 - cpu_guarantee: 7.86 - cpu_limit: 15.72 - node_selector: - node.kubernetes.io/instance-type: n2-highmem-16 - mem_121_3: - display_name: 121.3 GB RAM, upto 15.72 CPUs - kubespawner_override: - mem_guarantee: 130211594240 - mem_limit: 130211594240 - cpu_guarantee: 15.72 - cpu_limit: 15.72 - node_selector: - node.kubernetes.io/instance-type: n2-highmem-16 - image: - display_name: Image - # https://infrastructure.2i2c.org/howto/features/allow-unlisted-profile-choice/ - unlisted_choice: - enabled: True - display_name: "Custom image" - validation_regex: "^.+:.+$" - validation_message: "Must be a publicly available docker image, of form :" - kubespawner_override: - image: "{value}" - choices: - pangeo: - display_name: Base Pangeo Notebook - default: true - slug: "pangeo" - kubespawner_override: - image: "pangeo/pangeo-notebook:2023.10.03" - hub: - allowNamedServers: true - config: - JupyterHub: - authenticator_class: github - GitHubOAuthenticator: - oauth_callback_url: https://jackeddy.2i2c.cloud/hub/oauth_callback - allowed_organizations: - - jack-eddy-symposium - scope: - - read:org - Authenticator: - admin_users: - - dan800 # Dan Marsh - - rmcgranaghan # Ryan McGranaghan diff --git a/config/clusters/hhmi/common.values.yaml b/config/clusters/hhmi/common.values.yaml index c6796075c0..9010da5f21 100644 --- a/config/clusters/hhmi/common.values.yaml +++ b/config/clusters/hhmi/common.values.yaml @@ -51,6 +51,37 @@ basehub: - name: MYSQL_ROOT_PASSWORD value: "tutorial" defaultUrl: /lab + storage: + extraVolumeMounts: + - name: home + mountPath: /home/jovyan/shared-public + subPath: _shared-public + readOnly: false + - name: home + mountPath: /home/jovyan/shared-readonly + subPath: _shared + readOnly: true + initContainers: + - name: volume-mount-ownership-fix + image: busybox:1.36.1 + command: + - sh + - -c + - id && chown 1000:1000 /home/jovyan /home/jovyan/shared-readonly /home/jovyan/shared-public && ls -lhd /home/jovyan + securityContext: + runAsUser: 0 + volumeMounts: + - name: home + mountPath: /home/jovyan + subPath: "{username}" + # Mounted without readonly attribute here, + # so we can chown it appropriately + - name: home + mountPath: /home/jovyan/shared-readonly + subPath: _shared + - name: home + mountPath: /home/jovyan/shared-public + subPath: _shared-public profileList: - display_name: "Loren Frank Lab" default: true diff --git a/config/clusters/m2lines/cluster.yaml b/config/clusters/m2lines/cluster.yaml deleted file mode 100644 index 16d0adfb94..0000000000 --- a/config/clusters/m2lines/cluster.yaml +++ /dev/null @@ -1,34 +0,0 @@ -name: m2lines -provider: gcp # https://console.cloud.google.com/kubernetes/clusters/details/us-central1/m2lines-cluster/details?project=m2lines-hub -gcp: - key: enc-deployer-credentials.secret.json - project: m2lines-hub - cluster: m2lines-cluster - zone: us-central1 - billing: - paid_by_us: true - bigquery: - project: two-eye-two-see - dataset: cloud_costs - billing_id: 0157F7-E3EA8C-25AC3C -support: - helm_chart_values_files: - - support.values.yaml - - enc-support.secret.values.yaml -hubs: - - name: staging - display_name: "M2LInES (staging)" - domain: staging.m2lines.2i2c.cloud - helm_chart: daskhub - helm_chart_values_files: - - common.values.yaml - - staging.values.yaml - - enc-staging.secret.values.yaml - - name: prod - display_name: "M2LInES (prod)" - domain: m2lines.2i2c.cloud - helm_chart: daskhub - helm_chart_values_files: - - common.values.yaml - - prod.values.yaml - - enc-prod.secret.values.yaml diff --git a/config/clusters/m2lines/common.values.yaml b/config/clusters/m2lines/common.values.yaml deleted file mode 100644 index 5aeac97390..0000000000 --- a/config/clusters/m2lines/common.values.yaml +++ /dev/null @@ -1,163 +0,0 @@ -basehub: - nfs: - enabled: true - pv: - mountOptions: - - soft - - noatime - # Google FileStore IP - serverIP: 10.98.223.138 - # Name of Google Filestore share - baseShareName: /homes/ - jupyterhub: - custom: - # Extra mount point for admins to access to all users' home dirs - # Ref https://2i2c.freshdesk.com/a/tickets/767 - singleuserAdmin: - extraVolumeMounts: - - name: home - mountPath: /home/jovyan/allusers - readOnly: true - 2i2c: - add_staff_user_ids_to_admin_users: true - add_staff_user_ids_of_type: "github" - homepage: - templateVars: - org: - name: M²LInES - url: https://m2lines.github.io/ - logo_url: https://m2lines.github.io/images/newlogo.png - designed_by: - name: 2i2c - url: https://2i2c.org - operated_by: - name: 2i2c - url: https://2i2c.org - funded_by: - name: M²LInES - url: https://m2lines.github.io/ - hub: - allowNamedServers: true - config: - JupyterHub: - authenticator_class: github - GitHubOAuthenticator: - allowed_organizations: - - m2lines - scope: - - read:org - Authenticator: - admin_users: - - rabernat - - johannag126 - - jbusecke - singleuser: - extraFiles: - jupyter_server_config.json: - data: - MappingKernelManager: - # Cull idle kernels after 24h (24 * 60 * 60), to see if that - # makes the experience better for research hubs. - # Ref https://2i2c.freshdesk.com/a/tickets/243 - cull_idle_timeout: 86400 - extraEnv: - GH_SCOPED_CREDS_CLIENT_ID: "Iv1.1c4d967ffc205f98" - GH_SCOPED_CREDS_APP_URL: https://github.com/apps/m2lines-pangeo-hub-push-access - # User image repo: https://github.com/pangeo-data/pangeo-docker-images - image: - name: pangeo/pangeo-notebook - tag: "ebeb9dd" - profileList: - # The mem-guarantees are here so k8s doesn't schedule other pods - # on these nodes. They need to be just under total allocatable - # RAM on a node, not total node capacity. Values calculated using - # https://learnk8s.io/kubernetes-instance-calculator - - display_name: "Small" - description: 5GB RAM, 2 CPUs - default: true - kubespawner_override: - mem_limit: 7G - mem_guarantee: 4.5G - node_selector: - node.kubernetes.io/instance-type: n1-standard-2 - profile_options: &profile_options - image: - display_name: Image - choices: - pangeo: - display_name: Base Pangeo Notebook - default: true - slug: "pangeo" - kubespawner_override: - image: "pangeo/pangeo-notebook:ebeb9dd" - tensorflow: - display_name: Pangeo Tensorflow ML Notebook - slug: "tensorflow" - kubespawner_override: - image: "pangeo/ml-notebook:ebeb9dd" - pytorch: - display_name: Pangeo PyTorch ML Notebook - slug: "pytorch" - kubespawner_override: - image: "pangeo/pytorch-notebook:ebeb9dd" - - display_name: Medium - description: 11GB RAM, 4 CPUs - kubespawner_override: - mem_limit: 15G - mem_guarantee: 11G - node_selector: - node.kubernetes.io/instance-type: n1-standard-4 - profile_options: *profile_options - - display_name: Large - description: 24GB RAM, 8 CPUs - kubespawner_override: - mem_limit: 30G - mem_guarantee: 24G - node_selector: - node.kubernetes.io/instance-type: n1-standard-8 - profile_options: *profile_options - - display_name: Huge - description: 52GB RAM, 16 CPUs - kubespawner_override: - mem_limit: 60G - mem_guarantee: 52G - node_selector: - node.kubernetes.io/instance-type: n1-standard-16 - profile_options: *profile_options - - display_name: Large + GPU - slug: gpu - description: 24GB RAM, 8 CPUs - profile_options: - image: - display_name: Image - choices: - tensorflow: - display_name: Pangeo Tensorflow ML Notebook - slug: "tensorflow" - kubespawner_override: - image: "pangeo/ml-notebook:ebeb9dd" - pytorch: - display_name: Pangeo PyTorch ML Notebook - default: true - slug: "pytorch" - kubespawner_override: - image: "pangeo/pytorch-notebook:ebeb9dd" - kubespawner_override: - environment: - NVIDIA_DRIVER_CAPABILITIES: compute,utility - node_selector: - cloud.google.com/gke-nodepool: nb-gpu-t4 - mem_limit: 30G - mem_guarantee: 24G - extra_resource_limits: - nvidia.com/gpu: "1" -dask-gateway: - gateway: - backend: - scheduler: - cores: - request: 0.8 - limit: 1 - memory: - request: 1G - limit: 2G diff --git a/config/clusters/m2lines/enc-deployer-credentials.secret.json b/config/clusters/m2lines/enc-deployer-credentials.secret.json deleted file mode 100644 index f2f84811c7..0000000000 --- a/config/clusters/m2lines/enc-deployer-credentials.secret.json +++ /dev/null @@ -1,30 +0,0 @@ -{ - "type": "ENC[AES256_GCM,data:5We+inw6EiSByF0rZe2l,iv:OOP9z15AmOGRxypf8vg09Ex2zQE0Ju/mDmEM3xon8oc=,tag:3OKlhUIGy4/xRdHOuLxudg==,type:str]", - "project_id": "ENC[AES256_GCM,data:yy0nPiEQe0luocs=,iv:oz0Dvsym1XkHEuv2sU9EeJrhHrFw0gOCH4jhWU70GwY=,tag:zbAlTX9ct8c4AQUFwqmp2Q==,type:str]", - "private_key_id": "ENC[AES256_GCM,data:a53wwwi8HV2xkjqsVoTirWD4tz01q+ImkvVD3wnJkpPSs0xyi4qxfw==,iv:NR14HhJEYHytORvuhvl/UrWilDuPZ4cjLIxg9urQBQg=,tag:0SaBqCSlJgw2vy71oYKyTg==,type:str]", - "private_key": "ENC[AES256_GCM,data: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,iv:2QVpE7Co5ArKEG+678NYeL7FRlcyTEiGam/b8vjbUDk=,tag:jncRJtDXlaLWLUFNETGttg==,type:str]", - "client_email": "ENC[AES256_GCM,data:IUcDKZXYMGRowYvtSoFl9wdGX24CqW/jM/oVrq1sBG/6leKcnt9BKyRzjIb+NtkxNQ==,iv:N6Dl4KNhq9X5pw73qC3UW1apuVxdtaOY2fMLsXRzB/Q=,tag:tb0aSFBz8xxKPSjbZJA3oA==,type:str]", - "client_id": "ENC[AES256_GCM,data:JEZGqog07AH7//T5W7CkhW+mrMY5,iv:OHCNl5yukVlSSFaUo70+V7oxkQSuQ3kubVPrQIQFwDQ=,tag:NY+sKw1Q0S49OdMGZB1bow==,type:str]", - "auth_uri": "ENC[AES256_GCM,data:5uT/STJb+lxYaprXetT0jWvl8rWX2sLugVHnwFbRXRk29i9fy2EpUXs=,iv:NSd8Qh2p5ktpynidvA7ojMJyeA982aTeIWTECLmDsRg=,tag:dMFgkU9R6mwrjLIJCqPCxQ==,type:str]", - "token_uri": "ENC[AES256_GCM,data:iUj/7nsFLBi78w+57Xa1covWhjETJRK2TfnftCzsXjX7Us4=,iv:kErikER0soZAa34c+CUwxtHmid961Xfm84fSMMOQht4=,tag:Y2H0EQ2Y0JPGk4cHz8JBQg==,type:str]", - "auth_provider_x509_cert_url": "ENC[AES256_GCM,data:wMzuVnh0xL/ntPwRZitpoR1QfgkO+veh0LtF8DRLLYA5ZG60ITvJjoFh,iv:FQrw7+3yNAk7aDPgWvh0UN/zML6JM0q8TP1P/HNlRms=,tag:m0WeLS9bCF+fXEWUWLQlLw==,type:str]", - "client_x509_cert_url": "ENC[AES256_GCM,data:JC26Ow+nS/RISj645ZPZoW/ngKAeEOtkfuNYSi8VH8QKy6OztJlxsn3/zvZLHKrhl+550oEMhCG6puoI3xiz4SZKT3yjmJhYQEh1+ugq5b4kwA2A1SV9rYuN2KDHeA4gZJUqqjE=,iv:WPwJQKzFGOhydvaSHm9XPhC8m3irk1F0zL0tojmgv88=,tag:bh9ZH/d3otNG7/2TX+Y1oQ==,type:str]", - "sops": { - "kms": null, - "gcp_kms": [ - { - "resource_id": "projects/two-eye-two-see/locations/global/keyRings/sops-keys/cryptoKeys/similar-hubs", - "created_at": "2022-04-26T07:06:02Z", - "enc": "CiQA4OM7eJ7ZQZC6sPtBHtOgNOUidBq8ISVfdMvnCpMVnTftYYcSSQDm5XgWLIx7gMAvpZEYkU+gby54W2ZEl8k9ZFQFxK9u3yvjZZQ/9CUttSRM+ZwP2eNzK0Z9xmcORh3RwrasBnhH9Gx2uyuB5ww=" - } - ], - "azure_kv": null, - "hc_vault": null, - "age": null, - "lastmodified": "2022-04-26T07:06:02Z", - "mac": "ENC[AES256_GCM,data:5Af0EoLt1W6Hs0UFwGzvv6cUSVxzYWdHwI33oI1WIdN1T8L/aiwIg18p6INPh5AzGj4BKqwDlP4gSaaAbwFaIAqzjyOfpi46ysBlU4NtiD1wdUZqGNIXmKV04gRk89Kfc01U372PoMylwWJsdjnAJhD2cbe+H2kqScReHJMa9B8=,iv:xXKrORbhxnvaKGNIiBOFgp0YquC4YficAu8OOyCg1FA=,tag:RS3cp5fDwye8eF/cbXDVhQ==,type:str]", - "pgp": null, - "unencrypted_suffix": "_unencrypted", - "version": "3.7.1" - } -} \ No newline at end of file diff --git a/config/clusters/m2lines/enc-grafana-token.secret.yaml b/config/clusters/m2lines/enc-grafana-token.secret.yaml deleted file mode 100644 index 87da8d8d3d..0000000000 --- a/config/clusters/m2lines/enc-grafana-token.secret.yaml +++ /dev/null @@ -1,15 +0,0 @@ -grafana_token: ENC[AES256_GCM,data:B+I4E9LVyDCl/zBARp0/Vqo5XjyOyAUGXNvi30BBukzVYMzIjE1+6zn4o9hKF/9caqzlLZkQDqmEGNI/hnYp/IGIichcc9OjD+ucmOXz3a2QJ9GnNAjFD6hcQzU=,iv:NpkxkeYdJuX4jsSRHb8X15iE76YGGMq3cDSLRbSyZFg=,tag:XnQSeCvOb1riP1LsQ6qzGA==,type:str] -sops: - kms: [] - gcp_kms: - - resource_id: projects/two-eye-two-see/locations/global/keyRings/sops-keys/cryptoKeys/similar-hubs - created_at: "2022-02-24T17:56:52Z" - enc: CiQA4OM7eA1jS3a2zwDnUXuczQfvJW5u9Zp3QHRgCZjXk1ha/P4SSQDm5XgWif8sOYLkjo9k+hTKISv4PddEGATlvRChHeNZREfg2nreeDYujK6tOdiXplp8Yzv+uWxnxxUvlYPbhvReCDgmuEKLGI0= - azure_kv: [] - hc_vault: [] - age: [] - lastmodified: "2022-04-27T03:43:54Z" - mac: ENC[AES256_GCM,data:/WJ6emgXCBFjqJadi7sXgXJGCUgWv3eBEbnzYss9AM3Aws4gnUJ5Se6XobB8ep+Nt6/KCTYnUaSHFX0HGi1J8lyl1WCYsN0OKBQfSPt5ABJ4qI3A6JifOnlf/7EB3Z6TSGCnJ+4s6bupSejRRi54rsOiDnmD8wt99WFMv/IMnYs=,iv:QedXp+0WKPYfSX0MpHL1QLAF5LTtBEorD9efZlcjheY=,tag:8f3iJm6wH/M+pjlTSc5rGQ==,type:str] - pgp: [] - unencrypted_suffix: _unencrypted - version: 3.7.1 diff --git a/config/clusters/m2lines/enc-prod.secret.values.yaml b/config/clusters/m2lines/enc-prod.secret.values.yaml deleted file mode 100644 index 0b7b866fbc..0000000000 --- a/config/clusters/m2lines/enc-prod.secret.values.yaml +++ /dev/null @@ -1,21 +0,0 @@ -basehub: - jupyterhub: - hub: - config: - GitHubOAuthenticator: - client_id: ENC[AES256_GCM,data:9Ck6xNrjH6YXQibljjwV+Pl90QA=,iv:mqf/qY0uOJ1A640AIhetv8ztEQLMboD4nUz2ta7xia4=,tag:JgSJwIzbNIPoA93/mCwxdw==,type:str] - client_secret: ENC[AES256_GCM,data:kjzpWRgVsXdt/KemCh4ZCnuo/4k342URs4T6CPoCVNh1pD3siiG69A==,iv:vjq3j9kXKY8WkdQ8flmcM687Qdwln3VioKMphwDAMHw=,tag:PMNXUkgjjBtbroketamPiQ==,type:str] -sops: - kms: [] - gcp_kms: - - resource_id: projects/two-eye-two-see/locations/global/keyRings/sops-keys/cryptoKeys/similar-hubs - created_at: "2022-02-24T18:31:21Z" - enc: CiQA4OM7eNU4/NC1GSyOypie5mku2r/szfsjQHdxf5CkEib8PWISSQDm5XgWPd3+MJEgP6vyMdkr+5xZCc0MbF1aoNtwLVU/Z9PKOZsw2UgcoYIAHxpoMCm9aC2mS+qZJyq7N5GnR0xxIc3cGMNybVo= - azure_kv: [] - hc_vault: [] - age: [] - lastmodified: "2022-04-21T23:43:03Z" - mac: ENC[AES256_GCM,data:o5+2PJDg7QXH0BkoTfA5Wp/DSp9eEqL1od922Eo0zlzU0CEJiixC8Zk7UJa4U3crrJh8PgsuMFcitSgKrLk2neNz0TzT0R5e4Xnh+/KVn4VCf9gfn/nqRKEqou3mRyuECOSad9oeRBv5uLxJb065Vk4lV8VoonhYATCkT3GnpdE=,iv:eb43lzrERBGakB4gJycc+bINdoM/Pw5ndt0MnbyjfHA=,tag:4ovUvHdIlUS/oeATqpkHtQ==,type:str] - pgp: [] - unencrypted_suffix: _unencrypted - version: 3.7.1 diff --git a/config/clusters/m2lines/enc-staging.secret.values.yaml b/config/clusters/m2lines/enc-staging.secret.values.yaml deleted file mode 100644 index 3d5b79b9a5..0000000000 --- a/config/clusters/m2lines/enc-staging.secret.values.yaml +++ /dev/null @@ -1,21 +0,0 @@ -basehub: - jupyterhub: - hub: - config: - GitHubOAuthenticator: - client_id: ENC[AES256_GCM,data:Zq5gIGURTn520LKB2or6ms9wEYc=,iv:Mj3a6EeQm0KM0/9/sfIB9LiNf40sIR+kteT37LowVGk=,tag:GSjAGvtj8as6Ho+mlElfZg==,type:str] - client_secret: ENC[AES256_GCM,data:N8ffgXc1JuEnPGdP8tL5iYW2RYclgrLyPmf+ndvm2eNTGK16MUpwKQ==,iv://0l/GqTLZ+wxHyltwb+a66eumTfFveSUJHwSF+g05Y=,tag:n1y/ZHKTrJRRmaD8RW1S8A==,type:str] -sops: - kms: [] - gcp_kms: - - resource_id: projects/two-eye-two-see/locations/global/keyRings/sops-keys/cryptoKeys/similar-hubs - created_at: "2022-02-24T18:04:17Z" - enc: CiQA4OM7eP6diuWK5cq1WJfLBHrUaMLetApVQYdQJjlOFUKSsHASSQDm5XgW8L7w2ZN+LPLHBMIcfpO6YIBeajtpkKFnTdpRgbhgR7+fb9p4HHT8z3H1U7nwKuOaQPtsXj2e8ZPjWr/2tqy6ramzlhU= - azure_kv: [] - hc_vault: [] - age: [] - lastmodified: "2022-04-21T23:29:26Z" - mac: ENC[AES256_GCM,data:IJK1wZfjVSgOrcOYC88vSN1lxc/zgQZwzJc/1p5kQyU8HamzOzX76SCFTgA6dv+uNQWZC6rfekrRHIh9fZGBf5X5+gaFnlQREFj0UDJOLSxUtZQo/a1sJezkzI9nB4gv4WJylGbjKBo7p0QLN67vXeJQwBspFGaP2n3y+BGXlaE=,iv:Jtl42eYBWDmeSLCDMTx3Ml03pLTYnlGGS6wYVXate0A=,tag:7UbZe/23JrqhoiMdBgmizw==,type:str] - pgp: [] - unencrypted_suffix: _unencrypted - version: 3.7.1 diff --git a/config/clusters/m2lines/enc-support.secret.values.yaml b/config/clusters/m2lines/enc-support.secret.values.yaml deleted file mode 100644 index 9a2e8033b2..0000000000 --- a/config/clusters/m2lines/enc-support.secret.values.yaml +++ /dev/null @@ -1,22 +0,0 @@ -prometheusIngressAuthSecret: - username: ENC[AES256_GCM,data:bisiUHR25ma+Q2MTh8UcjaWDvX/RUVGmAvdfl95ehQ6vmAa0PmMRgZc6pmNwRQSV6+l/D7POI39UaXNCS/mUgg==,iv:See29zO/q0q3xeCij8Gx8Dk1KObVuA2snECw24c8bQc=,tag:osdytedbJLqwYBFwD3GlPg==,type:str] - password: ENC[AES256_GCM,data:CKBA27Rq5acAl+BrMENZvLcrG0BBNC6VQCKMldyenS6tcwX2yM0ZH3mZLspDlWSuNhyh7UxSK/Ks0pds+olWpQ==,iv:/O8DoKRPWktMFKwJ6IxpVhSpnISnJGiguOkr+CmF+OE=,tag:J4fTMgoV7NtTG8/iIUCW9w==,type:str] -grafana: - grafana.ini: - auth.github: - client_id: ENC[AES256_GCM,data:AwOgzy07q0befQjbfzk3HYVHW54=,iv:DUjQ1ceqlSMpIdlDVpmpm3ILfrNszWcaD7dvyqZZNdI=,tag:gwQpWYI8gg4uelWQx0Yb/g==,type:str] - client_secret: ENC[AES256_GCM,data:fCFbmAkCjS59Fr8P8Qx+DxcX5Higkq++GOICB1GyEnV3yMKl9kDjqg==,iv:eJe1meggvTxYSlvoqklEH7+d8Oi+H3qOgdYB0n81rIQ=,tag:nLlxy8pcv9f8e/mKZl1ncg==,type:str] -sops: - kms: [] - gcp_kms: - - resource_id: projects/two-eye-two-see/locations/global/keyRings/sops-keys/cryptoKeys/similar-hubs - created_at: "2022-10-28T10:24:36Z" - enc: CiQA4OM7eEkEE5hlcqPybmYOWbqZJAuksYMnSYYHwqmeljiimJcSSQDuy/p85YMbh9sMf/+H0NY9f60vz8QAuT4/mkTan/zsKLTQFTX66vaFwiYPaKpqVowanzx39SLyIhHSfQHnsGpg/bAFRK23+Os= - azure_kv: [] - hc_vault: [] - age: [] - lastmodified: "2022-10-28T10:24:36Z" - mac: ENC[AES256_GCM,data:G5BitI2XFqq+5FwJr52c8kIVvAPkwoYKCvQ7k6gdallcLNFHPJnN7UYXF+TWZXk1cLVxn7NDK56WhujtIuiz+tXe+XUyu1dLnXnZxtI5Rg5HUMmX7/yCD5smpgfa5UsYrd0fRhnXVaPP0V1m/fRJ4C5iQ62jkKFq16uqf7uqoiE=,iv:TMVE109vKpTi8ncgIo0ojgQszsT5P0JXcw/tB32imtM=,tag:MsO9YA9fz6DXylahqzTlpA==,type:str] - pgp: [] - unencrypted_suffix: _unencrypted - version: 3.7.3 diff --git a/config/clusters/m2lines/prod.values.yaml b/config/clusters/m2lines/prod.values.yaml deleted file mode 100644 index 4e2fca7bb9..0000000000 --- a/config/clusters/m2lines/prod.values.yaml +++ /dev/null @@ -1,20 +0,0 @@ -basehub: - userServiceAccount: - annotations: - iam.gke.io/gcp-service-account: m2lines-prod@m2lines-hub.iam.gserviceaccount.com - jupyterhub: - ingress: - hosts: [m2lines.2i2c.cloud] - tls: - - hosts: [m2lines.2i2c.cloud] - secretName: https-auto-tls - singleuser: - extraEnv: - SCRATCH_BUCKET: gs://m2lines-scratch/$(JUPYTERHUB_USER) - PANGEO_SCRATCH: gs://m2lines-scratch/$(JUPYTERHUB_USER) - PERSISTENT_BUCKET: gs://m2lines-persistent/$(JUPYTERHUB_USER) - PUBLIC_PERSISTENT_BUCKET: gs://m2lines-public-persistent/$(JUPYTERHUB_USER) - hub: - config: - GitHubOAuthenticator: - oauth_callback_url: https://m2lines.2i2c.cloud/hub/oauth_callback diff --git a/config/clusters/m2lines/staging.values.yaml b/config/clusters/m2lines/staging.values.yaml deleted file mode 100644 index 1c435f4711..0000000000 --- a/config/clusters/m2lines/staging.values.yaml +++ /dev/null @@ -1,19 +0,0 @@ -basehub: - userServiceAccount: - annotations: - iam.gke.io/gcp-service-account: m2lines-staging@m2lines-hub.iam.gserviceaccount.com - jupyterhub: - ingress: - hosts: [staging.m2lines.2i2c.cloud] - tls: - - hosts: [staging.m2lines.2i2c.cloud] - secretName: https-auto-tls - singleuser: - extraEnv: - SCRATCH_BUCKET: gs://m2lines-scratch-staging/$(JUPYTERHUB_USER) - PANGEO_SCRATCH: gs://m2lines-scratch-staging/$(JUPYTERHUB_USER) - PERSISTENT_BUCKET: gs://m2lines-persistent-staging/$(JUPYTERHUB_USER) - hub: - config: - GitHubOAuthenticator: - oauth_callback_url: https://staging.m2lines.2i2c.cloud/hub/oauth_callback diff --git a/config/clusters/m2lines/support.values.yaml b/config/clusters/m2lines/support.values.yaml deleted file mode 100644 index a2e4fbddb2..0000000000 --- a/config/clusters/m2lines/support.values.yaml +++ /dev/null @@ -1,32 +0,0 @@ -grafana: - grafana.ini: - server: - root_url: https://grafana.m2lines.2i2c.cloud/ - auth.github: - enabled: true - allowed_organizations: 2i2c-org - ingress: - hosts: - - grafana.m2lines.2i2c.cloud - tls: - - secretName: grafana-tls - hosts: - - grafana.m2lines.2i2c.cloud - -prometheusIngressAuthSecret: - enabled: true - -prometheus: - server: - ingress: - enabled: true - hosts: - - prometheus.m2lines.2i2c.cloud - tls: - - secretName: prometheus-tls - hosts: - - prometheus.m2lines.2i2c.cloud - resources: - limits: - cpu: 2 - memory: 12Gi diff --git a/config/clusters/nasa-cryo/common.values.yaml b/config/clusters/nasa-cryo/common.values.yaml index 5ac592082d..5a653c2b58 100644 --- a/config/clusters/nasa-cryo/common.values.yaml +++ b/config/clusters/nasa-cryo/common.values.yaml @@ -136,7 +136,7 @@ basehub: slug: "python" kubespawner_override: # Image repo: https://github.com/CryoInTheCloud/hub-image - image: "quay.io/cryointhecloud/cryo-hub-image:031697343bfc" + image: "quay.io/cryointhecloud/cryo-hub-image:84a1cbe7cca2" rocker: display_name: R slug: "rocker" diff --git a/config/clusters/qcl/common.values.yaml b/config/clusters/qcl/common.values.yaml index 76a1f9f056..9576780aca 100644 --- a/config/clusters/qcl/common.values.yaml +++ b/config/clusters/qcl/common.values.yaml @@ -42,14 +42,17 @@ jupyterhub: admin_users: - gizmo404 - jtkmckenna + cull: + # Disable all culling: https://github.com/2i2c-org/infrastructure/issues/3495 + enabled: false singleuser: extraFiles: jupyter_server_config.json: data: MappingKernelManager: - # Cull idle kernels after 24h (24 * 60 * 60) - # Ref https://2i2c.freshdesk.com/a/tickets/1120 - cull_idle_timeout: 86400 + # Disable all culling: https://github.com/2i2c-org/infrastructure/issues/3495 + cull_idle_timeout: 0 + cull_connected: false profileList: # NOTE: About node sharing # @@ -175,7 +178,7 @@ jupyterhub: mem_guarantee: 27G cpu_guarantee: 3.2 cpu_limit: null - mem_limit: null + mem_limit: 27G - display_name: "n2-highcpu-96: 96 CPU / 96 GB RAM" description: "Start a container on a dedicated node" slug: "n2_highcpu_96" @@ -183,7 +186,7 @@ jupyterhub: node_selector: node.kubernetes.io/instance-type: n2-highcpu-96 cpu_limit: null - mem_limit: null + mem_limit: 86G mem_guarantee: 86G cpu_guarantee: 9.6 - display_name: "n2-standard-48: 48 CPU / 192 GB RAM" @@ -195,7 +198,7 @@ jupyterhub: mem_guarantee: 160G cpu_guarantee: 4.8 cpu_limit: null - mem_limit: null + mem_limit: 160G - display_name: "n2-standard-96: 96 CPU / 384 GB RAM" description: "Start a container on a dedicated node" slug: "n2_standard_96" @@ -205,7 +208,7 @@ jupyterhub: mem_guarantee: 320G cpu_guarantee: 9.6 cpu_limit: null - mem_limit: null + mem_limit: 320G # shared-public for collaboration # See https://2i2c.freshdesk.com/a/tickets/814 storage: diff --git a/deployer/commands/generate/resource_allocation/daemonset_requests.yaml b/deployer/commands/generate/resource_allocation/daemonset_requests.yaml index 62916addd7..3e8e1850cf 100644 --- a/deployer/commands/generate/resource_allocation/daemonset_requests.yaml +++ b/deployer/commands/generate/resource_allocation/daemonset_requests.yaml @@ -74,12 +74,6 @@ gke: cpu_requests: 344m memory_requests: 596Mi k8s_version: v1.27.4-gke.900 - m2lines: - requesting_daemon_sets: calico-node,fluentbit-gke,gke-metadata-server,gke-metrics-agent,ip-masq-agent,netd,pdcsi-node,support-cryptnono,support-prometheus-node-exporter - other_daemon_sets: "" - cpu_requests: 344m - memory_requests: 596Mi - k8s_version: v1.27.4-gke.900 meom-ige: requesting_daemon_sets: fluentbit-gke,gke-metadata-server,gke-metrics-agent,netd,pdcsi-node,support-cryptnono,support-prometheus-node-exporter other_daemon_sets: "" diff --git a/terraform/gcp/projects/m2lines.tfvars b/terraform/gcp/projects/m2lines.tfvars deleted file mode 100644 index 837160bc0f..0000000000 --- a/terraform/gcp/projects/m2lines.tfvars +++ /dev/null @@ -1,121 +0,0 @@ -prefix = "m2lines" -project_id = "m2lines-hub" - -# GPUs not available in us-central1-b -zone = "us-central1-c" -region = "us-central1" -regional_cluster = true - -k8s_versions = { - min_master_version : "1.27.4-gke.900", - core_nodes_version : "1.27.4-gke.900", - notebook_nodes_version : "1.27.4-gke.900", - dask_nodes_version : "1.27.4-gke.900", -} - -core_node_machine_type = "n2-highmem-4" -enable_network_policy = true - - -# Setup a filestore for in-cluster NFS -enable_filestore = true -filestore_capacity_gb = 2048 - -user_buckets = { - "scratch-staging" : { - "delete_after" : 7 - }, - "scratch" : { - "delete_after" : 7 - }, - # For https://2i2c.freshdesk.com/a/tickets/218 - "persistent" : { - "delete_after" : null, - "extra_admin_members" : ["group:m2lines-persistent-bucket-writers@googlegroups.com"] - }, - "persistent-staging" : { - "delete_after" : null, - "extra_admin_members" : ["group:m2lines-persistent-bucket-writers@googlegroups.com"] - }, - "public-persistent" : { - "delete_after" : null, - "extra_admin_members" : ["group:m2lines-persistent-bucket-writers@googlegroups.com"], - "public_access" : true - }, - -} - -# Setup notebook node pools -notebook_nodes = { - "n2-highmem-4" : { - min : 0, - max : 100, - machine_type : "n2-highmem-4", - }, - "n2-highmem-16" : { - min : 0, - max : 100, - machine_type : "n2-highmem-16", - }, - "n2-highmem-64" : { - min : 0, - max : 100, - machine_type : "n2-highmem-64", - }, - "small" : { - min : 0, - max : 100, - machine_type : "n1-standard-2", - }, - "medium" : { - min : 0, - max : 100, - machine_type : "n1-standard-4", - }, - "large" : { - min : 0, - max : 100, - machine_type : "n1-standard-8", - }, - "huge" : { - min : 0, - max : 100, - machine_type : "n1-standard-16", - }, - "gpu-t4" : { - min : 0, - max : 100, - machine_type : "n1-standard-8", - gpu : { - enabled : true, - type : "nvidia-tesla-t4", - count : 1 - } - } -} - -# Setup a single node pool for dask workers. -# -# A not yet fully established policy is being developed about using a single -# node pool, see https://github.com/2i2c-org/infrastructure/issues/2687. -# -dask_nodes = { - "n2-highmem-16" : { - min : 0, - max : 100, - machine_type : "n2-highmem-16", - } -} - -hub_cloud_permissions = { - "staging" : { - requestor_pays : true, - bucket_admin_access : ["scratch-staging", "persistent-staging"], - hub_namespace : "staging" - }, - "prod" : { - requestor_pays : true, - bucket_admin_access : ["scratch", "persistent", "public-persistent"], - hub_namespace : "prod" - }, -} diff --git a/terraform/gcp/projects/pilot-hubs.tfvars b/terraform/gcp/projects/pilot-hubs.tfvars index 458acd3af4..6081b6a570 100644 --- a/terraform/gcp/projects/pilot-hubs.tfvars +++ b/terraform/gcp/projects/pilot-hubs.tfvars @@ -102,24 +102,7 @@ notebook_nodes = { resource_labels : { "community" : "temple" }, - }, - # Nodepool for jackeddy symposium. https://github.com/2i2c-org/infrastructure/issues/3166 - "jackeddy" : { - min : 0, - max : 100, - machine_type : "n2-highmem-16", - labels : { - "2i2c.org/community" : "jackeddy" - }, - taints : [{ - key : "2i2c.org/community", - value : "jackeddy", - effect : "NO_SCHEDULE" - }], - resource_labels : { - "community" : "jackeddy" - }, - }, + } } # Setup a single node pool for dask workers.