kubernetes / minikube

Run Kubernetes locally
https://minikube.sigs.k8s.io/
Apache License 2.0
29.28k stars 4.87k forks source link

Fork the machine driver "generic" to minikube, prepare for renaming it #9583

Closed afbjorklund closed 3 years ago

afbjorklund commented 3 years ago

Previously we have forked the docker-machine (libmachine) driver called "none":

https://github.com/docker/machine/blob/master/drivers/none/driver.go

https://github.com/kubernetes/minikube/blob/master/pkg/drivers/none/none.go

We want to do the same thing for the driver called "generic", as used in PR #9545

https://github.com/docker/machine/blob/master/drivers/generic/generic.go

https://github.com/kubernetes/minikube/blob/master/pkg/drivers/generic/generic.go

Once it is in our "drivers" code base, we can rename it as see fit...

Possibly to something like "remote", to be decided (see #7772)

medyagh commented 3 years ago

sounds good !

afbjorklund commented 3 years ago

We might end up moving the other drivers as well, it's mostly cloud drivers so the only ones we use are "fake" and "err"...

amazonec2 azure digitalocean driverutil errdriver exoscale fakedriver generic google hyperv none openstack rackspace softlayer virtualbox vmwarefusion vmwarevcloudair vmwarevsphere

And of course the "virtualbox" driver. The "hyperv" is already modified, and "hyperkit" and "kvm" are external to libmachine.

 drivers/hyperv/hyperv.go     | 71 ++++++++++++++++++++++++++++++++++++++++++++---------------------------
 drivers/hyperv/powershell.go |  4 ++--
 2 files changed, 46 insertions(+), 29 deletions(-)

"driverutil" only has one function and "generic_test" only has one test.

package driverutil

func SplitPortProto(raw string) (port string, protocol string)
=== RUN   TestSetConfigFromFlags
--- PASS: TestSetConfigFromFlags (0.00s)

Not needed.

afbjorklund commented 3 years ago

We probably want to keep the external API unless we have a good reason to change it.

This in order to keep it compatible with e.g. "vmware" and "parallels" external drivers still

afbjorklund commented 3 years ago

We should remove the "vmwarefusion" driver, it is deprecated in favor of "vmware".

We have already removed the "xhyve" (for hyperkit) and "kvm" (for kvm2) drivers.

afbjorklund commented 3 years ago

The best would be to move all the extra drivers out of the main minikube code base:

And to some structure that we control, separate from machine and machine-drivers:

Having them in the same git repo complicates the release process and build process.

We end up installing unnecessary things like xgo-1.12.x and libvirt-dev for them...

They should be stand-alone (from minikube), since they produce stand-alone binaries.

Most likely we would need some github organization, different from kubernetes or users.


https://minikube.sigs.k8s.io/docs/contrib/roadmap/

Prototype post-libmachine implementation of minikube

https://minikube.sigs.k8s.io/docs/drivers/

Built-in:

Containers:

External: (download on-demand)