Description
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.
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
orkubectl 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
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
- https://docs.podman.io/en/stable/markdown/podman-kube-play.1.html#podman-kube-play-support
- https://github.com/containers/podman/blob/main/docs/tutorials/basic_networking.md
- https://github.com/FNNDSC/chris-in-a-box/wiki/
- https://github.com/containers/podman
- https://www.freedesktop.org/software/systemd/man/systemd.unit.html
Contact
- Contributors: Raghuram.Banda , Máirín Duffy.
- Github Issues: https://github.com/FNNDSC/chris-in-a-box/issues
- Matrix: https://matrix.to/#/#chris-general:fedora.im