From c705d3480412c8a03e7949146d39564825d4e050 Mon Sep 17 00:00:00 2001 From: Manuel Buil Date: Wed, 8 Jun 2022 10:38:07 +0200 Subject: [PATCH] Add FlannelConfCNI flag Signed-off-by: Manuel Buil --- pkg/agent/config/config.go | 1 + pkg/agent/flannel/setup.go | 9 +++++++-- pkg/agent/util/file.go | 13 +++++++++++++ pkg/cli/cmds/agent.go | 7 +++++++ pkg/cli/cmds/server.go | 1 + pkg/daemons/config/types.go | 1 + 6 files changed, 30 insertions(+), 2 deletions(-) diff --git a/pkg/agent/config/config.go b/pkg/agent/config/config.go index df7803b61d1..b0ee7a0afc6 100644 --- a/pkg/agent/config/config.go +++ b/pkg/agent/config/config.go @@ -533,6 +533,7 @@ func get(ctx context.Context, envInfo *cmds.Agent, proxy proxy.Proxy) (*config.N } nodeConfig.AgentConfig.CNIBinDir = filepath.Dir(hostLocal) nodeConfig.AgentConfig.CNIConfDir = filepath.Join(envInfo.DataDir, "agent", "etc", "cni", "net.d") + nodeConfig.AgentConfig.FlannelCniConfFile = envInfo.FlannelCniConfFile } if nodeConfig.ContainerRuntimeEndpoint == "" { diff --git a/pkg/agent/flannel/setup.go b/pkg/agent/flannel/setup.go index a0174d5f951..fc21b51d523 100644 --- a/pkg/agent/flannel/setup.go +++ b/pkg/agent/flannel/setup.go @@ -91,7 +91,7 @@ const ( ) func Prepare(ctx context.Context, nodeConfig *config.Node) error { - if err := createCNIConf(nodeConfig.AgentConfig.CNIConfDir); err != nil { + if err := createCNIConf(nodeConfig.AgentConfig.CNIConfDir, nodeConfig); err != nil { return err } @@ -146,12 +146,17 @@ func waitForPodCIDR(ctx context.Context, nodeName string, nodes typedcorev1.Node return nil } -func createCNIConf(dir string) error { +func createCNIConf(dir string, nodeConfig *config.Node) error { logrus.Debugf("Creating the CNI conf in directory %s", dir) if dir == "" { return nil } p := filepath.Join(dir, "10-flannel.conflist") + + if nodeConfig.AgentConfig.FlannelCniConfFile != "" { + logrus.Debugf("Using %s as the flannel CNI conf", nodeConfig.AgentConfig.FlannelCniConfFile) + return util.CopyFile(nodeConfig.AgentConfig.FlannelCniConfFile, p) + } return util.WriteFile(p, cniConf) } diff --git a/pkg/agent/util/file.go b/pkg/agent/util/file.go index 0cace178c7e..17c263c1436 100644 --- a/pkg/agent/util/file.go +++ b/pkg/agent/util/file.go @@ -16,3 +16,16 @@ func WriteFile(name string, content string) error { } return nil } + +func CopyFile(sourceFile string, destinationFile string) error { + os.MkdirAll(filepath.Dir(destinationFile), 0755) + input, err := ioutil.ReadFile(sourceFile) + if err != nil { + return errors.Wrapf(err, "copying %s to %s", sourceFile, destinationFile) + } + err = ioutil.WriteFile(destinationFile, input, 0644) + if err != nil { + return errors.Wrapf(err, "copying %s to %s", sourceFile, destinationFile) + } + return nil +} diff --git a/pkg/cli/cmds/agent.go b/pkg/cli/cmds/agent.go index b53f7804d04..eed7760532a 100644 --- a/pkg/cli/cmds/agent.go +++ b/pkg/cli/cmds/agent.go @@ -31,6 +31,7 @@ type Agent struct { NoFlannel bool FlannelIface string FlannelConf string + FlannelCniConfFile string Debug bool Rootless bool RootlessAlreadyUnshared bool @@ -135,6 +136,11 @@ var ( Usage: "(agent/networking) Override default flannel config file", Destination: &AgentConfig.FlannelConf, } + FlannelCniConfFileFlag = cli.StringFlag{ + Name: "flannel-cni-conf", + Usage: "(agent/networking) Override default flannel cni config file", + Destination: &AgentConfig.FlannelCniConfFile, + } ResolvConfFlag = cli.StringFlag{ Name: "resolv-conf", Usage: "(agent/networking) Kubelet resolv.conf file", @@ -258,6 +264,7 @@ func NewAgentCommand(action func(ctx *cli.Context) error) cli.Command { ResolvConfFlag, FlannelIfaceFlag, FlannelConfFlag, + FlannelCniConfFileFlag, ExtraKubeletArgs, ExtraKubeProxyArgs, ProtectKernelDefaultsFlag, diff --git a/pkg/cli/cmds/server.go b/pkg/cli/cmds/server.go index 301577a93f2..0812586cfa1 100644 --- a/pkg/cli/cmds/server.go +++ b/pkg/cli/cmds/server.go @@ -439,6 +439,7 @@ var ServerFlags = []cli.Flag{ ResolvConfFlag, FlannelIfaceFlag, FlannelConfFlag, + FlannelCniConfFileFlag, ExtraKubeletArgs, ExtraKubeProxyArgs, ProtectKernelDefaultsFlag, diff --git a/pkg/daemons/config/types.go b/pkg/daemons/config/types.go index 673906ca70c..64c368b8890 100644 --- a/pkg/daemons/config/types.go +++ b/pkg/daemons/config/types.go @@ -101,6 +101,7 @@ type Agent struct { ImageCredProvBinDir string ImageCredProvConfig string IPSECPSK string + FlannelCniConfFile string StrongSwanDir string PrivateRegistry string SystemDefaultRegistry string