zkt25/z2
2025-04-10 07:43:48 +00:00
..
Backend z2 upload 2025-04-10 08:22:24 +02:00
Frontend z2 upload 2025-04-10 08:22:24 +02:00
deployment.yaml z2 upload 2025-04-10 08:22:24 +02:00
docker-compose.yml z2 upload 2025-04-10 08:22:24 +02:00
namespace.yaml z2 upload 2025-04-10 08:22:24 +02:00
prepare-app.sh z2 upload 2025-04-10 08:22:24 +02:00
README.md Update z2/README.md 2025-04-10 07:43:48 +00:00
remove-app.sh z2 upload 2025-04-10 08:22:24 +02:00
service.yaml z2 upload 2025-04-10 08:22:24 +02:00
start-app.sh z2 upload 2025-04-10 08:22:24 +02:00
statefulset.yaml z2 upload 2025-04-10 08:22:24 +02:00
stop-app.sh z2 upload 2025-04-10 08:22:24 +02:00

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:

  1. Frontend - klientska strana vyvinutá v Reacte pomocou Vite na rýchle zostavovanie
  2. Backend - strana servera vyvinutá v Node.js pomocou Express.js
  3. MongoDB - databáza na ukladanie informácií o transakciách

Zoznam použitých kontajnerov

  1. 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
  2. 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
  3. mongo - kontajner s databázou MongoDB

    • Základný obraz: mongo:latest
    • Úloha: Ukladá údaje aplikácie
    • Port: 27017

Objekty Kubernetes a ich popis

  1. Namespace

    • Názov: expense-tracker
    • Úloha: Izolovaný menný priestor pre všetky zdroje aplikácie
  2. Deployment

    • Frontend Deployment: Spravuje repliky Pod s klientskou stranou aplikácie
    • Backend Deployment: Spravuje repliky Pod so serverovou časťou aplikácie
  3. StatefulSet

    • MongoDB StatefulSet: Spravuje Pod s databázou MongoDB, ukladá stav a údaje
  4. 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
  5. 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:

  1. 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
  2. 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:

  1. PersistentVolume

    • Typ: HostPath (pre lokálny vývoj)
    • Veľkosť: 1Gi
    • HostPath: /mnt/data/mongodb
  2. PersistentVolumeClaim

    • Požaduje 1Gi trvalého úložiska

Konfigurácia kontajnera

  1. 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
  2. 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
  3. 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

  1. Nainštalovaný a nakonfigurovaný klaster Kubernetes (na lokálny vývoj môžete použiť Minikube)
  2. Nainštalovaný a nakonfigurovaný kubectl
  3. Docker

Príprava aplikácie

  1. 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

  1. 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

  1. 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