Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

SDN-5297: DownStream Merge Sync from 4.18 [10-31-2024] #2335

Closed
wants to merge 220 commits into from
Closed
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
220 commits
Select commit Hold shift + click to select a range
05ccb99
Change pod and join subnet used with net-attach-def in unit tests
arghosh93 Aug 9, 2024
28f70c4
docs, api-reference: Add UDN CRD API doc
ormergi Aug 7, 2024
7cc6368
Dockerfile: Bump OVS to 3.4.0-1
npinaeva Aug 26, 2024
2e7da21
Dockerfile: Bump OVS to 3.4.0-1 for OKD.
npinaeva Aug 26, 2024
c78d825
Add a source pod create retry function for egress firewall e2e.
npinaeva Aug 22, 2024
7ca7cec
UDN:LGW: Add MASQUERADE IPT Rule
tssurya Jul 19, 2024
da1386b
Merge pull request #4552 from tssurya/udn-add-iptrules
trozet Aug 28, 2024
a95e101
UDN: allow multiple conditions of different types to co-exist in the
npinaeva Aug 16, 2024
c94b937
UDN: Add rp_filter loose mode for management port
tssurya Jul 19, 2024
90d145b
Merge pull request #2273 from npinaeva/ovs-3.4
openshift-merge-bot[bot] Aug 29, 2024
28b1db4
Merge pull request #4664 from npinaeva/udn-status
tssurya Aug 29, 2024
15c5621
Merge pull request #4553 from tssurya/udn-add-rp-filter-loose-mode-ma…
trozet Aug 29, 2024
a4fbb99
Move mirrored endpointslice constants to types pkg
ricky-rav Jul 17, 2024
7310251
Fixes remote node checks to be network aware
trozet Aug 29, 2024
4cf0a2e
Services controller: add support for UDNs
ricky-rav Aug 6, 2024
d2fd6a9
Services controller: add network name to logs
ricky-rav Aug 6, 2024
1aaa219
Services controller: update ExternalIDs in existing unit tests
ricky-rav Aug 9, 2024
a39da39
Services controller: add unit tests for UDNs
ricky-rav Jul 31, 2024
3d05dec
Allow execution of other network segmentation with WHAT parameter
ricky-rav Aug 27, 2024
3d0665b
E2E tests for services on UDN
ricky-rav Aug 9, 2024
c3b0419
Use faked iptables in UDN gateway tests
jcaamano Aug 30, 2024
aac171c
Update Dockerfile.fedora to use pre-released 24.09 ovn rpm.
npinaeva Aug 20, 2024
6e5d943
Merge pull request #4555 from ricky-rav/UDNservicesL3_ontoptest2
trozet Aug 30, 2024
5a10234
Merge pull request #4675 from jcaamano/fake-iptables
tssurya Aug 30, 2024
9989e39
Merge pull request #4658 from npinaeva/bump-ovn
trozet Aug 30, 2024
2f49160
Merge pull request #4672 from trozet/fix_remote_node_add
trozet Aug 30, 2024
00c1534
Emit Event if NAD cannot be parsed
martinkennelly Aug 30, 2024
9f809fe
udn, e2e: Don't use secondary node IPs for node port test.
dceara Aug 29, 2024
816835f
zone_ic_handler: Make sure routes to other zones are added for UDN.
dceara Aug 22, 2024
3d95d47
nodePortWatcher: Only build svc cookie if needed.
dceara Aug 20, 2024
03b442c
node, udn: Add function to get active bridge net config.
dceara Aug 21, 2024
f31b8f4
node, udn: Allow nodePortWatcher/nodePortWatcherIptables to query the…
dceara Aug 21, 2024
fd9ee80
Add udn.GetUDNGatewayMasqueradeIPs utils
tssurya Aug 30, 2024
c31cf5d
Add per-pod SNAT for UDNs
tssurya Aug 29, 2024
aa321f7
gateway, node, udn: Pass netInfo down to the node port watchers.
dceara Aug 21, 2024
9945dec
Delete per-pod SNAT for UDNs
tssurya Aug 29, 2024
dc13db7
UDN: Lanes should run with ds flag set
tssurya Aug 29, 2024
fe8e6d1
udn, node: Make br-ex flows network aware.
dceara Aug 21, 2024
d396c12
udn, e2e: Add node port services e2e test for UDN.
dceara Aug 28, 2024
2260d10
Merge pull request #4648 from dceara/net-seg-ingress-br-ex
trozet Aug 30, 2024
d132a39
Merge pull request #4595 from ormergi/network-api-doc
tssurya Aug 31, 2024
f0c876f
Print errors on node annotation failure.
npinaeva Aug 6, 2024
4666898
Bump ovn dbs to ovn-org/ovn/tree/branch-24.09.
npinaeva Aug 2, 2024
d431a61
Add config options to enable observability.
npinaeva Aug 4, 2024
ca41702
Add observability manager, add samplingConfig for acl db ops.
npinaeva Aug 2, 2024
a5d5072
Update libovsdb to the latest version.
npinaeva Aug 20, 2024
29ec673
Add observability library and ovnkube-observ binary to run debug mode.
npinaeva Aug 2, 2024
d94b265
Add observability docs
npinaeva Aug 6, 2024
5d2310e
Free disk for dualstack conversion job.
npinaeva Aug 21, 2024
50a9edf
Merge pull request #4669 from tssurya/udn-fix-per-pod-snating
tssurya Sep 2, 2024
5115b72
Add subnet overlap check for POD and join subnets in net-attach-def
arghosh93 Aug 9, 2024
51b6cf5
EIP IPv6 e2es: enable for control plane tests
martinkennelly Jul 31, 2024
b888c21
EIP e2es - healthcheck: drop packets for IPv6 to cause node unavailab…
martinkennelly Aug 1, 2024
54e5a87
EIP e2e: fix IPv6 e2e VRF test
martinkennelly Aug 9, 2024
22727db
Fix E2E util for dropping traffic on a particular port
martinkennelly Sep 3, 2024
834fd00
Merge pull request #4604 from arghosh93/SDN-5138
tssurya Sep 3, 2024
152f838
Merge pull request #2276 from martinkennelly/merge-28-aug
openshift-merge-bot[bot] Sep 4, 2024
3764092
Merge remote-tracking branch 'origin/master' into merge_04_08_24
martinkennelly Sep 4, 2024
0d132d3
OCPHACK: Rename unit test file for downstream-only tests
ricky-rav Aug 30, 2024
49ddde7
OCPHACK: downstream-only unit tests for services: add UDN support
ricky-rav Aug 30, 2024
24b4749
UDN LGW: ensure masq chain exists before adding rules
martinkennelly Sep 4, 2024
244efcf
Merge pull request #4677 from martinkennelly/badnetconfig
trozet Sep 5, 2024
14fb7c4
Merge pull request #2286 from martinkennelly/merge_04_08_24
openshift-merge-bot[bot] Sep 5, 2024
4ef14cd
validate the ipfamily for network attachments
JacobTanenbaum Aug 14, 2024
4d471bc
udn/nad e2e testing ip family aware
JacobTanenbaum Aug 15, 2024
129a097
Merge remote-tracking branch 'ds/master' into merge-5sept-417
martinkennelly Sep 5, 2024
a551930
Merge pull request #4697 from martinkennelly/ensure-chain-udn
tssurya Sep 6, 2024
c275e72
kubevirt, e2e: Use e2enode to label/unlabel
qinqon Sep 6, 2024
d57e8c2
add testing of CRDs to the network segmentation tests
JacobTanenbaum Aug 22, 2024
96abe32
Add unit tests for UDN while DS is true
arghosh93 Sep 9, 2024
4e0a97d
Merge pull request #4625 from JacobTanenbaum/cleanupPods
trozet Sep 9, 2024
845c3e3
Merge pull request #4707 from arghosh93/unitTestUDN
trozet Sep 9, 2024
c347c5a
Merge pull request #4706 from qinqon/kubevirt-e2e-unlable-with-e2enode
trozet Sep 9, 2024
96f94fc
Merge pull request #4650 from npinaeva/ef-e2e-workaround
trozet Sep 9, 2024
6cdf7ec
Add static route to the hairpin masquerade IPs to pod
pliurh Aug 29, 2024
b3ba566
kind: Pin metallb to v0.14.8
qinqon Sep 10, 2024
32f09a1
Merge pull request #4710 from qinqon/pin-metallb
tssurya Sep 11, 2024
45abadb
Adds e2e test: conntrack flush after ovnkube delete
trozet Sep 10, 2024
537a64f
Bump OVN for https://issues.redhat.com/browse/FDP-773
trozet Sep 11, 2024
4b0a31c
Bump OVN to ovn24.09-24.09.0-beta.31.el9fdp
trozet Sep 11, 2024
cc47bf4
Merge pull request #4712 from trozet/check_tcp_connectivity
tssurya Sep 12, 2024
faa0f5f
contrib/kind-common: Patch passt binding to kubevirt CR
RamLavi Aug 27, 2024
7cf7c4e
contrib/kind-common: Add primary-udn NAD
RamLavi Aug 27, 2024
4a028e9
contrib/kind-common: Add primary-udn passt binary
RamLavi Aug 27, 2024
02ce6f2
contrib/kind: separate cert-manager and kubevirt-ipam installations
RamLavi Aug 28, 2024
5b3eacd
contrib/kind: Add kubevirt-ipam opt out flag
RamLavi Aug 29, 2024
4508f15
udn: set persistentIPs for UDN ifaces
maiqueb Aug 22, 2024
813847c
udn: unit test persistent IPs integration
maiqueb Sep 6, 2024
e712f38
kubevirt, e2e: Pin kubevirt to 1.1.0
qinqon Sep 2, 2024
6e1f2d7
kubevirt, e2e: UDN
qinqon Sep 2, 2024
725eb87
gh, actions: activate net-seg for kv-live-migration
qinqon Sep 6, 2024
8fae3ea
persistentips, util: add AllowsPersistentIPs helper
maiqueb Sep 9, 2024
b70ae7f
Merge pull request #2297 from trozet/bump-ovn-udn
openshift-merge-bot[bot] Sep 12, 2024
309c32f
UDN: L3: Use nodesubnet annotations for L3
tssurya Sep 11, 2024
97b4808
UDN: L3: Use clustersubnets for GR routes
tssurya Sep 12, 2024
961b5df
Fix unit tests to be more explicit
tssurya Sep 13, 2024
0a84913
Merge pull request #4596 from npinaeva/observ
trozet Sep 13, 2024
a83b6be
Merge pull request #4718 from tssurya/wrong-udn-lrsr-and-lrps
trozet Sep 13, 2024
369ac90
Fix gateway manager not accounting for UDN join subnets
jcaamano Sep 11, 2024
a4e2a00
Fix duplicated UDN tests
jcaamano Sep 11, 2024
14afcbf
Pin multus to v4.1.0
jcaamano Sep 13, 2024
c960d47
Merge pull request #4722 from jcaamano/udn-gw-fixes
tssurya Sep 13, 2024
1d3c6a3
Update OVN DB Schema; generate libovsdb bindings
tssurya Aug 31, 2024
294c788
Update NAT functions to take match expression as argument
pperiyasamy Jul 3, 2024
8a47ba5
remove deadcode
tssurya Aug 31, 2024
3084154
Add buildUDNEgressSNAT util to BSNC controller
tssurya Aug 31, 2024
5f7ac17
L3: Add PodSubnet SNATs on ovn-cluster-router
tssurya Aug 31, 2024
c4969d9
L2: Add ClusterSubnet SNATs on GR
tssurya Aug 31, 2024
eef8c9d
Add gatewayport to nonIC conditionalSNAT
tssurya Sep 14, 2024
65b12e1
E2E: Enable L3 pod2Egress test on LGW
tssurya Aug 31, 2024
eab7fe7
Fix flaky UT: Reset TestConfig
tssurya Sep 14, 2024
4329d46
Use fedora 41 instead of rawhide
tssurya Sep 16, 2024
4b7b0ae
Merge pull request #4554 from tssurya/udn-l3-add-masquerade-SNAT
trozet Sep 16, 2024
b21b800
Merge pull request #4726 from tssurya/ovn-rpm-fix
tssurya Sep 17, 2024
101a749
fedora: Update Dockerfile to OVN release ovn-24.09.0-33.
numansiddique Sep 17, 2024
d627412
Merge remote-tracking branch 'origin/master' into ds_merge
pliurh Sep 18, 2024
a2d0eb1
Pin multus to 4.1.1
RamLavi Sep 17, 2024
c49c07d
udn, cni: Report UDN iface info on network-status
maiqueb Jul 12, 2024
6f61f39
udn, cni, tests: Refactor existing context
maiqueb Aug 30, 2024
d2e1939
udn, cni, tests: Ensure we report the UDN interface via CNI result
maiqueb Aug 30, 2024
62acd7e
udn, cni, tests: Must specify cluster ip configs
maiqueb Sep 13, 2024
03205d3
udn, cni, e2e: Check UDN iface info on network-status
RamLavi Sep 16, 2024
ea94a5a
Layer2 UDN: Rename gateway switch ports
kyrtapz Sep 3, 2024
7be00b7
LGW: Add pod-route towards mpX in L2 network
tssurya Sep 3, 2024
a350b49
Fix name of switch for L2
tssurya Sep 3, 2024
21db02a
Expose GetNodeIfAddrAnnotation as a public function
tssurya Sep 5, 2024
e535317
Rename generateMatch to generateNodeIPMatch
tssurya Sep 5, 2024
9b3eacb
Rename Add to AddSameNodeIPPolicy
tssurya Sep 5, 2024
a3cc1bd
LGW: L2: Add a new LRP at 1500 for UDN
tssurya Sep 5, 2024
d1e41e8
rename hostIfAddr to mgmtIfAddr
tssurya Sep 7, 2024
bd58b4c
Add LGW unit tests for secondary networks topologies
tssurya Sep 7, 2024
f61fbbf
Make error logs better
tssurya Sep 17, 2024
b0dd59b
L2: syncNodeManagementPort should be called after gwManager
tssurya Sep 18, 2024
12b9838
fix retries for node events in udn
tssurya Sep 18, 2024
a6ae180
Merge pull request #4730 from numansiddique/ovn24.09_release
tssurya Sep 18, 2024
8017e9a
Merge pull request #4694 from tssurya/udn-design-l2-routes-policies
trozet Sep 18, 2024
fc3f48f
Add new ovnkube-observ binary to the image.
npinaeva Sep 13, 2024
950ff7a
Services E2Es: Reset test variables before each test
kyrtapz Sep 19, 2024
6d269b0
Don't configure arp proxy for UDNs
jcaamano Sep 19, 2024
9bf12b8
Add ovnkube-observ to .gitignore
jcaamano Sep 19, 2024
5f0dab7
Add ginkgo.report to .gitignore
jcaamano Sep 19, 2024
d1ebf1c
Make GetActiveNetworkForNamespace use a controller
trozet Aug 28, 2024
1bc6214
Adds UDN check to getActiveNetworkForNamespace
trozet Sep 17, 2024
bc013a8
Fix missing ICMP SNAT for L2 UDNs GR
jcaamano Sep 17, 2024
1b9ae6a
Bump github.com/urfave/cli/v2
kyrtapz Jul 15, 2024
d89b8e9
Do not masquerade service traffic
kyrtapz Jul 24, 2024
354fa00
Enable access to default network services from user-defined networks
kyrtapz Sep 4, 2024
cbff31f
Use correct pod subnets for Layer2 networks
kyrtapz Sep 18, 2024
86cdf53
Conditional SNAT for Layer2 networks
kyrtapz Sep 2, 2024
3683bf4
L2 services support
kyrtapz Aug 22, 2024
36c9b1b
Unskip UDN enabled service test for L2
kyrtapz Sep 18, 2024
69d70ca
Refactor services_controller_test.go
kyrtapz Aug 27, 2024
760d9e2
Add layer2 UDN tests to services_controller_test.go
kyrtapz Aug 27, 2024
4b9c42b
Add egress gateway e2e test option to delete gateway pod instead of
npinaeva Sep 20, 2024
839842b
Cleanup gateway pod for remote zone.
npinaeva Sep 20, 2024
0f16d95
Merge pull request #4567 from kyrtapz/udn_to_default_svc_base4554
trozet Sep 20, 2024
312a5cb
Merge pull request #4735 from jcaamano/arp-proxy-fix
trozet Sep 20, 2024
9a25bc3
Merge pull request #4653 from kyrtapz/l2_pod_svc
trozet Sep 20, 2024
0349977
Verify udn-allowed-default-services config field
kyrtapz Sep 20, 2024
d63887e
node: udn: Ensure UDN traffic doesn't leak into default network servi…
dceara Sep 6, 2024
1c8b933
Merge pull request #4705 from dceara/udn-pod2service-isolation
trozet Sep 20, 2024
7eb8114
VRF manager: reduce log chat for link updates
martinkennelly Sep 30, 2024
de0757f
Add support for nodes managing their own networks
crnithya Jul 30, 2024
8d544d9
Helm chart fixes for DPUs
crnithya Jul 31, 2024
a627562
Capture dpu->dpu_host relation during ovnkube-node-dpu bringup
crnithya Jul 31, 2024
218c1f1
[upstream] not to update ovs openflow in dpu-host mode
cathy-zhou Feb 26, 2024
ab58b7b
[upstream] dpu bridge mac should not be used in openflow rules
cathy-zhou Mar 5, 2024
1a3854f
service traffic route through Masquerade node IP on dpu host node
cathy-zhou Mar 5, 2024
47056a6
Add gateway options in DPU mode
crnithya Sep 3, 2024
d272c27
Fix node certificate handling for DPUs
crnithya Sep 3, 2024
8c79e29
Disable nodeIPManager on dpu nodes
crnithya Sep 3, 2024
a65242d
requested-chassis should not be set for dpu-host nodes
crnithya Sep 3, 2024
7d4bb98
Update readinessprobe for DPUs
crnithya Sep 3, 2024
c9eeafe
Merge pull request #4744 from npinaeva/egressgw-deletepod-
trozet Oct 4, 2024
e4f360c
interconenct: Ask ovn-northd to bind the remote ports.
numansiddique Oct 4, 2024
d8e4469
Merge pull request #4757 from numansiddique/remote_port_binding
trozet Oct 7, 2024
26079c2
Fix sudo perms
tssurya Sep 11, 2024
005a822
Add UDN pod annotation to open default network ports.
npinaeva Sep 10, 2024
fd9a0a1
Support NetPol for user defined networks
pperiyasamy Sep 2, 2024
f4e83f5
Skip handling NetPol events on non primary networks
pperiyasamy Oct 1, 2024
e816f58
Merge pull request #2302 from pliurh/ds_merge
openshift-merge-bot[bot] Oct 8, 2024
7cbca4f
Merge pull request #4696 from npinaeva/udn-open-ports
trozet Oct 8, 2024
69781a1
Merge remote-tracking branch 'origin/master' into merge-10-8-24
trozet Oct 8, 2024
956f8fa
Merge pull request #4713 from tssurya/unit-test-sudo-req
tssurya Oct 8, 2024
2edeedc
Fix panic in UT
tssurya Oct 9, 2024
2d3ea23
Merge pull request #4767 from tssurya/fix-panic
tssurya Oct 9, 2024
e183df5
UDN: Skip adding managementport to clusterPortGrp
tssurya Sep 19, 2024
f29d848
Fix UTs for UDNs: don't set exclude_ips
tssurya Oct 9, 2024
6c0733d
Merge pull request #4738 from tssurya/udn-fix-noise
tssurya Oct 10, 2024
7432f67
Merge pull request #4752 from martinkennelly/reduce-vrf-ll
trozet Oct 10, 2024
689e95a
Merge pull request #4745 from kyrtapz/udn_allowed_arg_verify
trozet Oct 11, 2024
93dbdf4
kind: Allow to install custom kubevirt versions
oshoval Sep 10, 2024
4b58ba5
kubevirt, dhcp: Add fqdn and router/dns/mtu opts
qinqon Sep 26, 2024
99607f1
dhcp, kubevirt, l2: Integrate with primary udn
qinqon Sep 26, 2024
828be8d
udpn, l2: Configure lrp dhcpv6_stateful
qinqon Sep 27, 2024
a92c1fc
udpn, l2, gw: Configure ipv6 ra mtu
qinqon Oct 3, 2024
62bef1d
udp, l2, gw: Configure RA priodicity
qinqon Oct 3, 2024
e55d89b
udpn, l2, gw: Configure LOW router preference
qinqon Oct 8, 2024
435adaf
udpn, e2e: Adapt to multiple default gws
qinqon Oct 3, 2024
fd33c42
kubevirt, e2e: Add DHCP/ND test case for UDPN
qinqon Oct 1, 2024
6f0312d
doc, multihoming: Add virt ip dynamic condig
qinqon Oct 8, 2024
715d525
Merge pull request #4750 from qinqon/secondary-udn-dhcp-ra-support
tssurya Oct 16, 2024
c73e0db
node_annotations: Make GetNodeHostAddrs() return stable results.
dceara Oct 17, 2024
508f043
parseNodeGatewayRouterJoinNetwork: Avoid unneeded warnings.
npinaeva Aug 16, 2024
4ead774
UDN controller: allow other subsystems reporting conditions.
npinaeva Aug 22, 2024
db6ca99
Move existing UDN tests using the same UDN config under its own context.
npinaeva Aug 22, 2024
8dc0ca0
Add e2e for a new subsystem error report mechanism.
npinaeva Aug 22, 2024
1e4d8ea
controller: make stop idempotent.
npinaeva Oct 18, 2024
cc3c784
update ginkgo to v2
JacobTanenbaum Sep 25, 2024
c004001
fix deprecated call to -ginkgo.reportFile
JacobTanenbaum Sep 25, 2024
2924095
Add e2e vendor directory to gitignore
jcaamano Oct 9, 2024
1cb09d4
Bump to k8s 1.31
jcaamano Aug 21, 2024
de390b1
Disable kube manager service-lb-controller for kind
jcaamano Oct 15, 2024
52a8537
Merge pull request #4781 from dceara/stable-host-address-annotation-p…
tssurya Oct 21, 2024
30585c1
Invert CNI result order for UDN
trozet Oct 10, 2024
a97d896
Pin multus to 4.1.3
tssurya Oct 21, 2024
75d2e6d
Merge pull request #4770 from trozet/swap_cni_order
tssurya Oct 21, 2024
c6a0243
Merge remote-tracking branch 'origin/master' into merge-10-8-24
trozet Oct 21, 2024
fdcbde9
Merge pull request #2314 from trozet/merge-10-8-24
openshift-merge-bot[bot] Oct 31, 2024
ef89a31
Merge branch 'master' into merge-5sept-417
jluhrsen Oct 31, 2024
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
The table of contents is too big for display.
Diff view
Diff view
  •  
  •  
  •  
