Description
Is your feature request related to a problem? Please describe the impact that the lack of the feature requested is creating.
It would be useful to have access to a shell within Headlamp, like we do in the case of exec into pods but as a local machine shell. This would mean that users could use a full shell without having to leave Headlamp, which can be useful: we could use this in combination with plugins that download and install useful tools like kubectl, az, gcloud, etc.
Describe the solution you'd like
Parts
- Add a terminal dialog that connects to a local shell rather than to a pod
- Add way for the app layer to download tools and install them in a place that's managed by Headlamp, just like we do for downloading plugins #2803
- Add support for plugins to request the installation of tools #2804
Other considerations
Since it may not be desirable for every user to have the frontend pass commands that are run a shell (since it'd mean that plugins could run commands in the local machine), we need to make this as secure as possible. In our first attempt to add command-running support, we limited the commands to only a handful. Yet, this would make things complicated in a shell where users could composed commands like e.g. pipes and logic.
So maybe the only feasible solution is an all-or-nothing, i.e. asking the user if they allow running commands from the application. Allowing so would be a requirement for running this internal shell.
This would open the possibility to have e.g. a kubectl plugin which not only installs the required kubectl, but would also set the right context when opening the terminal in a cluster view in Headlamp.
What users will benefit from this feature?
- Users who want one single place to manage the clusters, even when using external tools
- Users who are not familiar with all the tools out there and may find it easier to install them via Headlamp plugins
- Users who find the Headlamp UI limiting and would like to run some extra commands