Skip to content

Commit 22e3796

Browse files
Merge branch 'master' into update_kind_deploy_docs
2 parents ee962e5 + 99fecd7 commit 22e3796

File tree

346 files changed

+3159
-1064
lines changed

Some content is hidden

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

346 files changed

+3159
-1064
lines changed

.github/workflows/test.yml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -387,6 +387,7 @@ jobs:
387387
uses: actions/checkout@v4
388388

389389
- name: Runner Diagnostics
390+
if: always()
390391
uses: ./.github/actions/diagnostics
391392

392393
- name: ovn upgrade
@@ -395,13 +396,15 @@ jobs:
395396
make -C test upgrade-ovn
396397
397398
- name: Runner Diagnostics
399+
if: always()
398400
uses: ./.github/actions/diagnostics
399401

400402
- name: Run E2E shard-conformance
401403
run: |
402404
make -C test shard-conformance
403405
404406
- name: Runner Diagnostics
407+
if: always()
405408
uses: ./.github/actions/diagnostics
406409

407410
- name: Export kind logs
@@ -634,6 +637,7 @@ jobs:
634637
run: make -C test traffic-flow-tests WHAT="setup"
635638

636639
- name: Runner Diagnostics
640+
if: always()
637641
uses: ./.github/actions/diagnostics
638642

639643
- name: Run Tests
@@ -687,6 +691,7 @@ jobs:
687691
fi
688692
689693
- name: Runner Diagnostics
694+
if: always()
690695
uses: ./.github/actions/diagnostics
691696

692697
- name: Export kind logs
@@ -799,20 +804,23 @@ jobs:
799804
./contrib/kind-dual-stack-conversion.sh
800805
801806
- name: Runner Diagnostics
807+
if: always()
802808
uses: ./.github/actions/diagnostics
803809

804810
- name: Run Dual-Stack Tests
805811
run: |
806812
make -C test shard-test WHAT="Networking Granular Checks\|DualStack"
807813
808814
- name: Runner Diagnostics
815+
if: always()
809816
uses: ./.github/actions/diagnostics
810817

811818
- name: Run Dual-Stack Control-Plane Tests
812819
run: |
813820
make -C test control-plane WHAT="DualStack"
814821
815822
- name: Runner Diagnostics
823+
if: always()
816824
uses: ./.github/actions/diagnostics
817825

818826
- name: Export kind logs

contrib/kind-common

Lines changed: 40 additions & 40 deletions
Original file line numberDiff line numberDiff line change
@@ -174,16 +174,16 @@ EOF
174174
# Override GOBIN until https://github.com/metallb/metallb/issues/2218 is fixed.
175175
GOBIN="" inv dev-env -n ovn -b frr -p bgp -i "${ip_family}"
176176

177-
docker network rm -f clientnet
178-
docker network create --subnet="${METALLB_CLIENT_NET_SUBNET_IPV4}" ${ipv6_network} --driver bridge clientnet
179-
docker network connect clientnet frr
177+
$OCI_BIN network rm -f clientnet
178+
$OCI_BIN network create --subnet="${METALLB_CLIENT_NET_SUBNET_IPV4}" ${ipv6_network} --driver bridge clientnet
179+
$OCI_BIN network connect clientnet frr
180180
if [ "$PLATFORM_IPV6_SUPPORT" == true ]; then
181181
# Enable IPv6 forwarding in FRR
182-
docker exec frr sysctl -w net.ipv6.conf.all.forwarding=1
182+
$OCI_BIN exec frr sysctl -w net.ipv6.conf.all.forwarding=1
183183
fi
184184
# Note: this image let's us use it also for creating load balancer backends that can send big packets
185-
docker rm -f lbclient
186-
docker run --cap-add NET_ADMIN --user 0 -d --network clientnet --rm --name lbclient quay.io/itssurya/dev-images:metallb-lbservice
185+
$OCI_BIN rm -f lbclient
186+
$OCI_BIN run --cap-add NET_ADMIN --user 0 -d --network clientnet --rm --name lbclient quay.io/itssurya/dev-images:metallb-lbservice
187187
popd
188188
delete_metallb_dir
189189

@@ -197,18 +197,18 @@ EOF
197197
kubectl label node "$n" node.kubernetes.io/exclude-from-external-load-balancers-
198198
done
199199

