Shinyproxy: Adición dinámica de especificaciones posteriores al inicio

Creado en 17 oct. 2020  ·  5Comentarios  ·  Fuente: openanalytics/shinyproxy

En primer lugar, gracias por crear una plataforma tan impresionante: ¡parece que satisface casi todos mis requisitos!

Sin embargo, una cosa que estoy buscando es la capacidad de agregar especificaciones dinámicamente después del inicio, para que no tengamos que reiniciar manualmente el servidor para agregar una nueva aplicación.

Puedo ver que ProxySpecs y ContainerSpecs (en los que se basa ShinyProxy ) ofrecen soporte para esto usando una solicitud POST, pero que no es explícitamente compatible en ShinyProxy . ¿Hay una razón específica para esto? ¿Es esto algo que estaría dispuesto a agregar?

ProxySpecs y ContainerSpecs también se pueden proporcionar en tiempo de ejecución, a través del cuerpo de una solicitud POST.
Nota: ShinyProxy no permite que se proporcionen especificaciones en tiempo de ejecución. Solo se aceptan las especificaciones del archivo application.yml.
Fuente

Mi plan es implementar esto en un servidor y permitir que personas específicas dentro de la organización registren nuevas aplicaciones en nombre de sus equipos de proyecto, sin que tenga que desconectar ShinyProxy (incluso por unos segundos) para agregar una nueva aplicación. Idealmente, esta interfaz de administración existiría dentro de ShinyProxy, pero estoy feliz de construir mi propio pequeño tablero para manejar esto.

Me complace contribuir un tiempo para ayudar con el desarrollo de esto, si es necesario; solo quería verificar si había alguna razón específica por la que esto no sea compatible y si estaría dispuesto a tener esta funcionalidad.

He echado un vistazo a algunos de los tickets más antiguos y he leído que una de las preocupaciones con esto es que algunas de las otras configuraciones del servidor no se pueden recargar en caliente, pero me pregunto si esto podría solucionarse agregando un dynamic_specs atributo al archivo application.yml , para que los usuarios puedan elegir si quieren admitir especificaciones dinámicas o definidas manualmente (pero no necesariamente ambas, si eso introduce una complejidad significativa desde una perspectiva arquitectónica)?

p.ej

proxy:
  port: 8080
  ...
  dynamic_specs: true
  specs: # Left blank, if `dynamic_specs` is true.

¡Muchas gracias!

Todos 5 comentarios

Hola @xtrasimplicity Esto se puede lograr usando nuestro operador ShinyProxy. Se ofrece una descripción de alto nivel en https://www.openanalytics.eu/blog/2020/10/12/shinyproxy-2.4.0/ y hay más documentación disponible en su repositorio Github dedicado.

Gracias, @tverbeke. Eché un vistazo rápido, pero parece más centrado en Kubernetes. ¿Funciona esto también con el enjambre / motor de Docker?

Editar: Además, parece un poco más complejo de lo que tenía en mente. Si tuviera que enviar un PR para ShinyProxy que agrega soporte para agregar nuevas aplicaciones usando la interfaz de usuario del administrador (y persistir dicha configuración en una base de datos), ¿estaría dispuesto a fusionarlo?

Hola @tverbeke , he leído un poco más sobre ShinyProxy Operator y creo que lo entendí.

Si bien resolvería la mayoría de mis problemas, sería bueno poder delegar la adición de nuevas aplicaciones a usuarios específicos que de otro modo no estarían familiarizados con la edición de archivos de configuración, etc., o en situaciones en las que no quiero otorgue a alguien acceso SSH (en cualquier forma, sin importar cuán restringido sea) al servidor que ejecuta ShinyProxy para editar el archivo de configuración.

Por esta razón, sería genial poder agregar nuevas aplicaciones usando la interfaz de usuario del administrador.

Teóricamente, y sin haber revisado mucho el código, debería ser tan simple como:

  1. Agregar la capacidad de obtener definiciones de especificaciones de una base de datos (¿sqlite debería ser suficiente?), Además del archivo de configuración.
  2. Actualización de la interfaz de usuario de administración para admitir el registro de nuevas definiciones de especificaciones y su almacenamiento en la base de datos.

¿Estaría abierto a una solicitud de extracción que agregue tales capacidades?

¡Gracias!

Hola @xtrasimplicity , Muchas gracias por pensar. Estamos trabajando en un mecanismo para delegar la adición de nuevas aplicaciones, pero en una primera etapa probablemente será impulsado por un enfoque de GitOps en lugar de una interfaz de usuario.

Gracias, @tverbeke. ¿Sabe cuándo es probable que esté listo el mecanismo de delegación? ¿O puedo ayudar de alguna manera con el desarrollo de esto?

GitOps es útil, pero poder hacer esto desde la GUI sería realmente útil para entornos donde GitOps no se usa realmente.

¿Fue útil esta página
0 / 5 - 0 calificaciones