/ChRIS-in-a-box

ChRIS in a box

Primary LanguageShellGNU General Public License v3.0GPL-3.0

Description

ChRIS logo ChRIS in a box

With a build once, run anywhere approach, ChRIS in a Box allows the ability to access and use ChRIS on Edge Computing Devices that are deployed in facilities who would like to leverage the capabilities of ChRIS.

MIT license

Run ChRIS using Podman.

Technical Overview

ChRIS in a box is intended to run the components of ChRIS application as containers using Podman and Microshift depending on the choice of deployment.

The folder podman provides YAML files which can be read by podman play kube to run ChRIS.

At the moment it is insecure and not be used in production. However, we aim for make changes so that it can run in production. This is a good starting point for writing production-ready configurations of ChRIS.

ChRIS in a box runs applications in "production mode" (where applicable) To use a specific backend service please refer to the project source repositories instead, e.g. https://github.com/FNNDSC/ChRIS_ultron_backEnd

Image tags are pinned to stable versions, so chris in a box may be out-of-date with development versions of ChRIS components.

Prerequisties

System Requirements

ChRIS in a box requires Podman version 4.3 or above. We aim to support "out-of-the-box" setups of rootless Podman (using slirp4netns).

Supported OS: Fedora Silverblue 37, Ubuntu 22.04, Arch Linux

(Click to expand) Notes about installing Podman on Arch Linux.

On Arch Linux, please consult the wiki: https://wiki.archlinux.org/title/Podman

Here's what worked for me (possibly helpful, definitely outdated info)

sudo pacman -Syu podman
sudo usermod --add-subuids 100000-165535 --add-subgids 100000-165535 $USER

Whether you're using Podman or Kubernetes, make sure your system is mostly not running anything which might interfere with miniChRIS.

  • Existing container/pod names might clash with miniChRIS. Make sure the output of podman ps -a or kubectl get pods is empty-ish.
  • Running servers might clash with miniChRIS, which wants to bind TCP ports 5005, 5010, 8000, 8010, 8080, 8020, and 8021.

Podman - Install ChRIS

./podman/minichris.sh up

Podman - Uninstall ChRIS

./podman/minichris.sh down

Podman Desktop - Install ChRIS

Screenshot from 2023-04-15 22-42-25 Screenshot from 2023-04-15 22-47-29 Screenshot from 2023-04-15 22-48-37

Podman Desktop - UnInstall ChRIS

Work in progress

Application Startup & Performance

On a fast computer with good internet speed, running ./podman/minichris.sh up for the first time (pulls images) takes about 1.5 to 2 minutes. Subsequent runs will be faster, about 40 seconds.

MicroShift

Work in Progress

Developer's Notes: On Podman

YAML files in podman/kube should be interoperable between Podman and Kubernetes. Podman supports a subset of the Kubernetes manifest spec: Pod, Deployment, PersistentVolumeClaim, ConfigMap

Open Issues

Ideally, to add pfcon to CUBE we should be using the pod name of pfcon http://minichris-pfcon:5005/api/v1/but it won't work. For more information please go to FNNDSC/ChRIS_ultron_backEnd#505

There is an undocumented behavior of Podman where the host is visible to the container via the name host.containers.internal, and we're able to talk to pfcon via the bound host port.

Recommended Reading

Contact