Skip to content

Commit 03c55f7

Browse files
author
origin-release-container
committed
Merge upstream/master into master with conflicts (08-16-2025)
2 parents a830940 + 4a06d4b commit 03c55f7

File tree

1,432 files changed

+119648
-26140
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

1,432 files changed

+119648
-26140
lines changed

.coderabbit.yml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,2 @@
1+
paths_ignore:
2+
- "**/vendor/**"

.github/workflows/docker.yml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ name: ovn-docker-images
22

33
on:
44
push:
5-
branches: [ master,release-1.0 ]
5+
branches: [ master,release-1.0,release-1.1 ]
66

77
permissions:
88
contents: read

.github/workflows/test.yml

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -20,7 +20,7 @@ concurrency:
2020
cancel-in-progress: true
2121

2222
env:
23-
K8S_VERSION: v1.32.3
23+
K8S_VERSION: v1.33.1
2424
KIND_CLUSTER_NAME: ovn
2525
KIND_INSTALL_INGRESS: true
2626
KIND_ALLOW_SYSTEM_WRITES: true
@@ -61,7 +61,7 @@ jobs:
6161
- name: Verify
6262
uses: golangci/golangci-lint-action@v6
6363
with:
64-
version: v1.60.3
64+
version: v1.64.8
6565
working-directory: go-controller
6666
args: --modules-download-mode=vendor --timeout=15m0s --verbose
6767

