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:
Docker: Getting started
Kubernetes components
Understand Minikube
Helm Quick Start
Setup
Install docker
Install minikube >=1.25.2
Install Helm-3
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 | ||
---|---|---|
| ||
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
...