From ba5f560df5d2ac2b80adee2ac1e000134f569a50 Mon Sep 17 00:00:00 2001 From: Alexandre de Souza Date: Mon, 24 Jun 2024 18:57:51 -0300 Subject: [PATCH 1/6] Allow clustering with Kubernetes --- rel/server/env.sh.eex | 7 +++++++ 1 file changed, 7 insertions(+) diff --git a/rel/server/env.sh.eex b/rel/server/env.sh.eex index 2c32e2ffa8e..1f38d8a6ec3 100644 --- a/rel/server/env.sh.eex +++ b/rel/server/env.sh.eex @@ -4,6 +4,13 @@ if [ "$LIVEBOOK_CLUSTER" = "auto" ] && [ ! -z "$FLY_APP_NAME" ]; then if [ ! -z "${LIVEBOOK_NODE}" ]; then export LIVEBOOK_NODE="${FLY_APP_NAME}-${FLY_IMAGE_REF##*-}@${FLY_PRIVATE_IP}"; fi +elif [ "$LIVEBOOK_CLUSTER" = "auto" ] && [ ! -z "$KUBERNETES_SERVICE_HOST" ]; then + export POD_NAME="${POD_NAME:-$(echo $HOSTNAME)}" + export POD_NAMESPACE="${POD_NAMESPACE:-$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace)}" + export LIVEBOOK_CLUSTER="dns:${POD_NAME}.${POD_NAMESPACE}.svc.cluster.local" + if [ ! -z "${LIVEBOOK_NODE}" ]; + then export LIVEBOOK_NODE="${POD_NAME}@${POD_IP}"; + fi fi if [ -f "${RELEASE_ROOT}/user/env.sh" ]; then From 19c249be3603c6953f38a324f90c2fab29ab746d Mon Sep 17 00:00:00 2001 From: Alexandre de Souza Date: Tue, 25 Jun 2024 11:24:31 -0300 Subject: [PATCH 2/6] Rollback the `env.sh.eex` --- rel/server/env.sh.eex | 7 ------- 1 file changed, 7 deletions(-) diff --git a/rel/server/env.sh.eex b/rel/server/env.sh.eex index 1f38d8a6ec3..2c32e2ffa8e 100644 --- a/rel/server/env.sh.eex +++ b/rel/server/env.sh.eex @@ -4,13 +4,6 @@ if [ "$LIVEBOOK_CLUSTER" = "auto" ] && [ ! -z "$FLY_APP_NAME" ]; then if [ ! -z "${LIVEBOOK_NODE}" ]; then export LIVEBOOK_NODE="${FLY_APP_NAME}-${FLY_IMAGE_REF##*-}@${FLY_PRIVATE_IP}"; fi -elif [ "$LIVEBOOK_CLUSTER" = "auto" ] && [ ! -z "$KUBERNETES_SERVICE_HOST" ]; then - export POD_NAME="${POD_NAME:-$(echo $HOSTNAME)}" - export POD_NAMESPACE="${POD_NAMESPACE:-$(cat /var/run/secrets/kubernetes.io/serviceaccount/namespace)}" - export LIVEBOOK_CLUSTER="dns:${POD_NAME}.${POD_NAMESPACE}.svc.cluster.local" - if [ ! -z "${LIVEBOOK_NODE}" ]; - then export LIVEBOOK_NODE="${POD_NAME}@${POD_IP}"; - fi fi if [ -f "${RELEASE_ROOT}/user/env.sh" ]; then From 858ac7ff87188529e24ce6fd363c3dffc622fbaf Mon Sep 17 00:00:00 2001 From: Alexandre de Souza Date: Fri, 28 Jun 2024 16:49:14 -0300 Subject: [PATCH 3/6] Add docs example to run Livebook with k8s --- docs/deployment/docker.md | 89 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 89 insertions(+) diff --git a/docs/deployment/docker.md b/docs/deployment/docker.md index 30299b02638..5e622aedb49 100644 --- a/docs/deployment/docker.md +++ b/docs/deployment/docker.md @@ -42,6 +42,95 @@ services: - LIVEBOOK_IFRAME_PORT=8091 ``` +### Kubernetes + +If using k8s the following template if a good starting point: + +```yml +apiVersion: v1 +kind: Service +metadata: + name: livebook-headless +spec: + clusterIP: None + selector: + app: livebook + +--- + +apiVersion: v1 +kind: Service +metadata: + name: livebook-loadbalancer +spec: + type: LoadBalancer + ports: + - port: 8080 + targetPort: 8080 + selector: + app: livebook + +--- + +apiVersion: apps/v1 +kind: Deployment +metadata: + name: livebook +spec: + replicas: 3 + selector: + matchLabels: + app: livebook + template: + metadata: + labels: + app: livebook + spec: + containers: + - name: livebook + image: ghcr.io/livebook-dev/livebook:latest + ports: + - containerPort: 8080 + env: + - name: LIVEBOOK_IP + value: "0.0.0.0" + - name: POD_IP + valueFrom: + fieldRef: + fieldPath: status.podIP + - name: POD_NAMESPACE + valueFrom: + fieldRef: + fieldPath: metadata.namespace + - name: LIVEBOOK_NODE + value: "livebook@$(POD_IP)" + - name: LIVEBOOK_CLUSTER + value: "dns:livebook-headless.$(POD_NAMESPACE).svc.cluster.local" + - name: LIVEBOOK_SECRET_KEY_BASE + valueFrom: + secretKeyRef: + name: livebook-secret + key: LIVEBOOK_COOKIE + - name: LIVEBOOK_COOKIE + valueFrom: + secretKeyRef: + name: livebook-secret + key: LIVEBOOK_COOKIE + +--- + +apiVersion: v1 +kind: Secret +metadata: + name: livebook-secret + namespace: livebook-namespace +type: Opaque +data: + LIVEBOOK_PASSWORD: + LIVEBOOK_SECRET_KEY_BASE: + LIVEBOOK_COOKIE: +``` + ## Deploy notebooks as applications It is possible to deploy any notebook as an application in Livebook. Inside the notebook, open up the Application pane on the sidebar (with a rocket icon), click "Deploy with Docker", and follow the required steps. You will be able to choose a Livebook image, preset clustering options, and more. From 073b51d2f394d2087d9b0afaf96f63c20860035f Mon Sep 17 00:00:00 2001 From: Alexandre de Souza Date: Fri, 28 Jun 2024 16:54:28 -0300 Subject: [PATCH 4/6] Update docs/deployment/docker.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: José Valim --- docs/deployment/docker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/deployment/docker.md b/docs/deployment/docker.md index 5e622aedb49..3cea6487d8c 100644 --- a/docs/deployment/docker.md +++ b/docs/deployment/docker.md @@ -110,7 +110,7 @@ spec: valueFrom: secretKeyRef: name: livebook-secret - key: LIVEBOOK_COOKIE + key: LIVEBOOK_SECRET_KEY_BASE - name: LIVEBOOK_COOKIE valueFrom: secretKeyRef: From d244794502577f798f4ee2b87a529b41d3573d30 Mon Sep 17 00:00:00 2001 From: Alexandre de Souza Date: Fri, 28 Jun 2024 16:59:47 -0300 Subject: [PATCH 5/6] Apply review comments --- docs/deployment/docker.md | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) diff --git a/docs/deployment/docker.md b/docs/deployment/docker.md index 3cea6487d8c..08caab14a7f 100644 --- a/docs/deployment/docker.md +++ b/docs/deployment/docker.md @@ -92,8 +92,6 @@ spec: ports: - containerPort: 8080 env: - - name: LIVEBOOK_IP - value: "0.0.0.0" - name: POD_IP valueFrom: fieldRef: @@ -106,6 +104,11 @@ spec: value: "livebook@$(POD_IP)" - name: LIVEBOOK_CLUSTER value: "dns:livebook-headless.$(POD_NAMESPACE).svc.cluster.local" + - name: LIVEBOOK_PASSWORD + valueFrom: + secretKeyRef: + name: livebook-secret + key: LIVEBOOK_PASSWORD - name: LIVEBOOK_SECRET_KEY_BASE valueFrom: secretKeyRef: From f129347fa627b4e8128c7a0aa3a935d5324e2f7a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Jos=C3=A9=20Valim?= Date: Sat, 29 Jun 2024 10:33:51 +0200 Subject: [PATCH 6/6] Update docs/deployment/docker.md MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Jonatan Kłosko --- docs/deployment/docker.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/docs/deployment/docker.md b/docs/deployment/docker.md index 08caab14a7f..628efe384c9 100644 --- a/docs/deployment/docker.md +++ b/docs/deployment/docker.md @@ -44,7 +44,7 @@ services: ### Kubernetes -If using k8s the following template if a good starting point: +If using k8s the following template is a good starting point: ```yml apiVersion: v1