200-
kind_network_v4=$(docker inspect -f '{{index .NetworkSettings.Networks "kind" "IPAddress"}}' frr)
200+
kind_network_v4=$($OCI_BIN inspect -f '{{.NetworkSettings.Networks.kind.IPAddress}}' frr)
201201
echo "FRR kind network IPv4: ${kind_network_v4}"
202-
kind_network_v6=$(docker inspect -f '{{index .NetworkSettings.Networks "kind" "GlobalIPv6Address"}}' frr)
202+
kind_network_v6=$($OCI_BIN inspect -f '{{.NetworkSettings.Networks.kind.GlobalIPv6Address}}' frr)
203203
echo "FRR kind network IPv6: ${kind_network_v6}"
204204
local client_network_v4 client_network_v6
205-
client_network_v4=$(docker inspect -f '{{index .NetworkSettings.Networks "clientnet" "IPAddress"}}' frr)
205+
client_network_v4=$($OCI_BIN inspect -f '{{.NetworkSettings.Networks.clientnet.IPAddress}}' frr)
206206
echo "FRR client network IPv4: ${client_network_v4}"
207-
client_network_v6=$(docker inspect -f '{{index .NetworkSettings.Networks "clientnet" "GlobalIPv6Address"}}' frr)
207+
client_network_v6=$($OCI_BIN inspect -f '{{.NetworkSettings.Networks.clientnet.GlobalIPv6Address}}' frr)
208208
echo "FRR client network IPv6: ${client_network_v6}"
209209

210210
local client_subnets
211-
client_subnets=$(docker network inspect clientnet -f '{{range .IPAM.Config}}{{.Subnet}}#{{end}}')
211+
client_subnets=$($OCI_BIN network inspect clientnet -f '{{range .IPAM.Config}}{{.Subnet}}#{{end}}')
212212
echo "${client_subnets}"
213213
local client_subnets_v4 client_subnets_v6
214214
client_subnets_v4=$(echo "${client_subnets}" | cut -d '#' -f 1)
@@ -219,21 +219,21 @@ EOF
219219
KIND_NODES=$(kind_get_nodes)
220220
for n in ${KIND_NODES}; do
221221
if [ "$PLATFORM_IPV4_SUPPORT" == true ]; then
222-
docker exec "${n}" ip route add "${client_subnets_v4}" via "${kind_network_v4}"
222+
$OCI_BIN exec "${n}" ip route add "${client_subnets_v4}" via "${kind_network_v4}"
223223
fi
224224
if [ "$PLATFORM_IPV6_SUPPORT" == true ]; then
225-
docker exec "${n}" ip -6 route add "${client_subnets_v6}" via "${kind_network_v6}"
225+
$OCI_BIN exec "${n}" ip -6 route add "${client_subnets_v6}" via "${kind_network_v6}"
226226
fi
227227
done
228228

229229
# for now, we only run one test with metalLB load balancer for which this
230230
# one svcVIP (192.168.10.0/fc00:f853:ccd:e799::) is more than enough since at a time we will only
231231
# have one load balancer service
232232
if [ "$PLATFORM_IPV4_SUPPORT" == true ]; then
233-
docker exec lbclient ip route add 192.168.10.0 via "${client_network_v4}" dev eth0
233+
$OCI_BIN exec lbclient ip route add 192.168.10.0 via "${client_network_v4}" dev eth0
234234
fi
235235
if [ "$PLATFORM_IPV6_SUPPORT" == true ]; then
236-
docker exec lbclient ip -6 route add fc00:f853:ccd:e799:: via "${client_network_v6}" dev eth0
236+
$OCI_BIN exec lbclient ip -6 route add fc00:f853:ccd:e799:: via "${client_network_v6}" dev eth0
237237
fi
238238
sleep 30
239239
}
@@ -254,14 +254,14 @@ install_plugins() {
254254
}
255255

256256
destroy_metallb() {
257-
if docker ps --format '{{.Names}}' | grep -Eq '^lbclient$'; then
258-
docker stop lbclient
257+
if $OCI_BIN ps --format '{{.Names}}' | grep -Eq '^lbclient$'; then
258+
$OCI_BIN stop lbclient
259259
fi
260-
if docker ps --format '{{.Names}}' | grep -Eq '^frr$'; then
261-
docker stop frr
260+
if $OCI_BIN ps --format '{{.Names}}' | grep -Eq '^frr$'; then
261+
$OCI_BIN stop frr
262262
fi
263-
if docker network ls --format '{{.Name}}' | grep -q '^clientnet$'; then
264-
docker network rm clientnet
263+
if $OCI_BIN network ls --format '{{.Name}}' | grep -q '^clientnet$'; then
264+
$OCI_BIN network rm clientnet
265265
fi
266266
delete_metallb_dir
267267
}
@@ -708,7 +708,7 @@ deploy_frr_external_container() {
708708
popd || exit 1
709709
if [ "$PLATFORM_IPV6_SUPPORT" == true ]; then
710710
# Enable IPv6 forwarding in FRR
711-
docker exec frr sysctl -w net.ipv6.conf.all.forwarding=1
711+
$OCI_BIN exec frr sysctl -w net.ipv6.conf.all.forwarding=1
712712
fi
713713
}
714714

