crc-org / crc

CRC is a tool to help you run containers. It manages a local OpenShift 4.x cluster, Microshift or a Podman VM optimized for testing and development purposes
https://crc.dev
Apache License 2.0
1.25k stars 237 forks source link

[Epic] User should be able to run the crc VM on a remote server with system tray #2463

Open guillaumerose opened 3 years ago

guillaumerose commented 3 years ago

The daemon brings enough API to be able to run the crc VM on a remote server. The user can manage it from his laptop directly with the CRC System tray. This would also lead to how this system tray may connect to various OpenShift instances the user primarily uses.

The main benefit is that the server will certainly have more CPU and memory than the laptop. The crc VM can also be shared.

The CLI will need to forward the traffic securely between the laptop and the remote server.

We will also have to deal with security when the cluster is 'publicly' exposed:

guillaumerose commented 3 years ago

OpenShift Data Foundation is a potential user of this. See https://github.com/ksingh7/odf-nano

stale[bot] commented 3 years ago

This issue has been automatically marked as stale because it has not had recent activity. It will be closed if no further activity occurs. Thank you for your contributions.

anjannath commented 2 years ago

have to break down this epic into more smaller tasks, but i think as the first step we need to be able to remotely setup crc, i.e crc setup --remote=<ip_address>

cfergeau commented 2 years ago

setup may be harder than the others to deal with, as it needs to 'bootstrap' the remote server for crc use. I did some preliminary work in that area in https://github.com/cfergeau/crc/tree/remote I should clean that up some day. The approach I took was to go through the daemon for all the commands in cmd/ instead of calling directly into go code. With this done, doing this remotely instead of locally "only" needs a secure tunnel between the local machine and the remote host.

anjannath commented 2 years ago

setup may be harder than the others to deal with, as it needs to 'bootstrap' the remote server for crc use.

what i want to try is, when crc setup --remote=<ip_address> is invoked from a machine, we can do the following:

  1. scp the crc binary to the target server ().
  2. run crc setup in there
  3. report back the status of running crc setup

I did some preliminary work in that area in https://github.com/cfergeau/crc/tree/remote I should clean that up some day. The approach I took was to go through the daemon for all the commands in cmd/ instead of calling directly into go code. With this done, doing this remotely instead of locally "only" needs a secure tunnel between the local machine and the remote host.

i see this as the second step (but initially since setup would be complicated, it makes sense to manually perform the setup steps and test this), since it'd need the crc daemon to be running on the server to which we'll securely tunnel the requests from the crc cli, i.e crc daemon is running and all the virtualization, networking configurations are done.