diff --git a/automation/vars/uni01alpha.yaml b/automation/vars/uni01alpha.yaml index 9245df435..4d7d04f0c 100644 --- a/automation/vars/uni01alpha.yaml +++ b/automation/vars/uni01alpha.yaml @@ -80,7 +80,7 @@ vas: oc -n openstack wait openstackdataplanedeployment edpm-deployment --for condition=Ready - --timeout=40m + --timeout=80m values: - name: edpm-deployment-values src_file: values.yaml diff --git a/dt/bgp/kustomization.yaml b/dt/bgp/kustomization.yaml index 172b6dc5a..69783ede5 100644 --- a/dt/bgp/kustomization.yaml +++ b/dt/bgp/kustomization.yaml @@ -33,6 +33,19 @@ resources: - ocp_networks_octavia_netattach.yaml patches: + # Add octavia network to NetConfig + - target: + kind: NetConfig + name: netconfig + patch: |- + - op: add + path: /spec/networks/- + value: + dnsDomain: octavia.example.com + name: octavia + subnets: + - _replaced_ + mtu: 1500 # Add BGP networks to NetConfig - target: kind: NetConfig @@ -101,6 +114,16 @@ patches: networkAttachment: internalapi replacements: + # octavia NetConfig customizations + - source: + kind: ConfigMap + name: network-values + fieldPath: data.octavia.subnets + targets: + - select: + kind: NetConfig + fieldPaths: + - spec.networks.[name=octavia].subnets # BGP NetConfig customizations - source: kind: ConfigMap @@ -209,6 +232,18 @@ replacements: options: create: true + - source: + kind: ConfigMap + name: service-values + fieldPath: data.octavia.lbMgmtNetwork + targets: + - select: + kind: OpenStackControlPlane + fieldPaths: + - spec.octavia.template.lbMgmtNetwork + options: + create: true + - source: kind: ConfigMap name: service-values diff --git a/dt/uni01alpha/kustomization.yaml b/dt/uni01alpha/kustomization.yaml index 9a40b00df..f5921e3ea 100644 --- a/dt/uni01alpha/kustomization.yaml +++ b/dt/uni01alpha/kustomization.yaml @@ -204,12 +204,12 @@ replacements: - source: kind: ConfigMap name: service-values - fieldPath: data.octavia.availabilityZones + fieldPath: data.octavia.lbMgmtNetwork targets: - select: kind: OpenStackControlPlane fieldPaths: - - spec.octavia.template.lbMgmtNetwork.availabilityZones + - spec.octavia.template.lbMgmtNetwork options: create: true diff --git a/examples/dt/bgp/bgp_dt01/README.md b/examples/dt/bgp/bgp_dt01/README.md index 70aa8683a..4f5eb4a08 100644 --- a/examples/dt/bgp/bgp_dt01/README.md +++ b/examples/dt/bgp/bgp_dt01/README.md @@ -37,6 +37,13 @@ This DT configures both compute and networker EDPM nodes. So far, networker nodes are needed when BGP is used on RHOSO, in order to expose routes to SNAT traffic (OVN Gateway IPs). In other words, when RHOSO is used with BGP, the OCP workers cannot be configured as OVN Gateways. +On the other hand, Octavia needs to use OCP workers as OVN Gateways for +its management network. +To resolve this conflict, BGP DT01 uses Availability Zones: +* zone-1 is only used for the Octavia management network, which is scheduled on + the OCP workers +* zone-2 is used for the provider networks, whose routers ports will be + scheduled on the networker nodes. The OCP and EDPM nodes deployed with this DT are distributed into three different racks. Each rack is connected to two leaves. @@ -74,14 +81,14 @@ network). ## Services, enabled features and configurations -| Service | configuration | Lock-in coverage? | -| ---------------- | ---------------- | ------------------ | -| Glance | Swift | Must have | -| Swift | (default) | Must have | -| Octavia | (default) | Must have | -| Heat | (default) | Must have | -| frr | dataplane | Must have | -| ovn-bgp-agent | dataplane | Must have | +| Service | configuration | Lock-in coverage? | +| ---------------- | ----------------- | ------------------ | +| Glance | Swift | Must have | +| Swift | (default) | Must have | +| Octavia | (default) | Must have | +| Heat | (default) | Must have | +| frr | dataplane | Must have | +| ovn-bgp-agent | dataplane | Must have | ## Considerations/Constraints diff --git a/examples/dt/bgp/bgp_dt01/control-plane/kustomization.yaml b/examples/dt/bgp/bgp_dt01/control-plane/kustomization.yaml index 19589ac61..3bc47f03f 100644 --- a/examples/dt/bgp/bgp_dt01/control-plane/kustomization.yaml +++ b/examples/dt/bgp/bgp_dt01/control-plane/kustomization.yaml @@ -144,16 +144,16 @@ replacements: name: bgpnet-worker-3 fieldPaths: - spec.config - # disable OCP workers as gateway nodes + # configure OVN AZs - source: kind: ConfigMap name: service-values - fieldPath: data.ovn.ovnController.external-ids + fieldPath: data.ovn.ovnController.availability-zones targets: - select: kind: OpenStackControlPlane fieldPaths: - - spec.ovn.template.ovnController.external-ids + - spec.ovn.template.ovnController.external-ids.availability-zones options: create: true # configure neutron customServiceConfig diff --git a/examples/dt/bgp/bgp_dt01/control-plane/nncp/values.yaml b/examples/dt/bgp/bgp_dt01/control-plane/nncp/values.yaml index 8605b5db1..6f16f249d 100644 --- a/examples/dt/bgp/bgp_dt01/control-plane/nncp/values.yaml +++ b/examples/dt/bgp/bgp_dt01/control-plane/nncp/values.yaml @@ -237,7 +237,19 @@ data: } } octavia: - dnsDomain: octavia.openstack.lab + dnsDomain: octavia.example.com + subnets: + - allocationRanges: + - end: 172.23.0.250 + # we need some extra offset to avoid overlapping with octavia + # controlplane IPs + start: 172.23.0.115 + cidr: 172.23.0.0/24 + name: subnet1 + vlan: 23 + routes: + - destination: 172.24.0.0/16 + nexthop: 172.23.0.150 mtu: 1500 vlan: 23 base_iface: enp7s0 diff --git a/examples/dt/bgp/bgp_dt01/control-plane/service-values.yaml b/examples/dt/bgp/bgp_dt01/control-plane/service-values.yaml index 6be14fea6..8ba7b1036 100644 --- a/examples/dt/bgp/bgp_dt01/control-plane/service-values.yaml +++ b/examples/dt/bgp/bgp_dt01/control-plane/service-values.yaml @@ -30,6 +30,11 @@ data: enabled: true amphoraImageContainerImage: quay.io/gthiemonge/octavia-amphora-image apacheContainerImage: registry.redhat.io/ubi9/httpd-24:latest + lbMgmtNetwork: + availabilityZones: + - zone-1 + createDefaultLbMgmtNetwork: true + manageLbMgmtNetworks: true octaviaAPI: networkAttachments: - internalapi @@ -60,12 +65,15 @@ data: nicMappings: datacentre: ocpbr octavia: octbr - external-ids: - enable-chassis-as-gateway: false + availability-zones: + - zone-1 neutron: customServiceConfig: | [DEFAULT] vlan_transparent = true debug = true + default_availability_zones = zone-2 [ovs] igmp_snooping_enable = true + [ovn] + ovn_emit_need_to_frag = true diff --git a/examples/dt/bgp/bgp_dt01/edpm/computes/values.yaml b/examples/dt/bgp/bgp_dt01/edpm/computes/values.yaml index 87517ffb9..afea9d951 100644 --- a/examples/dt/bgp/bgp_dt01/edpm/computes/values.yaml +++ b/examples/dt/bgp/bgp_dt01/edpm/computes/values.yaml @@ -28,6 +28,9 @@ data: edpm_frr_bgp_uplinks: - nic3 - nic4 + edpm_ovn_bridge_mappings: + - "datacentre:br-ex" + - "octavia:br-octavia" timesync_ntp_servers: - hostname: pool.ntp.org # conntrack is necessary for some tobiko tests @@ -64,7 +67,7 @@ data: # force the MAC address of the bridge to this interface primary: true {% for network in nodeset_networks %} - {% if not network.lower().startswith('bgp') %} + {% if not network.lower().startswith('bgp') and network.lower() != 'octavia' %} - type: vlan mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }} vlan_id: {{ lookup('vars', networks_lower[network] ~ '_vlan_id') }} @@ -78,6 +81,25 @@ data: routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }} {% endif %} {% endfor %} + - type: ovs_bridge + name: br-octavia + use_dhcp: false + # dns_servers: {{ ctlplane_dns_nameservers }} + # domain: {{ dns_search_domains }} + addresses: [] + routes: [] + members: + - type: vlan + mtu: {{ lookup('vars', 'octavia_mtu') }} + vlan_id: {{ lookup('vars', 'octavia_vlan_id') }} + addresses: + - ip_netmask: >- + {{ + lookup('vars', 'octavia_ip') + }}/{{ + lookup('vars', 'octavia_cidr') + }} + routes: {{ lookup('vars', 'octavia_host_routes') }} - type: interface name: nic3 use_dhcp: false diff --git a/examples/dt/bgp/bgp_dt01/edpm/networkers/values.yaml b/examples/dt/bgp/bgp_dt01/edpm/networkers/values.yaml index 0d7eae44c..99b6acdcd 100644 --- a/examples/dt/bgp/bgp_dt01/edpm/networkers/values.yaml +++ b/examples/dt/bgp/bgp_dt01/edpm/networkers/values.yaml @@ -21,6 +21,8 @@ data: ansiblePort: 22 ansibleVars: edpm_ovn_encap_ip: "{{ lookup('vars', 'bgpmainnet_ip') }}" + edpm_ovn_availability_zones: + - zone-2 edpm_ovn_bgp_agent_expose_tenant_networks: false edpm_frr_bgp_ipv4_src_network: bgpmainnet edpm_frr_bgp_ipv6_src_network: bgpmainnetv6 @@ -28,6 +30,9 @@ data: edpm_frr_bgp_uplinks: - nic3 - nic4 + edpm_ovn_bridge_mappings: + - "datacentre:br-ex" + - "octavia:br-octavia" timesync_ntp_servers: - hostname: pool.ntp.org # conntrack is necessary for some tobiko tests @@ -64,7 +69,7 @@ data: # force the MAC address of the bridge to this interface primary: true {% for network in nodeset_networks %} - {% if not network.lower().startswith('bgp') %} + {% if not network.lower().startswith('bgp') and network.lower() != 'octavia' %} - type: vlan mtu: {{ lookup('vars', networks_lower[network] ~ '_mtu') }} vlan_id: {{ lookup('vars', networks_lower[network] ~ '_vlan_id') }} @@ -78,6 +83,25 @@ data: routes: {{ lookup('vars', networks_lower[network] ~ '_host_routes') }} {% endif %} {% endfor %} + - type: ovs_bridge + name: br-octavia + use_dhcp: false + # dns_servers: {{ ctlplane_dns_nameservers }} + # domain: {{ dns_search_domains }} + addresses: [] + routes: [] + members: + - type: vlan + mtu: {{ lookup('vars', 'octavia_mtu') }} + vlan_id: {{ lookup('vars', 'octavia_vlan_id') }} + addresses: + - ip_netmask: >- + {{ + lookup('vars', 'octavia_ip') + }}/{{ + lookup('vars', 'octavia_cidr') + }} + routes: {{ lookup('vars', 'octavia_host_routes') }} - type: interface name: nic3 use_dhcp: false diff --git a/examples/dt/bgp/control-plane/nncp/values.yaml b/examples/dt/bgp/control-plane/nncp/values.yaml index d48374acb..e909663e8 100644 --- a/examples/dt/bgp/control-plane/nncp/values.yaml +++ b/examples/dt/bgp/control-plane/nncp/values.yaml @@ -177,7 +177,19 @@ data: } } octavia: - dnsDomain: octavia.openstack.lab + dnsDomain: octavia.example.com + subnets: + - allocationRanges: + - end: 172.23.0.250 + # we need some extra offset to avoid overlapping with octavia + # controlplane IPs + start: 172.23.0.115 + cidr: 172.23.0.0/24 + name: subnet1 + vlan: 23 + routes: + - destination: 172.24.0.0/16 + nexthop: 172.23.0.150 mtu: 1500 vlan: 23 base_iface: enp8s0 diff --git a/examples/dt/bgp/control-plane/service-values.yaml b/examples/dt/bgp/control-plane/service-values.yaml index 0eb92251a..9254fde9d 100644 --- a/examples/dt/bgp/control-plane/service-values.yaml +++ b/examples/dt/bgp/control-plane/service-values.yaml @@ -31,6 +31,9 @@ data: enabled: true amphoraImageContainerImage: quay.io/gthiemonge/octavia-amphora-image apacheContainerImage: registry.redhat.io/ubi9/httpd-24:latest + lbMgmtNetwork: + createDefaultLbMgmtNetwork: true + manageLbMgmtNetworks: true octaviaAPI: networkAttachments: - internalapi diff --git a/examples/dt/uni01alpha/control-plane/service-values.yaml b/examples/dt/uni01alpha/control-plane/service-values.yaml index fd340e1d8..e5daa184c 100644 --- a/examples/dt/uni01alpha/control-plane/service-values.yaml +++ b/examples/dt/uni01alpha/control-plane/service-values.yaml @@ -94,8 +94,11 @@ data: enabled: true amphoraImageContainerImage: quay.io/gthiemonge/octavia-amphora-image apacheContainerImage: registry.redhat.io/ubi9/httpd-24:latest - availabilityZones: - - zone-1 + lbMgmtNetwork: + availabilityZones: + - zone-1 + createDefaultLbMgmtNetwork: true + manageLbMgmtNetworks: true octaviaAPI: networkAttachments: - internalapi