Skip to content

Commit

Permalink
parse endpointInfo.endpoint from ip and port fields (in-line with k8s…
Browse files Browse the repository at this point in the history
… impl)
  • Loading branch information
aaaaaaaalex committed May 15, 2024
1 parent 87e01b4 commit 00a31e1
Show file tree
Hide file tree
Showing 5 changed files with 61 additions and 53 deletions.
16 changes: 14 additions & 2 deletions felix/bpf/proxy/endpoint.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,9 @@
package proxy

import (
"net"
"strconv"

"k8s.io/apimachinery/pkg/util/sets"
k8sp "k8s.io/kubernetes/pkg/proxy"
)
Expand Down Expand Up @@ -55,8 +58,17 @@ type endpointInfo struct {
var _ k8sp.Endpoint = &endpointInfo{}

// NewEndpointInfo creates a new endpointInfo, returning it as a k8s proxy Endpoint.
func NewEndpointInfo(ip string, port int, endpoint string, isLocal, ready, serving, terminating bool, zoneHints sets.Set[string]) k8sp.Endpoint {
return &endpointInfo{ip, port, endpoint, isLocal, ready, serving, terminating, zoneHints}
func NewEndpointInfo(ip string, port int, isLocal, ready, serving, terminating bool, zoneHints sets.Set[string]) k8sp.Endpoint {
return &endpointInfo{
ip: ip,
port: port,
endpoint: net.JoinHostPort(ip, strconv.Itoa(port)),
isLocal: isLocal,
ready: ready,
serving: serving,
terminating: terminating,
zoneHints: zoneHints,
}
}

// String is part of proxy.Endpoint interface.
Expand Down
2 changes: 1 addition & 1 deletion felix/bpf/proxy/lb_src_range_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ func testfn(makeIPs func(ips []string) proxy.K8sServicePortOption) {
),
},
EpsMap: k8sp.EndpointsMap{
svcKey: []k8sp.Endpoint{proxy.NewEndpointInfo("", 0, "10.1.0.1:5555", false, false, false, false, nil)},
svcKey: []k8sp.Endpoint{proxy.NewEndpointInfo("10.1.0.1", 5555, false, false, false, false, nil)},
},
}
makestep := func(step func()) func() {
Expand Down
6 changes: 1 addition & 5 deletions felix/bpf/proxy/syncer.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ import (
"fmt"
"net"
"reflect"
"strconv"
"strings"
"sync"
"time"
Expand Down Expand Up @@ -369,10 +368,7 @@ func (s *Syncer) startupBuildPrev(state DPSyncerState) error {
break
}
s.prevEpsMap[svckey.sname] = append(s.prevEpsMap[svckey.sname],
&endpointInfo{
endpoint: net.JoinHostPort(ep.Addr().String(), strconv.Itoa(int(ep.Port()))),
// IsLocal is not important here
},
NewEndpointInfo(ep.Addr().String(), int(ep.Port()), false, false, false, false, nil),
)
}
})
Expand Down
2 changes: 1 addition & 1 deletion felix/bpf/proxy/syncer_bench_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -46,7 +46,7 @@ func makeSvcEpsPair(svcIdx, epCnt, port int, opts ...K8sServicePortOption) (k8sp

eps := make([]k8sp.Endpoint, epCnt)
for j := 0; j < epCnt; j++ {
eps[j] = NewEndpointInfo("", 0, fmt.Sprintf("11.1.1.1:%d", j+1), false, false, false, false, nil)
eps[j] = NewEndpointInfo("11.1.1.1", j+1, false, false, false, false, nil)
}

return svc, eps
Expand Down
88 changes: 44 additions & 44 deletions felix/bpf/proxy/syncer_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,7 +77,7 @@ var _ = Describe("BPF Syncer", func() {

s, _ = proxy.NewSyncer(4, nodeIPs, svcs, eps, aff, rt, nil)

ep := proxy.NewEndpointInfo("", 0, "10.1.0.1:5555", false, true, false, false, nil)
ep := proxy.NewEndpointInfo("10.1.0.1", 5555, false, true, false, false, nil)
state = proxy.DPSyncerState{
SvcMap: k8sp.ServicePortMap{
svcKey: proxy.NewK8sServicePort(
Expand Down Expand Up @@ -147,10 +147,10 @@ var _ = Describe("BPF Syncer", func() {
v1.ProtocolTCP,
)
state.EpsMap[svcKey2] = []k8sp.Endpoint{
proxy.NewEndpointInfo("", 0, "10.2.0.0:1111", false, false, false, false, nil),
proxy.NewEndpointInfo("", 0, "10.2.0.1:1111", false, true, false, false, nil),
proxy.NewEndpointInfo("", 0, "10.2.0.1:2222", false, true, false, false, nil),
proxy.NewEndpointInfo("", 0, "10.2.0.3:1111", false, false, false, false, nil),
proxy.NewEndpointInfo("10.2.0.0", 1111, false, false, false, false, nil),
proxy.NewEndpointInfo("10.2.0.1", 1111, false, true, false, false, nil),
proxy.NewEndpointInfo("10.2.0.1", 2222, false, true, false, false, nil),
proxy.NewEndpointInfo("10.2.0.3", 1111, false, false, false, false, nil),
}

err := s.Apply(state)
Expand Down Expand Up @@ -230,7 +230,7 @@ var _ = Describe("BPF Syncer", func() {

By("deleting one second-service backend", makestep(func() {
state.EpsMap[svcKey2] = []k8sp.Endpoint{
proxy.NewEndpointInfo("", 0, "10.2.0.1:2222", false, true, false, false, nil),
proxy.NewEndpointInfo("10.2.0.1", 2222, false, true, false, false, nil),
}

err := s.Apply(state)
Expand All @@ -248,7 +248,7 @@ var _ = Describe("BPF Syncer", func() {

By("terminating second-service backend", makestep(func() {
state.EpsMap[svcKey2] = []k8sp.Endpoint{
proxy.NewEndpointInfo("", 0, "10.2.0.1:2222", false, false, false, true, nil),
proxy.NewEndpointInfo("10.2.0.1", 2222, false, false, false, true, nil),
}

err := s.Apply(state)
Expand All @@ -265,7 +265,7 @@ var _ = Describe("BPF Syncer", func() {
// Just that the rest of the test has the expected conditions.
By("reviving one second-service backend", makestep(func() {
state.EpsMap[svcKey2] = []k8sp.Endpoint{
proxy.NewEndpointInfo("", 0, "10.2.0.1:2222", false, true, false, false, nil),
proxy.NewEndpointInfo("10.2.0.1", 2222, false, true, false, false, nil),
}

err := s.Apply(state)
Expand Down Expand Up @@ -309,7 +309,7 @@ var _ = Describe("BPF Syncer", func() {
}

state.EpsMap[nosvcKey] = []k8sp.Endpoint{
proxy.NewEndpointInfo("", 0, "10.2.0.1:6666", false, true, false, false, nil),
proxy.NewEndpointInfo("10.2.0.1", 6666, false, true, false, false, nil),
}

err := s.Apply(state)
Expand Down Expand Up @@ -464,7 +464,7 @@ var _ = Describe("BPF Syncer", func() {
proxy.K8sSvcWithNodePort(3232),
)
state.EpsMap[svcKey3] = []k8sp.Endpoint{
proxy.NewEndpointInfo("", 0, "10.3.0.1:3434", false, true, false, false, nil),
proxy.NewEndpointInfo("10.3.0.1", 3434, false, true, false, false, nil),
}

err := s.Apply(state)
Expand Down Expand Up @@ -498,7 +498,7 @@ var _ = Describe("BPF Syncer", func() {
proxy.K8sSvcWithNodePort(3232),
)
state.EpsMap[svcKey3] = []k8sp.Endpoint{
proxy.NewEndpointInfo("", 0, "10.3.0.1:3434", false, true, false, false, nil),
proxy.NewEndpointInfo("10.3.0.1", 3434, false, true, false, false, nil),
}

err := s.Apply(state)
Expand Down Expand Up @@ -530,7 +530,7 @@ var _ = Describe("BPF Syncer", func() {
proxy.K8sSvcWithNodePort(1212),
)
state.EpsMap[svcKey3] = []k8sp.Endpoint{
proxy.NewEndpointInfo("", 0, "10.3.0.1:3434", false, true, false, false, nil),
proxy.NewEndpointInfo("10.3.0.1", 3434, false, true, false, false, nil),
}

err := s.Apply(state)
Expand Down Expand Up @@ -610,9 +610,9 @@ var _ = Describe("BPF Syncer", func() {
)

state.EpsMap[svcKey2] = []k8sp.Endpoint{
proxy.NewEndpointInfo("", 0, "10.2.1.1:2222", false, true, false, false, nil),
proxy.NewEndpointInfo("", 0, "10.2.2.1:2222", true, true, false, false, nil), // isLocal == true.
proxy.NewEndpointInfo("", 0, "10.2.3.1:2222", false, true, false, false, nil),
proxy.NewEndpointInfo("10.2.1.1", 2222, false, true, false, false, nil),
proxy.NewEndpointInfo("10.2.2.1", 2222, true, true, false, false, nil), // isLocal == true.
proxy.NewEndpointInfo("10.2.3.1", 2222, false, true, false, false, nil),
}

err := s.Apply(state)
Expand Down Expand Up @@ -763,10 +763,10 @@ var _ = Describe("BPF Syncer", func() {
)

state.EpsMap[svcKey2] = []k8sp.Endpoint{
proxy.NewEndpointInfo("", 0, "10.2.1.1:2222", false, true, false, false, nil),
proxy.NewEndpointInfo("", 0, "10.2.2.1:2222", false, true, false, false, nil),
proxy.NewEndpointInfo("", 0, "10.2.2.2:2222", false, true, false, false, nil),
proxy.NewEndpointInfo("", 0, "10.2.3.1:2222", false, true, false, false, nil),
proxy.NewEndpointInfo("10.2.1.1", 2222, false, true, false, false, nil),
proxy.NewEndpointInfo("10.2.2.1", 2222, false, true, false, false, nil),
proxy.NewEndpointInfo("10.2.2.2", 2222, false, true, false, false, nil),
proxy.NewEndpointInfo("10.2.3.1", 2222, false, true, false, false, nil),
}

rt.Update(
Expand Down Expand Up @@ -850,10 +850,10 @@ var _ = Describe("BPF Syncer", func() {
)

state.EpsMap[svcKey2] = []k8sp.Endpoint{
proxy.NewEndpointInfo("", 0, "10.2.0.1:2222", false, true, false, false, nil),
proxy.NewEndpointInfo("", 0, "10.3.0.1:2222", true, true, false, false, nil),
proxy.NewEndpointInfo("", 0, "10.4.0.1:2222", false, true, false, false, nil),
proxy.NewEndpointInfo("", 0, "10.5.0.1:2222", true, true, false, false, nil),
proxy.NewEndpointInfo("10.2.0.1", 2222, false, true, false, false, nil),
proxy.NewEndpointInfo("10.3.0.1", 2222, true, true, false, false, nil),
proxy.NewEndpointInfo("10.4.0.1", 2222, false, true, false, false, nil),
proxy.NewEndpointInfo("10.5.0.1", 2222, true, true, false, false, nil),
}

err := s.Apply(state)
Expand Down Expand Up @@ -917,7 +917,7 @@ var _ = Describe("BPF Syncer", func() {
)

state.EpsMap[svcKey2] = []k8sp.Endpoint{
proxy.NewEndpointInfo("", 0, "10.2.0.1:2222", false, true, false, false, nil),
proxy.NewEndpointInfo("10.2.0.1", 2222, false, true, false, false, nil),
}

err := s.Apply(state)
Expand All @@ -933,8 +933,8 @@ var _ = Describe("BPF Syncer", func() {

By("inserting another ep for service with affinity v1.ServiceAffinityClientIP", makestep(func() {
state.EpsMap[svcKey2] = []k8sp.Endpoint{
proxy.NewEndpointInfo("", 0, "10.2.0.1:2222", false, true, false, false, nil),
proxy.NewEndpointInfo("", 0, "10.3.0.1:3333", false, true, false, false, nil),
proxy.NewEndpointInfo("10.2.0.1", 2222, false, true, false, false, nil),
proxy.NewEndpointInfo("10.3.0.1", 3333, false, true, false, false, nil),
}

// add active affinity entry
Expand Down Expand Up @@ -974,7 +974,7 @@ var _ = Describe("BPF Syncer", func() {

By("deleting an ep for service with affinity v1.ServiceAffinityClientIP", makestep(func() {
state.EpsMap[svcKey2] = []k8sp.Endpoint{
proxy.NewEndpointInfo("", 0, "10.3.0.1:3333", false, true, false, false, nil),
proxy.NewEndpointInfo("10.3.0.1", 3333, false, true, false, false, nil),
}

err := aff.Update(
Expand Down Expand Up @@ -1067,8 +1067,8 @@ var _ = Describe("BPF Syncer", func() {
proxy.K8sSvcWithHintsAnnotation("auto"),
)
state.EpsMap[svcKey] = []k8sp.Endpoint{
proxy.NewEndpointInfo("", 0, "10.1.0.1:5555", false, true, false, false, sets.New[string]("us-west-2a")),
proxy.NewEndpointInfo("", 0, "10.2.0.2:5555", false, true, false, false, sets.New[string]("us-west-2b")),
proxy.NewEndpointInfo("10.1.0.1", 5555, false, true, false, false, sets.New[string]("us-west-2a")),
proxy.NewEndpointInfo("10.2.0.2", 5555, false, true, false, false, sets.New[string]("us-west-2b")),
}
state.NodeZone = "us-west-2a"

Expand All @@ -1085,8 +1085,8 @@ var _ = Describe("BPF Syncer", func() {
proxy.K8sSvcWithHintsAnnotation("auto"),
)
state.EpsMap[svcKey] = []k8sp.Endpoint{
proxy.NewEndpointInfo("", 0, "10.1.0.1:5555", false, true, false, false, sets.New[string]("us-west-2a")),
proxy.NewEndpointInfo("", 0, "10.2.0.2:5555", false, true, false, false, sets.New[string]("us-west-2b")),
proxy.NewEndpointInfo("10.1.0.1", 5555, false, true, false, false, sets.New[string]("us-west-2a")),
proxy.NewEndpointInfo("10.2.0.2", 5555, false, true, false, false, sets.New[string]("us-west-2b")),
}
state.NodeZone = "us-west-2b"

Expand All @@ -1103,8 +1103,8 @@ var _ = Describe("BPF Syncer", func() {
proxy.K8sSvcWithHintsAnnotation("disabled"),
)
state.EpsMap[svcKey] = []k8sp.Endpoint{
proxy.NewEndpointInfo("", 0, "10.1.0.1:5555", false, true, false, false, sets.New[string]("us-west-2a")),
proxy.NewEndpointInfo("", 0, "10.2.0.2:5555", false, true, false, false, sets.New[string]("us-west-2b")),
proxy.NewEndpointInfo("10.1.0.1", 5555, false, true, false, false, sets.New[string]("us-west-2a")),
proxy.NewEndpointInfo("10.2.0.2", 5555, false, true, false, false, sets.New[string]("us-west-2b")),
}
state.NodeZone = "us-west-2b"

Expand All @@ -1120,8 +1120,8 @@ var _ = Describe("BPF Syncer", func() {
v1.ProtocolTCP,
)
state.EpsMap[svcKey] = []k8sp.Endpoint{
proxy.NewEndpointInfo("", 0, "10.1.0.1:5555", false, true, false, false, sets.New[string]("us-west-2a")),
proxy.NewEndpointInfo("", 0, "10.2.0.2:5555", false, true, false, false, sets.New[string]("us-west-2b")),
proxy.NewEndpointInfo("10.1.0.1", 5555, false, true, false, false, sets.New[string]("us-west-2a")),
proxy.NewEndpointInfo("10.2.0.2", 5555, false, true, false, false, sets.New[string]("us-west-2b")),
}
state.NodeZone = "us-west-2b"

Expand All @@ -1138,8 +1138,8 @@ var _ = Describe("BPF Syncer", func() {
proxy.K8sSvcWithHintsAnnotation("auto"),
)
state.EpsMap[svcKey] = []k8sp.Endpoint{
proxy.NewEndpointInfo("", 0, "10.1.0.1:5555", false, true, false, false, sets.New[string]("us-west-2a")),
proxy.NewEndpointInfo("", 0, "10.2.0.2:5555", false, true, false, false, sets.New[string]("us-west-2b")),
proxy.NewEndpointInfo("10.1.0.1", 5555, false, true, false, false, sets.New[string]("us-west-2a")),
proxy.NewEndpointInfo("10.2.0.2", 5555, false, true, false, false, sets.New[string]("us-west-2b")),
}
state.NodeZone = ""

Expand All @@ -1165,9 +1165,9 @@ var _ = Describe("BPF Syncer", func() {
v1.ProtocolTCP,
)
state.EpsMap[svcKey4] = []k8sp.Endpoint{
proxy.NewEndpointInfo("", 0, "10.1.0.1:5555", false, true, false, false, nil),
proxy.NewEndpointInfo("", 0, "10.1.0.2:6666", false, false, false, true, nil),
proxy.NewEndpointInfo("", 0, "10.1.0.3:7777", false, true, false, false, nil),
proxy.NewEndpointInfo("10.1.0.1", 5555, false, true, false, false, nil),
proxy.NewEndpointInfo("10.1.0.2", 6666, false, false, false, true, nil),
proxy.NewEndpointInfo("10.1.0.3", 7777, false, true, false, false, nil),
}

// Expect 2x new map entries for Ready pods only; Terminating pods not added to map.
Expand Down Expand Up @@ -1218,8 +1218,8 @@ var _ = Describe("BPF Syncer", func() {
},
EpsMap: k8sp.EndpointsMap{
svcKey: []k8sp.Endpoint{
proxy.NewEndpointInfo("", 0, "10.1.0.2:6666", false, true, false, false, nil),
proxy.NewEndpointInfo("", 0, "10.1.0.2:5555", false, false, false, true, nil),
proxy.NewEndpointInfo("10.1.0.1", 5555, false, true, false, false, nil),
proxy.NewEndpointInfo("10.1.0.2", 5555, false, false, false, true, nil),
},
},
}
Expand Down Expand Up @@ -1255,8 +1255,8 @@ var _ = Describe("BPF Syncer", func() {
},
EpsMap: k8sp.EndpointsMap{
svcKey: []k8sp.Endpoint{
proxy.NewEndpointInfo("", 0, "10.1.0.1:5555", false, true, false, false, nil),
proxy.NewEndpointInfo("", 0, "10.1.0.2:5555", false, false, false, true, nil),
proxy.NewEndpointInfo("10.1.0.1", 5555, false, true, false, false, nil),
proxy.NewEndpointInfo("10.1.0.2", 5555, false, false, false, true, nil),
},
},
}
Expand Down

0 comments on commit 00a31e1

Please sign in to comment.