The helm charts of the RADAR-base platform. Installation of these charts is best managed
via RADAR-Kubernetes. Use the releases in this repository by
referencing helm repository radar
with URL https://radar-base.github.com/radar-helm-charts.
RADAR-base is an open-source platform designed to support remote clinical trials by collecting continuous data from wearables and mobile applications. RADAR-Kubernetes enables installing the RADAR-base platform onto Kubernetes clusters. RADAR-base platform can be used for wide range of use-cases. Depending on the use-case, the selection of applications need to be installed can vary. Please read the component overview and breakdown to understand the role of each component and how components work together.
The radar-helm-charts setup uses Helm charts to package necessary Kubernetes resources for each component.
This documentation assumes familiarity with all referenced Kubernetes concepts, utilities, and procedures and familiarity with Helm charts.
The following tools should be installed in your local machine to install the RADAR-Kubernetes on your Kubernetes cluster.
Component | Description |
---|---|
helm 3 | Helm Charts are used to package Kubernetes resources for each component |
Kubernetes | The charts support Kubernetes versions older than 1.30. |
kubectl | Command line interface to interact with Kubernetes |
Installation of these charts is best managed via RADAR-Kubernetes.
The radar-helm-charts Github project publishes a Helm repository radar
with
URL https://radar-base.github.com/radar-helm-charts. Any time a commit to the main
branch is made that modified one
of the helm charts, a new Github release is created for that chart. It is also published to the Helm repository. For
that reason, ensure that the Chart.yaml
file of the respective Helm chart is up to date for any commit made to main
.
In general, the main
branch should only be updated via Github pull requests.
The dependencies and linting tools are managed via Devbox, you need to install it before proceeding. Once that is done you can run:
devbox shell
This download all of the dependencies and install to Git hooks to lint the configuration before it is committed. To check if the commit hooks succeed before making a comment you can run this command:
devbox run check
This project also uses Conventional Commits to have a standardized commit message. Please have a look and make sure your commit message follows that.
In each chart directory use the following files to define what the README contents should be.
-
In
README.md.gotmpl
define which sections should be printed to README, with syntax{{ template "chart.header" . }} {{ template "chart.deprecationWarning" . }} {{ template "chart.badgesSection" . }} {{ template "chart.description" . }} {{ template "chart.homepageLine" . }} {{ template "chart.maintainersSection" . }} {{ template "chart.sourcesSection" . }} {{ template "common.prerequisites" . }} {{ template "chart.requirementsSection" . }} {{ template "chart.valuesSection" . }}
-
In
DOCS.md.gotmpl
, define any sections not part of helm-docs:{{ define "mychart.usageSection" -}} {{- end }}
-
In
Chart.yaml
define as many metadata fields as possible, including at least the description, homepage, maintainer, sources, and requirements. -
In the
values.yaml
file, put a comment line before each variable with two dashes--
. Any text after the two dashes will be used as documentation for that variable.
The charts for external dependencies are located in the external
directory. These charts are used to install
components that are not part of the RADAR-base platform but are required for the platform to function correctly. The
external charts are maintained separately and should be updated as needed. It is current practice to have a copy of
any external chart in the external
directory to ensure that the RADAR-base platform can be installed without the
parent chart being available in the Helm repository.
-
Clone the external chart into the
external
directory. This can be done by running the following command:helm pull <chart-name> --untar -d external
This will create a new directory in the
external
directory with the name of the chart. SeeMakefile
for examples. -
Add helm chart as a new
update-<chart-name>
section in theMakefile
. -
Register the new chart in the
.github/workflows/scheduled-snyk-docker.yaml
for vulnerability scanning by adding the chart name to theINCLUDE_CHARTS
environmental variable in the set-matrix step.
External charts can be updated by running make update-<chart-name>
. At the moment there are a few manual steps are
needed which should be automated.
The external charts that have a dependency need manual steps:
- The external dependency should be mirrored in the this repository with
helm pull
commands that are in theMakefile
, make sure the mirrored version is same as the one specified in theChart.yaml
. - The external dependency should be released on the main branch first so there will be a valid release of it in our chart repository.
- In the
Chart.yaml
the repository should be changed tohttps://radar-base.github.io/radar-helm-charts
. - The
Chart.lock
file should be removed and then runhelm dependency build
to recreate the file with new repository URL and remove any.tgz
files that gets created.
For this chart, Chart.yaml
needs to be updated to the latest version, remove Chart.lock
and run
helm dependency build
. Make sure to copy the CRDs from
https://github.com/prometheus-community/helm-charts/tree/main/charts/kube-prometheus-stack/charts/crds/crds
to
https://github.com/RADAR-base/RADAR-Kubernetes/blob/main/etc/kube-prometheus-stack/files/crds.yaml
Enabling RADAR-base community to use RADAR-Kubernetes is important for us. If you have troubles setting up the platform using provided instructions, you can create an issue with exact details to reproduce and the expected behaviour. You can also reach out to the RADAR-base community via RADAR-base Slack on * *radar-kubernetes channel**. The RADAR-base developers support the community on a voluntary basis and will pick up your requests as time permits.