RapidPro is an open source platform for visually building interactive messaging applications. For more on refer to https://community.rapidpro.io/.
This repo provides a chart to bootstraps RapidPro on a Kubernetes cluster using the Helm package manager.
To get started with the helm chart, you'll need;
-
A running cluster composed of;
a. Kubernetes version 1.21+,
b. Postgresql version 1.13+ and
c. a container image registry either hosted locally or on the cloud.
-
This repository together with it's sub-repository.
The repository has 2 directories;
a.
rapidpro
directory containing the helm chart, and anb.
extras
directory containing,-
Dockerfiles for building the required images.
-
A start-up script to help quickly stand up a cluster with all the necessary services running.
-
Linux:
- Install the following pre-requisites;
- Docker and Docker Compose
- GNU Make
- Helm
- jq, The JSON processor
- K3D
- Kubectl
-
Clone the repository together with it's sub-repository.
git clone --recurse-submodules https://github.com/ngendah/rapidpro-helm-chart
-
Change directory to the root of the project.
cd rapidpro-helm-chart
-
Stand up a cluster
./extras/cluster/run.sh install
The cluster load balancer will be exposed on the localhost on port 8080.
-
Login to the Docker registry
docker login -u $(cat ./extras/cluster/registry.conf.d/username) -p $(cat ./extras/cluster/registry.conf.d/passwd) $(cat ./extras/cluster/registry.conf.d/hostip)
-
Build and push images
cd ./extras/images make -e REGISTRY_HOST=$(cat ../cluster/registry.conf.d/hostip) -j3 cd ../.. # change directory back to the project root
-
Export the path to
kubeconfig
export KUBECONFIG=./extras/cluster/kubeconfig
because relative paths break easily, I recommend using full file path;
export KUBECONFIG=$(pwd)/extras/cluster/kubeconfig
-
Install the chart
helm install rapidpro ./rapidpro/ \ --set global.databaseHost.postgres.host=$(cat extras/cluster/postgresql.conf.d/hostip) \ --set global.registry.host=$(cat ./extras/cluster/registry.conf.d/hostip)
-
Wait for the services to be in a running state;
watch kubectl get pods
-
If all services are up and running, on the browser goto the url
localhost:8080/
.
-
RapidPro project.
-
Praekelt.org for the initial docker base images for mailroom and courier.