@@ -454,20 +454,20 @@ jobs:
454454
- {"target": "shard-conformance", "ha": "HA", "gateway-mode": "local", "ipfamily": "dualstack", "disable-snat-multiple-gws": "noSnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones", "routeadvertisements": "advertise-default"}
455455
- {"target": "shard-conformance", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "ipv6", "disable-snat-multiple-gws": "snatGW", "second-bridge": "1br", "ic": "ic-single-node-zones"}
456456
- {"target": "shard-conformance", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "ipv4", "disable-snat-multiple-gws": "snatGW", "second-bridge": "1br", "ic": "ic-single-node-zones"}
457-
- {"target": "control-plane", "ha": "HA", "gateway-mode": "shared", "ipfamily": "ipv6", "disable-snat-multiple-gws": "noSnatGW", "second-bridge": "1br", "ic": "ic-disabled", "dns-name-resolver": "enable-dns-name-resolver"}
457+
- {"target": "control-plane", "ha": "HA", "gateway-mode": "shared", "ipfamily": "ipv6", "disable-snat-multiple-gws": "noSnatGW", "second-bridge": "1br", "ic": "ic-disabled"}
458458
- {"target": "control-plane", "ha": "HA", "gateway-mode": "shared", "ipfamily": "ipv4", "disable-snat-multiple-gws": "snatGW", "second-bridge": "1br", "ic": "ic-disabled", "traffic-flow-tests": "1,2,3"}
459459
- {"target": "control-plane-helm","ha": "HA", "gateway-mode": "shared", "ipfamily": "ipv4", "disable-snat-multiple-gws": "snatGW", "second-bridge": "1br", "ic": "ic-disabled", "dns-name-resolver": "enable-dns-name-resolver"}
460460
- {"target": "control-plane-helm","ha": "noHA", "gateway-mode": "shared", "ipfamily": "ipv4", "disable-snat-multiple-gws": "snatGW", "second-bridge": "1br", "ic": "ic-single-node-zones", "dns-name-resolver": "enable-dns-name-resolver"}
461461
- {"target": "control-plane", "ha": "noHA", "gateway-mode": "local", "ipfamily": "ipv4", "disable-snat-multiple-gws": "noSnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones", "dns-name-resolver": "enable-dns-name-resolver"}
462462
- {"target": "control-plane", "ha": "noHA", "gateway-mode": "local", "ipfamily": "ipv6", "disable-snat-multiple-gws": "noSnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones"}
463463
- {"target": "control-plane", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "ipv4", "disable-snat-multiple-gws": "noSnatGW", "second-bridge": "2br", "ic": "ic-single-node-zones"}
464-
- {"target": "control-plane", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "ipv6", "disable-snat-multiple-gws": "noSnatGW", "second-bridge": "2br", "ic": "ic-single-node-zones", "dns-name-resolver": "enable-dns-name-resolver"}
464+
- {"target": "control-plane", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "ipv6", "disable-snat-multiple-gws": "noSnatGW", "second-bridge": "2br", "ic": "ic-single-node-zones"}
465465
- {"target": "multi-homing", "ha": "noHA", "gateway-mode": "local", "ipfamily": "ipv4", "disable-snat-multiple-gws": "SnatGW", "second-bridge": "1br", "ic": "ic-disabled"}
466466
- {"target": "multi-homing-helm", "ha": "HA", "gateway-mode": "shared", "ipfamily": "ipv4", "disable-snat-multiple-gws": "snatGW", "second-bridge": "1br", "ic": "ic-disabled", "network-segmentation": "enable-network-segmentation"}
467467
- {"target": "node-ip-mac-migration", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "ipv6", "disable-snat-multiple-gws": "SnatGW", "second-bridge": "1br", "ic": "ic-disabled"}
468468
- {"target": "node-ip-mac-migration", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "ipv4", "disable-snat-multiple-gws": "SnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones"}
469469
- {"target": "compact-mode", "ha": "noHA", "gateway-mode": "local", "ipfamily": "ipv4", "disable-snat-multiple-gws": "snatGW", "second-bridge": "1br", "ic": "ic-disabled"}
470-
- {"target": "multi-homing", "ha": "noHA", "gateway-mode": "local", "ipfamily": "dualstack", "disable-snat-multiple-gws": "SnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones"}
470+
- {"target": "multi-homing", "ha": "noHA", "gateway-mode": "local", "ipfamily": "dualstack", "disable-snat-multiple-gws": "SnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones", "network-segmentation": "enable-network-segmentation"}
471471
- {"target": "multi-node-zones", "ha": "noHA", "gateway-mode": "local", "ipfamily": "ipv4", "disable-snat-multiple-gws": "SnatGW", "second-bridge": "1br", "ic": "ic-multi-node-zones", "num-workers": "3", "num-nodes-per-zone": "2"}
472472
- {"target": "external-gateway", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "ipv4", "disable-snat-multiple-gws": "noSnatGW", "second-bridge": "2br", "ic": "ic-single-node-zones"}
473473
- {"target": "external-gateway", "ha": "noHA", "gateway-mode": "local", "ipfamily": "ipv4", "disable-snat-multiple-gws": "noSnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones"}
@@ -481,8 +481,8 @@ jobs:
481481
- {"target": "network-segmentation", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "dualstack", "disable-snat-multiple-gws": "SnatGW", "second-bridge": "1br", "ic": "ic-disabled"}
482482
- {"target": "network-segmentation", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "ipv4", "disable-snat-multiple-gws": "noSnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones"}
483483
- {"target": "network-segmentation", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "ipv6", "disable-snat-multiple-gws": "noSnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones"}
484-
- {"target": "bgp", "ha": "noHA", "gateway-mode": "local", "ipfamily": "dualstack", "disable-snat-multiple-gws": "snatGW", "second-bridge": "1br", "ic": "ic-single-node-zones", "routeadvertisements": "advertise-default", "network-segmentation": "enable-network-segmentation"}
485-
- {"target": "bgp", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "dualstack", "disable-snat-multiple-gws": "noSnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones", "routeadvertisements": "advertise-default", "network-segmentation": "enable-network-segmentation"}
484+
- {"target": "bgp", "ha": "noHA", "gateway-mode": "local", "ipfamily": "dualstack", "disable-snat-multiple-gws": "snatGW", "second-bridge": "1br", "ic": "ic-single-node-zones", "routeadvertisements": "advertise-default", "network-segmentation": "enable-network-segmentation", "dns-name-resolver": "enable-dns-name-resolver"}
485+
- {"target": "bgp", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "dualstack", "disable-snat-multiple-gws": "noSnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones", "routeadvertisements": "advertise-default", "network-segmentation": "enable-network-segmentation", "dns-name-resolver": "enable-dns-name-resolver"}
486486
- {"target": "traffic-flow-test-only","ha": "noHA", "gateway-mode": "shared", "ipfamily": "ipv4", "disable-snat-multiple-gws": "noSnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones", "traffic-flow-tests": "1-24", "network-segmentation": "enable-network-segmentation"}
487487
- {"target": "tools", "ha": "noHA", "gateway-mode": "local", "ipfamily": "dualstack", "disable-snat-multiple-gws": "SnatGW", "second-bridge": "1br", "ic": "ic-single-node-zones", "network-segmentation": "enable-network-segmentation"}
488488
needs: [ build-pr ]
@@ -513,6 +513,7 @@ jobs:
513513
TRAFFIC_FLOW_TESTS: "${{ matrix.traffic-flow-tests }}"
514514
ENABLE_ROUTE_ADVERTISEMENTS: "${{ matrix.routeadvertisements != '' }}"
515515
ADVERTISE_DEFAULT_NETWORK: "${{ matrix.routeadvertisements == 'advertise-default' }}"
516+
ENABLE_PRE_CONF_UDN_ADDR: "${{ matrix.ic == 'ic-single-node-zones' && (matrix.target == 'network-segmentation' || matrix.network-segmentation == 'enable-network-segmentation') }}"
516517
steps:
517518

