Skip to content

Commit

Permalink
Add route advertisements CLI flag
Browse files Browse the repository at this point in the history
Signed-off-by: Jaime Caamaño Ruiz <[email protected]>
  • Loading branch information
jcaamano committed Dec 11, 2024
1 parent 9703f4b commit 0ae82c2
Show file tree
Hide file tree
Showing 10 changed files with 144 additions and 61 deletions.
133 changes: 72 additions & 61 deletions contrib/kind.sh

Large diffs are not rendered by default.

13 changes: 13 additions & 0 deletions dist/images/daemonset.sh
Original file line number Diff line number Diff line change
Expand Up @@ -71,6 +71,7 @@ OVN_EGRESSSERVICE_ENABLE=
OVN_DISABLE_OVN_IFACE_ID_VER="false"
OVN_MULTI_NETWORK_ENABLE=
OVN_NETWORK_SEGMENTATION_ENABLE=
OVN_ROUTE_ADVERTISEMENTS_ENABLE=
OVN_V4_JOIN_SUBNET=""
OVN_V6_JOIN_SUBNET=""
OVN_V4_MASQUERADE_SUBNET=""
Expand Down Expand Up @@ -270,6 +271,9 @@ while [ "$1" != "" ]; do
--network-segmentation-enable)
OVN_NETWORK_SEGMENTATION_ENABLE=$VALUE
;;
--route-advertisements-enable)
OVN_ROUTE_ADVERTISEMENTS_ENABLE=$VALUE
;;
--egress-service-enable)
OVN_EGRESSSERVICE_ENABLE=$VALUE
;;
Expand Down Expand Up @@ -456,6 +460,8 @@ ovn_multi_network_enable=${OVN_MULTI_NETWORK_ENABLE}
echo "ovn_multi_network_enable: ${ovn_multi_network_enable}"
ovn_network_segmentation_enable=${OVN_NETWORK_SEGMENTATION_ENABLE}
echo "ovn_network_segmentation_enable: ${ovn_network_segmentation_enable}"
ovn_route_advertisements_enable=${OVN_ROUTE_ADVERTISEMENTS_ENABLE}
echo "ovn_route_advertisements_enable: ${ovn_route_advertisements_enable}"
ovn_hybrid_overlay_net_cidr=${OVN_HYBRID_OVERLAY_NET_CIDR}
echo "ovn_hybrid_overlay_net_cidr: ${ovn_hybrid_overlay_net_cidr}"
ovn_disable_snat_multiple_gws=${OVN_DISABLE_SNAT_MULTIPLE_GWS}
Expand Down Expand Up @@ -593,6 +599,7 @@ ovn_image=${ovnkube_image} \
ovn_egress_ip_healthcheck_port=${ovn_egress_ip_healthcheck_port} \
ovn_multi_network_enable=${ovn_multi_network_enable} \
ovn_network_segmentation_enable=${ovn_network_segmentation_enable} \
ovn_route_advertisements_enable=${ovn_route_advertisements_enable} \
ovn_egress_service_enable=${ovn_egress_service_enable} \
ovn_ssl_en=${ovn_ssl_en} \
ovn_remote_probe_interval=${ovn_remote_probe_interval} \
Expand Down Expand Up @@ -645,6 +652,7 @@ ovn_image=${ovnkube_image} \
ovn_egress_ip_healthcheck_port=${ovn_egress_ip_healthcheck_port} \
ovn_multi_network_enable=${ovn_multi_network_enable} \
ovn_network_segmentation_enable=${ovn_network_segmentation_enable} \
ovn_route_advertisements_enable=${ovn_route_advertisements_enable} \
ovn_egress_service_enable=${ovn_egress_service_enable} \
ovn_ssl_en=${ovn_ssl_en} \
ovn_remote_probe_interval=${ovn_remote_probe_interval} \
Expand Down Expand Up @@ -741,6 +749,7 @@ ovn_image=${ovnkube_image} \
ovn_egress_qos_enable=${ovn_egress_qos_enable} \
ovn_multi_network_enable=${ovn_multi_network_enable} \
ovn_network_segmentation_enable=${ovn_network_segmentation_enable} \
ovn_route_advertisements_enable=${ovn_route_advertisements_enable} \
ovn_egress_service_enable=${ovn_egress_service_enable} \
ovn_ssl_en=${ovn_ssl_en} \
ovn_master_count=${ovn_master_count} \
Expand Down Expand Up @@ -788,6 +797,7 @@ ovn_image=${ovnkube_image} \
ovn_egress_qos_enable=${ovn_egress_qos_enable} \
ovn_multi_network_enable=${ovn_multi_network_enable} \
ovn_network_segmentation_enable=${ovn_network_segmentation_enable} \
ovn_route_advertisements_enable=${ovn_route_advertisements_enable} \
ovn_egress_service_enable=${ovn_egress_service_enable} \
ovn_ssl_en=${ovn_ssl_en} \
ovn_master_count=${ovn_master_count} \
Expand Down Expand Up @@ -866,6 +876,7 @@ ovn_image=${ovnkube_image} \
ovn_egress_qos_enable=${ovn_egress_qos_enable} \
ovn_multi_network_enable=${ovn_multi_network_enable} \
ovn_network_segmentation_enable=${ovn_network_segmentation_enable} \
ovn_route_advertisements_enable=${ovn_route_advertisements_enable} \
ovn_egress_service_enable=${ovn_egress_service_enable} \
ovn_ssl_en=${ovn_ssl_en} \
ovn_remote_probe_interval=${ovn_remote_probe_interval} \
Expand Down Expand Up @@ -931,6 +942,7 @@ ovn_image=${ovnkube_image} \
ovn_egress_qos_enable=${ovn_egress_qos_enable} \
ovn_multi_network_enable=${ovn_multi_network_enable} \
ovn_network_segmentation_enable=${ovn_network_segmentation_enable} \
ovn_route_advertisements_enable=${ovn_route_advertisements_enable} \
ovn_ssl_en=${ovn_ssl_en} \
ovn_remote_probe_interval=${ovn_remote_probe_interval} \
ovn_monitor_all=${ovn_monitor_all} \
Expand Down Expand Up @@ -1041,5 +1053,6 @@ cp ../templates/k8s.ovn.org_egressservices.yaml.j2 ${output_dir}/k8s.ovn.org_egr
cp ../templates/k8s.ovn.org_adminpolicybasedexternalroutes.yaml.j2 ${output_dir}/k8s.ovn.org_adminpolicybasedexternalroutes.yaml
cp ../templates/k8s.ovn.org_userdefinednetworks.yaml.j2 ${output_dir}/k8s.ovn.org_userdefinednetworks.yaml
cp ../templates/k8s.ovn.org_clusteruserdefinednetworks.yaml.j2 ${output_dir}/k8s.ovn.org_clusteruserdefinednetworks.yaml
cp ../templates/k8s.ovn.org_routeadvertisements.yaml.j2 ${output_dir}/k8s.ovn.org_routeadvertisements.yaml

