Files
webapplinux/README.md
capitano 533cbed8d3 Add Linux App Store Web Portal with Kubernetes deployment
- React-style static web portal with Tailwind CSS
- OS detection (Debian/Ubuntu, Fedora, Arch, Generic)
- Dynamic install commands (apt://, appstream://, flatpak)
- 9 pre-configured applications
- Kubernetes: 2 replicas, LoadBalancer service, Nginx ingress
- GitLab Container Registry (git.giaco.net/capitano/webapplinux)
- Namespace: linuxwebapp
- Added Dockerfile, nginx.conf, deploy.sh, docker-compose.yml
- Updated README.md with deployment instructions
2026-03-18 22:20:20 +01:00

91 lines
2.5 KiB
Markdown

# Linux App Store - Kubernetes Deployment
## Deploy
### Prerequisiti
- Cluster Kubernetes attivo (es. `10.66.200.x/24`)
- kubectl configurato
- Container registry privato (GitLab: `git.giaco.net`)
- Personal Access Token per il registry
### Build e Deploy
```bash
# Login al registry GitLab
echo "<GITLAB_TOKEN>" | docker login git.giaco.net -u capitano --password-stdin
# Build l'immagine
docker build -t git.giaco.net/capitano/webapplinux:latest .
# Push su registry
docker push git.giaco.net/capitano/webapplinux:latest
# Deploy su Kubernetes
kubectl apply -f k8s/namespace.yaml
kubectl apply -f k8s/deployment.yaml
kubectl apply -f k8s/service.yaml
kubectl apply -f k8s/ingress.yaml
# Verifica
kubectl get pods -n linuxwebapp
kubectl get svc -n linuxwebapp
kubectl get ingress -n linuxwebapp
# Log
kubectl logs -l app=linux-app-store -n linuxwebapp -f
```
### Accesso al portale
Il portale è accessibile tramite ingress nginx all'indirizzo:
- **URL**: `http://apps.local/`
Per raggiungerlo localmente, aggiungi una entry nel file `/etc/hosts`:
```
10.66.200.211 apps.local
```
(sostituisci `10.66.200.211` con l'IP del tuo Ingress controller)
### File struttura
```
webapplinux/
├── Dockerfile # Dockerfile Nginx
├── docker-compose.yml # Compose per sviluppo locale
├── nginx.conf # Configurazione Nginx
├── README.md # Questo file
├── frontend/
│ ├── index.html # Pagina principale
│ ├── script.js # Logica OS detection & install
│ └── apps.json # Database applicazioni
└── k8s/
├── namespace.yaml # Namespace linuxwebapp
├── deployment.yaml # Deployment (2 repliche, git registry)
├── service.yaml # Service (ClusterIP)
└── ingress.yaml # Ingress (dominio apps.local)
```
### Customizzazione
1. **Applicazioni**: Modifica `frontend/apps.json` per aggiungere/rimuovere app
2. **Nginx**: Aggiorna `nginx.conf` per routing personalizzato
3. **Risorse**: Modifica `k8s/deployment.yaml` per cpu/memory
4. **Immagine**: Cambia `image` nel deployment per usare un altro registry
### Rimozione
```bash
kubectl delete -f k8s/ingress.yaml
kubectl delete -f k8s/service.yaml
kubectl delete -f k8s/deployment.yaml
kubectl delete -f k8s/namespace.yaml
```
### CI/CD
Usa il file `.gitlab-ci.yml` (da creare) per automatizzare:
1. Build dell'immagine
2. Push su GitLab registry
3. Deploy automatico in Kubernetes