Allow other CNI providers to be installed
rsdcastro opened this issue · 8 comments
Currently CNI provider isn't specified in the API, and the GCP implementation has support for weavenet. This issue tracks API updates to support other CNI providers.
https://github.com/kubernetes/kube-deploy/blob/master/cluster-api/api/cluster/v1alpha1/types.go#L327
Do we really want to have this in the API?
The User could deploy whatever CNI provider he wants via a Daemonset
For a fully functional cluster, we need to have a CNI provider installed, right? This is being done in the current GCP provider code and it's also in the kubeadm documentation.
My idea is that if we'll deliver a fully functional cluster to the cluster and will install a CNI provider as part of that, then we should allow the customer to specify a different one (as the hard-coded one might not work).
Let me know your thoughts and please feel free to correct me.
Maybe something like an add-on manager might be suitable here?
@chrislovecnm I never actually had the time to play around with the Kops add-on manager, you see options implementing it here?
As i assume by now most/every CNI provider nowadays can be installed using a Daemonset.
Kubedns/coredns could be installed the same way.
That is fair. CNI would be technically one of the "essential add-ons" that are needed to have a fully functional cluster. Some of the essential add-ons (kube-dns and kube-proxy) are installed by kubeadm, but the remaining (at least CNI provider) could be installed via cluster API.
We're starting to do work on what a long-term add-ons management solution would look like and even picked @justinsb's brain last week on that.
If we don't do anything special in the cluster API for CNI (which is reasonable after this discussion), we may need to accelerate that work to have more CNIs available to customers as part of the cluster API.
We will want to install kube-proxy and kube-dns as addons as well (the current kube-proxy mechanism is a bit of a hack) and CNI should fit into that model. In the mean time, I think it's ok to say that the provider can dictate the CNI provider installed into the cluster, and if we want to make it configurable we can do so inside of the provider config.
Kinda concerned that we are wandering into addons land. Are these addons? Maybe I am missing something but how is stuff like kube-dns part of the machine api?
If those those components are addons, which IMO is part of the installers responsibility. Eventually I hope we have an addon manager.
The only component that has to be installed is cni or kubenet, but I think that is the installer as well not the machine API
Kamino closed and cloned this issue to kubernetes-sigs/cluster-api
This issue was moved to kubernetes-sigs/cluster-api#8