Table of Contents
This repository implements pfcon
-- a controlling service that acts as the interface to a process manager pman
service.
Primarily, pfcon
provides "compute resource" services to a ChRIS backend.
Most simply, a local zip file can be pushed to a remote pfcon
, then after unpacking the data some process is run on it in the remote space using the controlled pman
service. The resultant data can then be downloaded back as a zip file to the local space.
It can be used to query and control the following (for example):
- state: Is job <XYZ> still running?
Visit the pfcon http API call examples wiki page to see examples of http calls accepted by pfcon
server.
Additionally a Python3 client for this server's web API is provided here: https://github.com/FNNDSC/python-pfconclient
Currently tested platforms:
Ubuntu 18.04+ and MAC OS X 10.14+ and Fedora 31+
Additional instructions for FedoraDocker 18.06.0+
Note: On a Linux machine make sure to add your computer user to the docker
group.
Consult this page: https://docs.docker.com/engine/install/linux-postinstall/
$> docker swarm init --advertise-addr 127.0.0.1
$> git clone https://github.com/FNNDSC/pfcon.git
$> cd pfcon
$> ./make.sh
$> cd pfcon
$> ./unmake.sh
$> cd pfcon
$> ./make.sh -N
$> cd pfcon
$> ./unmake.sh -N
$> docker swarm leave --force
On MAC OS Docker Desktop includes a standalone Kubernetes server and client. Consult this page: https://docs.docker.com/desktop/kubernetes/
On Linux there is a simple MicroK8s installation. Consult this page: https://microk8s.io
Then create the required alias:
$> snap alias microk8s.kubectl kubectl
$> microk8s.kubectl config view --raw > $HOME/.kube/config
$> git clone https://github.com/FNNDSC/pfcon.git
$> cd pfcon
$> ./make.sh -O kubernetes
$> cd pfcon
$> ./unmake.sh -O kubernetes
$> cd pfcon
$> ./make.sh -N -O kubernetes
$> cd pfcon
$> ./unmake.sh -N -O kubernetes
A single-machine deployment is provided.
Modify the .env
files in the swarm/prod/secrets
directory appropriately.
Start production pfcon:
$> ./deploy.sh up
Tear down production pfcon:
$> ./deploy.sh down
A single-machine deployment using Kubernetes' "hostPath" storage is provided. In addition a multi-machine deployment for an external NFS drive is provided using NFS persistent volume.
Modify the .env
files in the kubernetes/prod/base/secrets
directory appropriately.
Start production pfcon:
$> ./deploy.sh -O kubernetes up
Tear down production pfcon
$> ./deploy.sh -O kubernetes down
Start production pfcon:
$> ./deploy.sh -O kubernetes -T nfs -S <NFS export dir> -P <NFS server IP addr> up
Tear down production pfcon
$> ./deploy.sh -O kubernetes -T nfs -S <NFS export dir> -P <NFS server IP addr> down