Simple Git-based workflow to Deploy Authenticated Dashboards on Kubernetes

ContainDS Deploy watches Git repositories to deploy data scientists’ code instantly as live dashboards in your existing Kubernetes cluster. A simple YAML configuration file can be added to each repo to control authentication and execution details.

Workflow

Easily plug into data scientists’ existing workflows. If notebooks or Python scripts are already stored in git, simply list the repo as a node in ContainDS Deploy’s main configuration, then add a small dashboard.yaml file to the repo describing which framework is used to run the app.

VoilĂ , Streamlit, Panel, Bokeh, Plotly Dash, and R Shiny are all supported as standard. Bespoke frameworks or advanced web servers such as Flask can also be added.

Authentication

Enterprise-ready components can connect directly to your existing authentication provider (PingFed, Auth0 etc), allowing simple specification of groups to be authorized for each app.

Global authentication settings and permitted groups can be set in the main configuration; apps in the individual git repos can easily reference the available groupings and resource configurations.

Automation

ContainDS Deploy can be controlled by your existing CI/CD pipelines or work standalone, initiated by webhooks. GitHub Actions, Azure DevOps Pipelines, etc. can all be supported easily.

ContainDS Deploy runs completely independently from any JupyterHub but you can reuse your JupyterLab Docker images and Conda environments as the basis for dashboard deployments.


Example dashboards.yaml

A dashboard app can be created by adding an entry to its repository’s dashboards.yaml file. The basic settings can be inherited from the main configuration (or defaults), or can be overridden for greater control – provided they remain within any constraints set in the main config.

- name: Internal App
  framework: plotlydash
  path: ./app1/dash_main.py
  access: devgroup_profile

- name: Bigger App
  framework: streamlit
  path: ./app2/streamlit.py
  access: everyone_profile
  replicas: 2
  memory: 4GB
  env: +numba==0.53.1