Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
126 commits
Select commit Hold shift + click to select a range
1688916
Add Nadia Pinaeva to maintainer's list
tssurya Apr 22, 2025
b07f226
NetworkQoS CRD
flavio-fernandes Jul 8, 2024
8e5ad2b
update-codegen.sh: be aware of crd version
flavio-fernandes Mar 19, 2025
964c66e
generated crd from update-codegen.sh
flavio-fernandes Mar 19, 2025
15058e5
Add flag to enable the feature
flavio-fernandes Jul 13, 2024
11c7f0d
Add factory, handlers, clients for Network QoS
flavio-fernandes Jul 16, 2024
1efaf29
Implement NetworkQoS controller
flavio-fernandes Jul 8, 2024
98d4ceb
add e2e tests for networkqos
Sep 20, 2024
606206f
gh, actions: Set OVN_NETWORK_QOS_ENABLE in control-plane jobs
flavio-fernandes Sep 30, 2024
9770cb1
address review comments.
Mar 1, 2025
c561de8
Update networkqos okep to reflect latest changes from code review
flavio-fernandes Apr 11, 2025
a373249
networkqos: use NetworkSelector to match net-attach-defs (#8)
jxiaobin Mar 11, 2025
4f2f5a1
fix lint
flavio-fernandes Mar 12, 2025
7ec0249
NetworkQoS: support multiple ports in one classifier
Mar 20, 2025
ef217b1
update crd from update-codegen.sh
flavio-fernandes Apr 11, 2025
f8bf30b
Adds e2e tests for triggering icmp needs frag
trozet Mar 22, 2025
b23bcb0
Add PMTUD blocking NFT and OF rules for remote nodes
trozet Mar 25, 2025
bc261a1
Fixes a nodePort service targeting a pod with hostNetwork e2e
trozet Apr 10, 2025
9577e9f
Set gateway_mtu on rtos-<node> router ports
trozet Apr 12, 2025
4fb27fe
Dockerfile: Unpin OVS and consume the latest from FDP.
igsilya Apr 29, 2025
0851d4c
detect VF accelerated gateway interface without explicit configuration
cathy-zhou Mar 13, 2025
7f34252
refactor networkqos handlers
Apr 24, 2025
4dcedbe
ovs client shouldn't be initialized on DPU Hosts
crnithya Apr 25, 2025
739798b
Merge pull request #5153 from trozet/enforce_mtu_from_pod
trozet Apr 30, 2025
21fd64a
revert to use string key for networkqos
Apr 30, 2025
de53833
address review comments on networkqos
May 1, 2025
76bf584
Merge pull request #4508 from flavio-fernandes/networkqos-design
trozet May 2, 2025
d1bbbab
OVN IC mode should handle user set encapIPs
crnithya Feb 16, 2025
98a016a
Update IC tests for encap records insertion and deletion
crnithya Mar 8, 2025
fbe5bea
Add createorupdatechassis tests
crnithya Mar 8, 2025
971d8c9
Enable insertion of encap records to existing chassis
crnithya Mar 18, 2025
508747e
Remove redundant nodeprimaryaddrchanged check
crnithya Mar 24, 2025
0768e7b
Merge pull request #5103 from crnithya/ic_encap_fix
girishmg May 2, 2025
39e94d8
Merge pull request #5114 from cathy-zhou/vf-gateway-fix
girishmg May 2, 2025
a13d977
gateway_mtu should be set on router ports only if node supports it
crnithya May 3, 2025
b9e7714
Merge pull request #2525 from igsilya/ovs-unpin-4.19
openshift-merge-bot[bot] May 6, 2025
fa233dc
Merge pull request #5194 from tssurya/add-npinaeva-as-maintainer
trozet May 6, 2025
8777b58
Merge pull request #5227 from crnithya/pmtud_offload
girishmg May 6, 2025
b462d2c
docs,okeps: Network QoS
flavio-fernandes May 6, 2025
d5aa5d5
Pass gateway mode parameter to ovn-cluster-manager in ovnkube.sh
pliurh Apr 28, 2025
b0f6d9f
Skip L2 UDN route advertisements tests for LGW mode
pliurh Apr 30, 2025
78a94d4
Refactor routemanager
jcaamano Apr 15, 2025
be04ea6
Merge pull request #5209 from pliurh/ci
tssurya May 7, 2025
ebb7339
Revert "Add flow for host -> localnet on same node"
tssurya May 6, 2025
936e621
Revert "e2e: connect to host-networked pod from localnet"
tssurya May 6, 2025
7a95598
Merge pull request #5229 from tssurya/revert-localnet-changes
tssurya May 7, 2025
5836676
Merge remote-tracking branch 'ovn-org/master' into ds-merge-7th-may-2025
tssurya May 7, 2025
3f2623d
Merge pull request #5230 from flavio-fernandes/docs-networkqos-design
tssurya May 7, 2025
7e7afd0
Show warning message when a RouteAdvertisements advertise EIP for L2 …
pliurh Apr 28, 2025
4789689
Merge pull request #2550 from tssurya/ds-merge-7th-may-2025
openshift-merge-bot[bot] May 8, 2025
1df91ec
Fix LB service e2e test
jcaamano May 9, 2025
a1e4cba
Revert "OCPBUGS-44285, OCPBUGS-37733, OCPBUGS-55824, OCPBUGS-54375: D…
neisw May 10, 2025
f9ab1db
Merge pull request #2557 from neisw/revert-2550-ds-merge-7th-may-2025
openshift-merge-bot[bot] May 11, 2025
456f6dc
Revert "OCPBUGS-55824: Revert "OCPBUGS-44285, OCPBUGS-37733, OCPBUGS-…
tssurya May 12, 2025
3ef29b9
Update node-encap-ips annotation when primary ip changes
crnithya May 7, 2025
39fafe7
kv, gh: Activate RA for github action
qinqon Mar 26, 2025
ebd963e
kv, e2e: Replace NAD with CUDN
qinqon Mar 24, 2025
a076d06
kv, e2e: Create RAs if needed
qinqon Mar 24, 2025
3b3ef0b
kv, e2e: Use fedora39 with test tooling for UDN
qinqon Apr 22, 2025
b5575e9
kv, e2e: Add bgp test
qinqon Mar 25, 2025
a32919d
Upstream UDN Enhancement
trozet Apr 22, 2025
46390cf
formatting fix
May 14, 2025
092688c
shut down nqosNodeQueue when nqos controller stops
May 14, 2025
b8b517e
kv, e2e: Add egress iperf3 traffic for routed ingress
qinqon May 5, 2025
6d27d4e
Merge pull request #5143 from qinqon/kv_e2e_bgp_l2_udn
tssurya May 14, 2025
92df3fa
Merge pull request #5249 from jxiaobin/nqos-bugfix
trozet May 14, 2025
4dd6d0e
Merge pull request #5248 from anuragthehatter/doc_fix
trozet May 14, 2025
a3d0a2b
Merge pull request #5198 from trozet/udn_enhancement
tssurya May 14, 2025
9cb7eba
Merge pull request #2568 from tssurya/revert-2557-revert-2550-ds-merg…
openshift-merge-bot[bot] May 15, 2025
7c75bae
[db sync] remove db sync from the older version.
npinaeva Apr 24, 2025
f8495ec
Dockerfile.fedora: Bump OVN to ovn-24.09.2-71.fc41
kyrtapz May 14, 2025
8f6e7d3
Drop trafffic between advertised networks
kyrtapz Apr 15, 2025
c330e4c
advertised network isolation: change isolation priorities
kyrtapz May 16, 2025
6379a5f
advertised network isolation: improve error wrapping
kyrtapz May 16, 2025
62738cc
advertised network isolation: rename UDN to network
kyrtapz May 16, 2025
b797696
advertised network isolation: rename accept acl to pass acl
kyrtapz May 16, 2025
2847345
advertised network isolation: use network ID as one of the ACL DB keys
kyrtapz May 16, 2025
6ca6d9b
advertised network isolation: use LportEgressAfterLB for ACLs
kyrtapz May 16, 2025
250d7fe
advertised network isolation: move advertised network isolation to ud…
kyrtapz May 16, 2025
1b15f8e
advertised network isolation: functions doc
kyrtapz May 16, 2025
bb0bdce
advertised network isolation: imporove DB ids
kyrtapz May 16, 2025
b4b15ef
advertised network isolation: delete isolation entries with one trasa…
kyrtapz May 16, 2025
75fe04c
Merge pull request #5186 from kyrtapz/inter_udn_isolation
tssurya May 16, 2025
4027314
NFT: Do not error when desire no elems and set/map doesnt exist
martinkennelly May 17, 2025
9e9c0f5
E2E add infra provider, deployment config and container engine api
martinkennelly May 4, 2025
cf36b66
E2E: remove exposing runCommand
martinkennelly May 4, 2025
7d1d5b1
E2E: Rename IPv4 IPv6 support env vars in-order to be platform agnostic
martinkennelly Apr 15, 2025
fac499d
E2E: centralise images
martinkennelly Apr 15, 2025
6e16cd7
E2E: add IP allocation framework
martinkennelly May 4, 2025
57e92b8
E2E: use IP allocator to allocate new Node IPs for EIP
martinkennelly Apr 16, 2025
a403e00
E2E: override docker protection rules for esvc test
martinkennelly Apr 17, 2025
201118c
E2E: refactor e2es to implement deployment config API
martinkennelly Apr 16, 2025
f0b8b76
E2E: refactor e2es to use infra provider API
martinkennelly May 4, 2025
f1384dc
E2E: remove all static Node selectors
martinkennelly Apr 16, 2025
3f446a1
E2E: block esvc test until EIP is assigned to aid debug
martinkennelly Apr 16, 2025
e32620a
E2E: renaming and using existing tools instead of custom code
martinkennelly Apr 16, 2025
0fd0cc2
E2E: add some checks for errors or expected IPs
martinkennelly Apr 16, 2025
1b76d91
E2E: only isolate v6 networks if provider is KinD
martinkennelly Apr 18, 2025
05ea4a8
E2E: rename network 'kindexgw' to 'xgw'
martinkennelly Apr 23, 2025
aab7ded
E2E: fix static pod func
martinkennelly Apr 23, 2025
b458f9e
Bump OVN to 24.09.2-69.el9fdp
kyrtapz May 14, 2025
ff45b08
Merge remote-tracking branch 'upstream/master' into ds_merge_19052025
kyrtapz May 19, 2025
4650923
Do not retry pods that are not scheduled
trozet May 20, 2025
712d281
Updates job: add back old IP version env vars in-order for job to suc…
martinkennelly May 21, 2025
b7c353c
Node port watcher sync: ignore ns with no valid network
martinkennelly May 14, 2025
eb7acc0
Merge pull request #2577 from kyrtapz/ds_merge_19052025
openshift-merge-bot[bot] May 21, 2025
af95f53
Fix wrong RA status when giving up retries
jcaamano May 21, 2025
74d92d7
Merge pull request #5151 from martinkennelly/e2e-test-provider3
trozet May 22, 2025
008d105
Trivial perf improvement for checking joinSubnetChanged
trozet May 22, 2025
128cd69
network-qos: Expand Network QoS to fully support UDN
flavio-fernandes May 14, 2025
5ae13ef
Merge pull request #2576 from kyrtapz/ovn_bump
openshift-merge-bot[bot] May 22, 2025
12bf965
Merge pull request #5267 from trozet/optimize_checking_node_zone
trozet May 22, 2025
c57e83c
Increase InformerSyncTimeout to 60s
pliurh May 13, 2025
7e0aa60
Fix missing mutex lock for updateBridgePMTUDFlowCache
jcaamano May 26, 2025
e1af9e9
Fix panic/race around openflowmanager
jcaamano May 26, 2025
682b603
Fix several reasons for flakes in external gateway e2e tests
jcaamano May 22, 2025
192f575
Fix hybrid overlay node subnets collision with cluster subnets
pliurh Apr 30, 2025
bed7073
Merge pull request #5251 from flavio-fernandes/networkqos-design.udn
girishmg May 27, 2025
a981c27
Merge pull request #5263 from jcaamano/fix-ofmanager-concurrent
trozet May 28, 2025
81d997c
Merge pull request #5260 from trozet/fix_resource_retry_handling
trozet May 28, 2025
187e06c
Merge pull request #5250 from martinkennelly/crash-no-ep
trozet May 28, 2025
339021f
Merge remote-tracking branch 'origin/master' into ds_merge
pliurh May 28, 2025
80ebd7a
Merge pull request #2588 from pliurh/master
openshift-merge-bot[bot] May 29, 2025
954372f
Merge remote-tracking branch 'downstream/release-4.20' into 4.19-merg…
trozet May 30, 2025
0c8cdc9
Merge pull request #2596 from trozet/4.19-merge_5-30-25
openshift-merge-bot[bot] Jun 18, 2025
08d51e9
Merge remote-tracking branch 'upstream/release-4.19' into release-4.18
jluhrsen Jun 26, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
20 changes: 13 additions & 7 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -282,6 +282,8 @@ jobs:
env:
JOB_NAME: "Upgrade-Tests-${{ matrix.gateway-mode }}"
OVN_HA: "false"
PLATFORM_IPV4_SUPPORT: "true"
PLATFORM_IPV6_SUPPORT: "false"
KIND_IPV4_SUPPORT: "true"
KIND_IPV6_SUPPORT: "false"
OVN_HYBRID_OVERLAY_ENABLE: "false"
Expand Down Expand Up @@ -453,7 +455,7 @@ jobs:
- {"target": "external-gateway", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "ipv6", "disable-snat-multiple-gws": "noSnatGW", "second-bridge": "2br", "ic": "ic-single-node-zones"}
- {"target": "external-gateway", "ha": "noHA", "gateway-mode": "local", "ipfamily": "ipv6", "disable-snat-multiple-gws": "noSnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones"}
- {"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", "network-segmentation": "enable-network-segmentation"}
- {"target": "kv-live-migration", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "dualstack", "disable-snat-multiple-gws": "noSnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones", "num-workers": "3", "network-segmentation": "enable-network-segmentation"}
- {"target": "kv-live-migration", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "dualstack", "disable-snat-multiple-gws": "noSnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones", "num-workers": "3", "network-segmentation": "enable-network-segmentation", "routeadvertisements": "true"}
- {"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": "noSnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones", "forwarding": "disable-forwarding"}
- {"target": "network-segmentation", "ha": "noHA", "gateway-mode": "local", "ipfamily": "dualstack", "disable-snat-multiple-gws": "noSnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones"}
Expand All @@ -475,11 +477,11 @@ jobs:
KIND_INSTALL_METALLB: "${{ matrix.target == 'control-plane' || matrix.target == 'control-plane-helm' || matrix.target == 'network-segmentation' }}"
OVN_GATEWAY_MODE: "${{ matrix.gateway-mode }}"
OVN_SECOND_BRIDGE: "${{ matrix.second-bridge == '2br' }}"
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' || matrix.target == 'traffic-flow-test-only' || matrix.routeadvertisements != '' }}"
ENABLE_NETWORK_SEGMENTATION: "${{ matrix.target == 'network-segmentation' || matrix.network-segmentation == 'enable-network-segmentation' }}"
DISABLE_UDN_HOST_ISOLATION: "true"
PLATFORM_IPV4_SUPPORT: "${{ matrix.ipfamily == 'IPv4' || matrix.ipfamily == 'dualstack' }}"
PLATFORM_IPV6_SUPPORT: "${{ matrix.ipfamily == 'IPv6' || matrix.ipfamily == 'dualstack' }}"
KIND_INSTALL_KUBEVIRT: "${{ matrix.target == 'kv-live-migration' }}"
OVN_COMPACT_MODE: "${{ matrix.target == 'compact-mode' }}"
OVN_DUMMY_GATEWAY_BRIDGE: "${{ matrix.target == 'compact-mode' }}"
Expand All @@ -489,6 +491,7 @@ jobs:
OVN_DISABLE_FORWARDING: "${{ matrix.forwarding == 'disable-forwarding' }}"
USE_HELM: "${{ matrix.target == 'control-plane-helm' || matrix.target == 'multi-homing-helm' }}"
OVN_ENABLE_DNSNAMERESOLVER: "${{ matrix.dns-name-resolver == 'enable-dns-name-resolver' }}"
OVN_NETWORK_QOS_ENABLE: "${{ matrix.target == 'control-plane' || matrix.target == 'control-plane-helm' }}"
TRAFFIC_FLOW_TESTS: "${{ matrix.traffic-flow-tests }}"
ENABLE_ROUTE_ADVERTISEMENTS: "${{ matrix.routeadvertisements != '' }}"
ADVERTISE_DEFAULT_NETWORK: "${{ matrix.routeadvertisements == 'advertise-default' }}"
Expand Down Expand Up @@ -550,7 +553,8 @@ jobs:
echo "GOPATH=$GOPATH" >> $GITHUB_ENV
echo "$GOPATH/bin" >> $GITHUB_PATH
if [ $OVN_SECOND_BRIDGE == "true" ]; then
echo OVN_TEST_EX_GW_NETWORK=kindexgw >> $GITHUB_ENV
# must be "greater" lexigraphically than network "kind", therefore external gateway is named xgw
echo OVN_TEST_EX_GW_NETWORK=xgw >> $GITHUB_ENV
echo OVN_ENABLE_EX_GW_NETWORK_BRIDGE=true >> $GITHUB_ENV
fi
if [[ "$JOB_NAME" == *"shard-conformance"* ]] && [ "$ADVERTISE_DEFAULT_NETWORK" == "true" ]; then
Expand Down Expand Up @@ -629,7 +633,9 @@ jobs:
make -C test control-plane WHAT="Kubevirt Virtual Machines"
elif [ "${{ matrix.target }}" == "control-plane-helm" ]; then
make -C test control-plane
make -C test conformance
if [ "${{ matrix.ipfamily }}" != "ipv6" ]; then
make -C test conformance
fi
elif [ "${{ matrix.target }}" == "network-segmentation" ]; then
make -C test control-plane WHAT="Network Segmentation"
elif [ "${{ matrix.target }}" == "bgp" ]; then
Expand Down Expand Up @@ -688,8 +694,8 @@ jobs:
env:
JOB_NAME: "DualStack-conversion-shared-${{ matrix.ha }}-${{ matrix.interconnect }}"
OVN_HA: "${{ matrix.ha == 'HA' }}"
KIND_IPV4_SUPPORT: "true"
KIND_IPV6_SUPPORT: "false"
PLATFORM_IPV4_SUPPORT: "true"
PLATFORM_IPV6_SUPPORT: "false"
OVN_HYBRID_OVERLAY_ENABLE: "false"
OVN_GATEWAY_MODE: "shared"
OVN_MULTICAST_ENABLE: "false"
Expand Down
15 changes: 9 additions & 6 deletions Dockerfile.base
Original file line number Diff line number Diff line change
Expand Up @@ -12,25 +12,28 @@ RUN dnf --setopt=retries=2 --setopt=timeout=2 install -y --nodocs \
selinux-policy procps-ng && \
dnf clean all

ARG ovsver=3.5.0-0.9.el9fdp
ARG ovnver=24.09.2-41.el9fdp
# NOTE: OVS is not pinned to a particular patch version in order to stay in
# sync with the OVS running on the host (it is not strictly necessary, but
# reduces the number of variables in the system) and receive all the CVE and
# bug fixes automatically.
ARG ovsver=3.5
ARG ovnver=24.09.2-69.el9fdp
# NOTE: Ensure that the versions of OVS and OVN are overriden for OKD in each of the subsequent layers.
# Centos and RHEL releases for ovn are built out of sync, so please make sure to bump for OKD with
# the corresponding Centos version when updating the OCP version.
ARG ovsver_okd=3.5.0-10.el9s
ARG ovsver_okd=3.5
# We are not bumping the OVN version for OKD since the FDP release is not done yet.
ARG ovnver_okd=24.09.1-10.el9s

RUN INSTALL_PKGS="iptables nftables" && \
source /etc/os-release && \
[ "${ID}" == "centos" ] && ovsver=$ovsver_okd && ovnver=$ovnver_okd; \
ovsver_short=$(echo "$ovsver" | cut -d'.' -f1,2) && \
ovnver_short=$(echo "$ovnver" | cut -d'.' -f1,2) && \
dnf --setopt=retries=2 --setopt=timeout=2 install -y --nodocs $INSTALL_PKGS && \
dnf --setopt=retries=2 --setopt=timeout=2 install -y --nodocs "openvswitch$ovsver_short = $ovsver" "python3-openvswitch$ovsver_short = $ovsver" && \
dnf --setopt=retries=2 --setopt=timeout=2 install -y --nodocs "openvswitch$ovsver" "python3-openvswitch$ovsver" && \
dnf --setopt=retries=2 --setopt=timeout=2 install -y --nodocs "ovn$ovnver_short = $ovnver" "ovn$ovnver_short-central = $ovnver" "ovn$ovnver_short-host = $ovnver" && \
dnf clean all && rm -rf /var/cache/* && \
sed 's/%/"/g' <<<"%openvswitch$ovsver_short-devel = $ovsver% %openvswitch$ovsver_short-ipsec = $ovsver% %ovn$ovnver_short-vtep = $ovnver%" > /more-pkgs
sed 's/%/"/g' <<<"%openvswitch$ovsver-devel% %openvswitch$ovsver-ipsec% %ovn$ovnver_short-vtep = $ovnver%" > /more-pkgs

RUN mkdir -p /var/run/openvswitch && \
mkdir -p /var/run/ovn && \
Expand Down
8 changes: 7 additions & 1 deletion MAINTAINERS.md
Original file line number Diff line number Diff line change
Expand Up @@ -2,11 +2,17 @@ The current Maintainers Group for the ovn-kubernetes Project consists of:

| Name | Employer | Responsibilities |
| ---- | -------- | ---------------- |
| [Dan Williams](https://github.com/dcbw) | Red Hat | All things ovnkube |
| [Girish Moodalbail](https://github.com/girishmg) | NVIDIA | All things ovnkube |
| [Jaime CaamaΓ±o Ruiz](https://github.com/jcaamano) | Red Hat | All things ovnkube |
| [Nadia Pinaeva](https://github.com/npinaeva) | Red Hat | All things ovnkube |
| [Surya Seetharaman](https://github.com/tssurya) | Red Hat | All things ovnkube |
| [Tim Rozet](https://github.com/trozet) | Red Hat | All things ovnkube |

See [CONTRIBUTING.md](./CONTRIBUTING.md) for general contribution guidelines.
See [GOVERNANCE.md](./GOVERNANCE.md) for governance guidelines and maintainer responsibilities.

Emeritus Maintainers

| Name | Employer | Responsibilities |
| ---- | -------- | ---------------- |
| [Dan Williams](https://github.com/dcbw) | Independent | All things ovnkube |
34 changes: 17 additions & 17 deletions contrib/kind-common
Original file line number Diff line number Diff line change
Expand Up @@ -161,10 +161,10 @@ EOF
pip install -r dev-env/requirements.txt

local ip_family ipv6_network
if [ "$KIND_IPV4_SUPPORT" == true ] && [ "$KIND_IPV6_SUPPORT" == true ]; then
if [ "$PLATFORM_IPV4_SUPPORT" == true ] && [ "$PLATFORM_IPV6_SUPPORT" == true ]; then
ip_family="dual"
ipv6_network="--ipv6 --subnet=${METALLB_CLIENT_NET_SUBNET_IPV6}"
elif [ "$KIND_IPV6_SUPPORT" == true ]; then
elif [ "$PLATFORM_IPV6_SUPPORT" == true ]; then
ip_family="ipv6"
ipv6_network="--ipv6 --subnet=${METALLB_CLIENT_NET_SUBNET_IPV6}"
else
Expand All @@ -177,7 +177,7 @@ EOF
docker network rm -f clientnet
docker network create --subnet="${METALLB_CLIENT_NET_SUBNET_IPV4}" ${ipv6_network} --driver bridge clientnet
docker network connect clientnet frr
if [ "$KIND_IPV6_SUPPORT" == true ]; then
if [ "$PLATFORM_IPV6_SUPPORT" == true ]; then
# Enable IPv6 forwarding in FRR
docker exec frr sysctl -w net.ipv6.conf.all.forwarding=1
fi
Expand Down Expand Up @@ -218,21 +218,21 @@ EOF

KIND_NODES=$(kind_get_nodes)
for n in ${KIND_NODES}; do
if [ "$KIND_IPV4_SUPPORT" == true ]; then
if [ "$PLATFORM_IPV4_SUPPORT" == true ]; then
docker exec "${n}" ip route add "${client_subnets_v4}" via "${kind_network_v4}"
fi
if [ "$KIND_IPV6_SUPPORT" == true ]; then
if [ "$PLATFORM_IPV6_SUPPORT" == true ]; then
docker exec "${n}" ip -6 route add "${client_subnets_v6}" via "${kind_network_v6}"
fi
done

# for now, we only run one test with metalLB load balancer for which this
# one svcVIP (192.168.10.0/fc00:f853:ccd:e799::) is more than enough since at a time we will only
# have one load balancer service
if [ "$KIND_IPV4_SUPPORT" == true ]; then
if [ "$PLATFORM_IPV4_SUPPORT" == true ]; then
docker exec lbclient ip route add 192.168.10.0 via "${client_network_v4}" dev eth0
fi
if [ "$KIND_IPV6_SUPPORT" == true ]; then
if [ "$PLATFORM_IPV6_SUPPORT" == true ]; then
docker exec lbclient ip -6 route add fc00:f853:ccd:e799:: via "${client_network_v6}" dev eth0
fi
sleep 30
Expand Down Expand Up @@ -284,7 +284,7 @@ delete_metallb_dir() {
kubectl_wait_pods() {
# IPv6 cluster seems to take a little longer to come up, so extend the wait time.
OVN_TIMEOUT=300
if [ "$KIND_IPV6_SUPPORT" == true ]; then
if [ "$PLATFORM_IPV6_SUPPORT" == true ]; then
OVN_TIMEOUT=480
fi

Expand Down Expand Up @@ -450,7 +450,7 @@ install_ipamclaim_crd() {

docker_create_second_disconnected_interface() {
echo "adding second interfaces to nodes"
local bridge_name="${1:-kindexgw}"
local bridge_name="${1:-xgw}"
echo "bridge: $bridge_name"

if [ "${OCI_BIN}" = "podman" ]; then
Expand Down Expand Up @@ -688,7 +688,7 @@ deploy_frr_external_container() {
# Add route reflector client config
sed -i '/remote-as 64512/a \ neighbor {{ . }} route-reflector-client' frr/frr.conf.tmpl

if [ "$KIND_IPV6_SUPPORT" == true ]; then
if [ "$PLATFORM_IPV6_SUPPORT" == true ]; then
# Check if IPv6 address-family section exists
if ! grep -q 'address-family ipv6 unicast' frr/frr.conf.tmpl; then
# Add IPv6 address-family section if it doesn't exist
Expand All @@ -706,7 +706,7 @@ deploy_frr_external_container() {
fi
./demo.sh
popd || exit 1
if [ "$KIND_IPV6_SUPPORT" == true ]; then
if [ "$PLATFORM_IPV6_SUPPORT" == true ]; then
# Enable IPv6 forwarding in FRR
docker exec frr sysctl -w net.ipv6.conf.all.forwarding=1
fi
Expand All @@ -725,10 +725,10 @@ deploy_bgp_external_server() {
# | ovn-worker2 | from default pod network)
# ---------------------
local ip_family ipv6_network
if [ "$KIND_IPV4_SUPPORT" == true ] && [ "$KIND_IPV6_SUPPORT" == true ]; then
if [ "$PLATFORM_IPV4_SUPPORT" == true ] && [ "$PLATFORM_IPV6_SUPPORT" == true ]; then
ip_family="dual"
ipv6_network="--ipv6 --subnet=${BGP_SERVER_NET_SUBNET_IPV6}"
elif [ "$KIND_IPV6_SUPPORT" == true ]; then
elif [ "$PLATFORM_IPV6_SUPPORT" == true ]; then
ip_family="ipv6"
ipv6_network="--ipv6 --subnet=${BGP_SERVER_NET_SUBNET_IPV6}"
else
Expand All @@ -746,7 +746,7 @@ deploy_bgp_external_server() {
bgp_network_frr_v4=$($OCI_BIN inspect -f '{{index .NetworkSettings.Networks "bgpnet" "IPAddress"}}' frr)
echo "FRR kind network IPv4: ${bgp_network_frr_v4}"
$OCI_BIN exec bgpserver ip route replace default via "$bgp_network_frr_v4"
if [ "$KIND_IPV6_SUPPORT" == true ] ; then
if [ "$PLATFORM_IPV6_SUPPORT" == true ] ; then
bgp_network_frr_v6=$($OCI_BIN inspect -f '{{index .NetworkSettings.Networks "bgpnet" "GlobalIPv6Address"}}' frr)
echo "FRR kind network IPv6: ${bgp_network_frr_v6}"
$OCI_BIN exec bgpserver ip -6 route replace default via "$bgp_network_frr_v6"
Expand Down Expand Up @@ -781,7 +781,7 @@ install_ffr_k8s() {
# Allow receiving the bgp external server's prefix
sed -i '/mode: filtered/a\ prefixes:\n - prefix: '"${BGP_SERVER_NET_SUBNET_IPV4}"'' receive_filtered.yaml
# If IPv6 is enabled, add the IPv6 prefix as well
if [ "$KIND_IPV6_SUPPORT" == true ]; then
if [ "$PLATFORM_IPV6_SUPPORT" == true ]; then
# Find all line numbers where the IPv4 prefix is defined
IPv6_LINE=" - prefix: ${BGP_SERVER_NET_SUBNET_IPV6}"
# Process each occurrence of the IPv4 prefix
Expand Down Expand Up @@ -827,7 +827,7 @@ EOF
# Get subnet information
subnet_json=$(kubectl get node $node -o jsonpath='{.metadata.annotations.k8s\.ovn\.org/node-subnets}')

if [ "$KIND_IPV4_SUPPORT" == true ]; then
if [ "$PLATFORM_IPV4_SUPPORT" == true ]; then
# Extract IPv4 address (first address)
node_ipv4=$(echo "$node_ips" | awk '{print $1}')
ipv4_subnet=$(echo "$subnet_json" | jq -r '.default[0]')
Expand All @@ -840,7 +840,7 @@ EOF
fi

# Add IPv6 route if enabled
if [ "$KIND_IPV6_SUPPORT" == true ]; then
if [ "$PLATFORM_IPV6_SUPPORT" == true ]; then
# Extract IPv6 address (second address, if present)
node_ipv6=$(echo "$node_ips" | awk '{print $2}')
ipv6_subnet=$(echo "$subnet_json" | jq -r '.default[1] // empty')
Expand Down
11 changes: 9 additions & 2 deletions contrib/kind-helm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ set_default_params() {
export KIND_REMOVE_TAINT=${KIND_REMOVE_TAINT:-true}
export ENABLE_MULTI_NET=${ENABLE_MULTI_NET:-false}
export ENABLE_NETWORK_SEGMENTATION=${ENABLE_NETWORK_SEGMENTATION:-false}
export OVN_NETWORK_QOS_ENABLE=${OVN_NETWORK_QOS_ENABLE:-false}
export KIND_NUM_WORKER=${KIND_NUM_WORKER:-2}
export KIND_CLUSTER_NAME=${KIND_CLUSTER_NAME:-ovn}
export OVN_IMAGE=${OVN_IMAGE:-'ghcr.io/ovn-kubernetes/ovn-kubernetes/ovn-kube-ubuntu:helm'}
Expand Down Expand Up @@ -79,7 +80,7 @@ set_default_params() {
fi

# Hard code ipv4 support until IPv6 is implemented
export KIND_IPV4_SUPPORT=true
export PLATFORM_IPV4_SUPPORT=true

export OVN_ENABLE_DNSNAMERESOLVER=${OVN_ENABLE_DNSNAMERESOLVER:-false}
}
Expand All @@ -98,6 +99,7 @@ usage() {
echo " [ -ikv | --install-kubevirt ]"
echo " [ -mne | --multi-network-enable ]"
echo " [ -nse | --network-segmentation-enable ]"
echo " [ -nqe | --network-qos-enable ]"
echo " [ -wk | --num-workers <num> ]"
echo " [ -ic | --enable-interconnect]"
echo " [ -npz | --node-per-zone ]"
Expand All @@ -119,6 +121,7 @@ usage() {
echo "-ikv | --install-kubevirt Install kubevirt"
echo "-mne | --multi-network-enable Enable multi networks. DEFAULT: Disabled"
echo "-nse | --network-segmentation-enable Enable network segmentation. DEFAULT: Disabled"
echo "-nqe | --network-qos-enable Enable network QoS. DEFAULT: Disabled"
echo "-ha | --ha-enabled Enable high availability. DEFAULT: HA Disabled"
echo "-wk | --num-workers Number of worker nodes. DEFAULT: 2 workers"
echo "-cn | --cluster-name Configure the kind cluster's name"
Expand Down Expand Up @@ -165,6 +168,8 @@ parse_args() {
;;
-nse | --network-segmentation-enable) ENABLE_NETWORK_SEGMENTATION=true
;;
-nqe | --network-qos-enable ) OVN_NETWORK_QOS_ENABLE=true
;;
-ha | --ha-enabled ) OVN_HA=true
KIND_NUM_MASTER=3
;;
Expand Down Expand Up @@ -218,6 +223,7 @@ print_params() {
echo "KIND_REMOVE_TAINT = $KIND_REMOVE_TAINT"
echo "ENABLE_MULTI_NET = $ENABLE_MULTI_NET"
echo "ENABLE_NETWORK_SEGMENTATION = $ENABLE_NETWORK_SEGMENTATION"
echo "OVN_NETWORK_QOS_ENABLE = $OVN_NETWORK_QOS_ENABLE"
echo "OVN_IMAGE = $OVN_IMAGE"
echo "KIND_NUM_MASTER = $KIND_NUM_MASTER"
echo "KIND_NUM_WORKER = $KIND_NUM_WORKER"
Expand All @@ -242,7 +248,7 @@ check_dependencies() {
done

# check for currently unsupported features
[ "${KIND_IPV6_SUPPORT}" == "true" ] && { &>1 echo "Fatal: KIND_IPV6_SUPPORT support not implemented yet"; exit 1; } ||:
[ "${PLATFORM_IPV6_SUPPORT}" == "true" ] && { &>1 echo "Fatal: PLATFORM_IPV6_SUPPORT support not implemented yet"; exit 1; } ||:
}

helm_prereqs() {
Expand Down Expand Up @@ -414,6 +420,7 @@ helm install ovn-kubernetes . -f "${value_file}" \
--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) \
--set global.enableNetworkQos=$(if [ "${OVN_NETWORK_QOS_ENABLE}" == "true" ]; then echo "true"; else echo "false"; fi) \
${ovnkube_db_options}
EOF
)
Expand Down
Loading