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 Nov 17, 2022
1 parent 803c45d commit e93bc17
Show file tree
Hide file tree
Showing 8 changed files with 743 additions and 200 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -151,6 +151,61 @@ 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 is routed to the API 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: bgpConfiguration describes the configuration of a BGP load balancer for the API server. It is only used if apiLoadBalancer is set to `BGP`.
type: object
properties:
speakers:
description: speakers is a list of BGP speaker configurations. We require a speaker configuration for every failure domain hosting a control plane node. The list must contain at least one item.
type: array
minItems: 1
items:
description: ControlPlaneBGPSpeaker describes the BGP speaker configuration that will be used for the control plane.
type: object
required:
- failureDomain
properties:
asn:
description: 'asn specifies the Autonomous System number to be used by the BGP speaker of the Control plane node. Control plane nodes in a failure domain where this field is not set are each assigned a distinct number: master-0 4273211230, master-1 4273211231, and master-2 4273211232. If multiple Control plane nodes are assigned the same failure domain, this field cannot be set.'
type: string
failureDomain:
description: failureDomain is the name of a failure domain which this BGP configuration applies to. A failure domain with that name must be defined in the Platform spec. If there are no failure domains defined, use "default".
type: string
peers:
description: peers is a list of all BGP peers of the speaker for the VIPs of this failure domain. The list must contain at least one item.
type: array
minItems: 1
items:
description: ControlPlaneBGPPeer describes a BGP peer that the control plane should peer with.
type: object
required:
- ip
properties:
asn:
description: asn is the Autonomous System Number of the peer.
type: string
ip:
description: ip is the IP address of the peer, as reachable from the Control plane machine. It may be either IPv4 or IPv6.
type: string
password:
description: password for BGP authentication against the peer.
type: string
x-kubernetes-list-map-keys:
- failureDomain
x-kubernetes-list-type: map
type:
description: controlPlaneLoadBalancerType 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. This default is subject to change over time. The current default value is `VRRP`.
type: string
enum:
- VRRP
- BGP
ovirt:
description: Ovirt contains settings specific to the oVirt infrastructure provider.
type: object
Expand Down

0 comments on commit e93bc17

Please sign in to comment.