refactor ingresses

This commit is contained in:
Roger Oriol
2026-06-23 00:26:29 +02:00
parent ce178d06c0
commit 153cf16194
32 changed files with 367 additions and 386 deletions

View File

@@ -25,18 +25,20 @@ Aquest clúster K3s gestiona els següents serveis:
```
.
├── README.md # Aquest fitxer
├── ingress.yaml # Configuració d'Ingress principal (Traefik)
├── nas.yaml # Servei extern per al NAS
├── <aplicació>/ # Cada aplicació té el seu directori
│ ├── deployment.yaml # Definició del Deployment
│ ├── service.yaml # Definició del Service
│ ├── ingress.yaml # Configuració d'Ingress (opcional)
│ ├── service.yaml # Definició del Service
│ ├── ingress.yaml # Configuració d'Ingress de l'aplicació
│ ├── namespace.yaml # Namespace dedicat (opcional)
│ ├── configmap.yaml # ConfigMaps (opcional)
│ ├── configmap.yaml # ConfigMaps (opcional)
│ └── pvc.yaml # PersistentVolumeClaims (opcional)
└── monitoring/ # Stack de monitorització complet
└── nas/ # Servei extern per al NAS
├── nas.yaml # Service i Endpoints externs
└── ingress.yaml # Ingress del NAS
```
> **Nota**: Cada aplicació té el seu propi `ingress.yaml` dins del seu directori. Ja no hi ha cap `ingress.yaml` centralitzat a l'arrel.
## 🚀 Desplegament
### Prerequisits
@@ -66,9 +68,8 @@ for dir in */; do
kubectl apply -f "$dir"
done
# O aplicar recursos globals primer
kubectl apply -f ingress.yaml
kubectl apply -f nas.yaml
# O aplicar recursos globals primer (opcional)
kubectl apply -f nas/
```
### Eliminar una Aplicació
@@ -83,18 +84,43 @@ kubectl delete -f <aplicació>/<fitxer>.yaml
## 🌐 Ingress i Networking
### Configuració d'Ingress Principal
### Configuració d'Ingress per Aplicació
El fitxer [ingress.yaml](ingress.yaml) conté la configuració centralitzada d'Ingress utilitzant **Traefik** (controlador per defecte de K3s). Característiques:
Cada aplicació té el seu propi fitxer `ingress.yaml` dins del seu directori, seguint el model de [pihole/ingress.yaml](pihole/ingress.yaml). Característiques:
- **TLS/SSL**: Certificats wildcard `*.rogi.casa` gestionats per cert-manager
- **Cloudflare Origin Issuer**: Utilitzat per generar certificats
- **Redirect HTTPS**: Redireccions automàtiques de HTTP a HTTPS
- **Compressió**: Habilitada per defecte
- **Traefik**: Controlador per defecte de K3s (`ingressClassName: traefik`)
- **TLS/SSL**: Certificats per host gestionats per cert-manager amb el cluster-issuer `letsencrypt-prod`
- **Secret per aplicació**: Cada ingress té el seu propi `<aplicació>-tls`
- **Namespace dedicat**: Cada ingress pertany al namespace de la seva aplicació
### Aplicacions amb Ingress Dedicat
Exemple (`pihole/ingress.yaml`):
Algunes aplicacions tenen el seu propi fitxer `ingress.yaml` dins del seu directori per a configuracions específiques.
```yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: pihole
namespace: pihole
annotations:
cert-manager.io/cluster-issuer: letsencrypt-prod
spec:
ingressClassName: traefik
tls:
- hosts:
- pihole.rogi.casa
secretName: pihole-tls
rules:
- host: pihole.rogi.casa
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: pihole-web
port:
number: 80
```
## 💾 Persistència de Dades
@@ -218,7 +244,7 @@ kubectl get pv
## 📝 Bones Pràctiques
1. **Namespaces**: Les aplicacions complexes utilitzen namespaces dedicats (n8n, monitoring, phoenix)
1. **Namespaces**: Totes les aplicacions tenen un namespace dedicat; cap queda al namespace `default`
2. **Labels**: Tots els recursos utilitzen labels consistents per facilitar la gestió
3. **Resources Limits**: Configura limits de CPU/memòria per evitar overconsumption
4. **Health Checks**: Implementa liveness i readiness probes quan sigui possible
@@ -245,7 +271,7 @@ kubectl rollout undo deployment/<nom> -n <namespace>
## 🌟 Serveis Externs
### NAS
El fitxer [nas.yaml](nas.yaml) configura un servei extern que apunta al NAS local (10.88.88.238:5000) sense desplegar pods dins del clúster.
El fitxer [nas/nas.yaml](nas/nas.yaml) configura un servei extern que apunta al NAS local (10.88.88.238:5000) sense desplegar pods dins del clúster. L'Ingress corresponent és a [nas/ingress.yaml](nas/ingress.yaml).
## 📚 Recursos Addicionals