Update z2/README.md
This commit is contained in:
parent
aa03f35ae0
commit
e48a6ae8ea
282
z2/README.md
282
z2/README.md
@ -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 для быстрой сборки
|
||||
2. **Backend** - серверная часть, разработанная на Node.js с использованием Express.js
|
||||
3. **MongoDB** - база данных для хранения информации о транзакциях
|
||||
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
|
||||
|
||||
1. **expense-tracker-frontend** - контейнер с клиентской частью приложения
|
||||
- Базовый образ: node:20-bookworm-slim
|
||||
- Роль: Обслуживает пользовательский интерфейс приложения
|
||||
- Порт: 5173
|
||||
Zoznam použitých kontajnerov
|
||||
----------------------------
|
||||
|
||||
2. **expense-tracker-backend** - контейнер с серверной частью приложения
|
||||
- Базовый образ: node:20-bookworm-slim
|
||||
- Роль: Предоставляет API для работы с данными о транзакциях
|
||||
- Порт: 5000
|
||||
1. **expense-tracker-frontend** - kontajner s klientskou časťou aplikácie
|
||||
|
||||
3. **mongo** - контейнер с базой данных MongoDB
|
||||
- Базовый образ: mongo:latest
|
||||
- Роль: Хранение данных приложения
|
||||
- Порт: 27017
|
||||
- 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
|
||||
|
||||
## 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**
|
||||
- Имя: expense-tracker
|
||||
- Роль: Изолированное пространство имен для всех ресурсов приложения
|
||||
- Základný obraz: mongo:latest
|
||||
- Úloha: Ukladá údaje aplikácie
|
||||
- Port: 27017
|
||||
|
||||
2. **Deployment**
|
||||
- Frontend Deployment: Управляет репликами Pod с клиентской частью приложения
|
||||
- Backend Deployment: Управляет репликами Pod с серверной частью приложения
|
||||
Objekty Kubernetes a ich popis
|
||||
------------------------------
|
||||
|
||||
3. **StatefulSet**
|
||||
- MongoDB StatefulSet: Управляет Pod с базой данных MongoDB, сохраняя состояние и данные
|
||||
1. **Namespace**
|
||||
|
||||
4. **Service**
|
||||
- Frontend Service (NodePort): Предоставляет доступ к клиентской части приложения извне кластера
|
||||
- Backend Service (ClusterIP): Обеспечивает внутрикластерный доступ к API
|
||||
- MongoDB Service (ClusterIP): Обеспечивает внутрикластерный доступ к базе данных
|
||||
- Názov: expense-tracker
|
||||
- Úloha: Izolovaný menný priestor pre všetky zdroje aplikácie
|
||||
2. **Deployment**
|
||||
|
||||
5. **PersistentVolume и PersistentVolumeClaim**
|
||||
- MongoDB PV/PVC: Обеспечивает постоянное хранилище для данных MongoDB
|
||||
- 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**
|
||||
|
||||
1. **Services**
|
||||
- Frontend Service (NodePort): Доступен извне кластера через порт, назначаемый Kubernetes (30000-32767)
|
||||
- Backend Service (ClusterIP): Доступен внутри кластера по имени `backend-service:5000`
|
||||
- MongoDB Service (ClusterIP): Доступен внутри кластера по имени `mongodb-service:27017`
|
||||
- MongoDB PV/PVC: Poskytuje trvalé ukladanie údajov MongoDB
|
||||
|
||||
2. **Внутрикластерная DNS-система**
|
||||
- Позволяет компонентам приложения обращаться друг к другу по именам сервисов вместо IP-адресов
|
||||
Sieťová infraštruktúra
|
||||
----------------------
|
||||
|
||||
## Хранилища данных
|
||||
Aplikácia využíva nasledujúce sieťové prostriedky:
|
||||
|
||||
Приложение использует постоянное хранилище для базы данных MongoDB:
|
||||
1. **Služby**
|
||||
|
||||
1. **PersistentVolume**
|
||||
- Тип: HostPath (для локальной разработки)
|
||||
- Размер: 1Gi
|
||||
- Путь на хосте: `/mnt/data/mongodb`
|
||||
- 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**
|
||||
|
||||
2. **PersistentVolumeClaim**
|
||||
- Запрашивает 1Gi постоянного хранилища для MongoDB
|
||||
- Umožňuje aplikačným komponentom odkazovať na seba navzájom pomocou názvov služieb namiesto IP adries
|
||||
|
||||
## Конфигурация контейнеров
|
||||
Úložiská údajov
|
||||
---------------
|
||||
|
||||
1. **Frontend**
|
||||
- Environment: Для разработки используется Vite Dev Server с опцией `--host` для доступа извне
|
||||
- Ресурсы: Лимиты CPU: 0.5, Memory: 512Mi; Запросы CPU: 0.2, Memory: 256Mi
|
||||
Aplikácia používa trvalé úložisko pre databázu MongoDB:
|
||||
|
||||
2. **Backend**
|
||||
- Environment:
|
||||
- PORT: 5000
|
||||
- MONGO_URI: mongodb://mongodb-service:27017/expense-tracker
|
||||
- Ресурсы: Лимиты CPU: 0.5, Memory: 512Mi; Запросы CPU: 0.2, Memory: 256Mi
|
||||
1. **PersistentVolume**
|
||||
|
||||
3. **MongoDB**
|
||||
- Без дополнительной конфигурации, используется стандартный образ
|
||||
- Данные хранятся в постоянном хранилище
|
||||
- Ресурсы: Лимиты CPU: 0.5, Memory: 512Mi; Запросы CPU: 0.2, Memory: 256Mi
|
||||
- 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. Установленный и настроенный Kubernetes кластер (можно использовать Minikube для локальной разработки)
|
||||
2. Установленный и настроенный kubectl
|
||||
3. Docker
|
||||
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**
|
||||
|
||||
1. Выполните скрипт подготовки:
|
||||
```bash
|
||||
chmod +x prepare-app.sh
|
||||
./prepare-app.sh
|
||||
```
|
||||
- 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**
|
||||
|
||||
Скрипт выполнит следующие действия:
|
||||
- Создаст директорию для хранения данных MongoDB
|
||||
- Соберет Docker-образы для Frontend и Backend
|
||||
- Ž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
|
||||
-------------------
|
||||
|
||||
1. Выполните скрипт запуска:
|
||||
```bash
|
||||
chmod +x start-app.sh
|
||||
./start-app.sh
|
||||
```
|
||||
### Predpoklady
|
||||
|
||||
Скрипт выполнит следующие действия:
|
||||
- Создаст Namespace expense-tracker
|
||||
- Применит все конфигурационные файлы Kubernetes
|
||||
- Дождется запуска всех компонентов
|
||||
- Выведет URL для доступа к приложению
|
||||
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. Для остановки приложения выполните:
|
||||
```bash
|
||||
chmod +x stop-app.sh
|
||||
./stop-app.sh
|
||||
```
|
||||
1. Spustite prípravný skript:
|
||||
|
||||
Скрипт выполнит следующие действия:
|
||||
- Удалит все развернутые в 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
|
||||
|
||||
```
|
||||
|
||||
где:
|
||||
- 192.168.49.2 - IP-адрес узла кластера (для Minikube это IP-адрес виртуальной машины)
|
||||
- 30080 - назначенный NodePort для Frontend-сервиса
|
||||
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
|
||||
|
||||
- Для просмотра всех ресурсов в пространстве имен expense-tracker:
|
||||
```bash
|
||||
kubectl get all -n expense-tracker
|
||||
```
|
||||
Ďalšie informácie
|
||||
-----------------
|
||||
|
||||
- Для просмотра логов компонентов:
|
||||
```bash
|
||||
kubectl logs deployment/frontend -n expense-tracker
|
||||
kubectl logs deployment/backend -n expense-tracker
|
||||
kubectl logs statefulset/mongodb -n expense-tracker
|
||||
```
|
||||
- Zobrazenie všetkých zdrojov v mennom priestore sledovača výdavkov:
|
||||
|
||||
- Для доступа к оболочке контейнеров:
|
||||
```bash
|
||||
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
|
||||
```
|
||||
```
|
||||
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
|
||||
|
||||
```
|
Loading…
Reference in New Issue
Block a user