Installation guide on Kubernetes
Architecture overview
Sarus is made of several services that communicate through HTTP requests. They each run in a separate container.
Main components are:
Gateway API: handling the calls from the SDK to perform analytics or ML training
Gateway worker: service for long running jobs in analytics/ML
Dataowner front: the UI for the Data owner preparing the datasets
Dataowner-dash API: the API to prepare datasets, manage users & privacy policies, audit…
Dataowner-dash worker: service for long running jobs in dataset preparation
Nginx as a load balancer
Requirements & cluster setup
Sarus requires:
a running and maintained Kubernetes cluster
a Storage with ReadWriteMany capabilities
To get more details on how to setup a managed Kubernetes cluster for Sarus on GCP, AWS, Azure or OVH, visit Kubernetes Setup.
Deploying the Sarus application on a cluster with helm
Here, we assume that you have received a TOKEN_NAME and a secret personal access TOKEN from your Sarus Account Manager to be able to access Sarus’ Helm repo and pull Sarus docker images.
Adding Sarus’ Helm repository
You need to add Sarus’ repo to your local list of helm repositories:
$ REPO_ID=22362555; CHANNEL=devel; helm repo add --username ${TOKEN_NAME} --password ${TOKEN} sarus https://gitlab.com/api/v4/projects/${REPO_ID}/packages/helm/${CHANNEL}`
"sarus" has been added to your repositories
You can then see Sarus’ Helm chart using:
$ helm repo update
Hang tight while we grab the latest from your chart repositories...
...Successfully got an update from the "sarus" chart repository
Update Complete. ⎈Happy Helming!⎈
$ helm search repo sarus
NAME CHART VERSION APP VERSION DESCRIPTION
sarus/sarus-app 0.2.2 0.2.2 The Sarus Helm chart
Filling the deployment values
They can see what are the required variables using:
helm show values sarus/sarus-app
, and print the readme using
helm show values sarus/sarus-app
. See helm
show.
They should fill a myvalues.yaml
file with their specifics for the
Sarus App.
Installing the Sarus app
Using helm install
, you can install a chosen release of Sarus (2.8.1 in the exemple below)
RELEASE="2.8.1"; helm install -f myvalues.yaml ${RELEASE} sarus/sarus-app --set sarus-registry-chart.enabled=true --set sarus-secrets-chart.enabled=true
sarus-registry-chart
and sarus-secrets-chart
are optional; they can be omitted when upgrading the app.
Using a namespace
Helm can deploy the app in a particular Kubernetes namespace with the
additional argument to the command line: -n my-namespace
; Helm can
create it if it does not exist with --create-namespace
.
If Helm creates the namespace, it will not delete it by itself with
helm uninstall
: the deletion is a manual process.
Updating the cluster with new images
If docker images have been updated on the container registry, you just need to do
kubectl rollout restart deployments