Skip to content

Commit

Permalink
support ovn ic ecmp (#3348) (#3410)
Browse files Browse the repository at this point in the history
* support ovn ic ecmp

Signed-off-by: changluyi <clyi@alauda.io>
  • Loading branch information
changluyi committed Nov 14, 2023
1 parent 12625f5 commit 984c035
Show file tree
Hide file tree
Showing 14 changed files with 308 additions and 184 deletions.
28 changes: 16 additions & 12 deletions Makefile
Expand Up @@ -346,18 +346,21 @@ kind-init-ipv4: kind-clean
kind-init-ovn-ic: kind-init-ovn-ic-ipv4

.PHONY: kind-init-ovn-ic-ipv4
kind-init-ovn-ic-ipv4: kind-clean-ovn-ic kind-init
@$(MAKE) kind-generate-config
kind-init-ovn-ic-ipv4: kind-clean-ovn-ic
@ovn_ic=true $(MAKE) kind-init
@ovn_ic=true $(MAKE) kind-generate-config
$(call kind_create_cluster,yamls/kind.yaml,kube-ovn1,1)

.PHONY: kind-init-ovn-ic-ipv6
kind-init-ovn-ic-ipv6: kind-clean-ovn-ic kind-init-ipv6
@ip_family=ipv6 $(MAKE) kind-generate-config
kind-init-ovn-ic-ipv6: kind-clean-ovn-ic
@ovn_ic=true $(MAKE) kind-init-ipv6
@ovn_ic=true ip_family=ipv6 $(MAKE) kind-generate-config
$(call kind_create_cluster,yamls/kind.yaml,kube-ovn1,1)

.PHONY: kind-init-ovn-ic-dual
kind-init-ovn-ic-dual: kind-clean-ovn-ic kind-init-dual
@ip_family=dual $(MAKE) kind-generate-config
kind-init-ovn-ic-dual: kind-clean-ovn-ic
@ovn_ic=true $(MAKE) kind-init-dual
@ovn_ic=true ip_family=dual $(MAKE) kind-generate-config
$(call kind_create_cluster,yamls/kind.yaml,kube-ovn1,1)

.PHONY: kind-init-ovn-submariner
Expand Down Expand Up @@ -483,6 +486,7 @@ kind-install-ovn-ic: kind-install-ovn-ic-ipv4
kind-install-ovn-ic-ipv4: kind-install
$(call kind_load_image,kube-ovn1,$(REGISTRY)/kube-ovn:$(VERSION))
kubectl config use-context kind-kube-ovn1
$(MAKE) kind-untaint-control-plane
sed -e 's/10.16.0/10.18.0/g' \
-e 's/10.96.0/10.98.0/g' \
-e 's/100.64.0/100.68.0/g' \
Expand All @@ -493,8 +497,8 @@ kind-install-ovn-ic-ipv4: kind-install
docker run -d --name ovn-ic-db --network kind $(REGISTRY)/kube-ovn:$(VERSION) bash start-ic-db.sh
@set -e; \
ic_db_host=$$(docker inspect ovn-ic-db -f "{{.NetworkSettings.Networks.kind.IPAddress}}"); \
zone=az0 ic_db_host=$$ic_db_host gateway_node_name=kube-ovn-worker j2 yamls/ovn-ic.yaml.j2 -o ovn-ic-0.yaml; \
zone=az1 ic_db_host=$$ic_db_host gateway_node_name=kube-ovn1-worker j2 yamls/ovn-ic.yaml.j2 -o ovn-ic-1.yaml
zone=az0 ic_db_host=$$ic_db_host gateway_node_name='kube-ovn-worker,kube-ovn-worker2;kube-ovn-control-plane' j2 yamls/ovn-ic.yaml.j2 -o ovn-ic-0.yaml; \
zone=az1 ic_db_host=$$ic_db_host gateway_node_name='kube-ovn1-worker,kube-ovn1-worker2;kube-ovn1-control-plane' j2 yamls/ovn-ic.yaml.j2 -o ovn-ic-1.yaml
kubectl config use-context kind-kube-ovn
kubectl apply -f ovn-ic-0.yaml
kubectl config use-context kind-kube-ovn1
Expand All @@ -518,8 +522,8 @@ kind-install-ovn-ic-ipv6: kind-install-ipv6
docker run -d --name ovn-ic-db --network kind -e PROTOCOL="ipv6" $(REGISTRY)/kube-ovn:$(VERSION) bash start-ic-db.sh
@set -e; \
ic_db_host=$$(docker inspect ovn-ic-db -f "{{.NetworkSettings.Networks.kind.GlobalIPv6Address}}"); \
zone=az0 ic_db_host=$$ic_db_host gateway_node_name=kube-ovn-worker j2 yamls/ovn-ic.yaml.j2 -o ovn-ic-0.yaml; \
zone=az1 ic_db_host=$$ic_db_host gateway_node_name=kube-ovn1-worker j2 yamls/ovn-ic.yaml.j2 -o ovn-ic-1.yaml
zone=az0 ic_db_host=$$ic_db_host gateway_node_name='kube-ovn-worker,kube-ovn-worker2;kube-ovn-control-plane' j2 yamls/ovn-ic.yaml.j2 -o ovn-ic-0.yaml; \
zone=az1 ic_db_host=$$ic_db_host gateway_node_name='kube-ovn1-worker,kube-ovn1-worker2;kube-ovn1-control-plane' j2 yamls/ovn-ic.yaml.j2 -o ovn-ic-1.yaml
kubectl config use-context kind-kube-ovn
kubectl apply -f ovn-ic-0.yaml
kubectl config use-context kind-kube-ovn1
Expand Down Expand Up @@ -547,8 +551,8 @@ kind-install-ovn-ic-dual: kind-install-dual
@set -e; \

ic_db_host=$$(docker inspect ovn-ic-db -f "{{.NetworkSettings.Networks.kind.IPAddress}}"); \
zone=az0 ic_db_host=$$ic_db_host gateway_node_name=kube-ovn-worker j2 yamls/ovn-ic.yaml.j2 -o ovn-ic-0.yaml; \
zone=az1 ic_db_host=$$ic_db_host gateway_node_name=kube-ovn1-worker j2 yamls/ovn-ic.yaml.j2 -o ovn-ic-1.yaml
zone=az0 ic_db_host=$$ic_db_host gateway_node_name='kube-ovn-worker,kube-ovn-worker2;kube-ovn-control-plane' j2 yamls/ovn-ic.yaml.j2 -o ovn-ic-0.yaml; \
zone=az1 ic_db_host=$$ic_db_host gateway_node_name='kube-ovn1-worker,kube-ovn1-worker2;kube-ovn1-control-plane' j2 yamls/ovn-ic.yaml.j2 -o ovn-ic-1.yaml
kubectl config use-context kind-kube-ovn
kubectl apply -f ovn-ic-0.yaml
kubectl config use-context kind-kube-ovn1
Expand Down
14 changes: 0 additions & 14 deletions dist/images/start-ic-db.sh
@@ -1,16 +1,6 @@
#!/bin/bash
set -eo pipefail

TS_NAME=${TS_NAME:-ts}
PROTOCOL=${PROTOCOL:-ipv4}
if [ "$PROTOCOL" = "ipv4" ]; then
TS_CIDR=${TS_CIDR:-169.254.100.0/24}
elif [ "$PROTOCOL" = "ipv6" ]; then
TS_CIDR=${TS_CIDR:-fe80:a9fe:64::/112}
elif [ "$PROTOCOL" = "dual" ]; then
TS_CIDR=${TS_CIDR:-"169.254.100.0/24,fe80:a9fe:64::/112"}
fi

function quit {
/usr/share/ovn/scripts/ovn-ctl stop_ic_ovsdb
exit 0
Expand All @@ -26,8 +16,6 @@ trap quit EXIT
if [[ -z "$NODE_IPS" && -z "$LOCAL_IP" ]]; then
/usr/share/ovn/scripts/ovn-ctl --db-ic-nb-create-insecure-remote=yes --db-ic-sb-create-insecure-remote=yes --db-ic-nb-addr="[::]" --db-ic-sb-addr="[::]" start_ic_ovsdb
/usr/share/ovn/scripts/ovn-ctl status_ic_ovsdb
ovn-ic-nbctl --may-exist ts-add "$TS_NAME"
ovn-ic-nbctl set Transit_Switch ts external_ids:subnet="$TS_CIDR"
tail --follow=name --retry /var/log/ovn/ovsdb-server-ic-nb.log
else
if [[ -z "$LEADER_IP" ]]; then
Expand All @@ -40,8 +28,6 @@ else
--ovn-ic-sb-db="$(gen_conn_str 6648)" \
start_ic_ovsdb
/usr/share/ovn/scripts/ovn-ctl status_ic_ovsdb
ovn-ic-nbctl --may-exist ts-add "$TS_NAME"
ovn-ic-nbctl set Transit_Switch ts external_ids:subnet="$TS_CIDR"
tail --follow=name --retry /var/log/ovn/ovsdb-server-ic-nb.log
else
echo "follower start with local ${LOCAL_IP}, leader ${LEADER_IP} and cluster $(gen_conn_str 6647)"
Expand Down
74 changes: 66 additions & 8 deletions mocks/pkg/ovs/interface.go

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 1 addition & 1 deletion pkg/controller/node.go
Expand Up @@ -1239,7 +1239,7 @@ func (c *Controller) deletePolicyRouteForLocalDNSCacheOnNode(nodeName string, af
"node": nodeName,
"address-family": strconv.Itoa(af),
"isLocalDnsCache": "true",
})
}, true)
if err != nil {
klog.Errorf("failed to list logical router policies: %v", err)
return err
Expand Down

0 comments on commit 984c035

Please sign in to comment.