@@ -735,40 +735,40 @@ deploy_bgp_external_server() {
735735
ip_family="ipv4"
736736
ipv6_network=""
737737
fi
738-
docker rm -f bgpserver
739-
docker network rm -f bgpnet
740-
docker network create --subnet="${BGP_SERVER_NET_SUBNET_IPV4}" ${ipv6_network} --driver bridge bgpnet
741-
docker network connect bgpnet frr
742-
docker run --cap-add NET_ADMIN --user 0 -d --network bgpnet --rm --name bgpserver -p 8080:8080 registry.k8s.io/e2e-test-images/agnhost:2.45 netexec
738+
$OCI_BIN rm -f bgpserver
739+
$OCI_BIN network rm -f bgpnet
740+
$OCI_BIN network create --subnet="${BGP_SERVER_NET_SUBNET_IPV4}" ${ipv6_network} --driver bridge bgpnet
741+
$OCI_BIN network connect bgpnet frr
742+
$OCI_BIN run --cap-add NET_ADMIN --user 0 -d --network bgpnet --rm --name bgpserver -p 8080:8080 registry.k8s.io/e2e-test-images/agnhost:2.45 netexec
743743
# let's make the bgp external server have its default route towards FRR router so that we don't need to add routes during tests back to the pods in the
744744
# cluster for return traffic
745745
local bgp_network_frr_v4 bgp_network_frr_v6
746-
bgp_network_frr_v4=$($OCI_BIN inspect -f '{{index .NetworkSettings.Networks "bgpnet" "IPAddress"}}' frr)
746+
bgp_network_frr_v4=$($OCI_BIN inspect -f '{{.NetworkSettings.Networks.bgpnet.IPAddress}}' frr)
747747
echo "FRR kind network IPv4: ${bgp_network_frr_v4}"
748748
$OCI_BIN exec bgpserver ip route replace default via "$bgp_network_frr_v4"
749749
if [ "$PLATFORM_IPV6_SUPPORT" == true ] ; then
750-
bgp_network_frr_v6=$($OCI_BIN inspect -f '{{index .NetworkSettings.Networks "bgpnet" "GlobalIPv6Address"}}' frr)
750+
bgp_network_frr_v6=$($OCI_BIN inspect -f '{{.NetworkSettings.Networks.bgpnet.GlobalIPv6Address}}' frr)
751751
echo "FRR kind network IPv6: ${bgp_network_frr_v6}"
752752
$OCI_BIN exec bgpserver ip -6 route replace default via "$bgp_network_frr_v6"
753753
fi
754754
# disable the default route to make sure the container only routes accross
755755
# directly connected or learnt networks (doing this at the very end since
756756
# docker changes the routing table when a new network is connected)
757-
docker exec frr ip route delete default
758-
docker exec frr ip route
759-
docker exec frr ip -6 route delete default
760-
docker exec frr ip -6 route
757+
$OCI_BIN exec frr ip route delete default
758+
$OCI_BIN exec frr ip route
759+
$OCI_BIN exec frr ip -6 route delete default
760+
$OCI_BIN exec frr ip -6 route
761761
}
762762

763763
destroy_bgp() {
764-
if docker ps --format '{{.Names}}' | grep -Eq '^bgpserver$'; then
765-
docker stop bgpserver
764+
if $OCI_BIN ps --format '{{.Names}}' | grep -Eq '^bgpserver$'; then
765+
$OCI_BIN stop bgpserver
766766
fi
767-
if docker ps --format '{{.Names}}' | grep -Eq '^frr$'; then
768-
docker stop frr
767+
if $OCI_BIN ps --format '{{.Names}}' | grep -Eq '^frr$'; then
768+
$OCI_BIN stop frr
769769
fi
770-
if docker network ls --format '{{.Name}}' | grep -q '^bgpnet$'; then
771-
docker network rm bgpnet
770+
if $OCI_BIN network ls --format '{{.Name}}' | grep -q '^bgpnet$'; then
771+
$OCI_BIN network rm bgpnet
772772
fi
773773
}
774774

