Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Refactor egeria lab chart to use standard jupyter container & new git… #170

Merged
merged 4 commits into from
Aug 15, 2022
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion charts/odpi-egeria-lab/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@
name: odpi-egeria-lab
description: Egeria lab environment
apiVersion: v2
version: 3.10.0
version: 3.11.0-prerelease.0
appVersion: "3.10"
icon: https://raw.githubusercontent.com/odpi/egeria/99016e77167fa30dcfade809b061358a92a59973/assets/img/egeria.png
keywords:
Expand Down
49 changes: 49 additions & 0 deletions charts/odpi-egeria-lab/scripts/setup-notebooks.sh
Original file line number Diff line number Diff line change
@@ -0,0 +1,49 @@
#!/bin/sh
# SPDX-License-Identifier: Apache-2.0
# Copyright Contributors to the Egeria project.

# Can be overriden by deployment - so script can be generic, but hardcode expected values for now
: "${GITREPO:=https://github.com/odpi/egeria-jupyter-notebooks}"
: "${GITBRANCH:=main}"
: "${LOCATION:=/home/jovyan/work}"

echo "-- Setting up Egeria notebooks --"

# Pause for debugging
if [ ! -z "$SCRIPT_SLEEP_BEFORE" ]; then
planetf1 marked this conversation as resolved.
Show resolved Hide resolved
echo "Sleeping for $SCRIPT_SLEEP_BEFORE seconds"
sleep $SCRIPT_SLEEP_BEFORE
planetf1 marked this conversation as resolved.
Show resolved Hide resolved
fi

