add scripts and documentation
This commit is contained in:
parent
30fbf5a66a
commit
5591901e40
137
z2/README.md
137
z2/README.md
@ -0,0 +1,137 @@
|
||||
# Bank API – Kubernetes projekt
|
||||
|
||||
> Základ projektu a zdrojový kód aplikácie pochádza z repozitára [https://github.com/miracleqxz/K8s_project](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` – `hostPath` zväzok umiestnený na `/opt/mongodb-data` na node. Politika zachovania `Retain`.
|
||||
- `mongodb-pvc` – požiadavka na 1Gi zväzok priradená k `mongodb-pv`.
|
||||
|
||||
---
|
||||
|
||||
## Opis konfigurácie kontajnerov
|
||||
|
||||
**Backend:**
|
||||
- Premenná prostredia `MONGO_HOST` načítaná z ConfigMap `backend-config` s hodnotou `mongodb://mongodb:27017`.
|
||||
- Pamäťový limit: 200Mi, požiadavka: 100Mi.
|
||||
- `imagePullPolicy: Always` pre vždy aktuálny obraz.
|
||||
|
||||
**Frontend:**
|
||||
- Konfiguračný súbor nginx je mountovaný z ConfigMap `nginx-config` do `/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)
|
||||
|
||||
```bash
|
||||
chmod +x prepare-app.sh
|
||||
./prepare-app.sh
|
||||
```
|
||||
|
||||
### Spustenie aplikácie
|
||||
|
||||
```bash
|
||||
chmod +x start-app.sh
|
||||
./start-app.sh
|
||||
```
|
||||
|
||||
### Zastavenie a zmazanie aplikácie
|
||||
|
||||
```bash
|
||||
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:
|
||||
|
||||
```bash
|
||||
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
|
||||
```
|
||||
5
z2/prepare-app.sh
Normal file
5
z2/prepare-app.sh
Normal file
@ -0,0 +1,5 @@
|
||||
#!/bin/bash
|
||||
docker build --no-cache -t ghcr.io/miracleqxz/k8s_project/backend:latest ./backend
|
||||
docker build --no-cache -t ghcr.io/miracleqxz/k8s_project/web:latest -f ./nginx/Dockerfile .
|
||||
docker push ghcr.io/miracleqxz/k8s_project/backend:latest
|
||||
docker push ghcr.io/miracleqxz/k8s_project/web:latest
|
||||
3
z2/start-app.sh
Normal file
3
z2/start-app.sh
Normal file
@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
kubectl create namespace application --dry-run=client -o yaml | kubectl apply -f -
|
||||
helm install tasks-app ./tasks-app -n application
|
||||
3
z2/stop-app.sh
Normal file
3
z2/stop-app.sh
Normal file
@ -0,0 +1,3 @@
|
||||
#!/bin/bash
|
||||
helm uninstall tasks-app -n application
|
||||
kubectl delete namespace application
|
||||
Loading…
Reference in New Issue
Block a user