FNNDSC / charts

ChRIS backend on Kubernetes

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

logo FNNDSC Helm Charts

MIT License Release Test ChRIS and pfcon Test Orthanc

Helm charts for the FNNDSC and the ChRIS Project.

List of Charts

Chart Name License Chart Version App Version Description
fnndsc/chris MIT Chart Version Version Open-source platform for medical compute.
fnndsc/pfcon MIT Chart Version Version Standalone remote compute resource service for ChRIS backend.
fnndsc/orthanc GPLv3+ Chart Version Version Open-source PACS server. https://www.orthanc-server.com/
fnndsc/ohif MIT Chart Version Version Web DICOM viewer. https://ohif.org/
fnndsc/linkerd-nodeport-workaround MIT Chart Version Version Workaround for using Linkerd with NodePort services.

Development

If you already have Docker installed, the easiest way to obtain k8s is KinD. KinD installation instructions are here: https://kind.sigs.k8s.io/docs/user/quick-start/

Development scripts are defined in testing/justfile, which uses the just syntax. You should install just: https://github.com/casey/just#installation

Then you can run things like:

git switch dev
helm dependency update ./charts/chris

cd testing

just kind
just up
just wait
just test

Optionally, to use chrisomatic:

just chrisomatic

Then, graceful tear down:

just down
just unkind

Making Modifications

Editing pfcon's templates can be tricky because it's a dependency from the same repo as chris. Here's a workaround:

cd charts/chris/charts
rm ./pfcon-*.tgz
ln -sv ../../pfcon

To publish your changes, increase version in charts/pfcon/Chart.yaml then merge the dev branch into master. Once the release is created by GitHub Actions, increase the version and pfcon dependency version in charts/chris/Chart.yaml then update charts/chris/Chart.lock by running

cd charts/chris
rm charts/pfcon
helm dependency update .

Finally, push to master once more.

Observability

Optionally, a Kubernetes observability stack can be deployed into the Kind cluster. You can choose between OpenObserve or a Grafana-based stack.

OpenObserve

OpenObserve is much more efficient than Grafana. I also have log collection set up for OpenObserve. However, OpenObserve's visualization and data querying is not as good as Grafana. It is recommended to use OpenObserve if you (a) need to aggregate and search through logs, and/or (b) your workstation has less than or equal to 8 CPUs, 16GB RAM.

Logs are collected using Vector and visualized using OpenObserve. To run the observability stack and open the dashboard, run

just openobserve

Log in with the email dev@babymri.org password chris1234.

Alternatively, you can get logs from the command-line using the just olog [POD_NAME_LABEL] command. Examples:

just olog pfcon

just olog chris-heart
How It Works

Two releases of Vector are made:

  • "Agent" mode which runs on every node to collect logs and host metrics
  • "Stateless-Aggregator" which scrapes Kubelet /metrics/cadvisor

These logs and metrics are shipped to OpenObserve.

Prometheus Stack

TODO

About

ChRIS backend on Kubernetes


Languages

Language:Smarty 65.8%Language:Just 20.7%Language:Shell 13.5%