diff --git a/bin/metallb-operator.yaml b/bin/metallb-operator.yaml index ac5e1a400..15c3ff117 100644 --- a/bin/metallb-operator.yaml +++ b/bin/metallb-operator.yaml @@ -9,7 +9,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 name: bfdprofiles.metallb.io spec: group: metallb.io @@ -130,7 +130,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 name: bgpadvertisements.metallb.io spec: group: metallb.io @@ -347,14 +347,13 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 name: bgppeers.metallb.io spec: conversion: strategy: Webhook webhook: clientConfig: - caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGWlRDQ0EwMmdBd0lCQWdJVU5GRW1XcTM3MVpKdGkrMmlSQzk1WmpBV1MxZ3dEUVlKS29aSWh2Y05BUUVMDQpCUUF3UWpFTE1Ba0dBMVVFQmhNQ1dGZ3hGVEFUQmdOVkJBY01ERVJsWm1GMWJIUWdRMmwwZVRFY01Cb0dBMVVFDQpDZ3dUUkdWbVlYVnNkQ0JEYjIxd1lXNTVJRXgwWkRBZUZ3MHlNakEzTVRrd09UTXlNek5hRncweU1qQTRNVGd3DQpPVE15TXpOYU1FSXhDekFKQmdOVkJBWVRBbGhZTVJVd0V3WURWUVFIREF4RVpXWmhkV3gwSUVOcGRIa3hIREFhDQpCZ05WQkFvTUUwUmxabUYxYkhRZ1EyOXRjR0Z1ZVNCTWRHUXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDDQpEd0F3Z2dJS0FvSUNBUUNxVFpxMWZRcC9vYkdlenhES0o3OVB3Ny94azJwellualNzMlkzb1ZYSm5sRmM4YjVlDQpma2ZZQnY2bndscW1keW5PL2phWFBaQmRQSS82aFdOUDBkdVhadEtWU0NCUUpyZzEyOGNXb3F0MGNTN3pLb1VpDQpvcU1tQ0QvRXVBeFFNZjhRZDF2c1gvVllkZ0poVTZBRXJLZEpIaXpFOUJtUkNkTDBGMW1OVW55Rk82UnRtWFZUDQpidkxsTDVYeTc2R0FaQVBLOFB4aVlDa0NtbDdxN0VnTWNiOXlLWldCYmlxQ3VkTXE5TGJLNmdKNzF6YkZnSXV4DQo1L1pXK2JraTB2RlplWk9ZODUxb1psckFUNzJvMDI4NHNTWW9uN0pHZVZkY3NoUnh5R1VpSFpSTzdkaXZVTDVTDQpmM2JmSDFYbWY1ZDQzT0NWTWRuUUV2NWVaOG8zeWVLa3ZrbkZQUGVJMU9BbjdGbDlFRVNNR2dhOGFaSG1URSttDQpsLzlMSmdDYjBnQmtPT0M0WnV4bWh2aERKV1EzWnJCS3pMQlNUZXN0NWlLNVlwcXRWVVk2THRyRW9FelVTK1lsDQpwWndXY2VQWHlHeHM5ZURsR3lNVmQraW15Y3NTU1UvVno2Mmx6MnZCS21NTXBkYldDQWhud0RsRTVqU2dyMjRRDQp0eGNXLys2N3d5KzhuQlI3UXdqVTFITndVRjBzeERWdEwrZ1NHVERnSEVZSlhZelYvT05zMy94TkpoVFNPSkxNDQpoeXNVdyttaGdackdhbUdXcHVIVU1DUitvTWJzMTc1UkcrQjJnUFFHVytPTjJnUTRyOXN2b0ZBNHBBQm8xd1dLDQpRYjRhY3pmeVVscElBOVFoSmFsZEY3S3dPSHVlV3gwRUNrNXg0T2tvVDBvWVp0dzFiR0JjRGtaSmF3SURBUUFCDQpvMU13VVRBZEJnTlZIUTRFRmdRVW90UlNIUm9IWTEyRFZ4R0NCdEhpb1g2ZmVFQXdId1lEVlIwakJCZ3dGb0FVDQpvdFJTSFJvSFkxMkRWeEdDQnRIaW9YNmZlRUF3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCDQpBUXNGQUFPQ0FnRUFSbkpsWWRjMTFHd0VxWnh6RDF2R3BDR2pDN2VWTlQ3aVY1d3IybXlybHdPYi9aUWFEa0xYDQpvVStaOVVXT1VlSXJTdzUydDdmQUpvVVAwSm5iYkMveVIrU1lqUGhvUXNiVHduOTc2ZldBWTduM3FMOXhCd1Y0DQphek41OXNjeUp0dlhMeUtOL2N5ak1ReDRLajBIMFg0bWJ6bzVZNUtzWWtYVU0vOEFPdWZMcEd0S1NGVGgrSEFDDQpab1Q5YnZHS25adnNHd0tYZFF0Wnh0akhaUjVqK3U3ZGtQOTJBT051RFNabS8rWVV4b2tBK09JbzdSR3BwSHNXDQo1ZTdNY0FTVXRtb1FORXd6dVFoVkJaRWQ1OGtKYjUrV0VWbGNzanlXNnRTbzErZ25tTWNqR1BsMWgxR2hVbjV4DQpFY0lWRnBIWXM5YWo1NmpBSjk1MVQvZjhMaWxmTlVnanBLQ0c1bnl0SUt3emxhOHNtdGlPdm1UNEpYbXBwSkI2DQo4bmdHRVluVjUrUTYwWFJ2OEhSSGp1VG9CRHVhaERrVDA2R1JGODU1d09FR2V4bkZpMXZYWUxLVllWb1V2MXRKDQo4dVdUR1pwNllDSVJldlBqbzg5ZytWTlJSaVFYUThJd0dybXE5c0RoVTlqTjA0SjdVL1RvRDFpNHE3VnlsRUc5DQorV1VGNkNLaEdBeTJIaEhwVncyTGFoOS9lUzdZMUZ1YURrWmhPZG1laG1BOCtqdHNZamJadnR5Mm1SWlF0UUZzDQpUU1VUUjREbUR2bVVPRVRmeStpRHdzK2RkWXVNTnJGeVVYV2dkMnpBQU4ydVl1UHFGY2pRcFNPODFzVTJTU3R3DQoxVzAyeUtYOGJEYmZFdjBzbUh3UzliQnFlSGo5NEM1Mjg0YXpsdTBmaUdpTm1OUEM4ckJLRmhBPQ0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ== service: name: metallb-webhook-service namespace: metallb-system @@ -580,6 +579,14 @@ spec: holdTime: description: Requested BGP hold time, per RFC4271. type: string + interface: + description: |- + Interface is the node interface over which the unnumbered BGP peering will + be established. No API validation takes place as that string value + represents an interface name on the host and if user provides an invalid + value, only the actual BGP session will not be established. + Address and Interface are mutually exclusive and one of them must be specified. + type: string keepaliveTime: description: Requested BGP keepalive time, per RFC4271. type: string @@ -679,7 +686,7 @@ spec: default: 179 description: Port to dial when establishing the session. maximum: 16384 - minimum: 0 + minimum: 1 type: integer routerID: description: BGP router ID to advertise to the peer @@ -694,7 +701,6 @@ spec: type: string required: - myASN - - peerAddress type: object status: description: BGPPeerStatus defines the observed state of Peer. @@ -709,7 +715,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 name: communities.metallb.io spec: group: metallb.io @@ -1318,7 +1324,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 name: ipaddresspools.metallb.io spec: group: metallb.io @@ -1521,6 +1527,28 @@ spec: type: object status: description: IPAddressPoolStatus defines the observed state of IPAddressPool. + properties: + assignedIPv4: + description: AssignedIPv4 is the number of assigned IPv4 addresses. + format: int64 + type: integer + assignedIPv6: + description: AssignedIPv6 is the number of assigned IPv6 addresses. + format: int64 + type: integer + availableIPv4: + description: AvailableIPv4 is the number of available IPv4 addresses. + format: int64 + type: integer + availableIPv6: + description: AvailableIPv6 is the number of available IPv6 addresses. + format: int64 + type: integer + required: + - assignedIPv4 + - assignedIPv6 + - availableIPv4 + - availableIPv6 type: object required: - spec @@ -1534,7 +1562,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 name: l2advertisements.metallb.io spec: group: metallb.io @@ -3658,7 +3686,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 name: servicebgpstatuses.metallb.io spec: group: metallb.io @@ -3744,7 +3772,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 name: servicel2statuses.metallb.io spec: group: metallb.io @@ -4476,6 +4504,12 @@ rules: - get - list - watch +- apiGroups: + - metallb.io + resources: + - ipaddresspools/status + verbs: + - update - apiGroups: - metallb.io resources: diff --git a/bindata/deployment/helm/metallb/README.md b/bindata/deployment/helm/metallb/README.md index 7a104ba05..2737c20ed 100644 --- a/bindata/deployment/helm/metallb/README.md +++ b/bindata/deployment/helm/metallb/README.md @@ -138,7 +138,7 @@ Kubernetes: `>= 1.19.0-0` | speaker.livenessProbe.successThreshold | int | `1` | | | speaker.livenessProbe.timeoutSeconds | int | `1` | | | speaker.logLevel | string | `"info"` | Speaker log level. Must be one of: `all`, `debug`, `info`, `warn`, `error` or `none` | -| speaker.memberlist.enabled | bool | `true` | | +| speaker.memberlist.enabled | bool | `true` | When enabled: false, the speaker pods must run on all nodes | | speaker.memberlist.mlBindAddrOverride | string | `""` | | | speaker.memberlist.mlBindPort | int | `7946` | | | speaker.memberlist.mlSecretKeyPath | string | `"/etc/ml_secret_key"` | | diff --git a/bindata/deployment/helm/metallb/templates/speaker.yaml b/bindata/deployment/helm/metallb/templates/speaker.yaml index d663d3326..748c1649f 100644 --- a/bindata/deployment/helm/metallb/templates/speaker.yaml +++ b/bindata/deployment/helm/metallb/templates/speaker.yaml @@ -8,6 +8,10 @@ {{- fail "frrk8s.enabled frrk8s.external are mutually exclusive!" }} {{- end }} +{{- if and (not .Values.speaker.memberlist.enabled) .Values.speaker.nodeSelector }} +{{- fail "nodeSelector must be empty when memberlist is disabled" }} +{{- end }} + {{- if .Values.speaker.frr.enabled }} # FRR expects to have these files owned by frr:frr on startup. diff --git a/bindata/deployment/helm/metallb/values.yaml b/bindata/deployment/helm/metallb/values.yaml index 50d26bcad..365125ed7 100644 --- a/bindata/deployment/helm/metallb/values.yaml +++ b/bindata/deployment/helm/metallb/values.yaml @@ -262,6 +262,7 @@ speaker: logLevel: info tolerateMaster: true memberlist: + # -- When enabled: false, the speaker pods must run on all nodes enabled: true mlBindPort: 7946 mlBindAddrOverride: "" diff --git a/bundle/manifests/metallb-operator.clusterserviceversion.yaml b/bundle/manifests/metallb-operator.clusterserviceversion.yaml index 6662fb3a1..5fa2dedc6 100644 --- a/bundle/manifests/metallb-operator.clusterserviceversion.yaml +++ b/bundle/manifests/metallb-operator.clusterserviceversion.yaml @@ -432,7 +432,7 @@ metadata: categories: Networking certified: "false" containerImage: quay.io/metallb/metallb-operator - createdAt: "2025-02-13T16:06:49Z" + createdAt: "2025-03-05T17:05:42Z" description: An operator for deploying MetalLB on a kubernetes cluster. operators.operatorframework.io/builder: operator-sdk-v1.34.1 operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 @@ -1062,6 +1062,12 @@ spec: - get - list - watch + - apiGroups: + - metallb.io + resources: + - ipaddresspools/status + verbs: + - update - apiGroups: - metallb.io resources: diff --git a/bundle/manifests/metallb.io_bfdprofiles.yaml b/bundle/manifests/metallb.io_bfdprofiles.yaml index 50f937296..578145115 100644 --- a/bundle/manifests/metallb.io_bfdprofiles.yaml +++ b/bundle/manifests/metallb.io_bfdprofiles.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 creationTimestamp: null name: bfdprofiles.metallb.io spec: diff --git a/bundle/manifests/metallb.io_bgpadvertisements.yaml b/bundle/manifests/metallb.io_bgpadvertisements.yaml index e5caa44de..7037c3322 100644 --- a/bundle/manifests/metallb.io_bgpadvertisements.yaml +++ b/bundle/manifests/metallb.io_bgpadvertisements.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 creationTimestamp: null name: bgpadvertisements.metallb.io spec: diff --git a/bundle/manifests/metallb.io_bgppeers.yaml b/bundle/manifests/metallb.io_bgppeers.yaml index d3621cd21..ae25d2d66 100644 --- a/bundle/manifests/metallb.io_bgppeers.yaml +++ b/bundle/manifests/metallb.io_bgppeers.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 creationTimestamp: null name: bgppeers.metallb.io spec: @@ -10,7 +10,6 @@ spec: strategy: Webhook webhook: clientConfig: - caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGWlRDQ0EwMmdBd0lCQWdJVU5GRW1XcTM3MVpKdGkrMmlSQzk1WmpBV1MxZ3dEUVlKS29aSWh2Y05BUUVMDQpCUUF3UWpFTE1Ba0dBMVVFQmhNQ1dGZ3hGVEFUQmdOVkJBY01ERVJsWm1GMWJIUWdRMmwwZVRFY01Cb0dBMVVFDQpDZ3dUUkdWbVlYVnNkQ0JEYjIxd1lXNTVJRXgwWkRBZUZ3MHlNakEzTVRrd09UTXlNek5hRncweU1qQTRNVGd3DQpPVE15TXpOYU1FSXhDekFKQmdOVkJBWVRBbGhZTVJVd0V3WURWUVFIREF4RVpXWmhkV3gwSUVOcGRIa3hIREFhDQpCZ05WQkFvTUUwUmxabUYxYkhRZ1EyOXRjR0Z1ZVNCTWRHUXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDDQpEd0F3Z2dJS0FvSUNBUUNxVFpxMWZRcC9vYkdlenhES0o3OVB3Ny94azJwellualNzMlkzb1ZYSm5sRmM4YjVlDQpma2ZZQnY2bndscW1keW5PL2phWFBaQmRQSS82aFdOUDBkdVhadEtWU0NCUUpyZzEyOGNXb3F0MGNTN3pLb1VpDQpvcU1tQ0QvRXVBeFFNZjhRZDF2c1gvVllkZ0poVTZBRXJLZEpIaXpFOUJtUkNkTDBGMW1OVW55Rk82UnRtWFZUDQpidkxsTDVYeTc2R0FaQVBLOFB4aVlDa0NtbDdxN0VnTWNiOXlLWldCYmlxQ3VkTXE5TGJLNmdKNzF6YkZnSXV4DQo1L1pXK2JraTB2RlplWk9ZODUxb1psckFUNzJvMDI4NHNTWW9uN0pHZVZkY3NoUnh5R1VpSFpSTzdkaXZVTDVTDQpmM2JmSDFYbWY1ZDQzT0NWTWRuUUV2NWVaOG8zeWVLa3ZrbkZQUGVJMU9BbjdGbDlFRVNNR2dhOGFaSG1URSttDQpsLzlMSmdDYjBnQmtPT0M0WnV4bWh2aERKV1EzWnJCS3pMQlNUZXN0NWlLNVlwcXRWVVk2THRyRW9FelVTK1lsDQpwWndXY2VQWHlHeHM5ZURsR3lNVmQraW15Y3NTU1UvVno2Mmx6MnZCS21NTXBkYldDQWhud0RsRTVqU2dyMjRRDQp0eGNXLys2N3d5KzhuQlI3UXdqVTFITndVRjBzeERWdEwrZ1NHVERnSEVZSlhZelYvT05zMy94TkpoVFNPSkxNDQpoeXNVdyttaGdackdhbUdXcHVIVU1DUitvTWJzMTc1UkcrQjJnUFFHVytPTjJnUTRyOXN2b0ZBNHBBQm8xd1dLDQpRYjRhY3pmeVVscElBOVFoSmFsZEY3S3dPSHVlV3gwRUNrNXg0T2tvVDBvWVp0dzFiR0JjRGtaSmF3SURBUUFCDQpvMU13VVRBZEJnTlZIUTRFRmdRVW90UlNIUm9IWTEyRFZ4R0NCdEhpb1g2ZmVFQXdId1lEVlIwakJCZ3dGb0FVDQpvdFJTSFJvSFkxMkRWeEdDQnRIaW9YNmZlRUF3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCDQpBUXNGQUFPQ0FnRUFSbkpsWWRjMTFHd0VxWnh6RDF2R3BDR2pDN2VWTlQ3aVY1d3IybXlybHdPYi9aUWFEa0xYDQpvVStaOVVXT1VlSXJTdzUydDdmQUpvVVAwSm5iYkMveVIrU1lqUGhvUXNiVHduOTc2ZldBWTduM3FMOXhCd1Y0DQphek41OXNjeUp0dlhMeUtOL2N5ak1ReDRLajBIMFg0bWJ6bzVZNUtzWWtYVU0vOEFPdWZMcEd0S1NGVGgrSEFDDQpab1Q5YnZHS25adnNHd0tYZFF0Wnh0akhaUjVqK3U3ZGtQOTJBT051RFNabS8rWVV4b2tBK09JbzdSR3BwSHNXDQo1ZTdNY0FTVXRtb1FORXd6dVFoVkJaRWQ1OGtKYjUrV0VWbGNzanlXNnRTbzErZ25tTWNqR1BsMWgxR2hVbjV4DQpFY0lWRnBIWXM5YWo1NmpBSjk1MVQvZjhMaWxmTlVnanBLQ0c1bnl0SUt3emxhOHNtdGlPdm1UNEpYbXBwSkI2DQo4bmdHRVluVjUrUTYwWFJ2OEhSSGp1VG9CRHVhaERrVDA2R1JGODU1d09FR2V4bkZpMXZYWUxLVllWb1V2MXRKDQo4dVdUR1pwNllDSVJldlBqbzg5ZytWTlJSaVFYUThJd0dybXE5c0RoVTlqTjA0SjdVL1RvRDFpNHE3VnlsRUc5DQorV1VGNkNLaEdBeTJIaEhwVncyTGFoOS9lUzdZMUZ1YURrWmhPZG1laG1BOCtqdHNZamJadnR5Mm1SWlF0UUZzDQpUU1VUUjREbUR2bVVPRVRmeStpRHdzK2RkWXVNTnJGeVVYV2dkMnpBQU4ydVl1UHFGY2pRcFNPODFzVTJTU3R3DQoxVzAyeUtYOGJEYmZFdjBzbUh3UzliQnFlSGo5NEM1Mjg0YXpsdTBmaUdpTm1OUEM4ckJLRmhBPQ0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ== service: name: metallb-webhook-service namespace: metallb-system @@ -236,6 +235,14 @@ spec: holdTime: description: Requested BGP hold time, per RFC4271. type: string + interface: + description: |- + Interface is the node interface over which the unnumbered BGP peering will + be established. No API validation takes place as that string value + represents an interface name on the host and if user provides an invalid + value, only the actual BGP session will not be established. + Address and Interface are mutually exclusive and one of them must be specified. + type: string keepaliveTime: description: Requested BGP keepalive time, per RFC4271. type: string @@ -335,7 +342,7 @@ spec: default: 179 description: Port to dial when establishing the session. maximum: 16384 - minimum: 0 + minimum: 1 type: integer routerID: description: BGP router ID to advertise to the peer @@ -350,7 +357,6 @@ spec: type: string required: - myASN - - peerAddress type: object status: description: BGPPeerStatus defines the observed state of Peer. diff --git a/bundle/manifests/metallb.io_communities.yaml b/bundle/manifests/metallb.io_communities.yaml index 17766287b..d3bce9228 100644 --- a/bundle/manifests/metallb.io_communities.yaml +++ b/bundle/manifests/metallb.io_communities.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 creationTimestamp: null name: communities.metallb.io spec: diff --git a/bundle/manifests/metallb.io_ipaddresspools.yaml b/bundle/manifests/metallb.io_ipaddresspools.yaml index a198487ec..3431da276 100644 --- a/bundle/manifests/metallb.io_ipaddresspools.yaml +++ b/bundle/manifests/metallb.io_ipaddresspools.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 creationTimestamp: null name: ipaddresspools.metallb.io spec: @@ -206,6 +206,28 @@ spec: type: object status: description: IPAddressPoolStatus defines the observed state of IPAddressPool. + properties: + assignedIPv4: + description: AssignedIPv4 is the number of assigned IPv4 addresses. + format: int64 + type: integer + assignedIPv6: + description: AssignedIPv6 is the number of assigned IPv6 addresses. + format: int64 + type: integer + availableIPv4: + description: AvailableIPv4 is the number of available IPv4 addresses. + format: int64 + type: integer + availableIPv6: + description: AvailableIPv6 is the number of available IPv6 addresses. + format: int64 + type: integer + required: + - assignedIPv4 + - assignedIPv6 + - availableIPv4 + - availableIPv6 type: object required: - spec diff --git a/bundle/manifests/metallb.io_l2advertisements.yaml b/bundle/manifests/metallb.io_l2advertisements.yaml index 3312427e3..86cc7679b 100644 --- a/bundle/manifests/metallb.io_l2advertisements.yaml +++ b/bundle/manifests/metallb.io_l2advertisements.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 creationTimestamp: null name: l2advertisements.metallb.io spec: diff --git a/bundle/manifests/metallb.io_servicebgpstatuses.yaml b/bundle/manifests/metallb.io_servicebgpstatuses.yaml index 4a7c2dec7..6e365bcfd 100644 --- a/bundle/manifests/metallb.io_servicebgpstatuses.yaml +++ b/bundle/manifests/metallb.io_servicebgpstatuses.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 creationTimestamp: null name: servicebgpstatuses.metallb.io spec: diff --git a/bundle/manifests/metallb.io_servicel2statuses.yaml b/bundle/manifests/metallb.io_servicel2statuses.yaml index d82e5e8ce..de92b09b2 100644 --- a/bundle/manifests/metallb.io_servicel2statuses.yaml +++ b/bundle/manifests/metallb.io_servicel2statuses.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 creationTimestamp: null name: servicel2statuses.metallb.io spec: diff --git a/config/crd/bases/metallb.io_bfdprofiles.yaml b/config/crd/bases/metallb.io_bfdprofiles.yaml index 3671debab..8943c36be 100644 --- a/config/crd/bases/metallb.io_bfdprofiles.yaml +++ b/config/crd/bases/metallb.io_bfdprofiles.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 name: bfdprofiles.metallb.io spec: group: metallb.io diff --git a/config/crd/bases/metallb.io_bgpadvertisements.yaml b/config/crd/bases/metallb.io_bgpadvertisements.yaml index 214f04999..a974bc4e8 100644 --- a/config/crd/bases/metallb.io_bgpadvertisements.yaml +++ b/config/crd/bases/metallb.io_bgpadvertisements.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 name: bgpadvertisements.metallb.io spec: group: metallb.io diff --git a/config/crd/bases/metallb.io_bgppeers.yaml b/config/crd/bases/metallb.io_bgppeers.yaml index ac6f080c2..408a47e08 100644 --- a/config/crd/bases/metallb.io_bgppeers.yaml +++ b/config/crd/bases/metallb.io_bgppeers.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 name: bgppeers.metallb.io spec: group: metallb.io @@ -223,6 +223,14 @@ spec: holdTime: description: Requested BGP hold time, per RFC4271. type: string + interface: + description: |- + Interface is the node interface over which the unnumbered BGP peering will + be established. No API validation takes place as that string value + represents an interface name on the host and if user provides an invalid + value, only the actual BGP session will not be established. + Address and Interface are mutually exclusive and one of them must be specified. + type: string keepaliveTime: description: Requested BGP keepalive time, per RFC4271. type: string @@ -322,7 +330,7 @@ spec: default: 179 description: Port to dial when establishing the session. maximum: 16384 - minimum: 0 + minimum: 1 type: integer routerID: description: BGP router ID to advertise to the peer @@ -337,7 +345,6 @@ spec: type: string required: - myASN - - peerAddress type: object status: description: BGPPeerStatus defines the observed state of Peer. diff --git a/config/crd/bases/metallb.io_communities.yaml b/config/crd/bases/metallb.io_communities.yaml index 117fe7e22..6d44cb4b8 100644 --- a/config/crd/bases/metallb.io_communities.yaml +++ b/config/crd/bases/metallb.io_communities.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 name: communities.metallb.io spec: group: metallb.io diff --git a/config/crd/bases/metallb.io_ipaddresspools.yaml b/config/crd/bases/metallb.io_ipaddresspools.yaml index fb8ac350d..b6ea9b438 100644 --- a/config/crd/bases/metallb.io_ipaddresspools.yaml +++ b/config/crd/bases/metallb.io_ipaddresspools.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 name: ipaddresspools.metallb.io spec: group: metallb.io @@ -205,6 +205,28 @@ spec: type: object status: description: IPAddressPoolStatus defines the observed state of IPAddressPool. + properties: + assignedIPv4: + description: AssignedIPv4 is the number of assigned IPv4 addresses. + format: int64 + type: integer + assignedIPv6: + description: AssignedIPv6 is the number of assigned IPv6 addresses. + format: int64 + type: integer + availableIPv4: + description: AvailableIPv4 is the number of available IPv4 addresses. + format: int64 + type: integer + availableIPv6: + description: AvailableIPv6 is the number of available IPv6 addresses. + format: int64 + type: integer + required: + - assignedIPv4 + - assignedIPv6 + - availableIPv4 + - availableIPv6 type: object required: - spec diff --git a/config/crd/bases/metallb.io_l2advertisements.yaml b/config/crd/bases/metallb.io_l2advertisements.yaml index 373205d14..65c97ce71 100644 --- a/config/crd/bases/metallb.io_l2advertisements.yaml +++ b/config/crd/bases/metallb.io_l2advertisements.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 name: l2advertisements.metallb.io spec: group: metallb.io diff --git a/config/crd/bases/metallb.io_servicebgpstatuses.yaml b/config/crd/bases/metallb.io_servicebgpstatuses.yaml index 0ec665ffd..075c1e739 100644 --- a/config/crd/bases/metallb.io_servicebgpstatuses.yaml +++ b/config/crd/bases/metallb.io_servicebgpstatuses.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 name: servicebgpstatuses.metallb.io spec: group: metallb.io diff --git a/config/crd/bases/metallb.io_servicel2statuses.yaml b/config/crd/bases/metallb.io_servicel2statuses.yaml index e3d8f6aab..13aa759c2 100644 --- a/config/crd/bases/metallb.io_servicel2statuses.yaml +++ b/config/crd/bases/metallb.io_servicel2statuses.yaml @@ -2,7 +2,7 @@ apiVersion: apiextensions.k8s.io/v1 kind: CustomResourceDefinition metadata: annotations: - controller-gen.kubebuilder.io/version: v0.16.3 + controller-gen.kubebuilder.io/version: v0.17.2 name: servicel2statuses.metallb.io spec: group: metallb.io diff --git a/config/crd/patches/crd-conversion-patch-bgppeers.yaml b/config/crd/patches/crd-conversion-patch-bgppeers.yaml index dc9c88baf..d917f6bf6 100644 --- a/config/crd/patches/crd-conversion-patch-bgppeers.yaml +++ b/config/crd/patches/crd-conversion-patch-bgppeers.yaml @@ -8,9 +8,6 @@ spec: webhook: conversionReviewVersions: ["v1beta1", "v1beta2"] clientConfig: - # this is a valid pem format, otherwise the apiserver will reject the deletion of the crds - # with "unable to parse bytes as PEM block", The controller will patch it with the right content after it starts - caBundle: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tDQpNSUlGWlRDQ0EwMmdBd0lCQWdJVU5GRW1XcTM3MVpKdGkrMmlSQzk1WmpBV1MxZ3dEUVlKS29aSWh2Y05BUUVMDQpCUUF3UWpFTE1Ba0dBMVVFQmhNQ1dGZ3hGVEFUQmdOVkJBY01ERVJsWm1GMWJIUWdRMmwwZVRFY01Cb0dBMVVFDQpDZ3dUUkdWbVlYVnNkQ0JEYjIxd1lXNTVJRXgwWkRBZUZ3MHlNakEzTVRrd09UTXlNek5hRncweU1qQTRNVGd3DQpPVE15TXpOYU1FSXhDekFKQmdOVkJBWVRBbGhZTVJVd0V3WURWUVFIREF4RVpXWmhkV3gwSUVOcGRIa3hIREFhDQpCZ05WQkFvTUUwUmxabUYxYkhRZ1EyOXRjR0Z1ZVNCTWRHUXdnZ0lpTUEwR0NTcUdTSWIzRFFFQkFRVUFBNElDDQpEd0F3Z2dJS0FvSUNBUUNxVFpxMWZRcC9vYkdlenhES0o3OVB3Ny94azJwellualNzMlkzb1ZYSm5sRmM4YjVlDQpma2ZZQnY2bndscW1keW5PL2phWFBaQmRQSS82aFdOUDBkdVhadEtWU0NCUUpyZzEyOGNXb3F0MGNTN3pLb1VpDQpvcU1tQ0QvRXVBeFFNZjhRZDF2c1gvVllkZ0poVTZBRXJLZEpIaXpFOUJtUkNkTDBGMW1OVW55Rk82UnRtWFZUDQpidkxsTDVYeTc2R0FaQVBLOFB4aVlDa0NtbDdxN0VnTWNiOXlLWldCYmlxQ3VkTXE5TGJLNmdKNzF6YkZnSXV4DQo1L1pXK2JraTB2RlplWk9ZODUxb1psckFUNzJvMDI4NHNTWW9uN0pHZVZkY3NoUnh5R1VpSFpSTzdkaXZVTDVTDQpmM2JmSDFYbWY1ZDQzT0NWTWRuUUV2NWVaOG8zeWVLa3ZrbkZQUGVJMU9BbjdGbDlFRVNNR2dhOGFaSG1URSttDQpsLzlMSmdDYjBnQmtPT0M0WnV4bWh2aERKV1EzWnJCS3pMQlNUZXN0NWlLNVlwcXRWVVk2THRyRW9FelVTK1lsDQpwWndXY2VQWHlHeHM5ZURsR3lNVmQraW15Y3NTU1UvVno2Mmx6MnZCS21NTXBkYldDQWhud0RsRTVqU2dyMjRRDQp0eGNXLys2N3d5KzhuQlI3UXdqVTFITndVRjBzeERWdEwrZ1NHVERnSEVZSlhZelYvT05zMy94TkpoVFNPSkxNDQpoeXNVdyttaGdackdhbUdXcHVIVU1DUitvTWJzMTc1UkcrQjJnUFFHVytPTjJnUTRyOXN2b0ZBNHBBQm8xd1dLDQpRYjRhY3pmeVVscElBOVFoSmFsZEY3S3dPSHVlV3gwRUNrNXg0T2tvVDBvWVp0dzFiR0JjRGtaSmF3SURBUUFCDQpvMU13VVRBZEJnTlZIUTRFRmdRVW90UlNIUm9IWTEyRFZ4R0NCdEhpb1g2ZmVFQXdId1lEVlIwakJCZ3dGb0FVDQpvdFJTSFJvSFkxMkRWeEdDQnRIaW9YNmZlRUF3RHdZRFZSMFRBUUgvQkFVd0F3RUIvekFOQmdrcWhraUc5dzBCDQpBUXNGQUFPQ0FnRUFSbkpsWWRjMTFHd0VxWnh6RDF2R3BDR2pDN2VWTlQ3aVY1d3IybXlybHdPYi9aUWFEa0xYDQpvVStaOVVXT1VlSXJTdzUydDdmQUpvVVAwSm5iYkMveVIrU1lqUGhvUXNiVHduOTc2ZldBWTduM3FMOXhCd1Y0DQphek41OXNjeUp0dlhMeUtOL2N5ak1ReDRLajBIMFg0bWJ6bzVZNUtzWWtYVU0vOEFPdWZMcEd0S1NGVGgrSEFDDQpab1Q5YnZHS25adnNHd0tYZFF0Wnh0akhaUjVqK3U3ZGtQOTJBT051RFNabS8rWVV4b2tBK09JbzdSR3BwSHNXDQo1ZTdNY0FTVXRtb1FORXd6dVFoVkJaRWQ1OGtKYjUrV0VWbGNzanlXNnRTbzErZ25tTWNqR1BsMWgxR2hVbjV4DQpFY0lWRnBIWXM5YWo1NmpBSjk1MVQvZjhMaWxmTlVnanBLQ0c1bnl0SUt3emxhOHNtdGlPdm1UNEpYbXBwSkI2DQo4bmdHRVluVjUrUTYwWFJ2OEhSSGp1VG9CRHVhaERrVDA2R1JGODU1d09FR2V4bkZpMXZYWUxLVllWb1V2MXRKDQo4dVdUR1pwNllDSVJldlBqbzg5ZytWTlJSaVFYUThJd0dybXE5c0RoVTlqTjA0SjdVL1RvRDFpNHE3VnlsRUc5DQorV1VGNkNLaEdBeTJIaEhwVncyTGFoOS9lUzdZMUZ1YURrWmhPZG1laG1BOCtqdHNZamJadnR5Mm1SWlF0UUZzDQpUU1VUUjREbUR2bVVPRVRmeStpRHdzK2RkWXVNTnJGeVVYV2dkMnpBQU4ydVl1UHFGY2pRcFNPODFzVTJTU3R3DQoxVzAyeUtYOGJEYmZFdjBzbUh3UzliQnFlSGo5NEM1Mjg0YXpsdTBmaUdpTm1OUEM4ckJLRmhBPQ0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQ== service: namespace: metallb-system name: metallb-webhook-service diff --git a/config/metallb_rbac/metallb.yaml b/config/metallb_rbac/metallb.yaml index 2b9eb15b8..a915a4205 100644 --- a/config/metallb_rbac/metallb.yaml +++ b/config/metallb_rbac/metallb.yaml @@ -86,6 +86,12 @@ rules: - get - list - watch + - apiGroups: + - metallb.io + resources: + - ipaddresspools/status + verbs: + - update - apiGroups: - metallb.io resources: diff --git a/hack/metallb_ref.txt b/hack/metallb_ref.txt index 6ffe545dc..1090ba2fa 100644 --- a/hack/metallb_ref.txt +++ b/hack/metallb_ref.txt @@ -1 +1 @@ -dba2ececc47c1673bf53cf9dbe05ba51cc5e1c68 +d44289c8036a83e5c5d6b4f49886e85f705461b5