System zarządzania zadaniami wdrażany na Kubernetes.
├── app/
│ └── backend/
│ ├── Dockerfile
│ ├── package.json
│ └── src/
│ └── server.js
├── k8s/
│ ├── postgres/
│ │ ├── deployment.yaml
│ │ ├── service.yaml
│ │ ├── configmap.yaml
│ │ └── secret.yaml
│ └── backend/
│ ├── deployment.yaml
│ └── service.yaml
└── .gitignore
- Docker
- Kubernetes cluster (minikube, Docker Desktop, itp.)
- kubectl
- Node.js 20+ (do lokalnego testowania)
cd app/backend
npm install
npm run devcd app/backend
docker build -t task-manager-backend:latest .Dla minikube:
eval $(minikube docker-env)
docker build -t task-manager-backend:latest app/backend/# PostgreSQL
kubectl apply -f k8s/postgres/secret.yaml
kubectl apply -f k8s/postgres/configmap.yaml
kubectl apply -f k8s/postgres/deployment.yaml
kubectl apply -f k8s/postgres/service.yaml
# Backend
kubectl apply -f k8s/backend/deployment.yaml
kubectl apply -f k8s/backend/service.yamlkubectl get pods -w# Health check
curl http://localhost:8080/health
# Pobranie wszystkich zadań
curl http://localhost:8080/tasks
# Utworzenie nowego zadania
curl -X POST http://localhost:8080/tasks \
-H "Content-Type: application/json" \
-d '{"title":"Moje zadanie","description":"Opis zadania"}'- Backend: Node.js 20 Alpine
- Baza: PostgreSQL 16 Alpine
- Sieć: Kubernetes Service (ClusterIP dla DB, LoadBalancer dla API)
- Bez trwałych wolumenów w tej wersji
Backend odczytuje konfigurację z:
DB_HOST- adres PostgreSQLDB_PORT- port PostgreSQLDB_NAME- nazwa bazyDB_USER- użytkownik (z Secret)DB_PASSWORD- hasło (z Secret)PORT- port aplikacji (default: 8080)
kubectl describe deployment postgres
kubectl describe deployment task-manager-backend
kubectl describe service postgres
kubectl describe service task-manager-backend
kubectl logs -f deployment/postgres
kubectl logs -f deployment/task-manager-backend