19 changes: 15 additions & 4 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -17,7 +17,7 @@ concurrency:

env:
GO_VERSION: 1.22.0
K8S_VERSION: v1.30.2
K8S_VERSION: v1.31.0
KIND_CLUSTER_NAME: ovn
KIND_INSTALL_INGRESS: true
KIND_ALLOW_SYSTEM_WRITES: true
Expand Down Expand Up @@ -433,8 +433,8 @@ jobs:
- {"target": "kv-live-migration", "ha": "noHA", "gateway-mode": "local", "ipfamily": "ipv4", "disable-snat-multiple-gws": "SnatGW", "second-bridge": "1br", "ic": "ic-disabled", "num-workers": "3"}
- {"target": "kv-live-migration", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "dualstack", "disable-snat-multiple-gws": "SnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones", "num-workers": "3"}
- {"target": "control-plane", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "ipv4", "disable-snat-multiple-gws": "SnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones", "forwarding": "disable-forwarding"}
- {"target": "network-segmentation", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "dualstack", "disable-snat-multiple-gws": "SnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones"}
- {"target": "network-segmentation", "ha": "noHA", "gateway-mode": "local", "ipfamily": "dualstack", "disable-snat-multiple-gws": "SnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones"}
- {"target": "network-segmentation", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "dualstack", "disable-snat-multiple-gws": "noSnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones"}
- {"target": "network-segmentation", "ha": "noHA", "gateway-mode": "local", "ipfamily": "dualstack", "disable-snat-multiple-gws": "noSnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones"}
- {"target": "network-segmentation", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "dualstack", "disable-snat-multiple-gws": "SnatGW", "second-bridge": "1br", "ic": "ic-disabled"}
- {"target": "tools", "ha": "noHA", "gateway-mode": "local", "ipfamily": "dualstack", "disable-snat-multiple-gws": "SnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones"}
needs: [ build-pr ]
Expand All @@ -451,7 +451,7 @@ jobs:
KIND_IPV4_SUPPORT: "${{ matrix.ipfamily == 'IPv4' || matrix.ipfamily == 'dualstack' }}"
KIND_IPV6_SUPPORT: "${{ matrix.ipfamily == 'IPv6' || matrix.ipfamily == 'dualstack' }}"
ENABLE_MULTI_NET: "${{ matrix.target == 'multi-homing' || matrix.target == 'kv-live-migration' || matrix.target == 'network-segmentation' || matrix.target == 'tools' || matrix.target == 'multi-homing-helm' }}"
ENABLE_NETWORK_SEGMENTATION: "${{ matrix.target == 'network-segmentation' || matrix.target == 'tools'}}"
ENABLE_NETWORK_SEGMENTATION: "${{ matrix.target == 'network-segmentation' || matrix.target == 'tools' || matrix.target == 'kv-live-migration'}}"
KIND_INSTALL_KUBEVIRT: "${{ matrix.target == 'kv-live-migration' }}"
OVN_COMPACT_MODE: "${{ matrix.target == 'compact-mode' }}"
OVN_DUMMY_GATEWAY_BRIDGE: "${{ matrix.target == 'compact-mode' }}"
Expand Down Expand Up @@ -617,6 +617,17 @@ jobs:
echo "GOPATH=$GOPATH" >> $GITHUB_ENV
echo "$GOPATH/bin" >> $GITHUB_PATH

