añadido script clientes

This commit is contained in:
2025-09-04 00:39:48 +02:00
parent 3bfbd99958
commit 23c556938b
3 changed files with 239 additions and 34 deletions

View File

@@ -1,22 +1,30 @@
## Cómo usarlo (rápido)
# Repositorio Privado openSUSE
Este despliegue en Kubernetes crea un **mirror interno de repositorios de openSUSE** (y de terceros opcionales, como NVIDIA o Kubernetes). Sirve para que los servidores de nuestra red se actualicen **desde dentro**, sin depender de internet.
El sistema funciona con:
* **Servidor HTTP/HTTPS** → los clientes SUSE acceden vía `http://repo.c2et.net/...` o `https://repo.c2et.net/...` para descargar paquetes y metadatos.
* **Servidor Samba (SMB)** → expone la misma carpeta por red. Esto nos permite que el **“diodo de datos”** copie los repos de manera unidireccional hacia la red clasificada. Así aseguramos que las máquinas en la red sensible reciben actualizaciones sin conectividad exterior.
La carpeta de repos se actualiza automáticamente cada día mediante un **CronJob**, que sincroniza contra los repos oficiales de openSUSE y de terceros.
---
## Cómo desplegarlo
1. Ajusta **dominio** en el Ingress y (si quieres) IP fija en el Service de Samba.
2. Revisa tamaño de **PVC**.
3. (Opcional) Cambia o amplía la lista en `sources.txt`. Si tienes un mirror con **rsync**, usa `rsync://...` en la URL para más eficiencia.
4. Aplica en orden:
2. Revisa tamaño de **PVC** (mínimo 300GB recomendado).
3. (Opcional) Cambia o amplía la lista en `sources.txt` (por ejemplo, usando mirrors con `rsync://`).
4. Despliega todo de una vez con **Kustomize**:
```bash
kubectl apply -f repo/namespace.yaml
kubectl apply -f repo/pvc.yaml
kubectl apply -f repo/configmap/repo-sources.yaml
kubectl apply -f repo/deployments/repo-server.yaml
kubectl apply -f repo/services/service-http.yaml
kubectl apply -f repo/services/service-samba.yaml # o NodePort
kubectl apply -f repo/ingress/ingress-repo.yaml
kubectl apply -f repo/cronjobs/repo-sync.yaml
kubectl apply -k repo/
```
5. Lanza una sync inicial **ad hoc** (sin esperar al cron) creando un Job manual:
*(Si prefieres, aún puedes aplicar los manifiestos uno por uno en el orden indicado en la carpeta `repo/`.)*
5. Para lanzar una sincronización inicial manual (sin esperar al cron):
```bash
kubectl create job --from=cronjob/repo-sync repo-sync-now -n repo
@@ -27,28 +35,37 @@ kubectl logs -f job/repo-sync-now -n repo
## Configuración en los clientes SUSE
En tus servidores, añade repos apuntando a tu repo interno, por ejemplo:
En los clientes no hace falta configurar repos manualmente. Basta con ejecutar el **script de cliente** incluido en este repo (`configure-local-repos.sh`). Este script:
* Importa las claves GPG desde `http://repo.c2et.net/keys/`.
* Crea los `.repo` apuntando al mirror interno.
* Deshabilita los repos externos para que solo se usen los `-local`.
### Uso del script en el cliente
```bash
# HTTP (recomendado)
sudo zypper ar -f http://repo.c2et.net/opensuse/leap/15.6/oss repo-oss-local
sudo zypper ar -f http://repo.c2et.net/opensuse/leap/15.6/non-oss repo-non-oss-local
sudo zypper ar -f http://repo.c2et.net/opensuse/leap/15.6/update/oss update-oss-local
sudo zypper ar -f http://repo.c2et.net/opensuse/leap/15.6/update/non-oss update-non-oss-local
sudo zypper ar -f http://repo.c2et.net/opensuse/leap/15.6/update/sle update-sle-local
sudo zypper ar -f http://repo.c2et.net/opensuse/leap/15.6/update/backports update-backports-local
sudo zypper ar -f http://repo.c2et.net/opensuse/openh264 openh264-local
# Terceros (si los espejas):
sudo zypper ar -f http://repo.c2et.net/thirdparty/nvidia/leap/15.6 nvidia-local
sudo zypper ar -f http://repo.c2et.net/thirdparty/kubernetes/core/stable/v1.33/rpm k8s-stable-local
chmod +x configure-local-repos.sh
sudo ./configure-local-repos.sh
```
> Truco: deja tus repos “externos” deshabilitados (`zypper mr -d <alias>`) y activa solo los “-local”. Así fuerzan el uso del mirror interno.
Esto deja el sistema listo para trabajar solo con los repos locales.
---
## Ventajas de esta arquitectura
* **Seguridad**: los clientes nunca salen a internet, solo acceden al repo interno.
* **Control**: el mirror se actualiza de forma programada (p. ej. de madrugada). Siempre sabemos qué versiones están disponibles.
* **Simplicidad**: los clientes usan HTTP/HTTPS estándar; el Ingress se encarga del TLS si hace falta.
* **Integración con el diodo**: gracias a Samba, la carpeta puede replicarse unidireccionalmente hacia la red clasificada.
* **Verificación**: zypper siempre valida las firmas GPG de los paquetes, aunque se distribuyan por HTTP.
---
## Sugerencias y mejoras
* **Mejor rsync**: si eliges un mirror con `rsync://`, cambia las URLs de `download.opensuse.org` a ese mirror (ej. `rsync://<mirror>/opensuse/distribution/leap/15.6/repo/oss/`) para acelerar y reducir ancho de banda (usa `--delete`).
* **Throttle nocturno**: añade `--bwlimit=MB` a `rsync` si tu ventana noc
* Usar **mirrors oficiales con rsync** para ahorrar ancho de banda y tiempo de sincronización.
* Añadir `--bwlimit` en el `sync.sh` si queremos limitar consumo nocturno de ancho de banda.
* Sustituir `httpd` por `nginx` si se busca mayor rendimiento en descargas masivas.
* Proteger el Ingress con autenticación si se expone fuera de la red de confianza.
* Mantener el **script de cliente** actualizado para simplificar el alta de repos en todos los servidores SUSE.