mirror of
https://github.com/k8snetworkplumbingwg/multus-cni.git
synced 2025-06-30 17:41:50 +00:00
clusterNetwork/defaultNetworks and namespace spec fixed
This fix is to add declaration about clusterNetwork/defaultNetwork net-attach-def is in 'default' namesspace. In addition, this code changes to skip defaultNetwork in case of 'kube-system' namespace as well (#202).
This commit is contained in:
parent
887a9f42dd
commit
e05de6260b
@ -53,7 +53,7 @@ User should chose following parameters combination (`clusterNetwork`+`defaultNet
|
|||||||
|
|
||||||
Multus will find network for clusterNetwork/defaultNetworks as following sequences:
|
Multus will find network for clusterNetwork/defaultNetworks as following sequences:
|
||||||
|
|
||||||
1. CRD object for given network name
|
1. CRD object for given network name, in 'default' namespace
|
||||||
1. CNI json config file in `confDir`. Given name should be without extention, like .conf/.conflist. (e.g. "test" for "test.conf")
|
1. CNI json config file in `confDir`. Given name should be without extention, like .conf/.conflist. (e.g. "test" for "test.conf")
|
||||||
1. Directory for CNI json config file. Multus will find alphabetically first file for the network
|
1. Directory for CNI json config file. Multus will find alphabetically first file for the network
|
||||||
1. Multus failed to find network. Multus raise error message
|
1. Multus failed to find network. Multus raise error message
|
||||||
|
@ -621,13 +621,15 @@ func GetDefaultNetworks(k8sArgs *types.K8sArgs, conf *types.NetConf, kubeClient
|
|||||||
delegate.MasterPlugin = true
|
delegate.MasterPlugin = true
|
||||||
delegates = append(delegates, delegate)
|
delegates = append(delegates, delegate)
|
||||||
|
|
||||||
//need to revisit
|
// Pod in kube-system namespace does not have default network for now.
|
||||||
for _, netname := range conf.DefaultNetworks {
|
if string(k8sArgs.K8S_POD_NAMESPACE) != "kube-system" {
|
||||||
delegate, err := getNetDelegate(kubeClient, netname, conf.ConfDir)
|
for _, netname := range conf.DefaultNetworks {
|
||||||
if err != nil {
|
delegate, err := getNetDelegate(kubeClient, netname, conf.ConfDir)
|
||||||
return err
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
delegates = append(delegates, delegate)
|
||||||
}
|
}
|
||||||
delegates = append(delegates, delegate)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if err = conf.AddDelegates(delegates); err != nil {
|
if err = conf.AddDelegates(delegates); err != nil {
|
||||||
|
@ -308,6 +308,74 @@ var _ = Describe("k8sclient operations", func() {
|
|||||||
Expect(netConf.Delegates[0].Conf.Type).To(Equal("mynet"))
|
Expect(netConf.Delegates[0].Conf.Type).To(Equal("mynet"))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
It("retrieves default networks from CRD", func() {
|
||||||
|
fakePod := testutils.NewFakePod("testpod", "", "")
|
||||||
|
conf := `{
|
||||||
|
"name":"node-cni-network",
|
||||||
|
"type":"multus",
|
||||||
|
"clusterNetwork": "myCRD1",
|
||||||
|
"defaultNetworks": ["myCRD2"],
|
||||||
|
"kubeconfig":"/etc/kubernetes/node-kubeconfig.yaml"
|
||||||
|
}`
|
||||||
|
netConf, err := types.LoadNetConf([]byte(conf))
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
||||||
|
args := &skel.CmdArgs{
|
||||||
|
Args: fmt.Sprintf("K8S_POD_NAME=%s;K8S_POD_NAMESPACE=%s", fakePod.ObjectMeta.Name, fakePod.ObjectMeta.Namespace),
|
||||||
|
}
|
||||||
|
|
||||||
|
fKubeClient := testutils.NewFakeKubeClient()
|
||||||
|
fKubeClient.AddPod(fakePod)
|
||||||
|
fKubeClient.AddNetConfig("default", "myCRD1", "{\"type\": \"mynet\"}")
|
||||||
|
fKubeClient.AddNetConfig("default", "myCRD2", "{\"type\": \"mynet2\"}")
|
||||||
|
kubeClient, err := GetK8sClient("", fKubeClient)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
k8sArgs, err := GetK8sArgs(args)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
||||||
|
err = GetDefaultNetworks(k8sArgs, netConf, kubeClient)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
Expect(len(netConf.Delegates)).To(Equal(2))
|
||||||
|
Expect(netConf.Delegates[0].Conf.Name).To(Equal("myCRD1"))
|
||||||
|
Expect(netConf.Delegates[0].Conf.Type).To(Equal("mynet"))
|
||||||
|
Expect(netConf.Delegates[1].Conf.Name).To(Equal("myCRD2"))
|
||||||
|
Expect(netConf.Delegates[1].Conf.Type).To(Equal("mynet2"))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("ignore default networks from CRD in case of kube-system namespace", func() {
|
||||||
|
fakePod := testutils.NewFakePod("testpod", "", "")
|
||||||
|
// overwrite namespace
|
||||||
|
fakePod.ObjectMeta.Namespace = "kube-system"
|
||||||
|
conf := `{
|
||||||
|
"name":"node-cni-network",
|
||||||
|
"type":"multus",
|
||||||
|
"clusterNetwork": "myCRD1",
|
||||||
|
"defaultNetworks": ["myCRD2"],
|
||||||
|
"kubeconfig":"/etc/kubernetes/node-kubeconfig.yaml"
|
||||||
|
}`
|
||||||
|
netConf, err := types.LoadNetConf([]byte(conf))
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
||||||
|
args := &skel.CmdArgs{
|
||||||
|
Args: fmt.Sprintf("K8S_POD_NAME=%s;K8S_POD_NAMESPACE=%s", fakePod.ObjectMeta.Name, fakePod.ObjectMeta.Namespace),
|
||||||
|
}
|
||||||
|
|
||||||
|
fKubeClient := testutils.NewFakeKubeClient()
|
||||||
|
fKubeClient.AddPod(fakePod)
|
||||||
|
fKubeClient.AddNetConfig("default", "myCRD1", "{\"type\": \"mynet\"}")
|
||||||
|
fKubeClient.AddNetConfig("default", "myCRD2", "{\"type\": \"mynet2\"}")
|
||||||
|
kubeClient, err := GetK8sClient("", fKubeClient)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
k8sArgs, err := GetK8sArgs(args)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
|
||||||
|
err = GetDefaultNetworks(k8sArgs, netConf, kubeClient)
|
||||||
|
Expect(err).NotTo(HaveOccurred())
|
||||||
|
Expect(len(netConf.Delegates)).To(Equal(1))
|
||||||
|
Expect(netConf.Delegates[0].Conf.Name).To(Equal("myCRD1"))
|
||||||
|
Expect(netConf.Delegates[0].Conf.Type).To(Equal("mynet"))
|
||||||
|
})
|
||||||
|
|
||||||
It("retrieves cluster network from file", func() {
|
It("retrieves cluster network from file", func() {
|
||||||
fakePod := testutils.NewFakePod("testpod", "", "")
|
fakePod := testutils.NewFakePod("testpod", "", "")
|
||||||
conf := `{
|
conf := `{
|
||||||
|
Loading…
Reference in New Issue
Block a user