Cluster and cloud support for OpenMRS

Brief thoughts on Infra Automation and Kubernetes setup from Bahmni Team.

  • We have developed Terraform Scripts along with associated Github Actions to completely provision the infrastructure on AWS which includes VPC, EKS, RDS and other necessary components. The repository is available here.

  • We have also developed the helm charts for all of the services of Bahmni Lite. (WIP for Bahmni Standard services). Helm configuration which runs the OpenMRS service can be found here. For local developement and testing we have used Minikube to deploy the configurations.

  • Since Bahmni runs with multiple services, to make the deployments easier, we have taken the helm-umbrella-chart approach to have sub-charts as dependencies.

  • For Monitoring stack we have leveraged the kube-prometheus-stack maintained by Prometheus community which comes with a decent set of pre-configured Dashboards and Metrics.

  • For Centralised Logging we have seen PLG stack to be light weight and we are using the loki-stack from Grafana Community

Challenges that we faced during the configurations:

  • Use of EFS based Persistent Volumes: Initially we started with EBS based persistent volumes which had issues when we had to scale nodes across AWS Availability Zones. So we moved over to have all the PVs with an EFS based storage class and driver.

  • Scaling of more than one pod for OMRS: As pointed out by @raff already, session management was difficult when we had to run more than one replica of OMRS service. So far we have been running with a single pod.

There has few discussions about multi-tenancy already with Bahmni and OpenMRS. We have identified 5 high level areas. Please refer this talk thread.

cc. @angshuonline @rahu1ramesh @raff

1 Like