exit 0
36 changes: 36 additions & 0 deletions dist/images/ovnkube.sh
Original file line number Diff line number Diff line change
Expand Up @@ -269,6 +269,8 @@ ovn_disable_ovn_iface_id_ver=${OVN_DISABLE_OVN_IFACE_ID_VER:-false}
ovn_multi_network_enable=${OVN_MULTI_NETWORK_ENABLE:-false}
#OVN_NETWORK_SEGMENTATION_ENABLE - enable user defined primary networks for ovn-kubernetes
ovn_network_segmentation_enable=${OVN_NETWORK_SEGMENTATION_ENABLE:=false}
#OVN_NROUTE_ADVERTISEMENTS_ENABLE - enable route advertisements for ovn-kubernetes
ovn_route_advertisements_enable=${OVN_ROUTE_ADVERTISEMENTS_ENABLE:=false}
ovn_acl_logging_rate_limit=${OVN_ACL_LOGGING_RATE_LIMIT:-"20"}
ovn_netflow_targets=${OVN_NETFLOW_TARGETS:-}
ovn_sflow_targets=${OVN_SFLOW_TARGETS:-}
Expand Down Expand Up @@ -1221,6 +1223,12 @@ ovn-master() {
fi
echo "network_segmentation_enabled_flag=${network_segmentation_enabled_flag}"

route_advertisements_enabled_flag=
if [[ ${ovn_route_advertisements_enable} == "true" ]]; then
route_advertisements_enabled_flag="--enable-route-advertisements"
fi
echo "route_advertisements_enabled_flag=${route_advertisements_enabled_flag}"

egressservice_enabled_flag=
if [[ ${ovn_egressservice_enable} == "true" ]]; then
egressservice_enabled_flag="--enable-egress-service"
Expand Down Expand Up @@ -1321,6 +1329,7 @@ ovn-master() {
${multicast_enabled_flag} \
${multi_network_enabled_flag} \
${network_segmentation_enabled_flag} \
${route_advertisements_enabled_flag} \
${ovn_acl_logging_rate_limit_flag} \
${ovn_enable_svc_template_support_flag} \
${ovn_observ_enable_flag} \
Expand Down Expand Up @@ -1509,6 +1518,12 @@ ovnkube-controller() {
fi
echo "network_segmentation_enabled_flag=${network_segmentation_enabled_flag}"

route_advertisements_enabled_flag=
if [[ ${ovn_route_advertisements_enable} == "true" ]]; then
route_advertisements_enabled_flag="--enable-route-advertisements"
fi
echo "route_advertisements_enabled_flag=${route_advertisements_enabled_flag}"

egressservice_enabled_flag=
if [[ ${ovn_egressservice_enable} == "true" ]]; then
egressservice_enabled_flag="--enable-egress-service"
Expand Down Expand Up @@ -1610,6 +1625,7 @@ ovnkube-controller() {
${multicast_enabled_flag} \
${multi_network_enabled_flag} \
${network_segmentation_enabled_flag} \
${route_advertisements_enabled_flag} \
${ovn_acl_logging_rate_limit_flag} \
${ovn_dbs} \
${ovn_enable_svc_template_support_flag} \
Expand Down Expand Up @@ -1792,6 +1808,12 @@ ovnkube-controller-with-node() {
fi
echo "network_segmentation_enabled_flag=${network_segmentation_enabled_flag}"

route_advertisements_enabled_flag=
if [[ ${ovn_route_advertisements_enable} == "true" ]]; then
route_advertisements_enabled_flag="--enable-route-advertisements"
fi
echo "route_advertisements_enabled_flag=${route_advertisements_enabled_flag}"

egressservice_enabled_flag=
if [[ ${ovn_egressservice_enable} == "true" ]]; then
egressservice_enabled_flag="--enable-egress-service"
Expand Down Expand Up @@ -2026,6 +2048,7 @@ ovnkube-controller-with-node() {
${multicast_enabled_flag} \
${multi_network_enabled_flag} \
${network_segmentation_enabled_flag} \
${route_advertisements_enabled_flag} \
${netflow_targets} \
${ofctrl_wait_before_clear} \
${ovn_acl_logging_rate_limit_flag} \
Expand Down Expand Up @@ -2191,6 +2214,12 @@ ovn-cluster-manager() {
fi
echo "network_segmentation_enabled_flag=${network_segmentation_enabled_flag}"

route_advertisements_enabled_flag=
if [[ ${ovn_route_advertisements_enable} == "true" ]]; then
route_advertisements_enabled_flag="--enable-route-advertisements"
fi
echo "route_advertisements_enabled_flag=${route_advertisements_enabled_flag}"

persistent_ips_enabled_flag=
if [[ ${ovn_enable_persistent_ips} == "true" ]]; then
persistent_ips_enabled_flag="--enable-persistent-ips"
Expand Down Expand Up @@ -2246,6 +2275,7 @@ ovn-cluster-manager() {
${multicast_enabled_flag} \
${multi_network_enabled_flag} \
${network_segmentation_enabled_flag} \
${route_advertisements_enabled_flag} \
${persistent_ips_enabled_flag} \
${ovnkube_enable_interconnect_flag} \
${ovnkube_enable_multi_external_gateway_flag} \
Expand Down Expand Up @@ -2413,6 +2443,11 @@ ovn-node() {
network_segmentation_enabled_flag="--enable-multi-network --enable-network-segmentation"
fi

route_advertisements_enabled_flag=
if [[ ${ovn_route_advertisements_enable} == "true" ]]; then
route_advertisements_enabled_flag="--enable-route-advertisements"
fi

netflow_targets=
if [[ -n ${ovn_netflow_targets} ]]; then
netflow_targets="--netflow-targets ${ovn_netflow_targets}"
Expand Down Expand Up @@ -2635,6 +2670,7 @@ ovn-node() {
${multicast_enabled_flag} \
${multi_network_enabled_flag} \
${network_segmentation_enabled_flag} \
${route_advertisements_enabled_flag} \
${netflow_targets} \
${ofctrl_wait_before_clear} \
${ovn_dbs} \
Expand Down
2 changes: 2 additions & 0 deletions dist/templates/ovnkube-control-plane.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -139,6 +139,8 @@ spec:
value: "{{ ovn_multi_network_enable }}"
- name: OVN_NETWORK_SEGMENTATION_ENABLE
value: "{{ ovn_network_segmentation_enable }}"
- name: OVN_ROUTE_ADVERTISEMENTS_ENABLE
value: "{{ ovn_route_advertisements_enable }}"
- name: OVN_HYBRID_OVERLAY_NET_CIDR
value: "{{ ovn_hybrid_overlay_net_cidr }}"
- name: OVN_DISABLE_SNAT_MULTIPLE_GWS
Expand Down
2 changes: 2 additions & 0 deletions dist/templates/ovnkube-master.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -259,6 +259,8 @@ spec:
value: "{{ ovn_multi_network_enable }}"
- name: OVN_NETWORK_SEGMENTATION_ENABLE
value: "{{ ovn_network_segmentation_enable }}"
- name: OVN_ROUTE_ADVERTISEMENTS_ENABLE
value: "{{ ovn_route_advertisements_enable }}"
- name: OVN_EGRESSSERVICE_ENABLE
value: "{{ ovn_egress_service_enable }}"
- name: OVN_HYBRID_OVERLAY_NET_CIDR
Expand Down
2 changes: 2 additions & 0 deletions dist/templates/ovnkube-node.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -238,6 +238,8 @@ spec:
value: "{{ ovn_multi_network_enable }}"
- name: OVN_NETWORK_SEGMENTATION_ENABLE
value: "{{ ovn_network_segmentation_enable }}"
- name: OVN_ROUTE_ADVERTISEMENTS_ENABLE
value: "{{ ovn_route_advertisements_enable }}"
- name: OVN_ENABLE_INTERCONNECT
value: "{{ ovn_enable_interconnect }}"
- name: OVN_ENABLE_MULTI_EXTERNAL_GATEWAY
Expand Down
2 changes: 2 additions & 0 deletions dist/templates/ovnkube-single-node-zone.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -433,6 +433,8 @@ spec:
value: "{{ ovn_multi_network_enable }}"
- name: OVN_NETWORK_SEGMENTATION_ENABLE
value: "{{ ovn_network_segmentation_enable }}"
- name: OVN_ROUTE_ADVERTISEMENTS_ENABLE
value: "{{ ovn_route_advertisements_enable }}"
- name: OVNKUBE_NODE_MGMT_PORT_NETDEV
value: "{{ ovnkube_node_mgmt_port_netdev }}"
- name: OVN_EMPTY_LB_EVENTS
Expand Down
2 changes: 2 additions & 0 deletions dist/templates/ovnkube-zone-controller.yaml.j2
Original file line number Diff line number Diff line change
Expand Up @@ -345,6 +345,8 @@ spec:
value: "{{ ovn_multi_network_enable }}"
- name: OVN_NETWORK_SEGMENTATION_ENABLE
value: "{{ ovn_network_segmentation_enable }}"
- name: OVN_ROUTE_ADVERTISEMENTS_ENABLE
value: "{{ ovn_route_advertisements_enable }}"
- name: OVN_HYBRID_OVERLAY_NET_CIDR
value: "{{ ovn_hybrid_overlay_net_cidr }}"
- name: OVN_DISABLE_SNAT_MULTIPLE_GWS
Expand Down
7 changes: 7 additions & 0 deletions go-controller/pkg/config/config.go
Original file line number Diff line number Diff line change
Expand Up @@ -417,6 +417,7 @@ type OVNKubernetesFeatureConfig struct {
EgressIPNodeHealthCheckPort int `gcfg:"egressip-node-healthcheck-port"`
EnableMultiNetwork bool `gcfg:"enable-multi-network"`
EnableNetworkSegmentation bool `gcfg:"enable-network-segmentation"`
EnableRouteAdvertisements bool `gcfg:"enable-route-advertisements"`
// This feature requires a kernel fix https://github.com/torvalds/linux/commit/7f3287db654395f9c5ddd246325ff7889f550286
// to work on a kind cluster. Flag allows to disable it for current CI, will be turned on when github runners have this fix.
DisableUDNHostIsolation bool `gcfg:"disable-udn-host-isolation"`
Expand Down Expand Up @@ -1071,6 +1072,12 @@ var OVNK8sFeatureFlags = []cli.Flag{
Destination: &cliConfig.OVNKubernetesFeature.EnableNetworkSegmentation,
Value: OVNKubernetesFeature.EnableNetworkSegmentation,
},
&cli.BoolFlag{
Name: "enable-route-advertisements",
Usage: "Configure to use route advertisements feature with ovn-kubernetes.",
Destination: &cliConfig.OVNKubernetesFeature.EnableRouteAdvertisements,
Value: OVNKubernetesFeature.EnableRouteAdvertisements,
},
&cli.BoolFlag{
Name: "enable-stateless-netpol",
Usage: "Configure to use stateless network policy feature with ovn-kubernetes.",
Expand Down
6 changes: 6 additions & 0 deletions go-controller/pkg/config/config_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -227,6 +227,7 @@ egressip-node-healthcheck-port=1234
enable-multi-network=false
enable-multi-networkpolicy=false
enable-network-segmentation=false
enable-route-advertisements=false
enable-interconnect=false
enable-multi-external-gateway=false
enable-admin-network-policy=false
Expand Down Expand Up @@ -337,6 +338,7 @@ var _ = Describe("Config Operations", func() {
gomega.Expect(OVNKubernetesFeature.EgressIPNodeHealthCheckPort).To(gomega.Equal(0))
gomega.Expect(OVNKubernetesFeature.EnableMultiNetwork).To(gomega.BeFalse())
gomega.Expect(OVNKubernetesFeature.EnableNetworkSegmentation).To(gomega.BeFalse())
gomega.Expect(OVNKubernetesFeature.EnableRouteAdvertisements).To(gomega.BeFalse())
gomega.Expect(OVNKubernetesFeature.EnableMultiNetworkPolicy).To(gomega.BeFalse())
gomega.Expect(OVNKubernetesFeature.EnableInterconnect).To(gomega.BeFalse())
gomega.Expect(OVNKubernetesFeature.EnableMultiExternalGateway).To(gomega.BeFalse())
Expand Down Expand Up @@ -595,6 +597,7 @@ var _ = Describe("Config Operations", func() {
"enable-multi-network=true",
"enable-multi-networkpolicy=true",
"enable-network-segmentation=true",
"enable-route-advertisements=true",
"enable-interconnect=true",
"enable-multi-external-gateway=true",
"enable-admin-network-policy=true",
Expand Down Expand Up @@ -684,6 +687,7 @@ var _ = Describe("Config Operations", func() {
gomega.Expect(OVNKubernetesFeature.EgressIPNodeHealthCheckPort).To(gomega.Equal(1234))
gomega.Expect(OVNKubernetesFeature.EnableMultiNetwork).To(gomega.BeTrue())
gomega.Expect(OVNKubernetesFeature.EnableNetworkSegmentation).To(gomega.BeTrue())
gomega.Expect(OVNKubernetesFeature.EnableRouteAdvertisements).To(gomega.BeTrue())
gomega.Expect(OVNKubernetesFeature.EnableInterconnect).To(gomega.BeTrue())
gomega.Expect(OVNKubernetesFeature.EnableMultiExternalGateway).To(gomega.BeTrue())
gomega.Expect(OVNKubernetesFeature.EnableAdminNetworkPolicy).To(gomega.BeTrue())
Expand Down Expand Up @@ -790,6 +794,7 @@ var _ = Describe("Config Operations", func() {
gomega.Expect(OVNKubernetesFeature.EgressIPNodeHealthCheckPort).To(gomega.Equal(4321))
gomega.Expect(OVNKubernetesFeature.EnableMultiNetwork).To(gomega.BeTrue())
gomega.Expect(OVNKubernetesFeature.EnableNetworkSegmentation).To(gomega.BeTrue())
gomega.Expect(OVNKubernetesFeature.EnableRouteAdvertisements).To(gomega.BeTrue())
gomega.Expect(OVNKubernetesFeature.EnableMultiNetworkPolicy).To(gomega.BeTrue())
gomega.Expect(OVNKubernetesFeature.EnableInterconnect).To(gomega.BeTrue())
gomega.Expect(OVNKubernetesFeature.EnableMultiExternalGateway).To(gomega.BeTrue())
Expand Down Expand Up @@ -864,6 +869,7 @@ var _ = Describe("Config Operations", func() {
"-enable-multi-network=true",
"-enable-multi-networkpolicy=true",
"-enable-network-segmentation=true",
"-enable-route-advertisements=true",
"-enable-interconnect=true",
"-enable-multi-external-gateway=true",
"-enable-admin-network-policy=true",
Expand Down

0 comments on commit 0ae82c2

Please sign in to comment.