añadido script clientes
This commit is contained in:
@@ -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 300 GB 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.
|
||||
|
||||
Reference in New Issue
Block a user