- name: Free up disk space
run: |
sudo rm -rf /usr/local/lib/android/sdk
sudo apt-get update
sudo eatmydata apt-get purge --auto-remove -y \
azure-cli aspnetcore-* dotnet-* ghc-* firefox \
google-chrome-stable \
llvm-* microsoft-edge-stable mono-* \
msbuild mysql-server-core-* php-* php7* \
powershell temurin-* zulu-*

- name: Disable ufw
# For IPv6 and Dualstack, ufw (Uncomplicated Firewall) should be disabled.
# Not needed for KIND deployments, so just disable all the time.
Expand Down
2 changes: 2 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -5,3 +5,5 @@
contrib/bin

ovn-kubernetes-anp-test-report.yaml

**/ginkgo.report
1 change: 1 addition & 0 deletions Dockerfile
Original file line number Diff line number Diff line change
Expand Up @@ -57,6 +57,7 @@ COPY --from=builder /go/src/github.com/openshift/ovn-kubernetes/go-controller/_o
COPY --from=builder /go/src/github.com/openshift/ovn-kubernetes/go-controller/_output/go/bin/ovndbchecker /usr/bin/
COPY --from=builder /go/src/github.com/openshift/ovn-kubernetes/go-controller/_output/go/bin/ovnkube-trace /usr/bin/
COPY --from=builder /go/src/github.com/openshift/ovn-kubernetes/go-controller/_output/go/bin/hybrid-overlay-node /usr/bin/
COPY --from=builder /go/src/github.com/openshift/ovn-kubernetes/go-controller/_output/go/bin/ovnkube-observ /usr/bin/

