lsc-sde / iac-helm-guacamole

Helm Chart for guacamole
MIT License
0 stars 0 forks source link

iac-helm-guacamole

Helm Chart for guacamole

Developer Guide

This helm release is still under development and has yet to be integrated into the wider chain of flux/helm configurations

Proof of concept

This helm chart was created as part of a proof of concept for creating a container image that runs in a browser (firefox), the idea being that we have users connect to guacamole prior to connecting to jupyterhub to access other services.

flowchart LR
    User -->|HTTPS|Portal
    subgraph Kubernetes
        subgraph Guacamole
            Portal --> Daemon
        end
        Daemon --> BrowserClient[Browser Client]
        BrowserClient --> JupyterHub
    end

Installing the POC

You'll need an instance of postgresql server, this will need to be accessible from the container:

helm upgrade -i guacamole -n guacamole --create-namespace ./

Logged in to firefox browser via Guacamole Logged in to jupyterhub via firefox browser via Guacamole

Notes

It does appear that this model could work, though a number of issues exist that would need to be solved in order to make this solution work:

  1. Connections would need to be automatically configured in the guacamole database. An operator service could monitor the workspace bindings and configure the connections and memberships accordingly.
  2. Guacamole would ideally need to be extended to call the Kubernetes API and request the pod when a session is requested
  3. JupyterHub authentication / Authorisation may be reconfigured to pass in a temporary token which would impersonate the user logged into the server
  4. The container should shut down if the browser is closed in the VNC session
  5. The container browser should be locked down so that it doesn't display the address bar
  6. Network policies should be in place to allow traffic to jupyterhub/OHDSI only
  7. Guacamole will need to be setup to handle proper auth
  8. The apps will need to be thoroughly tested to ensure that they work with the browser as expected

Questions