@@ -9,6 +9,35 @@ This Helm chart deploys the **Multi modal patient monitoring app** on Kubernetes
99- ` kubectl `
1010- ` helm ` (v3+)
1111- A working PersistentVolume provisioner (required for PVC binding)
12+ - ** NGINX Ingress Controller** (required when ` ingress.enabled: true ` , which is the default)
13+
14+ ### Ingress Controller prerequisite (required for default configuration)
15+
16+ This chart creates Ingress resources that use ` ingressClassName: nginx ` . You must have the
17+ NGINX Ingress Controller running in your cluster before installing the chart with ingress enabled.
18+
19+ ``` bash
20+ # Install NGINX Ingress Controller via Helm
21+ helm repo add ingress-nginx https://kubernetes.github.io/ingress-nginx
22+ helm repo update
23+ helm install ingress-nginx ingress-nginx/ingress-nginx \
24+ --namespace ingress-nginx --create-namespace
25+
26+ # Wait for the controller to be ready
27+ kubectl wait --namespace ingress-nginx \
28+ --for=condition=ready pod \
29+ --selector=app.kubernetes.io/component=controller \
30+ --timeout=120s
31+ ```
32+
33+ For ** Minikube** , enable the built-in ingress addon instead:
34+ ``` bash
35+ minikube addons enable ingress
36+ ```
37+
38+ If you do not have an ingress controller and do not wish to install one, set
39+ ` ingress.enabled: false ` in ` values.yaml ` and use port-forwarding to access the
40+ application (see [ Access without Ingress] ( #access-without-ingress-controller ) below).
1241
1342### Storage prerequisite (required)
1443
@@ -118,8 +147,30 @@ Healthy services will show:
118147- No crash loops
119148
120149
150+ ## Ingress Configuration
151+
152+ The chart creates two Ingress resources when ` ingress.enabled: true ` (default):
153+
154+ | Value | Default | Description |
155+ | ---| ---| ---|
156+ | ` ingress.enabled ` | ` true ` | Create Ingress resources for external access |
157+ | ` ingress.className ` | ` nginx ` | IngressClass to use (requires a matching controller) |
158+ | ` ingress.annotations ` | * (nginx-specific)* | Annotations applied to the main ingress |
159+ | ` ingress.hosts ` | ` multi-modal-patient-monitoring.local ` | Hostname and path routing rules |
160+
161+ To disable ingress (e.g., for environments without an ingress controller):
162+
163+ ``` bash
164+ helm install multi-modal-patient-monitoring . \
165+ --namespace multi-modal-patient-monitoring \
166+ --create-namespace \
167+ --set ingress.enabled=false
168+ ```
169+
121170## Access the Frontend UI
122- ### 1. Check the Ingress Resource
171+
172+ ### With Ingress (default)
173+ #### 1. Check the Ingress Resource
123174
124175Run the following command to view the ingress configuration:
125176
@@ -133,15 +184,15 @@ Example output:
133184NAME HOSTS PATHS ADDRESS PORTS
134185multi-modal-patient-monitoring multi-modal-patient-monitoring.local / xx.xx.xx.xx 80
135186```
136- ### 2. If an IP Address Appears in ADDRESS
187+ #### 2. If an IP Address Appears in ADDRESS
137188
138189Add the hostname mapping to your local machine:
139190``` bash
140191echo " <IP> multi-modal-patient-monitoring.local" | sudo tee -a /etc/hosts
141192```
142193Replace <IP > with the value shown in the ADDRESS column.
143194
144- ### 3. If the ADDRESS Field is Empty (Common in Minikube)
195+ #### 3. If the ADDRESS Field is Empty (Common in Minikube)
145196Some local Kubernetes environments (such as Minikube) do not automatically populate the ingress IP.
146197
147198Retrieve the Minikube cluster IP:
@@ -153,13 +204,13 @@ Then map the hostname to the IP:
153204echo " $( minikube ip) multi-modal-patient-monitoring.local" | sudo tee -a /etc/hosts
154205```
155206
156- ### 4. Enable Ingress in Minikube (if not already enabled)
207+ #### 4. Enable Ingress in Minikube (if not already enabled)
157208``` bash
158209minikube addons enable ingress
159210```
160211Wait a few moments for the ingress controller to start.
161212
162- ### 5.Open the Application
213+ #### 5.Open the Application
163214Open your browser and navigate to:
164215``` bash
165216http://< host-or-ip> /
@@ -183,6 +234,52 @@ From here you can access:
183234
184235 - Metrics Dashboard
185236
237+ ### Access without Ingress Controller
238+
239+ If you deployed with ` ingress.enabled: false ` or do not have an NGINX Ingress Controller,
240+ you can access the application using ` kubectl port-forward ` .
241+
242+ #### Forward the UI service
243+ ``` bash
244+ kubectl port-forward -n multi-modal-patient-monitoring svc/ui 8080:80
245+ ```
246+ Then open http://localhost:8080 in your browser.
247+
248+ #### Forward the Aggregator API (video streams and API)
249+ ``` bash
250+ kubectl port-forward -n multi-modal-patient-monitoring svc/aggregator 8081:80
251+ ```
252+ The aggregator API is then available at http://localhost:8081 .
253+
254+ #### Forward the Pose Estimation stream
255+ ``` bash
256+ kubectl port-forward -n multi-modal-patient-monitoring svc/pose 8085:8085
257+ ```
258+ The pose video feed is then available at http://localhost:8085/video_feed and
259+ http://localhost:8085/pose-video .
260+
261+ > ** Tip:** You can run all three ` port-forward ` commands in separate terminal windows
262+ > to access the full application simultaneously.
263+
264+ #### Alternative: NodePort access
265+
266+ You can also switch the services to NodePort type by overriding the service type:
267+
268+ ``` bash
269+ helm install multi-modal-patient-monitoring . \
270+ --namespace multi-modal-patient-monitoring \
271+ --create-namespace \
272+ --set ingress.enabled=false \
273+ --set service.type=NodePort
274+ ```
275+
276+ Then find the assigned node ports:
277+ ``` bash
278+ kubectl get svc -n multi-modal-patient-monitoring
279+ ```
280+
281+ Access the services at ` http://<node-ip>:<node-port> ` .
282+
186283
187284## Uninstall
188285``` bash
0 commit comments