Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
98 commits
Select commit Hold shift + click to select a range
c4788d0
fix: build ovn-kubernetes binaries inside the fedora image build
killianmuldoon Sep 2, 2025
103c7e3
refactor: don't panic in kind infra provider impl
booxter Oct 7, 2025
ad76f25
docs: Add backwards compatibility to OKEP template
dave-tucker Aug 15, 2025
8509eb8
Handle failed CloudPrivateIPConfig assignments on removed nodes
kyrtapz Nov 7, 2025
9763ce9
Retry EgressIP assignment in cloud if the IP is set in spec
kyrtapz Nov 7, 2025
7d5f148
fix: make -C dist/images
booxter Sep 30, 2025
e60e200
chore: Remove --disable-ovn-iface-id-ver
booxter Sep 29, 2025
d0401bd
contrib: fix IPv6 address handling in frr-k8s webhook check
pliurh Dec 1, 2025
f94d9e9
Merge pull request #5635 from booxter/dont-panic-in-doesContainerName…
trozet Dec 5, 2025
6a39bc5
Merge pull request #5605 from booxter/make-target-image
trozet Dec 5, 2025
175a3d3
Merge pull request #5551 from killianmuldoon/pr-fix-arm-build
trozet Dec 5, 2025
2efd8e1
Bump OVN to 25.09.2-2
kyrtapz Dec 5, 2025
ec89613
allocator, persistentips: update IPAM claim status for both success a…
RamLavi Nov 30, 2025
8832169
test/e2e/kubevirt: Check IPAMClaim status update
RamLavi Oct 23, 2025
ee66f1c
fix: fix github actions with correct image build args
killianmuldoon Dec 8, 2025
2c84d47
Merge pull request #5784 from kyrtapz/bump_ovn_25.09.2-1
trozet Dec 8, 2025
9b80641
Merge pull request #5786 from killianmuldoon/pr-fix-build
trozet Dec 8, 2025
a534654
Merge pull request #5683 from RamLavi/add_ipamclaim_cond
kyrtapz Dec 8, 2025
624e1c0
Merge pull request #5487 from dave-tucker/backwards-compat
tssurya Dec 10, 2025
754c62d
fix(kubevirt): Use pod network subnet gateway IP for DHCP router option
qinqon Dec 3, 2025
1b74b4e
[CI] use fixed host network port range for ANP tests
npinaeva Dec 10, 2025
1ba89d6
Merge pull request #5773 from qinqon/kubevirt-use-subnet-gateway-for-…
npinaeva Dec 10, 2025
84a57b8
ci: Allow build-go.sh to work in git worktrees inside containers
pliurh Dec 10, 2025
3f737ff
BGP docs: remove references of CUDN route import in non VRF-Lite config
jcaamano Dec 3, 2025
d3a6467
BGP docs: add some illustrative examples to implementaiton details
jcaamano Dec 4, 2025
1df3494
BGP docs: add additional details about CUDN isolation
jcaamano Dec 4, 2025
424a78f
BGP docs: add troubleshooting information
jcaamano Dec 4, 2025
6d83b2b
Merge pull request #5599 from booxter/disable-ovn-iface-id-ver
npinaeva Dec 11, 2025
03b69d9
Fix MAC conflict detection configuration
kyrtapz Dec 10, 2025
4568650
Adds EVPN enhancement
trozet Feb 26, 2025
fba0fef
ovs-node: Delete transient ports on startup
booxter Oct 2, 2025
fdcddff
tests: Test transient port behavior on node reboot
booxter Oct 6, 2025
de25970
ci: skip serial tests from control-plane suite
booxter Oct 8, 2025
43b6dd3
Merge pull request #5649 from kyrtapz/handle_failed_cpic
kyrtapz Dec 15, 2025
bc9eaca
ci: Add serial lane
booxter Oct 9, 2025
76818e7
tests: wait for node ready after restarting after shutdown
booxter Nov 25, 2025
0e4ddac
refactor: use getContainerState in doesContainerNameExist
booxter Dec 12, 2025
ffed158
tests: enforce at least one ip family on bridge when extracting families
booxter Dec 12, 2025
73261f5
Add enable-network-connect feature gate
tssurya Oct 5, 2025
b6d15ec
Add IsNetworkConnectEnabled() util
tssurya Oct 5, 2025
c3ec1c3
Add RBAC for cluster-manager to access CNC
tssurya Oct 5, 2025
b6f4e55
Add CNC watchfactory, ovnclient, informer for CM
tssurya Oct 5, 2025
5345609
CM: Add network-connect controller plumbing
tssurya Oct 5, 2025
7896a22
Add reconcileNAD (React to network add, update, delete events)
tssurya Nov 28, 2025
24eec75
reconcileClusterNetworkConnect: STEP3: Discover the selected UDNs and…
tssurya Oct 7, 2025
8551bb6
Add HybridConnectSubnetAllocator
tssurya Nov 30, 2025
7a43618
Release layer3 pool block if corresponding layer2 networks get released
tssurya Nov 30, 2025
a33a980
STEP4.1: Allocate/Release network subnets
tssurya Nov 30, 2025
a11fc14
NetworkConnectSubnetAnnotation: STEP4.2: Annotate allocations on CNC
tssurya Oct 15, 2025
032a7ae
STEP2: Allocate && Annotate tunnel-ids for connect router
tssurya Oct 27, 2025
4732448
Add reconcileNamespace (Reacts to namespace label update events)
tssurya Dec 2, 2025
b0e500e
Add unit tests for network-connect controller components
tssurya Nov 30, 2025
fd70908
Add unit test for full CNC controller in integrated fashion
tssurya Dec 2, 2025
37c1254
Add unit test for CNC annotation update utils
tssurya Nov 30, 2025
69fc5c0
e2e: comprehensive ClusterNetworkConnect annotation test coverage
tssurya Dec 2, 2025
d79ec0e
Enable ClusterNetworkConnect e2e's in CI
tssurya Dec 3, 2025
fb7274e
Make NewHybridConnectSubnetAllocator also initialise the ranges
tssurya Dec 10, 2025
cba8cd8
Add initialSync (cache sync) logic for restarts
tssurya Dec 3, 2025
33f8d2e
Add getPrimaryNADForNamespace util
tssurya Dec 10, 2025
1dc022e
Ignore NADs not present in namespaces with UDN label
tssurya Dec 11, 2025
19dba83
Address coderabbitai review comments: fix nil pointer dereference
tssurya Dec 10, 2025
d2fba33
Run initTunnelKeysAllocator for CNCs only if feature flag is enabled
tssurya Dec 10, 2025
6ac4ef3
Fix UDN deletion race between network-manager cache and CNC reconcile
tssurya Dec 12, 2025
f5fa819
Add UT to ensure we process healthy networks and retry it for the unh…
tssurya Dec 12, 2025
3d27a1e
Bugfix: Add CEL to ensure dualstack connectsubnets are of same block …
tssurya Dec 12, 2025
7ab9148
e2e: fix util function isCIDRIPFamilySupported()
Dec 15, 2025
c23398a
Merge pull request #5624 from booxter/master
trozet Dec 15, 2025
fa48281
docs: Add Member role to governance
pliurh Aug 15, 2025
b64fe72
Fix markdown unordered list style lint error in governance
pliurh Dec 16, 2025
4c2d639
Fix double-close channel panic in network controller Stop() method
kyrtapz Dec 8, 2025
6f6bffb
Merge pull request #5484 from pliurh/contributing
tssurya Dec 16, 2025
7e1f233
E2E: Configure and collect coredumps
kyrtapz Dec 4, 2025
ff08c94
Skip bgpd, zebra and mgmtd crashes
kyrtapz Dec 5, 2025
23de91c
fail e2e targets if coredumps are found
kyrtapz Dec 16, 2025
815eeb3
Merge pull request #5707 from tssurya/connecting-udns-cm-controller
npinaeva Dec 17, 2025
3371d25
persistentIPs: Deprecate annotation 'k8s.ovn.org/primary-udn-ipamclaim'
ormergi Jul 7, 2025
e712722
Merge pull request #5795 from kyrtapz/mac_conflict_detection_fix
tssurya Dec 17, 2025
27fb397
Merge pull request #5804 from l8huang/fix-mh-e2e
girishmg Dec 17, 2025
f1cf2ef
add ability to skip tests that require root
jluhrsen Dec 18, 2025
e04469d
use pipefail in unit test script
jluhrsen Dec 18, 2025
6db529e
no-overlay: Introduce no-overlay mode for the CUDN API
pliurh Oct 10, 2025
6e4c56b
no-overlay: Add e2e CUDN validation tests for no-overlay mode
pliurh Dec 15, 2025
975c1d5
docs: Update CUDN CRD API reference
pliurh Dec 17, 2025
c44de13
Remove SetTaintOnNode from mock
pliurh Dec 18, 2025
2463f13
Merge pull request #5812 from pliurh/mock
tssurya Dec 18, 2025
186427a
Merge pull request #5644 from pliurh/no-overlay-api
tssurya Dec 18, 2025
deaf3c5
Merge pull request #5764 from kyrtapz/capture_segfaults
tssurya Dec 18, 2025
a95ff83
Fix jinjate yaml templating
tssurya Dec 18, 2025
a14b613
Merge pull request #5814 from tssurya/fix-jinjate-templating
kyrtapz Dec 18, 2025
824ac61
Merge pull request #5356 from ormergi/deprecate-ipam-claim-ref-annot
kyrtapz Dec 18, 2025
0206549
Merge pull request #5793 from npinaeva/conformance-fix
tssurya Dec 18, 2025
e095256
Merge pull request #5794 from pliurh/ci_fix
tssurya Dec 18, 2025
2a5c088
Merge pull request #5811 from jluhrsen/mark-noroot-uts
tssurya Dec 18, 2025
42e3b65
E2E,networksegmentation: Write test yamls to /tmp
pperiyasamy Dec 9, 2025
867eabd
E2E: Refactor provider and deployment config initialization
pperiyasamy Dec 9, 2025
08bd51c
E2E,networksegmentation: Use e2e framework helper for pod readiness
pperiyasamy Dec 16, 2025
52eee07
E2E, networksegmentation: Use 172.16.0.0/16 for UDN tests to avoid co…
jluhrsen Dec 18, 2025
dcb1102
Merge remote-tracking branch 'upstream/master' into d/s-merge-12-19-2025
Dec 19, 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: 4 additions & 2 deletions .github/workflows/docker.yml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,7 @@ env:
REPOSITORY: ovn-kubernetes
FEDORA_IMAGE_NAME: ovn-kube-fedora
UBUNTU_IMAGE_NAME: ovn-kube-ubuntu

