.. | ||
Backend | ||
Frontend | ||
deployment.yaml | ||
docker-compose.yml | ||
namespace.yaml | ||
prepare-app.sh | ||
README.md | ||
remove-app.sh | ||
service.yaml | ||
start-app.sh | ||
statefulset.yaml | ||
stop-app.sh |
Sledovanie výdavkov - nasadenie Kubernetes
Popis aplikácie
Expense Tracker je webová aplikácia na sledovanie osobných financií a správu výdavkov. Aplikácia umožňuje používateľom:
- Pridávať nové transakcie s uvedením sumy, typu (príjem/výdavok) a kategórie
- Zobraziť históriu transakcií
- Analyzovať výdavky podľa kategórií
- Sledovať zostatok na účte
Architektúra aplikácie
Aplikácia je postavená na zásobníku MERN (MongoDB, Express.js, React, Node.js) a pozostáva z troch hlavných komponentov:
- Frontend - klientska strana vyvinutá v Reacte pomocou Vite na rýchle zostavovanie
- Backend - strana servera vyvinutá v Node.js pomocou Express.js
- MongoDB - databáza na ukladanie informácií o transakciách
Zoznam použitých kontajnerov
-
expense-tracker-frontend - kontajner s klientskou časťou aplikácie
- Základný obraz: node:20-bookworm-slim
- Úloha: Slúži ako používateľské rozhranie aplikácie
- Port: 5173
-
expense-tracker-backend - kontajner so serverovou časťou aplikácie
- Základný obraz: node:20-bookworm-slim
- Úloha: Poskytuje API na prácu s údajmi o transakciách
- Port: 5000
-
mongo - kontajner s databázou MongoDB
- Základný obraz: mongo:latest
- Úloha: Ukladá údaje aplikácie
- Port: 27017
Objekty Kubernetes a ich popis
-
Namespace
- Názov: expense-tracker
- Úloha: Izolovaný menný priestor pre všetky zdroje aplikácie
-
Deployment
- Frontend Deployment: Spravuje repliky Pod s klientskou stranou aplikácie
- Backend Deployment: Spravuje repliky Pod so serverovou časťou aplikácie
-
StatefulSet
- MongoDB StatefulSet: Spravuje Pod s databázou MongoDB, ukladá stav a údaje
-
Service
- Frontend Service (NodePort): Poskytuje prístup ku klientskej strane aplikácie z prostredia mimo klastra
- Backend Service (ClusterIP): Poskytuje prístup k rozhraniu API v rámci klastra
- Služba MongoDB (ClusterIP): Poskytuje prístup k databáze v rámci klastra
-
PersistentVolume a PersistentVolumeClaim
- MongoDB PV/PVC: Poskytuje trvalé ukladanie údajov MongoDB
Sieťová infraštruktúra
Aplikácia využíva nasledujúce sieťové prostriedky:
-
Služby
- Frontend Service (NodePort): Prístup z vonkajšej strany klastra cez port pridelený systémom Kubernetes (30000-32767)
- Backend Service (ClusterIP): Prístup zvnútra klastra cez
backend-service:5000
- MongoDB Service (ClusterIP): Prístupné v rámci clusteru pod názvom
mongodb-service:27017
-
Intra-cluster DNS System
- Umožňuje aplikačným komponentom odkazovať na seba navzájom pomocou názvov služieb namiesto IP adries
Úložiská údajov
Aplikácia používa trvalé úložisko pre databázu MongoDB:
-
PersistentVolume
- Typ: HostPath (pre lokálny vývoj)
- Veľkosť: 1Gi
- HostPath:
/mnt/data/mongodb
-
PersistentVolumeClaim
- Požaduje 1Gi trvalého úložiska
Konfigurácia kontajnera
-
Frontend
- Prostredie: Na vývoj sa používa Vite Dev Server s možnosťou
--host
pre externý prístup - Zdroje: Limity CPU: 0,5, Pamäť: 512Mi; Požiadavky CPU: 0,2, Pamäť: 256Mi
- Prostredie: Na vývoj sa používa Vite Dev Server s možnosťou
-
Backend
- Prostredie:
- PORT: 5000
- MONGO_URI: mongodb://mongodb-service:27017/expense-tracker
- Zdroje: Limity CPU: 0,5, Pamäť: 512Mi; Požiadavky CPU: 0,2, Pamäť: 256Mi
- Prostredie:
-
MongoDB
- Žiadna ďalšia konfigurácia, používa sa štandardný obraz
- Údaje sú uložené v trvalom úložisku
- Zdroje: Limity CPU: 0,5, Pamäť: 512Mi; Požiadavky CPU: 0,2, Pamäť: 256Mi
Pokyny na spustenie
Predpoklady
- Nainštalovaný a nakonfigurovaný klaster Kubernetes (na lokálny vývoj môžete použiť Minikube)
- Nainštalovaný a nakonfigurovaný kubectl
- Docker
Príprava aplikácie
-
Spustite prípravný skript:
chmod +x prepare-app.sh ./prepare-app.sh
Skript vykoná nasledujúce činnosti:
- Vytvorí adresár na uloženie údajov MongoDB
- Vytvorí obrazy Docker pre Frontend a Backend
Spustenie aplikácie
-
Spustite spúšťací skript:
chmod +x start-app.sh ./start-app.sh
Skript vykoná nasledujúce kroky:
- Vytvorí menný priestor pre sledovanie výdavkov
- Použije všetky konfiguračné súbory Kubernetes
- Počká na spustenie všetkých komponentov
- Vypíše adresu URL na prístup k aplikácii
Zastavenie aplikácie
-
Ak chcete zastaviť aplikáciu, vykonajte:
chmod +x stop-app.sh ./stop-app.sh
Skript vykoná nasledujúce činnosti:
- Odstráni všetky aplikačné zdroje nasadené v systéme Kubernetes
Prístup k aplikácii
Po úspešnom spustení získate vo výstupe skriptu start-app.sh adresu URL na prístup k aplikácii. Zvyčajne to bude niečo také:
http://192.168.49.2:30080
Kde:
- 192.168.49.2 - IP adresa uzla klastra (pre Minikube je to IP adresa virtuálneho počítača)
- 30080 - pridelený NodePort pre službu Frontend
Ďalšie informácie
-
Zobrazenie všetkých zdrojov v mennom priestore sledovača výdavkov:
kubectl get all -n expense-tracker
-
Zobrazenie protokolov komponentov:
kubectl logs deployment/frontend -n expense-tracker kubectl logs deployment/backend -n expense-tracker kubectl logs statefulset/mongodb -n expense-tracker
-
Prístup do kontajnerového shellu:
kubectl exec -it deployment/frontend -n expense-tracker -- sh kubectl exec -it deployment/backend -n expense-tracker -- sh kubectl exec -it statefulset/mongodb -n expense-tracker -- sh