@@ -807,7 +807,7 @@ install_ffr_k8s() {
807807
echo "Attempting to reach frr-k8s webhook"
808808
kind export kubeconfig --name ovn
809809
while true; do
810-
docker 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}')
810+
$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}')
811811
[ \$? -eq 0 ] && exit 0
812812
echo "Couldn't reach frr-k8s webhook, trying in 1s..."
813813
sleep 1s

contrib/kind-helm.sh

Lines changed: 35 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ set_default_params() {
2727
export KIND_REMOVE_TAINT=${KIND_REMOVE_TAINT:-true}
2828
export ENABLE_MULTI_NET=${ENABLE_MULTI_NET:-false}
2929
export ENABLE_NETWORK_SEGMENTATION=${ENABLE_NETWORK_SEGMENTATION:-false}
30+
export ENABLE_PRE_CONF_UDN_ADDR=${ENABLE_PRE_CONF_UDN_ADDR:-false}
3031
export OVN_NETWORK_QOS_ENABLE=${OVN_NETWORK_QOS_ENABLE:-false}
3132
export KIND_NUM_WORKER=${KIND_NUM_WORKER:-2}
3233
export KIND_CLUSTER_NAME=${KIND_CLUSTER_NAME:-ovn}
@@ -99,35 +100,37 @@ usage() {
99100
echo " [ -ikv | --install-kubevirt ]"
100101
echo " [ -mne | --multi-network-enable ]"
101102
echo " [ -nse | --network-segmentation-enable ]"
103+
echo " [ -uae | --preconfigured-udn-addresses-enable ]"
102104
echo " [ -nqe | --network-qos-enable ]"
103105
echo " [ -wk | --num-workers <num> ]"
104106
echo " [ -ic | --enable-interconnect]"
105107
echo " [ -npz | --node-per-zone ]"
106108
echo " [ -cn | --cluster-name ]"
107109
echo " [ -h ]"
108110
echo ""
109-
echo "--delete Delete current cluster"
110-
echo "-cf | --config-file Name of the KIND configuration file"
111-
echo "-kt | --keep-taint Do not remove taint components"
112-
echo " DEFAULT: Remove taint components"
113-
echo "-me | --multicast-enabled Enable multicast. DEFAULT: Disabled"
114-
echo "-ho | --hybrid-enabled Enable hybrid overlay. DEFAULT: Disabled"
115-
echo "-obs | --observability Enable observability. DEFAULT: Disabled"
116-
echo "-el | --ovn-empty-lb-events Enable empty-lb-events generation for LB without backends. DEFAULT: Disabled"
117-
echo "-ii | --install-ingress Flag to install Ingress Components."
118-
echo " DEFAULT: Don't install ingress components."
119-
echo "-mlb | --install-metallb Install metallb to test service type LoadBalancer deployments"
120-
echo "-pl | --install-cni-plugins Install CNI plugins"
121-
echo "-ikv | --install-kubevirt Install kubevirt"
122-
echo "-mne | --multi-network-enable Enable multi networks. DEFAULT: Disabled"
123-
echo "-nse | --network-segmentation-enable Enable network segmentation. DEFAULT: Disabled"
124-
echo "-nqe | --network-qos-enable Enable network QoS. DEFAULT: Disabled"
125-
echo "-ha | --ha-enabled Enable high availability. DEFAULT: HA Disabled"
126-
echo "-wk | --num-workers Number of worker nodes. DEFAULT: 2 workers"
127-
echo "-cn | --cluster-name Configure the kind cluster's name"
128-
echo "-dns | --enable-dnsnameresolver Enable DNSNameResolver for resolving the DNS names used in the DNS rules of EgressFirewall."
129-
echo "-ic | --enable-interconnect Enable interconnect with each node as a zone (only valid if OVN_HA is false)"
130-
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."
111+
echo "--delete Delete current cluster"
112+
echo "-cf | --config-file Name of the KIND configuration file"
113+
echo "-kt | --keep-taint Do not remove taint components"
114+
echo " DEFAULT: Remove taint components"
115+
echo "-me | --multicast-enabled Enable multicast. DEFAULT: Disabled"
116+
echo "-ho | --hybrid-enabled Enable hybrid overlay. DEFAULT: Disabled"
117+
echo "-obs | --observability Enable observability. DEFAULT: Disabled"
118+
echo "-el | --ovn-empty-lb-events Enable empty-lb-events generation for LB without backends. DEFAULT: Disabled"
119+
echo "-ii | --install-ingress Flag to install Ingress Components."
120+
echo " DEFAULT: Don't install ingress components."
121+
echo "-mlb | --install-metallb Install metallb to test service type LoadBalancer deployments"
122+
echo "-pl | --install-cni-plugins Install CNI plugins"
123+
echo "-ikv | --install-kubevirt Install kubevirt"
124+
echo "-mne | --multi-network-enable Enable multi networks. DEFAULT: Disabled"
125+
echo "-nse | --network-segmentation-enable Enable network segmentation. DEFAULT: Disabled"
126+
echo "-uae | --preconfigured-udn-addresses-enable Enable connecting workloads with preconfigured network to user-defined networks. DEFAULT: Disabled"
127+
echo "-nqe | --network-qos-enable Enable network QoS. DEFAULT: Disabled"
128+
echo "-ha | --ha-enabled Enable high availability. DEFAULT: HA Disabled"
129+
echo "-wk | --num-workers Number of worker nodes. DEFAULT: 2 workers"
130+
echo "-cn | --cluster-name Configure the kind cluster's name"
131+
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)"
133+
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."
131134
echo ""
132135

133136
}
@@ -168,6 +171,8 @@ parse_args() {
168171
;;
169172
-nse | --network-segmentation-enable) ENABLE_NETWORK_SEGMENTATION=true
170173
;;
174+
-uae | --preconfigured-udn-addresses-enable) ENABLE_PRE_CONF_UDN_ADDR=true
175+
;;
171176
-nqe | --network-qos-enable ) OVN_NETWORK_QOS_ENABLE=true
172177
;;
173178
-ha | --ha-enabled ) OVN_HA=true
@@ -223,6 +228,7 @@ print_params() {
223228
echo "KIND_REMOVE_TAINT = $KIND_REMOVE_TAINT"
224229
echo "ENABLE_MULTI_NET = $ENABLE_MULTI_NET"
225230
echo "ENABLE_NETWORK_SEGMENTATION = $ENABLE_NETWORK_SEGMENTATION"
231+
echo "ENABLE_PRE_CONF_UDN_ADDR = $ENABLE_PRE_CONF_UDN_ADDR"
226232
echo "OVN_NETWORK_QOS_ENABLE = $OVN_NETWORK_QOS_ENABLE"
227233
echo "OVN_IMAGE = $OVN_IMAGE"
228234
echo "KIND_NUM_MASTER = $KIND_NUM_MASTER"
@@ -274,7 +280,12 @@ build_ovn_image() {
274280
# Find all built executables, but ignore the 'windows' directory if it exists
275281
find ../../go-controller/_output/go/bin/ -maxdepth 1 -type f -exec cp -f {} . \;
276282
echo "ref: $(git rev-parse --symbolic-full-name HEAD) commit: $(git rev-parse HEAD)" > git_info
277-
$OCI_BIN build -t "${OVN_IMAGE}" -f Dockerfile.fedora .
283+
$OCI_BIN build \
284+
--build-arg http_proxy="$http_proxy" \
285+
--build-arg https_proxy="$https_proxy" \
286+
--network=host \
287+
-t "${OVN_IMAGE}" \
288+
-f Dockerfile.fedora .
278289
popd
279290
}
280291

@@ -416,6 +427,7 @@ helm install ovn-kubernetes . -f "${value_file}" \
416427
--set global.enableMulticast=$(if [ "${OVN_MULTICAST_ENABLE}" == "true" ]; then echo "true"; else echo "false"; fi) \
417428
--set global.enableMultiNetwork=$(if [ "${ENABLE_MULTI_NET}" == "true" ]; then echo "true"; else echo "false"; fi) \
418429
--set global.enableNetworkSegmentation=$(if [ "${ENABLE_NETWORK_SEGMENTATION}" == "true" ]; then echo "true"; else echo "false"; fi) \
430+
--set global.enablePreconfiguredUDNAddresses=$(if [ "${ENABLE_PRE_CONF_UDN_ADDR}" == "true" ]; then echo "true"; else echo "false"; fi) \
419431
--set global.enableHybridOverlay=$(if [ "${OVN_HYBRID_OVERLAY_ENABLE}" == "true" ]; then echo "true"; else echo "false"; fi) \
420432
--set global.enableObservability=$(if [ "${OVN_OBSERV_ENABLE}" == "true" ]; then echo "true"; else echo "false"; fi) \
421433
--set global.emptyLbEvents=$(if [ "${OVN_EMPTY_LB_EVENTS}" == "true" ]; then echo "true"; else echo "false"; fi) \

0 commit comments

Comments
 (0)