We are evaluating providing documentation and tooling for deployment of OpenMRS to Kubernetes.
Kubernetes is open-source and supported by all big cloud vendors such as AWS, Azure, Google Cloud, smaller vendors and can be deployed on premise.
We will not be providing guidance on deployment and management of Kubernetes itself.
The proposed solution for Kubernetes will include Helm charts for production grade deployments of OpenMRS 3. They will be cloud vendor agnostic i.e. they will include minimal setup for deploying OpenMRS application, database and http gateway. The database and gateway will be optionally replaceable by services hosted by vendors.
A single Kubernetes cluster should be able to handle multiple deployments of OpenMRS with shared pool of VMs to support multi-tenancy in a scenario with one OpenMRS application container per tenant and a possibility to share database engine, but each tenant using a separate schema.
Container cluster such as Kubernetes provides us heavy lifting for high availability, better resource utilization than dedicated machines or VMs, logs aggregation and monitoring, upgrades, cloud compatibility.
Initial features will include:
- DB and DB read replica configured out of the box with automated backups.
- HTTP gateway for serving frontend and backend requests
- Health checks and automated restarts in case of failures
- Aggregated logs and metrics for OpenMRS service and DB.
- Rolling upgrades of containers
Prospectively we envision providing:
- Support for deployments with DB engine shared between OpenMRS deployments, but separate schemas (to support multi-tenancy for smaller facilities at lower cost)
- Support for OpenSearch indexes for patient and concept search for improved speed and HA.
- Support for OpenMRS service replicas with load-balancer in front for high availability and performance.
- Maintenance pages for upgrades
- Error logs notifications
Proposed vendors checklist for running a single deployment of OpenMRS:
- Kubernetes version 1.29
- Min. 2 VMs with 1.5+ GHz CPU, 2+ GB of RAM, 50+ GB of SSD (DB, DB replica, OpenMRS instance, http gateway)
- Optionally (recommended) vendor hosted MySQL 8.x with automated backups.
- Optionally (recommended) vendor hosted gateway with load balancing e.g. ELB (AWS), Gateway Load Balancer / Front Door (Azure)
We are sill in the evaluation phase and are open to go with any cluster technology and architecture so your feedback, experience and usage scenarios is invaluable. If there’s anything that you would like to accomplish in not so distant future, but are not sure how to go about it e.g. multi-tenancy, specific reporting needs, synchronization, geo-distribution, other concerns, please throw these on us and we can continue to refine the proposed architecture.