Update z2/README.md

This commit is contained in:
Andrii Pervashov 2025-04-10 07:43:48 +00:00
parent aa03f35ae0
commit e48a6ae8ea

View File

@ -1,173 +1,207 @@
# Expense Tracker - Kubernetes Deployment Sledovanie výdavkov - nasadenie Kubernetes
==========================================
## Описание приложения Popis aplikácie
---------------
Expense Tracker - это веб-приложение для отслеживания личных финансов и управления расходами. Приложение позволяет пользователям: 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
Приложение построено на стеке MERN (MongoDB, Express.js, React, Node.js) и состоит из трех основных компонентов: Architektúra aplikácie
----------------------
1. **Frontend** - клиентская часть, разработанная на React с использованием Vite для быстрой сборки Aplikácia je postavená na zásobníku MERN (MongoDB, Express.js, React, Node.js) a pozostáva z troch hlavných komponentov:
2. **Backend** - серверная часть, разработанная на Node.js с использованием Express.js
3. **MongoDB** - база данных для хранения информации о транзакциях
## Список использованных контейнеров 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
1. **expense-tracker-frontend** - контейнер с клиентской частью приложения Zoznam použitých kontajnerov
- Базовый образ: node:20-bookworm-slim ----------------------------
- Роль: Обслуживает пользовательский интерфейс приложения
- Порт: 5173
2. **expense-tracker-backend** - контейнер с серверной частью приложения 1. **expense-tracker-frontend** - kontajner s klientskou časťou aplikácie
- Базовый образ: node:20-bookworm-slim
- Роль: Предоставляет API для работы с данными о транзакциях
- Порт: 5000
3. **mongo** - контейнер с базой данных MongoDB - Základný obraz: node:20-bookworm-slim
- Базовый образ: mongo:latest - Úloha: Slúži ako používateľské rozhranie aplikácie
- Роль: Хранение данных приложения - Port: 5173
- Порт: 27017 2. **expense-tracker-backend** - kontajner so serverovou časťou aplikácie
## Kubernetes объекты и их описание - 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
1. **Namespace** - Základný obraz: mongo:latest
- Имя: expense-tracker - Úloha: Ukladá údaje aplikácie
- Роль: Изолированное пространство имен для всех ресурсов приложения - Port: 27017
2. **Deployment** Objekty Kubernetes a ich popis
- Frontend Deployment: Управляет репликами Pod с клиентской частью приложения ------------------------------
- Backend Deployment: Управляет репликами Pod с серверной частью приложения
3. **StatefulSet** 1. **Namespace**
- MongoDB StatefulSet: Управляет Pod с базой данных MongoDB, сохраняя состояние и данные
4. **Service** - Názov: expense-tracker
- Frontend Service (NodePort): Предоставляет доступ к клиентской части приложения извне кластера - Úloha: Izolovaný menný priestor pre všetky zdroje aplikácie
- Backend Service (ClusterIP): Обеспечивает внутрикластерный доступ к API 2. **Deployment**
- MongoDB Service (ClusterIP): Обеспечивает внутрикластерный доступ к базе данных
5. **PersistentVolume и PersistentVolumeClaim** - Frontend Deployment: Spravuje repliky Pod s klientskou stranou aplikácie
- MongoDB PV/PVC: Обеспечивает постоянное хранилище для данных MongoDB - 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**
1. **Services** - MongoDB PV/PVC: Poskytuje trvalé ukladanie údajov MongoDB
- Frontend Service (NodePort): Доступен извне кластера через порт, назначаемый Kubernetes (30000-32767)
- Backend Service (ClusterIP): Доступен внутри кластера по имени `backend-service:5000`
- MongoDB Service (ClusterIP): Доступен внутри кластера по имени `mongodb-service:27017`
2. **Внутрикластерная DNS-система** Sieťová infraštruktúra
- Позволяет компонентам приложения обращаться друг к другу по именам сервисов вместо IP-адресов ----------------------
## Хранилища данных Aplikácia využíva nasledujúce sieťové prostriedky:
Приложение использует постоянное хранилище для базы данных MongoDB: 1. **Služby**
1. **PersistentVolume** - Frontend Service (NodePort): Prístup z vonkajšej strany klastra cez port pridelený systémom Kubernetes (30000-32767)
- Тип: HostPath (для локальной разработки) - Backend Service (ClusterIP): Prístup zvnútra klastra cez `backend-service:5000`
- Размер: 1Gi - MongoDB Service (ClusterIP): Prístupné v rámci clusteru pod názvom `mongodb-service:27017`
- Путь на хосте: `/mnt/data/mongodb` 2. **Intra-cluster DNS System**
2. **PersistentVolumeClaim** - Umožňuje aplikačným komponentom odkazovať na seba navzájom pomocou názvov služieb namiesto IP adries
- Запрашивает 1Gi постоянного хранилища для MongoDB
## Конфигурация контейнеров Úložiská údajov
---------------
1. **Frontend** Aplikácia používa trvalé úložisko pre databázu MongoDB:
- Environment: Для разработки используется Vite Dev Server с опцией `--host` для доступа извне
- Ресурсы: Лимиты CPU: 0.5, Memory: 512Mi; Запросы CPU: 0.2, Memory: 256Mi
2. **Backend** 1. **PersistentVolume**
- Environment:
- PORT: 5000
- MONGO_URI: mongodb://mongodb-service:27017/expense-tracker
- Ресурсы: Лимиты CPU: 0.5, Memory: 512Mi; Запросы CPU: 0.2, Memory: 256Mi
3. **MongoDB** - Typ: HostPath (pre lokálny vývoj)
- Без дополнительной конфигурации, используется стандартный образ - Veľkosť: 1Gi
- Данные хранятся в постоянном хранилище - HostPath: `/mnt/data/mongodb`
- Ресурсы: Лимиты CPU: 0.5, Memory: 512Mi; Запросы CPU: 0.2, Memory: 256Mi 2. **PersistentVolumeClaim**
## Инструкция по запуску - Požaduje 1Gi trvalého úložiska
### Предварительные требования Konfigurácia kontajnera
-----------------------
1. Установленный и настроенный Kubernetes кластер (можно использовать Minikube для локальной разработки) 1. **Frontend**
2. Установленный и настроенный kubectl
3. Docker
### Подготовка приложения - 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**
1. Выполните скрипт подготовки: - Prostredie:
```bash - PORT: 5000
chmod +x prepare-app.sh - MONGO_URI: mongodb://mongodb-service:27017/expense-tracker
./prepare-app.sh - 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
- Создаст директорию для хранения данных MongoDB - Údaje sú uložené v trvalom úložisku
- Соберет Docker-образы для Frontend и Backend - Zdroje: Limity CPU: 0,5, Pamäť: 512Mi; Požiadavky CPU: 0,2, Pamäť: 256Mi
### Запуск приложения Pokyny na spustenie
-------------------
1. Выполните скрипт запуска: ### Predpoklady
```bash
chmod +x start-app.sh
./start-app.sh
```
Скрипт выполнит следующие действия: 1. Nainštalovaný a nakonfigurovaný klaster Kubernetes (na lokálny vývoj môžete použiť Minikube)
- Создаст Namespace expense-tracker 2. Nainštalovaný a nakonfigurovaný kubectl
- Применит все конфигурационные файлы Kubernetes 3. Docker
- Дождется запуска всех компонентов
- Выведет URL для доступа к приложению
### Остановка приложения ### Príprava aplikácie
1. Для остановки приложения выполните: 1. Spustite prípravný skript:
```bash
chmod +x stop-app.sh
./stop-app.sh
```
Скрипт выполнит следующие действия: ```
- Удалит все развернутые в Kubernetes ресурсы приложения 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é:
После успешного запуска вы получите URL для доступа к приложению в выводе скрипта start-app.sh. Обычно это будет что-то вроде:
``` ```
http://192.168.49.2:30080 http://192.168.49.2:30080
``` ```
где: Kde:
- 192.168.49.2 - IP-адрес узла кластера (для Minikube это IP-адрес виртуальной машины)
- 30080 - назначенный NodePort для Frontend-сервиса
## Дополнительная информация - 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
- Для просмотра всех ресурсов в пространстве имен expense-tracker: Ďalšie informácie
```bash -----------------
kubectl get all -n expense-tracker
```
- Для просмотра логов компонентов: - Zobrazenie všetkých zdrojov v mennom priestore sledovača výdavkov:
```bash
kubectl logs deployment/frontend -n expense-tracker
kubectl logs deployment/backend -n expense-tracker
kubectl logs statefulset/mongodb -n expense-tracker
```
- Для доступа к оболочке контейнеров: ```
```bash kubectl get all -n expense-tracker
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
``` - 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
```