Administración de Swarm con Portainer: Gestión y Despliegue

Clase 22 de 24Curso de Swarm

Resumen

Portainer facilita la administración de un Docker Swarm productivo con una interfaz visual, abierta y gratuita. Permite crear y gestionar servicios, stacks, usuarios y permisos sin depender siempre de SSH. Aquí verás cómo desplegar Portainer como servicio, explorar el clúster y publicar un stack complejo tipo Example Voting App, todo con pasos claros.

¿Cómo administrar un swarm productivo con Portainer?

Portainer es una herramienta open source recomendada y activamente mantenida. Funciona tanto en modo standalone como en modo Swarm. Ofrece un panel para ver nodos, gestionar labels, cambiar la availability, y hasta desplegar templates con un clic. También trae control de usuarios, permisos y más.

¿Qué requisitos de almacenamiento y volúmenes existen?

  • Portainer y herramientas de administración necesitan persistencia en disco para su estado interno.
  • En Swarm, por defecto solo está el driver local de volúmenes.
  • Un volumen local vive en un solo nodo. No es accesible por todas las tareas en todos los nodos.
  • Existen plug-ins de storage con otros drivers para usar discos en AWS o Azure. Investígalos antes de producción.
  • Para practicar Portainer basta con un volumen local. Simple y suficiente.

Pasos clave que se mencionan: - Crear un volumen llamado portainer_data. - Ejecutar Portainer como servicio del Swarm. - Montar el docker socket con bind mount y mapear el volumen a /data. - Aplicar un constraint para correrlo en un manager.

¿Cómo desplegar Portainer como servicio en el manager?

Primero, crea el volumen local:

docker volume create portainer_data

Luego, crea el servicio (con mounts y puerto 9000):

docker service create \
  --name portainer \
  --publish 9000:9000 \
  --mount type=bind,src=/var/run/docker.social,dst=/var/run/docker.social \
  --mount type=volume,src=portainer_data,dst=/data \
  Portainer/Portainer \
  -H unix.//run/docker.social

Al iniciar, Portainer solicita crear el usuario administrador. Desde allí podrás gestionar stacks, servicios, networks overlay, volúmenes e imágenes.

¿Cómo visualizar nodos, servicios y tareas en Portainer?

El panel de Portainer para Swarm muestra nodos y su estado. Puedes entrar a cada nodo y ver qué corre, ajustar labels, cambiar la availability o renombrarlo. También hay templates de aplicación para desplegar recursos con un clic.

  • Vista del Swarm: nodos, servicios y tareas activas.
  • Sección de stacks: ver y controlar cada stack.
  • Visualizer integrado: observar la distribución de tareas.
  • Usuarios y permisos: control fino de acceso.

Nota: en entornos como Play With Dr., algunos enlaces de acceso directo pueden no funcionar por dominios distintos. No afecta el funcionamiento del stack.

¿Cómo desplegar un stack complejo con Docker Stack y Portainer?

Portainer permite cargar stacks desde texto pegado, archivo local o repositorio git. Usaremos el Example Voting App, muy útil para mostrar la potencia de Docker Swarm con múltiples tecnologías coordinadas.

¿Qué arquitectura tiene el example voting app?

  • Voting Up: aplicación web en Python que recibe votos.
  • Result Up: aplicación web en Node que muestra resultados.
  • Radiesse: servicio de conteo de votos intermedio.
  • Worker en .NET: procesa los votos y los graba periódicamente.
  • Base de datos Postgre: almacén de resultados persistente.

Flujo resumido: - Se vota en Voting Up. - El voto pasa por Radiesse. - El worker .NET colecta y guarda en Postgre. - Result Up consulta y muestra en tiempo real.

¿Cómo cargar el stack file desde Portainer?

  • Abre la URL del proyecto público en GitHub.
  • En la sección Docker Stack, abre el archivo en modo RAW y copia.
  • En Portainer: Stacks > Add stack > nombre “voting”.
  • Pega el contenido, o sube archivo, o usa un repositorio git.
  • Opcional: define variables de entorno y permisos.
  • Ejecuta el deployment.

Verificación por terminal (equivalente a lo que muestra Portainer):

docker stack ls
docker stack ps voting
# Ver estado del worker
docker service ps votingeworker.1

Portainer mostrará los servicios mientras descargan imágenes y arrancan. Es normal ver estados “preparing” hasta que todo esté disponible.

¿Cómo probar la app y qué observar?

  • Abre la UI de votos y elige entre gatos o perros.
  • Verifica en Result Up cómo cambian los resultados en tiempo real.
  • No puedes votar dos veces desde la misma sesión.
  • Usa una ventana de incógnito u otro navegador para emitir otro voto.
  • Observa el visualizer con tareas distribuidas y servicios activos.

Antes de producción, considera: - Portainer expone HTTP por defecto. Asegura con HTTPS y controla accesos. - Evalúa plug-ins de almacenamiento si necesitas volúmenes compartidos. - Define políticas de permisos de usuarios.

¿Te gustaría que cubramos alguna configuración específica de Portainer, seguridad con HTTPS o despliegue de stacks desde git? Deja tus preguntas y casos en los comentarios.