// useK8sNodeCIDR sets the ipv4-range value from the cluster-node-cidr defined in the, // kube-apiserver. func (d *Daemon) useK8sNodeCIDR(nodeName string) error { if !d.conf.IPv4Enabled { return nil } k8sNode, err := d.k8sClient.Nodes().Get(nodeName) if err != nil { return err } if k8sNode.Spec.PodCIDR == "" { return fmt.Errorf("Empty PodCIDR defined in kubernetes spec for node %s", nodeName) } ip, _, err := net.ParseCIDR(k8sNode.Spec.PodCIDR) if err != nil { return err } ciliumIPv4, err := addressing.NewCiliumIPv4(ip.String()) if err != nil { return err } ipv6NodeAddress := d.conf.NodeAddress.IPv6Address.NodeIP().String() nodeAddr, err := addressing.NewNodeAddress(ipv6NodeAddress, ciliumIPv4.NodeIP().String(), "") if err != nil { return err } log.Infof("Retrieved %s for node %s. Using it for ipv4-range", k8sNode.Spec.PodCIDR, nodeName) d.conf.NodeAddress = nodeAddr return nil }
func (s *CiliumClientSuite) SetUpSuite(c *C) { socketDir := os.Getenv("SOCKET_DIR") socketPath := filepath.Join(socketDir, "cilium.sock") tempLibDir, err := ioutil.TempDir("", "cilium-test") c.Assert(err, IsNil) tempRunDir, err := ioutil.TempDir("", "cilium-test-run") c.Assert(err, IsNil) err = os.Mkdir(filepath.Join(tempRunDir, "globals"), 0777) c.Assert(err, IsNil) nodeAddress, err := addressing.NewNodeAddress("beef:beef:beef:beef:aaaa:aaaa:1111:0", "10.1.0.1", "") c.Assert(err, IsNil) daemonConf := cnd.NewConfig() daemonConf.LibDir = tempLibDir daemonConf.RunDir = tempRunDir daemonConf.DryMode = true daemonConf.LXCMap = nil daemonConf.NodeAddress = nodeAddress daemonConf.DockerEndpoint = "tcp://127.0.0.1" daemonConf.K8sEndpoint = "tcp://127.0.0.1" daemonConf.ValidLabelPrefixes = nil daemonConf.OptsMU.Lock() daemonConf.Opts.Set(endpoint.OptionDropNotify, true) daemonConf.OptsMU.Unlock() daemonConf.Device = "undefined" err = daemonConf.SetKVBackend() c.Assert(err, IsNil) d1 := []byte("#!/usr/bin/env bash\necho \"OK\"\n") err = ioutil.WriteFile(filepath.Join(daemonConf.LibDir, "join_ep.sh"), d1, 0755) c.Assert(err, IsNil) err = ioutil.WriteFile(filepath.Join(daemonConf.LibDir, "init.sh"), d1, 0755) c.Assert(err, IsNil) d, err := cnd.NewDaemon(daemonConf) if err != nil { c.Fatalf("Failed while creating new cilium-net test server: %+v", err) } server, err := cns.NewServer(socketPath, d) if err != nil { c.Fatalf("Failed while creating new cilium-net test server: %+v", err) } cli, err := cnc.NewClient("unix://"+socketPath, nil) if err != nil { c.Fatalf("Failed while creating new client: %+v", err) } s.cli = cli s.server = server go func() { if err := s.server.Start(); err != nil { c.Fatalf("Error while starting cilium-net test server: %s", err) s.server.Stop() } }() }
func (ds *DaemonSuite) SetUpTest(c *C) { tempLibDir, err := ioutil.TempDir("", "cilium-test") c.Assert(err, IsNil) tempRunDir, err := ioutil.TempDir("", "cilium-test-run") c.Assert(err, IsNil) err = os.Mkdir(filepath.Join(tempRunDir, "globals"), 0777) c.Assert(err, IsNil) nodeAddress, err := addressing.NewNodeAddress("beef:beef:beef:beef:aaaa:aaaa:1111:0", "10.1.0.1", "") c.Assert(err, IsNil) daemonConf := &Config{ DryMode: true, Opts: option.NewBoolOptions(&DaemonOptionLibrary), } daemonConf.LibDir = tempLibDir daemonConf.RunDir = tempRunDir daemonConf.LXCMap = nil daemonConf.NodeAddress = nodeAddress daemonConf.DockerEndpoint = "tcp://127.0.0.1" daemonConf.K8sEndpoint = "tcp://127.0.0.1" daemonConf.ValidLabelPrefixes = nil daemonConf.OptsMU.Lock() daemonConf.Opts.Set(endpoint.OptionDropNotify, true) daemonConf.OptsMU.Unlock() daemonConf.Device = "undefined" err = daemonConf.SetKVBackend() c.Assert(err, IsNil) d1 := []byte("#!/usr/bin/env bash\necho \"OK\"\n") err = ioutil.WriteFile(filepath.Join(daemonConf.LibDir, "join_ep.sh"), d1, 0755) c.Assert(err, IsNil) err = ioutil.WriteFile(filepath.Join(daemonConf.LibDir, "init.sh"), d1, 0755) c.Assert(err, IsNil) d, err := NewDaemon(daemonConf) c.Assert(err, Equals, nil) ds.d = d d.kvClient.DeleteTree(common.OperationalPath) }
func initEnv(ctx *cli.Context) error { config.OptsMU.Lock() if ctx.GlobalBool("debug") { common.SetupLOG(log, "DEBUG") config.Opts.Set(endpoint.OptionDebug, true) } else { common.SetupLOG(log, "INFO") } config.Opts.Set(endpoint.OptionDropNotify, true) config.Opts.Set(endpoint.OptionNAT46, true) config.Opts.Set(daemon.OptionPolicyTracing, enableTracing) config.Opts.Set(endpoint.OptionConntrack, !disableConntrack) config.Opts.Set(endpoint.OptionConntrackAccounting, !disableConntrack) config.Opts.Set(endpoint.OptionPolicy, !disablePolicy) config.OptsMU.Unlock() config.ValidLabelPrefixesMU.Lock() if labelPrefixFile != "" { var err error config.ValidLabelPrefixes, err = labels.ReadLabelPrefixCfgFrom(labelPrefixFile) if err != nil { log.Fatalf("Unable to read label prefix file: %s\n", err) } } else { config.ValidLabelPrefixes = labels.DefaultLabelPrefixCfg() } config.ValidLabelPrefixesMU.Unlock() _, r, err := net.ParseCIDR(nat46prefix) if err != nil { log.Fatalf("Invalid NAT46 prefix %s: %s", nat46prefix, err) } config.NAT46Prefix = r nodeAddress, err := addressing.NewNodeAddress(v6Address, v4Prefix, config.Device) if err != nil { log.Fatalf("Unable to parse node address: %s", err) } config.NodeAddress = nodeAddress // Mount BPF Map directory if not already done args := []string{"-q", common.BPFMapRoot} _, err = exec.Command("mountpoint", args...).CombinedOutput() if err != nil { args = []string{"bpffs", common.BPFMapRoot, "-t", "bpf"} out, err := exec.Command("mount", args...).CombinedOutput() if err != nil { log.Fatalf("Command execution failed: %s\n%s", err, out) } } if config.IsK8sEnabled() && !strings.HasPrefix(config.K8sEndpoint, "http") { config.K8sEndpoint = "http://" + config.K8sEndpoint } if uiServerAddr != "" { if _, _, err := common.ParseHost(uiServerAddr); err != nil { log.Fatalf("Invalid UI server address and port address '%s': %s", uiServerAddr, err) } config.UIServerAddr = uiServerAddr } return nil }