-
Notifications
You must be signed in to change notification settings - Fork 39
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
[bgp] Add new CRD to manage FRRConfiguration
Secondary network interfaces on pods need be announced in a BGP environment. This can be done by creating FRRConfiguration, per default in the metallb namespace. This PR introduce a new CRD which, if an instance got created, the controller watches pods * which have the NAD annotation on it * the NAD has an IPAM configured For each of them a FRRConfiguration gets created. The metallbs k8s service FRRConfiguration of that worker node is taken as the base to create this configuration. Known issue: Since there are then two FRRConfiguration, which hold same configs, like timeouts. It is not possible to update thise. The FRRConfiguration webhook will block those. A possible way to change it, would be stop the infra-operator controller-manager, delete the pod FRRConfigurations, do the change that it gets reflected in the metallb LB FRRConfiguration, then enable the controller that the pod FRRConfiguration get re-created. Depends-On: openstack-k8s-operators/lib-common#588 Jira: OSPRH-12384 Signed-off-by: Martin Schuppert <[email protected]>
- Loading branch information
Showing
22 changed files
with
1,870 additions
and
62 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
157 changes: 157 additions & 0 deletions
157
apis/bases/network.openstack.org_bgpconfigurations.yaml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,157 @@ | ||
--- | ||
apiVersion: apiextensions.k8s.io/v1 | ||
kind: CustomResourceDefinition | ||
metadata: | ||
annotations: | ||
controller-gen.kubebuilder.io/version: v0.14.0 | ||
name: bgpconfigurations.network.openstack.org | ||
spec: | ||
group: network.openstack.org | ||
names: | ||
kind: BGPConfiguration | ||
listKind: BGPConfigurationList | ||
plural: bgpconfigurations | ||
singular: bgpconfiguration | ||
scope: Namespaced | ||
versions: | ||
- name: v1beta1 | ||
schema: | ||
openAPIV3Schema: | ||
description: BGPConfiguration is the Schema for the bgpconfigurations API | ||
properties: | ||
apiVersion: | ||
description: |- | ||
APIVersion defines the versioned schema of this representation of an object. | ||
Servers should convert recognized schemas to the latest internal value, and | ||
may reject unrecognized values. | ||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#resources | ||
type: string | ||
kind: | ||
description: |- | ||
Kind is a string value representing the REST resource this object represents. | ||
Servers may infer this from the endpoint the client submits requests to. | ||
Cannot be updated. | ||
In CamelCase. | ||
More info: https://git.k8s.io/community/contributors/devel/sig-architecture/api-conventions.md#types-kinds | ||
type: string | ||
metadata: | ||
type: object | ||
spec: | ||
description: BGPConfigurationSpec defines the desired state of BGPConfiguration | ||
properties: | ||
frrConfigurationNamespace: | ||
default: metallb-system | ||
description: FRRConfigurationNamespace - namespace where to create | ||
the FRRConfiguration. Defaults to metallb-system. | ||
type: string | ||
frrNodeConfigurationSelector: | ||
description: |- | ||
FRRNodeConfigurationSelector - per default the FRRConfiguration per node within the FRRConfigurationNamespace | ||
gets queried using the FRRConfiguration.spec.NodeSelector `kubernetes.io/hostname: worker-0`. In case a more | ||
specific | ||
items: | ||
description: FRRNodeConfigurationSelectorType - | ||
properties: | ||
frrConfigurationNamespace: | ||
description: NodeName - name of the node object as seen by | ||
running the `oc get nodes` command | ||
type: string | ||
nodeSelector: | ||
description: NodeSelector to identify the correct FRRConfiguration | ||
from spec.nodeSelector | ||
properties: | ||
matchExpressions: | ||
description: matchExpressions is a list of label selector | ||
requirements. The requirements are ANDed. | ||
items: | ||
description: |- | ||
A label selector requirement is a selector that contains values, a key, and an operator that | ||
relates the key and values. | ||
properties: | ||
key: | ||
description: key is the label key that the selector | ||
applies to. | ||
type: string | ||
operator: | ||
description: |- | ||
operator represents a key's relationship to a set of values. | ||
Valid operators are In, NotIn, Exists and DoesNotExist. | ||
type: string | ||
values: | ||
description: |- | ||
values is an array of string values. If the operator is In or NotIn, | ||
the values array must be non-empty. If the operator is Exists or DoesNotExist, | ||
the values array must be empty. This array is replaced during a strategic | ||
merge patch. | ||
items: | ||
type: string | ||
type: array | ||
required: | ||
- key | ||
- operator | ||
type: object | ||
type: array | ||
matchLabels: | ||
additionalProperties: | ||
type: string | ||
description: |- | ||
matchLabels is a map of {key,value} pairs. A single {key,value} in the matchLabels | ||
map is equivalent to an element of matchExpressions, whose key field is "key", the | ||
operator is "In", and the values array contains only "value". The requirements are ANDed. | ||
type: object | ||
type: object | ||
x-kubernetes-map-type: atomic | ||
type: object | ||
type: array | ||
type: object | ||
status: | ||
description: BGPConfigurationStatus defines the observed state of BGPConfiguration | ||
properties: | ||
conditions: | ||
description: Conditions | ||
items: | ||
description: Condition defines an observation of a API resource | ||
operational state. | ||
properties: | ||
lastTransitionTime: | ||
description: |- | ||
Last time the condition transitioned from one status to another. | ||
This should be when the underlying condition changed. If that is not known, then using the time when | ||
the API field changed is acceptable. | ||
format: date-time | ||
type: string | ||
message: | ||
description: A human readable message indicating details about | ||
the transition. | ||
type: string | ||
reason: | ||
description: The reason for the condition's last transition | ||
in CamelCase. | ||
type: string | ||
severity: | ||
description: |- | ||
Severity provides a classification of Reason code, so the current situation is immediately | ||
understandable and could act accordingly. | ||
It is meant for situations where Status=False and it should be indicated if it is just | ||
informational, warning (next reconciliation might fix it) or an error (e.g. DB create issue | ||
and no actions to automatically resolve the issue can/should be done). | ||
For conditions where Status=Unknown or Status=True the Severity should be SeverityNone. | ||
type: string | ||
status: | ||
description: Status of the condition, one of True, False, Unknown. | ||
type: string | ||
type: | ||
description: Type of condition in CamelCase. | ||
type: string | ||
required: | ||
- lastTransitionTime | ||
- status | ||
- type | ||
type: object | ||
type: array | ||
type: object | ||
type: object | ||
served: true | ||
storage: true | ||
subresources: | ||
status: {} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.