Neutron using ovs

apiVersion: yaook.cloud/v1
kind: NeutronDeployment
metadata:
  name: neutron-ovs
spec:
  api:
    ingress:
      fqdn: "neutron.yaook.cloud"
      port: 32443
    replicas: 1
  database:
    backup:
      schedule: "0 * * * *"
    proxy: {}
    replicas: 1
  issuerRef:
    name: ca-issuer
  keystoneRef:
    name: keystone
  messageQueue:
    replicas: 1
  neutronConfig:
    DEFAULT:
      debug: true
  neutronML2Config:
    ml2_type_flat:
      flat_networks:
      - physnet1
  novaRef:
    name: nova
  policy:
    "context_is_admin": "role:admin"
  region:
    name: MyRegion
  setup:
    ovs:
      l2:
        configTemplates:
        - nodeSelectors:
          - matchLabels: {}  # matches all!
          # this key will be removed, use neutronOpenvSwitchAgentConfig instead
          neutronConfig:
            DEFAULT:
              debug: true
          neutronOpenvSwitchAgentConfig:
            DEFAULT:
              debug: true
        - nodeSelectors:
          - matchLabels:
              "network.yaook.cloud/neutron-l3-agent": "true"
          # this key will be removed, use neutronOpenvSwitchAgentConfig instead
          neutronConfig:
            DEFAULT:
              debug: True
          neutronOpenvSwitchAgentConfig:
            ovs:
              bridge_mappings: []
          bridgeConfig: []
      dhcp:
        configTemplates:
        - nodeSelectors:
          - matchLabels: {}
        # this key will be removed, use neutronDHCPAgentConfig instead
          neutronConfig:
            DEFAULT:
              debug: true
          neutronDHCPAgentConfig:
            DEFAULT:
              debug: true
      l3:
        configTemplates:
        - nodeSelectors:
          - matchLabels: {}
        # this key will be removed, use neutronL3AgentConfig instead
          neutronConfig:
            DEFAULT:
              debug: true
          neutronL3AgentConfig:
            DEFAULT:
              debug: true
            agent:
              debug_iptables_rules: true
      bgp:
        bgpdr-agent: # duplicate this section with a different key to have two or more bgp dragents
        # the key needs to be lowercase or else the operator doesn't create the resources
          configTemplates:
          - nodeSelectors:
            - matchLabels: {}
            # this key will be removed, use neutronBGPDRAgentConfig instead
            neutronConfig:
              DEFAULT:
                debug: True
            neutronBGPDRAgentConfig:
              DEFAULT:
                debug: True
          - nodeSelectors:
            - matchLabels:
                "network.yaook.cloud/neutron-l3-agent": "true"
            bgpInterfaceMapping:
                bridgeName: some-bridge-from-ovs-bridge_mappings
  targetRelease: queens

Neutron using ovn

apiVersion: yaook.cloud/v1
kind: NeutronDeployment
metadata:
  name: neutron-ovn
spec:
  api:
    ingress:
      fqdn: "neutron.yaook.cloud"
      port: 32443
    replicas: 1
  database:
    backup:
      schedule: "0 * * * *"
    proxy: {}
    replicas: 1
  issuerRef:
    name: ca-issuer
  keystoneRef:
    name: keystone
  messageQueue:
    replicas: 1
  neutronConfig:
    DEFAULT:
      debug: true
  neutronML2Config:
    ml2_type_flat:
      flat_networks:
      - physnet1
  novaRef:
    name: nova
  policy:
    "context_is_admin": "role:admin"
  region:
    name: MyRegion
  setup:
    ovn:
      ovsdb:
        replicas: 1
        backup:
          schedule: "0 * * * *"
      northd:
        replicas: 3
      controller:
        configTemplates:
        - nodeSelectors:
          - matchLabels: {}  # all nodes
        - nodeSelectors:
          - matchLabels:
              "network.yaook.cloud/neutron-network-node": "true"
          bridgeConfig:
            - bridgeName: br-ex
              uplinkDevice: eth1
              openstackPhysicalNetwork: "physnet1"
  targetRelease: yoga

Further parameters

spec:setup:ovs:l2:configTemplates:nodeSelectors[]:overlayNetworkConfig:ovs_local_ip_subnet

The IP address configured via [ovs]/local_ip is used for the local overlay (tunnel) network endpoint by the Neutron Open vSwitch agent. If not specified in the NeutronDeployment resource the Kubernetes node IP address is used. By specifying a subnet via spec:setup:ovs:l2:configTemplates:nodeSelectors[]:overlayNetworkConfig:ovs_local_ip_subnet the IP address of the corresponding interface of the node which has an IP address for that subnet is used for [ovs]/local_ip instead.