518519
- name: Install VRF kernel module

MEETINGS.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,7 @@ All are welcome to join our meetings! If you want to discuss something with the
66

77
## Meeting time
88

9-
We meet alternate Monday's at 6:00 PM CET/CEST.
9+
We meet alternate Monday's at 5:00 PM CET/CEST.
1010
In order to figure out when our next meeting is, please check our agenda for previous meeting history.
1111
The meetings last up to 1 hour.
1212

contrib/kind-common

Lines changed: 53 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ if_error_exit() {
3434

3535
set_common_default_params() {
3636
KIND_IMAGE=${KIND_IMAGE:-kindest/node}
37-
K8S_VERSION=${K8S_VERSION:-v1.32.3}
37+
K8S_VERSION=${K8S_VERSION:-v1.33.1}
3838
}
3939

4040
run_kubectl() {
@@ -55,6 +55,37 @@ run_kubectl() {
5555
done
5656
}
5757

58+
setup_kubectl_bin() {
59+
###########################################################################
60+
# Description: #
61+
# setup kubectl for querying the cluster #
62+
# #
63+
# Arguments: #
64+
# $1 - error message if not provided, it will just exit #
65+
###########################################################################
66+
if [ ! -d "./bin" ]
67+
then
68+
mkdir -p ./bin
69+
if_error_exit "Failed to create bin dir!"
70+
fi
71+
72+
if [[ "$OSTYPE" == "linux-gnu" ]]; then
73+
OS_TYPE="linux"
74+
elif [[ "$OSTYPE" == "darwin"* ]]; then
75+
OS_TYPE="darwin"
76+
fi
77+
78+
pushd ./bin
79+
if [ ! -f ./kubectl ]; then
80+
curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/${OS_TYPE}/${ARCH}/kubectl"
81+
if_error_exit "Failed to download kubectl failed!"
82+
fi
83+
popd
84+
85+
chmod +x ./bin/kubectl
86+
export PATH=${PATH}:$(pwd)/bin
87+
}
88+
5889
command_exists() {
5990
cmd="$1"
6091
command -v ${cmd} >/dev/null 2>&1
@@ -63,12 +94,20 @@ command_exists() {
6394
detect_apiserver_url() {
6495
# Detect API_URL used for in-cluster communication
6596
#
66-
# Despite OVN run in pod they will only obtain the VIRTUAL apiserver address
67-
# and since OVN has to provide the connectivity to service
68-
# it can not be bootstrapped
69-
#
70-
# This is the address of the node with the control-plane
71-
API_URL=$(kind get kubeconfig --internal --name "${KIND_CLUSTER_NAME}" | grep server | awk '{ print $2 }')
97+
# This will return apiserver address in format https://<node-name>:<port>
98+
DNS_NAME_URL=$(kind get kubeconfig --internal --name "${KIND_CLUSTER_NAME}" | grep server | awk '{ print $2 }')
99+
# cut https:// from the URL
100+
CP_NODE=${DNS_NAME_URL#*//}
101+
# cut port from the URL
102+
CP_NODE=${CP_NODE%:*}
103+
# find node IP address in the kind network
104+
if [ "$PLATFORM_IPV4_SUPPORT" == false ] && [ "$PLATFORM_IPV6_SUPPORT" == true ]; then
105+
NODE_IP="[$($OCI_BIN inspect -f '{{.NetworkSettings.Networks.kind.GlobalIPv6Address}}' $CP_NODE)]"
106+
else
107+
NODE_IP=$($OCI_BIN inspect -f '{{.NetworkSettings.Networks.kind.IPAddress}}' "$CP_NODE")
108+
fi
109+
# replace node name with node IP address
110+
API_URL=${DNS_NAME_URL/$CP_NODE/$NODE_IP}
72111
}
73112

74113
docker_disable_ipv6() {
@@ -421,7 +460,7 @@ install_mpolicy_crd() {
421460

422461
install_ipamclaim_crd() {
423462
echo "Installing IPAMClaim CRD ..."
424-
ipamclaims_manifest="https://raw.githubusercontent.com/k8snetworkplumbingwg/ipamclaims/v0.4.0-alpha/artifacts/k8s.cni.cncf.io_ipamclaims.yaml"
463+
ipamclaims_manifest="https://raw.githubusercontent.com/k8snetworkplumbingwg/ipamclaims/v0.5.1-alpha/artifacts/k8s.cni.cncf.io_ipamclaims.yaml"
425464
run_kubectl apply -f "$ipamclaims_manifest"
426465
}
427466

@@ -837,3 +876,9 @@ EOF
837876
done
838877
fi
839878
}
879+
880+
interconnect_arg_check() {
881+
if [ "${IC_ARG_PROVIDED:-}" = "true" ]; then
882+
echo "INFO: Interconnect mode is now the default mode, you do not need to use pass -ic or --enable-interconnect anymore"
883+
fi
884+
}

contrib/kind-helm.sh

Lines changed: 26 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -62,7 +62,7 @@ set_default_params() {
6262
KIND_NUM_MASTER=3
6363
fi
6464

65-
OVN_ENABLE_INTERCONNECT=${OVN_ENABLE_INTERCONNECT:-false}
65+
OVN_ENABLE_INTERCONNECT=${OVN_ENABLE_INTERCONNECT:-true}
6666
if [ "$OVN_COMPACT_MODE" == true ] && [ "$OVN_ENABLE_INTERCONNECT" != false ]; then
6767
echo "Compact mode cannot be used together with Interconnect"
6868
exit 1
@@ -129,7 +129,7 @@ usage() {
129129
echo "-wk | --num-workers Number of worker nodes. DEFAULT: 2 workers"
130130
echo "-cn | --cluster-name Configure the kind cluster's name"
131131
echo "-dns | --enable-dnsnameresolver Enable DNSNameResolver for resolving the DNS names used in the DNS rules of EgressFirewall."
132-
echo "-ic | --enable-interconnect Enable interconnect with each node as a zone (only valid if OVN_HA is false)"
132+
echo "-ce | --enable-central Deploy with OVN Central (Legacy Architecture)"
133133
echo "-npz | --nodes-per-zone Specify number of nodes per zone (Default 0, which means global zone; >0 means interconnect zone, where 1 for single-node zone, >1 for multi-node zone). If this value > 1, then (total k8s nodes (workers + 1) / num of nodes per zone) should be zero."
134134
echo ""
135135

@@ -193,7 +193,11 @@ parse_args() {
193193
;;
194194
-dns | --enable-dnsnameresolver ) OVN_ENABLE_DNSNAMERESOLVER=true
195195
;;
196+
-ce | --enable-central ) OVN_ENABLE_INTERCONNECT=false
197+
CENTRAL_ARG_PROVIDED=true
198+
;;
196199
-ic | --enable-interconnect ) OVN_ENABLE_INTERCONNECT=true
200+
IC_ARG_PROVIDED=true
197201
;;
198202
-npz | --nodes-per-zone ) shift
199203
if ! [[ "$1" =~ ^[0-9]+$ ]]; then
@@ -208,6 +212,11 @@ parse_args() {
208212
esac
209213
shift
210214
done
215+
216+
if [[ -n "${CENTRAL_ARG_PROVIDED:-}" && -n "${IC_ARG_PROVIDED:-}" ]]; then
217+
echo "Cannot specify both --enable-central and --enable-interconnect" >&2
218+
exit 1
219+
fi
211220
}
212221

213222
print_params() {
@@ -246,15 +255,23 @@ print_params() {
246255
}
247256

248257
check_dependencies() {
249-
for cmd in $OCI_BIN kubectl kind helm go ; do \
250-
if ! command_exists $cmd ; then
251-
2&>1 echo "Dependency not met: $cmd"
258+
if ! command_exists kubectl ; then
259+
echo "'kubectl' not found, installing"
260+
setup_kubectl_bin
261+
fi
262+
263+
for cmd in "$OCI_BIN" kind helm go ; do \
264+
if ! command_exists "$cmd" ; then
265+
echo "Dependency not met: $cmd"
252266
exit 1
253267
fi
254268
done
255269

256270
# check for currently unsupported features
257-
[ "${PLATFORM_IPV6_SUPPORT}" == "true" ] && { &>1 echo "Fatal: PLATFORM_IPV6_SUPPORT support not implemented yet"; exit 1; } ||:
271+
if [ "${PLATFORM_IPV6_SUPPORT:-}" = "true" ]; then
272+
echo "Fatal: PLATFORM_IPV6_SUPPORT support not implemented yet"
273+
exit 1
274+
fi
258275
}
259276

260277
helm_prereqs() {
@@ -405,7 +422,7 @@ create_ovn_kubernetes() {
405422
label_ovn_single_node_zones
406423
value_file="values-single-node-zone.yaml"
407424
ovnkube_db_options=""
408-
elif [[ $KIND_NUM_NODES_PER_ZONE > 1 ]]; then
425+
elif [[ $KIND_NUM_NODES_PER_ZONE -gt 1 ]]; then
409426
label_ovn_multiple_nodes_zones
410427
value_file="values-multi-node-zone.yaml"
411428
ovnkube_db_options=""
@@ -506,3 +523,5 @@ fi
506523
if [ "$KIND_INSTALL_KUBEVIRT" == true ]; then
507524
install_kubevirt
508525
fi
526+
527+
interconnect_arg_check

0 commit comments

Comments
 (0)