# Registry Browser Aplicación Django para explorar registries Docker privados con API v2. ## Inicio Rápido (local) ```bash # Crear entorno virtual (si no existe) python3 -m venv venv # Activar entorno virtual source venv/bin/activate # Instalar dependencias pip install -r requirements.txt # Ejecutar migraciones python manage.py migrate # Crear usuario administrador python manage.py createsuperuser # Iniciar servidor python manage.py runserver ``` ## Despliegue en Kubernetes La app corre en el cluster como deployment `regbrowser` en el namespace `regbrowser`, accesible vía Ingress en **http://regbrowser.reymota.lab** (Nginx Proxy Manager → ClusterIP del Service). Componentes: | Recurso | Descripción | |---|---| | `k8s/namespace.yaml` | Namespace `regbrowser` | | `k8s/secrets.yaml` | `SECRET_KEY` de Django | | `k8s/database.yaml` | BD `regbrowser` en el cluster CNPG (`reymota-pg-cluster`) | | `k8s/deployment.yaml` | Deployment con gunicorn (estrategia Recreate, 1 réplica) | | `k8s/service-ingress.yaml` | Service ClusterIP fija + Ingress nginx | Variables de entorno soportadas: `SECRET_KEY`, `DEBUG`, `ALLOWED_HOSTS`, `POSTGRES_HOST`, `POSTGRES_PORT`, `POSTGRES_DB`, `POSTGRES_USER`, `POSTGRES_PASSWORD`. Sin `POSTGRES_HOST` la app usa SQLite local (útil para desarrollo). ### Construir y desplegar una nueva versión ```bash # Construir y subir la imagen a Harbor docker build -t harbor.reymota.es/reymota/regbrowser:latest . docker push harbor.reymota.es/reymota/regbrowser:latest # Reiniciar el deployment para que haga pull de la nueva imagen kubectl rollout restart deploy/regbrowser -n regbrowser # Ver el estado del rollout y los logs kubectl rollout status deploy/regbrowser -n regbrowser kubectl logs -f deploy/regbrowser -n regbrowser ``` Las migraciones se ejecutan automáticamente al arrancar el contenedor. ### Pull secret de Harbor El deployment usa el secret `myregistrykey` (tipo `kubernetes.io/dockerconfigjson`) para descargar la imagen. Para renovarlo con otras credenciales: ```bash kubectl delete secret myregistrykey -n regbrowser kubectl create secret docker-registry myregistrykey \ --docker-server=harbor.reymota.es \ --docker-username='robot$regbrowser+ci' \ --docker-password='' \ -n regbrowser ``` ## Cambiar contraseña de la app # Cambiar la contraseña del usuario existente kubectl exec -it deploy/regbrowser -n regbrowser -- python manage.py changepassword admin # Crear otro superusuario kubectl exec -it deploy/regbrowser -n regbrowser -- python manage.py createsuperuser ## Uso 1. Accede a http://localhost:8000 (local) o http://regbrowser.reymota.lab (cluster) 2. Inicia sesión con las credenciales 3. Agrega un registry Docker privado 4. Explora repositorios, tags y detalles de imágenes ## Funcionalidades - ✅ Exploración de repositorios - ✅ Visualización de tags - ✅ Detalles de imágenes (layers, tamaño, OS, arquitectura) - ✅ Soporte para registries multi-arch - ✅ Autenticación básica y token bearer - ✅ Búsqueda de repositorios y tags - ✅ Eliminación de imágenes (si el registry lo permite) > Nota: los manifests se eliminan por digest y quedan marcados como > pendientes; ejecuta periódicamente `registry garbage-collect` en el > registry para liberar el espacio en disco.