# Copy RHEL-8 and RHEL-9 shim binaries where the CNO's ovnkube-node container startup script can find them
RUN mkdir -p /usr/libexec/cni/rhel9
Expand Down
6 changes: 3 additions & 3 deletions Dockerfile.base
Original file line number Diff line number Diff line change
Expand Up @@ -12,10 +12,10 @@ RUN dnf install -y --nodocs \
selinux-policy procps-ng && \
dnf clean all

ARG ovsver=3.3.0-2.el9fdp
ARG ovnver=24.03.2-19.el9fdp
ARG ovsver=3.4.0-1.el9fdp
ARG ovnver=24.09.0-beta.31.el9fdp
# NOTE: Ensure that the versions of OVS and OVN are overriden for OKD in each of the subsequent layers.
ARG ovsver_okd=3.3.0-2.el9s
ARG ovsver_okd=3.4.0-0.8.el9s
ARG ovnver_okd=24.03.1-5.el9s

RUN INSTALL_PKGS="iptables nftables" && \
Expand Down
93 changes: 83 additions & 10 deletions contrib/kind-common
Original file line number Diff line number Diff line change
Expand Up @@ -122,12 +122,13 @@ install_ingress() {

METALLB_DIR="/tmp/metallb"
install_metallb() {
local metallb_version=v0.14.8
mkdir -p /tmp/metallb
local builddir
builddir=$(mktemp -d "${METALLB_DIR}/XXXXXX")

pushd "${builddir}"
git clone https://github.com/metallb/metallb.git
git clone https://github.com/metallb/metallb.git -b $metallb_version
cd metallb
# Use global IP next hops in IPv6
if [ "$KIND_IPV6_SUPPORT" == true ]; then
Expand Down Expand Up @@ -320,7 +321,13 @@ is_nested_virt_enabled() {
}

install_kubevirt() {
local kubevirt_version="$(curl -L https://storage.googleapis.com/kubevirt-prow/release/kubevirt/kubevirt/stable.txt)"
# possible values:
# stable - install newest stable (default)
# vX.Y.Z - install specific stable (i.e v1.3.1)
# nightly - install newest nightly
# nightly tag - install specific nightly (i.e 20240910)
KUBEVIRT_VERSION=${KUBEVIRT_VERSION:-"stable"}

for node in $(kubectl get node --no-headers -o custom-columns=":metadata.name"); do
$OCI_BIN exec -t $node bash -c "echo 'fs.inotify.max_user_watches=1048576' >> /etc/sysctl.conf"
$OCI_BIN exec -t $node bash -c "echo 'fs.inotify.max_user_instances=512' >> /etc/sysctl.conf"
Expand All @@ -329,10 +336,10 @@ install_kubevirt() {
kubectl label nodes $node node-role.kubernetes.io/worker="" --overwrite=true
fi
done
local kubevirt_release_url="https://github.com/kubevirt/kubevirt/releases/download/${kubevirt_version}"

echo "Deploy latest nighly build Kubevirt"
if [ "$(kubectl get kubevirts -n kubevirt kubevirt -ojsonpath='{.status.phase}')" != "Deployed" ]; then
local kubevirt_release_url=$(get_kubevirt_release_url "$KUBEVIRT_VERSION")
echo "Deploying Kubevirt from $kubevirt_release_url"
kubectl apply -f "${kubevirt_release_url}/kubevirt-operator.yaml"
kubectl apply -f "${kubevirt_release_url}/kubevirt-cr.yaml"
if ! is_nested_virt_enabled; then
Expand All @@ -348,6 +355,12 @@ install_kubevirt() {
kubectl logs --all-containers=true -n kubevirt $p || true
done
fi

kubectl -n kubevirt patch kubevirt kubevirt --type=json --patch '[{"op":"add","path":"/spec/configuration/developerConfiguration","value":{"featureGates":[]}},{"op":"add","path":"/spec/configuration/developerConfiguration/featureGates/-","value":"NetworkBindingPlugins"}]'

local kubevirt_stable_release_url=$(get_kubevirt_release_url "stable")
local passt_binding_image="quay.io/kubevirt/network-passt-binding:${kubevirt_stable_release_url##*/}"
kubectl -n kubevirt patch kubevirt kubevirt --type=json --patch '[{"op":"add","path":"/spec/configuration/network","value":{}},{"op":"add","path":"/spec/configuration/network/binding","value":{"passt":{"computeResourceOverhead":{"requests":{"memory":"500Mi"}},"migration":{"method":"link-refresh"},"networkAttachmentDefinition":"default/primary-udn-kubevirt-binding","sidecarImage":"'"${passt_binding_image}"'"}}}]'

if [ ! -d "./bin" ]
then
Expand All @@ -363,8 +376,9 @@ install_kubevirt() {

pushd ./bin
if [ ! -f ./virtctl ]; then
cli_name="virtctl-${kubevirt_version}-${OS_TYPE}-${ARCH}"
curl -LO "${kubevirt_release_url}/${cli_name}"
kubevirt_stable_release_url=$(get_kubevirt_release_url "stable")
cli_name="virtctl-${kubevirt_stable_release_url##*/}-${OS_TYPE}-${ARCH}"
curl -LO "${kubevirt_stable_release_url}/${cli_name}"
mv ${cli_name} virtctl
if_error_exit "Failed to download virtctl!"
fi
Expand All @@ -373,22 +387,26 @@ install_kubevirt() {
chmod +x ./bin/virtctl
}

install_kubevirt_ipam_controller() {
install_cert_manager() {
local cert_manager_version="v1.14.4"
echo "Installing cert-manager ..."
manifest="https://github.com/cert-manager/cert-manager/releases/download/${cert_manager_version}/cert-manager.yaml"
run_kubectl apply -f "$manifest"
}

install_kubevirt_ipam_controller() {
echo "Installing KubeVirt IPAM controller manager ..."
manifest="https://raw.githubusercontent.com/kubevirt/ipam-extensions/main/dist/install.yaml"
run_kubectl apply -f "$manifest"
kubectl wait -n kubevirt-ipam-controller-system deployment kubevirt-ipam-controller-manager --for condition=Available --timeout 2m
}

install_multus() {
echo "Installing multus-cni daemonset ..."
multus_manifest="https://raw.githubusercontent.com/k8snetworkplumbingwg/multus-cni/master/deployments/multus-daemonset.yml"
run_kubectl apply -f "$multus_manifest"
local version="v4.1.3"
echo "Installing multus-cni $version daemonset ..."
wget -qO- "https://raw.githubusercontent.com/k8snetworkplumbingwg/multus-cni/${version}/deployments/multus-daemonset.yml" |\
sed -e "s|multus-cni:snapshot|multus-cni:${version}|g" |\
run_kubectl apply -f -
}

install_mpolicy_crd() {
Expand Down Expand Up @@ -576,3 +594,58 @@ kubectl_wait_dnsnameresolver_pods() {
echo "Waiting for pods in dnsnameresolver-operator namespace to become ready (timeout ${timeout})..."
kubectl wait -n dnsnameresolver-operator --for=condition=ready pods --all --timeout=${timeout}s
}

deploy_kubevirt_binding() {
cat <<EOF | run_kubectl apply -f -
---
apiVersion: "k8s.cni.cncf.io/v1"
kind: NetworkAttachmentDefinition
metadata:
name: primary-udn-kubevirt-binding
namespace: default
spec:
config: '{
"cniVersion": "1.0.0",
"name": "primary-udn-kubevirt-binding",
"plugins": [
{
"type": "network-passt-binding"
}
]
}'
EOF
}

deploy_passt_binary() {
echo "Installing passt-binding-cni-ds ..."
local manifest="https://raw.githubusercontent.com/kubevirt/ipam-extensions/main/passt/passt-binding-cni-ds.yaml"
run_kubectl apply -f "$manifest"

run_kubectl rollout status -n kube-system daemonset/passt-binding-cni --timeout 2m
}

get_kubevirt_release_url() {
local VERSION="$1"

local kubevirt_version
local kubevirt_release_url

if [[ "$VERSION" == "stable" ]]; then
kubevirt_version=$(curl -sL https://storage.googleapis.com/kubevirt-prow/release/kubevirt/kubevirt/stable.txt)
kubevirt_release_url="https://github.com/kubevirt/kubevirt/releases/download/${kubevirt_version}"
elif [[ "$VERSION" == v* ]]; then
kubevirt_version="$VERSION"
kubevirt_release_url="https://github.com/kubevirt/kubevirt/releases/download/${kubevirt_version}"
elif [[ "$VERSION" == "nightly" ]]; then
kubevirt_version=$(curl -sL https://storage.googleapis.com/kubevirt-prow/devel/nightly/release/kubevirt/kubevirt/latest)
kubevirt_release_url="https://storage.googleapis.com/kubevirt-prow/devel/nightly/release/kubevirt/kubevirt/${kubevirt_version}"
elif [[ "$VERSION" =~ ^[0-9]{8}$ ]]; then
kubevirt_version="$VERSION"
kubevirt_release_url="https://storage.googleapis.com/kubevirt-prow/devel/nightly/release/kubevirt/kubevirt/${kubevirt_version}"
else
echo "Unsupported KUBEVIRT_VERSION value $VERSION (use either stable, vX.Y.Z, nightly or nightly tag)"
exit 1
fi

echo "$kubevirt_release_url"
}
8 changes: 7 additions & 1 deletion contrib/kind-helm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -21,6 +21,7 @@ set_default_params() {
export OVN_HA=${OVN_HA:-false}
export OVN_MULTICAST_ENABLE=${OVN_MULTICAST_ENABLE:-false}
export OVN_HYBRID_OVERLAY_ENABLE=${OVN_HYBRID_OVERLAY_ENABLE:-false}
export OVN_OBSERV_ENABLE=${OVN_OBSERV_ENABLE:-false}
export OVN_EMPTY_LB_EVENTS=${OVN_EMPTY_LB_EVENTS:-false}
export KIND_REMOVE_TAINT=${KIND_REMOVE_TAINT:-true}
export ENABLE_MULTI_NET=${ENABLE_MULTI_NET:-false}
Expand Down Expand Up @@ -106,6 +107,7 @@ usage() {
echo " DEFAULT: Remove taint components"
echo "-me | --multicast-enabled Enable multicast. DEFAULT: Disabled"
echo "-ho | --hybrid-enabled Enable hybrid overlay. DEFAULT: Disabled"
echo "-obs | --observability Enable observability. DEFAULT: Disabled"
echo "-el | --ovn-empty-lb-events Enable empty-lb-events generation for LB without backends. DEFAULT: Disabled"
echo "-ii | --install-ingress Flag to install Ingress Components."
echo " DEFAULT: Don't install ingress components."
Expand Down Expand Up @@ -143,6 +145,8 @@ parse_args() {
;;
-ho | --hybrid-enabled ) OVN_HYBRID_OVERLAY_ENABLE=true
;;
-obs | --observability ) OVN_OBSERV_ENABLE=true
;;
-el | --ovn-empty-lb-events ) OVN_EMPTY_LB_EVENTS=true
;;
-ii | --install-ingress ) KIND_INSTALL_INGRESS=true
Expand Down Expand Up @@ -202,6 +206,7 @@ print_params() {
echo "OVN_HA = $OVN_HA"
echo "OVN_MULTICAST_ENABLE = $OVN_MULTICAST_ENABLE"
echo "OVN_HYBRID_OVERLAY_ENABLE = $OVN_HYBRID_OVERLAY_ENABLE"
echo "OVN_OBSERV_ENABLE = $OVN_OBSERV_ENABLE"
echo "OVN_EMPTY_LB_EVENTS = $OVN_EMPTY_LB_EVENTS"
echo "KIND_CLUSTER_NAME = $KIND_CLUSTER_NAME"
echo "KIND_REMOVE_TAINT = $KIND_REMOVE_TAINT"
Expand Down Expand Up @@ -398,7 +403,8 @@ create_ovn_kubernetes() {
--set global.enableMulticast=$(if [ "${OVN_MULTICAST_ENABLE}" == "true" ]; then echo "true"; else echo "false"; fi) \
--set global.enableMultiNetwork=$(if [ "${ENABLE_MULTI_NET}" == "true" ]; then echo "true"; else echo "false"; fi) \
--set global.enableHybridOverlay=$(if [ "${OVN_HYBRID_OVERLAY_ENABLE}" == "true" ]; then echo "true"; else echo "false"; fi) \
--set global.emptyLbEvents=$(if [ "${OVN_EMPTY_LB_EVENTS}" == "true" ]; then echo "true"; else echo "false"; fi) \
--set global.enableObservability=$(if [ "${OVN_OBSERV_ENABLE}" == "true" ]; then echo "true"; else echo "false"; fi) \
--set global.emptyLbEvents=$(if [ "${OVN_EMPTY_LB_EVENTS}" == "true" ]; then echo "true"; else echo "false"; fi) \
--set global.enableDNSNameResolver=$(if [ "${OVN_ENABLE_DNSNAMERESOLVER}" == "true" ]; then echo "true"; else echo "false"; fi) \
${ovnkube_db_options}
}
Expand Down
27 changes: 23 additions & 4 deletions contrib/kind.sh
Original file line number Diff line number Diff line change
Expand Up @@ -79,6 +79,7 @@ usage() {
echo " [-ic | --enable-interconnect]"
echo " [--isolated]"
echo " [-dns | --enable-dnsnameresolver]"
echo " [-obs | --observability]"
echo " [-h]]"
echo ""
echo "-cf | --config-file Name of the KIND J2 configuration file."
Expand Down Expand Up @@ -141,6 +142,7 @@ usage() {
echo "--deploy Deploy ovn kubernetes without restarting kind"
echo "--add-nodes Adds nodes to an existing cluster. The number of nodes to be added is specified by --num-workers. Also use -ic if the cluster is using interconnect."
echo "-dns | --enable-dnsnameresolver Enable DNSNameResolver for resolving the DNS names used in the DNS rules of EgressFirewall."
echo "-obs | --observability Enable OVN Observability feature."
echo ""
}

Expand All @@ -163,6 +165,8 @@ parse_args() {
;;
-ikv | --install-kubevirt) KIND_INSTALL_KUBEVIRT=true
;;
-nokvipam | --opt-out-kv-ipam) KIND_OPT_OUT_KUBEVIRT_IPAM=true
;;
-ha | --ha-enabled ) OVN_HA=true
;;
-me | --multicast-enabled) OVN_MULTICAST_ENABLE=true
Expand Down Expand Up @@ -199,6 +203,8 @@ parse_args() {
-ifa | --ipfix-cache-active-timeout ) shift
OVN_IPFIX_CACHE_ACTIVE_TIMEOUT=$1
;;
-obs | --observability ) OVN_OBSERV_ENABLE=true
;;
-el | --ovn-empty-lb-events ) OVN_EMPTY_LB_EVENTS=true
;;
-kt | --keep-taint ) KIND_REMOVE_TAINT=false
Expand Down Expand Up @@ -334,7 +340,8 @@ parse_args() {
-h | --help ) usage
exit
;;
* ) usage
* ) echo "Invalid option: $1"
usage
exit 1
esac
shift
Expand All @@ -350,6 +357,7 @@ print_params() {
echo "KIND_INSTALL_METALLB = $KIND_INSTALL_METALLB"
echo "KIND_INSTALL_PLUGINS = $KIND_INSTALL_PLUGINS"
echo "KIND_INSTALL_KUBEVIRT = $KIND_INSTALL_KUBEVIRT"
echo "KIND_OPT_OUT_KUBEVIRT_IPAM = $KIND_OPT_OUT_KUBEVIRT_IPAM"
echo "OVN_HA = $OVN_HA"
echo "RUN_IN_CONTAINER = $RUN_IN_CONTAINER"
echo "KIND_CLUSTER_NAME = $KIND_CLUSTER_NAME"
Expand Down Expand Up @@ -377,6 +385,7 @@ print_params() {
echo "OVN_IPFIX_SAMPLING = $OVN_IPFIX_SAMPLING"
echo "OVN_IPFIX_CACHE_MAX_FLOWS = $OVN_IPFIX_CACHE_MAX_FLOWS"
echo "OVN_IPFIX_CACHE_ACTIVE_TIMEOUT = $OVN_IPFIX_CACHE_ACTIVE_TIMEOUT"
echo "OVN_OBSERV_ENABLE = $OVN_OBSERV_ENABLE"
echo "OVN_EMPTY_LB_EVENTS = $OVN_EMPTY_LB_EVENTS"
echo "OVN_MULTICAST_ENABLE = $OVN_MULTICAST_ENABLE"
echo "OVN_IMAGE = $OVN_IMAGE"
Expand Down Expand Up @@ -497,12 +506,13 @@ set_default_params() {
fi
RUN_IN_CONTAINER=${RUN_IN_CONTAINER:-false}
KIND_IMAGE=${KIND_IMAGE:-kindest/node}
K8S_VERSION=${K8S_VERSION:-v1.30.2}
K8S_VERSION=${K8S_VERSION:-v1.31.1}
OVN_GATEWAY_MODE=${OVN_GATEWAY_MODE:-shared}
KIND_INSTALL_INGRESS=${KIND_INSTALL_INGRESS:-false}
KIND_INSTALL_METALLB=${KIND_INSTALL_METALLB:-false}
KIND_INSTALL_PLUGINS=${KIND_INSTALL_PLUGINS:-false}
KIND_INSTALL_KUBEVIRT=${KIND_INSTALL_KUBEVIRT:-false}
KIND_OPT_OUT_KUBEVIRT_IPAM=${KIND_OPT_OUT_KUBEVIRT_IPAM:-false}
OVN_HA=${OVN_HA:-false}
KIND_LOCAL_REGISTRY=${KIND_LOCAL_REGISTRY:-false}
KIND_LOCAL_REGISTRY_NAME=${KIND_LOCAL_REGISTRY_NAME:-kind-registry}
Expand Down Expand Up @@ -604,6 +614,7 @@ set_default_params() {
fi
OVN_MTU=${OVN_MTU:-1400}
OVN_ENABLE_DNSNAMERESOLVER=${OVN_ENABLE_DNSNAMERESOLVER:-false}
OVN_OBSERV_ENABLE=${OVN_OBSERV_ENABLE:-false}
}

check_ipv6() {
Expand Down Expand Up @@ -851,7 +862,9 @@ create_ovn_kube_manifests() {
--enable-ovnkube-identity="${OVN_ENABLE_OVNKUBE_IDENTITY}" \
--enable-persistent-ips=true \
--mtu="${OVN_MTU}" \
--enable-dnsnameresolver="${OVN_ENABLE_DNSNAMERESOLVER}"
--enable-dnsnameresolver="${OVN_ENABLE_DNSNAMERESOLVER}" \
--mtu="${OVN_MTU}" \
--enable-observ="${OVN_OBSERV_ENABLE}"
popd
}

Expand Down Expand Up @@ -1163,5 +1176,11 @@ if [ "$KIND_INSTALL_PLUGINS" == true ]; then
fi
if [ "$KIND_INSTALL_KUBEVIRT" == true ]; then
install_kubevirt
install_kubevirt_ipam_controller
deploy_kubevirt_binding
deploy_passt_binary

install_cert_manager
if [ "$KIND_OPT_OUT_KUBEVIRT_IPAM" != true ]; then
install_kubevirt_ipam_controller
fi
fi
Loading