# Shallow clone - just to get latest files, not history
if [ ! -r ${LOCATION}/.git ]
then
echo "No git repo found in ${LOCATION}, cloning from ${GITREPO}..."
cd ${LOCATION}/..
planetf1 marked this conversation as resolved.
Show resolved Hide resolved
# Cleanup lost and found and other directories - need to be empty for git
rm -fr ${LOCATION}/*
planetf1 marked this conversation as resolved.
Show resolved Hide resolved
#git config --global --add safe.directory ${LOCATION}
git clone --depth 1 ${GITREPO} ${LOCATION}
cd ${LOCATION}
planetf1 marked this conversation as resolved.
Show resolved Hide resolved
git pull

# Install additional packages if we've just pulled from git
echo "-- Installing extra packages"
conda install --yes --file ${LOCATION}/requirements.txt && \
fix-permissions $CONDA_DIR && \
fix-permissions /home/$NB_USER

else
echo "Found git repo in ${LOCATION}, leaving as-is. update manually with 'git pull' or save work"

fi

# Pause for debugging
if [ ! -z "$SCRIPT_SLEEP_AFTER" ]; then
planetf1 marked this conversation as resolved.
Show resolved Hide resolved
echo "Sleeping for $SCRIPT_SLEEP_AFTER seconds"
sleep $SCRIPT_SLEEP_AFTER
fi

echo "-- Egeria notebook setup complete --"


67 changes: 67 additions & 0 deletions charts/odpi-egeria-lab/ssl/truststore.pem
Original file line number Diff line number Diff line change
@@ -0,0 +1,67 @@
-----BEGIN CERTIFICATE-----
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
+Q2XC5UM6TdUsrjJoS/+fUC9m2p7t/AO
-----END CERTIFICATE-----
-----BEGIN CERTIFICATE-----
MIIFljCCA36gAwIBAgICEAAwDQYJKoZIhvcNAQELBQAwVjELMAkGA1UEBhMCVVMx
CzAJBgNVBAgMAkNBMREwDwYDVQQKDAhMRkFJRGF0YTEnMCUGA1UEAwweRWdlcmlh
Um9vdENlcnRpZmljYXRlQXV0aG9yaXR5MB4XDTIyMDMxNjExMjUxOFoXDTMyMDMx
MzExMjUxOFowXjELMAkGA1UEBhMCVVMxCzAJBgNVBAgMAkNBMREwDwYDVQQKDAhM
RkFJRGF0YTEvMC0GA1UEAwwmRWdlcmlhSW50ZXJtZWRpYXRlQ2VydGlmaWNhdGVB
dXRob3JpdHkwggIiMA0GCSqGSIb3DQEBAQUAA4ICDwAwggIKAoICAQDB6u/eBBix
MrcOqIHkHZx7zBG6IXzG9/x3NkJlTZWX2Hc3+ih2ofmnduRh27lvbSHp6R1j8jmV
wlGI1zR9QEXWxm7INUTTRNu7wKQcT9HPT9gxjww4qd45u791MhdESZB9e1v+XkCE
L2qEUPp/IjinslhWR3j0zMfwoZ8j764KKoOOo+G7h3IpVKzdMt89aGVPQGuOT9HW
oah2zJeHIIeeOaihhjP1QmrOMWKVWVrNlnNZSExSlOCPqqDEjdgG2uMpwfK7ZhJc
1WcINfDM0NirhUWhH/VESbxxrSUsL4SgH42/ozQ4zbxhecYwsqMBXdDmzsajCFeT
GGs6PAxixU8ba22ZIpcGp7fEf6EeKBURSlLvOAVZN52BN808V6vX0PRs/UdwUECd
Pg4mv7exNHruE9Zipsv6c5npvBGb13NFuryWwtRaNCq4ukWogrKcoPpUOce66PmY
GRG80aD6ELScE/chwgNdRblqq9y9yuVKh5YvkBDKAckdfMW1OIzeaKUTVSHDovi1
88mk6UN3FCIKz2qrxrvSlg7UBfFtBAlyx0ehT12HYbRCRjopy7kVoU/YOgiPmQDD
QHliAhjMtAxEZ9dYthmkIRqWaB+vTXWacZyEavVK/8bLjl8mqJFFpmYrpjFvr4D7
bJG2l+gIQruehE58aD9ROG4HEqOalAIHBQIDAQABo2YwZDAdBgNVHQ4EFgQUsCub
7fQTzCxnWsM3BCzAiYZ6cb4wHwYDVR0jBBgwFoAUlSSt6JvlwIV3jFoFCCCFuiRI
OfUwEgYDVR0TAQH/BAgwBgEB/wIBADAOBgNVHQ8BAf8EBAMCAYYwDQYJKoZIhvcN
AQELBQADggIBAA6Cq67AczzaBR4aGLmZwn/ljFAJ0T8pPMb63ZOLvxb/fGijQSvP
6zvKBYuHnYxs9tAf8uy9aQqcla+YmAqYTesJ9RNrd9ROC6M/DkFVg4lPDvsvGtuJ
Ij4gamkqId56oF1TNbXPqvCtCfs4zAyk5hjdIUNGHhAZ3KdG9zDelo1WZn9pdBoe
jpjwu3dQSBWzQ4nr05H23AbKG0UJmCDpZd9VPDMukOEwoBo3tm5ZHBnAuDnHr2VU
AAjjOV/Ix/j3hmfarI0yng4RVJgg8nBj/L7bgLfU/H2J19RSl8oWgwYvzjIKg/B9
G4zu95cIvQDfVfsoH4EzWIQLn/4d0YUPCDDPe67BNRmKqmj2HYwrnhda91iuzn3s
biXwqNO5y9ppHcQaFSAzS0tbmj6STWWQUVpM+M4i7k9S8RpvFcYeDsUDjePucS4m
Q2UB8AAbw0JfRU5nMmWbWJy35kSo4l1ktSO5tTgJiiNwq2vuJzHafIUaS2lxrUjE
h6kgL8oWrVq8PdjMWxfM5kYm5yM2sHoCk/tUppD472Lekj1m5p86HtDjY4Jf2n27
7JyXo5QIeT+MZ91XfTjA28Jt/b1fcShlsWjZXMs7Opm6LBVAe90NOPUcERHZS9Em
owwwpea1j+OgjKeTeCKgfJ4TQw5e5n9aP+6TxhFwAzZqTJGUarconxYD
-----END CERTIFICATE-----
4 changes: 4 additions & 0 deletions charts/odpi-egeria-lab/templates/env.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -18,4 +18,8 @@ data:
{{- end -}}
{{- if .Values.egeria.logging }}
LOGGING_LEVEL_ROOT: {{ .Values.egeria.logging }}
{{- end }}
SCRIPT_SLEEP_AFTER: "{{ .Values.jupyter.scriptSleepAfter | default '0' }}"
SCRIPT_SLEEP_BEFORE: "{{ .Values.jupyter.scriptSleepBefore | default '0' }}"
{{- if .Values.egeria.ssl }}
{{- end -}}
63 changes: 52 additions & 11 deletions charts/odpi-egeria-lab/templates/jupyter.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -48,27 +48,21 @@ spec:
strategy: {}
template:
metadata:
creationTimestamp: null
labels:
app.kubernetes.io/name: {{ include "myapp.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/component: jupyter
spec:
containers:
- name: jupyter
image: "{{ if (.Values.image.jupyter.registry | default .Values.imageDefaults.registry) }}{{ .Values.image.jupyter.registry | default .Values.imageDefaults.registry }}/{{ end }}\
{{ if (.Values.image.jupyter.namespace | default .Values.imageDefaults.namespace) }}{{ .Values.image.jupyter.namespace | default .Values.imageDefaults.namespace }}/{{ end }}\
image: "{{ (.Values.image.jupyter.registry | default .Values.imageDefaults.registry) }}/\
{{ (.Values.image.jupyter.namespace | default .Values.imageDefaults.namespace) }}/\
{{ .Values.image.jupyter.name }}\
:{{ .Values.image.jupyter.tag | default .Values.egeria.version }}"
imagePullPolicy: {{ (.Values.image.jupyter.pullPolicy | default .Values.imageDefaults.pullPolicy) | default (ternary "Always" "IfNotPresent" ( hasSuffix "SNAPSHOT" (.Values.image.jupyter.tag | default .Values.egeria.version ))) }}
:{{ .Values.image.jupyter.tag | default "latest" }}"
imagePullPolicy: {{ (.Values.image.jupyter.pullPolicy | default .Values.imageDefaults.pullPolicy) | default (ternary "Always" "IfNotPresent" ( hasSuffix "SNAPSHOT" (.Values.image.jupyter.tag | default "latest" ))) }}
envFrom:
- configMapRef:
name: {{ include "myapp.fullname" . }}-configmap
args:
- jupyter
- lab
- "--NotebookApp.token=''"
- "--NotebookApp.iopub_data_rate_limit=1.0e10"
env:
- name: corePlatformURL
value: "https://{{ .Release.Name }}-core:9443"
Expand All @@ -86,6 +80,17 @@ spec:
value: "{{ .Release.Name }}-nginx:443"
- name: repositoryType
value: {{ .Values.egeria.repositoryType}}
- name: CHOWN_HOME
value: "yes"
- name: CHOWN_HOME_OPTS
value: "-R"
#- name: GEN_CERT
# value: "YES"
- name: DOCKER_STACKS_JUPYTER_CMD
value: "lab --notebook-dir=/home/jovyan/work"
# Contains the truststore from Egeria self-signed certs, in .pem format
#- name: REQUESTS_CA_BUNDLE
# value: "/home/jovyan/ssl/truststore.pem"
ports:
- containerPort: 8888
readinessProbe:
Expand All @@ -94,8 +99,44 @@ spec:
initialDelaySeconds: 10
periodSeconds: 10
failureThreshold: 6
volumeMounts:
- mountPath: /home/jovyan/work
name: jupyter-work
- name: notebook-scripts-vol
mountPath: "/usr/local/bin/before-notebook.d"
#- name: ssl-vol
# mountPath: "/home/jovyan/ssl"
resources: {}
volumes:
- name: notebook-scripts-vol
configMap:
name: {{ .Release.Name }}-scripts-configmap
#- name: ssl-vol
# configMap:
# name: {{ .Release.Name }}-ssl-configmap
- name: jupyter-work
persistentVolumeClaim:
claimName: {{ .Release.Name }}-jupyter-pvc
restartPolicy: Always

---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: {{ .Release.Name }}-jupyter-pvc
labels:
app.kubernetes.io/name: {{ include "myapp.name" . }}
helm.sh/chart: {{ include "myapp.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/component: jupyter
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: {{ .Values.jupyter.storageSize | default "1Gi" }}
{{ if .Values.egeria.storageClass }}
storageClassName: {{ .Values.jupyter.StorageClass }}
{{ end }}
status: {}
...
14 changes: 14 additions & 0 deletions charts/odpi-egeria-lab/templates/scripts.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# SPDX-License-Identifier: Apache-2.0
# Copyright Contributors to the Egeria project.
apiVersion: v1
kind: ConfigMap
metadata:
labels:
app.kubernetes.io/name: {{ include "myapp.name" . }}
helm.sh/chart: {{ include "myapp.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/component: scripts
name: {{ .Release.Name }}-scripts-configmap
data:
{{ (.Files.Glob "scripts/*.sh").AsConfig | indent 2 }}
14 changes: 14 additions & 0 deletions charts/odpi-egeria-lab/templates/ssl.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
# SPDX-License-Identifier: Apache-2.0
# Copyright Contributors to the Egeria project.
apiVersion: v1
kind: ConfigMap
metadata:
labels:
app.kubernetes.io/name: {{ include "myapp.name" . }}
helm.sh/chart: {{ include "myapp.chart" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
app.kubernetes.io/component: ssl
name: {{ .Release.Name }}-ssl-configmap
data:
{{ (.Files.Glob "ssl/*").AsConfig | indent 2 }}
10 changes: 10 additions & 0 deletions charts/odpi-egeria-lab/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -38,6 +38,13 @@ egeria:
# Set to 'true' to deploy the Egeria UI, but note the configuration may not work properly
egeriaui: true

jupyter:
# Sleep this long after configuring notebook environment - to aid debug
scriptSleepBefore: "0"
scriptSleepAfter: "0"
# Size for jupyter work
storageSize: "1Gi"

debug:
egeriaJVM: false

Expand Down Expand Up @@ -68,7 +75,10 @@ image:
configure:
name: egeria-configure
jupyter:
#registry: docker.io
#namespace: jupyter
name: jupyter
tag: "lab-3.4.5"
uistatic:
name: egeria-ui
tag: "3.2.0"
Expand Down