Žiadny popis

Tino fed444319b Quito la pvc ya que solo se usaba para sqlite3 1 mesiac pred
explorer 9764643fa0 Logo de reymota 1 mesiac pred
k8s fed444319b Quito la pvc ya que solo se usaba para sqlite3 1 mesiac pred
regbrowser 263b60e882 Cambio a postgresql 1 mesiac pred
.dockerignore ee13fd5eb8 first commit 1 mesiac pred
.gitignore 0095b65910 Añado .gitignore 1 mesiac pred
Dockerfile ee13fd5eb8 first commit 1 mesiac pred
HARBOR-ROBOT.md a249cd24b0 Ip fija para el contenedor y credenciales por robot en harbor 1 mesiac pred
README.md fed444319b Quito la pvc ya que solo se usaba para sqlite3 1 mesiac pred
manage.py ee13fd5eb8 first commit 1 mesiac pred
requirements.txt 263b60e882 Cambio a postgresql 1 mesiac pred
run.sh 9764643fa0 Logo de reymota 1 mesiac pred

README.md

Registry Browser

Aplicación Django para explorar registries Docker privados con API v2.

Inicio Rápido (local)

# 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

# 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:

kubectl delete secret myregistrykey -n regbrowser
kubectl create secret docker-registry myregistrykey \
  --docker-server=harbor.reymota.es \
  --docker-username='robot$regbrowser+ci' \
  --docker-password='<token>' \
  -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.