Shinyproxy: Adição dinâmica de especificações pós-inicialização

Criado em 17 out. 2020  ·  5Comentários  ·  Fonte: openanalytics/shinyproxy

Em primeiro lugar, obrigado por criar uma plataforma tão incrível - parece que ela atende a quase todos os meus requisitos!

Uma coisa que estou procurando, no entanto, é a capacidade de adicionar especificações dinamicamente após a inicialização, para que não tenhamos que reiniciar manualmente o servidor para adicionar um novo aplicativo.

Posso ver que ProxySpecs e ContainerSpecs (no qual ShinyProxy se baseia) oferecem suporte para isso usando uma solicitação POST, mas que não é explicitamente compatível com ShinyProxy . Existe um motivo específico para isso? Isso é algo que você estaria aberto a adicionar?

ProxySpecs e ContainerSpecs também podem ser fornecidos em tempo de execução, por meio do corpo de uma solicitação POST.
Nota: ShinyProxy não permite que especificações sejam fornecidas no tempo de execução. Somente especificações do arquivo application.yml são aceitas.
Fonte

Meu plano é implantar isso em um servidor e permitir que pessoas específicas dentro da organização registrem novos aplicativos em nome de suas equipes de projeto, sem que eu tenha que colocar o ShinyProxy offline (mesmo por alguns segundos) para adicionar um novo aplicativo. Idealmente, essa interface de gerenciamento existiria no ShinyProxy, mas estou feliz em construir meu próprio pequeno painel para lidar com isso.

Estou feliz em contribuir com algum tempo para ajudar no desenvolvimento disso, se necessário - só queria verificar se havia algum motivo específico para o não suporte e se você estaria aberto a ter essa funcionalidade.

Dei uma olhada em alguns dos tíquetes mais antigos e li que uma das preocupações com isso é que algumas das outras configurações de servidor não podem ser recarregadas a quente, mas me pergunto se isso poderia ser contornado adicionando um dynamic_specs atributo para o arquivo application.yml , para que os usuários possam escolher se desejam suportar especificações dinâmicas ou definidas manualmente (mas não necessariamente ambos, se isso introduzir complexidade significativa de uma perspectiva arquitetônica)?

por exemplo

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

Muito obrigado!

Todos 5 comentários

Hi @xtrasimplicity Isso pode ser conseguido usando nosso operador ShinyProxy. Uma descrição de alto nível é oferecida em https://www.openanalytics.eu/blog/2020/10/12/shinyproxy-2.4.0/ e mais documentação está disponível em seu repositório Github dedicado

Obrigado, @tverbeke. Dei uma olhada rápida, mas parece mais centrado no Kubernetes. Isso funciona com o Docker swarm / engine também?

Edit: Além disso, parece um pouco mais complexo do que o que eu tinha em mente. Se eu enviasse um PR para o ShinyProxy que adiciona suporte para adicionar novos aplicativos usando a IU do administrador (e persistir tal configuração em um banco de dados), você estaria aberto para mesclá-lo?

Olá @tverbeke ,

Embora resolvesse a maioria dos meus problemas, seria bom poder delegar a adição de novos aplicativos a usuários específicos que, de outra forma, não estão familiarizados com a edição de arquivos de configuração, etc. - ou em situações em que eu não quero conceda a alguém acesso SSH (em qualquer forma, não importa o quão restrito) ao servidor que executa o ShinyProxy para editar o arquivo de configuração.

Por esse motivo, seria ótimo poder adicionar novos aplicativos usando a IU do administrador.

Teoricamente, e sem ter _pensadamente_ revisado o código, ele _deve_ ser tão simples quanto:

  1. Adicionando a capacidade de buscar definições de especificações de um banco de dados (sqlite deve ser suficiente?), Além do arquivo de configuração.
  2. Atualizar a IU do administrador para suportar o registro de novas definições de especificações e armazená-las no banco de dados.

Você estaria aberto a uma solicitação Pull adicionando esses recursos?

Obrigado!

Olá @xtrasimplicity , Muito obrigado por pensar junto. Estamos trabalhando em um mecanismo para delegar a adição de novos aplicativos, mas em um primeiro estágio provavelmente será conduzido por uma abordagem GitOps em vez de por meio de uma interface de usuário.

Obrigado, @tverbeke. Você sabe quando o mecanismo de delegação provavelmente estará pronto? Ou posso de alguma forma ajudar no desenvolvimento disso?

GitOps é útil, mas ser capaz de fazer isso a partir da GUI seria muito útil para ambientes onde GitOps não é realmente usado também!

Esta página foi útil?
0 / 5 - 0 avaliações