Skip to content

Commit

Permalink
OSASINFRA-2999 - ControlPlaneLoadBalancer support
Browse files Browse the repository at this point in the history
Creates a new interface to be able to choose which load-balancer to
deploy in the Control Plane.

For on-prem, this will allow to not deploy Keepalived/HAproxy but use
BGP (with FRR) in MCO.

This API is required so:
* we expose load-balancer options from the install-config
* we add these options in the PlatformSpec, so it can be used in the
  cluster, and changed on day 2.

enhancement: openshift/enhancements#1281
feature: OSASINFRA-2999

Co-authored-by: Matthew Booth <mbooth@redhat.com>
Co-authored-by: Pierre Prinetti <pierreprinetti@redhat.com>
Co-authored-by: Emilien Macchi <emilien@redhat.com>
  • Loading branch information
3 people committed Dec 13, 2022
1 parent d85cfce commit fdd8720
Show file tree
Hide file tree
Showing 8 changed files with 790 additions and 200 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,70 @@ spec:
openstack:
description: OpenStack contains settings specific to the OpenStack infrastructure provider.
type: object
properties:
controlPlaneLoadBalancer:
description: controlPlaneLoadBalancer defines how traffic destined to the OpenShift API and Ingress is routed to the servers. When omitted, this means no opinion and the platform is left to choose a reasonable default. This default is subject to change over time. The current default configuration uses VRRP.
type: object
required:
- type
properties:
bgp:
description: BGP refers to the list of BGP speaker configurations. We require a speaker configuration for every subnet where we want to peer. The list must contain at least one item.
type: object
properties:
speakers:
description: speakers is a list of BGP speaker configurations. We require a speaker configuration for every control plane subnet. The list must contain at least one item.
type: array
minItems: 1
items:
description: BGPSpeaker defines how a BGP speaker will be configured. Each speaker will result into a BGP protocol process with the specified ASN, for a unique subnet. Each speaker has a list of peers, which will be configured as BGP neighbors.
type: object
required:
- asn
- peers
properties:
asn:
description: asn specifies the local autonomous system number that will be used to peer with remote routers.
type: integer
format: int32
maximum: 4294967295
minimum: 0
peers:
description: peers is a list of the BGP peers that need to be configured for a the speaker for a specific subnet.
type: array
minItems: 1
items:
description: BGPPeer describes the configuration of a BGP peering neighbor.
type: object
required:
- asn
- ip
properties:
asn:
description: asn specifies the remote autonomous system number to peer with the remote router.
type: integer
format: int32
maximum: 4294967295
minimum: 0
ip:
description: ip is the IP address of the BGP neighbor and has to be reachable from the node. It may be either IPv4 or IPv6.
type: string
format: ip
password:
description: password to be used with the tcp socket that is being used to connect to the remote peer
type: string
subnetCIDR:
description: subnetCIDR is the CIDR which this BGP configuration applies to.
type: string
x-kubernetes-list-map-keys:
- subnetCIDR
x-kubernetes-list-type: map
type:
description: type defines the type of load balancer which will be configured for the control plane VIPs. Permitted values are `VRRP` and `BGP`. When omitted, this means no opinion and the platform is left to choose a reasonable default.
type: string
enum:
- VRRP
- BGP
ovirt:
description: Ovirt contains settings specific to the oVirt infrastructure provider.
type: object
Expand Down

0 comments on commit fdd8720

Please sign in to comment.