BUILDER_IMAGE: quay.io/lib/golang:1.24
jobs:
build:
name: Build Images
Expand Down Expand Up @@ -84,9 +84,11 @@ jobs:
uses: docker/build-push-action@v5
with:
builder: ${{ steps.buildx.outputs.name }}
context: ./dist/images
context: .
file: ./dist/images/Dockerfile.fedora
push: true
build-args: |
BUILDER_IMAGE=${{ env.BUILDER_IMAGE }}
platforms: linux/amd64,linux/arm64
tags: ${{ steps.meta-fedora.outputs.tags }}
labels: ${{ steps.meta-fedora.outputs.labels }}
Expand Down
14 changes: 11 additions & 3 deletions .github/workflows/test.yml
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,9 @@ env:
KIND_CLUSTER_NAME: ovn
KIND_INSTALL_INGRESS: true
KIND_ALLOW_SYSTEM_WRITES: true
# This skips tests tagged as Serial
# Current Serial tests are not relevant for OVN
ENABLE_COREDUMPS: true
# This skips tests tagged as Serial for most lanes
# Serial tests are run in a dedicated lane
PARALLEL: true

# This must be a directory
Expand Down Expand Up @@ -436,7 +437,7 @@ jobs:
fail-fast: false
matrix:
# Valid options are:
# target: ["shard-conformance", "control-plane", "multi-homing", "multi-node-zones", "node-ip-mac-migration", "compact-mode"]
# target: ["shard-conformance", "control-plane", "multi-homing", "multi-node-zones", "node-ip-mac-migration", "compact-mode", "serial"]
# shard-conformance: hybrid-overlay = multicast-enable = emptylb-enable = false
# control-plane: hybrid-overlay = multicast-enable = emptylb-enable = true
# ha: ["HA", "noHA"]
Expand Down Expand Up @@ -490,6 +491,7 @@ jobs:
- {"target": "bgp-loose-isolation", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "dualstack", "disable-snat-multiple-gws": "snatGW", "second-bridge": "1br", "ic": "ic-single-node-zones", "routeadvertisements": "advertise-default", "network-segmentation": "enable-network-segmentation", "advertised-udn-isolation-mode": "loose"}
- {"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"}
- {"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"}
- {"target": "serial", "ha": "noHA", "gateway-mode": "shared", "ipfamily": "ipv4", "disable-snat-multiple-gws": "snatGW", "second-bridge": "1br", "ic": "ic-single-node-zones"}
needs: [ build-pr ]
env:
JOB_NAME: "${{ matrix.target }}-${{ matrix.ha }}-${{ matrix.gateway-mode }}-${{ matrix.ipfamily }}-${{ matrix.disable-snat-multiple-gws }}-${{ matrix.second-bridge }}-${{ matrix.ic }}"
Expand Down Expand Up @@ -519,7 +521,10 @@ jobs:
ENABLE_ROUTE_ADVERTISEMENTS: "${{ matrix.routeadvertisements != '' }}"
ADVERTISE_DEFAULT_NETWORK: "${{ matrix.routeadvertisements == 'advertise-default' }}"
ENABLE_PRE_CONF_UDN_ADDR: "${{ matrix.ic == 'ic-single-node-zones' && (matrix.target == 'network-segmentation' || matrix.network-segmentation == 'enable-network-segmentation') }}"
ENABLE_NETWORK_CONNECT: "${{ matrix.target == 'network-segmentation' }}"
ADVERTISED_UDN_ISOLATION_MODE: "${{ matrix.advertised-udn-isolation-mode }}"
# Override PARALLEL=true for Serial tests target to run Serial tests
PARALLEL: "${{ matrix.target != 'serial' }}"
OVN_UNPRIVILEGED_MODE: "${{ matrix.cni-mode == 'unprivileged' }}"
MULTI_POD_SUBNET: true
steps:
Expand Down Expand Up @@ -676,6 +681,9 @@ jobs:
make -C test control-plane WHAT="ClusterNetworkConnect"
elif [ "${{ matrix.target }}" == "bgp" ] || [ "${{ matrix.target }}" == "bgp-loose-isolation" ]; then
make -C test control-plane
elif [ "${{ matrix.target }}" == "serial" ]; then
# Run only Serial tests with ginkgo focus
make -C test control-plane WHAT=Serial
elif [ "${{ matrix.target }}" == "tools" ]; then
make -C go-controller build
make -C test tools
Expand Down
81 changes: 62 additions & 19 deletions GOVERNANCE.md
Original file line number Diff line number Diff line change
@@ -1,38 +1,41 @@
# ovn-kubernetes Project Governance

