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.