/
Bahmni Lite Helm Charts

Bahmni Lite Helm Charts

What is Helm-chart?

Helm is the package manager for Kubernetes.
Helm uses a packaging format called charts. A chart is a collection of files that describe a related set of Kubernetes resources. A single chart might be used to deploy something simple, like a memcached pod, or something complex, like a full web app stack with HTTP servers, databases, caches, and so on.

https://helm.sh/

Why Bahmni prefer using helm-charts ?

Bahmni preferred using helm-charts over other tools due to the following reasons:

🔘 Reduces the complexity of deploying microservices 🔘 Simplifies deployment scripts and files (all defined in YAML) 🔘 Improves the productivity of the deployments and rollback 🔘 Provides a way of versioning the Kubernetes resources as a single unit.

Bahmni: Helm Charts

Bahmni is using Helm-charts for its Kubernetes Packaging Structure . All the deployments in the Lite env happened using helm-charts deployment. We have implemented helm-umbrella-charts for better management of resources.

Below is the K8s packaging Structure we follow in Bahmni:

Helm with Umbrella Charts Directory Structure for Applications: --- bahmni (openmrs-module-bahmniapps repo) - package - docker - Dockerfile - .... - helm -- Chart.yaml --> holds the chart definition -- values.yaml --> default values, secret ref - templates -- deployment -- service -- secrets --- openmrs (openmrs-module-bahmni-distro repo) - package - docker - Dockerfile - ... - helm -- Chart.yaml --> holds the chart definition -- values.yaml --> default values, secret ref - templates -- deployment -- service -- secrets ================================================================================= ================================================================================= --- helm-charts (https://github.com/Bahmni/helm-charts/tree/gh-pages) -- openmrs (Application folder) - openmrs-<release_tag>.tgz ---> Relase of <Application> -- clinic-config - clinic-config-<Release_tag>.tgz --- Umbrella charts (https://github.com/Bahmni/helm-umbrella-chart) -- Chart.yaml --> Contains the dependencies defined helm-charts - clinic - dev.yaml - qa.yaml - demo.yaml - prod.yaml

 

All the Deployments are automated using Github actions. Refer the repository links attached with helm-charts & Umbrella-charts.

 

  • For any application in Bahmni we have followed the above directory structure.

    • Lets refer to Bahmni-lab repo as an example

    • Docker folder contains Dockerfile & other related files needed for docker-compose setup

    • Helm folder contains the helm templates like, values.yaml, chart.yaml & related Kubernetes components definition like deployments , services , secrets etc.

  • Helm-charts: This is used to store the deployed helm-charts tagged build under gh-pages

  • Umbrella-charts: This is used to define the dependent charts to be deployed in the environment along with the individual env values defined in dev.yaml , qa.yaml , demo.yaml .


Pipeline Visualisation


Below is the pictorial representation of deployment pipeline.


References


Video Recording about Bahmni Helm-charts

https://thoughtworks.zoom.us/rec/share/y_mdW5zvdapFmpZ1ymkLEOHEob9vu7u-GjelszpmEsEuDG_AIj5U2LPB98-Rm_HS.RjrPR9cd58KNKdJ0
Passcode: VB?WSC#3


NOTE: Please contact Infra squad (Slack: #bahmni-infra) if you are facing any issues related to helm-charts & Deployments

Related content

Monitoring & Centralised Logging Installation for Kubernetes environments
Monitoring & Centralised Logging Installation for Kubernetes environments
More like this
Bahmni Lite AWS Architecture
Bahmni Lite AWS Architecture
Read with this
Bahmni on Docker Swarm
Bahmni on Docker Swarm
More like this
Bahmni Lite Environments
Bahmni Lite Environments
Read with this
Setup Bahmni Observability Stack
Setup Bahmni Observability Stack
More like this
Upgrading Bahmni on CentOS to Bahmni Standard (or Lite) on Docker
Upgrading Bahmni on CentOS to Bahmni Standard (or Lite) on Docker
Read with this

The Bahmni documentation is licensed under Creative Commons Attribution-ShareAlike 4.0 International (CC BY-SA 4.0)