The ovn-kubernetes project is dedicated to creating a robust Kubernetes Networking platform built from the ground up by leveraging Open vSwitch (OVS) as the data plane, and Open Virtual Network (OVN) as the SDN Controller. The project focuses strictly on enhancing networking for the Kubernetes platform and includes a wide variety of features that are critical to enterprise and telco users.
The ovn-kubernetes project is dedicated to creating a robust Kubernetes Networking platform built from the ground up by leveraging Open vSwitch (OVS) as the data plane, and Open Virtual Network (OVN) as the SDN Controller. The project focuses strictly on enhancing networking for the Kubernetes platform and includes a wide variety of features that are critical to enterprise and telco users.

This governance explains how the project is run.

- [Values](#values)
- [Maintainers](#maintainers)
- [Becoming a Maintainer](#becoming-a-maintainer)
- [Becoming a Maintainer](#becoming-a-maintainer)
- [Removing a Maintainer](#removing-a-maintainer)
- [Members](#members)
- [Becoming a Member](#becoming-a-member)
- [Removing a Member](#removing-a-member)
- [Meetings](#meetings)
- [CNCF Resources](#cncf-resources)
- [Code of Conduct Enforcement](#code-of-conduct)
- [Code of Conduct](#code-of-conduct)
- [Security Response Team](#security-response-team)
- [Voting](#voting)
- [Modifications](#modifying-this-charter)
- [Modifying this Charter](#modifying-this-charter)

## Values

The ovn-kubernetes and its leadership embrace the following values:

* Openness: Communication and decision-making happens in the open and is discoverable for future
- Openness: Communication and decision-making happens in the open and is discoverable for future
reference. As much as possible, all discussions and work take place in public
forums and open repositories.

* Fairness: All stakeholders have the opportunity to provide feedback and submit
- Fairness: All stakeholders have the opportunity to provide feedback and submit
contributions, which will be considered on their merits.

* Community over Product or Company: Sustaining and growing our community takes
- Community over Product or Company: Sustaining and growing our community takes
priority over shipping code or sponsors' organizational goals. Each
contributor participates in the project as an individual.

* Inclusivity: We innovate through different perspectives and skill sets, which
- Inclusivity: We innovate through different perspectives and skill sets, which
can only be accomplished in a welcoming and respectful environment.

* Participation: Responsibilities within the project are earned through
- Participation: Responsibilities within the project are earned through
participation, and there is a clear path up the contributor ladder into leadership
positions.

Expand Down Expand Up @@ -60,15 +63,15 @@ is the governing body for the project.

To become a Maintainer you need to demonstrate the following:

* commitment to the project:
* participate in discussions, contributions, code and documentation reviews
for 10 months or more,
* perform reviews for 10 non-trivial pull requests,
* contribute 15 non-trivial pull requests and have them merged,
* ability to write quality code and/or documentation,
* ability to collaborate with the team,
* understanding of how the team works (policies, processes for testing and code review, etc),
* understanding of the project's code base and coding and documentation style.
- commitment to the project:
- participate in discussions, contributions, code and documentation reviews
for 10 months or more,
- perform reviews for 10 non-trivial pull requests,
- contribute 15 non-trivial pull requests and have them merged,
- ability to write quality code and/or documentation,
- ability to collaborate with the team,
- understanding of how the team works (policies, processes for testing and code review, etc),
- understanding of the project's code base and coding and documentation style.

A new Maintainer must be proposed by an existing maintainer by sending a message to the
[developer mailing list](https://groups.google.com/g/ovn-kubernetes). A simple majority vote of existing Maintainers
Expand All @@ -94,6 +97,46 @@ Depending on the reason for removal, a Maintainer may be converted to Emeritus
status. Emeritus Maintainers will still be consulted on some project matters,
and can be rapidly returned to Maintainer status if their availability changes.

## Members

Members are active contributors who have shown a commitment to the project. They
have privileges to review pull requests and are part of the
`ovn-kubernetes/ovn-kubernetes-members` GitHub team, which makes them eligible
for automatic PR review assignments. Members are not Maintainers, but they are
expected to contribute to the project and collaborate with the team.

### Becoming a Member

To become a Member, you need to demonstrate the following:
- commitment to the project:
- participate in discussions, contributions, code and documentation reviews
for 3 months or more,
- perform reviews for 5 non-trivial pull requests,
- contribute 10 non-trivial pull requests and have them merged,
- ability to write quality code and/or documentation,
- ability to collaborate with the team (e.g., participate in project meetings,
join discussion in the CNCF slack channel, etc.),
- understanding of how the team works (policies, processes for testing and
code review, etc),
- understanding of the project's code base and coding and documentation style.

A new Member must be proposed by an existing maintainer by sending a message to
the developer mailing list. The application is approved with two affirmative
votes from current maintainers.

### Removing a Member

Members may resign at any time.

Members may also be removed after being inactive for a period of 6 months or
more, for failure to fulfill their responsibilities, or for violating the Code
of Conduct. A Member may be removed at any time by a simple majority vote of the
maintainers.

Members who are consistently unresponsive to assigned PR reviews may be
contacted by Maintainers to discuss their availability and commitment. If the
pattern of non-responsiveness continues, the Member may be removed.

## Meetings

Time zones permitting, Maintainers are expected to participate in the public
Expand Down
31 changes: 30 additions & 1 deletion contrib/kind-common
Original file line number Diff line number Diff line change
Expand Up @@ -857,7 +857,10 @@ install_ffr_k8s() {
echo "Attempting to reach frr-k8s webhook"
kind export kubeconfig --name ovn
while true; do
$OCI_BIN exec ovn-control-plane curl -ksS --connect-timeout 0.1 https://$(kubectl get svc -n frr-k8s-system frr-k8s-webhook-service -o jsonpath='{.spec.clusterIP}')
CLUSTER_IP=\$(kubectl get svc -n frr-k8s-system frr-k8s-webhook-service -o jsonpath='{.spec.clusterIP}')
# Wrap IPv6 addresses in brackets for URL syntax
[[ \${CLUSTER_IP} =~ : ]] && CLUSTER_IP="[\${CLUSTER_IP}]"
$OCI_BIN exec ovn-control-plane curl -ksS --connect-timeout 0.1 https://\${CLUSTER_IP}
[ \$? -eq 0 ] && exit 0
echo "Couldn't reach frr-k8s webhook, trying in 1s..."
sleep 1s
Expand Down Expand Up @@ -916,3 +919,29 @@ interconnect_arg_check() {
echo "INFO: Interconnect mode is now the default mode, you do not need to use pass -ic or --enable-interconnect anymore"
fi
}

setup_coredumps() {
# Setup core dump collection
#
# Core dumps will be saved on the HOST at /tmp/kind/logs/coredumps (not inside containers)
# because kernel.core_pattern is a kernel-level setting shared across all containers.
#
# - Using a pipe instead of a file path avoids needing to mount
# /tmp/kind/logs/coredumps into every container that might crash
# - The pipe executes in the host's namespace, so /tmp/kind/logs/coredumps
# automatically refers to the host path
#
# Location: /tmp/kind/logs is used to ensure coredumps are exported in CI
# Use container exec to avoid asking for root permissions

mkdir -p "/tmp/kind/logs/coredumps"
ulimit -c unlimited
for node in $(kind get nodes --name "${KIND_CLUSTER_NAME}"); do
# Core dump filename pattern variables:
# %P - global PID
# %e - executable filename
# %h - hostname (container hostname)
# %s - signal number that caused dump
${OCI_BIN} exec "$node" sysctl -w kernel.core_pattern="|/bin/dd of=/tmp/kind/logs/coredumps/core.%P.%e.%h.%s bs=1M status=none"
done
}
31 changes: 17 additions & 14 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 ENABLE_NETWORK_CONNECT=${ENABLE_NETWORK_CONNECT:-false}
export ENABLE_PRE_CONF_UDN_ADDR=${ENABLE_PRE_CONF_UDN_ADDR:-false}
export OVN_NETWORK_QOS_ENABLE=${OVN_NETWORK_QOS_ENABLE:-false}
export KIND_NUM_WORKER=${KIND_NUM_WORKER:-2}
Expand Down Expand Up @@ -88,6 +89,7 @@ set_default_params() {

export OVN_ENABLE_DNSNAMERESOLVER=${OVN_ENABLE_DNSNAMERESOLVER:-false}
export MULTI_POD_SUBNET=${MULTI_POD_SUBNET:-false}
export ENABLE_COREDUMPS=${ENABLE_COREDUMPS:-false}
}

usage() {
Expand All @@ -104,12 +106,14 @@ usage() {
echo " [ -ikv | --install-kubevirt ]"
echo " [ -mne | --multi-network-enable ]"
echo " [ -nse | --network-segmentation-enable ]"
echo " [ -nce | --network-connect-enable ]"
echo " [ -uae | --preconfigured-udn-addresses-enable ]"
echo " [ -nqe | --network-qos-enable ]"
echo " [ -wk | --num-workers <num> ]"
echo " [ -ic | --enable-interconnect]"
echo " [ -npz | --node-per-zone ]"
echo " [ -cn | --cluster-name ]"
echo " [ --enable-coredumps ]"
echo " [ -h ]"
echo ""
echo "--delete Delete current cluster"
Expand All @@ -127,11 +131,13 @@ 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 "-nce | --network-connect-enable Enable network connect (requires network segmentation). DEFAULT: Disabled"
echo "-uae | --preconfigured-udn-addresses-enable Enable connecting workloads with preconfigured network to user-defined networks. 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"
echo "--enable-coredumps Enable coredump collection on kind nodes. DEFAULT: Disabled"
echo "-dns | --enable-dnsnameresolver Enable DNSNameResolver for resolving the DNS names used in the DNS rules of EgressFirewall."
echo "-ce | --enable-central Deploy with OVN Central (Legacy Architecture)"
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."
Expand Down Expand Up @@ -176,6 +182,8 @@ parse_args() {
;;
-nse | --network-segmentation-enable) ENABLE_NETWORK_SEGMENTATION=true
;;
-nce | --network-connect-enable ) ENABLE_NETWORK_CONNECT=true
;;
-uae | --preconfigured-udn-addresses-enable) ENABLE_PRE_CONF_UDN_ADDR=true
;;
-nqe | --network-qos-enable ) OVN_NETWORK_QOS_ENABLE=true
Expand Down Expand Up @@ -214,6 +222,8 @@ parse_args() {
;;
-mps| --multi-pod-subnet ) MULTI_POD_SUBNET=true
;;
--enable-coredumps ) ENABLE_COREDUMPS=true
;;
* ) usage
exit 1
esac
Expand Down Expand Up @@ -244,6 +254,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 "ENABLE_NETWORK_CONNECT = $ENABLE_NETWORK_CONNECT"
echo "ENABLE_PRE_CONF_UDN_ADDR = $ENABLE_PRE_CONF_UDN_ADDR"
echo "OVN_NETWORK_QOS_ENABLE = $OVN_NETWORK_QOS_ENABLE"
echo "OVN_IMAGE = $OVN_IMAGE"
Expand Down Expand Up @@ -295,22 +306,9 @@ build_ovn_image() {
return
fi

# Build ovn image
pushd ${DIR}/../go-controller
make
popd

# Build ovn kube image
pushd ${DIR}/../dist/images
# Find all built executables, but ignore the 'windows' directory if it exists
find ../../go-controller/_output/go/bin/ -maxdepth 1 -type f -exec cp -f {} . \;
echo "ref: $(git rev-parse --symbolic-full-name HEAD) commit: $(git rev-parse HEAD)" > git_info
$OCI_BIN build \
--build-arg http_proxy="$http_proxy" \
--build-arg https_proxy="$https_proxy" \
--network=host \
-t "${OVN_IMAGE}" \
-f Dockerfile.fedora .
make fedora-image
popd
}

Expand Down Expand Up @@ -461,12 +459,14 @@ helm install ovn-kubernetes . -f "${value_file}" \
--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.enableNetworkSegmentation=$(if [ "${ENABLE_NETWORK_SEGMENTATION}" == "true" ]; then echo "true"; else echo "false"; fi) \
--set global.enableNetworkConnect=$(if [ "${ENABLE_NETWORK_CONNECT}" == "true" ]; then echo "true"; else echo "false"; fi) \
--set global.enablePreconfiguredUDNAddresses=$(if [ "${ENABLE_PRE_CONF_UDN_ADDR}" == "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.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) \
--set global.enableCoredumps=$(if [ "${ENABLE_COREDUMPS}" == "true" ]; then echo "true"; else echo "false"; fi) \
${ovnkube_db_options}
EOF
)
Expand Down Expand Up @@ -495,6 +495,9 @@ print_params
helm_prereqs
build_ovn_image
create_kind_cluster
if [ "$ENABLE_COREDUMPS" == true ]; then
setup_coredumps
fi
detect_apiserver_url
docker_disable_ipv6
coredns_patch
Expand Down
Loading