4.1 KiB
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–hostPathzväzok umiestnený na/opt/mongodb-datana node. Politika zachovaniaRetain.mongodb-pvc– požiadavka na 1Gi zväzok priradená kmongodb-pv.
Opis konfigurácie kontajnerov
Backend:
- Premenná prostredia
MONGO_HOSTnačítaná z ConfigMapbackend-configs hodnotoumongodb://mongodb:27017. - Pamäťový limit: 200Mi, požiadavka: 100Mi.
imagePullPolicy: Alwayspre vždy aktuálny obraz.
Frontend:
- Konfiguračný súbor nginx je mountovaný z ConfigMap
nginx-configdo/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