CIS Version : 2.14.0
Build: f5networks/k8s-bigip-ctlr:2.14.0
BIGIP Version: Big IP 15.1.7 Build 0.0.6 Final
AS3 Version: 3.45.0-5.noarch
Agent Mode: AS3
Orchestration: K8S
Orchestration Version: 1.26.9
Pool Mode: Nodeport
Additional Setup details: IPAM controller running version v0.1.9 with an IPAM label set.
Description
For some reason when running the k8s-bigip-ctlr in nodeport mode, and creating two VirtualServers with hostGroup set to the same value and the same IPAM label to request an address from the F5 IPAM controller, one of the VirtualServer objects always set the status.vsAddress field to None. When switching to cluster mode this does not happen, and both objects get the status correctly updated to the same virtual server address.
Steps To Reproduce
1) Deploy v2.14.0 of the k8s-bigip-ctlr and v0.1.9 of the IPAM controller with an ip-range configured.
F5 BIGIP Controller flags:
2) Create two VirtualServer objects sharing the same hostGroup and ipamLabel.
3) Observe the output of kubectl get vs -n <NAMESPACE> and the values in the IPAMVSADDRESS column.
Expected Result
We expect the see same VS address in the status.vsAddress field of both objects sharing the same hostGroup and ipamLabel.
Actual Result
One of the status.vsAddress fields will always be set to None.
Observations
We think we've found where this problem occurs in the code. When we swap a break with a continue in worker.go, see this commit in a branch (which in turn was branched off from the v2.14.0 tag): https://github.com/mikejoh/k8s-bigip-ctlr/commit/62f2d220e15a7294f2a9d7ef949f3d734f4797bb. With this small change, we consistently get the status.vsAddress populated with the correct IP in both VirtualServer objects.
Setup Details
CIS Version : 2.14.0 Build: f5networks/k8s-bigip-ctlr:2.14.0 BIGIP Version: Big IP 15.1.7 Build 0.0.6 Final AS3 Version: 3.45.0-5.noarch Agent Mode: AS3 Orchestration: K8S Orchestration Version: 1.26.9 Pool Mode: Nodeport
Additional Setup details: IPAM controller running version
v0.1.9
with an IPAM label set.Description
For some reason when running the
k8s-bigip-ctlr
innodeport
mode, and creating twoVirtualServers
withhostGroup
set to the same value and the same IPAM label to request an address from the F5 IPAM controller, one of theVirtualServer
objects always set thestatus.vsAddress
field toNone
. When switching tocluster
mode this does not happen, and both objects get the status correctly updated to the same virtual server address.Steps To Reproduce
1) Deploy
v2.14.0
of thek8s-bigip-ctlr
andv0.1.9
of the IPAM controller with an ip-range configured. F5 BIGIP Controller flags:IPAM controller flags:
2) Create two
VirtualServer
objects sharing the samehostGroup
andipamLabel
. 3) Observe the output ofkubectl get vs -n <NAMESPACE>
and the values in theIPAMVSADDRESS
column.Expected Result
We expect the see same VS address in the
status.vsAddress
field of both objects sharing the samehostGroup
andipamLabel
.Actual Result
One of the
status.vsAddress
fields will always be set toNone
.Observations
We think we've found where this problem occurs in the code. When we swap a
break
with acontinue
inworker.go
, see this commit in a branch (which in turn was branched off from thev2.14.0
tag): https://github.com/mikejoh/k8s-bigip-ctlr/commit/62f2d220e15a7294f2a9d7ef949f3d734f4797bb. With this small change, we consistently get thestatus.vsAddress
populated with the correct IP in bothVirtualServer
objects.