Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

This document outlines running bahmni kubernetes cluster using minikube for local development. Minikube in general is not recomeded for Production usage (while technically possible) - for the biggest reason that it runs a single node kubernetes cluster and would result in a single point of failure (even if it could handle managing and scaling pods).

Prerequisite Knowledge:

Setup

  1. Install docker

  2. Install minikube >=1.25.2

  3. Install Helm-3

  4. Increase resources of your docker to a memory of atleast 8GB. (Mac / Windows)

You can also run minikube without using docker. Look here.

Start minikube with decent resources

Code Block
minikube start --driver=docker --memory 7000 --cpus=4

...

Code Block
😄  minikube v1.25.2 on Darwin 10.15.7
✨  Using the docker driver based on user configuration
👍  Starting control plane node minikube in cluster minikube
🚜  Pulling base image ...
🔥  Creating docker container (CPUs=4, Memory=7000MB) ...\

Enable Ingress

Ingress would act as a controller to route between various applicaitons

minikube addons enable ingress

Add nginx ingress host entry to etc host

MacOS / Linux

Code Block
sudo vi /etc/hosts

# bahmni kubernetes nginx-ingress
127.0.0.1 bahmni.k8s

# bahmni crater kubernetes nginx-ingress
127.0.0.1 payments-bahmni.k8s

...

Code Block
    Press the Windows key.

    Type Notepad in the search field.

    In the search results, right-click Notepad and select Run as administrator.

    From Notepad, open the following file:

    c:\Windows\System32\Drivers\etc\hosts

    Make the necessary changes to the file.

    Select File > Save to save your changes.

Run minikube tunnel in separate terminal

minikube tunnel runs as a process, creating a network route on the host to the
service CIDR of the cluster using the cluster’s IP address as a gateway. The
tunnel command exposes the external IP directly to any program running on the
host operating system.

...

Run this in a separate terminal and keep it open

Running MySQL DB Server

Code Block
helm install --repo https://charts.bitnami.com/bitnami openmrsdb mysql --set auth.rootPassword=root --set image.tag=5.7

...

Code Block
kubectl delete -R -f db/.

Running Database setup helm chart

Code Block
languagebash
helm install db-setup db-setup --repo https://bahmni.github.io/helm-charts --devel --wait --wait-for-jobs --atomic --timeout 1m \
          --set DB_HOST=openmrsdb \
          --set DB_ROOT_USERNAME=root \
          --set DB_ROOT_PASSWORD=root \
          --set databases.openmrs.DB_NAME=openmrs \
          --set databases.openmrs.USERNAME=openmrs-user \
          --set databases.openmrs.PASSWORD=password \
          --set databases.crater.DB_NAME=crater \
          --set databases.crater.USERNAME=crater-user \
          --set databases.crater.PASSWORD=password \
          --set databases.reports.DB_NAME=bahmni_reports \
          --set databases.reports.USERNAME=reports-user \
          --set databases.reports.PASSWORD=password

...

Code Block
mysql -h mysql.default.svc.cluster.local -uroot -proot

Installing bahmni cluster using Helm-Umbrella Chart

Clone the helm-umbrella-chart repository and run below commands on your terminal (read the notes below if you need to toggle on/off certain services in the cluster)

...

Code Block
//verify current context
$ kubectl config current-context
(or)
$ kubectl config view --minify

//Update current context to minikube
$ minikube update-context

Accessing Applications

Once the pods and services are running you can access it from the browser on

...