zkt26/z2
2026-05-13 21:49:47 +02:00
..
backend fix db name 2026-04-22 20:44:54 +02:00
fluent-bit initialize commit 2026-04-22 18:52:54 +02:00
frontend initialize commit 2026-04-22 18:52:54 +02:00
k8s_manifests/monitoring initialize commit 2026-04-22 18:52:54 +02:00
k8s_manual update gitlab link 2026-04-22 20:08:31 +02:00
nginx main commit 2026-05-13 21:49:47 +02:00
tasks-app fix nginx api proxy strip prefix 2026-04-22 21:07:52 +02:00
.gitignore remove .vagrant from tracking 2026-04-22 19:59:18 +02:00
prepare-app.sh add scripts and documentation 2026-04-22 21:15:18 +02:00
README.md add scripts and documentation 2026-04-22 21:15:18 +02:00
start-app.sh add scripts and documentation 2026-04-22 21:15:18 +02:00
stop-app.sh add scripts and documentation 2026-04-22 21:15:18 +02:00

Bank API Kubernetes projekt

Základ projektu a zdrojový kód aplikácie pochádza z repozitára https://github.com/miracleqxz/K8s_project.
Dokumentácia bola vypracovaná s pomocou umelej inteligencie (AI).


Opis aplikácie

Aplikácia Bank API je jednoduchý bankový systém dostupný cez webové rozhranie. Umožňuje používateľom:

  • registrovať sa,
  • pridávať peniaze na účet,
  • prevádzať peniaze medzi účtami,
  • kontrolovať zostatok,
  • brať a splácať pôžičky.

Frontend tvorí statická HTML stránka obsluhovaná nginx. Backend je REST API napísané v Pythone (Flask + Gunicorn). Dáta sú uložené v databáze MongoDB.


Zoznam použitých kontajnerov

Kontajner Obraz Opis
backend ghcr.io/miracleqxz/k8s_project/backend:latest Python Flask API, spúšťané cez Gunicorn na porte 5000
frontend ghcr.io/miracleqxz/k8s_project/web:latest nginx server so statickou HTML stránkou, proxy na backend
mongodb mongo:latest NoSQL databáza pre ukladanie používateľov a transakcií

Zoznam Kubernetes objektov

Objekt Názov Opis
Namespace application Izolovaný priestor pre všetky objekty aplikácie
Deployment backend Nasadenie backendovej aplikácie s 2 replikami
Deployment frontend Nasadenie frontendovej aplikácie s 1 replikou
StatefulSet mongodb Stavové nasadenie MongoDB databázy
Service backend ClusterIP služba pre backend na porte 5000
Service frontend NodePort služba pre frontend na porte 30856
Service mongodb ClusterIP služba pre MongoDB na porte 27017
ConfigMap backend-config Konfigurácia premenných prostredia pre backend (URL databázy)
ConfigMap nginx-config Konfigurácia nginx servera
PersistentVolume mongodb-pv Trvalý zväzok 1Gi na ceste /opt/mongodb-data
PersistentVolumeClaim mongodb-pvc Požiadavka na trvalý zväzok pre MongoDB

Opis virtuálnych sietí a zväzkov

Sieť:
Všetky objekty komunikujú v rámci Kubernetes internej siete v namespace application. Backend a MongoDB sú dostupné len interne cez ClusterIP. Frontend je dostupný externe cez NodePort 30856.

Nginx proxy preposiela požiadavky na /api/ na backend service (backend:5000).

Zväzky:

  • mongodb-pv hostPath zväzok umiestnený na /opt/mongodb-data na node. Politika zachovania Retain.
  • mongodb-pvc požiadavka na 1Gi zväzok priradená k mongodb-pv.

Opis konfigurácie kontajnerov

Backend:

  • Premenná prostredia MONGO_HOST načítaná z ConfigMap backend-config s hodnotou mongodb://mongodb:27017.
  • Pamäťový limit: 200Mi, požiadavka: 100Mi.
  • imagePullPolicy: Always pre vždy aktuálny obraz.

Frontend:

  • Konfiguračný súbor nginx je mountovaný z ConfigMap nginx-config do /etc/nginx/nginx.conf.
  • Pamäťový limit: 200Mi, požiadavka: 100Mi.

MongoDB:

  • Dáta sú uložené v PersistentVolume na /data/db.

Návod na prácu s aplikáciou

Požiadavky

  • Docker
  • kubectl nakonfigurovaný na Kubernetes cluster
  • Helm 3

Príprava (zostavenie a nahranie obrazov)

chmod +x prepare-app.sh
./prepare-app.sh

Spustenie aplikácie

chmod +x start-app.sh
./start-app.sh

Zastavenie a zmazanie aplikácie

chmod +x stop-app.sh
./stop-app.sh
kubectl delete pv mongodb-pv

Zobrazenie aplikácie v prehliadači

Po spustení otvorte prehliadač a zadajte adresu:

http://<IP-adresa-node>:30856

IP adresu nodu zistíte príkazom:

kubectl get nodes -o wide

Štruktúra projektu

z2/
├── backend/          # Python Flask aplikácia
├── frontend/         # Statická HTML stránka
├── nginx/            # Nginx Dockerfile a konfigurácia
├── tasks-app/        # Helm chart
├── prepare-app.sh    # Skript na zostavenie obrazov
├── start-app.sh      # Skript na spustenie aplikácie
└── stop-app.sh       # Skript na zastavenie aplikácie