zkt26/z2
Bohdan Kapliuk a40f28696a kapliuk2
2026-04-22 16:09:21 +03:00
..
backend message 2026-04-08 12:36:10 +03:00
frontend message 2026-04-08 12:36:10 +03:00
deployment.yaml message 2026-04-08 12:36:10 +03:00
namespace.yaml message 2026-04-08 12:36:10 +03:00
prepare-app.sh message 2026-04-08 12:36:10 +03:00
README.md kapliuk2 2026-04-22 16:09:21 +03:00
remove-app.sh kapliuk2 2026-04-22 16:09:21 +03:00
service.yaml message 2026-04-08 12:36:10 +03:00
start-app.sh message 2026-04-08 12:36:10 +03:00
statefulset.yaml message 2026-04-08 12:36:10 +03:00
stop-app.sh kapliuk2 2026-04-22 16:09:21 +03:00

Zadanie 2 - webova aplikacia v Kubernetes

Tento projekt nasadzuje jednoduchu webovu aplikaciu do Kubernetes. Pouzivatel zada meno v prehliadaci, frontend ho odosle backend API a backend ulozi hodnotu do PostgreSQL. Ulozene mena sa potom znova zobrazia v prehliadaci.

Pouzite kontajnery

  • z2-frontend:latest - vlastny obraz Nginx, ktory obsluhuje staticky frontend a proxyuje API poziadavky na backendovu sluzbu.
  • z2-backend:latest - vlastny obraz Node.js a Express API, ktory uklada a cita pouzivatelske udaje z PostgreSQL.
  • postgres:15-alpine - databazovy kontajner bezici v StatefulSete s trvalym uloziskom.

Objekty Kubernetes

  • Namespace zkt26-z2 - oddeluje vsetky prostriedky aplikacie do jedneho namespace.
  • Deployment backend-deployment - spusta backend API kontajner.
  • Deployment frontend-deployment - spusta frontendovy Nginx kontajner.
  • Service backend-service - spristupnuje backend vo vnutri klastra.
  • Service frontend-service - spristupnuje frontend cez NodePort 30080.
  • Service postgres-service - stabilny sietovy endpoint pre PostgreSQL.
  • PersistentVolume postgres-pv - hostitelske ulozisko pre data PostgreSQL.
  • PersistentVolumeClaim postgres-pvc - pripaja ulozisko pre databazovy pod.
  • StatefulSet postgres-statefulset - spusta PostgreSQL s trvalymi datami.

Siete a zvazky

Aplikacia pouziva predvolene sietovanie klastra Kubernetes. Pody medzi sebou komunikuju cez Kubernetes sluzby:

  • frontend-service pre pristup z prehliadaca
  • backend-service pre komunikaciu frontendu s backendom
  • postgres-service pre komunikaciu backendu s databazou

Trvale data sa ukladaju pomocou:

  • PersistentVolume postgres-pv
  • PersistentVolumeClaim postgres-pvc

Zvazok pouziva hostPath na adrese /tmp/zkt26-postgres-data, takze data databazy ostanu dostupne aj po restarte podu.

Konfiguracia kontajnerov

Frontendovy kontajner je zalozeny na Nginx a obsahuje vlastny nginx.conf, ktory proxyuje poziadavky /api/* na backendovu sluzbu.

Backendovy kontajner pouziva pre pripojenie k databaze tieto premenne prostredia:

  • DB_HOST=postgres-service
  • DB_PORT=5432
  • DB_USER=user
  • DB_PASSWORD=password
  • DB_NAME=mydb

PostgreSQL kontajner je nakonfigurovany takto:

  • POSTGRES_USER=user
  • POSTGRES_PASSWORD=password
  • POSTGRES_DB=mydb

Ako aplikaciu pripravit, spustit, zastavit a odstranit

Prikazy spustite z adresara z2:

chmod +x prepare-app.sh start-app.sh stop-app.sh remove-app.sh
./prepare-app.sh
./start-app.sh

Na zastavenie aplikacie pouzite:

./stop-app.sh

Na uplne odstranenie aplikacie pouzite:

./remove-app.sh

Ako aplikaciu pozastavit

Aplikaciu je mozne pozastavit zmenou poctu replik deploymentov a statefulsetu na nulu:

kubectl scale deployment frontend-deployment --replicas=0 -n zkt26-z2
kubectl scale deployment backend-deployment --replicas=0 -n zkt26-z2
kubectl scale statefulset postgres-statefulset --replicas=0 -n zkt26-z2

Na jej opatovne spustenie:

kubectl scale deployment frontend-deployment --replicas=1 -n zkt26-z2
kubectl scale deployment backend-deployment --replicas=1 -n zkt26-z2
kubectl scale statefulset postgres-statefulset --replicas=1 -n zkt26-z2

Ako otvorit webovu aplikaciu

Po spusteni aplikacie v standardnom Kubernetes prostredi otvorte prehliadac na adrese:

  • http://localhost:30080

Ak pouzivate Minikube vo WSL s Docker driverom, skutocnu URL pre prehliadac ziskate pomocou:

minikube service frontend-service -n zkt26-z2 --url

Nechajte tento terminal otvoreny a otvorte vypisanu URL v prehliadaci.

Ak vase Kubernetes prostredie nespristupnuje NodePort priamo na localhoste alebo chcete pevny lokalny port, pouzite:

kubectl port-forward service/frontend-service 8080:80 -n zkt26-z2

Potom otvorte:

  • http://localhost:8080