Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
39 commits
Select commit Hold shift + click to select a range
33a4f8c
[docs] Move local testing guide to its own page from CI
npinaeva Aug 25, 2025
aa188fb
[docs] Add instructions for CI failures.
npinaeva Aug 25, 2025
8db8ca1
Use "OVN-Kubernetes" consistently as project name for CNFC correctness
npinaeva Aug 29, 2025
c8b18bd
pod-allocator: Introduce MAC addresses manager
RamLavi Jul 7, 2025
1d5045a
clustermanager,allocator: Detect MAC conflict on pod allocation
RamLavi Jul 10, 2025
0b38dd8
clustermanager,allocator: Emit pod event reflecting MAC conflicts
ormergi Aug 18, 2025
b6965d9
clustermanager,allocator: Release reserved MAC on pod deletion
RamLavi Jul 16, 2025
eb4789b
clustermanager,allocator: Init MAC manager with infra MACs
ormergi Aug 18, 2025
89d1696
clustermanager,allocator: Init MAC manager with pod MACs
RamLavi Jul 10, 2025
f46a21c
e2e,net-seg default-net annot: Test MAC conflict detection
ormergi Aug 18, 2025
e4835ab
e2e,kubevirt: Test MAC conflict detection
ormergi Aug 18, 2025
cedfc13
utils,multinet: GetPodNADToNetworkMappingWithActiveNetwork CUDN support
ormergi Aug 26, 2025
31a760d
kv, e2e: Add --wait to killall
qinqon Oct 6, 2025
dfa3338
Merge pull request #5492 from ormergi/udn-static-addrs-mac-conflict-c…
tssurya Oct 8, 2025
5c98d13
Merge pull request #5630 from qinqon/e2e-kv-wait-killall-iperf3
tssurya Oct 8, 2025
7bc123a
Merge pull request #5516 from npinaeva/test-failures
npinaeva Oct 9, 2025
24b8e3a
[gateway] Pass GatewayConfig to functions to simplify function calls.
npinaeva Jul 21, 2025
73afc0a
[GatewayConfig] Rename gwLRPJoinIPs to gwRouterJoinCIDRs
npinaeva Jul 21, 2025
5b26e21
[config] Rename TransitSwitchSUbnet to TransitSubnet
npinaeva Sep 4, 2025
baa2517
[layer2-router] add logic to define current layer2 topology.
npinaeva Aug 20, 2025
bf08f95
[tunnel-keys] Add tunnel keys allocator to cluster manager.
npinaeva Sep 9, 2025
34a7924
[layer2-router] Set and parse tunnel-keys for layer2 networks
npinaeva Sep 9, 2025
03ac3d2
[layer2-router] Add gateway side
npinaeva Jul 31, 2025
cfd9c84
[layer2-router] Add secondary_layer2_controller side
npinaeva Jul 31, 2025
676a6b6
[layer2-router] Services: put service routes on the transit router
npinaeva Jul 31, 2025
4b4c629
[layer2-router] add egressIP for new topology.
npinaeva Aug 1, 2025
3efbfd7
Upgrade: add cleanup and upgrade topology for local node.
npinaeva Aug 14, 2025
7f5caa8
Upgrade: handle remote node upgrades to the new topology type.
npinaeva Aug 20, 2025
ea7953e
Upgrade: add cleanup when all nodes are upgraded.
npinaeva Aug 14, 2025
ead9135
[podAnnotation] Use transit router port LLA for pod annotation
npinaeva Aug 18, 2025
3506bd0
[e2e] BGP test: Layer2 UDN behaviour is not similar to Layer3.
npinaeva Aug 2, 2025
31374c4
[layer2-router] Update kubevirt tests to use default GW IP.
npinaeva Aug 22, 2025
8605571
[mockery] Update version to be compatible with go1.24
npinaeva Aug 25, 2025
edb6561
[layer2-router] set Layer2UsesTransitRouter to true for unit tests
npinaeva Aug 28, 2025
29d1bbb
[kind] Add ovnkube-identity to the deployed pods list
npinaeva Aug 28, 2025
e81310e
kv: Reconcile transit router as gateway after LM
npinaeva Sep 5, 2025
77e4e51
kv: Add join subnet ipv6 pio with lifetime 0
npinaeva Sep 5, 2025
914c955
Add transit subnet conflict handling for Layer2 networks.
npinaeva Sep 16, 2025
a72a98e
Merge branch 'pr/5561' into ds_5561
kyrtapz Oct 16, 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
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -35,9 +35,9 @@ Here are some links to help in your ovn-kubernetes journey:

