MetalLBConfig¶
Available as TechPreview since 2.21.0 and 2.21.1 for MOSK 22.5
Caution
This feature is available as Technology Preview. Use such configuration for testing and evaluation purposes only. For the Technology Preview feature definition, refer to Technology Preview features.
This section describes the MetalLBConfig
custom resource used in the
Container Cloud API that contains the MetalLB configuration objects for a
particular cluster.
For demonstration purposes, the Container Cloud MetalLBConfig
custom resource is split into the following major sections:
The Container Cloud API also uses the third-party open source MetalLB API. For details, see MetalLB objects.
MetalLBConfig metadata¶
The Container Cloud MetalLBConfig
CR contains the following fields:
apiVersion
API version of the object that is
kaas.mirantis.com/v1alpha1
.
kind
Object type that is
MetalLBConfig
.
The metadata
object field of the MetalLBConfig
resource
contains the following fields:
name
Name of the
MetalLBConfig
object.
namespace
Project in which the object was created. Must match the project name of the target cluster.
labels
Key-value pairs attached to the object:
kaas.mirantis.com/provider
Provider type that is
baremetal
.
kaas.mirantis.com/region
Region name that matches the region name of the target cluster.
cluster.sigs.k8s.io/cluster-name
Name of the cluster that this MetalLB configuration should be applied to.
Warning
Labels and annotations that are not documented in this API Reference are generated automatically by Container Cloud. Do not modify them using the Container Cloud API.
Configuration example:
apiVersion: kaas.mirantis.com/v1alpha1
kind: MetalLBConfig
metadata:
name: metallb-demo
namespace: test-ns
labels:
kaas.mirantis.com/provider: baremetal
kaas.mirantis.com/region: region-one
cluster.sigs.k8s.io/cluster-name: test-cluster
MetalLBConfig spec¶
The spec
field of the MetalLBConfig
object represents the
MetalLBConfigSpec
subresource that contains the description of MetalLB
configuration objects. These objects are created on the target cluster during
its deployment.
The spec
field contains the following optional fields:
addressPools
List of
MetalLBAddressPool
objects to create MetalLBAddressPool
objects.
bfdProfiles
List of
MetalLBBFDProfile
objects to create MetalLBBFDProfile
objects.
bgpAdvertisements
List of
MetalLBBGPAdvertisement
objects to create MetalLBBGPAdvertisement
objects.
bgpPeers
List of
MetalLBBGPPeer
objects to create MetalLBBGPPeer
objects.
communities
List of
MetalLBCommunity
objects to create MetalLBCommunity
objects.
ipAddressPools
List of
MetalLBIPAddressPool
objects to create MetalLBIPAddressPool
objects.
l2Advertisements
List of
MetalLBL2Advertisement
objects to create MetalLBL2Advertisement
objects.
The objects listed in the spec
field of the MetalLBConfig
object,
such as MetalLBIPAddressPool
, MetalLBL2Advertisement
, and so on,
are used as templates for the MetalLB objects that will be created on the
target cluster. Each of these objects has the following structure:
labels
Optional. Key-value pairs attached to the
metallb.io/<objectName>
object asmetadata.labels
.
name
Name of the
metallb.io/<objectName>
object.
spec
Contents of the
spec
section of themetallb.io/<objectName>
object. Thespec
field has themetallb.io/<objectName>Spec
type. For details, see MetalLB objects.
For example, MetalLBIPAddressPool
is a template for the
metallb.io/IPAddressPool
object and has the following structure:
labels
Optional. Key-value pairs attached to the
metallb.io/IPAddressPool
object asmetadata.labels
.
name
Name of the
metallb.io/IPAddressPool
object.
spec
Contents of
spec
section of themetallb.io/IPAddressPool
object. Thespec
has themetallb.io/IPAddressPoolSpec
type.
MetalLB objects¶
Container Cloud supports the following MetalLB object types of the
metallb.io
API group:
|
|
As of v1beta1
and v1beta2
API versions, metadata of MetalLB objects
has a standard format with no specific fields or labels defined for any
particular object:
apiVersion
API version of the object that can be
metallb.io/v1beta1
ormetallb.io/v1beta2
for Container Cloud v2.21.
kind
Object type that is one of the
metallb.io
types listed above. For example,AddressPool
.
metadata
Object metadata that contains the following subfields:
name
Name of the object.
namespace
Namespace where the MetalLB components are located. It matches
metallb-system
in Container Cloud.
labels
Optional. Key-value pairs that are attached to the object. It can be an arbitrary set of labels. No special labels are defined as of
v1beta1
andv1beta2
API versions.
The MetalLBConfig
object contains spec
sections of the
metallb.io/<objectName>
objects that have the
metallb.io/<objectName>Spec
type. For metallb.io/<objectName>
and
metallb.io/<objectName>Spec
types definitions, refer to the official
MetalLB documentation:
MetalLB configuration examples¶
Configuration example for L2 announcements:
apiVersion: kaas.mirantis.com/v1alpha1
kind: MetalLBConfig
metadata:
labels:
cluster.sigs.k8s.io/cluster-name: managed-cluster
kaas.mirantis.com/region: region-one
name: child-l2
namespace: managed-ns
spec:
ipAddressPools:
- name: services
spec:
addresses:
- 10.100.91.151-10.100.91.170
autoAssign: true
avoidBuggyIPs: false
l2Advertisements:
- name: services
spec:
ipAddressPools:
- services
The following MetalLB objects will be created in the
managed-ns/managed-cluster
cluster during deployment:
apiVersion: metallb.io/v1beta1
kind: IPAddressPool
metadata:
name: services
namespace: metallb-system
spec:
addresses:
- 10.100.91.151-10.100.91.170
autoAssign: true
avoidBuggyIPs: false
apiVersion: metallb.io/v1beta1
kind: L2Advertisement
metadata:
name: services
namespace: metallb-system
spec:
ipAddressPools:
- services
Configuration example for BGP announcements:
apiVersion: kaas.mirantis.com/v1alpha1
kind: MetalLBConfig
metadata:
labels:
cluster.sigs.k8s.io/cluster-name: managed-cluster
kaas.mirantis.com/region: region-one
name: child-bgp
namespace: managed-ns
spec:
bgpPeers:
- name: bgp-peer-rack1
spec:
peerAddress: 10.0.41.1
peerASN: 65013
myASN: 65099
nodeSelectors:
- matchLabels:
rack-id: rack1
- name: bgp-peer-rack2
spec:
peerAddress: 10.0.42.1
peerASN: 65023
myASN: 65099
nodeSelectors:
- matchLabels:
rack-id: rack2
- name: bgp-peer-rack3
spec:
peerAddress: 10.0.43.1
peerASN: 65033
myASN: 65099
nodeSelectors:
- matchLabels:
rack-id: rack3
ipAddressPools:
- name: services
spec:
addresses:
- 10.100.191.151-10.100.191.170
autoAssign: true
avoidBuggyIPs: false
bgpAdvertisements:
- name: services
spec:
ipAddressPools:
- services