Add 'weave expose' NAT iptables rules inside CNI plugin
This avoids a race between the plugin and the script
This commit is contained in:
1 parent
2b4d13c5b1
commit
a07e3301b1
3 files changed
+21
-3
No files matched your search
+18
@@ -271,3 +271,21 @@ func subnets(addrs []netlink.Addr) map[string]struct{} {
|
|||||||
}
|
}
|
||||||
return subnets
|
return subnets
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func ExposeNAT(ipnet net.IPNet) error {
|
||||||
|
ipt, err := iptables.New()
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
cidr := ipnet.String()
|
||||||
|
if err := ipt.AppendUnique("nat", "WEAVE", "-s", cidr, "-d", "224.0.0.0/4", "-j", "RETURN"); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := ipt.AppendUnique("nat", "WEAVE", "-d", cidr, "!", "-s", cidr, "-j", "MASQUERADE"); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if err := ipt.AppendUnique("nat", "WEAVE", "-s", cidr, "!", "-d", cidr, "-j", "MASQUERADE"); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
@@ -84,6 +84,9 @@ func (c *CNIPlugin) CmdAdd(args *skel.CmdArgs) error {
|
|||||||
if err := assignBridgeIP(conf.BrName, bridgeIPResult.IP4.IP); err != nil {
|
if err := assignBridgeIP(conf.BrName, bridgeIPResult.IP4.IP); err != nil {
|
||||||
return fmt.Errorf("unable to assign IP address to bridge: %s", err)
|
return fmt.Errorf("unable to assign IP address to bridge: %s", err)
|
||||||
}
|
}
|
||||||
|
if err := weavenet.ExposeNAT(bridgeIPResult.IP4.IP); err != nil {
|
||||||
|
return fmt.Errorf("unable to create NAT rules: %s", err)
|
||||||
|
}
|
||||||
bridgeIP = bridgeIPResult.IP4.IP.IP
|
bridgeIP = bridgeIPResult.IP4.IP.IP
|
||||||
} else if err != nil {
|
} else if err != nil {
|
||||||
return err
|
return err
|
||||||
|
|||||||
@@ -152,7 +152,4 @@ done
|
|||||||
reclaim_ips "_" $IPS
|
reclaim_ips "_" $IPS
|
||||||
done
|
done
|
||||||
|
|
||||||
# Expose the weave network so host processes can communicate with pods
|
|
||||||
/home/weave/weave --local expose $WEAVE_EXPOSE_IP
|
|
||||||
|
|
||||||
wait $WEAVE_PID
|
wait $WEAVE_PID
|
||||||
Reference in new issue
Block a user