From 2082a42527456d7e8eb049c017bf5e4df29bd777 Mon Sep 17 00:00:00 2001 From: Francis Nguyen Date: Mon, 10 Feb 2020 21:36:54 -0700 Subject: [PATCH] Connect to configuration --- pkg/k8s/backend.go | 6 +++--- pkg/mesh/mesh.go | 2 +- pkg/mesh/topology.go | 23 ++++++++++++++--------- 3 files changed, 18 insertions(+), 13 deletions(-) diff --git a/pkg/k8s/backend.go b/pkg/k8s/backend.go index f49e25d..a368f2b 100644 --- a/pkg/k8s/backend.go +++ b/pkg/k8s/backend.go @@ -263,9 +263,9 @@ func translateNode(node *v1.Node) *mesh.Node { if !ok { internalIP = node.ObjectMeta.Annotations[internalIPAnnotationKey] } - // Set Wireguard PersistentKeepAliveKey. + // Set Wireguard PersistentKeepAlive setting for the node. var wireGuardPersistentKeepAlive int64 - if wgKeepAlive, ok := node.ObjectMeta.Annotations[wireGuardIPAnnotationKey]; !ok { + if wgKeepAlive, ok := node.ObjectMeta.Annotations[wireGuardPersistentKeepAliveKey]; !ok { wireGuardPersistentKeepAlive = 0 } else { if wireGuardPersistentKeepAlive, err = strconv.ParseInt(wgKeepAlive, 10, 64); err != nil { @@ -297,7 +297,7 @@ func translateNode(node *v1.Node) *mesh.Node { // the node's agent has not yet reconciled. In either case, the IP // will parse as nil. WireGuardIP: normalizeIP(node.ObjectMeta.Annotations[wireGuardIPAnnotationKey]), - WireGuardPersistentKeepAlive: wireGuardPersistentKeepAlive, + WireGuardPersistentKeepAlive: int(wireGuardPersistentKeepAlive), } } diff --git a/pkg/mesh/mesh.go b/pkg/mesh/mesh.go index fec98ab..5553886 100644 --- a/pkg/mesh/mesh.go +++ b/pkg/mesh/mesh.go @@ -84,7 +84,7 @@ type Node struct { Name string Subnet *net.IPNet WireGuardIP *net.IPNet - WireGuardPersistentKeepAlive int64 + WireGuardPersistentKeepAlive int } // Ready indicates whether or not the node is ready. diff --git a/pkg/mesh/topology.go b/pkg/mesh/topology.go index c27ed3e..6cb2d55 100644 --- a/pkg/mesh/topology.go +++ b/pkg/mesh/topology.go @@ -69,6 +69,9 @@ type segment struct { // wireGuardIP is the allocated IP address of the WireGuard // interface on the leader of the segment. wireGuardIP net.IP + // wireGuardPersistentKeepAlive is the interval in seconds of the emission + // of keepalive packets to the peer. + wireGuardPersistentKeepAlive int } // NewTopology creates a new Topology struct from a given set of nodes and peers. @@ -117,14 +120,15 @@ func NewTopology(nodes map[string]*Node, peers map[string]*Peer, granularity Gra privateIPs = append(privateIPs, node.InternalIP.IP) } t.segments = append(t.segments, &segment{ - allowedIPs: allowedIPs, - endpoint: topoMap[location][leader].ExternalIP.IP, - key: topoMap[location][leader].Key, - location: location, - cidrs: cidrs, - hostnames: hostnames, - leader: leader, - privateIPs: privateIPs, + allowedIPs: allowedIPs, + endpoint: topoMap[location][leader].ExternalIP.IP, + key: topoMap[location][leader].Key, + location: location, + cidrs: cidrs, + hostnames: hostnames, + leader: leader, + privateIPs: privateIPs, + wireGuardPersistentKeepAlive: topoMap[location][leader].WireGuardPersistentKeepAlive, }) } // Sort the Topology segments so the result is stable. @@ -334,7 +338,8 @@ func (t *Topology) Conf() *wireguard.Conf { IP: s.endpoint, Port: uint32(t.port), }, - PublicKey: s.key, + PublicKey: s.key, + PersistentKeepalive: s.wireGuardPersistentKeepAlive, } c.Peers = append(c.Peers, peer) }