KubeGo notebooks is a Go implementation of kubeflow notebooks. It leverages kubeflow's notebook controller.
Ease-of-use is the primary goal of this project. It allows using a normal ingress controller such as Nginx to expose notebooks as native kubernetes ingresses instead of relying on Istio.
It also has full swagger documentation for interacting with the API programmatically.
๐ฆ
Install Dependencies make install-deps
๐ ๏ธ
Docker Build docker build -t $YOUR_REPO/notebook-api .
๐
Docker Push docker push $YOUR_REPO/notebook-api
๐
Install helm install \
--set image.repository=$YOUR_REPO/notebook-api \
--set image.tag=latest \
kubego-notebooks ./deployment/notebooks
๐
Running locally make build-frontend
go run main.go
๐ณ
Running locally with Docker docker run -v ${HOME}/.kube:/home/.kube -p 8000:8000 notebook-api
๐
Configuration server:
# Server Bind address
address: 0.0.0.0:8000
apiPrefix: "/api"
cors:
enabled: true
accessControlAllowOrigin: "*"
acccessControlAllowCredentials: "true"
accessControlAllowHeaders: "Content-Type, Content-Length, Accept-Encoding, X-CSRF-Token, Authorization, accept, origin"
accessControlAllowMethods: "POST,HEAD,PATCH,OPTIONS,GET,PUT"
# InCluster will use a service account if true
# If false, will use local kube context
inCluster: true
spawnerConfigPath: ./config/spawner_ui_config.yaml
# Ingress Settings
ingress:
## Set create true to create an ingress for notebook servers
create: true
domain: .example.com
tls: false
annotations: {}
# "cert-manager.io/cluster-issuer": "vault-issuer"
# "kubernetes.io/ingress.class": "nginx"
# "nginx.ingress.kubernetes.io/proxy-body-size": "0"