Saltar al contenido principal

Pruebas de Podman

Copiar y ejecutar los scripts ubicados en scripts/podman_testing en el servidor de pruebas de Podman.

Configuración inicial y gestión​

  1. copy.docker.duplistatus.local: Copia la imagen de Docker desde el daemon de Docker local a Podman (para pruebas locales).
  2. copy.docker.duplistatus.remote: Copia la imagen de Docker desde un servidor de desarrollo remoto a Podman (requiere acceso SSH).
    • Cree la imagen en el servidor de desarrollo usando: docker build . -t wsj-br/duplistatus:devel
  3. start.duplistatus: Inicia el contenedor en modo sin raíz.
  4. pod.testing: Prueba el contenedor dentro de un pod de Podman (con privilegios de raíz).
  5. stop.duplistatus: Detiene el pod y elimina el contenedor.
  6. clean.duplistatus: Detiene contenedores, elimina pods y limpia imágenes antiguas.

Configuración de DNS​

Los scripts detectan y configuran automáticamente los parámetros de DNS del sistema host:

  • Detección automática: Usa resolvectl status (systemd-resolved) para extraer servidores DNS y dominios de búsqueda
  • Soporte alternativo: Recurre al análisis de /etc/resolv.conf en sistemas sin systemd
  • Filtrado inteligente: Filtra automáticamente direcciones de localhost y servidores de nombres IPv6
  • Funciona con:
    • Tailscale MagicDNS (100.100.100.100)
    • Servidores DNS corporativos
    • Configuraciones de red estándar
    • Configuraciones DNS personalizadas

No se requiere configuración manual de DNS: ¡los scripts lo manejan automáticamente!

Monitoreo y comprobaciones de estado​

  • check.duplistatus: Comprueba los registros, la conectividad y el estado de la aplicación.

Comandos de depuración​

  • logs.duplistatus: Muestra los registros del pod.
  • exec.shell.duplistatus: Abre un shell en el contenedor.
  • restart.duplistatus: Detiene el pod, elimina el contenedor, copia la imagen, crea el contenedor e inicia el pod.

Flujo de trabajo de uso​

Servidor de desarrollo​

Crear la imagen de Docker en el servidor de desarrollo:

docker build . -t wsj-br/duplistatus:devel

Servidor de Podman​

  1. Transfiera la imagen de Docker:
    • Use ./copy.docker.duplistatus.local si Docker y Podman están en la misma máquina
    • Use ./copy.docker.duplistatus.remote si copia desde un servidor de desarrollo remoto (requiere archivo .env con REMOTE_USER y REMOTE_HOST)
  2. Inicie el contenedor con ./start.duplistatus (independiente, sin raíz)
    • O use ./pod.testing para probar en modo pod (con raíz)
  3. Supervise con ./check.duplistatus y ./logs.duplistatus
  4. Detenga con ./stop.duplistatus cuando haya terminado
  5. Use ./restart.duplistatus para un ciclo completo de reinicio (detener, copiar imagen, iniciar)
    • Nota: Este script actualmente hace referencia a copy.docker.duplistatus que debería sustituirse por la variante .local o .remote
  6. Use ./clean.duplistatus para eliminar contenedores, pods e imágenes antiguas

Prueba de la aplicación

Si ejecutas el servidor Podman en la misma máquina, utiliza http://localhost:9666.

Si estás en otro servidor, obtén la URL con:

echo "http://$(hostname -I | awk '{print $1}'):9666"

Notas importantes​

Redes de Podman Pod​

Cuando se ejecuta en pods de Podman, la aplicación requiere:

  • Configuración explícita de DNS (manejada automáticamente por el script pod.testing)
  • Vinculación de puerto a todas las interfaces (0.0.0.0:9666)

Los scripts manejan estos requisitos automáticamente - no se necesita configuración manual.

Modo sin raíz frente a modo raíz​

  • Modo independiente (start.duplistatus): Se ejecuta sin raíz con --userns=keep-id
  • Modo pod (pod.testing): Se ejecuta como raíz dentro del pod para fines de prueba

Ambos modos funcionan correctamente con la detección automática de DNS.

Configuración del entorno​

Tanto copy.docker.duplistatus.local como copy.docker.duplistatus.remote requieren un archivo .env en el directorio scripts/podman_testing:

Para copia local (copy.docker.duplistatus.local):

IMAGE=wsj-br/duplistatus:devel

Para copia remota (copy.docker.duplistatus.remote):

IMAGE=wsj-br/duplistatus:devel
REMOTE_USER=your_username
REMOTE_HOST=your_hostname

El script start.duplistatus requiere un archivo .env con al menos la variable IMAGE:

IMAGE=wsj-br/duplistatus:devel

Nota: El mensaje de error del script menciona REMOTE_USER y REMOTE_HOST, pero estos no son realmente utilizados por start.duplistatus—solo se requiere IMAGE.