- [Welcome to ovn-kubernetes](https://ovn-kubernetes.io/) for overview of ovn-kubernetes.
- [Architecture of ovn-kubernetes](https://ovn-kubernetes.io/design/architecture/)
- [Deploying OVN Kubernetes cluster using KIND](https://ovn-kubernetes.io/installation/launching-ovn-kubernetes-on-kind/)
- [Deploying OVN Kubernetes CNI using Helm](https://ovn-kubernetes.io/installation/launching-ovn-kubernetes-with-helm/)
- [Contributing to OVN Kubernetes](https://ovn-kubernetes.io/governance/CONTRIBUTING/) for how to get involved
- [Deploying OVN-Kubernetes cluster using KIND](https://ovn-kubernetes.io/installation/launching-ovn-kubernetes-on-kind/)
- [Deploying OVN-Kubernetes CNI using Helm](https://ovn-kubernetes.io/installation/launching-ovn-kubernetes-with-helm/)
- [Contributing to OVN-Kubernetes](https://ovn-kubernetes.io/governance/CONTRIBUTING/) for how to get involved
in our project
- [Meet the Community](https://ovn-kubernetes.io/governance/MEETINGS/) for details on community
meeting details.
Expand Down
2 changes: 1 addition & 1 deletion SECURITY.md
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
# Security Policy

OVNKubernetes repo uses the [dependabot](https://docs.github.com/en/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates) which does automatic security updates by scanning the repo and opening PRs to update the effected libraries.
OVN-Kubernetes repo uses the [dependabot](https://docs.github.com/en/code-security/dependabot/dependabot-security-updates/configuring-dependabot-security-updates) which does automatic security updates by scanning the repo and opening PRs to update the effected libraries.

## Reporting a Vulnerability

Expand Down
4 changes: 2 additions & 2 deletions contrib/kind-helm.sh
Original file line number Diff line number Diff line change
Expand Up @@ -52,8 +52,8 @@ set_default_params() {
export SVC_CIDR_IPV6=${SVC_CIDR_IPV6:-fd00:10:96::/112}
export JOIN_SUBNET_IPV4=${JOIN_SUBNET_IPV4:-100.64.0.0/16}
export JOIN_SUBNET_IPV6=${JOIN_SUBNET_IPV6:-fd98::/64}
export TRANSIT_SWITCH_SUBNET_IPV4=${TRANSIT_SWITCH_SUBNET_IPV4:-100.88.0.0/16}
export TRANSIT_SWITCH_SUBNET_IPV6=${TRANSIT_SWITCH_SUBNET_IPV6:-fd97::/64}
export TRANSIT_SUBNET_IPV4=${TRANSIT_SUBNET_IPV4:-100.88.0.0/16}
export TRANSIT_SUBNET_IPV6=${TRANSIT_SUBNET_IPV6:-fd97::/64}
export METALLB_CLIENT_NET_SUBNET_IPV4=${METALLB_CLIENT_NET_SUBNET_IPV4:-172.22.0.0/16}
export METALLB_CLIENT_NET_SUBNET_IPV6=${METALLB_CLIENT_NET_SUBNET_IPV6:-fc00:f853:ccd:e792::/64}

Expand Down
12 changes: 6 additions & 6 deletions contrib/kind.sh
Original file line number Diff line number Diff line change
Expand Up @@ -121,7 +121,7 @@ echo "-npz | --nodes-per-zone If interconnect is enabled,
echo "-mtu Define the overlay mtu"
echo "--isolated Deploy with an isolated environment (no default gateway)"
echo "--delete Delete current cluster"
echo "--deploy Deploy ovn kubernetes without restarting kind"
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."
Expand Down Expand Up @@ -593,8 +593,8 @@ set_default_params() {
JOIN_SUBNET_IPV6=${JOIN_SUBNET_IPV6:-fd98::/64}
MASQUERADE_SUBNET_IPV4=${MASQUERADE_SUBNET_IPV4:-169.254.0.0/17}
MASQUERADE_SUBNET_IPV6=${MASQUERADE_SUBNET_IPV6:-fd69::/112}
TRANSIT_SWITCH_SUBNET_IPV4=${TRANSIT_SWITCH_SUBNET_IPV4:-100.88.0.0/16}
TRANSIT_SWITCH_SUBNET_IPV6=${TRANSIT_SWITCH_SUBNET_IPV6:-fd97::/64}
TRANSIT_SUBNET_IPV4=${TRANSIT_SUBNET_IPV4:-100.88.0.0/16}
TRANSIT_SUBNET_IPV6=${TRANSIT_SUBNET_IPV6:-fd97::/64}
METALLB_CLIENT_NET_SUBNET_IPV4=${METALLB_CLIENT_NET_SUBNET_IPV4:-172.22.0.0/16}
METALLB_CLIENT_NET_SUBNET_IPV6=${METALLB_CLIENT_NET_SUBNET_IPV6:-fc00:f853:ccd:e792::/64}
BGP_SERVER_NET_SUBNET_IPV4=${BGP_SERVER_NET_SUBNET_IPV4:-172.26.0.0/16}
Expand Down Expand Up @@ -631,7 +631,7 @@ set_default_params() {
OVN_HOST_NETWORK_NAMESPACE=${OVN_HOST_NETWORK_NAMESPACE:-ovn-host-network}
OVN_EGRESSIP_HEALTHCHECK_PORT=${OVN_EGRESSIP_HEALTHCHECK_PORT:-9107}
OCI_BIN=${KIND_EXPERIMENTAL_PROVIDER:-docker}
OVN_DEPLOY_PODS=${OVN_DEPLOY_PODS:-"ovnkube-zone-controller ovnkube-control-plane ovnkube-master ovnkube-node"}
OVN_DEPLOY_PODS=${OVN_DEPLOY_PODS:-"ovnkube-identity ovnkube-zone-controller ovnkube-control-plane ovnkube-master ovnkube-node"}
OVN_METRICS_SCALE_ENABLE=${OVN_METRICS_SCALE_ENABLE:-false}
OVN_ISOLATED=${OVN_ISOLATED:-false}
OVN_GATEWAY_OPTS=${OVN_GATEWAY_OPTS:-""}
Expand Down Expand Up @@ -914,8 +914,8 @@ create_ovn_kube_manifests() {
--v6-join-subnet="${JOIN_SUBNET_IPV6}" \
--v4-masquerade-subnet="${MASQUERADE_SUBNET_IPV4}" \
--v6-masquerade-subnet="${MASQUERADE_SUBNET_IPV6}" \
--v4-transit-switch-subnet="${TRANSIT_SWITCH_SUBNET_IPV4}" \
--v6-transit-switch-subnet="${TRANSIT_SWITCH_SUBNET_IPV6}" \
--v4-transit-subnet="${TRANSIT_SUBNET_IPV4}" \
--v6-transit-subnet="${TRANSIT_SUBNET_IPV6}" \
--ex-gw-network-interface="${OVN_EX_GW_NETWORK_INTERFACE}" \
--multi-network-enable="${ENABLE_MULTI_NET}" \
--network-segmentation-enable="${ENABLE_NETWORK_SEGMENTATION}" \
Expand Down
24 changes: 12 additions & 12 deletions dist/images/daemonset.sh
Original file line number Diff line number Diff line change
Expand Up @@ -79,8 +79,8 @@ OVN_V4_JOIN_SUBNET=""
OVN_V6_JOIN_SUBNET=""
OVN_V4_MASQUERADE_SUBNET=""
OVN_V6_MASQUERADE_SUBNET=""
OVN_V4_TRANSIT_SWITCH_SUBNET=""
OVN_V6_TRANSIT_SWITCH_SUBNET=""
OVN_V4_TRANSIT_SUBNET=""
OVN_V6_TRANSIT_SUBNET=""
OVN_NETFLOW_TARGETS=""
OVN_SFLOW_TARGETS=""
OVN_IPFIX_TARGETS=""
Expand Down Expand Up @@ -302,11 +302,11 @@ while [ "$1" != "" ]; do
--v6-masquerade-subnet)
OVN_V6_MASQUERADE_SUBNET=$VALUE
;;
--v4-transit-switch-subnet)
OVN_V4_TRANSIT_SWITCH_SUBNET=$VALUE
--v4-transit-subnet)
OVN_V4_TRANSIT_SUBNET=$VALUE
;;
--v6-transit-switch-subnet)
OVN_V6_TRANSIT_SWITCH_SUBNET=$VALUE
--v6-transit-subnet)
OVN_V6_TRANSIT_SUBNET=$VALUE
;;
--netflow-targets)
OVN_NETFLOW_TARGETS=$VALUE
Expand Down Expand Up @@ -536,10 +536,10 @@ ovn_v4_masquerade_subnet=${OVN_V4_MASQUERADE_SUBNET}
echo "ovn_v4_masquerade_subnet: ${ovn_v4_masquerade_subnet}"
ovn_v6_masquerade_subnet=${OVN_V6_MASQUERADE_SUBNET}
echo "ovn_v6_masquerade_subnet: ${ovn_v6_masquerade_subnet}"
ovn_v4_transit_switch_subnet=${OVN_V4_TRANSIT_SWITCH_SUBNET}
echo "ovn_v4_transit_switch_subnet: ${ovn_v4_transit_switch_subnet}"
ovn_v6_transit_switch_subnet=${OVN_V6_TRANSIT_SWITCH_SUBNET}
echo "ovn_v6_transit_switch_subnet: ${ovn_v6_transit_switch_subnet}"
ovn_v4_transit_subnet=${OVN_V4_TRANSIT_SUBNET}
echo "ovn_v4_transit_subnet: ${ovn_v4_transit_subnet}"
ovn_v6_transit_subnet=${OVN_V6_TRANSIT_SUBNET}
echo "ovn_v6_transit_subnet: ${ovn_v6_transit_subnet}"
ovn_netflow_targets=${OVN_NETFLOW_TARGETS}
echo "ovn_netflow_targets: ${ovn_netflow_targets}"
ovn_sflow_targets=${OVN_SFLOW_TARGETS}
Expand Down Expand Up @@ -842,8 +842,8 @@ ovn_image=${ovnkube_image} \
ovn_enable_multi_external_gateway=${ovn_enable_multi_external_gateway} \
ovn_enable_ovnkube_identity=${ovn_enable_ovnkube_identity} \
ovn_network_qos_enable=${ovn_network_qos_enable} \
ovn_v4_transit_switch_subnet=${ovn_v4_transit_switch_subnet} \
ovn_v6_transit_switch_subnet=${ovn_v6_transit_switch_subnet} \
ovn_v4_transit_subnet=${ovn_v4_transit_subnet} \
ovn_v6_transit_subnet=${ovn_v6_transit_subnet} \
ovn_enable_persistent_ips=${ovn_enable_persistent_ips} \
ovn_enable_dnsnameresolver=${ovn_enable_dnsnameresolver} \
ovn_observ_enable=${ovn_observ_enable} \
Expand Down
28 changes: 14 additions & 14 deletions dist/images/ovnkube.sh
Original file line number Diff line number Diff line change
Expand Up @@ -238,10 +238,10 @@ ovn_v6_join_subnet=${OVN_V6_JOIN_SUBNET:-}
ovn_v4_masquerade_subnet=${OVN_V4_MASQUERADE_SUBNET:-}
# OVN_V6_MASQUERADE_SUBNET - v6 masquerade subnet
ovn_v6_masquerade_subnet=${OVN_V6_MASQUERADE_SUBNET:-}
# OVN_V4_TRANSIT_SWITCH_SUBNET - v4 Transit switch subnet
ovn_v4_transit_switch_subnet=${OVN_V4_TRANSIT_SWITCH_SUBNET:-}
# OVN_V6_TRANSIT_SWITCH_SUBNET - v6 Transit switch subnet
ovn_v6_transit_switch_subnet=${OVN_V6_TRANSIT_SWITCH_SUBNET:-}
# OVN_V4_TRANSIT_SUBNET - v4 Transit subnet
ovn_v4_transit_subnet=${OVN_V4_TRANSIT_SUBNET:-}
# OVN_V6_TRANSIT_SUBNET - v6 Transit subnet
ovn_v6_transit_subnet=${OVN_V6_TRANSIT_SUBNET:-}
#OVN_REMOTE_PROBE_INTERVAL - ovn remote probe interval in ms (default 100000)
ovn_remote_probe_interval=${OVN_REMOTE_PROBE_INTERVAL:-100000}
#OVN_MONITOR_ALL - ovn-controller monitor all data in SB DB
Expand Down Expand Up @@ -2356,17 +2356,17 @@ ovn-cluster-manager() {
fi
echo "ovn_v6_masquerade_subnet_opt=${ovn_v6_masquerade_subnet_opt}"

ovn_v4_transit_switch_subnet_opt=
if [[ -n ${ovn_v4_transit_switch_subnet} ]]; then
ovn_v4_transit_switch_subnet_opt="--cluster-manager-v4-transit-switch-subnet=${ovn_v4_transit_switch_subnet}"
ovn_v4_transit_subnet_opt=
if [[ -n ${ovn_v4_transit_subnet} ]]; then
ovn_v4_transit_subnet_opt="--cluster-manager-v4-transit-subnet=${ovn_v4_transit_subnet}"
fi
echo "ovn_v4_transit_switch_subnet_opt=${ovn_v4_transit_switch_subnet}"
echo "ovn_v4_transit_subnet_opt=${ovn_v4_transit_subnet}"

ovn_v6_transit_switch_subnet_opt=
if [[ -n ${ovn_v6_transit_switch_subnet} ]]; then
ovn_v6_transit_switch_subnet_opt="--cluster-manager-v6-transit-switch-subnet=${ovn_v6_transit_switch_subnet}"
ovn_v6_transit_subnet_opt=
if [[ -n ${ovn_v6_transit_subnet} ]]; then
ovn_v6_transit_subnet_opt="--cluster-manager-v6-transit-subnet=${ovn_v6_transit_subnet}"
fi
echo "ovn_v6_transit_switch_subnet_opt=${ovn_v6_transit_switch_subnet}"
echo "ovn_v6_transit_subnet_opt=${ovn_v6_transit_subnet}"

multicast_enabled_flag=
if [[ ${ovn_multicast_enable} == "true" ]]; then
Expand Down Expand Up @@ -2476,8 +2476,8 @@ ovn-cluster-manager() {
${ovn_v4_masquerade_subnet_opt} \
${ovn_v6_join_subnet_opt} \
${ovn_v6_masquerade_subnet_opt} \
${ovn_v4_transit_switch_subnet_opt} \
${ovn_v6_transit_switch_subnet_opt} \
${ovn_v4_transit_subnet_opt} \
${ovn_v6_transit_subnet_opt} \
${network_qos_enabled_flag} \
${ovn_enable_dnsnameresolver_flag} \
--gateway-mode=${ovn_gateway_mode} \
Expand Down
4 changes: 2 additions & 2 deletions dist/templates/k8s.ovn.org_clusteruserdefinednetworks.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -145,7 +145,7 @@ spec:
description: |-
Lifecycle controls IP addresses management lifecycle.

The only allowed value is Persistent. When set, the IP addresses assigned by OVN Kubernetes will be persisted in an
The only allowed value is Persistent. When set, the IP addresses assigned by OVN-Kubernetes will be persisted in an
`ipamclaims.k8s.cni.cncf.io` object. These IP addresses will be reused by other pods if requested.
Only supported when mode is `Enabled`.
enum:
Expand Down Expand Up @@ -468,7 +468,7 @@ spec:
description: |-
Lifecycle controls IP addresses management lifecycle.

The only allowed value is Persistent. When set, the IP addresses assigned by OVN Kubernetes will be persisted in an
The only allowed value is Persistent. When set, the IP addresses assigned by OVN-Kubernetes will be persisted in an
`ipamclaims.k8s.cni.cncf.io` object. These IP addresses will be reused by other pods if requested.
Only supported when mode is `Enabled`.
enum:
Expand Down
2 changes: 1 addition & 1 deletion dist/templates/k8s.ovn.org_userdefinednetworks.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -93,7 +93,7 @@ spec:
description: |-
Lifecycle controls IP addresses management lifecycle.

The only allowed value is Persistent. When set, the IP addresses assigned by OVN Kubernetes will be persisted in an
The only allowed value is Persistent. When set, the IP addresses assigned by OVN-Kubernetes will be persisted in an
`ipamclaims.k8s.cni.cncf.io` object. These IP addresses will be reused by other pods if requested.
Only supported when mode is `Enabled`.
enum:
Expand Down
8 changes: 4 additions & 4 deletions dist/templates/ovnkube-control-plane.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -179,10 +179,10 @@ spec:
value: "{{ ovn_enable_interconnect }}"
- name: OVN_ENABLE_MULTI_EXTERNAL_GATEWAY
value: "{{ ovn_enable_multi_external_gateway }}"
- name: OVN_V4_TRANSIT_SWITCH_SUBNET
value: "{{ ovn_v4_transit_switch_subnet }}"
- name: OVN_V6_TRANSIT_SWITCH_SUBNET
value: "{{ ovn_v6_transit_switch_subnet }}"
- name: OVN_V4_TRANSIT_SUBNET
value: "{{ ovn_v4_transit_subnet }}"
- name: OVN_V6_TRANSIT_SUBNET
value: "{{ ovn_v6_transit_subnet }}"
- name: OVN_ENABLE_PERSISTENT_IPS
value: "{{ ovn_enable_persistent_ips }}"
- name: OVN_NETWORK_QOS_ENABLE
Expand Down
2 changes: 1 addition & 1 deletion docs/api-reference/userdefinednetwork-api-spec.md
Original file line number Diff line number Diff line change
Expand Up @@ -153,7 +153,7 @@ _Appears in:_
| Field | Description | Default | Validation |
| --- | --- | --- | --- |
| `mode` _[IPAMMode](#ipammode)_ | Mode controls how much of the IP configuration will be managed by OVN.<br />`Enabled` means OVN-Kubernetes will apply IP configuration to the SDN infrastructure and it will also assign IPs<br />from the selected subnet to the individual pods.<br />`Disabled` means OVN-Kubernetes will only assign MAC addresses and provide layer 2 communication, letting users<br />configure IP addresses for the pods.<br />`Disabled` is only available for Secondary networks.<br />By disabling IPAM, any Kubernetes features that rely on selecting pods by IP will no longer function<br />(such as network policy, services, etc). Additionally, IP port security will also be disabled for interfaces attached to this network.<br />Defaults to `Enabled`. | | Enum: [Enabled Disabled] <br /> |
| `lifecycle` _[NetworkIPAMLifecycle](#networkipamlifecycle)_ | Lifecycle controls IP addresses management lifecycle.<br /><br />The only allowed value is Persistent. When set, the IP addresses assigned by OVN Kubernetes will be persisted in an<br />`ipamclaims.k8s.cni.cncf.io` object. These IP addresses will be reused by other pods if requested.<br />Only supported when mode is `Enabled`. | | Enum: [Persistent] <br /> |
| `lifecycle` _[NetworkIPAMLifecycle](#networkipamlifecycle)_ | Lifecycle controls IP addresses management lifecycle.<br /><br />The only allowed value is Persistent. When set, the IP addresses assigned by OVN-Kubernetes will be persisted in an<br />`ipamclaims.k8s.cni.cncf.io` object. These IP addresses will be reused by other pods if requested.<br />Only supported when mode is `Enabled`. | | Enum: [Persistent] <br /> |


#### IPAMMode
Expand Down
Loading