apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion metadata: annotations: alm-examples: |- [ { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "basic", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64512, "neighbors": [ { "address": "172.30.0.3", "asn": 64512, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } }, "toReceive": { "allowed": { "mode": "all" } } } ] } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "two-neighs", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64512, "neighbors": [ { "address": "172.30.0.3", "asn": 4200000000, "ebgpMultiHop": true, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } } }, { "address": "172.18.0.6", "asn": 4200000000, "port": 179, "toAdvertise": { "allowed": { "prefixes": [ "192.168.2.0/24" ] } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ] } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "two-routers-vrf", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64513, "neighbors": [ { "address": "172.32.0.3", "asn": 4200000000, "ebgpMultiHop": true, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ] }, { "asn": 64515, "neighbors": [ { "address": "172.31.0.3", "asn": 4200000000, "port": 179, "toAdvertise": { "allowed": { "mode": "all" } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ], "vrf": "red" } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRNodeState", "metadata": { "name": "frr-k8s-worker" }, "status": { "lastConversionResult": "success", "lastReloadResult": "success", "runningConfig": "Building configuration...\n\nCurrent configuration:\n!\nfrr version 9.0.2_git\nfrr defaults traditional\nhostname frr-k8s-worker\nlog file /etc/frr/frr.log informational\nlog timestamp precision 3\nno ipv6 forwarding\nservice integrated-vtysh-config\n!\nip nht resolve-via-default\n!\nipv6 nht resolve-via-default\n!\nend\n" } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BFDProfile", "metadata": { "name": "bfd-profile-sample", "namespace": "metallb-system" }, "spec": { "receiveInterval": 380, "transmitInterval": 270 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample1", "namespace": "metallb-system" }, "spec": { "ipAddressPools": [ "ip-addresspool-sample1" ], "peers": [ "ebgp-single-hop0" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample2", "namespace": "metallb-system" }, "spec": { "ipAddressPoolSelectors": [ { "matchLabels": { "test": "ipv6" } }, { "matchLabels": { "test": "ipv4" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample3", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "communities": [ "65535:65282" ], "ipAddressPools": [ "ip-addresspool-sample1" ], "localPref": 50 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample4", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "communities": [ "NO_ADVERTISE" ], "ipAddressPools": [ "ip-addresspool-sample1" ], "localPref": 50 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample5", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "ipAddressPools": [ "ip-addresspool-sample1" ], "nodeSelectors": [ { "matchLabels": { "kubernetes.io/hostname": "kind-control-plane" } }, { "matchLabels": { "kubernetes.io/hostname": "kind-worker" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-beta1", "namespace": "metallb-system" }, "spec": { "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta1", "kind": "Community", "metadata": { "name": "community1", "namespace": "metallb-system" }, "spec": { "communities": [ { "name": "NO_ADVERTISE", "value": "65535:65282" } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "name": "ip-addresspool-sample1", "namespace": "metallb-system" }, "spec": { "addresses": [ "192.168.10.0/24", "192.168.9.1-192.168.9.5", "fc00:f853:0ccd:e799::/124" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "labels": { "test": "ipv4" }, "name": "ip-addresspool-sample2", "namespace": "metallb-system" }, "spec": { "addresses": [ "172.20.0.100/24" ], "autoAssign": false } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "labels": { "test": "ipv6" }, "name": "ip-addresspool-sample3", "namespace": "metallb-system" }, "spec": { "addresses": [ "2002:2:2::1-2002:2:2::100" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "L2Advertisement", "metadata": { "name": "l2-adv-sample1", "namespace": "metallb-system" }, "spec": { "ipAddressPools": [ "ip-addresspool-sample1" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "L2Advertisement", "metadata": { "name": "l2-adv-sample2", "namespace": "metallb-system" }, "spec": { "nodeSelectors": [ { "matchLabels": { "kubernetes.io/hostname": "kind-control-plane" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "MetalLB", "metadata": { "name": "metallb", "namespace": "metallb-system" }, "spec": {} }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample1", "namespace": "metallb-system" }, "spec": { "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample2", "namespace": "metallb-system" }, "spec": { "bfdProfile": "bfd-profile-sample", "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample3", "namespace": "metallb-system" }, "spec": { "holdTime": "9m0s", "keepaliveTime": "0s", "myASN": 64512, "passwordSecret": { "name": "secretname", "namespace": "metallb-system" }, "peerASN": 64512, "peerAddress": "172.30.0.3", "peerPort": 180 } } ] capabilities: Basic Install categories: Networking certified: "false" containerImage: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:f21e7d47f7a17f6b3520c17b8f32cbff2ae3129811d3242e08c9c48a9fbf3fbe createdAt: "2023-06-06T15:25:00Z" description: An operator for deploying MetalLB on a kubernetes cluster. features.operators.openshift.io/disconnected: "true" features.operators.openshift.io/fips-compliant: "true" features.operators.openshift.io/proxy-aware: "false" features.operators.openshift.io/tls-profiles: "false" features.operators.openshift.io/token-auth-aws: "false" features.operators.openshift.io/token-auth-azure: "false" features.operators.openshift.io/token-auth-gcp: "false" olm.operatorGroup: metallb-operator olm.operatorNamespace: metallb-system olm.skipRange: '>=4.8.0 <4.18.0' operatorframework.io/properties: '{"properties":[{"type":"olm.gvk","value":{"group":"frrk8s.metallb.io","kind":"FRRConfiguration","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"frrk8s.metallb.io","kind":"FRRNodeState","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BFDProfile","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPAdvertisement","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPPeer","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPPeer","version":"v1beta2"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"Community","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"IPAddressPool","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"L2Advertisement","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"MetalLB","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"ServiceL2Status","version":"v1beta1"}},{"type":"olm.package","value":{"packageName":"metallb-operator","version":"4.18.0-202509240837"}}]}' operatorframework.io/suggested-namespace: metallb-system operators.openshift.io/valid-subscription: '["OpenShift Kubernetes Engine", "OpenShift Container Platform", "OpenShift Platform Plus"]' operators.operatorframework.io/builder: operator-sdk-v1.34.1 operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 repository: https://github.com/openshift/metallb-operator support: Red Hat creationTimestamp: "2025-10-11T10:49:42Z" generation: 1 labels: olm.copiedFrom: metallb-system olm.managed: "true" operatorframework.io/arch.amd64: supported operatorframework.io/arch.ppc64le: supported operatorframework.io/arch.s390x: supported name: metallb-operator.v4.18.0-202509240837 namespace: openstack resourceVersion: "30373" uid: c69cb9a5-3c8e-49cb-a57f-906f47553b81 spec: apiservicedefinitions: {} cleanup: enabled: false customresourcedefinitions: owned: - description: BFDProfile is the Schema for the bfdprofiles API kind: BFDProfile name: bfdprofiles.metallb.io version: v1beta1 - description: BGPAdvertisement is the Schema for the bgpadvertisements API kind: BGPAdvertisement name: bgpadvertisements.metallb.io version: v1beta1 - description: BGPPeer is the Schema for the bgppeers API kind: BGPPeer name: bgppeers.metallb.io version: v1beta1 - description: BGPPeer is the Schema for the bgppeers API kind: BGPPeer name: bgppeers.metallb.io version: v1beta2 - description: Community is the Schema for the communities API kind: Community name: communities.metallb.io version: v1beta1 - description: FRRConfiguration is the Schema for the frrconfigurations API kind: FRRConfiguration name: frrconfigurations.frrk8s.metallb.io version: v1beta1 - description: FRRNodeState is the Schema for the frrnodestates API kind: FRRNodeState name: frrnodestates.frrk8s.metallb.io version: v1beta1 - description: IPAddressPool is the Schema for the ipaddresspools API kind: IPAddressPool name: ipaddresspools.metallb.io version: v1beta1 - description: L2Advertisement is the Schema for the l2advertisements API kind: L2Advertisement name: l2advertisements.metallb.io version: v1beta1 - description: MetalLB is the Schema for the metallbs API displayName: MetalLB kind: MetalLB name: metallbs.metallb.io version: v1beta1 - description: L2ServiceStatus is the Schema for the l2servicestatus API kind: ServiceL2Status name: servicel2statuses.metallb.io version: v1beta1 description: An operator for deploying MetalLB on a kubernetes cluster. displayName: MetalLB Operator icon: - base64data: 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 mediatype: image/png install: spec: clusterPermissions: - rules: - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create - apiGroups: - "" resources: - services - namespaces verbs: - get - list - watch - apiGroups: - "" resources: - nodes verbs: - list - apiGroups: - "" resources: - services/status verbs: - update - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - policy resourceNames: - controller resources: - podsecuritypolicies verbs: - use - apiGroups: - admissionregistration.k8s.io resourceNames: - metallb-webhook-configuration resources: - validatingwebhookconfigurations verbs: - create - delete - get - list - patch - update - watch - apiGroups: - admissionregistration.k8s.io resources: - validatingwebhookconfigurations verbs: - list - watch - apiGroups: - apiextensions.k8s.io resourceNames: - bfdprofiles.metallb.io - bgpadvertisements.metallb.io - bgppeers.metallb.io - ipaddresspools.metallb.io - l2advertisements.metallb.io - communities.metallb.io resources: - customresourcedefinitions verbs: - create - delete - get - list - patch - update - watch - apiGroups: - apiextensions.k8s.io resources: - customresourcedefinitions verbs: - list - watch serviceAccountName: controller - rules: - apiGroups: - "" resources: - nodes verbs: - get - list - watch - apiGroups: - admissionregistration.k8s.io resources: - validatingwebhookconfigurations verbs: - get - list - watch - apiGroups: - admissionregistration.k8s.io resourceNames: - frr-k8s-validating-webhook-configuration resources: - validatingwebhookconfigurations verbs: - update - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations verbs: - create - delete - get - list - patch - update - watch - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations/finalizers verbs: - update - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations/status verbs: - get - patch - update - apiGroups: - frrk8s.metallb.io resources: - frrnodestates verbs: - create - delete - get - list - patch - update - watch - apiGroups: - frrk8s.metallb.io resources: - frrnodestates/status verbs: - get - patch - update - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create serviceAccountName: frr-k8s-daemon - rules: - apiGroups: - "" resources: - secrets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - admissionregistration.k8s.io resources: - validatingwebhookconfigurations verbs: - create - delete - get - list - patch - update - watch - apiGroups: - apiextensions.k8s.io resources: - customresourcedefinitions verbs: - get - list - watch - apiGroups: - config.openshift.io resources: - clusteroperators verbs: - get - list - watch - apiGroups: - metallb.io resources: - metallbs verbs: - create - delete - get - list - patch - update - watch - apiGroups: - metallb.io resources: - metallbs/finalizers verbs: - delete - get - patch - update - apiGroups: - metallb.io resources: - metallbs/status verbs: - get - patch - update - apiGroups: - monitoring.coreos.com resources: - podmonitors verbs: - create - delete - get - list - patch - update - watch - apiGroups: - monitoring.coreos.com resources: - servicemonitors verbs: - create - delete - get - list - patch - update - watch - apiGroups: - operator.openshift.io resources: - networks verbs: - get - list - update - watch - apiGroups: - policy resources: - podsecuritypolicies verbs: - create - delete - get - list - patch - update - watch serviceAccountName: manager-account - rules: - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations verbs: - get - list - watch - create - update - delete - apiGroups: - metallb.io resources: - servicel2statuses - servicel2statuses/status verbs: - '*' - apiGroups: - "" resources: - services - endpoints - nodes - namespaces verbs: - get - list - watch - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - get - list - watch - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - policy resourceNames: - speaker resources: - podsecuritypolicies verbs: - use serviceAccountName: speaker deployments: - label: control-plane: controller-manager name: metallb-operator-controller-manager spec: replicas: 1 selector: matchLabels: control-plane: controller-manager strategy: {} template: metadata: annotations: openshift.io/required-scc: restricted-v2 creationTimestamp: null labels: control-plane: controller-manager spec: containers: - args: - --enable-leader-election - --disable-cert-rotation=true command: - /manager env: - name: SPEAKER_IMAGE value: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 - name: CONTROLLER_IMAGE value: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 - name: FRR_IMAGE value: registry.redhat.io/openshift4/frr-rhel9@sha256:41205f57dd50b222640776ca5fcda336ca1541f53dae820d7bc6669f52c28a87 - name: KUBE_RBAC_PROXY_IMAGE value: registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:784c4667a867abdbec6d31a4bbde52676a0f37f8e448eaae37568a46fcdeace7 - name: DEPLOY_KUBE_RBAC_PROXIES value: "true" - name: FRRK8S_IMAGE value: registry.redhat.io/openshift4/frr-rhel9@sha256:41205f57dd50b222640776ca5fcda336ca1541f53dae820d7bc6669f52c28a87 - name: OPERATOR_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: DEPLOY_PODMONITORS value: "false" - name: DEPLOY_SERVICEMONITORS value: "true" - name: ENABLE_WEBHOOK value: "true" - name: ENABLE_OPERATOR_WEBHOOK value: "true" - name: METRICS_PORT value: "29150" - name: HTTPS_METRICS_PORT value: "9120" - name: FRR_METRICS_PORT value: "29151" - name: FRR_HTTPS_METRICS_PORT value: "9121" - name: MEMBER_LIST_BIND_PORT value: "9122" image: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:f21e7d47f7a17f6b3520c17b8f32cbff2ae3129811d3242e08c9c48a9fbf3fbe name: manager ports: - containerPort: 9443 name: webhook-server protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /readyz port: 8080 initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: requests: cpu: 50m memory: 20Mi volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: cert readOnly: true serviceAccountName: manager-account terminationGracePeriodSeconds: 10 volumes: - name: cert secret: defaultMode: 420 secretName: metallb-operator-webhook-server-cert - label: app: metallb component: webhook-server name: metallb-operator-webhook-server spec: revisionHistoryLimit: 3 selector: matchLabels: app: metallb component: webhook-server strategy: {} template: metadata: annotations: openshift.io/required-scc: restricted-v2 prometheus.io/port: "7472" prometheus.io/scrape: "true" creationTimestamp: null labels: app: metallb component: webhook-server spec: containers: - args: - --disable-cert-rotation=true - --port=7472 - --log-level=info - --webhook-mode=onlywebhook command: - /controller env: - name: METALLB_BGP_TYPE value: frr image: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 livenessProbe: failureThreshold: 3 httpGet: path: /metrics port: monitoring initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 name: webhook-server ports: - containerPort: 7472 name: monitoring protocol: TCP - containerPort: 9443 name: webhook-server protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /metrics port: monitoring initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: {} volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: cert readOnly: true nodeSelector: kubernetes.io/os: linux serviceAccountName: controller terminationGracePeriodSeconds: 0 volumes: - name: cert secret: defaultMode: 420 secretName: metallb-webhook-cert permissions: - rules: - apiGroups: - "" resources: - secrets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resourceNames: - memberlist resources: - secrets verbs: - list - apiGroups: - apps resourceNames: - controller resources: - deployments verbs: - get - apiGroups: - metallb.io resources: - bgppeers verbs: - get - list - apiGroups: - metallb.io resources: - bfdprofiles verbs: - get - list - watch - apiGroups: - metallb.io resources: - ipaddresspools verbs: - get - list - watch - apiGroups: - metallb.io resources: - bgpadvertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - l2advertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - communities verbs: - get - list - watch serviceAccountName: controller - rules: - apiGroups: - "" resources: - secrets verbs: - get - list - watch - update - apiGroups: - security.openshift.io resourceNames: - privileged resources: - securitycontextconstraints verbs: - use serviceAccountName: frr-k8s-daemon - rules: - apiGroups: - "" resources: - configmaps verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - "" resources: - services verbs: - create - delete - get - patch - update - apiGroups: - apps resources: - daemonsets - deployments verbs: - create - delete - get - list - patch - update - watch - apiGroups: - coordination.k8s.io resources: - leases verbs: - create - delete - get - list - patch - update - watch serviceAccountName: manager-account - rules: - apiGroups: - "" resources: - pods verbs: - list - get - apiGroups: - "" resources: - secrets verbs: - get - list - watch - apiGroups: - "" resources: - configmaps verbs: - get - list - watch - apiGroups: - metallb.io resources: - bfdprofiles verbs: - get - list - watch - apiGroups: - metallb.io resources: - bgppeers verbs: - get - list - watch - apiGroups: - metallb.io resources: - l2advertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - bgpadvertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - ipaddresspools verbs: - get - list - watch - apiGroups: - metallb.io resources: - communities verbs: - get - list - watch - apiGroups: - security.openshift.io resourceNames: - privileged resources: - securitycontextconstraints verbs: - use serviceAccountName: speaker strategy: deployment installModes: - supported: false type: OwnNamespace - supported: false type: SingleNamespace - supported: false type: MultiNamespace - supported: true type: AllNamespaces keywords: - metallb-operator labels: olm-owner-enterprise-app: metallb-operator olm-status-descriptors: metallb-operator.v4.18.0-202509240837 links: - name: MetalLB Operator url: https://github.com/openshift/metallb-operator maintainers: - email: fpaoline@redhat.com name: Federico Paolinelli - email: obraunsh@redhat.com name: Ori Braunshtein maturity: alpha minKubeVersion: 1.26.0 provider: name: Red Hat relatedImages: - image: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:f21e7d47f7a17f6b3520c17b8f32cbff2ae3129811d3242e08c9c48a9fbf3fbe name: metallb-rhel9-operator - image: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 name: metallb-rhel9 - image: registry.redhat.io/openshift4/frr-rhel9@sha256:41205f57dd50b222640776ca5fcda336ca1541f53dae820d7bc6669f52c28a87 name: frr-rhel9 - image: registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:784c4667a867abdbec6d31a4bbde52676a0f37f8e448eaae37568a46fcdeace7 name: ose-kube-rbac-proxy-rhel9 version: 4.18.0-202509240837 webhookdefinitions: - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: bfdprofilevalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - DELETE resources: - bfdprofiles sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-bfdprofile - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: bgpadvertisementvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - bgpadvertisements sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-bgpadvertisement - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: bgppeersvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta2 operations: - CREATE - UPDATE resources: - bgppeers sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta2-bgppeer - admissionReviewVersions: - v1beta1 - v1beta2 containerPort: 443 conversionCRDs: - bgppeers.metallb.io deploymentName: metallb-operator-webhook-server generateName: cbgppeers.kb.io sideEffects: None targetPort: 9443 type: ConversionWebhook webhookPath: /convert - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: communityvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - communities sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-community - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: ipaddresspoolvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - ipaddresspools sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-ipaddresspool - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: l2advertisementvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - l2advertisements sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-l2advertisement - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-controller-manager failurePolicy: Fail generateName: metallbvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - metallbs sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-metallb status: certsLastUpdated: "2025-10-11T10:48:04Z" certsRotateAt: "2027-10-10T10:48:03Z" cleanup: {} conditions: - lastTransitionTime: "2025-10-11T10:47:49Z" lastUpdateTime: "2025-10-11T10:47:49Z" message: requirements not yet checked phase: Pending reason: RequirementsUnknown - lastTransitionTime: "2025-10-11T10:47:49Z" lastUpdateTime: "2025-10-11T10:47:50Z" message: one or more requirements couldn't be found phase: Pending reason: RequirementsNotMet - lastTransitionTime: "2025-10-11T10:48:02Z" lastUpdateTime: "2025-10-11T10:48:02Z" message: all requirements found, attempting install phase: InstallReady reason: AllRequirementsMet - lastTransitionTime: "2025-10-11T10:48:03Z" lastUpdateTime: "2025-10-11T10:48:03Z" message: waiting for install components to report healthy phase: Installing reason: InstallSucceeded - lastTransitionTime: "2025-10-11T10:48:03Z" lastUpdateTime: "2025-10-11T10:48:05Z" message: 'installing: waiting for deployment metallb-operator-controller-manager to become ready: deployment "metallb-operator-controller-manager" not available: Deployment does not have minimum availability.' phase: Installing reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:12Z" lastUpdateTime: "2025-10-11T10:48:12Z" message: 'Webhook install failed: conversionWebhook not ready' phase: InstallReady reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:14Z" message: waiting for install components to report healthy phase: Installing reason: InstallSucceeded - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:15Z" message: 'installing: waiting for deployment metallb-operator-controller-manager to become ready: deployment "metallb-operator-controller-manager" not available: Deployment does not have minimum availability.' phase: Installing reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:44Z" lastUpdateTime: "2025-10-11T10:48:44Z" message: install strategy completed with no errors phase: Succeeded reason: InstallSucceeded lastTransitionTime: "2025-10-11T10:48:44Z" lastUpdateTime: "2025-10-11T10:48:44Z" message: The operator is running in metallb-system but is managing this namespace phase: Succeeded reason: Copied requirementStatus: - group: operators.coreos.com kind: ClusterServiceVersion message: CSV minKubeVersion (1.26.0) less than server version (v1.31.13) name: metallb-operator.v4.18.0-202509240837 status: Present version: v1alpha1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: bfdprofiles.metallb.io status: Present uuid: db566ca1-d194-49e9-a7ec-b9d629b5ee0d version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: bgpadvertisements.metallb.io status: Present uuid: 38ba7ab4-a536-4e3d-8a27-eb0b262f4628 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: bgppeers.metallb.io status: Present uuid: 3bfec0ba-4dd0-4a5e-9a53-c2e9078049f6 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: communities.metallb.io status: Present uuid: 9b9a3486-a195-4a90-9220-3c8be9f8a1e1 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: frrconfigurations.frrk8s.metallb.io status: Present uuid: 3f862190-ebf6-4bd3-baf9-92da3ddb9135 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: frrnodestates.frrk8s.metallb.io status: Present uuid: ab643dd3-4ce6-4a5b-8d6a-6029f628e635 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: ipaddresspools.metallb.io status: Present uuid: 62846b7a-651d-4553-a2bb-378c0c8d38e8 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: l2advertisements.metallb.io status: Present uuid: 014c36b8-10be-476a-b3d0-1be15df1a153 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: metallbs.metallb.io status: Present uuid: 7afc080f-f706-4a76-a93f-75d768f99a46 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: servicel2statuses.metallb.io status: Present uuid: df66f2b3-13f0-488f-9ebc-ba10621b3773 version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch","create","update","delete"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":["metallb.io"],"resources":["servicel2statuses","servicel2statuses/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["services","endpoints","nodes","namespaces"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["discovery.k8s.io"],"resources":["endpointslices"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","patch"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["policy"],"resources":["podsecuritypolicies"],"resourceNames":["speaker"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: speaker status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["services","namespaces"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list"],"apiGroups":[""],"resources":["nodes"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":[""],"resources":["services/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","patch"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["policy"],"resources":["podsecuritypolicies"],"resourceNames":["controller"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"],"resourceNames":["metallb-webhook-configuration"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["apiextensions.k8s.io"],"resources":["customresourcedefinitions"],"resourceNames":["bfdprofiles.metallb.io","bgpadvertisements.metallb.io","bgppeers.metallb.io","ipaddresspools.metallb.io","l2advertisements.metallb.io","communities.metallb.io"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","watch"],"apiGroups":["apiextensions.k8s.io"],"resources":["customresourcedefinitions"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: controller status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["nodes"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"],"resourceNames":["frr-k8s-validating-webhook-configuration"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrnodestates"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrnodestates/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: frr-k8s-daemon status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":[""],"resources":["secrets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["apiextensions.k8s.io"],"resources":["customresourcedefinitions"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["config.openshift.io"],"resources":["clusteroperators"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["metallb.io"],"resources":["metallbs"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["delete","get","patch","update"],"apiGroups":["metallb.io"],"resources":["metallbs/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["metallb.io"],"resources":["metallbs/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["monitoring.coreos.com"],"resources":["podmonitors"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["monitoring.coreos.com"],"resources":["servicemonitors"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","update","watch"],"apiGroups":["operator.openshift.io"],"resources":["networks"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["policy"],"resources":["podsecuritypolicies"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: manager-account status: Present version: v1 apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion metadata: annotations: alm-examples: |- [ { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "basic", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64512, "neighbors": [ { "address": "172.30.0.3", "asn": 64512, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } }, "toReceive": { "allowed": { "mode": "all" } } } ] } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "two-neighs", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64512, "neighbors": [ { "address": "172.30.0.3", "asn": 4200000000, "ebgpMultiHop": true, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } } }, { "address": "172.18.0.6", "asn": 4200000000, "port": 179, "toAdvertise": { "allowed": { "prefixes": [ "192.168.2.0/24" ] } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ] } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "two-routers-vrf", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64513, "neighbors": [ { "address": "172.32.0.3", "asn": 4200000000, "ebgpMultiHop": true, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ] }, { "asn": 64515, "neighbors": [ { "address": "172.31.0.3", "asn": 4200000000, "port": 179, "toAdvertise": { "allowed": { "mode": "all" } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ], "vrf": "red" } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRNodeState", "metadata": { "name": "frr-k8s-worker" }, "status": { "lastConversionResult": "success", "lastReloadResult": "success", "runningConfig": "Building configuration...\n\nCurrent configuration:\n!\nfrr version 9.0.2_git\nfrr defaults traditional\nhostname frr-k8s-worker\nlog file /etc/frr/frr.log informational\nlog timestamp precision 3\nno ipv6 forwarding\nservice integrated-vtysh-config\n!\nip nht resolve-via-default\n!\nipv6 nht resolve-via-default\n!\nend\n" } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BFDProfile", "metadata": { "name": "bfd-profile-sample", "namespace": "metallb-system" }, "spec": { "receiveInterval": 380, "transmitInterval": 270 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample1", "namespace": "metallb-system" }, "spec": { "ipAddressPools": [ "ip-addresspool-sample1" ], "peers": [ "ebgp-single-hop0" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample2", "namespace": "metallb-system" }, "spec": { "ipAddressPoolSelectors": [ { "matchLabels": { "test": "ipv6" } }, { "matchLabels": { "test": "ipv4" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample3", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "communities": [ "65535:65282" ], "ipAddressPools": [ "ip-addresspool-sample1" ], "localPref": 50 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample4", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "communities": [ "NO_ADVERTISE" ], "ipAddressPools": [ "ip-addresspool-sample1" ], "localPref": 50 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample5", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "ipAddressPools": [ "ip-addresspool-sample1" ], "nodeSelectors": [ { "matchLabels": { "kubernetes.io/hostname": "kind-control-plane" } }, { "matchLabels": { "kubernetes.io/hostname": "kind-worker" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-beta1", "namespace": "metallb-system" }, "spec": { "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta1", "kind": "Community", "metadata": { "name": "community1", "namespace": "metallb-system" }, "spec": { "communities": [ { "name": "NO_ADVERTISE", "value": "65535:65282" } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "name": "ip-addresspool-sample1", "namespace": "metallb-system" }, "spec": { "addresses": [ "192.168.10.0/24", "192.168.9.1-192.168.9.5", "fc00:f853:0ccd:e799::/124" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "labels": { "test": "ipv4" }, "name": "ip-addresspool-sample2", "namespace": "metallb-system" }, "spec": { "addresses": [ "172.20.0.100/24" ], "autoAssign": false } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "labels": { "test": "ipv6" }, "name": "ip-addresspool-sample3", "namespace": "metallb-system" }, "spec": { "addresses": [ "2002:2:2::1-2002:2:2::100" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "L2Advertisement", "metadata": { "name": "l2-adv-sample1", "namespace": "metallb-system" }, "spec": { "ipAddressPools": [ "ip-addresspool-sample1" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "L2Advertisement", "metadata": { "name": "l2-adv-sample2", "namespace": "metallb-system" }, "spec": { "nodeSelectors": [ { "matchLabels": { "kubernetes.io/hostname": "kind-control-plane" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "MetalLB", "metadata": { "name": "metallb", "namespace": "metallb-system" }, "spec": {} }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample1", "namespace": "metallb-system" }, "spec": { "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample2", "namespace": "metallb-system" }, "spec": { "bfdProfile": "bfd-profile-sample", "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample3", "namespace": "metallb-system" }, "spec": { "holdTime": "9m0s", "keepaliveTime": "0s", "myASN": 64512, "passwordSecret": { "name": "secretname", "namespace": "metallb-system" }, "peerASN": 64512, "peerAddress": "172.30.0.3", "peerPort": 180 } } ] capabilities: Basic Install categories: Networking certified: "false" containerImage: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:f21e7d47f7a17f6b3520c17b8f32cbff2ae3129811d3242e08c9c48a9fbf3fbe createdAt: "2023-06-06T15:25:00Z" description: An operator for deploying MetalLB on a kubernetes cluster. features.operators.openshift.io/disconnected: "true" features.operators.openshift.io/fips-compliant: "true" features.operators.openshift.io/proxy-aware: "false" features.operators.openshift.io/tls-profiles: "false" features.operators.openshift.io/token-auth-aws: "false" features.operators.openshift.io/token-auth-azure: "false" features.operators.openshift.io/token-auth-gcp: "false" olm.operatorGroup: metallb-operator olm.operatorNamespace: metallb-system olm.skipRange: '>=4.8.0 <4.18.0' operatorframework.io/properties: '{"properties":[{"type":"olm.gvk","value":{"group":"frrk8s.metallb.io","kind":"FRRConfiguration","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"frrk8s.metallb.io","kind":"FRRNodeState","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BFDProfile","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPAdvertisement","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPPeer","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPPeer","version":"v1beta2"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"Community","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"IPAddressPool","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"L2Advertisement","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"MetalLB","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"ServiceL2Status","version":"v1beta1"}},{"type":"olm.package","value":{"packageName":"metallb-operator","version":"4.18.0-202509240837"}}]}' operatorframework.io/suggested-namespace: metallb-system operators.openshift.io/valid-subscription: '["OpenShift Kubernetes Engine", "OpenShift Container Platform", "OpenShift Platform Plus"]' operators.operatorframework.io/builder: operator-sdk-v1.34.1 operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 repository: https://github.com/openshift/metallb-operator support: Red Hat creationTimestamp: "2025-10-11T10:49:42Z" generation: 1 labels: olm.copiedFrom: metallb-system olm.managed: "true" operatorframework.io/arch.amd64: supported operatorframework.io/arch.ppc64le: supported operatorframework.io/arch.s390x: supported name: metallb-operator.v4.18.0-202509240837 namespace: openstack-operators resourceVersion: "30375" uid: 522620a2-e047-430a-9a7d-a510a0a0fa51 spec: apiservicedefinitions: {} cleanup: enabled: false customresourcedefinitions: owned: - description: BFDProfile is the Schema for the bfdprofiles API kind: BFDProfile name: bfdprofiles.metallb.io version: v1beta1 - description: BGPAdvertisement is the Schema for the bgpadvertisements API kind: BGPAdvertisement name: bgpadvertisements.metallb.io version: v1beta1 - description: BGPPeer is the Schema for the bgppeers API kind: BGPPeer name: bgppeers.metallb.io version: v1beta1 - description: BGPPeer is the Schema for the bgppeers API kind: BGPPeer name: bgppeers.metallb.io version: v1beta2 - description: Community is the Schema for the communities API kind: Community name: communities.metallb.io version: v1beta1 - description: FRRConfiguration is the Schema for the frrconfigurations API kind: FRRConfiguration name: frrconfigurations.frrk8s.metallb.io version: v1beta1 - description: FRRNodeState is the Schema for the frrnodestates API kind: FRRNodeState name: frrnodestates.frrk8s.metallb.io version: v1beta1 - description: IPAddressPool is the Schema for the ipaddresspools API kind: IPAddressPool name: ipaddresspools.metallb.io version: v1beta1 - description: L2Advertisement is the Schema for the l2advertisements API kind: L2Advertisement name: l2advertisements.metallb.io version: v1beta1 - description: MetalLB is the Schema for the metallbs API displayName: MetalLB kind: MetalLB name: metallbs.metallb.io version: v1beta1 - description: L2ServiceStatus is the Schema for the l2servicestatus API kind: ServiceL2Status name: servicel2statuses.metallb.io version: v1beta1 description: An operator for deploying MetalLB on a kubernetes cluster. displayName: MetalLB Operator icon: - base64data: iVBORw0KGgoAAAANSUhEUgAAAUoAAAFKCAYAAAB7KRYFAAAABmJLR0QA/wD/AP+gvaeTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAB3RJTUUH4QwJBTMT3yomCQAAAB1pVFh0Q29tbWVudAAAAAAAQ3JlYXRlZCB3aXRoIEdJTVBkLmUHAAAgAElEQVR42u2dd3gTV9bG3xlJluRehAvuBptqigEbMJ3QOyEJJb2XTa9fsmm7yabsbnojm14IJEAIBAgJkNB77xhwx8YId1t95vtDllxwG3WNzu959NiWNe3OnVfn3HvOuczoOWt5EF5FFlsAGdt42wwcAwDYwyVQ4xCEE5BSE3gfe7gEgKN2IAhXwVITEARBkFASBEGQUBIEQZBQEgRBkFASBEGQUBIEQZBQEgRBkFASBEGQUBIEQRAklARBECSUBEEQJJQEQRAklARBECSUBEEQJJQEQRAiE8p4Tk2tQBAE0a5FyVAjEARBkOtNEARBQkkQBEFCSRAEQUJJEAThuUJJi9USBEG0L5SFrIpagSAIglxvwhPJYvKRxeRTQxAklATRlkiCYQAGJJYECSVBtArDAOAhY3js4ROpPQgSSoK4Cp4HeMDAMWRREh6PlJqAcCdkTRIklARBAkmQUBKE6zBPAAEtY39JdAkSSoJoEEkZy8PAs2alZBjIGM78Py6fRJNwKjSZQ3gfDaUBDTwDA28OMZKxfKPVSRAklIRPutwwz5ADgIzhrdakjOGvElCCINeb8GErkmmwJBvc7war0vJTxvAwgAHVLyDIoiR829/meVgC1a3WJI9mokkQJJSEz9E4QcM3E00D32A9WmbC+RauOEGQUBI+JZZcQoNGmlWxmfVoEUsyKAkSSoLEMrHB9Wau8sgtFuV2UxI1FEFCSZAbbhbL5takjKXiGoTzoFlvwkvFsjFsaA9HAkmQUBJE24JJEOR6EwRBiEAo4zk1tSJBECSUBEEQJJQEQRCE84SSlrslCIKEkiAIgoSSIAiCIKEkCIIgoSQIgiChJAiCcAvxnJpSGAnnMFKeh1BVEEK7mF9hXYKhDJTDP1Bh/hmkaPhdAQYAK2Hhp5C1ui+d1gDexIHnedTX6qCp1UJTq0N9rRb1tVpoarWoKKtGpboWlZerUXm5Btv0yXQTCIeIJEC53oSdTO5yCdEJEYhOVCEqPhxRCRGIiAmFvA3Rs4Wm+1IGKgCEdLiNTqOHuqQSpflXcLm4ApcKy3Gp8ArWlXahm0Z0mkJWhXhODWb0nLVUEproFOOCi5DUqysS0qKR1LMr4rpFQurnXd+1Br0RxefLUHCmFOdOFOLc8QLs1HWjm0u0a1WSUBJtC2NIEdL6JyJtYCK6p8cjODxAlNdZdaUGpw/l4eT+C9i3vxgnuSS6+QQJJdE2C9M16DUoGWkDkxAVH+6TbXAx7zJO7D+PIzvP4Nc8ctUJkFASwI0DdOg/Ig19MrvBP1BBDdKEuhoNDm07jYPbTmPlmRBqEBJKwhtdgqYIybu/vmctsiako09WNyj8/agxO4GmToeD205h+9qDWF8cTQ1CQkl4tDg2WVtLASO0TYIXCpm2xXJcSBEyx/fBkAl9ERFF1pE9XL5YgW1rD+C99XpqDBJKwqNEklc3E8hmy7PysApmS7Fc2FeDkTMz0HNQsnm1V8Jh8DyPY7tz8PuPO/FrfiQ1CAkl4WkCqYDR+r5FJLW8FIWMCplsHjLHpGHkzIGISoigRnQBxbll+OPHXfhqj4wag4SScIl73ewu4SqhbCqSTcUy1t+A4dP6I3tafwQEK6kx3UB1RR02rdiNd9fpqDFIKAlHi6IlC6AtkWxPKMMVHIZN7YfRswdBGSinhvUAaqvqsf6HHfjwdwM1BgklYa9IahkZFLyhdaFsaVEyxmZut0UgR83KgH+QZ4X2aOp01tzrCnUtKsqqUV+jQX2tDvU15hzt1YXCYjVnJVY05osHKuAfpERYZBBCVeZ88hBVIJQBnvVFUVtVj9+W7sQHG2jih4SSsE0oGQB866E9VtFsaVUyRihgxKhxKZi8aBiCwtybMVNdXouLuZdRVlSO0vwruFRYjhXng916TvO6VyMyLrwhBz0CMckqBLu5nSrVNVjx6UZ8u58sfhJKwmFCedXnGhjeyx8z7xiF2G6un2U16o3IP1uKgrMlKDhTii/3SbyqzW8eZEB8ahSSe8ciqUdXSGWuP//c08VY+t56bCjtSg8BCSXRGaHUMjIoYGg3/tHy2V4qA6bfNgr9slNddo48D1zMvYycw/k4dTAXy06KK997drcK9B6Sgl4ZyYjrFu3S8Km9m47jqQ8L6EEgoSQ6ZVGi/UDxeF6NOZPiMO2WEZArnZ9FYzKacO5oEY7tzMEHm31rXO2ObA4Zo3qhV0YyWInz61pr6nRY/skf+HwH1dAmoSTaFUotGidzWjK9qxrX3j8eyb1jnXouHMfj7ME8HNmRg4+3GOnmALhpsA5DxvVFemZ3MKxzTc2zR/Pxzb/XYHtdCjU8CSVxlVA2oalQpqIU8+b2wvgbMp06jnb5YgX2bzyJN1ZV0Q1pg544j2sm9cTIaRmIinNe8L7RYMLab7fh7V/rqdG9QSjjObWgAguEY13vSapLWPjYZCT2jHGa9Xhs5zns+PUwfjwbQDdCAFNiS3HNvKEYOLInWNY57vL544X48vXV2F5Py1l4jFDeOOvrqy3KhpnYllYO4Tyr0tLO94xgMefecU6p6KOt12Pv78fwwjeXqOHtZKg8B+PmZGLktAynxG1q63X44b0N+Hovrdbi0RZlS5fQYmU2DWlpy20khAtlkrIOc+8di4Gjezr8GPU1WmxZdQBv/EzutTN4YKIMUxZkIzDE3+H73rf5BJ78IJ8a2ROFssOHm1dfJZSdFUuL0HYUDuNLzIi9gpufmY4usWFOEMiDeOPnSmpkLxbMS4VX8OnLK7GpPJYa2ZuEsiPrqDVLtKlIWtLwckDFT2/P4jH/4YltLtVqCwadEVtWHcAry65QD3cDj88KwOT52ZDJHec26zR6fPvvtfjuMGX1uANJUq9FLzlqZ9WMP0L4ehSyKoTw9da/Lb9XM/6IYqoRyWrgx5vAckZUM/4+2fCpfAkevLEbZt81BhKp42a1D289g0VP7sfWExrq3W5i1xkDzvyyHsHhgYhLcUz2lFQmQcboXojFFWyje+vdFmV7lmbT8c0ESY3Z8uEZ7OWTOrWtmBjhl4ubnpqOHhmJDttnYc4lrP1yG5ae9qde7UFMiLqIBQ9ORkrvOIft8+T+C7j/X6epccUmlC1d8xi2FjIJD/CAgWOwF0k+IZAAMC6kGHe+MBtdkx2zup9OY8DvS3bhv2trqTd7MHeNAubdc43DMquKL5Thk+eXY5smiRrX21zvzrjm1Yw/wlELBcsBADieQTFCr/qsxV0XEzPjruC+f12HLl0dM2lz5kAeXn/hD6w8Tus7eDoH84Ezq9YiOt5czchegsMCkDGmJ6r278O52kBqYDEJpQU5rwfD89DxEqh5f6sgxnNqVDP+orQmF6VrcdfLcx1SdVxTq8PKDzfhxe/KUKqjwX1v4SLfBet3lkN/9gh6DUqBzM++yR6FvxyDx/WB7tQRnFRTPxCdUFYz/ihDMMoQbBVGy8RP05+icbuGATc9Pd0hs6C5J4px3UO7sL+AMk+9lWOlMhz4eTPSekYhIjrUrn1JZRIMGt0bTN5pHLlIhTVEJZStudmW2fKmEz+OFktn7LMj7hslxfzHJtldiYYzcdiwZBee/IiCj8WAGmFYs+UyQmoK0aN/ol1FN1iWwYARaZAV5+BgIQ3DOAO3F8WI59UIZbTQ8lLkMI6Jq7TGa8IIBdOw7rXlKhv6kZZveM+SZdQ026iVvmZLgPxDE+SYe994u6+n8nINvn1jLVZcCKYeK0ImxZTinhevRXik/WutL/vgd3y8mao/ic6ijEI1wiU61PEylDOOGZS2TBqVM4GQ83oYwcIIFlKYJ5AsS7taBbFBVI0Ma/09kNEDDGCE2RIMQb2gIYGnZ4dg5p2j7b6WnCMFWPTEfpyqoDEosXK+NhDLfi3EsB5+UNnpivfN7IaQ6kLsOUdiKSqLEgBS+VKHWZMOt3g7mFhquUwDeGDhtd0w5aZsu4/958r9ePm7MuqlLiJUW4pKhev7oUpTBPCA2j8Ozy9UYfy8TLv3ue6b7fhh5YVmWXGunCBtebx4Xu3VactutyjjeTWMYD128qaj87JYr5bX7ZNVmHH7KLuOadAb8d2/1+Kd9ZSB4UoCDZWol7l+eMPfWA0wQL0sGFuP1YM/fxJ9s7pDYse4dmr/BEiqK7D7nMHaT1NRilhUogzOu8Z4To0ophq5TPOMpJ5MmVdn4rl9mkwBI0IZrbnQhpdz10hg9j1j7NpHbVU9PnhmKb7cKwHhav+KaWZdusyabDEo/vV+Gd576gfUVtlXwHfW3WPwwPjGAHctJ20cdnIxGki9OuTPI1xvbzfLAWBRhgZ3PjvXrtnL0sIrmP/wHp/UqFsHmzBwVA9EJZiDsWV+UmjrdLhwohi/rT6FHeWhLjmPpm6wS46nLTb/wvNQK68+5o/vDUVkXLjN++d5Hkvf3oDF2zmXud/x/BUUMs2D6lNR6tVFcGgpCAcwJ7UCD7220C6RzDmaj7teOoHkioPQ+oWiJMB31k75/OV+6JbetjBxJg4bl+3Fv5aXu0a42hAtZwt0W8f8/B/90K2v7efD8zw+/+cv2HKwGgrW6HTBas3wSUUptJz3WpUUoWono0PzcN/L19slksd25+Cul04gRb0bLGf0GZGcEKnGms/HtCuSAMBKWExcOBTvPtbd6eekVriu5qPZ7baIc9ufu+OFozi2+5wdIwoMbn56OoZ0k7noyq5+FrS8d7veJJR2kMIU4fH/3GxXLckj28/iwTdzrB2M5znrAyR2pt84FEFhnR/c7z8iDfN7u2DhLcbFQdt8x07dg2+excGttlcM8pNLcfvzs9A90hVj33yr4tmyXi0JpY/w6ltzEBxue+zn7t+P4eG3Gi0FXiIDwzAIqb/oE+2XPky4hThyxkBRXLtKU9RMkI1sx5Msj71zAXv+OG7zMQND/XHr32c4/dpam28oZCLIovRFFr/QGzGJtpdK+2vVPjzzSWGz93LDMgAe4FgpYurOi7r9XljYxaa0zt6Z3cThfjMMwJvdbiMj7XT85tMfF2D72sM2HzYqLhyLX+xDDzAJpfN5bkEYegxIsnn77esO4aVvLrf6v6rAWNQoIiE16UTdhkMnpdusL/+4xbmTESptsVPDg1SaIhhZOQAeakWs4CD3v39+Ebv/OGbz8Xv0T8QLN3ahB5mE0nksHFCPCdcNs8PdPoK/f1bSjjUTB7UyDoXBvUXbhg+Mk8E/SGHz9pkT+jrdonRWho7F5ZaatM1muVX1wsaln/m4EPv/PGnzeYybOwS3DDHQA01C6XhGhebhtmdm27z94R2n8cwnxT7fjiNnZNi1vcLfD49M8dIyfAzTeviRDfNHT7yfZ9ds+I2PT8OEyIv0YJNQOpaHX1toc7HV04dy8ch/L/h8Gy7oo0F0ov0VvrOn9ffK61crYh0ao/ngm2eRc6zQpm1lflLc+/J19GCTUDqOtx9NRkSUbdkhF/Mu495/nmrbHdP6jpU5wkGz1l26huG2wZwo2qTlDLhQ7nrxGEoLbFuaOCIqBO8+0Z0ecBJK+7l9uBEDR/ayaduq8lo8+fivHVoZvkBaQC16D3FcMH329AGiEUmZnZN38x/Zg+ryOpu27T88DXeNouechNIOhilzsOChqTZtq9Pq8faT36KYj6KGBHDL/B4OjeXu3i8OcxOrvVcktcUAwzTMgNvPO8/+CJ3Wtgma6++fiNHBBdRJSSht4/6Xb7B5XHLxy8vxV0UiNWIDg8c5fiZ/2NR+XtUGodpSqDRF5vhJVm4VSQNr/zK2m8ui8PXrq23aVuYnxd0vzKVOSkIpnKeuDUJ8d9vCRFZ/9RdWngmlRmzgyRnBkCsdn2s8YFSaR4tiS6QwwShRXG1FOqg0zZKjSvy2ZKdN28amROLvCyKos5JQdp7RobmYsmCETdse2XkGb62up0ZswtAp6U7Zr0wuxf9dG+6R19xaLKYRkquSCaScY5MLXl9eiRN7bYuwGHdtJqbGXqYOS0LZOe589lqbKgJdKryCh/9jX/qhkFnwmDrPDzm6M4tBRHSI0/Y/dHJfr+lXlYpoGBlJc3HkHV/p8IHXT0N9sVK4ILAMFj02lQSAhLJjHpwss8nlNhpM+PD5pXYfX8gseElAClRaz642NGxqulP3HxIRiHtGSL2mf1UqogGeh9SkbRRMJxQs+vbNtTAZTcJd8OQueHxWIAkBCWXbZMnPYtZt42za9sePN2BrdbLLz1mp99yZ37lJNR3Wm3QEw50sxk6D580V1Z1QKPiXgjCs+3qHTdtOWZiNUcG0hjwJZRvc9Mg0SGXCa/Yd3X0Wn/7l/PMLb8UtLwzu7bE1LIdPc42AJfaMwfWpdV7TzyzCqFbGAQycdv/+u7YWZw4KFzypTIIFD04mQSChvJrZ3a+gb1aq4O2qK+rw0JvnXHKO5W245TJO75Ft2n+k62alvS1UqKlYOnPpiXteOYHaKuErevYalIxF/bUkDCSUzbE1sPzrN39x+7kbJHKPm9h5dl64zTGottBvRKrX9TlXeQIrP9psm/Fw11gSBhLKRu4dxyAqTngM2b4/j2OFB8RLqhWxMEjkHtWmQye5djZaImHx/HzXV9EO1ZbanK9vsSRVGufm+3+xj8HRHTmCt+vSNQyPTFWSUJJENnxz3i58AqeuWoMn3/ectC9Pyhm/b6QUwRGunznNmpTudW2v0hRDrXT+vXvovzmorxHuSk9emI0+rG9P7JBQAnhqXhAU/sKtsSXvraPGa4NhbiqDFhiixL2jXRsqJOVNggrvtvysK0TSwtqvtgveRuHvhznzO1dDNBWlyGTykYpSpPLmzKR4To10ePeCeSSUACbME16x/PShXHx/sGOXJFzje4V6b+hRj4Q09xUCGeniqkJqZaygOEi1f5zb2ubDP/U4f1y4aI2eOQgZko4TKXIQjQpOjhxEI4cxxyIXsipU8t7tvotWKON5NeJ5NVJRini+7WUy/29+qOAJB47j8P076zoliuVNrIVwbTHCNcVQaYvNv4u0DuWwKe6NaYztFom53V0bW+rMWWtH8793NoPjhGUDyfykmHZDZqc+axHIphQy3p1DLkqhTEcREiQ1iGFqoYCx3YID42ZnCt7/ltUHsK0muV1RbI1yRSzKlbFQK2LNv9s5puiJ1mqcQoP0bPfPPo+eNcglx1HVFwle7wZw7mx3RxNLu8tV2L5O+EqOo2YOQpYsB76I6IQylS+FkjGavwVZHlpe2uZ6ws/fGCHYmqyv1eLlby7b3EnbFD0btitXel7B3zvmJkIicX+3smXNcJssSf84t7rSrZ5TJ76AX/iiBJpaYRM7Mj8ppizM7tQz2Jn3SCjd5W5zaigYI2SM2YQ0cK27ARZGThW+yNWar/5q3y23sb6BxbpUaYu9emmIzImesWY0yzJ48cZIj20nT3DV130vPL1x+OSOJ+lae+baew5JKF1NkwF1A8dgL9rOu/7bJBn8FMLqI1aV1+LjzVynz8FWa6A9iyBc03xs05Pc7wfHKxAQ7DmD9kMnenZVIUfFTtq6n/c36FBdXitoGz+5DI9Ma/8ep6PIPOvd9EUWpYdYk00mbMo4JfYiqd3PX3PtUMHHWPvt1k5bhs6iXBnb7KZ5kvs9fJpnpRAqAxV4YLyfx/ZZR4UF2bOf337YJXibMbMHt/v/Sk4BLS+Dlpc2/DT/TkLpAS43ACgYIyp5BXLQvpl/Y4YGoaogYQJVVoXlG9r/5nblLLanzZgv7KtDTJLK4/rGqFkZIJrTNNX1o00GVFwWFiEQGhGEW7KMbf6/kFWhkIlAIWP5GdHmPAEJpQtFUsEYEcpoO5zhtjDheuFxk+u+29aqtRiuKba6v+UuyozhGm6cJ41leuo621Fx4Zjfx/XV5m2ZCXcVJQEpzdx1W5aOGD83E76EVwtlPKduNiaohLHDMcJRIblITOsq6Dg1lfX4bDvbXBwb4iBZxvXuL4vGscymQu0uBgRXo3dmssf2E1eFCjUTSYbx2PZQaYoha1JhffEWDrVVwr5MElKjMaFLCQmlV9DQFxWMEUoYrL+3K5TTBws+zF+/7LO6uyptMcqVjXGQrsyvtrjbTY/pDqFuybVze4DxYGHoOSgZ3QNqXHY8tX+cS9MSBZ+fMvYqq3LrmoOC9zN8Sj/4Cl4rlPGcGgoYmwgjAxnLIwztx4YNmyjs5hr0Rvz3lzqEa4qtlpy7aWpBqhWxTq880xGDx/f26L7CMMAt17umLqbKi1JWm4r5myurYdAbBW2fNT4dvoIoJnOautwylm8zFGF+/zoEBAkLX9nzxzGoNEVgGfeLJIvWw4Hcab08MtkfygC5x/eRrAnODxVS1Rd5tCXZEfs2nRD0ef8gBW4ebCCh9HS0MIccaCBtNokTxrRuVWZPHij4GF8tPQ0wnmFJqhtSIFkP8nJHuLgAha34KWR4eIpzYzw9LUOnU+LeZEJw4y/C3e+hE33DqvRaoSxkVQAPc6wWpM3cLBnb+tR378Epgo5RkFOKurIrnnfxvGfMeN88wABV11Cv6TOjZlKoUGtfvhY2l0Wh+IKwNb17DkwiofQGsSxkVNByUrNVicYlkltWDLolSy84B3nH+sMwSPzglLVE7YEBZCad+63JGQO9qr9ERIXgpgzPWFvIU9NUhbrfrITF7cM5EkpvEcxKXgED1yhoMUzz1KwhY4WNURkNJiz+i7vqW9dTMLDuzTiZ3rUcaQMTvK6vjJ0zxOMsOcBz4i7fWV8Po0HYWuCDRvciofQasWRUKOEblx7QoHnKVK8MYXF+h7adbiiF5XlhL2pFrNvj9EZM7++V/SSlTyzmJtd43j31oPHNIzvPCnS/kyF2RFUUo5BRYQeXjAJjEI6hseMtytBCIhW2Vvf+LScb3FveI6/V3VbuoLHea0UMn+o78X+2cOCvU4I+L5GyuCVT3LPfoizc2zKvtG9mN0Hb63UGLDsW0GC1mS03lbaYnqAGnpwVDJnce4scDBiV5vJjenJKY0uWHFFArxMmfL0HdxN1n/eJNXP6DBFWxPX43nOIqW1YH4TnodIWe+Q4pfsssv5eff5SmQTPXufipQk8OHOpNU7uF7ZGfO/B4na/RS+Uo0PyEBwWIMzt/vMkpJzZ7ZZxehCN3JbJIaxLkNdfh6vXHFcrY5t5JS2XgvA0j+XgltOCPh8UGoBxEUWi7feiF0qh1iTP8Vhy2BKYzMAgkYNoZOSMAaK4juDwANw3yrXDB83STfmr/+dJfLNfBp4XNj7fR8Tut+iFsm+mMKG8cKoY8dUnYJQorCE45HabmdL1MlL6xInmeoa7oTScWhlrTnX0giye3FMXBbrfKaLt+6IXym59hXXIk/vPwxoSxDDw1FlvdzDOQ2IQHUV8ahRu6OH6WpVq/zir6+3JkzynDggbpxTTl6hPCeXokDzIFcICs1sOYqsVcSDMZIzuIbprynZTPKhaaRZLi2XpiVEVQid05AoZJkaWirLvi1oou/WJF/R5ndaAwzm1IK7m7/NVgmNRvYG+Q903rqZWxjValLzneC6WlUB3nGeg0woLE0ru1VWU/V/kQinMGrxwsggKXRWkJq3Z5ebJ7bbg6Ssa2vwASFi8uMhxy9oKtQytY5W8Y93wjupixtRdaP9ceUBq0iL3pLBzSupJQul1pAi0KHNPFTfrKBQaZOZvY+UIDPUX7fVlOfBLwJaJP5WmyFzKzz/OcWLZQdhmSUBKq+dqFU/G3P9zTwub0CGL0guJSRC28tv5E4UwSuQwSuReFyDsTDxtGVpH4x+kwIPXuC8MTK2Mg1oZh1BtqcNmwy0iaPPYJw8YWDkunBAm3NEJKlH2EdEK5TVdhH8zrzgd0rmvYx9iUR8duqZ0Ef11ZgssQOyMyRcpb3T4PtWK2FbP1TIO2ep18DzMyRY6/HRKeHLBxCjxLTomWqHsmixs3Kn8UhXiq04AYGBkzdaFuRalbzPMRwpIRCdEYGHfztf4dEZsbbPJHQeLZWvvqVtZHE+tiIVaGQcw5mQLlaYY5WVVwp69JPF9sYpWKGMF3qzivLJGd5uBZxbsdTETI8vROyvFZ65XaOk4izXmUOuSYRBTd8El19veeVsFlAEu5gqreh5DQuk9xCQJsygv5jWpiM4DMpPeaS6W1wjH5D5gWd/5sug1JAXDwyvcbFXGuj3HQaUtNq/9bdJBrYhFSb5amEWZKL5xSvG63gK/1UryymBkm0/keMJyC+5kyITePnW9DANMnd3HIa6tfSfimutt67zN7nestc7BxbzLTn32SCjdSHiXYEGfP51Taa0/aWD9zC8fLojx0ESlVyxD6/AvBw9Yo9wd/a41z8kipAUXhFmUYQKfPRJKd1mTuAxW4EJiu8u7tPKt7rsB5yOm9ffJ65Yr/fDYtED3uLyaYsTUXoDMqHP5kE97VvGmsihhoiJhkSXLEVW/kIqxs6dHCwuz0NbrEFN3wVwtqEn8pK9WDbp5oBGR8eE++yWRPbU/3lq7w23HVxiqoNDzkBl1KAm0fTJNpS0G+IZxz1b+vsqatNoFfKvPiMK/85ZueGQwIKLhfVFalBHRIYI+X15WfZVItuWO+IRQ+Kg1ae0/MSG4dbDJ5cdVK2NREpiC3LCBMEoVkJo0Dtnn1Z5SG328yf9knN6amSbj9CgvqxZ03PCoEFH1CVFalBFRoYKFUq2kKkEAMKNrBdIGJvp8O2RPH4Cv9h9z2/ELg3tbhaw9z6bp/y2i1/Tz1pxvpnUvyRKQ3l46o0EiR3lZlaBJGvMcgXhSgEUplMHhwsaYKgQG1IqZ4dPSKXsTQGq/eMyM34rVhWFuPY9moteKoDX9u73/dfYYbb1/pbTKhmewnFxvTyYgSCno85XqGlKGBrx5GVpHM2K6Zy17YbUcNa4v9is0O8c/UFwRE+IUymCFoM/X1WhpOVoAT84Mhp9CRgrZwEAPLVRsGSZyZZ+tqxZWCd4/UCmqvkAWJYD6Gg2tiwNguI/kdXcWmY9pi9YAACAASURBVJ8UT88J9djzs4wvhmovOV8oa7SCPh8YQkLp8fgLFEpNnc7nReH2TB5hkcEgvOvLQ62IhRRGpx9HUydMKIUaKySUbhFKYa53vcBvSzHi6yFBbRESEYi7hnv47BYPp1uVF8qca6x4OqKc9Ra6oNjaoi4+LQYz4srRLZ3Co9pixPQB+N/OQ24/j8blHXhY4n2MjBRGxvwYh2ovoVIR5ZRjH60WloAgV4qrRCFLjwExauZAaoR2SOwZg2u7Vbv1HJqLZKNAViqirOLoLJG02cwli9KzkflJ6ekWwMDRPakROhqamD4AK9694LbjX5Vh01REtcUwQtrM/Xa3aIrtGRSlRSmVSejJ7iT/Ny+c2qsT9B+R5rHnplbEWi3LphamxR13zzNIQkmIiGGT06kROoFEwuLv872vIK0URreJJQklIQruGSlBcHgANYTIv1QsYkmCSUJJ2EAGjU0KIiBYiQfGeXZqXtPVFS2ZO0ZInbLCIwkl4RsW5SsnsG31IZhMHDVGJ/G0eNNWl53leRghhRFS6/ilJYQIAFmWNlnlIsSgN9LMdyd5/qsSzPjjJKbeMhy9BidTg3RA12QVFvbRYckJNyzX0KJkGtBkXSce1uLTRkZ21ax3079dMSNu0IvLghWlmhgNJhLKDnh4ghLv/mEuDLumOAxr/nUKN/Y/gpl3jEZkXBg1UAdW5ZITp11+3PZChDqLxZqsVEQ5NUDdaBCXUJLr7YM8NTsUc+4bix/eysSivo3FVb874ofrH9qF1Z9vpfz3duidlYyJkVe88txdF6AurqKmohRKvdYg6PMzEq741IM+fIp59jYmSYW7/jEb7z6W2uz/b62txZSbNmHP7yfA8767wFqbEsAwGDm1r09d8/R4tVOfQRJKN1BXI2ytEWWgwmc6/B1DgdAuQc3e6z8iFX8snYhnr2+ez/v0J/n48KnlyD15kdSxBZ6wrK1QGtMghRMQrHTqM0hC6Qbqa7VO7QTeTFtVu2V+UkycPxSrFo/EPSMaM3WWnw/AbX8/jCX//Q0VZVQJ3oIiQI5Hp3hZDGoLbzimrvMpmUIrcmlqxTV0I06hFFg2TWgn8FbmJFcjuXfXdj8T2iUICx6bhK9eHYjrUhurWn+6g8Oce7fhj6V7YdBRTB7gfYWO7SlOrQyQC3wGyaL0eLR1wlZ/CwzyDYtyxPTOxwAm9YrB/a/Pw38eSGr2/qs/qnHbbb/gyLazPi+UXWLDsCDdewXBIOm8+An1umqrxSWUXhNDE8+3GEzm0ebEmq4+RtC+Q1VBAMS/EuOAkcIKOzAMMHh8b2wY3h1//rQfr6+qBAAUaZV4+O1zmP/bMUy/bSTiukf6rFiOnjkIPxw76aVn3/mJutCIIGEWZa24imF7vEUZz6mbiyQPFDIqFLIq889WXtXltYKOER4ZIvoH+u83qCCR2lYlSK70w+Sbh2P5B8Nx66DGLJ6lp5S48an9WP7hZtRW1sMX6TkoCTNjK7zy3NWKzhdrjogS9ozUVNT5tlDGc2qXnVw8r25mNVoEsiNKi4WF+4SoAkX/QA91QEEHVddQ3PrcdHz6fF/MjGsUhw82aTH99r+wddVBmIwmnxPL4dPFv4yG0PWUKi6La+Kv00JpEcjOCJUzXO1CpvPHrbwsrBp1WJcgUXfy+8f6OXRVvLSBCXj47QV45bbmE0MvfFOKtx/5Aaf25fmUUGaM6SH6azQPT0HAM+idQtmWIdhpoXSVQNorkgBQdUWY2S+29T1aMsIJFo9EwmLEjAFY+9VYPDyxUYR/vRiO+147iS9fWYOyogr4An5yGZ6YIe4vW6HPSPmlSq+91tbEkrV1Q1eJZNPxZst4pfl1xfpKRWmT99UoqZULrogzM1GcD/X83hp0TXbe4mkBwUrMuXcslvw3Ewv7NMbOfX1Qgusf2oVfv9gOrQ+kQ4p5FcvZycKeDZORwzaNdxZYKWRVrU4Ss53e2B0i2Yrb3zhpE2F9aTnz5L2CMULBGAEGqFILM/2jEyNEak0OcMlxuiarcPc/5+C9x1MxMLhx6OM/v1ZjckM6JMeJNx0yLDIYtw4R5/hsVIKw579SXe3dF8xfbRx61Kx3q7PYbMcTOBYBzUE0chAN8MClgnJhD3qi+JasHRBcjd6ZKS49Zr/sVLz56Tw8P795ez79ST4+eGIZLhwvhlgZNTNDlNfVNVGYUJbme3fthNY0R5QB5zlMNMqKhAlldIL4LMq5c9LAsq6v4iLzk2L89UPwy6ejcO/IxlDdlXnBuP2FI/ju3+tRUVYtuvZO6ROLGfHiK7ASJfDZKC0UXxuIUijjOTUuFZJQDrmmj1uPH6IKxPxHJ+Krfw3EvO6Nsa2f7eIx597t+H3Jbuh14qoyI0arMjpe2LNxqYCE0itQsEbBNytUZCFCj072F5yf6yySesbggTeux7/vT2r2/r+Wl2Pigj9waOsZ0bS7GNchEvpslJJQej6pKAUAlBVXQGgpxZsG6kXTDtkumsTpLAwDDLmmNzZ8fw2emtU8y+PRd87j42dXoOh8mde3u0QqwTNzQ0XTj24ZJKwACs8DuYXiyspxm1A2DeVpa6bbJpHkSxu/1XQKXC4W5n4n9owRR+fOMEHV1TMfVrnSD1NvyTanQw5uDOFadlqJG5/cj5Uf/YmaCu9OhxwuolChxB7Rgj5fVlSOY3w8CaXdIumkmMxUvrRF/BOP/DOlAjuFOIQy2wtS6lRdQ3Hrsw3pkE1ypd/bqMGMO/7Clp+9Nx0yOCwAd2WLQyAS0oQ9E3mnxBnV4PWudzynNrvbLSZ3tbwUuQJvWmKa9wvlzLgKpA1I8JrzTRuYgEfeWYAXFzVfv+XFb0vxxt9+wMm9uV55H0aKZFInIU2YRZl7WpzV8F0ulK3FRNrifsdzaqTypVCwjWMoChgBHshBNAoZFS6cKBK0Tz+FDPPSvDuZ3xszRE7uzcXG9VdP6PxeFo77Xz+Fz1/+RXAUg9sFJjUac7t7dwjU3O5V8FPIBG2TcyxflELplnqUhYzqKnFM5UuhhQzWnEW+UVjjuaZVhBgoGEOrEl/JKZoJ8W+XovCoRi8oTzVtQCJwttxrb2jGGO+ZdS3Nv4I1n2/D98f9ALQ9pvrtERm+fXg3HpsaiAnzs6AMlHvF9Y2cMRAr3z7vtX0pbUCioM/rNHpsuhIHMeI219uSeWN1lSGDgjFY0xAVrPmVCrPVaH2fMbRwsWXWjJzWrNXcU8JcgR4DE732Zj49JxQyuefXYq6r0WLV4r8w/9E9DSLZOd5aV4spN2/C7t+OeUU6ZP/sNK8Wh54ZSYI+f+54IcSK25+qlpWBmk32tJZUwrdw3ztIPDl1IFfQDRc6JuNJDJuS7tHnx5k47Fp/DM99Yd+A/zOfFmL2huOYcftIdEv3XAuGZRk8Nz8Cry71zrhCoZObpw5cgFjxOPOjwwIcAjPyzhzKE/R5hmFwxzAen+/yrgXc786WCK4Z6ErOHirAr19ux+oix4QtrcoPwaoXj+KOrKOYftsIwYVlXUX2lP7A0s0uPaZKWwyAF1TBvCU3DdaBYYQ9AzlHCgF4r6Hhka63q/itNArVAsvSe6PLlD3NM1cEVF+sxFev/oq7/3ncYSLZlM/3AHPu3Y4NS3ZDr/W8dEj/IAXuG+tYe6SjZWbViliAB2Jqz0OlKWoQTmFkjOwl6PPV5XXYcClatDoieqG0xarsPdi7aunN617rccHyOo0e677egXl/24mvDji/m722vBy3374ah7Z4Xjqko/O/SwJSoNIWtyuYamUcDFIFZCYdZCbdVUIbU2cW0bbom9Vd0DmdFviMkVB6IKf2C7uJUj8pbsvkvOb6PCnAnOeBfRtPYtKijXjzF9eubFmkVeLRd8/j4/9bjsKcSx7TJjGJKlzfq9bm7ZsKmsU6VCtiYZDIzVaj9mqrsenfUpO2mahKTVpIjVooDdVXiaVKW4QF/eoh85MKfMYuiFpDpPABtu25hEVGk6BVCPuPSAP2nvOK6+uXneoR55F36iLWfLEdK867d7G2ZWf8sezpA3hgrB8m3zgMQWEBbm+b0bMG4cdTwq1dlbYYSn01VEyx2aVu6WI3+ZxVDHkeUk4HIyuHlNMBPA+FvhIxOA+AMf/fpIVRqoSM01tFVWbSwSCRY/BYYVWnTEYTvtwjEbWG+IRFmcNH4/RBYVZl+tBuXnFtLyzoAonEvbex8nINfnj7d9z63GG3i2RTPvxTjxl3bMFfKw/AaHBvOmTvIbb1J7UiFhq/4FbFseXnSgJSUBKQAoNUAaNEATAMjKzcXJEEPBT6Kij0lZCatFbLEjxvds+NWkhNWqgVsYLH6E8dyBW9hviEUALAsV3CrEOJVIJHJis9/rqyJvV127ENOiM2LtuL2fdsw+JtRo9to5e+u4Qn7voJx3e7L/ibYYB/3mbbOLJaGdemQHYkmiWB3aDxC4FWFmoWzYaSWixnBMsZG4WTYaCRBePecRJIBa7/fnj7GdHrh88I5dFdOeAELjiWOaGvR1/T38YrEBDsHjE/sj0HD9y5Eq8sU3vF/T9cHYy/vXkGn77ws9vqJWa6qZCyWhFrti6ligbrEuB5HjzPg+GM8DOYx0+NEgWyJwsrz8eZOHy2gxG9fviMUO7Up+DskQJB23RN7oJZSZ677KY7QoKKz5fhk+dW4OG3cnC2LtDr+sGS43LMf2QPVn36F+prtS49tlzph8emuna81DzDfaHB3WZglDSmfzINL57j4K9VQxXmh/juUYL2L/bZbp8TSgDY+8dx4WI0xTOLTNyYrkdMkuvWWq+trMeKDzdj0ZP7sfSU0uv7wju/1WPqzZuxc90Rl6ZDurKgskprntE2sH7mMUse5hfDNHmZP8tzHG65QXj88K4NR0goxcYXe1jU1wizIjy1yISrisOajCZsXXUQ02//C+9v0oquTzz7WTHeeXRJQ1aJ84mIDsGi/s5tR5W2GCptMWQmPaQmLWQmnTkkiNNaXW/G6n6btwkOC8CwScI8lLoaDb49IPcJ7ZAk9Vr0ki+JZc8wraAcVlbCIo6pwNbjnlN1e0bXCsy8c6TgFDOhnNyXi+/eWI/F202i7hNnqpVYs6UMbO5ZxKdGQRmocOrxgsICsGaL/cteqLTFqJcGQ6UpQohejSBDOYIMlZDwJnCMBBwrBQMGBokcRqkcRol5NlwvDQAnVQAsC9ZoDkaftmgkeg0StrTxjvVHsOVInU/ohk9ZlACw+/djgrcZNtmzik0MndzXqSJZVlSBL/65Bve/dgprLob5jsexl8Hc+3Zg/bc7nZoOmdY/Af2CK+wWSSsMAwPrB4NEYZ3ttsyUGyQNAskqYGTl1nAhy/sMw0Cu8MPYOZmCz2Hb2gM+0zd8TijXFqsEZ20EBCvx0ESFx1zD4PG9nLJfTZ0Oaz7fhusf2oVvDkngq7zxcyUmLvwDB/48JXiBus5yww32zYCrFbHWkCG1IrbNECK1ItYcdA5Aymkh5XSQNbjj4M1FYLInD0BgiL+g4xecLcHmK/E+0ydYX3wQtq45KHibcfOGeMS5PzE9SFAh4s7AcTz2bDiOKTdtwn/X1oAw8/j7ufjo6R9RcLbU4fvOHO+a0DOVtsg8RslpITPpG7JydJAaNQDD4EpQMqbdNFLwfrf8csCn+oJPCuX/tvOoLheWexuqCsLj09wfDjPUwTUnzx8rwodP/oinFxeAuJqfzgXi5mcOYuk7v6O63HHjcTI/KR6d7u/8C2iwiC0iKeP0MErkkBnMX4gLp0QjPDJE0C6rrtTg812+JR2srz4AW9ccErzNmLmD3XrOd2QCqhjHlCorv1SN7//9G+548ShW5AaBaJ9Pthox884t2Lx8v8PSIUfPHOT081Yr42Bg/Rpc78YqQpyJh1oZi8kLhC8XuXHFXp+7/z4rlLt+OyZ4wD4ozB9PzHCfqAyban+AuV5rwO/f78bc+7bjf7s4EML4x5IyPOmgdMhQVRBuGSJ80kilLe50nUmVthiyBoE0Sszj7FKTDiZlMO6aGIDgcGFekk5rwPu/6UgofYUduiTs3XRC8Hbjr890y/nOTa5B9362V6zmeeDQljO4/fbV+NeKchC2c6ghHfKTv69ASZ59KZxjZwsf+25v8qa1G2+QKGCQ+Fn/NkrkKAzug+k3jxL+3Kw/5JP3nPXlDr/px70w6oUVc1AGyPH6Pa6f7bNnPZyCs5fwybMr8Oi751GkVYJwDEtPKrHgsb348YM/UFetsWkfSb26YlZShfNOsqFykMykh0HiBymng9Skw8u3RsJfYLyoQW/Ed98dJqH0Nf6sicOuDcLjKrMm9sXsRNcWpR0wSnh6WXV5HX56fyNufuYAlp0hgXQWH202YNqtf2LLLwdsSocc7eAK6E3dbiMrN0/kNJqYKAzujVHThY+Pblm9Hxf4OJ+8x6yvd/LNy/cJtioZhsHMO0e57ByfnRcuqOK00WDCXysOYOadW/Dhn3pSMhfx4teXcM8tywTXPu0/oofjRbKhcrnUpIVB4geDxA8yozmVcfELvcGwwhIWDHojXlniu0M2Pi+Uf9bEYZsNM+ApfWJx/xg/l5zjUAE1J4/vOo93H/kBL31/CYTryakLxr2vnMSnL62EuqRzlackUhbPXR9ug8VY1PbfDToo4/RQ6qut+d4jJqajx4Akwcfa+NNun76vLHVt4K9VB6GtF255Tb99hNPP7b6RUgRHdDwzWZp/BZ+/9Av+9u8zWFMSTjfVzSw5qsC8B3Zi9ZdbodN03LeGTREe0aBWxLVYYIxBTN2FJks7aGEpGaTQV6EwpA/mPzBJ8HE0dTq8saKahNLX2VIXj40/7hG8nX+gAu8/4dylbYd1UCWorlqDX/63BfMf3YNvj8roZnoYb62pxaRFG7F34/F20yEDQ/xxzyjhaaMlASlWsbTMgiv1VQ0B5rDWoQTP4z8PJdlU6PnXb7b4/H0koWzgP6troL4ovEhv+vDuuCPLOed0Qw8NEtJaL6TKmTjsXHsE0279E2+vr6Mb6OE89VEB3n3se+SdvtjmZ0bPtm1SpyQgBfHVJxFTdwEaWTCMrBwKXYW5tJpJBz9DDQZld8fgMb0F7/tS0RV8+IfR5+8fCWXTb84vt9m03Zx7xzrlfIa3UcH87KECvPf4Mjz7eTHdNC9iVX4Ybn32ML77zzpUXbk6hbZrUhdcl2Zbrr3GL8S6uqJl2QcppwPLGRAU6o+bn5hp036XfvAb3ThnCWU8r/bKxvjqgARnDwvPeQ4MUeLT5x1b5CAtoA59hzVfuU9dUolvXluLu/95HKsKQqj3eimf7QRm3bUVG5ftuSriYtRs29Ia1YpYGKRya8k187IPCnCsDHc+ey2CbViy9/jec/j5bBjdsPaEMp5XIx2Ns2jxnLrVzzQVxXjOvE2CtBaZTL71//G8GqkoRTqKkIpS6+/pKDL/n1O3un93sObzrTbl8qYNTMCTM4Mddh4LZ6dYl6HV1uux7uudmPfATnyxj6FeKxJeWXYF18z/HUd35Fjf65tl+zLJaoU5xlHGmSePjKwcU+YNQd+s7oL3ZTQY8d07v9JNaoAZPWctT83QnGfnhWPiwqGCtzMZTfjomeVYccH+fPB1X4+DMlCO/ZtO4cmP8uimiJwbetVh9l1jEJPUBX/9vB8vfSusArq1nJqpMQ+7NiIFP303C1KZ8EmiFZ/+gfd/M9CNcabr7e1sWnkYJfnClzSVSCVY+MRku4//8AQlyorK8dHTy0kkfYRlpwKw4LF9WP7RRsFWpXl9HB2arrJYGNwbi98aY5NIFp4rJZEkoeyYPVwCVnywyaZ0tIjoECz+u33Vq4vOleHW5w7jp3MBdDN8jA826jHvb7sEbmUuxmteDsK8xMN7T6UiMlZ4PC3H8fji9Z/pRpBQdo7l5wOxfY1tBQB6ZCTipUVRNh+b6kMSQlAr4mCUKKDUVyFIU4Ybb+yPfkNTbdrX1l8O4M/yRGpUEsrO8/uS3SjJt22Sacy1g3D3cGpewjWUBKRAIw/FkJFpNi3tAAAleZfx/bdHqTFJKIWx3ZCIH97aYHNF63kPjsf1qfXUkIRLGJIswx3PzrFpW6PeiO/eXI8cRFNDklAKZ3VhGNZ8YVsgup9chpv/byqmx1ChXML53PfP6yBX2JbG+stnW7C2VEWNSEJpO+9uqMfJfbk2bRsY6o9bnp1GjUg4laXvZCE43LbJvxN7zuP9jTpqRBJK+1n+wSZUXrYtvaxLbBi+fGUANSLhFP73Ul9EJ0TYtG1FWTWWvbuBGpGE0jFsrumK7/693ubxyuTeXfHJc72pIQmH8v5TaUjtl2DTtka9EV/9azW2apOoIUkoHWhVngvEyo8327x9z0FJePexVGpIwmZU2mJrvck3HkhA+tDuNu/rpw824pcCql1KQukEPvrLgJ1rj9i8ff8RqXjroRRqSMIOePzr7lhkjbe9EMu21YeweDstV0xC6UTWfb0DuScv2rx9xpieePM+CuolhKNWxOKh+wdj+OT+Nu/j/PEifPolxUuSUDqZ7cYkfPvGWlwutn2Z0cwJffDWg2RZEsJ44754jJpu+6qNZUXl+OrVNShkulBjklA6n801sfjq1TWorbI9oDxjbE+8/0QPakyiVSxjkRbeeiQFWRNsX9+9prIen734M7bpyJshoXQha0tV+Oa1dTDobC+Vnz68Gz55lmbDifZ5/6lUZIzqafP2Bp0Rn/9jFX6viKHGJKF0LVlsAS5euIwf3toAnre9rGfPwUn46tWB1KAitgbt4X8v90X6UNujJXiexzev/4pVeaF0Y0go3QQPnD1YgOXvb7JLLJN6xWD5B8Mxs2sFtakIsKyIaO8+lr2bhdT0BNu7J89j6dsb8O0RP7opdiBJ6rXoJWoGG6xJJh9gGEgYHmAYXCooR21VPXoOSrJ5n/5BCvQbkQru9GkcV0upkUVkXfoba+BvrEG9tHPLhUyJvYS3352O8Cj71kZa8dEmfLyFVlEkoXQTxQhFMR+CGFSBAwOOZ1B6oQx1NVr0yLB9sNxPLkP/kakIKM3H/gKKc/MmMWwqgk3FETwPGacHx0rgb6zuUCwXDdDgvn9cD2Wg3K5zWvnxZsrhJqF0kGXIFqCYt/1bO46pAhjzgl8cGBScuwzeYES3fnG23xQJi77DuqGbsg5/Hq6hXuoFtBS/emmw9RWiVwM8D7mxDjKTHn68vk2xfG5BOK67fyIkUvtGxdZ+vQ1vr6MSf46C/Ds72cMnAi2GJvesKAePXZi0aJhd+x45cwC+SOmC2184Qg3tJVZl07FJy98GiZ91TRsAkJl0V30WABa/0Bs9BiTZfR4rPt2E938jS5IsSke60Lxz1sfefkqLsOpiu8YsASAsMhizx8cAOWdo3NLDRVJm0qHWL8z6N8DD31ht9jYYKRgGYHkTWM4AGaeDH69DvTQYU2PL8Ma/JyG+W5Td5/HNf1Zj8Z+0sCoJpRex+5wBgeoC9BqSDIaxfT1uhb8fMsb0QBwqsO2khhrWA/E3VkPCG6Hg6s3jkgDAwzo2CQAS3gSOlcLPWAeWN6JeHo77Zqlw2zOz4B+ksOv4PM/jqzdW46vdMroZJJTex95cE/xL8tArMxksa7tYMiyDbulxGJMegIL9Z1Gik1PjepJQGqqtQmhkFWB5I2Sc3mxNNgglx0gh4c0TdPmh/fDePzORPXkAGDv6BQCYjBw+f20Vvt1PfYKE0ovZX8CBOXcavTNTbFpnuSmhXYIwekIqQsqLsC+fZsU9RihN1ZBwJrMQNuiehDfBwJrjF2WcHhwjgYQ3YeyYRLz+xkREx9u/9IK2Xo/FL/6EZccD6SaQUHo/R0pZaA4fRq/ByZAr7Qv+lfpJ0WdoNwxL9UPl8RwUaBTUwB7gesuN9eBYCThWCoCBhDeaxRMmAAzK/BPx+vNZmLwgGzI/+8ebKy5X463Hv8a64ii6ASSU4uFUhRyVu/ahW3ocgkL97d6fKiYU2RN6Ilp3GTtz9NTAbhXKGshMOnCstMH9lkPG6SDldOBYGWZN745XXx2PrkmOqdpTeK4UNzy8B3laSkv0KqGM59UIQT1CePOrmvGn1m2Fc/UBKN++B7EpXRARbf+Mu1QmQVpGIsZnBENefAHH1TSY7xahNFRDxjUKJcsZIeE59E0LxsMvTMfIaRl2D7tYOLH3HO588Tg1ugthRs9ZS7EEbmCEJBcTFg7D6DkZDt3vke1n8eHiwzhbR2NWrkSlKYLSYA4FMrJylAR2w5sPJCDTjirkrfHbkh14fXkVNTgJpW9x1zAG1z14DfwUjrMEDTojtq05jH8sKaMGdiExdRdQEpCCJ2YHYtINwyGTOy7uVafR44vXVtGkDQml7zI7vgI3Pj0Vqq5hDt1vfY0W21YfwmsrqCKRK3h4igITbhiGwGClQ/dbWqDGR8//iK01SdTIJJS+zRj/Isy+ezQGjHJ8xXMSTOfy9JwQjJqVgQAHCyQA7Nl0HE9/WECNTEJJNOW+UVLMvmeM3SFEbblve/84gRUrz+BwdTA1tp28fHMksib2g8Lf8fdKU6fD92+vxXcHKfSLhJJolalRatzwyAQk9nBO2X6O43F893nsXHsES08pqcEFMC+tBiNnDET6sFS7Mq3aI+dYAT7+xyocNHWnBiehJNoji83H+LkDMe66IQ4LK2kN9cVK7N98Eq+vrKRGb4cnZwUja0Ifh48jN8VoMOHXr7fgnXVaanASSkIIM+MqMPe+sUjq1dWpx+E4HmcP5ePojhx89JeBGh7A3SNYDBzVAz0HJdlV1KRTVuTRAnz73zXYWpNMDU9CSdjKI5OVmHJTtlPGLltiMppw/lgRju0653MVsu8fK0P/7FSk9k8AK3H+klLaeh2WL96Iz7Yx1MlJKAlHMDH8EqbfNgL9slNddkyeB0ryLiPncCFyjhTgu6PiWqRqYV8t0gYmIq1/AmKSu4BxoV7t23wCX3+0Fcc5WmebAfDmAgAABuNJREFUhJJwOPN7aTDj9pGI7Rbp8mMbDSYUni1FYc4lFOaU4n+7vKvt7sjikZAWjYQe0YhPjXbq+G9b5J25iKXvb8BvF6mYBQkl4XQeGOuHSYuGITg8wK3nUV1eh5I8NcqKylFacAWXCq5g+bkgt57TdWm1iIwLQ1R8BKLiIxCTrEJwmHvbqfJKDX7+7E98vcc7K9VnIg97kURCSXgfoxQFGD61H0bNyrC7Sraj0dTpUHm5BpXqGlSpa1FRVo36Gi3qa3XQ1GqhqdXi53xh1W/mJFVBGSiHMkAB/yA5/IOUCIsMQqgqEKGqYISoAqEM8KwCtrXVGmxYugPv/+bdFZ4ymTzs5UkoCW8WTHk+hk/rj1GzM+AfSEHKnkBdtQZ//Lgb76yj5TtIKAmPYmxAIYZP64/hU/s7JaWO6Jiayjr8+fN+vLWmjhqDhJLwZEbI8jBwdA+MmD4AUQkR1CAuoDT/CnasPYL3N1LAOAkl4XXc2E+PkTMHIm1gokvDX3wBngdOH8jFttWHsOS4AtlsLnZwFDROQkl4LZNUlzBobC8MHtcb4VFUFMMerpRWYd+mEziw6ST+qGzMmspmc1FgCkIho6JGIqEkvJ2FfbUYck0f9Bqc7JTqN2JEW6/H8d3nsG/TCSw71XqoUTqKAADHEEcNJiI8NqAri80HGiR8D0+ZC45myXEFlhw/jyzJZvQaGIf0Yd3Re0gKlIG0NnRTNLVaHNt9Hsd3n8Oug1eQg2gAbcdjaiFFJKsBaCVhsiidKpBMPiwDaTKGg4FnAZ4nsXQRNw8woMegJKT2j0dkXLhPtsGlwis4e7gAp/bnYtvRWkFudDyvhoIxQgEjWZVkUTqPPXwispBvFcYsJp/ukgv55rAMOFwMoBgTw0qROjABqf0T0K1vLILcnNniLKrL63DuaCFyDucj50gBNlbFNvxHATACY1J5IIeJRjabS1YlWZSELzIp/BISekQhPi0aiT1iEJsSCamfxKuuwaA3ouhcGQrOlKDgbAnyz5RiY6VjSthZrMkcRCMdRaKzKH05M0dKjz/RWTaURwG7AOwqBVAKAJgafRlR8RGITohAZHw4ouLDERETCrnCveuL6zR6qEsqUZp/BZeLK3Cp4ApKC65gfVnTQiIsAMfV+VTAaB5XZ8Q5mSNjeOu8AVmUBOEARiryEdYlCKFdghCqCkJYl2AoA+XwD1Q0+Wn+nWEAlmXbXLJXpzWA5zjwHFBfq4WmVgdNnflnfUPOeEWZOae88rL5tVXn+jHtdBShkldQaBBZlATRObZpE4FCmF/QNrycbvMACG94uQcSSXHCUhMQBEF4sFBmMfk0q02IhmCW1hoioXQCFBtJiAmGEulJKEksCYIgoSQIgiBIKAmCIEgoCYIgSCgJwnPhecrdIKEkCKJdqLI5CSVBEAQJJUEQBEFCSRAEQUJJEARBQkkQBEFCSRAEQUJJEKImnlNTI5BQEgTRLlRAiISSIIh2rMmGxcUIEkqCINohUqKlRiChJAiiLUIZLXneJJQEQbSHZSkIsU/oZDJ5JJQEQdhIgzlZyIp7Jca9fBIJJUEQtuokgyoTrQBNQkkQRLtU8gpRX98ISZ5P3lcSSoJwIIWMuN1uXy1NTEJJEESn2WFK8snrpgEVDyCeMwcqayEVvUVCEGRREra5a6wKWkh9168RAb4SMpPJ5JNQEm4US0Yl+rASMbOXTwIPcxqjuPHNb3MSSoJwkEVp4BiEMuJOYfTFGErAzWOU1rE5XkrWFOH1htZeJFI7kEXpBHezYWyORJLweksLSdQIJJROFEua5SVE437nUyOQUBIE0R5+LIUtkFASBNEBDFJRSs1AQkkQRHuEMTpqBBJKgiDaQ8Zw1AgklARBtIeBpxrnJJQEQbRLhcjLrJFQEgRhH2RMklASBNE+PE/hQSSUBEG0i4EDtBxVLhQjdFcFko4ia0m0HCaaGoRo7nuT+00WpS8Tz6uRzeYimNUjkqlHpESDTORRwxDNEHv1IMA3UzXJohT8ADBgGHNVPk0nmi+eUzcr+pHKmzM3tJBCAeNVBokCRigb3m+6/2OIo5vg4ezlE80iIvKhShnLI5PLx17ed6olkVB2kmOIA7jWxa+l5amAEQrGaLXZQ1GESl4BBYwIY7SQsTwMHAPzE8U0E0Rt0995Kbn33iYiDCd6odxhSsIIST5gIouSaIf2ysIVMqqGOpsGaCGDlpda37eILHhYxdQy3mn52WzfNN7lfS4p4yM3jQFScQk5iCKhJGwX0sI2xK6lyDazTkkYCS/5QvC1UCiazPFg65TwLnxpzM7AsT5jTZJQtrDs4jk1NQRhp4CQW0CuN1l2BEFWJQAZy/nUZM7/A6TfC7yNvRPXAAAAAElFTkSuQmCC mediatype: image/png install: spec: clusterPermissions: - rules: - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create - apiGroups: - "" resources: - services - namespaces verbs: - get - list - watch - apiGroups: - "" resources: - nodes verbs: - list - apiGroups: - "" resources: - services/status verbs: - update - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - policy resourceNames: - controller resources: - podsecuritypolicies verbs: - use - apiGroups: - admissionregistration.k8s.io resourceNames: - metallb-webhook-configuration resources: - validatingwebhookconfigurations verbs: - create - delete - get - list - patch - update - watch - apiGroups: - admissionregistration.k8s.io resources: - validatingwebhookconfigurations verbs: - list - watch - apiGroups: - apiextensions.k8s.io resourceNames: - bfdprofiles.metallb.io - bgpadvertisements.metallb.io - bgppeers.metallb.io - ipaddresspools.metallb.io - l2advertisements.metallb.io - communities.metallb.io resources: - customresourcedefinitions verbs: - create - delete - get - list - patch - update - watch - apiGroups: - apiextensions.k8s.io resources: - customresourcedefinitions verbs: - list - watch serviceAccountName: controller - rules: - apiGroups: - "" resources: - nodes verbs: - get - list - watch - apiGroups: - admissionregistration.k8s.io resources: - validatingwebhookconfigurations verbs: - get - list - watch - apiGroups: - admissionregistration.k8s.io resourceNames: - frr-k8s-validating-webhook-configuration resources: - validatingwebhookconfigurations verbs: - update - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations verbs: - create - delete - get - list - patch - update - watch - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations/finalizers verbs: - update - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations/status verbs: - get - patch - update - apiGroups: - frrk8s.metallb.io resources: - frrnodestates verbs: - create - delete - get - list - patch - update - watch - apiGroups: - frrk8s.metallb.io resources: - frrnodestates/status verbs: - get - patch - update - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create serviceAccountName: frr-k8s-daemon - rules: - apiGroups: - "" resources: - secrets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - admissionregistration.k8s.io resources: - validatingwebhookconfigurations verbs: - create - delete - get - list - patch - update - watch - apiGroups: - apiextensions.k8s.io resources: - customresourcedefinitions verbs: - get - list - watch - apiGroups: - config.openshift.io resources: - clusteroperators verbs: - get - list - watch - apiGroups: - metallb.io resources: - metallbs verbs: - create - delete - get - list - patch - update - watch - apiGroups: - metallb.io resources: - metallbs/finalizers verbs: - delete - get - patch - update - apiGroups: - metallb.io resources: - metallbs/status verbs: - get - patch - update - apiGroups: - monitoring.coreos.com resources: - podmonitors verbs: - create - delete - get - list - patch - update - watch - apiGroups: - monitoring.coreos.com resources: - servicemonitors verbs: - create - delete - get - list - patch - update - watch - apiGroups: - operator.openshift.io resources: - networks verbs: - get - list - update - watch - apiGroups: - policy resources: - podsecuritypolicies verbs: - create - delete - get - list - patch - update - watch serviceAccountName: manager-account - rules: - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations verbs: - get - list - watch - create - update - delete - apiGroups: - metallb.io resources: - servicel2statuses - servicel2statuses/status verbs: - '*' - apiGroups: - "" resources: - services - endpoints - nodes - namespaces verbs: - get - list - watch - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - get - list - watch - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - policy resourceNames: - speaker resources: - podsecuritypolicies verbs: - use serviceAccountName: speaker deployments: - label: control-plane: controller-manager name: metallb-operator-controller-manager spec: replicas: 1 selector: matchLabels: control-plane: controller-manager strategy: {} template: metadata: annotations: openshift.io/required-scc: restricted-v2 creationTimestamp: null labels: control-plane: controller-manager spec: containers: - args: - --enable-leader-election - --disable-cert-rotation=true command: - /manager env: - name: SPEAKER_IMAGE value: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 - name: CONTROLLER_IMAGE value: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 - name: FRR_IMAGE value: registry.redhat.io/openshift4/frr-rhel9@sha256:41205f57dd50b222640776ca5fcda336ca1541f53dae820d7bc6669f52c28a87 - name: KUBE_RBAC_PROXY_IMAGE value: registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:784c4667a867abdbec6d31a4bbde52676a0f37f8e448eaae37568a46fcdeace7 - name: DEPLOY_KUBE_RBAC_PROXIES value: "true" - name: FRRK8S_IMAGE value: registry.redhat.io/openshift4/frr-rhel9@sha256:41205f57dd50b222640776ca5fcda336ca1541f53dae820d7bc6669f52c28a87 - name: OPERATOR_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: DEPLOY_PODMONITORS value: "false" - name: DEPLOY_SERVICEMONITORS value: "true" - name: ENABLE_WEBHOOK value: "true" - name: ENABLE_OPERATOR_WEBHOOK value: "true" - name: METRICS_PORT value: "29150" - name: HTTPS_METRICS_PORT value: "9120" - name: FRR_METRICS_PORT value: "29151" - name: FRR_HTTPS_METRICS_PORT value: "9121" - name: MEMBER_LIST_BIND_PORT value: "9122" image: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:f21e7d47f7a17f6b3520c17b8f32cbff2ae3129811d3242e08c9c48a9fbf3fbe name: manager ports: - containerPort: 9443 name: webhook-server protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /readyz port: 8080 initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: requests: cpu: 50m memory: 20Mi volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: cert readOnly: true serviceAccountName: manager-account terminationGracePeriodSeconds: 10 volumes: - name: cert secret: defaultMode: 420 secretName: metallb-operator-webhook-server-cert - label: app: metallb component: webhook-server name: metallb-operator-webhook-server spec: revisionHistoryLimit: 3 selector: matchLabels: app: metallb component: webhook-server strategy: {} template: metadata: annotations: openshift.io/required-scc: restricted-v2 prometheus.io/port: "7472" prometheus.io/scrape: "true" creationTimestamp: null labels: app: metallb component: webhook-server spec: containers: - args: - --disable-cert-rotation=true - --port=7472 - --log-level=info - --webhook-mode=onlywebhook command: - /controller env: - name: METALLB_BGP_TYPE value: frr image: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 livenessProbe: failureThreshold: 3 httpGet: path: /metrics port: monitoring initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 name: webhook-server ports: - containerPort: 7472 name: monitoring protocol: TCP - containerPort: 9443 name: webhook-server protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /metrics port: monitoring initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: {} volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: cert readOnly: true nodeSelector: kubernetes.io/os: linux serviceAccountName: controller terminationGracePeriodSeconds: 0 volumes: - name: cert secret: defaultMode: 420 secretName: metallb-webhook-cert permissions: - rules: - apiGroups: - "" resources: - secrets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resourceNames: - memberlist resources: - secrets verbs: - list - apiGroups: - apps resourceNames: - controller resources: - deployments verbs: - get - apiGroups: - metallb.io resources: - bgppeers verbs: - get - list - apiGroups: - metallb.io resources: - bfdprofiles verbs: - get - list - watch - apiGroups: - metallb.io resources: - ipaddresspools verbs: - get - list - watch - apiGroups: - metallb.io resources: - bgpadvertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - l2advertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - communities verbs: - get - list - watch serviceAccountName: controller - rules: - apiGroups: - "" resources: - secrets verbs: - get - list - watch - update - apiGroups: - security.openshift.io resourceNames: - privileged resources: - securitycontextconstraints verbs: - use serviceAccountName: frr-k8s-daemon - rules: - apiGroups: - "" resources: - configmaps verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - "" resources: - services verbs: - create - delete - get - patch - update - apiGroups: - apps resources: - daemonsets - deployments verbs: - create - delete - get - list - patch - update - watch - apiGroups: - coordination.k8s.io resources: - leases verbs: - create - delete - get - list - patch - update - watch serviceAccountName: manager-account - rules: - apiGroups: - "" resources: - pods verbs: - list - get - apiGroups: - "" resources: - secrets verbs: - get - list - watch - apiGroups: - "" resources: - configmaps verbs: - get - list - watch - apiGroups: - metallb.io resources: - bfdprofiles verbs: - get - list - watch - apiGroups: - metallb.io resources: - bgppeers verbs: - get - list - watch - apiGroups: - metallb.io resources: - l2advertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - bgpadvertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - ipaddresspools verbs: - get - list - watch - apiGroups: - metallb.io resources: - communities verbs: - get - list - watch - apiGroups: - security.openshift.io resourceNames: - privileged resources: - securitycontextconstraints verbs: - use serviceAccountName: speaker strategy: deployment installModes: - supported: false type: OwnNamespace - supported: false type: SingleNamespace - supported: false type: MultiNamespace - supported: true type: AllNamespaces keywords: - metallb-operator labels: olm-owner-enterprise-app: metallb-operator olm-status-descriptors: metallb-operator.v4.18.0-202509240837 links: - name: MetalLB Operator url: https://github.com/openshift/metallb-operator maintainers: - email: fpaoline@redhat.com name: Federico Paolinelli - email: obraunsh@redhat.com name: Ori Braunshtein maturity: alpha minKubeVersion: 1.26.0 provider: name: Red Hat relatedImages: - image: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:f21e7d47f7a17f6b3520c17b8f32cbff2ae3129811d3242e08c9c48a9fbf3fbe name: metallb-rhel9-operator - image: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 name: metallb-rhel9 - image: registry.redhat.io/openshift4/frr-rhel9@sha256:41205f57dd50b222640776ca5fcda336ca1541f53dae820d7bc6669f52c28a87 name: frr-rhel9 - image: registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:784c4667a867abdbec6d31a4bbde52676a0f37f8e448eaae37568a46fcdeace7 name: ose-kube-rbac-proxy-rhel9 version: 4.18.0-202509240837 webhookdefinitions: - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: bfdprofilevalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - DELETE resources: - bfdprofiles sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-bfdprofile - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: bgpadvertisementvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - bgpadvertisements sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-bgpadvertisement - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: bgppeersvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta2 operations: - CREATE - UPDATE resources: - bgppeers sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta2-bgppeer - admissionReviewVersions: - v1beta1 - v1beta2 containerPort: 443 conversionCRDs: - bgppeers.metallb.io deploymentName: metallb-operator-webhook-server generateName: cbgppeers.kb.io sideEffects: None targetPort: 9443 type: ConversionWebhook webhookPath: /convert - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: communityvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - communities sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-community - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: ipaddresspoolvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - ipaddresspools sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-ipaddresspool - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: l2advertisementvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - l2advertisements sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-l2advertisement - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-controller-manager failurePolicy: Fail generateName: metallbvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - metallbs sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-metallb status: certsLastUpdated: "2025-10-11T10:48:04Z" certsRotateAt: "2027-10-10T10:48:03Z" cleanup: {} conditions: - lastTransitionTime: "2025-10-11T10:47:49Z" lastUpdateTime: "2025-10-11T10:47:49Z" message: requirements not yet checked phase: Pending reason: RequirementsUnknown - lastTransitionTime: "2025-10-11T10:47:49Z" lastUpdateTime: "2025-10-11T10:47:50Z" message: one or more requirements couldn't be found phase: Pending reason: RequirementsNotMet - lastTransitionTime: "2025-10-11T10:48:02Z" lastUpdateTime: "2025-10-11T10:48:02Z" message: all requirements found, attempting install phase: InstallReady reason: AllRequirementsMet - lastTransitionTime: "2025-10-11T10:48:03Z" lastUpdateTime: "2025-10-11T10:48:03Z" message: waiting for install components to report healthy phase: Installing reason: InstallSucceeded - lastTransitionTime: "2025-10-11T10:48:03Z" lastUpdateTime: "2025-10-11T10:48:05Z" message: 'installing: waiting for deployment metallb-operator-controller-manager to become ready: deployment "metallb-operator-controller-manager" not available: Deployment does not have minimum availability.' phase: Installing reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:12Z" lastUpdateTime: "2025-10-11T10:48:12Z" message: 'Webhook install failed: conversionWebhook not ready' phase: InstallReady reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:14Z" message: waiting for install components to report healthy phase: Installing reason: InstallSucceeded - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:15Z" message: 'installing: waiting for deployment metallb-operator-controller-manager to become ready: deployment "metallb-operator-controller-manager" not available: Deployment does not have minimum availability.' phase: Installing reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:44Z" lastUpdateTime: "2025-10-11T10:48:44Z" message: install strategy completed with no errors phase: Succeeded reason: InstallSucceeded lastTransitionTime: "2025-10-11T10:48:44Z" lastUpdateTime: "2025-10-11T10:48:44Z" message: The operator is running in metallb-system but is managing this namespace phase: Succeeded reason: Copied requirementStatus: - group: operators.coreos.com kind: ClusterServiceVersion message: CSV minKubeVersion (1.26.0) less than server version (v1.31.13) name: metallb-operator.v4.18.0-202509240837 status: Present version: v1alpha1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: bfdprofiles.metallb.io status: Present uuid: db566ca1-d194-49e9-a7ec-b9d629b5ee0d version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: bgpadvertisements.metallb.io status: Present uuid: 38ba7ab4-a536-4e3d-8a27-eb0b262f4628 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: bgppeers.metallb.io status: Present uuid: 3bfec0ba-4dd0-4a5e-9a53-c2e9078049f6 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: communities.metallb.io status: Present uuid: 9b9a3486-a195-4a90-9220-3c8be9f8a1e1 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: frrconfigurations.frrk8s.metallb.io status: Present uuid: 3f862190-ebf6-4bd3-baf9-92da3ddb9135 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: frrnodestates.frrk8s.metallb.io status: Present uuid: ab643dd3-4ce6-4a5b-8d6a-6029f628e635 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: ipaddresspools.metallb.io status: Present uuid: 62846b7a-651d-4553-a2bb-378c0c8d38e8 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: l2advertisements.metallb.io status: Present uuid: 014c36b8-10be-476a-b3d0-1be15df1a153 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: metallbs.metallb.io status: Present uuid: 7afc080f-f706-4a76-a93f-75d768f99a46 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: servicel2statuses.metallb.io status: Present uuid: df66f2b3-13f0-488f-9ebc-ba10621b3773 version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch","create","update","delete"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":["metallb.io"],"resources":["servicel2statuses","servicel2statuses/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["services","endpoints","nodes","namespaces"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["discovery.k8s.io"],"resources":["endpointslices"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","patch"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["policy"],"resources":["podsecuritypolicies"],"resourceNames":["speaker"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: speaker status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["services","namespaces"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list"],"apiGroups":[""],"resources":["nodes"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":[""],"resources":["services/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","patch"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["policy"],"resources":["podsecuritypolicies"],"resourceNames":["controller"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"],"resourceNames":["metallb-webhook-configuration"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["apiextensions.k8s.io"],"resources":["customresourcedefinitions"],"resourceNames":["bfdprofiles.metallb.io","bgpadvertisements.metallb.io","bgppeers.metallb.io","ipaddresspools.metallb.io","l2advertisements.metallb.io","communities.metallb.io"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","watch"],"apiGroups":["apiextensions.k8s.io"],"resources":["customresourcedefinitions"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: controller status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["nodes"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"],"resourceNames":["frr-k8s-validating-webhook-configuration"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrnodestates"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrnodestates/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: frr-k8s-daemon status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":[""],"resources":["secrets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["apiextensions.k8s.io"],"resources":["customresourcedefinitions"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["config.openshift.io"],"resources":["clusteroperators"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["metallb.io"],"resources":["metallbs"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["delete","get","patch","update"],"apiGroups":["metallb.io"],"resources":["metallbs/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["metallb.io"],"resources":["metallbs/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["monitoring.coreos.com"],"resources":["podmonitors"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["monitoring.coreos.com"],"resources":["servicemonitors"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","update","watch"],"apiGroups":["operator.openshift.io"],"resources":["networks"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["policy"],"resources":["podsecuritypolicies"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: manager-account status: Present version: v1 apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion metadata: annotations: alm-examples: |- [ { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "basic", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64512, "neighbors": [ { "address": "172.30.0.3", "asn": 64512, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } }, "toReceive": { "allowed": { "mode": "all" } } } ] } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "two-neighs", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64512, "neighbors": [ { "address": "172.30.0.3", "asn": 4200000000, "ebgpMultiHop": true, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } } }, { "address": "172.18.0.6", "asn": 4200000000, "port": 179, "toAdvertise": { "allowed": { "prefixes": [ "192.168.2.0/24" ] } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ] } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "two-routers-vrf", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64513, "neighbors": [ { "address": "172.32.0.3", "asn": 4200000000, "ebgpMultiHop": true, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ] }, { "asn": 64515, "neighbors": [ { "address": "172.31.0.3", "asn": 4200000000, "port": 179, "toAdvertise": { "allowed": { "mode": "all" } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ], "vrf": "red" } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRNodeState", "metadata": { "name": "frr-k8s-worker" }, "status": { "lastConversionResult": "success", "lastReloadResult": "success", "runningConfig": "Building configuration...\n\nCurrent configuration:\n!\nfrr version 9.0.2_git\nfrr defaults traditional\nhostname frr-k8s-worker\nlog file /etc/frr/frr.log informational\nlog timestamp precision 3\nno ipv6 forwarding\nservice integrated-vtysh-config\n!\nip nht resolve-via-default\n!\nipv6 nht resolve-via-default\n!\nend\n" } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BFDProfile", "metadata": { "name": "bfd-profile-sample", "namespace": "metallb-system" }, "spec": { "receiveInterval": 380, "transmitInterval": 270 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample1", "namespace": "metallb-system" }, "spec": { "ipAddressPools": [ "ip-addresspool-sample1" ], "peers": [ "ebgp-single-hop0" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample2", "namespace": "metallb-system" }, "spec": { "ipAddressPoolSelectors": [ { "matchLabels": { "test": "ipv6" } }, { "matchLabels": { "test": "ipv4" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample3", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "communities": [ "65535:65282" ], "ipAddressPools": [ "ip-addresspool-sample1" ], "localPref": 50 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample4", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "communities": [ "NO_ADVERTISE" ], "ipAddressPools": [ "ip-addresspool-sample1" ], "localPref": 50 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample5", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "ipAddressPools": [ "ip-addresspool-sample1" ], "nodeSelectors": [ { "matchLabels": { "kubernetes.io/hostname": "kind-control-plane" } }, { "matchLabels": { "kubernetes.io/hostname": "kind-worker" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-beta1", "namespace": "metallb-system" }, "spec": { "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta1", "kind": "Community", "metadata": { "name": "community1", "namespace": "metallb-system" }, "spec": { "communities": [ { "name": "NO_ADVERTISE", "value": "65535:65282" } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "name": "ip-addresspool-sample1", "namespace": "metallb-system" }, "spec": { "addresses": [ "192.168.10.0/24", "192.168.9.1-192.168.9.5", "fc00:f853:0ccd:e799::/124" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "labels": { "test": "ipv4" }, "name": "ip-addresspool-sample2", "namespace": "metallb-system" }, "spec": { "addresses": [ "172.20.0.100/24" ], "autoAssign": false } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "labels": { "test": "ipv6" }, "name": "ip-addresspool-sample3", "namespace": "metallb-system" }, "spec": { "addresses": [ "2002:2:2::1-2002:2:2::100" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "L2Advertisement", "metadata": { "name": "l2-adv-sample1", "namespace": "metallb-system" }, "spec": { "ipAddressPools": [ "ip-addresspool-sample1" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "L2Advertisement", "metadata": { "name": "l2-adv-sample2", "namespace": "metallb-system" }, "spec": { "nodeSelectors": [ { "matchLabels": { "kubernetes.io/hostname": "kind-control-plane" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "MetalLB", "metadata": { "name": "metallb", "namespace": "metallb-system" }, "spec": {} }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample1", "namespace": "metallb-system" }, "spec": { "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample2", "namespace": "metallb-system" }, "spec": { "bfdProfile": "bfd-profile-sample", "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample3", "namespace": "metallb-system" }, "spec": { "holdTime": "9m0s", "keepaliveTime": "0s", "myASN": 64512, "passwordSecret": { "name": "secretname", "namespace": "metallb-system" }, "peerASN": 64512, "peerAddress": "172.30.0.3", "peerPort": 180 } } ] capabilities: Basic Install categories: Networking certified: "false" containerImage: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:f21e7d47f7a17f6b3520c17b8f32cbff2ae3129811d3242e08c9c48a9fbf3fbe createdAt: "2023-06-06T15:25:00Z" description: An operator for deploying MetalLB on a kubernetes cluster. features.operators.openshift.io/disconnected: "true" features.operators.openshift.io/fips-compliant: "true" features.operators.openshift.io/proxy-aware: "false" features.operators.openshift.io/tls-profiles: "false" features.operators.openshift.io/token-auth-aws: "false" features.operators.openshift.io/token-auth-azure: "false" features.operators.openshift.io/token-auth-gcp: "false" olm.operatorGroup: metallb-operator olm.operatorNamespace: metallb-system olm.skipRange: '>=4.8.0 <4.18.0' operatorframework.io/properties: '{"properties":[{"type":"olm.gvk","value":{"group":"frrk8s.metallb.io","kind":"FRRConfiguration","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"frrk8s.metallb.io","kind":"FRRNodeState","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BFDProfile","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPAdvertisement","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPPeer","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPPeer","version":"v1beta2"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"Community","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"IPAddressPool","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"L2Advertisement","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"MetalLB","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"ServiceL2Status","version":"v1beta1"}},{"type":"olm.package","value":{"packageName":"metallb-operator","version":"4.18.0-202509240837"}}]}' operatorframework.io/suggested-namespace: metallb-system operators.openshift.io/valid-subscription: '["OpenShift Kubernetes Engine", "OpenShift Container Platform", "OpenShift Platform Plus"]' operators.operatorframework.io/builder: operator-sdk-v1.34.1 operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 repository: https://github.com/openshift/metallb-operator support: Red Hat creationTimestamp: "2025-10-11T10:47:55Z" generation: 1 labels: olm.copiedFrom: metallb-system olm.managed: "true" operatorframework.io/arch.amd64: supported operatorframework.io/arch.ppc64le: supported operatorframework.io/arch.s390x: supported name: metallb-operator.v4.18.0-202509240837 namespace: openshift-machine-api resourceVersion: "28989" uid: 39f3777c-5884-4cfd-a7e7-849924afed83 spec: apiservicedefinitions: {} cleanup: enabled: false customresourcedefinitions: owned: - description: BFDProfile is the Schema for the bfdprofiles API kind: BFDProfile name: bfdprofiles.metallb.io version: v1beta1 - description: BGPAdvertisement is the Schema for the bgpadvertisements API kind: BGPAdvertisement name: bgpadvertisements.metallb.io version: v1beta1 - description: BGPPeer is the Schema for the bgppeers API kind: BGPPeer name: bgppeers.metallb.io version: v1beta1 - description: BGPPeer is the Schema for the bgppeers API kind: BGPPeer name: bgppeers.metallb.io version: v1beta2 - description: Community is the Schema for the communities API kind: Community name: communities.metallb.io version: v1beta1 - description: FRRConfiguration is the Schema for the frrconfigurations API kind: FRRConfiguration name: frrconfigurations.frrk8s.metallb.io version: v1beta1 - description: FRRNodeState is the Schema for the frrnodestates API kind: FRRNodeState name: frrnodestates.frrk8s.metallb.io version: v1beta1 - description: IPAddressPool is the Schema for the ipaddresspools API kind: IPAddressPool name: ipaddresspools.metallb.io version: v1beta1 - description: L2Advertisement is the Schema for the l2advertisements API kind: L2Advertisement name: l2advertisements.metallb.io version: v1beta1 - description: MetalLB is the Schema for the metallbs API displayName: MetalLB kind: MetalLB name: metallbs.metallb.io version: v1beta1 - description: L2ServiceStatus is the Schema for the l2servicestatus API kind: ServiceL2Status name: servicel2statuses.metallb.io version: v1beta1 description: An operator for deploying MetalLB on a kubernetes cluster. displayName: MetalLB Operator icon: - base64data: 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 mediatype: image/png install: spec: clusterPermissions: - rules: - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create - apiGroups: - "" resources: - services - namespaces verbs: - get - list - watch - apiGroups: - "" resources: - nodes verbs: - list - apiGroups: - "" resources: - services/status verbs: - update - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - policy resourceNames: - controller resources: - podsecuritypolicies verbs: - use - apiGroups: - admissionregistration.k8s.io resourceNames: - metallb-webhook-configuration resources: - validatingwebhookconfigurations verbs: - create - delete - get - list - patch - update - watch - apiGroups: - admissionregistration.k8s.io resources: - validatingwebhookconfigurations verbs: - list - watch - apiGroups: - apiextensions.k8s.io resourceNames: - bfdprofiles.metallb.io - bgpadvertisements.metallb.io - bgppeers.metallb.io - ipaddresspools.metallb.io - l2advertisements.metallb.io - communities.metallb.io resources: - customresourcedefinitions verbs: - create - delete - get - list - patch - update - watch - apiGroups: - apiextensions.k8s.io resources: - customresourcedefinitions verbs: - list - watch serviceAccountName: controller - rules: - apiGroups: - "" resources: - nodes verbs: - get - list - watch - apiGroups: - admissionregistration.k8s.io resources: - validatingwebhookconfigurations verbs: - get - list - watch - apiGroups: - admissionregistration.k8s.io resourceNames: - frr-k8s-validating-webhook-configuration resources: - validatingwebhookconfigurations verbs: - update - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations verbs: - create - delete - get - list - patch - update - watch - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations/finalizers verbs: - update - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations/status verbs: - get - patch - update - apiGroups: - frrk8s.metallb.io resources: - frrnodestates verbs: - create - delete - get - list - patch - update - watch - apiGroups: - frrk8s.metallb.io resources: - frrnodestates/status verbs: - get - patch - update - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create serviceAccountName: frr-k8s-daemon - rules: - apiGroups: - "" resources: - secrets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - admissionregistration.k8s.io resources: - validatingwebhookconfigurations verbs: - create - delete - get - list - patch - update - watch - apiGroups: - apiextensions.k8s.io resources: - customresourcedefinitions verbs: - get - list - watch - apiGroups: - config.openshift.io resources: - clusteroperators verbs: - get - list - watch - apiGroups: - metallb.io resources: - metallbs verbs: - create - delete - get - list - patch - update - watch - apiGroups: - metallb.io resources: - metallbs/finalizers verbs: - delete - get - patch - update - apiGroups: - metallb.io resources: - metallbs/status verbs: - get - patch - update - apiGroups: - monitoring.coreos.com resources: - podmonitors verbs: - create - delete - get - list - patch - update - watch - apiGroups: - monitoring.coreos.com resources: - servicemonitors verbs: - create - delete - get - list - patch - update - watch - apiGroups: - operator.openshift.io resources: - networks verbs: - get - list - update - watch - apiGroups: - policy resources: - podsecuritypolicies verbs: - create - delete - get - list - patch - update - watch serviceAccountName: manager-account - rules: - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations verbs: - get - list - watch - create - update - delete - apiGroups: - metallb.io resources: - servicel2statuses - servicel2statuses/status verbs: - '*' - apiGroups: - "" resources: - services - endpoints - nodes - namespaces verbs: - get - list - watch - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - get - list - watch - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - policy resourceNames: - speaker resources: - podsecuritypolicies verbs: - use serviceAccountName: speaker deployments: - label: control-plane: controller-manager name: metallb-operator-controller-manager spec: replicas: 1 selector: matchLabels: control-plane: controller-manager strategy: {} template: metadata: annotations: openshift.io/required-scc: restricted-v2 creationTimestamp: null labels: control-plane: controller-manager spec: containers: - args: - --enable-leader-election - --disable-cert-rotation=true command: - /manager env: - name: SPEAKER_IMAGE value: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 - name: CONTROLLER_IMAGE value: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 - name: FRR_IMAGE value: registry.redhat.io/openshift4/frr-rhel9@sha256:41205f57dd50b222640776ca5fcda336ca1541f53dae820d7bc6669f52c28a87 - name: KUBE_RBAC_PROXY_IMAGE value: registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:784c4667a867abdbec6d31a4bbde52676a0f37f8e448eaae37568a46fcdeace7 - name: DEPLOY_KUBE_RBAC_PROXIES value: "true" - name: FRRK8S_IMAGE value: registry.redhat.io/openshift4/frr-rhel9@sha256:41205f57dd50b222640776ca5fcda336ca1541f53dae820d7bc6669f52c28a87 - name: OPERATOR_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: DEPLOY_PODMONITORS value: "false" - name: DEPLOY_SERVICEMONITORS value: "true" - name: ENABLE_WEBHOOK value: "true" - name: ENABLE_OPERATOR_WEBHOOK value: "true" - name: METRICS_PORT value: "29150" - name: HTTPS_METRICS_PORT value: "9120" - name: FRR_METRICS_PORT value: "29151" - name: FRR_HTTPS_METRICS_PORT value: "9121" - name: MEMBER_LIST_BIND_PORT value: "9122" image: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:f21e7d47f7a17f6b3520c17b8f32cbff2ae3129811d3242e08c9c48a9fbf3fbe name: manager ports: - containerPort: 9443 name: webhook-server protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /readyz port: 8080 initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: requests: cpu: 50m memory: 20Mi volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: cert readOnly: true serviceAccountName: manager-account terminationGracePeriodSeconds: 10 volumes: - name: cert secret: defaultMode: 420 secretName: metallb-operator-webhook-server-cert - label: app: metallb component: webhook-server name: metallb-operator-webhook-server spec: revisionHistoryLimit: 3 selector: matchLabels: app: metallb component: webhook-server strategy: {} template: metadata: annotations: openshift.io/required-scc: restricted-v2 prometheus.io/port: "7472" prometheus.io/scrape: "true" creationTimestamp: null labels: app: metallb component: webhook-server spec: containers: - args: - --disable-cert-rotation=true - --port=7472 - --log-level=info - --webhook-mode=onlywebhook command: - /controller env: - name: METALLB_BGP_TYPE value: frr image: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 livenessProbe: failureThreshold: 3 httpGet: path: /metrics port: monitoring initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 name: webhook-server ports: - containerPort: 7472 name: monitoring protocol: TCP - containerPort: 9443 name: webhook-server protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /metrics port: monitoring initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: {} volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: cert readOnly: true nodeSelector: kubernetes.io/os: linux serviceAccountName: controller terminationGracePeriodSeconds: 0 volumes: - name: cert secret: defaultMode: 420 secretName: metallb-webhook-cert permissions: - rules: - apiGroups: - "" resources: - secrets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resourceNames: - memberlist resources: - secrets verbs: - list - apiGroups: - apps resourceNames: - controller resources: - deployments verbs: - get - apiGroups: - metallb.io resources: - bgppeers verbs: - get - list - apiGroups: - metallb.io resources: - bfdprofiles verbs: - get - list - watch - apiGroups: - metallb.io resources: - ipaddresspools verbs: - get - list - watch - apiGroups: - metallb.io resources: - bgpadvertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - l2advertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - communities verbs: - get - list - watch serviceAccountName: controller - rules: - apiGroups: - "" resources: - secrets verbs: - get - list - watch - update - apiGroups: - security.openshift.io resourceNames: - privileged resources: - securitycontextconstraints verbs: - use serviceAccountName: frr-k8s-daemon - rules: - apiGroups: - "" resources: - configmaps verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - "" resources: - services verbs: - create - delete - get - patch - update - apiGroups: - apps resources: - daemonsets - deployments verbs: - create - delete - get - list - patch - update - watch - apiGroups: - coordination.k8s.io resources: - leases verbs: - create - delete - get - list - patch - update - watch serviceAccountName: manager-account - rules: - apiGroups: - "" resources: - pods verbs: - list - get - apiGroups: - "" resources: - secrets verbs: - get - list - watch - apiGroups: - "" resources: - configmaps verbs: - get - list - watch - apiGroups: - metallb.io resources: - bfdprofiles verbs: - get - list - watch - apiGroups: - metallb.io resources: - bgppeers verbs: - get - list - watch - apiGroups: - metallb.io resources: - l2advertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - bgpadvertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - ipaddresspools verbs: - get - list - watch - apiGroups: - metallb.io resources: - communities verbs: - get - list - watch - apiGroups: - security.openshift.io resourceNames: - privileged resources: - securitycontextconstraints verbs: - use serviceAccountName: speaker strategy: deployment installModes: - supported: false type: OwnNamespace - supported: false type: SingleNamespace - supported: false type: MultiNamespace - supported: true type: AllNamespaces keywords: - metallb-operator labels: olm-owner-enterprise-app: metallb-operator olm-status-descriptors: metallb-operator.v4.18.0-202509240837 links: - name: MetalLB Operator url: https://github.com/openshift/metallb-operator maintainers: - email: fpaoline@redhat.com name: Federico Paolinelli - email: obraunsh@redhat.com name: Ori Braunshtein maturity: alpha minKubeVersion: 1.26.0 provider: name: Red Hat relatedImages: - image: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:f21e7d47f7a17f6b3520c17b8f32cbff2ae3129811d3242e08c9c48a9fbf3fbe name: metallb-rhel9-operator - image: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 name: metallb-rhel9 - image: registry.redhat.io/openshift4/frr-rhel9@sha256:41205f57dd50b222640776ca5fcda336ca1541f53dae820d7bc6669f52c28a87 name: frr-rhel9 - image: registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:784c4667a867abdbec6d31a4bbde52676a0f37f8e448eaae37568a46fcdeace7 name: ose-kube-rbac-proxy-rhel9 version: 4.18.0-202509240837 webhookdefinitions: - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: bfdprofilevalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - DELETE resources: - bfdprofiles sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-bfdprofile - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: bgpadvertisementvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - bgpadvertisements sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-bgpadvertisement - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: bgppeersvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta2 operations: - CREATE - UPDATE resources: - bgppeers sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta2-bgppeer - admissionReviewVersions: - v1beta1 - v1beta2 containerPort: 443 conversionCRDs: - bgppeers.metallb.io deploymentName: metallb-operator-webhook-server generateName: cbgppeers.kb.io sideEffects: None targetPort: 9443 type: ConversionWebhook webhookPath: /convert - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: communityvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - communities sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-community - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: ipaddresspoolvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - ipaddresspools sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-ipaddresspool - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: l2advertisementvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - l2advertisements sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-l2advertisement - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-controller-manager failurePolicy: Fail generateName: metallbvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - metallbs sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-metallb status: certsLastUpdated: "2025-10-11T10:48:04Z" certsRotateAt: "2027-10-10T10:48:03Z" cleanup: {} conditions: - lastTransitionTime: "2025-10-11T10:47:49Z" lastUpdateTime: "2025-10-11T10:47:49Z" message: requirements not yet checked phase: Pending reason: RequirementsUnknown - lastTransitionTime: "2025-10-11T10:47:49Z" lastUpdateTime: "2025-10-11T10:47:50Z" message: one or more requirements couldn't be found phase: Pending reason: RequirementsNotMet - lastTransitionTime: "2025-10-11T10:48:02Z" lastUpdateTime: "2025-10-11T10:48:02Z" message: all requirements found, attempting install phase: InstallReady reason: AllRequirementsMet - lastTransitionTime: "2025-10-11T10:48:03Z" lastUpdateTime: "2025-10-11T10:48:03Z" message: waiting for install components to report healthy phase: Installing reason: InstallSucceeded - lastTransitionTime: "2025-10-11T10:48:03Z" lastUpdateTime: "2025-10-11T10:48:05Z" message: 'installing: waiting for deployment metallb-operator-controller-manager to become ready: deployment "metallb-operator-controller-manager" not available: Deployment does not have minimum availability.' phase: Installing reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:12Z" lastUpdateTime: "2025-10-11T10:48:12Z" message: 'Webhook install failed: conversionWebhook not ready' phase: InstallReady reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:14Z" message: waiting for install components to report healthy phase: Installing reason: InstallSucceeded - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:15Z" message: 'installing: waiting for deployment metallb-operator-controller-manager to become ready: deployment "metallb-operator-controller-manager" not available: Deployment does not have minimum availability.' phase: Installing reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:44Z" lastUpdateTime: "2025-10-11T10:48:44Z" message: install strategy completed with no errors phase: Succeeded reason: InstallSucceeded lastTransitionTime: "2025-10-11T10:48:44Z" lastUpdateTime: "2025-10-11T10:48:44Z" message: The operator is running in metallb-system but is managing this namespace phase: Succeeded reason: Copied requirementStatus: - group: operators.coreos.com kind: ClusterServiceVersion message: CSV minKubeVersion (1.26.0) less than server version (v1.31.13) name: metallb-operator.v4.18.0-202509240837 status: Present version: v1alpha1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: bfdprofiles.metallb.io status: Present uuid: db566ca1-d194-49e9-a7ec-b9d629b5ee0d version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: bgpadvertisements.metallb.io status: Present uuid: 38ba7ab4-a536-4e3d-8a27-eb0b262f4628 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: bgppeers.metallb.io status: Present uuid: 3bfec0ba-4dd0-4a5e-9a53-c2e9078049f6 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: communities.metallb.io status: Present uuid: 9b9a3486-a195-4a90-9220-3c8be9f8a1e1 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: frrconfigurations.frrk8s.metallb.io status: Present uuid: 3f862190-ebf6-4bd3-baf9-92da3ddb9135 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: frrnodestates.frrk8s.metallb.io status: Present uuid: ab643dd3-4ce6-4a5b-8d6a-6029f628e635 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: ipaddresspools.metallb.io status: Present uuid: 62846b7a-651d-4553-a2bb-378c0c8d38e8 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: l2advertisements.metallb.io status: Present uuid: 014c36b8-10be-476a-b3d0-1be15df1a153 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: metallbs.metallb.io status: Present uuid: 7afc080f-f706-4a76-a93f-75d768f99a46 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: servicel2statuses.metallb.io status: Present uuid: df66f2b3-13f0-488f-9ebc-ba10621b3773 version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch","create","update","delete"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":["metallb.io"],"resources":["servicel2statuses","servicel2statuses/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["services","endpoints","nodes","namespaces"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["discovery.k8s.io"],"resources":["endpointslices"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","patch"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["policy"],"resources":["podsecuritypolicies"],"resourceNames":["speaker"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: speaker status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["services","namespaces"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list"],"apiGroups":[""],"resources":["nodes"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":[""],"resources":["services/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","patch"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["policy"],"resources":["podsecuritypolicies"],"resourceNames":["controller"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"],"resourceNames":["metallb-webhook-configuration"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["apiextensions.k8s.io"],"resources":["customresourcedefinitions"],"resourceNames":["bfdprofiles.metallb.io","bgpadvertisements.metallb.io","bgppeers.metallb.io","ipaddresspools.metallb.io","l2advertisements.metallb.io","communities.metallb.io"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","watch"],"apiGroups":["apiextensions.k8s.io"],"resources":["customresourcedefinitions"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: controller status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["nodes"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"],"resourceNames":["frr-k8s-validating-webhook-configuration"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrnodestates"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrnodestates/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: frr-k8s-daemon status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":[""],"resources":["secrets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["apiextensions.k8s.io"],"resources":["customresourcedefinitions"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["config.openshift.io"],"resources":["clusteroperators"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["metallb.io"],"resources":["metallbs"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["delete","get","patch","update"],"apiGroups":["metallb.io"],"resources":["metallbs/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["metallb.io"],"resources":["metallbs/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["monitoring.coreos.com"],"resources":["podmonitors"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["monitoring.coreos.com"],"resources":["servicemonitors"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","update","watch"],"apiGroups":["operator.openshift.io"],"resources":["networks"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["policy"],"resources":["podsecuritypolicies"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: manager-account status: Present version: v1 apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion metadata: annotations: alm-examples: |- [ { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "basic", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64512, "neighbors": [ { "address": "172.30.0.3", "asn": 64512, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } }, "toReceive": { "allowed": { "mode": "all" } } } ] } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "two-neighs", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64512, "neighbors": [ { "address": "172.30.0.3", "asn": 4200000000, "ebgpMultiHop": true, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } } }, { "address": "172.18.0.6", "asn": 4200000000, "port": 179, "toAdvertise": { "allowed": { "prefixes": [ "192.168.2.0/24" ] } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ] } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "two-routers-vrf", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64513, "neighbors": [ { "address": "172.32.0.3", "asn": 4200000000, "ebgpMultiHop": true, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ] }, { "asn": 64515, "neighbors": [ { "address": "172.31.0.3", "asn": 4200000000, "port": 179, "toAdvertise": { "allowed": { "mode": "all" } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ], "vrf": "red" } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRNodeState", "metadata": { "name": "frr-k8s-worker" }, "status": { "lastConversionResult": "success", "lastReloadResult": "success", "runningConfig": "Building configuration...\n\nCurrent configuration:\n!\nfrr version 9.0.2_git\nfrr defaults traditional\nhostname frr-k8s-worker\nlog file /etc/frr/frr.log informational\nlog timestamp precision 3\nno ipv6 forwarding\nservice integrated-vtysh-config\n!\nip nht resolve-via-default\n!\nipv6 nht resolve-via-default\n!\nend\n" } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BFDProfile", "metadata": { "name": "bfd-profile-sample", "namespace": "metallb-system" }, "spec": { "receiveInterval": 380, "transmitInterval": 270 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample1", "namespace": "metallb-system" }, "spec": { "ipAddressPools": [ "ip-addresspool-sample1" ], "peers": [ "ebgp-single-hop0" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample2", "namespace": "metallb-system" }, "spec": { "ipAddressPoolSelectors": [ { "matchLabels": { "test": "ipv6" } }, { "matchLabels": { "test": "ipv4" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample3", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "communities": [ "65535:65282" ], "ipAddressPools": [ "ip-addresspool-sample1" ], "localPref": 50 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample4", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "communities": [ "NO_ADVERTISE" ], "ipAddressPools": [ "ip-addresspool-sample1" ], "localPref": 50 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample5", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "ipAddressPools": [ "ip-addresspool-sample1" ], "nodeSelectors": [ { "matchLabels": { "kubernetes.io/hostname": "kind-control-plane" } }, { "matchLabels": { "kubernetes.io/hostname": "kind-worker" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-beta1", "namespace": "metallb-system" }, "spec": { "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta1", "kind": "Community", "metadata": { "name": "community1", "namespace": "metallb-system" }, "spec": { "communities": [ { "name": "NO_ADVERTISE", "value": "65535:65282" } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "name": "ip-addresspool-sample1", "namespace": "metallb-system" }, "spec": { "addresses": [ "192.168.10.0/24", "192.168.9.1-192.168.9.5", "fc00:f853:0ccd:e799::/124" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "labels": { "test": "ipv4" }, "name": "ip-addresspool-sample2", "namespace": "metallb-system" }, "spec": { "addresses": [ "172.20.0.100/24" ], "autoAssign": false } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "labels": { "test": "ipv6" }, "name": "ip-addresspool-sample3", "namespace": "metallb-system" }, "spec": { "addresses": [ "2002:2:2::1-2002:2:2::100" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "L2Advertisement", "metadata": { "name": "l2-adv-sample1", "namespace": "metallb-system" }, "spec": { "ipAddressPools": [ "ip-addresspool-sample1" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "L2Advertisement", "metadata": { "name": "l2-adv-sample2", "namespace": "metallb-system" }, "spec": { "nodeSelectors": [ { "matchLabels": { "kubernetes.io/hostname": "kind-control-plane" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "MetalLB", "metadata": { "name": "metallb", "namespace": "metallb-system" }, "spec": {} }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample1", "namespace": "metallb-system" }, "spec": { "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample2", "namespace": "metallb-system" }, "spec": { "bfdProfile": "bfd-profile-sample", "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample3", "namespace": "metallb-system" }, "spec": { "holdTime": "9m0s", "keepaliveTime": "0s", "myASN": 64512, "passwordSecret": { "name": "secretname", "namespace": "metallb-system" }, "peerASN": 64512, "peerAddress": "172.30.0.3", "peerPort": 180 } } ] capabilities: Basic Install categories: Networking certified: "false" containerImage: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:f21e7d47f7a17f6b3520c17b8f32cbff2ae3129811d3242e08c9c48a9fbf3fbe createdAt: "2023-06-06T15:25:00Z" description: An operator for deploying MetalLB on a kubernetes cluster. features.operators.openshift.io/disconnected: "true" features.operators.openshift.io/fips-compliant: "true" features.operators.openshift.io/proxy-aware: "false" features.operators.openshift.io/tls-profiles: "false" features.operators.openshift.io/token-auth-aws: "false" features.operators.openshift.io/token-auth-azure: "false" features.operators.openshift.io/token-auth-gcp: "false" olm.operatorGroup: metallb-operator olm.operatorNamespace: metallb-system olm.skipRange: '>=4.8.0 <4.18.0' operatorframework.io/properties: '{"properties":[{"type":"olm.gvk","value":{"group":"frrk8s.metallb.io","kind":"FRRConfiguration","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"frrk8s.metallb.io","kind":"FRRNodeState","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BFDProfile","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPAdvertisement","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPPeer","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPPeer","version":"v1beta2"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"Community","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"IPAddressPool","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"L2Advertisement","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"MetalLB","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"ServiceL2Status","version":"v1beta1"}},{"type":"olm.package","value":{"packageName":"metallb-operator","version":"4.18.0-202509240837"}}]}' operatorframework.io/suggested-namespace: metallb-system operators.openshift.io/valid-subscription: '["OpenShift Kubernetes Engine", "OpenShift Container Platform", "OpenShift Platform Plus"]' operators.operatorframework.io/builder: operator-sdk-v1.34.1 operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 repository: https://github.com/openshift/metallb-operator support: Red Hat creationTimestamp: "2025-10-11T10:48:00Z" generation: 1 labels: olm.copiedFrom: metallb-system olm.managed: "true" operatorframework.io/arch.amd64: supported operatorframework.io/arch.ppc64le: supported operatorframework.io/arch.s390x: supported name: metallb-operator.v4.18.0-202509240837 namespace: cert-manager resourceVersion: "29087" uid: bef07ca9-a335-48d6-8a1b-a17ba6671b1e spec: apiservicedefinitions: {} cleanup: enabled: false customresourcedefinitions: owned: - description: BFDProfile is the Schema for the bfdprofiles API kind: BFDProfile name: bfdprofiles.metallb.io version: v1beta1 - description: BGPAdvertisement is the Schema for the bgpadvertisements API kind: BGPAdvertisement name: bgpadvertisements.metallb.io version: v1beta1 - description: BGPPeer is the Schema for the bgppeers API kind: BGPPeer name: bgppeers.metallb.io version: v1beta1 - description: BGPPeer is the Schema for the bgppeers API kind: BGPPeer name: bgppeers.metallb.io version: v1beta2 - description: Community is the Schema for the communities API kind: Community name: communities.metallb.io version: v1beta1 - description: FRRConfiguration is the Schema for the frrconfigurations API kind: FRRConfiguration name: frrconfigurations.frrk8s.metallb.io version: v1beta1 - description: FRRNodeState is the Schema for the frrnodestates API kind: FRRNodeState name: frrnodestates.frrk8s.metallb.io version: v1beta1 - description: IPAddressPool is the Schema for the ipaddresspools API kind: IPAddressPool name: ipaddresspools.metallb.io version: v1beta1 - description: L2Advertisement is the Schema for the l2advertisements API kind: L2Advertisement name: l2advertisements.metallb.io version: v1beta1 - description: MetalLB is the Schema for the metallbs API displayName: MetalLB kind: MetalLB name: metallbs.metallb.io version: v1beta1 - description: L2ServiceStatus is the Schema for the l2servicestatus API kind: ServiceL2Status name: servicel2statuses.metallb.io version: v1beta1 description: An operator for deploying MetalLB on a kubernetes cluster. displayName: MetalLB Operator icon: - base64data: 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 mediatype: image/png install: spec: clusterPermissions: - rules: - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create - apiGroups: - "" resources: - services - namespaces verbs: - get - list - watch - apiGroups: - "" resources: - nodes verbs: - list - apiGroups: - "" resources: - services/status verbs: - update - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - policy resourceNames: - controller resources: - podsecuritypolicies verbs: - use - apiGroups: - admissionregistration.k8s.io resourceNames: - metallb-webhook-configuration resources: - validatingwebhookconfigurations verbs: - create - delete - get - list - patch - update - watch - apiGroups: - admissionregistration.k8s.io resources: - validatingwebhookconfigurations verbs: - list - watch - apiGroups: - apiextensions.k8s.io resourceNames: - bfdprofiles.metallb.io - bgpadvertisements.metallb.io - bgppeers.metallb.io - ipaddresspools.metallb.io - l2advertisements.metallb.io - communities.metallb.io resources: - customresourcedefinitions verbs: - create - delete - get - list - patch - update - watch - apiGroups: - apiextensions.k8s.io resources: - customresourcedefinitions verbs: - list - watch serviceAccountName: controller - rules: - apiGroups: - "" resources: - nodes verbs: - get - list - watch - apiGroups: - admissionregistration.k8s.io resources: - validatingwebhookconfigurations verbs: - get - list - watch - apiGroups: - admissionregistration.k8s.io resourceNames: - frr-k8s-validating-webhook-configuration resources: - validatingwebhookconfigurations verbs: - update - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations verbs: - create - delete - get - list - patch - update - watch - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations/finalizers verbs: - update - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations/status verbs: - get - patch - update - apiGroups: - frrk8s.metallb.io resources: - frrnodestates verbs: - create - delete - get - list - patch - update - watch - apiGroups: - frrk8s.metallb.io resources: - frrnodestates/status verbs: - get - patch - update - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create serviceAccountName: frr-k8s-daemon - rules: - apiGroups: - "" resources: - secrets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - admissionregistration.k8s.io resources: - validatingwebhookconfigurations verbs: - create - delete - get - list - patch - update - watch - apiGroups: - apiextensions.k8s.io resources: - customresourcedefinitions verbs: - get - list - watch - apiGroups: - config.openshift.io resources: - clusteroperators verbs: - get - list - watch - apiGroups: - metallb.io resources: - metallbs verbs: - create - delete - get - list - patch - update - watch - apiGroups: - metallb.io resources: - metallbs/finalizers verbs: - delete - get - patch - update - apiGroups: - metallb.io resources: - metallbs/status verbs: - get - patch - update - apiGroups: - monitoring.coreos.com resources: - podmonitors verbs: - create - delete - get - list - patch - update - watch - apiGroups: - monitoring.coreos.com resources: - servicemonitors verbs: - create - delete - get - list - patch - update - watch - apiGroups: - operator.openshift.io resources: - networks verbs: - get - list - update - watch - apiGroups: - policy resources: - podsecuritypolicies verbs: - create - delete - get - list - patch - update - watch serviceAccountName: manager-account - rules: - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations verbs: - get - list - watch - create - update - delete - apiGroups: - metallb.io resources: - servicel2statuses - servicel2statuses/status verbs: - '*' - apiGroups: - "" resources: - services - endpoints - nodes - namespaces verbs: - get - list - watch - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - get - list - watch - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - policy resourceNames: - speaker resources: - podsecuritypolicies verbs: - use serviceAccountName: speaker deployments: - label: control-plane: controller-manager name: metallb-operator-controller-manager spec: replicas: 1 selector: matchLabels: control-plane: controller-manager strategy: {} template: metadata: annotations: openshift.io/required-scc: restricted-v2 creationTimestamp: null labels: control-plane: controller-manager spec: containers: - args: - --enable-leader-election - --disable-cert-rotation=true command: - /manager env: - name: SPEAKER_IMAGE value: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 - name: CONTROLLER_IMAGE value: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 - name: FRR_IMAGE value: registry.redhat.io/openshift4/frr-rhel9@sha256:41205f57dd50b222640776ca5fcda336ca1541f53dae820d7bc6669f52c28a87 - name: KUBE_RBAC_PROXY_IMAGE value: registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:784c4667a867abdbec6d31a4bbde52676a0f37f8e448eaae37568a46fcdeace7 - name: DEPLOY_KUBE_RBAC_PROXIES value: "true" - name: FRRK8S_IMAGE value: registry.redhat.io/openshift4/frr-rhel9@sha256:41205f57dd50b222640776ca5fcda336ca1541f53dae820d7bc6669f52c28a87 - name: OPERATOR_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: DEPLOY_PODMONITORS value: "false" - name: DEPLOY_SERVICEMONITORS value: "true" - name: ENABLE_WEBHOOK value: "true" - name: ENABLE_OPERATOR_WEBHOOK value: "true" - name: METRICS_PORT value: "29150" - name: HTTPS_METRICS_PORT value: "9120" - name: FRR_METRICS_PORT value: "29151" - name: FRR_HTTPS_METRICS_PORT value: "9121" - name: MEMBER_LIST_BIND_PORT value: "9122" image: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:f21e7d47f7a17f6b3520c17b8f32cbff2ae3129811d3242e08c9c48a9fbf3fbe name: manager ports: - containerPort: 9443 name: webhook-server protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /readyz port: 8080 initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: requests: cpu: 50m memory: 20Mi volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: cert readOnly: true serviceAccountName: manager-account terminationGracePeriodSeconds: 10 volumes: - name: cert secret: defaultMode: 420 secretName: metallb-operator-webhook-server-cert - label: app: metallb component: webhook-server name: metallb-operator-webhook-server spec: revisionHistoryLimit: 3 selector: matchLabels: app: metallb component: webhook-server strategy: {} template: metadata: annotations: openshift.io/required-scc: restricted-v2 prometheus.io/port: "7472" prometheus.io/scrape: "true" creationTimestamp: null labels: app: metallb component: webhook-server spec: containers: - args: - --disable-cert-rotation=true - --port=7472 - --log-level=info - --webhook-mode=onlywebhook command: - /controller env: - name: METALLB_BGP_TYPE value: frr image: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 livenessProbe: failureThreshold: 3 httpGet: path: /metrics port: monitoring initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 name: webhook-server ports: - containerPort: 7472 name: monitoring protocol: TCP - containerPort: 9443 name: webhook-server protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /metrics port: monitoring initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: {} volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: cert readOnly: true nodeSelector: kubernetes.io/os: linux serviceAccountName: controller terminationGracePeriodSeconds: 0 volumes: - name: cert secret: defaultMode: 420 secretName: metallb-webhook-cert permissions: - rules: - apiGroups: - "" resources: - secrets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resourceNames: - memberlist resources: - secrets verbs: - list - apiGroups: - apps resourceNames: - controller resources: - deployments verbs: - get - apiGroups: - metallb.io resources: - bgppeers verbs: - get - list - apiGroups: - metallb.io resources: - bfdprofiles verbs: - get - list - watch - apiGroups: - metallb.io resources: - ipaddresspools verbs: - get - list - watch - apiGroups: - metallb.io resources: - bgpadvertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - l2advertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - communities verbs: - get - list - watch serviceAccountName: controller - rules: - apiGroups: - "" resources: - secrets verbs: - get - list - watch - update - apiGroups: - security.openshift.io resourceNames: - privileged resources: - securitycontextconstraints verbs: - use serviceAccountName: frr-k8s-daemon - rules: - apiGroups: - "" resources: - configmaps verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - "" resources: - services verbs: - create - delete - get - patch - update - apiGroups: - apps resources: - daemonsets - deployments verbs: - create - delete - get - list - patch - update - watch - apiGroups: - coordination.k8s.io resources: - leases verbs: - create - delete - get - list - patch - update - watch serviceAccountName: manager-account - rules: - apiGroups: - "" resources: - pods verbs: - list - get - apiGroups: - "" resources: - secrets verbs: - get - list - watch - apiGroups: - "" resources: - configmaps verbs: - get - list - watch - apiGroups: - metallb.io resources: - bfdprofiles verbs: - get - list - watch - apiGroups: - metallb.io resources: - bgppeers verbs: - get - list - watch - apiGroups: - metallb.io resources: - l2advertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - bgpadvertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - ipaddresspools verbs: - get - list - watch - apiGroups: - metallb.io resources: - communities verbs: - get - list - watch - apiGroups: - security.openshift.io resourceNames: - privileged resources: - securitycontextconstraints verbs: - use serviceAccountName: speaker strategy: deployment installModes: - supported: false type: OwnNamespace - supported: false type: SingleNamespace - supported: false type: MultiNamespace - supported: true type: AllNamespaces keywords: - metallb-operator labels: olm-owner-enterprise-app: metallb-operator olm-status-descriptors: metallb-operator.v4.18.0-202509240837 links: - name: MetalLB Operator url: https://github.com/openshift/metallb-operator maintainers: - email: fpaoline@redhat.com name: Federico Paolinelli - email: obraunsh@redhat.com name: Ori Braunshtein maturity: alpha minKubeVersion: 1.26.0 provider: name: Red Hat relatedImages: - image: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:f21e7d47f7a17f6b3520c17b8f32cbff2ae3129811d3242e08c9c48a9fbf3fbe name: metallb-rhel9-operator - image: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 name: metallb-rhel9 - image: registry.redhat.io/openshift4/frr-rhel9@sha256:41205f57dd50b222640776ca5fcda336ca1541f53dae820d7bc6669f52c28a87 name: frr-rhel9 - image: registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:784c4667a867abdbec6d31a4bbde52676a0f37f8e448eaae37568a46fcdeace7 name: ose-kube-rbac-proxy-rhel9 version: 4.18.0-202509240837 webhookdefinitions: - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: bfdprofilevalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - DELETE resources: - bfdprofiles sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-bfdprofile - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: bgpadvertisementvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - bgpadvertisements sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-bgpadvertisement - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: bgppeersvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta2 operations: - CREATE - UPDATE resources: - bgppeers sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta2-bgppeer - admissionReviewVersions: - v1beta1 - v1beta2 containerPort: 443 conversionCRDs: - bgppeers.metallb.io deploymentName: metallb-operator-webhook-server generateName: cbgppeers.kb.io sideEffects: None targetPort: 9443 type: ConversionWebhook webhookPath: /convert - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: communityvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - communities sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-community - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: ipaddresspoolvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - ipaddresspools sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-ipaddresspool - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: l2advertisementvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - l2advertisements sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-l2advertisement - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-controller-manager failurePolicy: Fail generateName: metallbvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - metallbs sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-metallb status: certsLastUpdated: "2025-10-11T10:48:04Z" certsRotateAt: "2027-10-10T10:48:03Z" cleanup: {} conditions: - lastTransitionTime: "2025-10-11T10:47:49Z" lastUpdateTime: "2025-10-11T10:47:49Z" message: requirements not yet checked phase: Pending reason: RequirementsUnknown - lastTransitionTime: "2025-10-11T10:47:49Z" lastUpdateTime: "2025-10-11T10:47:50Z" message: one or more requirements couldn't be found phase: Pending reason: RequirementsNotMet - lastTransitionTime: "2025-10-11T10:48:02Z" lastUpdateTime: "2025-10-11T10:48:02Z" message: all requirements found, attempting install phase: InstallReady reason: AllRequirementsMet - lastTransitionTime: "2025-10-11T10:48:03Z" lastUpdateTime: "2025-10-11T10:48:03Z" message: waiting for install components to report healthy phase: Installing reason: InstallSucceeded - lastTransitionTime: "2025-10-11T10:48:03Z" lastUpdateTime: "2025-10-11T10:48:05Z" message: 'installing: waiting for deployment metallb-operator-controller-manager to become ready: deployment "metallb-operator-controller-manager" not available: Deployment does not have minimum availability.' phase: Installing reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:12Z" lastUpdateTime: "2025-10-11T10:48:12Z" message: 'Webhook install failed: conversionWebhook not ready' phase: InstallReady reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:14Z" message: waiting for install components to report healthy phase: Installing reason: InstallSucceeded - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:15Z" message: 'installing: waiting for deployment metallb-operator-controller-manager to become ready: deployment "metallb-operator-controller-manager" not available: Deployment does not have minimum availability.' phase: Installing reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:44Z" lastUpdateTime: "2025-10-11T10:48:44Z" message: install strategy completed with no errors phase: Succeeded reason: InstallSucceeded lastTransitionTime: "2025-10-11T10:48:44Z" lastUpdateTime: "2025-10-11T10:48:44Z" message: The operator is running in metallb-system but is managing this namespace phase: Succeeded reason: Copied requirementStatus: - group: operators.coreos.com kind: ClusterServiceVersion message: CSV minKubeVersion (1.26.0) less than server version (v1.31.13) name: metallb-operator.v4.18.0-202509240837 status: Present version: v1alpha1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: bfdprofiles.metallb.io status: Present uuid: db566ca1-d194-49e9-a7ec-b9d629b5ee0d version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: bgpadvertisements.metallb.io status: Present uuid: 38ba7ab4-a536-4e3d-8a27-eb0b262f4628 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: bgppeers.metallb.io status: Present uuid: 3bfec0ba-4dd0-4a5e-9a53-c2e9078049f6 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: communities.metallb.io status: Present uuid: 9b9a3486-a195-4a90-9220-3c8be9f8a1e1 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: frrconfigurations.frrk8s.metallb.io status: Present uuid: 3f862190-ebf6-4bd3-baf9-92da3ddb9135 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: frrnodestates.frrk8s.metallb.io status: Present uuid: ab643dd3-4ce6-4a5b-8d6a-6029f628e635 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: ipaddresspools.metallb.io status: Present uuid: 62846b7a-651d-4553-a2bb-378c0c8d38e8 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: l2advertisements.metallb.io status: Present uuid: 014c36b8-10be-476a-b3d0-1be15df1a153 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: metallbs.metallb.io status: Present uuid: 7afc080f-f706-4a76-a93f-75d768f99a46 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: servicel2statuses.metallb.io status: Present uuid: df66f2b3-13f0-488f-9ebc-ba10621b3773 version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch","create","update","delete"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":["metallb.io"],"resources":["servicel2statuses","servicel2statuses/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["services","endpoints","nodes","namespaces"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["discovery.k8s.io"],"resources":["endpointslices"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","patch"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["policy"],"resources":["podsecuritypolicies"],"resourceNames":["speaker"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: speaker status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["services","namespaces"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list"],"apiGroups":[""],"resources":["nodes"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":[""],"resources":["services/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","patch"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["policy"],"resources":["podsecuritypolicies"],"resourceNames":["controller"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"],"resourceNames":["metallb-webhook-configuration"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["apiextensions.k8s.io"],"resources":["customresourcedefinitions"],"resourceNames":["bfdprofiles.metallb.io","bgpadvertisements.metallb.io","bgppeers.metallb.io","ipaddresspools.metallb.io","l2advertisements.metallb.io","communities.metallb.io"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","watch"],"apiGroups":["apiextensions.k8s.io"],"resources":["customresourcedefinitions"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: controller status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["nodes"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"],"resourceNames":["frr-k8s-validating-webhook-configuration"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrnodestates"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrnodestates/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: frr-k8s-daemon status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":[""],"resources":["secrets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["apiextensions.k8s.io"],"resources":["customresourcedefinitions"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["config.openshift.io"],"resources":["clusteroperators"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["metallb.io"],"resources":["metallbs"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["delete","get","patch","update"],"apiGroups":["metallb.io"],"resources":["metallbs/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["metallb.io"],"resources":["metallbs/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["monitoring.coreos.com"],"resources":["podmonitors"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["monitoring.coreos.com"],"resources":["servicemonitors"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","update","watch"],"apiGroups":["operator.openshift.io"],"resources":["networks"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["policy"],"resources":["podsecuritypolicies"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: manager-account status: Present version: v1 apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion metadata: annotations: alm-examples: |- [ { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "basic", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64512, "neighbors": [ { "address": "172.30.0.3", "asn": 64512, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } }, "toReceive": { "allowed": { "mode": "all" } } } ] } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "two-neighs", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64512, "neighbors": [ { "address": "172.30.0.3", "asn": 4200000000, "ebgpMultiHop": true, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } } }, { "address": "172.18.0.6", "asn": 4200000000, "port": 179, "toAdvertise": { "allowed": { "prefixes": [ "192.168.2.0/24" ] } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ] } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "two-routers-vrf", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64513, "neighbors": [ { "address": "172.32.0.3", "asn": 4200000000, "ebgpMultiHop": true, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ] }, { "asn": 64515, "neighbors": [ { "address": "172.31.0.3", "asn": 4200000000, "port": 179, "toAdvertise": { "allowed": { "mode": "all" } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ], "vrf": "red" } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRNodeState", "metadata": { "name": "frr-k8s-worker" }, "status": { "lastConversionResult": "success", "lastReloadResult": "success", "runningConfig": "Building configuration...\n\nCurrent configuration:\n!\nfrr version 9.0.2_git\nfrr defaults traditional\nhostname frr-k8s-worker\nlog file /etc/frr/frr.log informational\nlog timestamp precision 3\nno ipv6 forwarding\nservice integrated-vtysh-config\n!\nip nht resolve-via-default\n!\nipv6 nht resolve-via-default\n!\nend\n" } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BFDProfile", "metadata": { "name": "bfd-profile-sample", "namespace": "metallb-system" }, "spec": { "receiveInterval": 380, "transmitInterval": 270 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample1", "namespace": "metallb-system" }, "spec": { "ipAddressPools": [ "ip-addresspool-sample1" ], "peers": [ "ebgp-single-hop0" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample2", "namespace": "metallb-system" }, "spec": { "ipAddressPoolSelectors": [ { "matchLabels": { "test": "ipv6" } }, { "matchLabels": { "test": "ipv4" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample3", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "communities": [ "65535:65282" ], "ipAddressPools": [ "ip-addresspool-sample1" ], "localPref": 50 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample4", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "communities": [ "NO_ADVERTISE" ], "ipAddressPools": [ "ip-addresspool-sample1" ], "localPref": 50 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample5", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "ipAddressPools": [ "ip-addresspool-sample1" ], "nodeSelectors": [ { "matchLabels": { "kubernetes.io/hostname": "kind-control-plane" } }, { "matchLabels": { "kubernetes.io/hostname": "kind-worker" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-beta1", "namespace": "metallb-system" }, "spec": { "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta1", "kind": "Community", "metadata": { "name": "community1", "namespace": "metallb-system" }, "spec": { "communities": [ { "name": "NO_ADVERTISE", "value": "65535:65282" } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "name": "ip-addresspool-sample1", "namespace": "metallb-system" }, "spec": { "addresses": [ "192.168.10.0/24", "192.168.9.1-192.168.9.5", "fc00:f853:0ccd:e799::/124" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "labels": { "test": "ipv4" }, "name": "ip-addresspool-sample2", "namespace": "metallb-system" }, "spec": { "addresses": [ "172.20.0.100/24" ], "autoAssign": false } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "labels": { "test": "ipv6" }, "name": "ip-addresspool-sample3", "namespace": "metallb-system" }, "spec": { "addresses": [ "2002:2:2::1-2002:2:2::100" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "L2Advertisement", "metadata": { "name": "l2-adv-sample1", "namespace": "metallb-system" }, "spec": { "ipAddressPools": [ "ip-addresspool-sample1" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "L2Advertisement", "metadata": { "name": "l2-adv-sample2", "namespace": "metallb-system" }, "spec": { "nodeSelectors": [ { "matchLabels": { "kubernetes.io/hostname": "kind-control-plane" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "MetalLB", "metadata": { "name": "metallb", "namespace": "metallb-system" }, "spec": {} }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample1", "namespace": "metallb-system" }, "spec": { "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample2", "namespace": "metallb-system" }, "spec": { "bfdProfile": "bfd-profile-sample", "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample3", "namespace": "metallb-system" }, "spec": { "holdTime": "9m0s", "keepaliveTime": "0s", "myASN": 64512, "passwordSecret": { "name": "secretname", "namespace": "metallb-system" }, "peerASN": 64512, "peerAddress": "172.30.0.3", "peerPort": 180 } } ] capabilities: Basic Install categories: Networking certified: "false" containerImage: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:f21e7d47f7a17f6b3520c17b8f32cbff2ae3129811d3242e08c9c48a9fbf3fbe createdAt: "2023-06-06T15:25:00Z" description: An operator for deploying MetalLB on a kubernetes cluster. features.operators.openshift.io/disconnected: "true" features.operators.openshift.io/fips-compliant: "true" features.operators.openshift.io/proxy-aware: "false" features.operators.openshift.io/tls-profiles: "false" features.operators.openshift.io/token-auth-aws: "false" features.operators.openshift.io/token-auth-azure: "false" features.operators.openshift.io/token-auth-gcp: "false" olm.operatorGroup: metallb-operator olm.operatorNamespace: metallb-system olm.skipRange: '>=4.8.0 <4.18.0' operatorframework.io/properties: '{"properties":[{"type":"olm.gvk","value":{"group":"frrk8s.metallb.io","kind":"FRRConfiguration","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"frrk8s.metallb.io","kind":"FRRNodeState","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BFDProfile","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPAdvertisement","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPPeer","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPPeer","version":"v1beta2"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"Community","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"IPAddressPool","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"L2Advertisement","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"MetalLB","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"ServiceL2Status","version":"v1beta1"}},{"type":"olm.package","value":{"packageName":"metallb-operator","version":"4.18.0-202509240837"}}]}' operatorframework.io/suggested-namespace: metallb-system operators.openshift.io/valid-subscription: '["OpenShift Kubernetes Engine", "OpenShift Container Platform", "OpenShift Platform Plus"]' operators.operatorframework.io/builder: operator-sdk-v1.34.1 operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 repository: https://github.com/openshift/metallb-operator support: Red Hat creationTimestamp: "2025-10-11T10:47:59Z" generation: 1 labels: olm.copiedFrom: metallb-system olm.managed: "true" operatorframework.io/arch.amd64: supported operatorframework.io/arch.ppc64le: supported operatorframework.io/arch.s390x: supported name: metallb-operator.v4.18.0-202509240837 namespace: openshift-nmstate resourceVersion: "29193" uid: 43e5b73a-bdec-4398-a690-f5cb2d85ade1 spec: apiservicedefinitions: {} cleanup: enabled: false customresourcedefinitions: owned: - description: BFDProfile is the Schema for the bfdprofiles API kind: BFDProfile name: bfdprofiles.metallb.io version: v1beta1 - description: BGPAdvertisement is the Schema for the bgpadvertisements API kind: BGPAdvertisement name: bgpadvertisements.metallb.io version: v1beta1 - description: BGPPeer is the Schema for the bgppeers API kind: BGPPeer name: bgppeers.metallb.io version: v1beta1 - description: BGPPeer is the Schema for the bgppeers API kind: BGPPeer name: bgppeers.metallb.io version: v1beta2 - description: Community is the Schema for the communities API kind: Community name: communities.metallb.io version: v1beta1 - description: FRRConfiguration is the Schema for the frrconfigurations API kind: FRRConfiguration name: frrconfigurations.frrk8s.metallb.io version: v1beta1 - description: FRRNodeState is the Schema for the frrnodestates API kind: FRRNodeState name: frrnodestates.frrk8s.metallb.io version: v1beta1 - description: IPAddressPool is the Schema for the ipaddresspools API kind: IPAddressPool name: ipaddresspools.metallb.io version: v1beta1 - description: L2Advertisement is the Schema for the l2advertisements API kind: L2Advertisement name: l2advertisements.metallb.io version: v1beta1 - description: MetalLB is the Schema for the metallbs API displayName: MetalLB kind: MetalLB name: metallbs.metallb.io version: v1beta1 - description: L2ServiceStatus is the Schema for the l2servicestatus API kind: ServiceL2Status name: servicel2statuses.metallb.io version: v1beta1 description: An operator for deploying MetalLB on a kubernetes cluster. displayName: MetalLB Operator icon: - base64data: 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 mediatype: image/png install: spec: clusterPermissions: - rules: - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create - apiGroups: - "" resources: - services - namespaces verbs: - get - list - watch - apiGroups: - "" resources: - nodes verbs: - list - apiGroups: - "" resources: - services/status verbs: - update - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - policy resourceNames: - controller resources: - podsecuritypolicies verbs: - use - apiGroups: - admissionregistration.k8s.io resourceNames: - metallb-webhook-configuration resources: - validatingwebhookconfigurations verbs: - create - delete - get - list - patch - update - watch - apiGroups: - admissionregistration.k8s.io resources: - validatingwebhookconfigurations verbs: - list - watch - apiGroups: - apiextensions.k8s.io resourceNames: - bfdprofiles.metallb.io - bgpadvertisements.metallb.io - bgppeers.metallb.io - ipaddresspools.metallb.io - l2advertisements.metallb.io - communities.metallb.io resources: - customresourcedefinitions verbs: - create - delete - get - list - patch - update - watch - apiGroups: - apiextensions.k8s.io resources: - customresourcedefinitions verbs: - list - watch serviceAccountName: controller - rules: - apiGroups: - "" resources: - nodes verbs: - get - list - watch - apiGroups: - admissionregistration.k8s.io resources: - validatingwebhookconfigurations verbs: - get - list - watch - apiGroups: - admissionregistration.k8s.io resourceNames: - frr-k8s-validating-webhook-configuration resources: - validatingwebhookconfigurations verbs: - update - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations verbs: - create - delete - get - list - patch - update - watch - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations/finalizers verbs: - update - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations/status verbs: - get - patch - update - apiGroups: - frrk8s.metallb.io resources: - frrnodestates verbs: - create - delete - get - list - patch - update - watch - apiGroups: - frrk8s.metallb.io resources: - frrnodestates/status verbs: - get - patch - update - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create serviceAccountName: frr-k8s-daemon - rules: - apiGroups: - "" resources: - secrets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - admissionregistration.k8s.io resources: - validatingwebhookconfigurations verbs: - create - delete - get - list - patch - update - watch - apiGroups: - apiextensions.k8s.io resources: - customresourcedefinitions verbs: - get - list - watch - apiGroups: - config.openshift.io resources: - clusteroperators verbs: - get - list - watch - apiGroups: - metallb.io resources: - metallbs verbs: - create - delete - get - list - patch - update - watch - apiGroups: - metallb.io resources: - metallbs/finalizers verbs: - delete - get - patch - update - apiGroups: - metallb.io resources: - metallbs/status verbs: - get - patch - update - apiGroups: - monitoring.coreos.com resources: - podmonitors verbs: - create - delete - get - list - patch - update - watch - apiGroups: - monitoring.coreos.com resources: - servicemonitors verbs: - create - delete - get - list - patch - update - watch - apiGroups: - operator.openshift.io resources: - networks verbs: - get - list - update - watch - apiGroups: - policy resources: - podsecuritypolicies verbs: - create - delete - get - list - patch - update - watch serviceAccountName: manager-account - rules: - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations verbs: - get - list - watch - create - update - delete - apiGroups: - metallb.io resources: - servicel2statuses - servicel2statuses/status verbs: - '*' - apiGroups: - "" resources: - services - endpoints - nodes - namespaces verbs: - get - list - watch - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - get - list - watch - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - policy resourceNames: - speaker resources: - podsecuritypolicies verbs: - use serviceAccountName: speaker deployments: - label: control-plane: controller-manager name: metallb-operator-controller-manager spec: replicas: 1 selector: matchLabels: control-plane: controller-manager strategy: {} template: metadata: annotations: openshift.io/required-scc: restricted-v2 creationTimestamp: null labels: control-plane: controller-manager spec: containers: - args: - --enable-leader-election - --disable-cert-rotation=true command: - /manager env: - name: SPEAKER_IMAGE value: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 - name: CONTROLLER_IMAGE value: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 - name: FRR_IMAGE value: registry.redhat.io/openshift4/frr-rhel9@sha256:41205f57dd50b222640776ca5fcda336ca1541f53dae820d7bc6669f52c28a87 - name: KUBE_RBAC_PROXY_IMAGE value: registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:784c4667a867abdbec6d31a4bbde52676a0f37f8e448eaae37568a46fcdeace7 - name: DEPLOY_KUBE_RBAC_PROXIES value: "true" - name: FRRK8S_IMAGE value: registry.redhat.io/openshift4/frr-rhel9@sha256:41205f57dd50b222640776ca5fcda336ca1541f53dae820d7bc6669f52c28a87 - name: OPERATOR_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: DEPLOY_PODMONITORS value: "false" - name: DEPLOY_SERVICEMONITORS value: "true" - name: ENABLE_WEBHOOK value: "true" - name: ENABLE_OPERATOR_WEBHOOK value: "true" - name: METRICS_PORT value: "29150" - name: HTTPS_METRICS_PORT value: "9120" - name: FRR_METRICS_PORT value: "29151" - name: FRR_HTTPS_METRICS_PORT value: "9121" - name: MEMBER_LIST_BIND_PORT value: "9122" image: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:f21e7d47f7a17f6b3520c17b8f32cbff2ae3129811d3242e08c9c48a9fbf3fbe name: manager ports: - containerPort: 9443 name: webhook-server protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /readyz port: 8080 initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: requests: cpu: 50m memory: 20Mi volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: cert readOnly: true serviceAccountName: manager-account terminationGracePeriodSeconds: 10 volumes: - name: cert secret: defaultMode: 420 secretName: metallb-operator-webhook-server-cert - label: app: metallb component: webhook-server name: metallb-operator-webhook-server spec: revisionHistoryLimit: 3 selector: matchLabels: app: metallb component: webhook-server strategy: {} template: metadata: annotations: openshift.io/required-scc: restricted-v2 prometheus.io/port: "7472" prometheus.io/scrape: "true" creationTimestamp: null labels: app: metallb component: webhook-server spec: containers: - args: - --disable-cert-rotation=true - --port=7472 - --log-level=info - --webhook-mode=onlywebhook command: - /controller env: - name: METALLB_BGP_TYPE value: frr image: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 livenessProbe: failureThreshold: 3 httpGet: path: /metrics port: monitoring initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 name: webhook-server ports: - containerPort: 7472 name: monitoring protocol: TCP - containerPort: 9443 name: webhook-server protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /metrics port: monitoring initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: {} volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: cert readOnly: true nodeSelector: kubernetes.io/os: linux serviceAccountName: controller terminationGracePeriodSeconds: 0 volumes: - name: cert secret: defaultMode: 420 secretName: metallb-webhook-cert permissions: - rules: - apiGroups: - "" resources: - secrets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resourceNames: - memberlist resources: - secrets verbs: - list - apiGroups: - apps resourceNames: - controller resources: - deployments verbs: - get - apiGroups: - metallb.io resources: - bgppeers verbs: - get - list - apiGroups: - metallb.io resources: - bfdprofiles verbs: - get - list - watch - apiGroups: - metallb.io resources: - ipaddresspools verbs: - get - list - watch - apiGroups: - metallb.io resources: - bgpadvertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - l2advertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - communities verbs: - get - list - watch serviceAccountName: controller - rules: - apiGroups: - "" resources: - secrets verbs: - get - list - watch - update - apiGroups: - security.openshift.io resourceNames: - privileged resources: - securitycontextconstraints verbs: - use serviceAccountName: frr-k8s-daemon - rules: - apiGroups: - "" resources: - configmaps verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - "" resources: - services verbs: - create - delete - get - patch - update - apiGroups: - apps resources: - daemonsets - deployments verbs: - create - delete - get - list - patch - update - watch - apiGroups: - coordination.k8s.io resources: - leases verbs: - create - delete - get - list - patch - update - watch serviceAccountName: manager-account - rules: - apiGroups: - "" resources: - pods verbs: - list - get - apiGroups: - "" resources: - secrets verbs: - get - list - watch - apiGroups: - "" resources: - configmaps verbs: - get - list - watch - apiGroups: - metallb.io resources: - bfdprofiles verbs: - get - list - watch - apiGroups: - metallb.io resources: - bgppeers verbs: - get - list - watch - apiGroups: - metallb.io resources: - l2advertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - bgpadvertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - ipaddresspools verbs: - get - list - watch - apiGroups: - metallb.io resources: - communities verbs: - get - list - watch - apiGroups: - security.openshift.io resourceNames: - privileged resources: - securitycontextconstraints verbs: - use serviceAccountName: speaker strategy: deployment installModes: - supported: false type: OwnNamespace - supported: false type: SingleNamespace - supported: false type: MultiNamespace - supported: true type: AllNamespaces keywords: - metallb-operator labels: olm-owner-enterprise-app: metallb-operator olm-status-descriptors: metallb-operator.v4.18.0-202509240837 links: - name: MetalLB Operator url: https://github.com/openshift/metallb-operator maintainers: - email: fpaoline@redhat.com name: Federico Paolinelli - email: obraunsh@redhat.com name: Ori Braunshtein maturity: alpha minKubeVersion: 1.26.0 provider: name: Red Hat relatedImages: - image: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:f21e7d47f7a17f6b3520c17b8f32cbff2ae3129811d3242e08c9c48a9fbf3fbe name: metallb-rhel9-operator - image: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 name: metallb-rhel9 - image: registry.redhat.io/openshift4/frr-rhel9@sha256:41205f57dd50b222640776ca5fcda336ca1541f53dae820d7bc6669f52c28a87 name: frr-rhel9 - image: registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:784c4667a867abdbec6d31a4bbde52676a0f37f8e448eaae37568a46fcdeace7 name: ose-kube-rbac-proxy-rhel9 version: 4.18.0-202509240837 webhookdefinitions: - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: bfdprofilevalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - DELETE resources: - bfdprofiles sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-bfdprofile - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: bgpadvertisementvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - bgpadvertisements sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-bgpadvertisement - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: bgppeersvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta2 operations: - CREATE - UPDATE resources: - bgppeers sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta2-bgppeer - admissionReviewVersions: - v1beta1 - v1beta2 containerPort: 443 conversionCRDs: - bgppeers.metallb.io deploymentName: metallb-operator-webhook-server generateName: cbgppeers.kb.io sideEffects: None targetPort: 9443 type: ConversionWebhook webhookPath: /convert - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: communityvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - communities sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-community - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: ipaddresspoolvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - ipaddresspools sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-ipaddresspool - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: l2advertisementvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - l2advertisements sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-l2advertisement - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-controller-manager failurePolicy: Fail generateName: metallbvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - metallbs sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-metallb status: certsLastUpdated: "2025-10-11T10:48:04Z" certsRotateAt: "2027-10-10T10:48:03Z" cleanup: {} conditions: - lastTransitionTime: "2025-10-11T10:47:49Z" lastUpdateTime: "2025-10-11T10:47:49Z" message: requirements not yet checked phase: Pending reason: RequirementsUnknown - lastTransitionTime: "2025-10-11T10:47:49Z" lastUpdateTime: "2025-10-11T10:47:50Z" message: one or more requirements couldn't be found phase: Pending reason: RequirementsNotMet - lastTransitionTime: "2025-10-11T10:48:02Z" lastUpdateTime: "2025-10-11T10:48:02Z" message: all requirements found, attempting install phase: InstallReady reason: AllRequirementsMet - lastTransitionTime: "2025-10-11T10:48:03Z" lastUpdateTime: "2025-10-11T10:48:03Z" message: waiting for install components to report healthy phase: Installing reason: InstallSucceeded - lastTransitionTime: "2025-10-11T10:48:03Z" lastUpdateTime: "2025-10-11T10:48:05Z" message: 'installing: waiting for deployment metallb-operator-controller-manager to become ready: deployment "metallb-operator-controller-manager" not available: Deployment does not have minimum availability.' phase: Installing reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:12Z" lastUpdateTime: "2025-10-11T10:48:12Z" message: 'Webhook install failed: conversionWebhook not ready' phase: InstallReady reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:14Z" message: waiting for install components to report healthy phase: Installing reason: InstallSucceeded - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:15Z" message: 'installing: waiting for deployment metallb-operator-controller-manager to become ready: deployment "metallb-operator-controller-manager" not available: Deployment does not have minimum availability.' phase: Installing reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:44Z" lastUpdateTime: "2025-10-11T10:48:44Z" message: install strategy completed with no errors phase: Succeeded reason: InstallSucceeded lastTransitionTime: "2025-10-11T10:48:44Z" lastUpdateTime: "2025-10-11T10:48:44Z" message: The operator is running in metallb-system but is managing this namespace phase: Succeeded reason: Copied requirementStatus: - group: operators.coreos.com kind: ClusterServiceVersion message: CSV minKubeVersion (1.26.0) less than server version (v1.31.13) name: metallb-operator.v4.18.0-202509240837 status: Present version: v1alpha1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: bfdprofiles.metallb.io status: Present uuid: db566ca1-d194-49e9-a7ec-b9d629b5ee0d version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: bgpadvertisements.metallb.io status: Present uuid: 38ba7ab4-a536-4e3d-8a27-eb0b262f4628 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: bgppeers.metallb.io status: Present uuid: 3bfec0ba-4dd0-4a5e-9a53-c2e9078049f6 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: communities.metallb.io status: Present uuid: 9b9a3486-a195-4a90-9220-3c8be9f8a1e1 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: frrconfigurations.frrk8s.metallb.io status: Present uuid: 3f862190-ebf6-4bd3-baf9-92da3ddb9135 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: frrnodestates.frrk8s.metallb.io status: Present uuid: ab643dd3-4ce6-4a5b-8d6a-6029f628e635 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: ipaddresspools.metallb.io status: Present uuid: 62846b7a-651d-4553-a2bb-378c0c8d38e8 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: l2advertisements.metallb.io status: Present uuid: 014c36b8-10be-476a-b3d0-1be15df1a153 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: metallbs.metallb.io status: Present uuid: 7afc080f-f706-4a76-a93f-75d768f99a46 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: servicel2statuses.metallb.io status: Present uuid: df66f2b3-13f0-488f-9ebc-ba10621b3773 version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch","create","update","delete"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":["metallb.io"],"resources":["servicel2statuses","servicel2statuses/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["services","endpoints","nodes","namespaces"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["discovery.k8s.io"],"resources":["endpointslices"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","patch"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["policy"],"resources":["podsecuritypolicies"],"resourceNames":["speaker"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: speaker status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["services","namespaces"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list"],"apiGroups":[""],"resources":["nodes"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":[""],"resources":["services/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","patch"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["policy"],"resources":["podsecuritypolicies"],"resourceNames":["controller"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"],"resourceNames":["metallb-webhook-configuration"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["apiextensions.k8s.io"],"resources":["customresourcedefinitions"],"resourceNames":["bfdprofiles.metallb.io","bgpadvertisements.metallb.io","bgppeers.metallb.io","ipaddresspools.metallb.io","l2advertisements.metallb.io","communities.metallb.io"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","watch"],"apiGroups":["apiextensions.k8s.io"],"resources":["customresourcedefinitions"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: controller status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["nodes"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"],"resourceNames":["frr-k8s-validating-webhook-configuration"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrnodestates"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrnodestates/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: frr-k8s-daemon status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":[""],"resources":["secrets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["apiextensions.k8s.io"],"resources":["customresourcedefinitions"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["config.openshift.io"],"resources":["clusteroperators"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["metallb.io"],"resources":["metallbs"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["delete","get","patch","update"],"apiGroups":["metallb.io"],"resources":["metallbs/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["metallb.io"],"resources":["metallbs/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["monitoring.coreos.com"],"resources":["podmonitors"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["monitoring.coreos.com"],"resources":["servicemonitors"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","update","watch"],"apiGroups":["operator.openshift.io"],"resources":["networks"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["policy"],"resources":["podsecuritypolicies"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: manager-account status: Present version: v1 apiVersion: operators.coreos.com/v1alpha1 kind: ClusterServiceVersion metadata: annotations: alm-examples: |- [ { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "basic", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64512, "neighbors": [ { "address": "172.30.0.3", "asn": 64512, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } }, "toReceive": { "allowed": { "mode": "all" } } } ] } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "two-neighs", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64512, "neighbors": [ { "address": "172.30.0.3", "asn": 4200000000, "ebgpMultiHop": true, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } } }, { "address": "172.18.0.6", "asn": 4200000000, "port": 179, "toAdvertise": { "allowed": { "prefixes": [ "192.168.2.0/24" ] } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ] } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRConfiguration", "metadata": { "name": "two-routers-vrf", "namespace": "frr-k8s-system" }, "spec": { "bgp": { "routers": [ { "asn": 64513, "neighbors": [ { "address": "172.32.0.3", "asn": 4200000000, "ebgpMultiHop": true, "port": 180, "toAdvertise": { "allowed": { "mode": "all" } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ] }, { "asn": 64515, "neighbors": [ { "address": "172.31.0.3", "asn": 4200000000, "port": 179, "toAdvertise": { "allowed": { "mode": "all" } } } ], "prefixes": [ "192.168.2.0/24", "192.169.2.0/24" ], "vrf": "red" } ] } } }, { "apiVersion": "frrk8s.metallb.io/v1beta1", "kind": "FRRNodeState", "metadata": { "name": "frr-k8s-worker" }, "status": { "lastConversionResult": "success", "lastReloadResult": "success", "runningConfig": "Building configuration...\n\nCurrent configuration:\n!\nfrr version 9.0.2_git\nfrr defaults traditional\nhostname frr-k8s-worker\nlog file /etc/frr/frr.log informational\nlog timestamp precision 3\nno ipv6 forwarding\nservice integrated-vtysh-config\n!\nip nht resolve-via-default\n!\nipv6 nht resolve-via-default\n!\nend\n" } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BFDProfile", "metadata": { "name": "bfd-profile-sample", "namespace": "metallb-system" }, "spec": { "receiveInterval": 380, "transmitInterval": 270 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample1", "namespace": "metallb-system" }, "spec": { "ipAddressPools": [ "ip-addresspool-sample1" ], "peers": [ "ebgp-single-hop0" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample2", "namespace": "metallb-system" }, "spec": { "ipAddressPoolSelectors": [ { "matchLabels": { "test": "ipv6" } }, { "matchLabels": { "test": "ipv4" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample3", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "communities": [ "65535:65282" ], "ipAddressPools": [ "ip-addresspool-sample1" ], "localPref": 50 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample4", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "communities": [ "NO_ADVERTISE" ], "ipAddressPools": [ "ip-addresspool-sample1" ], "localPref": 50 } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPAdvertisement", "metadata": { "name": "bgp-adv-sample5", "namespace": "metallb-system" }, "spec": { "aggregationLength": 32, "aggregationLengthV6": 128, "ipAddressPools": [ "ip-addresspool-sample1" ], "nodeSelectors": [ { "matchLabels": { "kubernetes.io/hostname": "kind-control-plane" } }, { "matchLabels": { "kubernetes.io/hostname": "kind-worker" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-beta1", "namespace": "metallb-system" }, "spec": { "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta1", "kind": "Community", "metadata": { "name": "community1", "namespace": "metallb-system" }, "spec": { "communities": [ { "name": "NO_ADVERTISE", "value": "65535:65282" } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "name": "ip-addresspool-sample1", "namespace": "metallb-system" }, "spec": { "addresses": [ "192.168.10.0/24", "192.168.9.1-192.168.9.5", "fc00:f853:0ccd:e799::/124" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "labels": { "test": "ipv4" }, "name": "ip-addresspool-sample2", "namespace": "metallb-system" }, "spec": { "addresses": [ "172.20.0.100/24" ], "autoAssign": false } }, { "apiVersion": "metallb.io/v1beta1", "kind": "IPAddressPool", "metadata": { "labels": { "test": "ipv6" }, "name": "ip-addresspool-sample3", "namespace": "metallb-system" }, "spec": { "addresses": [ "2002:2:2::1-2002:2:2::100" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "L2Advertisement", "metadata": { "name": "l2-adv-sample1", "namespace": "metallb-system" }, "spec": { "ipAddressPools": [ "ip-addresspool-sample1" ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "L2Advertisement", "metadata": { "name": "l2-adv-sample2", "namespace": "metallb-system" }, "spec": { "nodeSelectors": [ { "matchLabels": { "kubernetes.io/hostname": "kind-control-plane" } } ] } }, { "apiVersion": "metallb.io/v1beta1", "kind": "MetalLB", "metadata": { "name": "metallb", "namespace": "metallb-system" }, "spec": {} }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample1", "namespace": "metallb-system" }, "spec": { "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample2", "namespace": "metallb-system" }, "spec": { "bfdProfile": "bfd-profile-sample", "myASN": 64512, "peerASN": 64512, "peerAddress": "172.30.0.3" } }, { "apiVersion": "metallb.io/v1beta2", "kind": "BGPPeer", "metadata": { "name": "bgp-peer-sample3", "namespace": "metallb-system" }, "spec": { "holdTime": "9m0s", "keepaliveTime": "0s", "myASN": 64512, "passwordSecret": { "name": "secretname", "namespace": "metallb-system" }, "peerASN": 64512, "peerAddress": "172.30.0.3", "peerPort": 180 } } ] capabilities: Basic Install categories: Networking certified: "false" containerImage: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:f21e7d47f7a17f6b3520c17b8f32cbff2ae3129811d3242e08c9c48a9fbf3fbe createdAt: "2023-06-06T15:25:00Z" description: An operator for deploying MetalLB on a kubernetes cluster. features.operators.openshift.io/disconnected: "true" features.operators.openshift.io/fips-compliant: "true" features.operators.openshift.io/proxy-aware: "false" features.operators.openshift.io/tls-profiles: "false" features.operators.openshift.io/token-auth-aws: "false" features.operators.openshift.io/token-auth-azure: "false" features.operators.openshift.io/token-auth-gcp: "false" olm.operatorGroup: metallb-operator olm.operatorNamespace: metallb-system olm.skipRange: '>=4.8.0 <4.18.0' olm.targetNamespaces: "" operatorframework.io/properties: '{"properties":[{"type":"olm.gvk","value":{"group":"frrk8s.metallb.io","kind":"FRRConfiguration","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"frrk8s.metallb.io","kind":"FRRNodeState","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BFDProfile","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPAdvertisement","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPPeer","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"BGPPeer","version":"v1beta2"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"Community","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"IPAddressPool","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"L2Advertisement","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"MetalLB","version":"v1beta1"}},{"type":"olm.gvk","value":{"group":"metallb.io","kind":"ServiceL2Status","version":"v1beta1"}},{"type":"olm.package","value":{"packageName":"metallb-operator","version":"4.18.0-202509240837"}}]}' operatorframework.io/suggested-namespace: metallb-system operators.openshift.io/valid-subscription: '["OpenShift Kubernetes Engine", "OpenShift Container Platform", "OpenShift Platform Plus"]' operators.operatorframework.io/builder: operator-sdk-v1.34.1 operators.operatorframework.io/project_layout: go.kubebuilder.io/v4 repository: https://github.com/openshift/metallb-operator support: Red Hat creationTimestamp: "2025-10-11T10:47:48Z" finalizers: - operators.coreos.com/csv-cleanup generation: 1 labels: olm.managed: "true" operatorframework.io/arch.amd64: supported operatorframework.io/arch.ppc64le: supported operatorframework.io/arch.s390x: supported operators.coreos.com/metallb-operator.metallb-system: "" name: metallb-operator.v4.18.0-202509240837 namespace: metallb-system resourceVersion: "28953" uid: 1688666e-1c79-4135-b171-1bbf3dc4f27e spec: apiservicedefinitions: {} cleanup: enabled: false customresourcedefinitions: owned: - description: BFDProfile is the Schema for the bfdprofiles API kind: BFDProfile name: bfdprofiles.metallb.io version: v1beta1 - description: BGPAdvertisement is the Schema for the bgpadvertisements API kind: BGPAdvertisement name: bgpadvertisements.metallb.io version: v1beta1 - description: BGPPeer is the Schema for the bgppeers API kind: BGPPeer name: bgppeers.metallb.io version: v1beta1 - description: BGPPeer is the Schema for the bgppeers API kind: BGPPeer name: bgppeers.metallb.io version: v1beta2 - description: Community is the Schema for the communities API kind: Community name: communities.metallb.io version: v1beta1 - description: FRRConfiguration is the Schema for the frrconfigurations API kind: FRRConfiguration name: frrconfigurations.frrk8s.metallb.io version: v1beta1 - description: FRRNodeState is the Schema for the frrnodestates API kind: FRRNodeState name: frrnodestates.frrk8s.metallb.io version: v1beta1 - description: IPAddressPool is the Schema for the ipaddresspools API kind: IPAddressPool name: ipaddresspools.metallb.io version: v1beta1 - description: L2Advertisement is the Schema for the l2advertisements API kind: L2Advertisement name: l2advertisements.metallb.io version: v1beta1 - description: MetalLB is the Schema for the metallbs API displayName: MetalLB kind: MetalLB name: metallbs.metallb.io version: v1beta1 - description: L2ServiceStatus is the Schema for the l2servicestatus API kind: ServiceL2Status name: servicel2statuses.metallb.io version: v1beta1 description: An operator for deploying MetalLB on a kubernetes cluster. displayName: MetalLB Operator icon: - base64data: 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 mediatype: image/png install: spec: clusterPermissions: - rules: - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create - apiGroups: - "" resources: - services - namespaces verbs: - get - list - watch - apiGroups: - "" resources: - nodes verbs: - list - apiGroups: - "" resources: - services/status verbs: - update - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - policy resourceNames: - controller resources: - podsecuritypolicies verbs: - use - apiGroups: - admissionregistration.k8s.io resourceNames: - metallb-webhook-configuration resources: - validatingwebhookconfigurations verbs: - create - delete - get - list - patch - update - watch - apiGroups: - admissionregistration.k8s.io resources: - validatingwebhookconfigurations verbs: - list - watch - apiGroups: - apiextensions.k8s.io resourceNames: - bfdprofiles.metallb.io - bgpadvertisements.metallb.io - bgppeers.metallb.io - ipaddresspools.metallb.io - l2advertisements.metallb.io - communities.metallb.io resources: - customresourcedefinitions verbs: - create - delete - get - list - patch - update - watch - apiGroups: - apiextensions.k8s.io resources: - customresourcedefinitions verbs: - list - watch serviceAccountName: controller - rules: - apiGroups: - "" resources: - nodes verbs: - get - list - watch - apiGroups: - admissionregistration.k8s.io resources: - validatingwebhookconfigurations verbs: - get - list - watch - apiGroups: - admissionregistration.k8s.io resourceNames: - frr-k8s-validating-webhook-configuration resources: - validatingwebhookconfigurations verbs: - update - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations verbs: - create - delete - get - list - patch - update - watch - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations/finalizers verbs: - update - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations/status verbs: - get - patch - update - apiGroups: - frrk8s.metallb.io resources: - frrnodestates verbs: - create - delete - get - list - patch - update - watch - apiGroups: - frrk8s.metallb.io resources: - frrnodestates/status verbs: - get - patch - update - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create serviceAccountName: frr-k8s-daemon - rules: - apiGroups: - "" resources: - secrets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - admissionregistration.k8s.io resources: - validatingwebhookconfigurations verbs: - create - delete - get - list - patch - update - watch - apiGroups: - apiextensions.k8s.io resources: - customresourcedefinitions verbs: - get - list - watch - apiGroups: - config.openshift.io resources: - clusteroperators verbs: - get - list - watch - apiGroups: - metallb.io resources: - metallbs verbs: - create - delete - get - list - patch - update - watch - apiGroups: - metallb.io resources: - metallbs/finalizers verbs: - delete - get - patch - update - apiGroups: - metallb.io resources: - metallbs/status verbs: - get - patch - update - apiGroups: - monitoring.coreos.com resources: - podmonitors verbs: - create - delete - get - list - patch - update - watch - apiGroups: - monitoring.coreos.com resources: - servicemonitors verbs: - create - delete - get - list - patch - update - watch - apiGroups: - operator.openshift.io resources: - networks verbs: - get - list - update - watch - apiGroups: - policy resources: - podsecuritypolicies verbs: - create - delete - get - list - patch - update - watch serviceAccountName: manager-account - rules: - apiGroups: - authentication.k8s.io resources: - tokenreviews verbs: - create - apiGroups: - authorization.k8s.io resources: - subjectaccessreviews verbs: - create - apiGroups: - frrk8s.metallb.io resources: - frrconfigurations verbs: - get - list - watch - create - update - delete - apiGroups: - metallb.io resources: - servicel2statuses - servicel2statuses/status verbs: - '*' - apiGroups: - "" resources: - services - endpoints - nodes - namespaces verbs: - get - list - watch - apiGroups: - discovery.k8s.io resources: - endpointslices verbs: - get - list - watch - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - policy resourceNames: - speaker resources: - podsecuritypolicies verbs: - use serviceAccountName: speaker deployments: - label: control-plane: controller-manager name: metallb-operator-controller-manager spec: replicas: 1 selector: matchLabels: control-plane: controller-manager strategy: {} template: metadata: annotations: openshift.io/required-scc: restricted-v2 creationTimestamp: null labels: control-plane: controller-manager spec: containers: - args: - --enable-leader-election - --disable-cert-rotation=true command: - /manager env: - name: SPEAKER_IMAGE value: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 - name: CONTROLLER_IMAGE value: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 - name: FRR_IMAGE value: registry.redhat.io/openshift4/frr-rhel9@sha256:41205f57dd50b222640776ca5fcda336ca1541f53dae820d7bc6669f52c28a87 - name: KUBE_RBAC_PROXY_IMAGE value: registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:784c4667a867abdbec6d31a4bbde52676a0f37f8e448eaae37568a46fcdeace7 - name: DEPLOY_KUBE_RBAC_PROXIES value: "true" - name: FRRK8S_IMAGE value: registry.redhat.io/openshift4/frr-rhel9@sha256:41205f57dd50b222640776ca5fcda336ca1541f53dae820d7bc6669f52c28a87 - name: OPERATOR_NAMESPACE valueFrom: fieldRef: fieldPath: metadata.namespace - name: DEPLOY_PODMONITORS value: "false" - name: DEPLOY_SERVICEMONITORS value: "true" - name: ENABLE_WEBHOOK value: "true" - name: ENABLE_OPERATOR_WEBHOOK value: "true" - name: METRICS_PORT value: "29150" - name: HTTPS_METRICS_PORT value: "9120" - name: FRR_METRICS_PORT value: "29151" - name: FRR_HTTPS_METRICS_PORT value: "9121" - name: MEMBER_LIST_BIND_PORT value: "9122" image: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:f21e7d47f7a17f6b3520c17b8f32cbff2ae3129811d3242e08c9c48a9fbf3fbe name: manager ports: - containerPort: 9443 name: webhook-server protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /readyz port: 8080 initialDelaySeconds: 30 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: requests: cpu: 50m memory: 20Mi volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: cert readOnly: true serviceAccountName: manager-account terminationGracePeriodSeconds: 10 volumes: - name: cert secret: defaultMode: 420 secretName: metallb-operator-webhook-server-cert - label: app: metallb component: webhook-server name: metallb-operator-webhook-server spec: revisionHistoryLimit: 3 selector: matchLabels: app: metallb component: webhook-server strategy: {} template: metadata: annotations: openshift.io/required-scc: restricted-v2 prometheus.io/port: "7472" prometheus.io/scrape: "true" creationTimestamp: null labels: app: metallb component: webhook-server spec: containers: - args: - --disable-cert-rotation=true - --port=7472 - --log-level=info - --webhook-mode=onlywebhook command: - /controller env: - name: METALLB_BGP_TYPE value: frr image: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 livenessProbe: failureThreshold: 3 httpGet: path: /metrics port: monitoring initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 name: webhook-server ports: - containerPort: 7472 name: monitoring protocol: TCP - containerPort: 9443 name: webhook-server protocol: TCP readinessProbe: failureThreshold: 3 httpGet: path: /metrics port: monitoring initialDelaySeconds: 10 periodSeconds: 10 successThreshold: 1 timeoutSeconds: 1 resources: {} volumeMounts: - mountPath: /tmp/k8s-webhook-server/serving-certs name: cert readOnly: true nodeSelector: kubernetes.io/os: linux serviceAccountName: controller terminationGracePeriodSeconds: 0 volumes: - name: cert secret: defaultMode: 420 secretName: metallb-webhook-cert permissions: - rules: - apiGroups: - "" resources: - secrets verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resourceNames: - memberlist resources: - secrets verbs: - list - apiGroups: - apps resourceNames: - controller resources: - deployments verbs: - get - apiGroups: - metallb.io resources: - bgppeers verbs: - get - list - apiGroups: - metallb.io resources: - bfdprofiles verbs: - get - list - watch - apiGroups: - metallb.io resources: - ipaddresspools verbs: - get - list - watch - apiGroups: - metallb.io resources: - bgpadvertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - l2advertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - communities verbs: - get - list - watch serviceAccountName: controller - rules: - apiGroups: - "" resources: - secrets verbs: - get - list - watch - update - apiGroups: - security.openshift.io resourceNames: - privileged resources: - securitycontextconstraints verbs: - use serviceAccountName: frr-k8s-daemon - rules: - apiGroups: - "" resources: - configmaps verbs: - create - delete - get - list - patch - update - watch - apiGroups: - "" resources: - events verbs: - create - patch - apiGroups: - "" resources: - services verbs: - create - delete - get - patch - update - apiGroups: - apps resources: - daemonsets - deployments verbs: - create - delete - get - list - patch - update - watch - apiGroups: - coordination.k8s.io resources: - leases verbs: - create - delete - get - list - patch - update - watch serviceAccountName: manager-account - rules: - apiGroups: - "" resources: - pods verbs: - list - get - apiGroups: - "" resources: - secrets verbs: - get - list - watch - apiGroups: - "" resources: - configmaps verbs: - get - list - watch - apiGroups: - metallb.io resources: - bfdprofiles verbs: - get - list - watch - apiGroups: - metallb.io resources: - bgppeers verbs: - get - list - watch - apiGroups: - metallb.io resources: - l2advertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - bgpadvertisements verbs: - get - list - watch - apiGroups: - metallb.io resources: - ipaddresspools verbs: - get - list - watch - apiGroups: - metallb.io resources: - communities verbs: - get - list - watch - apiGroups: - security.openshift.io resourceNames: - privileged resources: - securitycontextconstraints verbs: - use serviceAccountName: speaker strategy: deployment installModes: - supported: false type: OwnNamespace - supported: false type: SingleNamespace - supported: false type: MultiNamespace - supported: true type: AllNamespaces keywords: - metallb-operator labels: olm-owner-enterprise-app: metallb-operator olm-status-descriptors: metallb-operator.v4.18.0-202509240837 links: - name: MetalLB Operator url: https://github.com/openshift/metallb-operator maintainers: - email: fpaoline@redhat.com name: Federico Paolinelli - email: obraunsh@redhat.com name: Ori Braunshtein maturity: alpha minKubeVersion: 1.26.0 provider: name: Red Hat relatedImages: - image: registry.redhat.io/openshift4/metallb-rhel9-operator@sha256:f21e7d47f7a17f6b3520c17b8f32cbff2ae3129811d3242e08c9c48a9fbf3fbe name: metallb-rhel9-operator - image: registry.redhat.io/openshift4/metallb-rhel9@sha256:fbb4aaad8aa681dfebc89dec05ff22cd002c72df1421ced8602fe29efce4afa7 name: metallb-rhel9 - image: registry.redhat.io/openshift4/frr-rhel9@sha256:41205f57dd50b222640776ca5fcda336ca1541f53dae820d7bc6669f52c28a87 name: frr-rhel9 - image: registry.redhat.io/openshift4/ose-kube-rbac-proxy-rhel9@sha256:784c4667a867abdbec6d31a4bbde52676a0f37f8e448eaae37568a46fcdeace7 name: ose-kube-rbac-proxy-rhel9 version: 4.18.0-202509240837 webhookdefinitions: - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: bfdprofilevalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - DELETE resources: - bfdprofiles sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-bfdprofile - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: bgpadvertisementvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - bgpadvertisements sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-bgpadvertisement - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: bgppeersvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta2 operations: - CREATE - UPDATE resources: - bgppeers sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta2-bgppeer - admissionReviewVersions: - v1beta1 - v1beta2 containerPort: 443 conversionCRDs: - bgppeers.metallb.io deploymentName: metallb-operator-webhook-server generateName: cbgppeers.kb.io sideEffects: None targetPort: 9443 type: ConversionWebhook webhookPath: /convert - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: communityvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - communities sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-community - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: ipaddresspoolvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - ipaddresspools sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-ipaddresspool - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-webhook-server failurePolicy: Fail generateName: l2advertisementvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - l2advertisements sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-l2advertisement - admissionReviewVersions: - v1 containerPort: 443 deploymentName: metallb-operator-controller-manager failurePolicy: Fail generateName: metallbvalidationwebhook.metallb.io rules: - apiGroups: - metallb.io apiVersions: - v1beta1 operations: - CREATE - UPDATE resources: - metallbs sideEffects: None targetPort: 9443 type: ValidatingAdmissionWebhook webhookPath: /validate-metallb-io-v1beta1-metallb status: certsLastUpdated: "2025-10-11T10:48:04Z" certsRotateAt: "2027-10-10T10:48:03Z" cleanup: {} conditions: - lastTransitionTime: "2025-10-11T10:47:49Z" lastUpdateTime: "2025-10-11T10:47:49Z" message: requirements not yet checked phase: Pending reason: RequirementsUnknown - lastTransitionTime: "2025-10-11T10:47:49Z" lastUpdateTime: "2025-10-11T10:47:50Z" message: one or more requirements couldn't be found phase: Pending reason: RequirementsNotMet - lastTransitionTime: "2025-10-11T10:48:02Z" lastUpdateTime: "2025-10-11T10:48:02Z" message: all requirements found, attempting install phase: InstallReady reason: AllRequirementsMet - lastTransitionTime: "2025-10-11T10:48:03Z" lastUpdateTime: "2025-10-11T10:48:03Z" message: waiting for install components to report healthy phase: Installing reason: InstallSucceeded - lastTransitionTime: "2025-10-11T10:48:03Z" lastUpdateTime: "2025-10-11T10:48:05Z" message: 'installing: waiting for deployment metallb-operator-controller-manager to become ready: deployment "metallb-operator-controller-manager" not available: Deployment does not have minimum availability.' phase: Installing reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:12Z" lastUpdateTime: "2025-10-11T10:48:12Z" message: 'Webhook install failed: conversionWebhook not ready' phase: InstallReady reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:14Z" message: waiting for install components to report healthy phase: Installing reason: InstallSucceeded - lastTransitionTime: "2025-10-11T10:48:14Z" lastUpdateTime: "2025-10-11T10:48:15Z" message: 'installing: waiting for deployment metallb-operator-controller-manager to become ready: deployment "metallb-operator-controller-manager" not available: Deployment does not have minimum availability.' phase: Installing reason: InstallWaiting - lastTransitionTime: "2025-10-11T10:48:44Z" lastUpdateTime: "2025-10-11T10:48:44Z" message: install strategy completed with no errors phase: Succeeded reason: InstallSucceeded lastTransitionTime: "2025-10-11T10:48:44Z" lastUpdateTime: "2025-10-11T10:48:44Z" message: install strategy completed with no errors phase: Succeeded reason: InstallSucceeded requirementStatus: - group: operators.coreos.com kind: ClusterServiceVersion message: CSV minKubeVersion (1.26.0) less than server version (v1.31.13) name: metallb-operator.v4.18.0-202509240837 status: Present version: v1alpha1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: bfdprofiles.metallb.io status: Present uuid: db566ca1-d194-49e9-a7ec-b9d629b5ee0d version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: bgpadvertisements.metallb.io status: Present uuid: 38ba7ab4-a536-4e3d-8a27-eb0b262f4628 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: bgppeers.metallb.io status: Present uuid: 3bfec0ba-4dd0-4a5e-9a53-c2e9078049f6 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: communities.metallb.io status: Present uuid: 9b9a3486-a195-4a90-9220-3c8be9f8a1e1 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: frrconfigurations.frrk8s.metallb.io status: Present uuid: 3f862190-ebf6-4bd3-baf9-92da3ddb9135 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: frrnodestates.frrk8s.metallb.io status: Present uuid: ab643dd3-4ce6-4a5b-8d6a-6029f628e635 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: ipaddresspools.metallb.io status: Present uuid: 62846b7a-651d-4553-a2bb-378c0c8d38e8 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: l2advertisements.metallb.io status: Present uuid: 014c36b8-10be-476a-b3d0-1be15df1a153 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: metallbs.metallb.io status: Present uuid: 7afc080f-f706-4a76-a93f-75d768f99a46 version: v1 - group: apiextensions.k8s.io kind: CustomResourceDefinition message: CRD is present and Established condition is true name: servicel2statuses.metallb.io status: Present uuid: df66f2b3-13f0-488f-9ebc-ba10621b3773 version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch","create","update","delete"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["*"],"apiGroups":["metallb.io"],"resources":["servicel2statuses","servicel2statuses/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["services","endpoints","nodes","namespaces"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["discovery.k8s.io"],"resources":["endpointslices"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","patch"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["policy"],"resources":["podsecuritypolicies"],"resourceNames":["speaker"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: speaker status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["services","namespaces"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list"],"apiGroups":[""],"resources":["nodes"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":[""],"resources":["services/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","patch"],"apiGroups":[""],"resources":["events"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["use"],"apiGroups":["policy"],"resources":["podsecuritypolicies"],"resourceNames":["controller"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"],"resourceNames":["metallb-webhook-configuration"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["apiextensions.k8s.io"],"resources":["customresourcedefinitions"],"resourceNames":["bfdprofiles.metallb.io","bgpadvertisements.metallb.io","bgppeers.metallb.io","ipaddresspools.metallb.io","l2advertisements.metallb.io","communities.metallb.io"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["list","watch"],"apiGroups":["apiextensions.k8s.io"],"resources":["customresourcedefinitions"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: controller status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":[""],"resources":["nodes"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"],"resourceNames":["frr-k8s-validating-webhook-configuration"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["update"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrconfigurations/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrnodestates"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["frrk8s.metallb.io"],"resources":["frrnodestates/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authentication.k8s.io"],"resources":["tokenreviews"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create"],"apiGroups":["authorization.k8s.io"],"resources":["subjectaccessreviews"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: frr-k8s-daemon status: Present version: v1 - dependents: - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":[""],"resources":["secrets"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["admissionregistration.k8s.io"],"resources":["validatingwebhookconfigurations"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["apiextensions.k8s.io"],"resources":["customresourcedefinitions"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","watch"],"apiGroups":["config.openshift.io"],"resources":["clusteroperators"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["metallb.io"],"resources":["metallbs"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["delete","get","patch","update"],"apiGroups":["metallb.io"],"resources":["metallbs/finalizers"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","patch","update"],"apiGroups":["metallb.io"],"resources":["metallbs/status"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["monitoring.coreos.com"],"resources":["podmonitors"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["monitoring.coreos.com"],"resources":["servicemonitors"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["get","list","update","watch"],"apiGroups":["operator.openshift.io"],"resources":["networks"]} status: Satisfied version: v1 - group: rbac.authorization.k8s.io kind: PolicyRule message: cluster rule:{"verbs":["create","delete","get","list","patch","update","watch"],"apiGroups":["policy"],"resources":["podsecuritypolicies"]} status: Satisfied version: v1 group: "" kind: ServiceAccount message: "" name: manager-account status: Present version: v1