From cd347b0d92f9c3f5f1c3e148fa91552422fed55b Mon Sep 17 00:00:00 2001 From: bernardolk Date: Mon, 26 Jul 2021 13:14:44 -0300 Subject: [PATCH 01/67] testing deploying daskhub helm chart --- main.tf | 107 ++++++++++++++------------- modules/dask-jupyterhub/main.tf | 9 +++ modules/dask-jupyterhub/values.yaml | 0 modules/dask-jupyterhub/variables.tf | 0 4 files changed, 65 insertions(+), 51 deletions(-) create mode 100644 modules/dask-jupyterhub/main.tf create mode 100644 modules/dask-jupyterhub/values.yaml create mode 100644 modules/dask-jupyterhub/variables.tf diff --git a/main.tf b/main.tf index 27286d97..f045839b 100644 --- a/main.tf +++ b/main.tf @@ -1,32 +1,37 @@ -resource "kubernetes_namespace" "jupyterhub_namespace" { - metadata { - name = var.jupyterhub_namespace - } -} - -module "jupyterhub" { - count = var.install_jupyterhub ? 1 : 0 - source = "./modules/jupyterhub" - namespace = kubernetes_namespace.jupyterhub_namespace.metadata[0].name - - # Proxy settings - proxy_secret_token = var.jhub_proxy_secret_token - proxy_https_enabled = var.jhub_proxy_https_enabled - proxy_https_hosts = var.jhub_proxy_https_hosts - proxy_https_letsencrypt_contact_email = var.jhub_proxy_https_letsencrypt_contact_email - proxy_service_type = var.jhub_proxy_service_type - - # Authentication settings - # Following values should be `null` if oauth_github is disabled. However we need to pass submodule's defaults here - # explicitly because of this Terraform bug: https://github.com/hashicorp/terraform/issues/21702 - authentication_type = var.oauth_github_enable ? "github" : "dummy" - authentication_config = merge( - local.jhub_auth_config, - {JupyterHub = {authenticator_class = var.oauth_github_enable ? "github" : "dummy"}} - ) - - # Profile list configuration - singleuser_profile_list = var.singleuser_profile_list +//resource "kubernetes_namespace" "jupyterhub_namespace" { +// metadata { +// name = var.jupyterhub_namespace +// } +//} + +//module "jupyterhub" { +// count = var.install_jupyterhub ? 1 : 0 +// source = "./modules/jupyterhub" +// namespace = kubernetes_namespace.jupyterhub_namespace.metadata[0].name +// +// # Proxy settings +// proxy_secret_token = var.jhub_proxy_secret_token +// proxy_https_enabled = var.jhub_proxy_https_enabled +// proxy_https_hosts = var.jhub_proxy_https_hosts +// proxy_https_letsencrypt_contact_email = var.jhub_proxy_https_letsencrypt_contact_email +// proxy_service_type = var.jhub_proxy_service_type +// +// # Authentication settings +// # Following values should be `null` if oauth_github is disabled. However we need to pass submodule's defaults here +// # explicitly because of this Terraform bug: https://github.com/hashicorp/terraform/issues/21702 +// authentication_type = var.oauth_github_enable ? "github" : "dummy" +// authentication_config = merge( +// local.jhub_auth_config, +// {JupyterHub = {authenticator_class = var.oauth_github_enable ? "github" : "dummy"}} +// ) +// +// # Profile list configuration +// singleuser_profile_list = var.singleuser_profile_list +//} + +module "dask-jupyterhub" { + source = "./modules/dask-jupyterhub" + namespace = "daskhub" } @@ -82,29 +87,29 @@ module "prefect-server" { } -resource "kubernetes_namespace" "dask_namespace" { - metadata { - name = var.dask_namespace - } -} +//resource "kubernetes_namespace" "dask_namespace" { +// metadata { +// name = var.dask_namespace +// } +//} -module "dask" { - - source = "./modules/dask" - namespace = kubernetes_namespace.dask_namespace.metadata[0].name - - worker_image_pull_secret = [ - { - name = "regcred" - } - ] - worker_environment_variables = [ - { - name = "EXTRA_PIP_PACKAGES" - value = "prefect==0.14.1 --upgrade" - } - ] -} +//module "dask" { + +// source = "./modules/dask" +// namespace = kubernetes_namespace.dask_namespace.metadata[0].name + +// worker_image_pull_secret = [ +// { +// name = "regcred" +// } +// ] +// worker_environment_variables = [ +// { +// name = "EXTRA_PIP_PACKAGES" +// value = "prefect==0.14.1 --upgrade" +// } +// ] +//} resource "kubernetes_namespace" "feast_namespace" { diff --git a/modules/dask-jupyterhub/main.tf b/modules/dask-jupyterhub/main.tf new file mode 100644 index 00000000..80bf9df6 --- /dev/null +++ b/modules/dask-jupyterhub/main.tf @@ -0,0 +1,9 @@ +resource "helm_release" "dask-jupyterhub" { + name = "daskhub" + namespace = var.namespace + + repository = "https://helm.dask.org" + chart = "daskhub" + version = "2021.7.2" + +} \ No newline at end of file diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml new file mode 100644 index 00000000..e69de29b diff --git a/modules/dask-jupyterhub/variables.tf b/modules/dask-jupyterhub/variables.tf new file mode 100644 index 00000000..e69de29b From b458925a175518ee367ec7c5a3454a212fa10066 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Mon, 26 Jul 2021 13:25:36 -0300 Subject: [PATCH 02/67] fix --- main.tf | 1 - 1 file changed, 1 deletion(-) diff --git a/main.tf b/main.tf index f045839b..00e2bcb2 100644 --- a/main.tf +++ b/main.tf @@ -31,7 +31,6 @@ module "dask-jupyterhub" { source = "./modules/dask-jupyterhub" - namespace = "daskhub" } From 51ce925e03fd8260307f618197ce0d2bedf9f19f Mon Sep 17 00:00:00 2001 From: bernardolk Date: Mon, 26 Jul 2021 13:26:56 -0300 Subject: [PATCH 03/67] fix --- modules/dask-jupyterhub/main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/dask-jupyterhub/main.tf b/modules/dask-jupyterhub/main.tf index 80bf9df6..8741a461 100644 --- a/modules/dask-jupyterhub/main.tf +++ b/modules/dask-jupyterhub/main.tf @@ -1,6 +1,6 @@ resource "helm_release" "dask-jupyterhub" { name = "daskhub" - namespace = var.namespace + namespace = "daskhub" repository = "https://helm.dask.org" chart = "daskhub" From 4629195c29b07b000e9d90c1af5b75576691fffb Mon Sep 17 00:00:00 2001 From: bernardolk Date: Mon, 26 Jul 2021 13:47:40 -0300 Subject: [PATCH 04/67] testing --- modules/dask-jupyterhub/main.tf | 4 ++++ modules/dask-jupyterhub/values.yaml | 11 +++++++++++ modules/dask-jupyterhub/variables.tf | 10 ++++++++++ 3 files changed, 25 insertions(+) diff --git a/modules/dask-jupyterhub/main.tf b/modules/dask-jupyterhub/main.tf index 8741a461..23a0db91 100644 --- a/modules/dask-jupyterhub/main.tf +++ b/modules/dask-jupyterhub/main.tf @@ -6,4 +6,8 @@ resource "helm_release" "dask-jupyterhub" { chart = "daskhub" version = "2021.7.2" + values = [templatefile("${path.module}/values.yaml", { + jupyterhub_secret = var.jupyterhub_secret + daskgateway_secret = var.daskgateway_secret + })] } \ No newline at end of file diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index e69de29b..29c7e695 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -0,0 +1,11 @@ +jupyterhub: + hub: + services: + dask-gateway: + apiToken: %{ daskgateway_secret } + +dask-gateway: + gateway: + auth: + jupyterhub: + apiToken: %{ jupyterhub_secret } \ No newline at end of file diff --git a/modules/dask-jupyterhub/variables.tf b/modules/dask-jupyterhub/variables.tf index e69de29b..01365046 100644 --- a/modules/dask-jupyterhub/variables.tf +++ b/modules/dask-jupyterhub/variables.tf @@ -0,0 +1,10 @@ + +variable "jupyterhub_secret" { + type = string + default = "4301bf5a2aa1fbade157046863ac64ec46df03e3da39ec3bf345a2f8caa81e02" +} + +variable "daskgateway_secret" { + type = string + default = "ca7de235a4ae54103d49f5004a11690004c66fe14810f35dc476103573e56ff1" +} \ No newline at end of file From ecf5818d6d5fc434f86ea8bc8d5d7463ce17ad6c Mon Sep 17 00:00:00 2001 From: bernardolk Date: Mon, 26 Jul 2021 13:49:04 -0300 Subject: [PATCH 05/67] fix again --- modules/dask-jupyterhub/values.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 29c7e695..6d7b5846 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -2,10 +2,10 @@ jupyterhub: hub: services: dask-gateway: - apiToken: %{ daskgateway_secret } + apiToken: ${ daskgateway_secret } dask-gateway: gateway: auth: jupyterhub: - apiToken: %{ jupyterhub_secret } \ No newline at end of file + apiToken: ${ jupyterhub_secret } \ No newline at end of file From 3fc20aa2e8fe0dd6fc96a951add8a61d47f64784 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Tue, 27 Jul 2021 14:04:36 -0300 Subject: [PATCH 06/67] helm version upgrate --- versions.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/versions.tf b/versions.tf index de526622..455fa0cf 100644 --- a/versions.tf +++ b/versions.tf @@ -6,7 +6,7 @@ terraform { } helm = { source = "hashicorp/helm" - version = "~> 2.0.1" + version = "~> 2.2.0" } kubernetes = { source = "hashicorp/kubernetes" From 5bb304f4475e0864efba0215303e69f610a1248d Mon Sep 17 00:00:00 2001 From: bernardolk Date: Tue, 27 Jul 2021 14:17:27 -0300 Subject: [PATCH 07/67] dsakhub namespace --- main.tf | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/main.tf b/main.tf index 00e2bcb2..650b57b8 100644 --- a/main.tf +++ b/main.tf @@ -29,6 +29,13 @@ // singleuser_profile_list = var.singleuser_profile_list //} +resource "kubernetes_namespace" "dsakhub_namespace" { + metadata { + name = "daskhub" + } +} + + module "dask-jupyterhub" { source = "./modules/dask-jupyterhub" } From 9f8e11609fac84676781c46d08eb95be04d74dd0 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Tue, 27 Jul 2021 14:29:15 -0300 Subject: [PATCH 08/67] set service in ambassador + typo fix --- main.tf | 2 +- modules/ambassador/values.yaml | 2 +- 2 files changed, 2 insertions(+), 2 deletions(-) diff --git a/main.tf b/main.tf index 650b57b8..4869c45c 100644 --- a/main.tf +++ b/main.tf @@ -29,7 +29,7 @@ // singleuser_profile_list = var.singleuser_profile_list //} -resource "kubernetes_namespace" "dsakhub_namespace" { +resource "kubernetes_namespace" "daskhub_namespace" { metadata { name = "daskhub" } diff --git a/modules/ambassador/values.yaml b/modules/ambassador/values.yaml index 9c0a38b9..594421b9 100644 --- a/modules/ambassador/values.yaml +++ b/modules/ambassador/values.yaml @@ -57,7 +57,7 @@ service: apiVersion: getambassador.io/v2 kind: Mapping name: jhub_mapping - service: proxy-public.jhub:80 + service: proxy-public.daskhub:80 prefix: / host: jupyter.${hostname} allow_upgrade: From d32744f38e61d98b897913f3e868c1cb2d9b2637 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Tue, 27 Jul 2021 14:50:52 -0300 Subject: [PATCH 09/67] jhub single user image settings --- modules/dask-jupyterhub/values.yaml | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 6d7b5846..1838173d 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -3,6 +3,12 @@ jupyterhub: services: dask-gateway: apiToken: ${ daskgateway_secret } + singleuser: + extraEnv: + DASK_GATEWAY__CLUSTER__OPTIONS__IMAGE: 'drtools/openmlops-notebook:v1.2' + image: + name: "drtools/openmlops-notebook" + tag: "v1.2" dask-gateway: gateway: From f94a50c72fd663fa47f66b22279d22d945ebd4b0 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Tue, 27 Jul 2021 15:05:58 -0300 Subject: [PATCH 10/67] dask gateway additional options --- modules/dask-jupyterhub/values.yaml | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 1838173d..ff965222 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -14,4 +14,17 @@ dask-gateway: gateway: auth: jupyterhub: - apiToken: ${ jupyterhub_secret } \ No newline at end of file + apiToken: ${ jupyterhub_secret } + extraConfig: + optionHandler: | + from dask_gateway_server.options import Options, Integer, Float, String + def option_handler(options): + if ":" not in options.image: + raise ValueError("When specifying an image you must also provide a tag") + return { + "image": options.image, + } + c.Backend.cluster_options = Options( + String("image", default="pangeo/base-notebook:2020.07.28", label="Image"), + handler=option_handler, + ) \ No newline at end of file From 6f813efcb0e33cda0b9ff4b47ed701aef8809842 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Tue, 27 Jul 2021 15:30:04 -0300 Subject: [PATCH 11/67] jhub additional env settings --- modules/dask-jupyterhub/values.yaml | 30 ++++++--------- modules/dask-jupyterhub/variables.tf | 55 ++++++++++++++++++++++++++++ 2 files changed, 67 insertions(+), 18 deletions(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index ff965222..ab67cd67 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -4,27 +4,21 @@ jupyterhub: dask-gateway: apiToken: ${ daskgateway_secret } singleuser: - extraEnv: - DASK_GATEWAY__CLUSTER__OPTIONS__IMAGE: 'drtools/openmlops-notebook:v1.2' + profileList: ${ var.singleuser_profile_list } image: - name: "drtools/openmlops-notebook" - tag: "v1.2" + name: "jupyterhub/k8s-network-tools" + pullSecrets: ${ var.singleuser_image_pull_secrets } + pullPolicy: ${ var.singleuser_image_pull_policy } + memory: + guarantee: ${ var.singleuser_memory_guarantee } + storage: + capacity: ${ var.singleuser_storage_capacity } + homeMountPath: ${ var.singleuser_storage_mount_path } + extraEnv: + TZ: "Europe/Berlin" dask-gateway: gateway: auth: jupyterhub: - apiToken: ${ jupyterhub_secret } - extraConfig: - optionHandler: | - from dask_gateway_server.options import Options, Integer, Float, String - def option_handler(options): - if ":" not in options.image: - raise ValueError("When specifying an image you must also provide a tag") - return { - "image": options.image, - } - c.Backend.cluster_options = Options( - String("image", default="pangeo/base-notebook:2020.07.28", label="Image"), - handler=option_handler, - ) \ No newline at end of file + apiToken: ${ jupyterhub_secret } \ No newline at end of file diff --git a/modules/dask-jupyterhub/variables.tf b/modules/dask-jupyterhub/variables.tf index 01365046..a2580bfb 100644 --- a/modules/dask-jupyterhub/variables.tf +++ b/modules/dask-jupyterhub/variables.tf @@ -7,4 +7,59 @@ variable "jupyterhub_secret" { variable "daskgateway_secret" { type = string default = "ca7de235a4ae54103d49f5004a11690004c66fe14810f35dc476103573e56ff1" +} + +variable "singleuser_image_pull_secrets" { + type = list( + object({ + name = string + }) + ) + default = [] +} + +variable "singleuser_image_pull_policy" { + default = "Always" +} + +variable "singleuser_default_url" { + description = "" + default = "/lab" +} + +variable "singleuser_profile_list" { + description = "List of images which the user can select to spawn a server" + type = list(object({ + display_name = string + description = string + default = bool + kubespawner_override = object({ + image = string + }) + })) + + default = [ + { + display_name = "Datascience environment" + description = "Default data science enviroment" + default = true + kubespawner_override = { + image = "jupyter/datascience-notebook:2343e33dec46" + } + + } + ] + +} + +variable "singleuser_memory_guarantee" { + default = "1G" +} + +variable "singleuser_storage_capacity" { + default = "1G" +} + +variable "singleuser_storage_mount_path" { + default = "/home/jovyan/persistent" } \ No newline at end of file From 00ff682eabfdeb7eb55e52fd94b213583e3a7184 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Tue, 27 Jul 2021 15:32:41 -0300 Subject: [PATCH 12/67] missing var passing into values.yaml --- modules/dask-jupyterhub/main.tf | 6 ++++++ modules/dask-jupyterhub/values.yaml | 12 ++++++------ 2 files changed, 12 insertions(+), 6 deletions(-) diff --git a/modules/dask-jupyterhub/main.tf b/modules/dask-jupyterhub/main.tf index 23a0db91..0b11a857 100644 --- a/modules/dask-jupyterhub/main.tf +++ b/modules/dask-jupyterhub/main.tf @@ -9,5 +9,11 @@ resource "helm_release" "dask-jupyterhub" { values = [templatefile("${path.module}/values.yaml", { jupyterhub_secret = var.jupyterhub_secret daskgateway_secret = var.daskgateway_secret + singleuser_profile_list = var.singleuser_profile_list + singleuser_image_pull_secrets = var.singleuser_image_pull_secrets + singleuser_image_pull_policy = var.singleuser_image_pull_policy + singleuser_memory_guarantee = var.singleuser_memory_guarantee + singleuser_storage_capacity = var.singleuser_storage_capacity + singleuser_storage_mount_path = var.singleuser_storage_mount_path })] } \ No newline at end of file diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index ab67cd67..dbba6005 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -4,16 +4,16 @@ jupyterhub: dask-gateway: apiToken: ${ daskgateway_secret } singleuser: - profileList: ${ var.singleuser_profile_list } + profileList: ${ singleuser_profile_list } image: name: "jupyterhub/k8s-network-tools" - pullSecrets: ${ var.singleuser_image_pull_secrets } - pullPolicy: ${ var.singleuser_image_pull_policy } + pullSecrets: ${ singleuser_image_pull_secrets } + pullPolicy: ${ singleuser_image_pull_policy } memory: - guarantee: ${ var.singleuser_memory_guarantee } + guarantee: ${ singleuser_memory_guarantee } storage: - capacity: ${ var.singleuser_storage_capacity } - homeMountPath: ${ var.singleuser_storage_mount_path } + capacity: ${ singleuser_storage_capacity } + homeMountPath: ${ singleuser_storage_mount_path } extraEnv: TZ: "Europe/Berlin" From 339f5baf93b12f97c401bcc837d6250a50bbed8c Mon Sep 17 00:00:00 2001 From: bernardolk Date: Tue, 27 Jul 2021 15:43:45 -0300 Subject: [PATCH 13/67] templatefile interpolation changes --- modules/dask-jupyterhub/values.yaml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index dbba6005..a4c4e525 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -4,7 +4,14 @@ jupyterhub: dask-gateway: apiToken: ${ daskgateway_secret } singleuser: - profileList: ${ singleuser_profile_list } + profileList: +%{for profile in singleuser_profile_list ~} + - display_name: ${ profile.display_name } + description: ${ profile.description } + default: ${ profile.default } + kubespawner_override: + image: ${ profile.kubespawner_override.image } +%{ endfor ~} image: name: "jupyterhub/k8s-network-tools" pullSecrets: ${ singleuser_image_pull_secrets } From d13fe67f1d943e5cac445cf5149ef179796dd87f Mon Sep 17 00:00:00 2001 From: bernardolk Date: Tue, 27 Jul 2021 15:48:31 -0300 Subject: [PATCH 14/67] templatefile interpolation changes (again) --- modules/dask-jupyterhub/values.yaml | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index a4c4e525..9aa37d13 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -14,8 +14,15 @@ jupyterhub: %{ endfor ~} image: name: "jupyterhub/k8s-network-tools" - pullSecrets: ${ singleuser_image_pull_secrets } - pullPolicy: ${ singleuser_image_pull_policy } + pullSecrets: +%{ for img_pull_secret in singleuser_image_pull_secrets ~} + - create: ${ img_pull_secret.create } + automaticRefere: ${ img_pull_secret.automaticRefere } + registry: ${ img_pull_secret.registry } + username: ${ img_pull_secret.username } + email: ${ img_pull_secret.email } +%{ endfor ~} +pullPolicy: ${ singleuser_image_pull_policy } memory: guarantee: ${ singleuser_memory_guarantee } storage: From 13cf7596e02fb2dd0ce81e2a881cc11475fa9322 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Tue, 27 Jul 2021 15:52:43 -0300 Subject: [PATCH 15/67] test --- modules/dask-jupyterhub/values.yaml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 9aa37d13..9bfbf5f3 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -14,14 +14,6 @@ jupyterhub: %{ endfor ~} image: name: "jupyterhub/k8s-network-tools" - pullSecrets: -%{ for img_pull_secret in singleuser_image_pull_secrets ~} - - create: ${ img_pull_secret.create } - automaticRefere: ${ img_pull_secret.automaticRefere } - registry: ${ img_pull_secret.registry } - username: ${ img_pull_secret.username } - email: ${ img_pull_secret.email } -%{ endfor ~} pullPolicy: ${ singleuser_image_pull_policy } memory: guarantee: ${ singleuser_memory_guarantee } From be873783214e9eef8edf5ae6e1a932fce0050d66 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Tue, 27 Jul 2021 18:11:03 -0300 Subject: [PATCH 16/67] fixing jhub values --- modules/dask-jupyterhub/values.yaml | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 9bfbf5f3..6503ba28 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -14,7 +14,15 @@ jupyterhub: %{ endfor ~} image: name: "jupyterhub/k8s-network-tools" -pullPolicy: ${ singleuser_image_pull_policy } + pullPolicy: ${ singleuser_image_pull_policy } + pullSecrets: +%{ for img_pull_secret in singleuser_image_pull_secrets ~} + - create: ${ img_pull_secret.create } + automaticRefere: ${ img_pull_secret.automaticRefere } + registry: ${ img_pull_secret.registry } + username: ${ img_pull_secret.username } + email: ${ img_pull_secret.email } +%{ endfor ~} memory: guarantee: ${ singleuser_memory_guarantee } storage: From 9091372ab969d40bf7518fa8e94f260536008560 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Tue, 27 Jul 2021 18:41:15 -0300 Subject: [PATCH 17/67] fixing jhub values (again) --- modules/dask-jupyterhub/values.yaml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 6503ba28..2daee951 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -17,11 +17,7 @@ jupyterhub: pullPolicy: ${ singleuser_image_pull_policy } pullSecrets: %{ for img_pull_secret in singleuser_image_pull_secrets ~} - - create: ${ img_pull_secret.create } - automaticRefere: ${ img_pull_secret.automaticRefere } - registry: ${ img_pull_secret.registry } - username: ${ img_pull_secret.username } - email: ${ img_pull_secret.email } + - name: ${ img_pull_secret.name } %{ endfor ~} memory: guarantee: ${ singleuser_memory_guarantee } From c159b5e46c76222680aefbbfafb494afbf9844d9 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Tue, 27 Jul 2021 18:59:58 -0300 Subject: [PATCH 18/67] test --- modules/dask-jupyterhub/values.yaml | 4 ---- 1 file changed, 4 deletions(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 2daee951..78a6b985 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -15,10 +15,6 @@ jupyterhub: image: name: "jupyterhub/k8s-network-tools" pullPolicy: ${ singleuser_image_pull_policy } - pullSecrets: -%{ for img_pull_secret in singleuser_image_pull_secrets ~} - - name: ${ img_pull_secret.name } -%{ endfor ~} memory: guarantee: ${ singleuser_memory_guarantee } storage: From a8a5c330d271cd7a5321296641bbadbaa6e00a80 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Wed, 28 Jul 2021 16:45:11 -0300 Subject: [PATCH 19/67] values yaml test --- modules/dask-jupyterhub/values.yaml | 8 -------- 1 file changed, 8 deletions(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 78a6b985..91a689ab 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -12,14 +12,6 @@ jupyterhub: kubespawner_override: image: ${ profile.kubespawner_override.image } %{ endfor ~} - image: - name: "jupyterhub/k8s-network-tools" - pullPolicy: ${ singleuser_image_pull_policy } - memory: - guarantee: ${ singleuser_memory_guarantee } - storage: - capacity: ${ singleuser_storage_capacity } - homeMountPath: ${ singleuser_storage_mount_path } extraEnv: TZ: "Europe/Berlin" From 95acbf5cb17522db3ee1889a5488398c82ac8474 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Wed, 28 Jul 2021 17:19:26 -0300 Subject: [PATCH 20/67] temporarily removing daskhub deployment --- main.tf | 31 +++++++++++++++++++++++-------- 1 file changed, 23 insertions(+), 8 deletions(-) diff --git a/main.tf b/main.tf index 4869c45c..c7bb5bc5 100644 --- a/main.tf +++ b/main.tf @@ -29,16 +29,31 @@ // singleuser_profile_list = var.singleuser_profile_list //} -resource "kubernetes_namespace" "daskhub_namespace" { - metadata { - name = "daskhub" - } -} -module "dask-jupyterhub" { - source = "./modules/dask-jupyterhub" -} + + + + + + +//resource "kubernetes_namespace" "daskhub_namespace" { +// metadata { +// name = "daskhub" +// } +//} + + +//module "dask-jupyterhub" { +// source = "./modules/dask-jupyterhub" +//} + + + + + + + resource "kubernetes_namespace" "mlflow_namespace" { From 18f99ec3fab4b29493fa5c891f97b4e4c4f916cc Mon Sep 17 00:00:00 2001 From: bernardolk Date: Wed, 28 Jul 2021 17:33:00 -0300 Subject: [PATCH 21/67] adding back daskhub deployment --- main.tf | 32 ++++++++------------------------ 1 file changed, 8 insertions(+), 24 deletions(-) diff --git a/main.tf b/main.tf index c7bb5bc5..76dc1741 100644 --- a/main.tf +++ b/main.tf @@ -29,32 +29,16 @@ // singleuser_profile_list = var.singleuser_profile_list //} +resource "kubernetes_namespace" "daskhub_namespace" { + metadata { + name = "daskhub" + } +} - - - - - - -//resource "kubernetes_namespace" "daskhub_namespace" { -// metadata { -// name = "daskhub" -// } -//} - - -//module "dask-jupyterhub" { -// source = "./modules/dask-jupyterhub" -//} - - - - - - - - +module "dask-jupyterhub" { + source = "./modules/dask-jupyterhub" +} resource "kubernetes_namespace" "mlflow_namespace" { metadata { From b14151673d75b9a1c88ae1656ad2d2e74e605ec1 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Wed, 28 Jul 2021 17:48:10 -0300 Subject: [PATCH 22/67] notebook image variable changeup --- modules/dask-jupyterhub/variables.tf | 29 ++++++++++++++---------- variables.tf | 33 ---------------------------- 2 files changed, 18 insertions(+), 44 deletions(-) diff --git a/modules/dask-jupyterhub/variables.tf b/modules/dask-jupyterhub/variables.tf index a2580bfb..770f0677 100644 --- a/modules/dask-jupyterhub/variables.tf +++ b/modules/dask-jupyterhub/variables.tf @@ -29,27 +29,34 @@ variable "singleuser_default_url" { variable "singleuser_profile_list" { description = "List of images which the user can select to spawn a server" - type = list(object({ - display_name = string - description = string - default = bool - kubespawner_override = object({ - image = string - }) + type = list( + object({ + display_name = string + description = string + default = bool + kubespawner_override = object({ + image = string + }) })) default = [ { - display_name = "Datascience environment" - description = "Default data science enviroment" + display_name = "OpenMLOps client environment" + description = "Notebook with OpenMLOps required client libraries installed.
Image: drtools/openmlops-notebook:v1.2" default = true + kubespawner_override = { + image = "drtools/openmlops-notebook:v1.2" + } + }, + { + display_name = "Data Science environment" + description = "Default data science environment" + default = false kubespawner_override = { image = "jupyter/datascience-notebook:2343e33dec46" } - } ] - } variable "singleuser_memory_guarantee" { diff --git a/variables.tf b/variables.tf index 056c6301..8b3d9fbb 100644 --- a/variables.tf +++ b/variables.tf @@ -137,39 +137,6 @@ variable "oauth_github_allowed_organizations" { default = [""] } -variable "singleuser_profile_list" { - description = "List of images which the user can select to spawn a server" - type = list( - object({ - display_name = string - description = string - default = bool - kubespawner_override = object({ - image = string - }) - })) - - default = [ - { - display_name = "OpenMLOps client environment" - description = "Notebook with OpenMLOps required client libraries installed.
Image: drtools/openmlops-notebook:v1.2" - default = true - kubespawner_override = { - image = "drtools/openmlops-notebook:v1.2" - } - }, - - { - display_name = "Data Science environment" - description = "Default data science environment" - default = false - kubespawner_override = { - image = "jupyter/datascience-notebook:2343e33dec46" - } - } - ] -} - locals { jhub_auth_config = { From a613534932a2aab86a44bb2c8047adf55966f0a0 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Wed, 28 Jul 2021 17:58:49 -0300 Subject: [PATCH 23/67] notebook image test to fix yaml to json conversion problem --- modules/dask-jupyterhub/variables.tf | 8 -------- 1 file changed, 8 deletions(-) diff --git a/modules/dask-jupyterhub/variables.tf b/modules/dask-jupyterhub/variables.tf index 770f0677..585e20e7 100644 --- a/modules/dask-jupyterhub/variables.tf +++ b/modules/dask-jupyterhub/variables.tf @@ -47,14 +47,6 @@ variable "singleuser_profile_list" { kubespawner_override = { image = "drtools/openmlops-notebook:v1.2" } - }, - { - display_name = "Data Science environment" - description = "Default data science environment" - default = false - kubespawner_override = { - image = "jupyter/datascience-notebook:2343e33dec46" - } } ] } From 103f85847ce40409fae09c8bc3881597d7933448 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Wed, 28 Jul 2021 18:25:05 -0300 Subject: [PATCH 24/67] now I got this. --- modules/dask-jupyterhub/values.yaml | 2 +- modules/dask-jupyterhub/variables.tf | 8 ++++++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 91a689ab..16ea633f 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -7,7 +7,7 @@ jupyterhub: profileList: %{for profile in singleuser_profile_list ~} - display_name: ${ profile.display_name } - description: ${ profile.description } + description: "${ profile.description }" default: ${ profile.default } kubespawner_override: image: ${ profile.kubespawner_override.image } diff --git a/modules/dask-jupyterhub/variables.tf b/modules/dask-jupyterhub/variables.tf index 585e20e7..770f0677 100644 --- a/modules/dask-jupyterhub/variables.tf +++ b/modules/dask-jupyterhub/variables.tf @@ -47,6 +47,14 @@ variable "singleuser_profile_list" { kubespawner_override = { image = "drtools/openmlops-notebook:v1.2" } + }, + { + display_name = "Data Science environment" + description = "Default data science environment" + default = false + kubespawner_override = { + image = "jupyter/datascience-notebook:2343e33dec46" + } } ] } From 42ddd1263cd25de5e1307a196c7cbc27061dfa53 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Wed, 28 Jul 2021 18:39:42 -0300 Subject: [PATCH 25/67] ha! I knew it. got this one too. --- modules/dask-jupyterhub/values.yaml | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 16ea633f..f59b6ee2 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -14,7 +14,18 @@ jupyterhub: %{ endfor ~} extraEnv: TZ: "Europe/Berlin" - + image: + name: "jupyterhub/k8s-network-tools" + pullPolicy: ${ singleuser_image_pull_policy } + pullSecrets: +%{ for img_pull_secret in singleuser_image_pull_secrets ~} + - name: "${ img_pull_secret.name }" +%{ endfor ~} + memory: + guarantee: ${ singleuser_memory_guarantee } + storage: + capacity: ${ singleuser_storage_capacity } + homeMountPath: ${ singleuser_storage_mount_path } dask-gateway: gateway: auth: From 3187b86b414967da9f5528029e76c91b2b3a4889 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Wed, 28 Jul 2021 19:13:38 -0300 Subject: [PATCH 26/67] maybe it just needs this thing. --- modules/dask-jupyterhub/values.yaml | 2 ++ 1 file changed, 2 insertions(+) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index f59b6ee2..49cf44ed 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -17,10 +17,12 @@ jupyterhub: image: name: "jupyterhub/k8s-network-tools" pullPolicy: ${ singleuser_image_pull_policy } +%{ if can(singleuser_image_pull_secrets) } pullSecrets: %{ for img_pull_secret in singleuser_image_pull_secrets ~} - name: "${ img_pull_secret.name }" %{ endfor ~} +%{ endif } memory: guarantee: ${ singleuser_memory_guarantee } storage: From 905261065d4365ca20f5401d941c232f91cbf9a0 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Wed, 28 Jul 2021 19:22:36 -0300 Subject: [PATCH 27/67] fixing values yaml --- modules/dask-jupyterhub/values.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 49cf44ed..27032e8c 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -17,7 +17,7 @@ jupyterhub: image: name: "jupyterhub/k8s-network-tools" pullPolicy: ${ singleuser_image_pull_policy } -%{ if can(singleuser_image_pull_secrets) } +%{ if length(singleuser_image_pull_secrets) > 0 } pullSecrets: %{ for img_pull_secret in singleuser_image_pull_secrets ~} - name: "${ img_pull_secret.name }" From dd86608c23eb50bb212b31cac9c8cca8dfdd674b Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 29 Jul 2021 09:43:37 -0300 Subject: [PATCH 28/67] testing without image pod definition --- modules/dask-jupyterhub/values.yaml | 14 +++----------- 1 file changed, 3 insertions(+), 11 deletions(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 27032e8c..07ded6ee 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -12,22 +12,14 @@ jupyterhub: kubespawner_override: image: ${ profile.kubespawner_override.image } %{ endfor ~} - extraEnv: - TZ: "Europe/Berlin" - image: - name: "jupyterhub/k8s-network-tools" - pullPolicy: ${ singleuser_image_pull_policy } -%{ if length(singleuser_image_pull_secrets) > 0 } - pullSecrets: -%{ for img_pull_secret in singleuser_image_pull_secrets ~} - - name: "${ img_pull_secret.name }" -%{ endfor ~} -%{ endif } memory: guarantee: ${ singleuser_memory_guarantee } storage: capacity: ${ singleuser_storage_capacity } homeMountPath: ${ singleuser_storage_mount_path } + extraEnv: + TZ: "Europe/Berlin" + dask-gateway: gateway: auth: From 13bf4fed540e9fbcf5205b0d013988e3f869a85f Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 29 Jul 2021 10:59:40 -0300 Subject: [PATCH 29/67] testing values yaml --- modules/dask-jupyterhub/values.yaml | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 07ded6ee..28896849 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -3,6 +3,15 @@ jupyterhub: services: dask-gateway: apiToken: ${ daskgateway_secret } + image: + name: "jupyterhub/k8s-network-tools" + pullPolicy: ${ singleuser_image_pull_policy } +%{ if length(singleuser_image_pull_secrets) > 0 } + pullSecrets: +%{ for img_pull_secret in singleuser_image_pull_secrets ~} + - name: "${ img_pull_secret.name }" +%{ endfor ~} +%{ endif } singleuser: profileList: %{for profile in singleuser_profile_list ~} @@ -20,6 +29,7 @@ jupyterhub: extraEnv: TZ: "Europe/Berlin" + dask-gateway: gateway: auth: From dd4654e2d9a09807ef17e309ba83cf8918afc36d Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 29 Jul 2021 11:35:55 -0300 Subject: [PATCH 30/67] namespace resource matching --- main.tf | 2 +- modules/dask-jupyterhub/main.tf | 2 -- 2 files changed, 1 insertion(+), 3 deletions(-) diff --git a/main.tf b/main.tf index 76dc1741..c1137440 100644 --- a/main.tf +++ b/main.tf @@ -35,9 +35,9 @@ resource "kubernetes_namespace" "daskhub_namespace" { } } - module "dask-jupyterhub" { source = "./modules/dask-jupyterhub" + namespace = kubernetes_namespace.daskhub_namespace.metadata[0].name } resource "kubernetes_namespace" "mlflow_namespace" { diff --git a/modules/dask-jupyterhub/main.tf b/modules/dask-jupyterhub/main.tf index 0b11a857..b06b931e 100644 --- a/modules/dask-jupyterhub/main.tf +++ b/modules/dask-jupyterhub/main.tf @@ -1,7 +1,5 @@ resource "helm_release" "dask-jupyterhub" { name = "daskhub" - namespace = "daskhub" - repository = "https://helm.dask.org" chart = "daskhub" version = "2021.7.2" From bd59c8d71c8cc43e257bd7bc5b7ea7cc0ba518c4 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 29 Jul 2021 11:44:02 -0300 Subject: [PATCH 31/67] more values configuration --- modules/dask-jupyterhub/main.tf | 4 ++++ modules/dask-jupyterhub/values.yaml | 1 + modules/dask-jupyterhub/variables.tf | 5 +++++ 3 files changed, 10 insertions(+) diff --git a/modules/dask-jupyterhub/main.tf b/modules/dask-jupyterhub/main.tf index b06b931e..52aabd17 100644 --- a/modules/dask-jupyterhub/main.tf +++ b/modules/dask-jupyterhub/main.tf @@ -4,6 +4,9 @@ resource "helm_release" "dask-jupyterhub" { chart = "daskhub" version = "2021.7.2" + // It takes some time to pull all the necessary images. + timeout = 15 * 60 + values = [templatefile("${path.module}/values.yaml", { jupyterhub_secret = var.jupyterhub_secret daskgateway_secret = var.daskgateway_secret @@ -13,5 +16,6 @@ resource "helm_release" "dask-jupyterhub" { singleuser_memory_guarantee = var.singleuser_memory_guarantee singleuser_storage_capacity = var.singleuser_storage_capacity singleuser_storage_mount_path = var.singleuser_storage_mount_path + hub_allow_named_servers = var.hub_allow_named_servers })] } \ No newline at end of file diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 28896849..03c58886 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -12,6 +12,7 @@ jupyterhub: - name: "${ img_pull_secret.name }" %{ endfor ~} %{ endif } + allowNamedServers: ${ hub_allow_named_servers } singleuser: profileList: %{for profile in singleuser_profile_list ~} diff --git a/modules/dask-jupyterhub/variables.tf b/modules/dask-jupyterhub/variables.tf index 770f0677..10e03224 100644 --- a/modules/dask-jupyterhub/variables.tf +++ b/modules/dask-jupyterhub/variables.tf @@ -69,4 +69,9 @@ variable "singleuser_storage_capacity" { variable "singleuser_storage_mount_path" { default = "/home/jovyan/persistent" +} + +variable "hub_allow_named_servers" { + description = "Configures if a user can spawn multiple servers" + default = false } \ No newline at end of file From f62a94280b8a903b1b29e2552b2882bc83cdd2df Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 29 Jul 2021 11:48:20 -0300 Subject: [PATCH 32/67] add namespace var to daskhub --- modules/dask-jupyterhub/main.tf | 2 ++ modules/dask-jupyterhub/variables.tf | 4 ++++ 2 files changed, 6 insertions(+) diff --git a/modules/dask-jupyterhub/main.tf b/modules/dask-jupyterhub/main.tf index 52aabd17..c4728a80 100644 --- a/modules/dask-jupyterhub/main.tf +++ b/modules/dask-jupyterhub/main.tf @@ -1,5 +1,7 @@ resource "helm_release" "dask-jupyterhub" { name = "daskhub" + namespace = var.namespace + repository = "https://helm.dask.org" chart = "daskhub" version = "2021.7.2" diff --git a/modules/dask-jupyterhub/variables.tf b/modules/dask-jupyterhub/variables.tf index 10e03224..a971c5e7 100644 --- a/modules/dask-jupyterhub/variables.tf +++ b/modules/dask-jupyterhub/variables.tf @@ -1,3 +1,7 @@ +variable "namespace" { + description = "Namespace name to deploy the application" + default = "default" +} variable "jupyterhub_secret" { type = string From 1988abfc13989b9daffa966b74fd0fb58476fd4e Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 29 Jul 2021 17:11:20 -0300 Subject: [PATCH 33/67] testing values.yaml --- modules/dask-jupyterhub/values.yaml | 9 --------- 1 file changed, 9 deletions(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 03c58886..a6903caf 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -3,15 +3,6 @@ jupyterhub: services: dask-gateway: apiToken: ${ daskgateway_secret } - image: - name: "jupyterhub/k8s-network-tools" - pullPolicy: ${ singleuser_image_pull_policy } -%{ if length(singleuser_image_pull_secrets) > 0 } - pullSecrets: -%{ for img_pull_secret in singleuser_image_pull_secrets ~} - - name: "${ img_pull_secret.name }" -%{ endfor ~} -%{ endif } allowNamedServers: ${ hub_allow_named_servers } singleuser: profileList: From 53c82f9e7adb38e68b0b5fff44956f9c91a39abd Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 29 Jul 2021 17:15:29 -0300 Subject: [PATCH 34/67] starting over --- modules/dask-jupyterhub/values.yaml | 18 ------------------ 1 file changed, 18 deletions(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index a6903caf..6d7b5846 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -3,24 +3,6 @@ jupyterhub: services: dask-gateway: apiToken: ${ daskgateway_secret } - allowNamedServers: ${ hub_allow_named_servers } - singleuser: - profileList: -%{for profile in singleuser_profile_list ~} - - display_name: ${ profile.display_name } - description: "${ profile.description }" - default: ${ profile.default } - kubespawner_override: - image: ${ profile.kubespawner_override.image } -%{ endfor ~} - memory: - guarantee: ${ singleuser_memory_guarantee } - storage: - capacity: ${ singleuser_storage_capacity } - homeMountPath: ${ singleuser_storage_mount_path } - extraEnv: - TZ: "Europe/Berlin" - dask-gateway: gateway: From c27e76c395e65374c03fff9408cec00792813ff5 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 29 Jul 2021 17:28:24 -0300 Subject: [PATCH 35/67] adding configs to yaml --- modules/dask-jupyterhub/values.yaml | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 6d7b5846..0ea7aa18 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -3,6 +3,23 @@ jupyterhub: services: dask-gateway: apiToken: ${ daskgateway_secret } + allowNamedServers: ${ hub_allow_named_servers } + singleuser: + profileList: + %{for profile in singleuser_profile_list ~} + - display_name: ${ profile.display_name } + description: "${ profile.description }" + default: ${ profile.default } + kubespawner_override: + image: ${ profile.kubespawner_override.image } + %{ endfor ~} + memory: + guarantee: ${ singleuser_memory_guarantee } + storage: + capacity: ${ singleuser_storage_capacity } + homeMountPath: ${ singleuser_storage_mount_path } + extraEnv: + TZ: "Europe/Berlin" dask-gateway: gateway: From 2ce50945d2f6a471bd2f82691d38752ad9b3de0a Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 29 Jul 2021 17:41:42 -0300 Subject: [PATCH 36/67] fix values interpolation --- modules/dask-jupyterhub/values.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 0ea7aa18..bdf0e5bb 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -6,13 +6,13 @@ jupyterhub: allowNamedServers: ${ hub_allow_named_servers } singleuser: profileList: - %{for profile in singleuser_profile_list ~} +%{for profile in singleuser_profile_list ~} - display_name: ${ profile.display_name } description: "${ profile.description }" default: ${ profile.default } kubespawner_override: image: ${ profile.kubespawner_override.image } - %{ endfor ~} +%{ endfor ~} memory: guarantee: ${ singleuser_memory_guarantee } storage: From 5e1ab45bb78581847385030aba0d1deb424ab405 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 29 Jul 2021 17:51:39 -0300 Subject: [PATCH 37/67] identation fix --- modules/dask-jupyterhub/values.yaml | 12 ++++++------ 1 file changed, 6 insertions(+), 6 deletions(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index bdf0e5bb..0f8f499a 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -6,13 +6,13 @@ jupyterhub: allowNamedServers: ${ hub_allow_named_servers } singleuser: profileList: -%{for profile in singleuser_profile_list ~} + %{for profile in singleuser_profile_list ~} - display_name: ${ profile.display_name } - description: "${ profile.description }" - default: ${ profile.default } - kubespawner_override: - image: ${ profile.kubespawner_override.image } -%{ endfor ~} + description: "${ profile.description }" + default: ${ profile.default } + kubespawner_override: + image: ${ profile.kubespawner_override.image } + %{ endfor ~} memory: guarantee: ${ singleuser_memory_guarantee } storage: From de1e9df69338256be049de00ebc4b336f3da6d3e Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 29 Jul 2021 18:02:19 -0300 Subject: [PATCH 38/67] identation fix 2 --- modules/dask-jupyterhub/values.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 0f8f499a..ae030d23 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -6,13 +6,13 @@ jupyterhub: allowNamedServers: ${ hub_allow_named_servers } singleuser: profileList: - %{for profile in singleuser_profile_list ~} +%{for profile in singleuser_profile_list ~} - display_name: ${ profile.display_name } description: "${ profile.description }" default: ${ profile.default } kubespawner_override: image: ${ profile.kubespawner_override.image } - %{ endfor ~} +%{ endfor ~} memory: guarantee: ${ singleuser_memory_guarantee } storage: From 0908bc799ea58b586820ca270faa9e1dbd0b3093 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 29 Jul 2021 18:24:38 -0300 Subject: [PATCH 39/67] enabling dask kubernetes instead of dask gateway --- modules/dask-jupyterhub/values.yaml | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index ae030d23..123c5e45 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -5,6 +5,7 @@ jupyterhub: apiToken: ${ daskgateway_secret } allowNamedServers: ${ hub_allow_named_servers } singleuser: + serviceAccountName: daskkubernetes profileList: %{for profile in singleuser_profile_list ~} - display_name: ${ profile.display_name } @@ -22,7 +23,7 @@ jupyterhub: TZ: "Europe/Berlin" dask-gateway: - gateway: - auth: - jupyterhub: - apiToken: ${ jupyterhub_secret } \ No newline at end of file + enabled: false + +dask-kubernetes: + enabled: true \ No newline at end of file From 511e180c685b0e1d71f42f0398d3a8590cb5f08e Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 29 Jul 2021 18:47:13 -0300 Subject: [PATCH 40/67] dask deployment changes --- modules/dask/main.tf | 76 +++++---------------------- modules/dask/values.yaml | 107 +++++---------------------------------- 2 files changed, 26 insertions(+), 157 deletions(-) diff --git a/modules/dask/main.tf b/modules/dask/main.tf index c2a04e1f..c4ffe852 100644 --- a/modules/dask/main.tf +++ b/modules/dask/main.tf @@ -7,67 +7,17 @@ resource "helm_release" "dask" { chart = "dask" version = "2021.7.0" - set { - name = "worker.name" - value = var.worker_name - } - - set { - name = "worker.replicas" - value = var.worker_replicas - } - - set { - name = "worker.image.repository" - value = var.worker_image_repository - } - - set { - name = "worker.image.tag" - value = var.worker_image_tag - } - - set { - name = "worker.image.pullPolicy" - value = var.worker_image_pull_policy - } - - set { - name = "worker.image.dask_worker" - value = var.worker_image_dask_worker_command - } - - set { - name = "scheduler.image.repository" - value = var.scheduler_image_repository - } - - set { - name = "scheduler.image.tag" - value = var.scheduler_image_tag - } - - set { - name = "scheduler.image.pullPolicy" - value = var.scheduler_image_pull_policy - } - - - values = [ - yamlencode({ - "worker" = { - "env" = var.worker_environment_variables - } - }), - yamlencode({ - "worker" = { - "image" = { - "pullSecrets" = var.worker_image_pull_secret - } - } - }) - ] - - - + values = [templatefile("${path.module}/values.yaml", { + worker_name = var.worker_name + worker_replicas = var.worker_replicas + worker_environment_variables = var.worker_environment_variables + worker_image_repository = var.worker_image_repository + worker_image_tag = var.worker_image_tag + worker_image_pull_policy = var.worker_image_pull_policy + worker_image_pull_secret = var.worker_image_pull_secret + worker_image_dask_worker_command = var.worker_image_dask_worker_command + scheduler_image_repository = var.scheduler_image_repository + scheduler_image_tag = var.scheduler_image_tag + scheduler_image_pull_policy = var.scheduler_image_pull_policy + })] } \ No newline at end of file diff --git a/modules/dask/values.yaml b/modules/dask/values.yaml index 4146709d..08f91bbb 100644 --- a/modules/dask/values.yaml +++ b/modules/dask/values.yaml @@ -1,97 +1,16 @@ ---- -# nameOverride: dask -# fullnameOverride: dask - -scheduler: - name: scheduler # Dask scheduler name. +worker: + name: ${ worker_name } + replicas: ${ worker_replicas } + env: ${ worker_environment_variables } image: - repository: "daskdev/dask" # Container image repository. - tag: 2021.7.0 # Container image tag. - pullPolicy: IfNotPresent # Container image pull policy. - pullSecrets: # Container image [pull secrets](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/). - # - name: regcred - replicas: 1 # Number of schedulers (should always be 1). - serviceType: "ClusterIP" # Scheduler service type. Set to `LoadBalancer` to expose outside of your cluster. - # serviceType: "NodePort" - # serviceType: "LoadBalancer" - loadBalancerIP: null # Some cloud providers allow you to specify the loadBalancerIP when using the `LoadBalancer` service type. If your cloud does not support it this option will be ignored. - servicePort: 8786 # Scheduler service internal port. - serviceAnnotations: {} # Scheduler service annotations. - extraArgs: [] # Extra CLI arguments to be passed to the scheduler - # - --preload - # - scheduler-setup.py - resources: {} # Scheduler pod resources. See `values.yaml` for example values. - # limits: - # cpu: 1.8 - # memory: 6G - # requests: - # cpu: 1.8 - # memory: 6G - tolerations: [] # Tolerations. - affinity: {} # Container affinity. - nodeSelector: {} # Node Selector. - securityContext: {} # Security Context. - # serviceAccountName: "" + repository: ${ worker_image_repository } + tag: ${ worker_image_tag } + pullPolicy: ${ worker_image_pull_policy } + pullSecrets: ${ worker_image_pull_secret } + dask_worker: $ { worker_image_dask_worker_command } -webUI: - name: webui # Dask webui name. - servicePort: 80 # webui service internal port. - ingress: - enabled: false # Enable ingress. - tls: false # Ingress should use TLS. - # secretName: dask-scheduler-tls - hostname: dask-ui.example.com # Ingress hostname. - annotations: # Ingress annotations. See `values.yaml` for example values. - # kubernetes.io/ingress.class: "nginx" - # secretName: my-tls-cert - # kubernetes.io/tls-acme: "true" - -worker: - name: worker # Dask worker name. +scheduler: image: - repository: "daskdev/dask" # Container image repository. - tag: 2021.7.0 # Container image tag. - pullPolicy: IfNotPresent # Container image pull policy. - dask_worker: "dask-worker" # Dask worker command. E.g `dask-cuda-worker` for GPU worker. - pullSecrets: # Container image [pull secrets](https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/). - # - name: regcred - replicas: 3 # Number of workers. - default_resources: # overwritten by resource limits if they exist - cpu: 1 # Default CPU (DEPRECATED use `resources`). - memory: "4GiB" # Default memory (DEPRECATED use `resources`). - env: # Environment variables. See `values.yaml` for example values. - # - name: EXTRA_APT_PACKAGES - # value: build-essential openssl - - name: EXTRA_CONDA_PACKAGES - value: python==3.7 -c conda-forge - - name: EXTRA_PIP_PACKAGES - value: prefect==0.14.1 --upgrade - extraArgs: [] # Extra CLI arguments to be passed to the worker - # - --preload - # - worker-setup.py - resources: {} # Worker pod resources. See `values.yaml` for example values. - # limits: - # cpu: 1 - # memory: 3G - # nvidia.com/gpu: 1 - # requests: - # cpu: 1 - # memory: 3G - # nvidia.com/gpu: 1 - mounts: {} # Worker Pod volumes and volume mounts, mounts.volumes follows kuberentes api v1 Volumes spec. mounts.volumeMounts follows kubernetesapi v1 VolumeMount spec - # volumes: - # - name: data - # emptyDir: {} - # volumeMounts: - # - name: data - # mountPath: /data - annotations: {} # Annotations - tolerations: [] # Tolerations. - affinity: {} # Container affinity. - nodeSelector: {} # Node Selector. - securityContext: {} # Security Context. - # serviceAccountName: "" - # port: "" - # this option overrides "--nthreads" on workers, which defaults to resources.limits.cpu / default_resources.limits.cpu - # use it if you need to limit the amount of threads used by multicore workers, or to make workers with non-whole-number cpu limits - # threads_per_worker: 1 \ No newline at end of file + repository: ${ scheduler_image_repository } + tag: ${ scheduler_image_tag } + pullPolicy: ${ scheduler_image_pull_policy } \ No newline at end of file From a1c33c1b0a7394b64feca63c2b225ee3f54c2f6d Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 29 Jul 2021 18:57:30 -0300 Subject: [PATCH 41/67] dask deployment changes fix --- modules/dask-jupyterhub/values.yaml | 52 ++++++++++++++--------------- 1 file changed, 25 insertions(+), 27 deletions(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 123c5e45..1163a5b2 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -1,29 +1,27 @@ -jupyterhub: - hub: - services: - dask-gateway: - apiToken: ${ daskgateway_secret } - allowNamedServers: ${ hub_allow_named_servers } - singleuser: - serviceAccountName: daskkubernetes - profileList: -%{for profile in singleuser_profile_list ~} - - display_name: ${ profile.display_name } - description: "${ profile.description }" - default: ${ profile.default } - kubespawner_override: - image: ${ profile.kubespawner_override.image } -%{ endfor ~} - memory: - guarantee: ${ singleuser_memory_guarantee } - storage: - capacity: ${ singleuser_storage_capacity } - homeMountPath: ${ singleuser_storage_mount_path } - extraEnv: - TZ: "Europe/Berlin" +daskhub: + jupyterhub: + hub: + allowNamedServers: ${ hub_allow_named_servers } + singleuser: + serviceAccountName: daskkubernetes + profileList: + %{for profile in singleuser_profile_list ~} + - display_name: ${ profile.display_name } + description: "${ profile.description }" + default: ${ profile.default } + kubespawner_override: + image: ${ profile.kubespawner_override.image } + %{ endfor ~} + memory: + guarantee: ${ singleuser_memory_guarantee } + storage: + capacity: ${ singleuser_storage_capacity } + homeMountPath: ${ singleuser_storage_mount_path } + extraEnv: + TZ: "Europe/Berlin" -dask-gateway: - enabled: false + dask-gateway: + enabled: false -dask-kubernetes: - enabled: true \ No newline at end of file + dask-kubernetes: + enabled: true \ No newline at end of file From 81d90d1e50ab9652566854c9f40fd305a752f5fc Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 29 Jul 2021 19:03:27 -0300 Subject: [PATCH 42/67] identation --- modules/dask-jupyterhub/values.yaml | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 1163a5b2..e2786fec 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -5,13 +5,13 @@ daskhub: singleuser: serviceAccountName: daskkubernetes profileList: - %{for profile in singleuser_profile_list ~} +%{for profile in singleuser_profile_list ~} - display_name: ${ profile.display_name } description: "${ profile.description }" default: ${ profile.default } kubespawner_override: image: ${ profile.kubespawner_override.image } - %{ endfor ~} +%{ endfor ~} memory: guarantee: ${ singleuser_memory_guarantee } storage: From 6999d3049e690200f5ef3e57196bc39209b10364 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 29 Jul 2021 19:09:40 -0300 Subject: [PATCH 43/67] gateway token --- modules/dask-jupyterhub/values.yaml | 4 ++++ modules/dask/main.tf | 1 + 2 files changed, 5 insertions(+) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index e2786fec..67c639e7 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -22,6 +22,10 @@ daskhub: dask-gateway: enabled: false + gateway: + auth: + jupyterhub: + apiToken: ${ jupyterhub_secret } dask-kubernetes: enabled: true \ No newline at end of file diff --git a/modules/dask/main.tf b/modules/dask/main.tf index c4ffe852..410f1313 100644 --- a/modules/dask/main.tf +++ b/modules/dask/main.tf @@ -19,5 +19,6 @@ resource "helm_release" "dask" { scheduler_image_repository = var.scheduler_image_repository scheduler_image_tag = var.scheduler_image_tag scheduler_image_pull_policy = var.scheduler_image_pull_policy + jupyterhub_secret = var.jupyterhub_secret })] } \ No newline at end of file From c6335b201287e4cf57f0e082f4d510c5b96eacd5 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 29 Jul 2021 19:12:19 -0300 Subject: [PATCH 44/67] remove daskhub top level key --- modules/dask-jupyterhub/values.yaml | 53 ++++++++++++++--------------- 1 file changed, 26 insertions(+), 27 deletions(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 67c639e7..fa822f57 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -1,31 +1,30 @@ -daskhub: - jupyterhub: - hub: - allowNamedServers: ${ hub_allow_named_servers } - singleuser: - serviceAccountName: daskkubernetes - profileList: +jupyterhub: + hub: + allowNamedServers: ${ hub_allow_named_servers } + singleuser: + serviceAccountName: daskkubernetes + profileList: %{for profile in singleuser_profile_list ~} - - display_name: ${ profile.display_name } - description: "${ profile.description }" - default: ${ profile.default } - kubespawner_override: - image: ${ profile.kubespawner_override.image } + - display_name: ${ profile.display_name } + description: "${ profile.description }" + default: ${ profile.default } + kubespawner_override: + image: ${ profile.kubespawner_override.image } %{ endfor ~} - memory: - guarantee: ${ singleuser_memory_guarantee } - storage: - capacity: ${ singleuser_storage_capacity } - homeMountPath: ${ singleuser_storage_mount_path } - extraEnv: - TZ: "Europe/Berlin" + memory: + guarantee: ${ singleuser_memory_guarantee } + storage: + capacity: ${ singleuser_storage_capacity } + homeMountPath: ${ singleuser_storage_mount_path } + extraEnv: + TZ: "Europe/Berlin" - dask-gateway: - enabled: false - gateway: - auth: - jupyterhub: - apiToken: ${ jupyterhub_secret } +dask-gateway: + enabled: false + gateway: + auth: + jupyterhub: + apiToken: ${ jupyterhub_secret } - dask-kubernetes: - enabled: true \ No newline at end of file +dask-kubernetes: + enabled: true \ No newline at end of file From 4f70d1b553f1d8dadf2faf88b31c314eaa276389 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 29 Jul 2021 19:18:27 -0300 Subject: [PATCH 45/67] dask module settings --- main.tf | 74 ++++++++++++++++----------------------------------------- 1 file changed, 21 insertions(+), 53 deletions(-) diff --git a/main.tf b/main.tf index c1137440..adcb0c8b 100644 --- a/main.tf +++ b/main.tf @@ -1,34 +1,3 @@ -//resource "kubernetes_namespace" "jupyterhub_namespace" { -// metadata { -// name = var.jupyterhub_namespace -// } -//} - -//module "jupyterhub" { -// count = var.install_jupyterhub ? 1 : 0 -// source = "./modules/jupyterhub" -// namespace = kubernetes_namespace.jupyterhub_namespace.metadata[0].name -// -// # Proxy settings -// proxy_secret_token = var.jhub_proxy_secret_token -// proxy_https_enabled = var.jhub_proxy_https_enabled -// proxy_https_hosts = var.jhub_proxy_https_hosts -// proxy_https_letsencrypt_contact_email = var.jhub_proxy_https_letsencrypt_contact_email -// proxy_service_type = var.jhub_proxy_service_type -// -// # Authentication settings -// # Following values should be `null` if oauth_github is disabled. However we need to pass submodule's defaults here -// # explicitly because of this Terraform bug: https://github.com/hashicorp/terraform/issues/21702 -// authentication_type = var.oauth_github_enable ? "github" : "dummy" -// authentication_config = merge( -// local.jhub_auth_config, -// {JupyterHub = {authenticator_class = var.oauth_github_enable ? "github" : "dummy"}} -// ) -// -// # Profile list configuration -// singleuser_profile_list = var.singleuser_profile_list -//} - resource "kubernetes_namespace" "daskhub_namespace" { metadata { name = "daskhub" @@ -92,29 +61,28 @@ module "prefect-server" { } -//resource "kubernetes_namespace" "dask_namespace" { -// metadata { -// name = var.dask_namespace -// } -//} - -//module "dask" { - -// source = "./modules/dask" -// namespace = kubernetes_namespace.dask_namespace.metadata[0].name +resource "kubernetes_namespace" "dask_namespace" { + metadata { + name = var.dask_namespace + } +} -// worker_image_pull_secret = [ -// { -// name = "regcred" -// } -// ] -// worker_environment_variables = [ -// { -// name = "EXTRA_PIP_PACKAGES" -// value = "prefect==0.14.1 --upgrade" -// } -// ] -//} +module "dask" { + source = "./modules/dask" + namespace = kubernetes_namespace.dask_namespace.metadata[0].name + + worker_image_pull_secret = [ + { + name = "regcred" + } + ] + worker_environment_variables = [ + { + name = "EXTRA_PIP_PACKAGES" + value = "prefect==0.14.1 --upgrade" + } + ] +} resource "kubernetes_namespace" "feast_namespace" { From b0080d7ff38c51ea2e3fa2e8dc9ee6cd459ec3e3 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 29 Jul 2021 19:21:54 -0300 Subject: [PATCH 46/67] remove wrong variable --- modules/dask/main.tf | 1 - 1 file changed, 1 deletion(-) diff --git a/modules/dask/main.tf b/modules/dask/main.tf index 410f1313..c4ffe852 100644 --- a/modules/dask/main.tf +++ b/modules/dask/main.tf @@ -19,6 +19,5 @@ resource "helm_release" "dask" { scheduler_image_repository = var.scheduler_image_repository scheduler_image_tag = var.scheduler_image_tag scheduler_image_pull_policy = var.scheduler_image_pull_policy - jupyterhub_secret = var.jupyterhub_secret })] } \ No newline at end of file From 56b5e81ca450b95ae3692bc7cd4bb3f1df984d40 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 29 Jul 2021 19:28:43 -0300 Subject: [PATCH 47/67] treating obj types correctly --- modules/dask/values.yaml | 15 +++++++++++++-- 1 file changed, 13 insertions(+), 2 deletions(-) diff --git a/modules/dask/values.yaml b/modules/dask/values.yaml index 08f91bbb..385da507 100644 --- a/modules/dask/values.yaml +++ b/modules/dask/values.yaml @@ -1,12 +1,23 @@ worker: name: ${ worker_name } replicas: ${ worker_replicas } - env: ${ worker_environment_variables } +%{ if length(worker_environment_variables) > 0 } + env: +%{ for env in worker_environment_variables ~} + - name: ${ env.name } + value: ${ env.value } +%{ endfor ~} +%{ endif } image: repository: ${ worker_image_repository } tag: ${ worker_image_tag } pullPolicy: ${ worker_image_pull_policy } - pullSecrets: ${ worker_image_pull_secret } +%{ if length(worker_image_pull_secret) > 0 } + pullSecrets: +%{ for env in worker_image_pull_secret ~} + - name: ${ env.name } +%{ endfor ~} +%{ endif } dask_worker: $ { worker_image_dask_worker_command } scheduler: From c11f56d15e35babe98f8cdc03379b3e6deb1b160 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 29 Jul 2021 19:35:42 -0300 Subject: [PATCH 48/67] remove wrong space char --- modules/dask/values.yaml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/modules/dask/values.yaml b/modules/dask/values.yaml index 385da507..7760e9d2 100644 --- a/modules/dask/values.yaml +++ b/modules/dask/values.yaml @@ -18,7 +18,7 @@ worker: - name: ${ env.name } %{ endfor ~} %{ endif } - dask_worker: $ { worker_image_dask_worker_command } + dask_worker: ${ worker_image_dask_worker_command } scheduler: image: From b26aa1743086d148de0c5864dd7d82fe7dd5af1a Mon Sep 17 00:00:00 2001 From: bernardolk Date: Fri, 30 Jul 2021 10:25:16 -0300 Subject: [PATCH 49/67] use dask gateway --- modules/dask-jupyterhub/values.yaml | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index fa822f57..cdc1f58c 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -20,11 +20,7 @@ jupyterhub: TZ: "Europe/Berlin" dask-gateway: - enabled: false gateway: auth: jupyterhub: - apiToken: ${ jupyterhub_secret } - -dask-kubernetes: - enabled: true \ No newline at end of file + apiToken: ${ jupyterhub_secret } \ No newline at end of file From 2d874f6ba76873079d4f99963cb0a2634157d4d0 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Fri, 30 Jul 2021 12:48:16 -0300 Subject: [PATCH 50/67] remove dask gateway --- modules/dask-jupyterhub/values.yaml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index cdc1f58c..571eccca 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -20,7 +20,7 @@ jupyterhub: TZ: "Europe/Berlin" dask-gateway: - gateway: - auth: - jupyterhub: - apiToken: ${ jupyterhub_secret } \ No newline at end of file + enabled: false + +dask-kubernetes: + enabled: true \ No newline at end of file From 07c5c24ab5fc03820c17a1b975cd1a489be1d39f Mon Sep 17 00:00:00 2001 From: bernardolk Date: Fri, 30 Jul 2021 13:02:24 -0300 Subject: [PATCH 51/67] trying to workaround dask gateway --- modules/dask-jupyterhub/values.yaml | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 571eccca..6edabce1 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -21,6 +21,10 @@ jupyterhub: dask-gateway: enabled: false + gateway: + auth: + type: null + dask-kubernetes: enabled: true \ No newline at end of file From 86c1f4b306d2a57f288e2cd7f6bd0f4f3aaded6f Mon Sep 17 00:00:00 2001 From: bernardolk Date: Fri, 30 Jul 2021 15:22:24 -0300 Subject: [PATCH 52/67] dask worker definition --- modules/dask-jupyterhub/worker.yaml | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) create mode 100644 modules/dask-jupyterhub/worker.yaml diff --git a/modules/dask-jupyterhub/worker.yaml b/modules/dask-jupyterhub/worker.yaml new file mode 100644 index 00000000..6624f8fd --- /dev/null +++ b/modules/dask-jupyterhub/worker.yaml @@ -0,0 +1,18 @@ +kind: Pod +spec: + restartPolicy: Never + containers: + - image: daskdev/dask:2021.3.1 + imagePullPolicy: IfNotPresent + args: [dask-worker, --nthreads, '2', --no-dashboard, --memory-limit, 6GB, --death-timeout, '60'] + name: dask + env: + - name: EXTRA_PIP_PACKAGES + value: git+https://github.com/dask/distributed + resources: + limits: + cpu: "2" + memory: 6G + requests: + cpu: "2" + memory: 6G \ No newline at end of file From b8748bc2889893eb86dafb749905ae0600716ac1 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Fri, 30 Jul 2021 15:23:42 -0300 Subject: [PATCH 53/67] notebook image --- modules/dask-jupyterhub/variables.tf | 12 ++---------- 1 file changed, 2 insertions(+), 10 deletions(-) diff --git a/modules/dask-jupyterhub/variables.tf b/modules/dask-jupyterhub/variables.tf index a971c5e7..57f550e6 100644 --- a/modules/dask-jupyterhub/variables.tf +++ b/modules/dask-jupyterhub/variables.tf @@ -46,18 +46,10 @@ variable "singleuser_profile_list" { default = [ { display_name = "OpenMLOps client environment" - description = "Notebook with OpenMLOps required client libraries installed.
Image: drtools/openmlops-notebook:v1.2" + description = "Notebook with OpenMLOps required client libraries installed.
Image: drtools/openmlops-notebook:v1.3" default = true kubespawner_override = { - image = "drtools/openmlops-notebook:v1.2" - } - }, - { - display_name = "Data Science environment" - description = "Default data science environment" - default = false - kubespawner_override = { - image = "jupyter/datascience-notebook:2343e33dec46" + image = "drtools/openmlops-notebook:v1.3" } } ] From 8edfb092b821743c2b5c61efd72990ec73a99c83 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Fri, 30 Jul 2021 15:56:58 -0300 Subject: [PATCH 54/67] image tag --- modules/dask-jupyterhub/variables.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/dask-jupyterhub/variables.tf b/modules/dask-jupyterhub/variables.tf index 57f550e6..71d9f9fd 100644 --- a/modules/dask-jupyterhub/variables.tf +++ b/modules/dask-jupyterhub/variables.tf @@ -46,10 +46,10 @@ variable "singleuser_profile_list" { default = [ { display_name = "OpenMLOps client environment" - description = "Notebook with OpenMLOps required client libraries installed.
Image: drtools/openmlops-notebook:v1.3" + description = "Notebook with OpenMLOps required client libraries installed.
Image: drtools/openmlops-notebook:v1.2" default = true kubespawner_override = { - image = "drtools/openmlops-notebook:v1.3" + image = "drtools/openmlops-notebook:v1.2" } } ] From a5d96801f199be6218a158be4a34defd3a565d4a Mon Sep 17 00:00:00 2001 From: bernardolk Date: Fri, 30 Jul 2021 16:09:13 -0300 Subject: [PATCH 55/67] trying again --- modules/dask-jupyterhub/variables.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/dask-jupyterhub/variables.tf b/modules/dask-jupyterhub/variables.tf index 71d9f9fd..57f550e6 100644 --- a/modules/dask-jupyterhub/variables.tf +++ b/modules/dask-jupyterhub/variables.tf @@ -46,10 +46,10 @@ variable "singleuser_profile_list" { default = [ { display_name = "OpenMLOps client environment" - description = "Notebook with OpenMLOps required client libraries installed.
Image: drtools/openmlops-notebook:v1.2" + description = "Notebook with OpenMLOps required client libraries installed.
Image: drtools/openmlops-notebook:v1.3" default = true kubespawner_override = { - image = "drtools/openmlops-notebook:v1.2" + image = "drtools/openmlops-notebook:v1.3" } } ] From 8abae3e48ddc7f3f6acff1455dab5420efda1757 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Fri, 30 Jul 2021 16:20:54 -0300 Subject: [PATCH 56/67] setting image to singleuser --- modules/dask-jupyterhub/values.yaml | 3 +++ modules/dask-jupyterhub/variables.tf | 9 +-------- 2 files changed, 4 insertions(+), 8 deletions(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 6edabce1..8bea4c71 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -3,6 +3,9 @@ jupyterhub: allowNamedServers: ${ hub_allow_named_servers } singleuser: serviceAccountName: daskkubernetes + image: + name: "drtools/openmlops-notebook" + tag: "v1.3" profileList: %{for profile in singleuser_profile_list ~} - display_name: ${ profile.display_name } diff --git a/modules/dask-jupyterhub/variables.tf b/modules/dask-jupyterhub/variables.tf index 57f550e6..d3941e98 100644 --- a/modules/dask-jupyterhub/variables.tf +++ b/modules/dask-jupyterhub/variables.tf @@ -44,14 +44,7 @@ variable "singleuser_profile_list" { })) default = [ - { - display_name = "OpenMLOps client environment" - description = "Notebook with OpenMLOps required client libraries installed.
Image: drtools/openmlops-notebook:v1.3" - default = true - kubespawner_override = { - image = "drtools/openmlops-notebook:v1.3" - } - } + ] } From 6c413d2ccb2be425a68040348f502d6bc3a414fb Mon Sep 17 00:00:00 2001 From: bernardolk Date: Fri, 30 Jul 2021 16:40:22 -0300 Subject: [PATCH 57/67] testing another image --- modules/dask-jupyterhub/values.yaml | 3 --- modules/dask-jupyterhub/variables.tf | 11 ++++++++--- 2 files changed, 8 insertions(+), 6 deletions(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 8bea4c71..6edabce1 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -3,9 +3,6 @@ jupyterhub: allowNamedServers: ${ hub_allow_named_servers } singleuser: serviceAccountName: daskkubernetes - image: - name: "drtools/openmlops-notebook" - tag: "v1.3" profileList: %{for profile in singleuser_profile_list ~} - display_name: ${ profile.display_name } diff --git a/modules/dask-jupyterhub/variables.tf b/modules/dask-jupyterhub/variables.tf index d3941e98..faac22d5 100644 --- a/modules/dask-jupyterhub/variables.tf +++ b/modules/dask-jupyterhub/variables.tf @@ -43,9 +43,14 @@ variable "singleuser_profile_list" { }) })) - default = [ - - ] + default = [{ + display_name = "OpenMLOps client environment" + description = "Notebook with OpenMLOps required client libraries installed.
Image: drtools/openmlops-notebook:v1.3.1" + default = true + kubespawner_override = { + image = "drtools/openmlops-notebook:v1.3.1" + } + }] } variable "singleuser_memory_guarantee" { From c462187e714458dd5f1d70dec26b0590743f3410 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Tue, 3 Aug 2021 11:55:55 -0300 Subject: [PATCH 58/67] notebook image version --- modules/dask-jupyterhub/variables.tf | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/modules/dask-jupyterhub/variables.tf b/modules/dask-jupyterhub/variables.tf index faac22d5..c19c58df 100644 --- a/modules/dask-jupyterhub/variables.tf +++ b/modules/dask-jupyterhub/variables.tf @@ -45,10 +45,10 @@ variable "singleuser_profile_list" { default = [{ display_name = "OpenMLOps client environment" - description = "Notebook with OpenMLOps required client libraries installed.
Image: drtools/openmlops-notebook:v1.3.1" + description = "Notebook with OpenMLOps required client libraries installed.
Image: drtools/openmlops-notebook:v1.4" default = true kubespawner_override = { - image = "drtools/openmlops-notebook:v1.3.1" + image = "drtools/openmlops-notebook:v1.4" } }] } From 28bc31c34be1d5e5e991445a07d0954cf96c0043 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 5 Aug 2021 10:01:54 -0300 Subject: [PATCH 59/67] daskhub service account, role and role binding --- main.tf | 55 +++++++++++++++++++++++++++++ modules/dask-jupyterhub/worker.yaml | 8 ++--- 2 files changed, 59 insertions(+), 4 deletions(-) diff --git a/main.tf b/main.tf index 6b630b49..1421b13d 100644 --- a/main.tf +++ b/main.tf @@ -9,6 +9,61 @@ module "dask-jupyterhub" { namespace = kubernetes_namespace.daskhub_namespace.metadata[0].name } +resource "kubernetes_service_account" "daskhub-sa" { + metadata { + name = "daskhub-sa" + namespace = kubernetes_namespace.daskhub_namespace.metadata[0].name + } +} + +resource "kubernetes_role" "daskhub-role" { + metadata { + name = "daskhub-role" + namespace = kubernetes_namespace.daskhub_namespace.metadata[0].name + } + + rule { + api_groups = [""] + resources = ["pods"] + verbs = ["get", "list", "watch", "create", "delete"] + } + + rule { + api_groups = [""] + resources = ["pods/logs"] + verbs = ["get", "list"] + } + + rule { + api_groups = [""] + resources = ["services"] + verbs = ["get", "list", "watch", "create", "delete"] + } + + rule { + api_groups = ["policy"] + resources = ["poddisruptionbudgets"] + verbs = ["get", "list", "watch", "create", "delete"] + } +} + +resource "kubernetes_cluster_role_binding" "daskhub-rb" { + metadata { + name = "daskhub-rb" + } + + role_ref { + api_group = "rbac.authorization.k8s.io" + kind = "Role" + name = "daskhub-role" + } + + subject { + kind = "ServiceAccount" + name = "daskhub-sa" + } +} + resource "kubernetes_namespace" "mlflow_namespace" { metadata { name = var.mlflow_namespace diff --git a/modules/dask-jupyterhub/worker.yaml b/modules/dask-jupyterhub/worker.yaml index 6624f8fd..5d760434 100644 --- a/modules/dask-jupyterhub/worker.yaml +++ b/modules/dask-jupyterhub/worker.yaml @@ -11,8 +11,8 @@ spec: value: git+https://github.com/dask/distributed resources: limits: - cpu: "2" - memory: 6G + cpu: "0.5" + memory: 1G requests: - cpu: "2" - memory: 6G \ No newline at end of file + cpu: "0.5" + memory: 1G \ No newline at end of file From 021f45cfb172447e20df4916981b0717ced33735 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 5 Aug 2021 10:14:33 -0300 Subject: [PATCH 60/67] fix role binding type --- main.tf | 2 +- modules/dask-jupyterhub/values.yaml | 1 - 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/main.tf b/main.tf index 1421b13d..812101ca 100644 --- a/main.tf +++ b/main.tf @@ -47,7 +47,7 @@ resource "kubernetes_role" "daskhub-role" { } } -resource "kubernetes_cluster_role_binding" "daskhub-rb" { +resource "kubernetes_role_binding" "daskhub-rb" { metadata { name = "daskhub-rb" } diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 6edabce1..2cc5e285 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -2,7 +2,6 @@ jupyterhub: hub: allowNamedServers: ${ hub_allow_named_servers } singleuser: - serviceAccountName: daskkubernetes profileList: %{for profile in singleuser_profile_list ~} - display_name: ${ profile.display_name } From 4e70dba3a194cc983fbeda0342d0758d911aeeb8 Mon Sep 17 00:00:00 2001 From: bernardolk Date: Thu, 5 Aug 2021 10:52:53 -0300 Subject: [PATCH 61/67] associate service account with jupyterhub --- modules/dask-jupyterhub/values.yaml | 1 + 1 file changed, 1 insertion(+) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 2cc5e285..35ecebd6 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -2,6 +2,7 @@ jupyterhub: hub: allowNamedServers: ${ hub_allow_named_servers } singleuser: + serviceAccountName: "daskhub-sa" profileList: %{for profile in singleuser_profile_list ~} - display_name: ${ profile.display_name } From b8a204492947fc0cd55867d6eb6ae525612fce52 Mon Sep 17 00:00:00 2001 From: Pat Thontirawong Date: Tue, 24 Aug 2021 11:28:35 -0400 Subject: [PATCH 62/67] change daskhub proxy service to ClusterIP --- modules/dask-jupyterhub/values.yaml | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/modules/dask-jupyterhub/values.yaml b/modules/dask-jupyterhub/values.yaml index 35ecebd6..382de852 100644 --- a/modules/dask-jupyterhub/values.yaml +++ b/modules/dask-jupyterhub/values.yaml @@ -1,4 +1,7 @@ jupyterhub: + proxy: + service: + type: "ClusterIP" hub: allowNamedServers: ${ hub_allow_named_servers } singleuser: @@ -25,6 +28,5 @@ dask-gateway: auth: type: null - dask-kubernetes: enabled: true \ No newline at end of file From 8e3c43e33393804d76789791decbc6db3e182c79 Mon Sep 17 00:00:00 2001 From: Pat Thontirawong Date: Tue, 24 Aug 2021 14:27:15 -0400 Subject: [PATCH 63/67] add Dockerfile for openmlops-notebook --- docker/openmlops-notebook/Dockerfile | 8 ++++++++ 1 file changed, 8 insertions(+) create mode 100644 docker/openmlops-notebook/Dockerfile diff --git a/docker/openmlops-notebook/Dockerfile b/docker/openmlops-notebook/Dockerfile new file mode 100644 index 00000000..424581f7 --- /dev/null +++ b/docker/openmlops-notebook/Dockerfile @@ -0,0 +1,8 @@ +FROM jupyter/scipy-notebook:hub-1.4.2 +RUN set -ex \ + && pip install \ + 'prefect==0.14.12' \ + 'mlflow==1.14.1' \ + 'seldon-core==1.6.0' \ + 'dask==2021.7.0' \ + 'dask-kubernetes==2021.3.1' \ No newline at end of file From 5139c76b1770ce2f38bdfa56a43b81f6199e6cbc Mon Sep 17 00:00:00 2001 From: Pat Thontirawong Date: Tue, 24 Aug 2021 14:32:49 -0400 Subject: [PATCH 64/67] update CHANGELOG.md --- CHANGELOG.md | 5 +++++ 1 file changed, 5 insertions(+) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6ed76930..7db41128 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,5 +1,10 @@ # Changelog +## 0.2.0 + +### Features +- Support Dask from Jupyter notebook + ## 0.1.0 ### Features From 3722a24897d4663c0f89b4e7e86a3aca89a5a1a6 Mon Sep 17 00:00:00 2001 From: Gareth Dwyer Date: Thu, 26 Aug 2021 10:47:31 +0200 Subject: [PATCH 65/67] typos --- tutorials/install-dependencies.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tutorials/install-dependencies.md b/tutorials/install-dependencies.md index d387c8ce..c1650bbe 100644 --- a/tutorials/install-dependencies.md +++ b/tutorials/install-dependencies.md @@ -1,4 +1,4 @@ -To set up the Open MLOps architecture, you need several dependencies on your local or client machine. If you've used docker, terraform ,and kubectl before, you'll likely hav everything you need. If not, below are instructions for installing all the client-side dependencies on a fresh install of Ubuntu 20.04. +To set up the Open MLOps architecture, you need several dependencies on your local or client machine. If you've used Docker, Terraform, and Kubectl before, you'll likely have everything you need. If not, below are instructions for installing all the client-side dependencies on a fresh install of Ubuntu 20.04. ## Install Git From 68301a86ebe4eeb3aa8792bcfe7360ca6678549d Mon Sep 17 00:00:00 2001 From: Pat Thontirawong Date: Wed, 8 Sep 2021 15:55:23 -0400 Subject: [PATCH 66/67] add aiohttp to dask worker MLOPS-291 #time 34m --- main.tf | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/main.tf b/main.tf index 95855746..182f53f1 100644 --- a/main.tf +++ b/main.tf @@ -134,7 +134,7 @@ module "dask" { worker_environment_variables = [ { name = "EXTRA_PIP_PACKAGES" - value = "prefect==0.14.1 --upgrade" + value = "prefect==0.14.1 aiohttp --upgrade" } ] } From 6e43ce01f71fbc1cd3a2f179f402c0f66b593ce7 Mon Sep 17 00:00:00 2001 From: Pat Thontirawong Date: Wed, 15 Sep 2021 12:44:49 -0400 Subject: [PATCH 67/67] update tutorials --- tutorials/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/tutorials/README.md b/tutorials/README.md index 3bef034c..858077bd 100644 --- a/tutorials/README.md +++ b/tutorials/README.md @@ -2,6 +2,7 @@ Here is a set of guides to get you started with Open MLOps. +* [Set up your local minikube machine learning architecture](./set-up-minikube-cluster.md) shows how to set up and configure the infrastructure on your local minikube. * [Set up your production machine learning architecture](./set-up-open-source-production-mlops-architecture-aws.md) shows how to set up and configure the infrastructure in your AWS account. * [Basic Usage of Jupyter, MLFlow, and Prefect](./basic-usage-of-jupyter-mlflow-and-prefect.md) shows you how to train your first model. * [Deploying a model to production with Prefect and Seldon](./deploy-model-seldon.md) shows you how to deploy the model you trained the previous tutorial behind a REST API.