apiVersion: v1
items:
- apiVersion: v1
  kind: Pod
  metadata:
    creationTimestamp: "2026-06-09T13:59:07Z"
    generateName: metallb-controller-7b8b56ccdd-
    labels:
      app.kubernetes.io/component: controller
      app.kubernetes.io/instance: metallb
      app.kubernetes.io/name: metallb
      pod-template-hash: 7b8b56ccdd
    name: metallb-controller-7b8b56ccdd-vdw7j
    namespace: metallb
    ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: ReplicaSet
      name: metallb-controller-7b8b56ccdd
      uid: b9171ca0-12dd-4915-9b42-0c95fe40c643
    resourceVersion: "657"
    uid: 033c3047-752e-4019-8e4a-6ff29d320b12
  spec:
    containers:
    - args:
      - --port=9120
      - --log-level=info
      - --webhook-mode=enabled
      env:
      - name: METALLB_POD_NAME
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: metadata.name
      - name: METALLB_ML_SECRET_NAME
        value: metallb-memberlist
      - name: METALLB_DEPLOYMENT
        value: metallb-controller
      - name: METALLB_BGP_TYPE
        value: frr-k8s
      image: quay.io/metallb/controller:v0.16.1
      imagePullPolicy: IfNotPresent
      livenessProbe:
        failureThreshold: 3
        httpGet:
          path: /healthz
          port: 17472
          scheme: HTTP
        initialDelaySeconds: 10
        periodSeconds: 10
        successThreshold: 1
        timeoutSeconds: 1
      name: controller
      ports:
      - containerPort: 9120
        name: metricshttps
        protocol: TCP
      - containerPort: 9443
        name: webhook-server
        protocol: TCP
      readinessProbe:
        failureThreshold: 3
        httpGet:
          path: /readyz
          port: 17472
          scheme: HTTP
        initialDelaySeconds: 10
        periodSeconds: 10
        successThreshold: 1
        timeoutSeconds: 1
      resources:
        requests:
          cpu: 50m
          memory: 64Mi
      securityContext:
        allowPrivilegeEscalation: false
        capabilities:
          drop:
          - ALL
        readOnlyRootFilesystem: true
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: File
      volumeMounts:
      - mountPath: /tmp/k8s-webhook-server/serving-certs
        name: cert
        readOnly: true
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: kube-api-access-2nbvx
        readOnly: true
    dnsPolicy: ClusterFirst
    enableServiceLinks: true
    nodeName: chart-test-swarm-run-71-control-plane
    nodeSelector:
      kubernetes.io/os: linux
    preemptionPolicy: PreemptLowerPriority
    priority: 0
    restartPolicy: Always
    schedulerName: default-scheduler
    securityContext:
      fsGroup: 65534
      runAsNonRoot: true
      runAsUser: 65534
    serviceAccount: metallb-controller
    serviceAccountName: metallb-controller
    terminationGracePeriodSeconds: 0
    tolerations:
    - effect: NoExecute
      key: node.kubernetes.io/not-ready
      operator: Exists
      tolerationSeconds: 300
    - effect: NoExecute
      key: node.kubernetes.io/unreachable
      operator: Exists
      tolerationSeconds: 300
    volumes:
    - name: cert
      secret:
        defaultMode: 420
        secretName: metallb-webhook-cert
    - name: kube-api-access-2nbvx
      projected:
        defaultMode: 420
        sources:
        - serviceAccountToken:
            expirationSeconds: 3607
            path: token
        - configMap:
            items:
            - key: ca.crt
              path: ca.crt
            name: kube-root-ca.crt
        - downwardAPI:
            items:
            - fieldRef:
                apiVersion: v1
                fieldPath: metadata.namespace
              path: namespace
  status:
    conditions:
    - lastProbeTime: null
      lastTransitionTime: "2026-06-09T13:59:14Z"
      status: "True"
      type: PodReadyToStartContainers
    - lastProbeTime: null
      lastTransitionTime: "2026-06-09T13:59:07Z"
      status: "True"
      type: Initialized
    - lastProbeTime: null
      lastTransitionTime: "2026-06-09T13:59:27Z"
      status: "True"
      type: Ready
    - lastProbeTime: null
      lastTransitionTime: "2026-06-09T13:59:27Z"
      status: "True"
      type: ContainersReady
    - lastProbeTime: null
      lastTransitionTime: "2026-06-09T13:59:07Z"
      status: "True"
      type: PodScheduled
    containerStatuses:
    - containerID: containerd://2f985a6b0d6a237bdddf2bc7aa4d9711a29676247192151ed92381f9cc11a4df
      image: quay.io/metallb/controller:v0.16.1
      imageID: quay.io/metallb/controller@sha256:f51ab515de9ccd20dc3dccb093e48df8adddac019326c456f449e55ba91b6420
      lastState: {}
      name: controller
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2026-06-09T13:59:14Z"
    hostIP: 172.20.0.2
    hostIPs:
    - ip: 172.20.0.2
    phase: Running
    podIP: 10.244.0.5
    podIPs:
    - ip: 10.244.0.5
    qosClass: Burstable
    startTime: "2026-06-09T13:59:07Z"
- apiVersion: v1
  kind: Pod
  metadata:
    creationTimestamp: "2026-06-09T13:59:07Z"
    generateName: metallb-frr-k8s-
    labels:
      app: frr-k8s
      app.kubernetes.io/component: frr-k8s
      app.kubernetes.io/instance: metallb
      app.kubernetes.io/name: frr-k8s
      controller-revision-hash: bff4c679c
      pod-template-generation: "1"
    name: metallb-frr-k8s-qgs69
    namespace: metallb
    ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: DaemonSet
      name: metallb-frr-k8s
      uid: e744c187-ae42-406a-a7c2-a98ffdde336a
    resourceVersion: "677"
    uid: 8ea0971a-ec0e-4f85-803a-0f014eb7a94c
  spec:
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchFields:
            - key: metadata.name
              operator: In
              values:
              - chart-test-swarm-run-71-control-plane
    containers:
    - args:
      - --node-name=$(NODE_NAME)
      - --namespace=$(NAMESPACE)
      - --metrics-bind-address=0.0.0.0:9140
      - --log-level=info
      command:
      - /frr-k8s
      env:
      - name: FRR_CONFIG_FILE
        value: /etc/frr_reloader/frr.conf
      - name: FRR_RELOADER_PID_FILE
        value: /etc/frr_reloader/reloader.pid
      - name: NODE_NAME
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: spec.nodeName
      - name: NAMESPACE
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: metadata.namespace
      image: quay.io/metallb/frr-k8s:v0.0.25
      imagePullPolicy: IfNotPresent
      livenessProbe:
        failureThreshold: 3
        httpGet:
          host: 127.0.0.1
          path: /healthz
          port: 7572
          scheme: HTTP
        initialDelaySeconds: 10
        periodSeconds: 10
        successThreshold: 1
        timeoutSeconds: 1
      name: controller
      ports:
      - containerPort: 9140
        hostPort: 9140
        name: metricshttps
        protocol: TCP
      readinessProbe:
        failureThreshold: 3
        httpGet:
          host: 127.0.0.1
          path: /readyz
          port: 7572
          scheme: HTTP
        initialDelaySeconds: 10
        periodSeconds: 10
        successThreshold: 1
        timeoutSeconds: 1
      resources: {}
      securityContext:
        allowPrivilegeEscalation: false
        capabilities:
          add:
          - NET_RAW
          drop:
          - ALL
        readOnlyRootFilesystem: true
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: File
      volumeMounts:
      - mountPath: /etc/frr_reloader
        name: reloader
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: kube-api-access-qwkpz
        readOnly: true
    - command:
      - /bin/sh
      - -c
      - /sbin/tini -- /usr/lib/frr/docker-start
      env:
      - name: TINI_SUBREAPER
        value: "true"
      image: quay.io/frrouting/frr:10.4.3
      imagePullPolicy: IfNotPresent
      livenessProbe:
        failureThreshold: 3
        httpGet:
          path: /livez
          port: 9141
          scheme: HTTPS
        periodSeconds: 10
        successThreshold: 1
        timeoutSeconds: 1
      name: frr
      resources: {}
      securityContext:
        allowPrivilegeEscalation: false
        capabilities:
          add:
          - NET_ADMIN
          - NET_RAW
          - SYS_ADMIN
          - NET_BIND_SERVICE
        readOnlyRootFilesystem: true
      startupProbe:
        failureThreshold: 30
        httpGet:
          path: /livez
          port: 9141
          scheme: HTTPS
        periodSeconds: 5
        successThreshold: 1
        timeoutSeconds: 1
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: File
      volumeMounts:
      - mountPath: /var/run/frr
        name: frr-sockets
      - mountPath: /etc/frr
        name: frr-conf
      - mountPath: /var/lib/frr
        name: frr-lib
      - mountPath: /var/tmp/frr
        name: frr-tmp
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: kube-api-access-qwkpz
        readOnly: true
    - command:
      - /etc/frr_reloader/frr-reloader.sh
      image: quay.io/frrouting/frr:10.4.3
      imagePullPolicy: IfNotPresent
      name: reloader
      resources: {}
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: File
      volumeMounts:
      - mountPath: /var/run/frr
        name: frr-sockets
      - mountPath: /etc/frr
        name: frr-conf
      - mountPath: /etc/frr_reloader
        name: reloader
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: kube-api-access-qwkpz
        readOnly: true
    - args:
      - --metrics-port=9141
      - --metrics-bind-address=0.0.0.0
      command:
      - /etc/frr_metrics/frr-metrics
      image: quay.io/frrouting/frr:10.4.3
      imagePullPolicy: IfNotPresent
      name: frr-metrics
      ports:
      - containerPort: 9141
        hostPort: 9141
        name: frrmetricshttps
        protocol: TCP
      resources: {}
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: File
      volumeMounts:
      - mountPath: /var/run/frr
        name: frr-sockets
      - mountPath: /etc/frr
        name: frr-conf
      - mountPath: /etc/frr_metrics
        name: metrics
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: kube-api-access-qwkpz
        readOnly: true
    - args:
      - --node-name=$(NODE_NAME)
      - --namespace=$(NAMESPACE)
      - --pod-name=$(POD_NAME)
      - --log-level=info
      - --poll-interval=2m
      command:
      - /etc/frr_status/frr-status
      env:
      - name: NODE_NAME
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: spec.nodeName
      - name: NAMESPACE
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: metadata.namespace
      - name: POD_NAME
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: metadata.name
      image: quay.io/frrouting/frr:10.4.3
      imagePullPolicy: IfNotPresent
      name: frr-status
      resources: {}
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: File
      volumeMounts:
      - mountPath: /var/run/frr
        name: frr-sockets
      - mountPath: /etc/frr
        name: frr-conf
      - mountPath: /etc/frr_status
        name: frr-status
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: kube-api-access-qwkpz
        readOnly: true
    dnsPolicy: ClusterFirst
    enableServiceLinks: true
    hostNetwork: true
    initContainers:
    - command:
      - /bin/sh
      - -c
      - cp -rLf /tmp/frr/* /etc/frr/
      image: quay.io/frrouting/frr:10.4.3
      imagePullPolicy: IfNotPresent
      name: cp-frr-files
      resources: {}
      securityContext:
        runAsGroup: 101
        runAsUser: 100
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: File
      volumeMounts:
      - mountPath: /tmp/frr
        name: frr-startup
      - mountPath: /etc/frr
        name: frr-conf
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: kube-api-access-qwkpz
        readOnly: true
    - command:
      - /bin/sh
      - -c
      - cp -f /frr-reloader.sh /etc/frr_reloader/
      image: quay.io/metallb/frr-k8s:v0.0.25
      imagePullPolicy: IfNotPresent
      name: cp-reloader
      resources: {}
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: File
      volumeMounts:
      - mountPath: /etc/frr_reloader
        name: reloader
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: kube-api-access-qwkpz
        readOnly: true
    - command:
      - /bin/sh
      - -c
      - cp -f /frr-metrics /etc/frr_metrics/
      image: quay.io/metallb/frr-k8s:v0.0.25
      imagePullPolicy: IfNotPresent
      name: cp-metrics
      resources: {}
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: File
      volumeMounts:
      - mountPath: /etc/frr_metrics
        name: metrics
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: kube-api-access-qwkpz
        readOnly: true
    - command:
      - /bin/sh
      - -c
      - cp -f /frr-status /etc/frr_status/
      image: quay.io/metallb/frr-k8s:v0.0.25
      imagePullPolicy: IfNotPresent
      name: cp-frr-status
      resources: {}
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: File
      volumeMounts:
      - mountPath: /etc/frr_status
        name: frr-status
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: kube-api-access-qwkpz
        readOnly: true
    nodeName: chart-test-swarm-run-71-control-plane
    nodeSelector:
      kubernetes.io/os: linux
    preemptionPolicy: PreemptLowerPriority
    priority: 0
    restartPolicy: Always
    schedulerName: default-scheduler
    securityContext: {}
    serviceAccount: metallb-frr-k8s-controller
    serviceAccountName: metallb-frr-k8s-controller
    shareProcessNamespace: true
    terminationGracePeriodSeconds: 0
    tolerations:
    - effect: NoSchedule
      key: node-role.kubernetes.io/master
      operator: Exists
    - effect: NoSchedule
      key: node-role.kubernetes.io/control-plane
      operator: Exists
    - effect: NoExecute
      key: node.kubernetes.io/not-ready
      operator: Exists
    - effect: NoExecute
      key: node.kubernetes.io/unreachable
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/disk-pressure
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/memory-pressure
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/pid-pressure
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/unschedulable
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/network-unavailable
      operator: Exists
    volumes:
    - emptyDir: {}
      name: frr-sockets
    - configMap:
        defaultMode: 420
        name: metallb-frr-k8s-frr-startup
      name: frr-startup
    - emptyDir: {}
      name: frr-conf
    - emptyDir: {}
      name: reloader
    - emptyDir: {}
      name: metrics
    - emptyDir: {}
      name: frr-status
    - emptyDir: {}
      name: frr-lib
    - emptyDir: {}
      name: frr-tmp
    - name: kube-api-access-qwkpz
      projected:
        defaultMode: 420
        sources:
        - serviceAccountToken:
            expirationSeconds: 3607
            path: token
        - configMap:
            items:
            - key: ca.crt
              path: ca.crt
            name: kube-root-ca.crt
        - downwardAPI:
            items:
            - fieldRef:
                apiVersion: v1
                fieldPath: metadata.namespace
              path: namespace
  status:
    conditions:
    - lastProbeTime: null
      lastTransitionTime: "2026-06-09T13:59:12Z"
      status: "True"
      type: PodReadyToStartContainers
    - lastProbeTime: null
      lastTransitionTime: "2026-06-09T13:59:20Z"
      status: "True"
      type: Initialized
    - lastProbeTime: null
      lastTransitionTime: "2026-06-09T13:59:37Z"
      status: "True"
      type: Ready
    - lastProbeTime: null
      lastTransitionTime: "2026-06-09T13:59:37Z"
      status: "True"
      type: ContainersReady
    - lastProbeTime: null
      lastTransitionTime: "2026-06-09T13:59:07Z"
      status: "True"
      type: PodScheduled
    containerStatuses:
    - containerID: containerd://1aa6dea9d4c7546110694c009093f345c8f5738fdbe28950ae86df9adb459889
      image: quay.io/metallb/frr-k8s:v0.0.25
      imageID: quay.io/metallb/frr-k8s@sha256:1cb06fb2d5538c9f9b20d3adf00da8d1e6cb0166bc15df8add0d9efe578641a4
      lastState: {}
      name: controller
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2026-06-09T13:59:20Z"
    - containerID: containerd://7d8d7fd764d248d32df448d16afd35b29f8bb68cc3c58295d1c8d21f18f4f949
      image: quay.io/frrouting/frr:10.4.3
      imageID: quay.io/frrouting/frr@sha256:8745af1f9bbbc26ab11d99ccdf35e07aa3427a199749bef0cd6bb5132bb130df
      lastState: {}
      name: frr
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2026-06-09T13:59:20Z"
    - containerID: containerd://197948a966c8cd1930e37d6868b4c31b12957d2d68948c634f1967ae7e4859b5
      image: quay.io/frrouting/frr:10.4.3
      imageID: quay.io/frrouting/frr@sha256:8745af1f9bbbc26ab11d99ccdf35e07aa3427a199749bef0cd6bb5132bb130df
      lastState: {}
      name: frr-metrics
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2026-06-09T13:59:20Z"
    - containerID: containerd://fe7643f09b14c206bb77ecc81dce7d1324cbf33646af51b845be383c76b0d07a
      image: quay.io/frrouting/frr:10.4.3
      imageID: quay.io/frrouting/frr@sha256:8745af1f9bbbc26ab11d99ccdf35e07aa3427a199749bef0cd6bb5132bb130df
      lastState: {}
      name: frr-status
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2026-06-09T13:59:21Z"
    - containerID: containerd://03c9837373b895acf7d8ae803257c3ac5356de0a5d1c11a078f663feaf141aad
      image: quay.io/frrouting/frr:10.4.3
      imageID: quay.io/frrouting/frr@sha256:8745af1f9bbbc26ab11d99ccdf35e07aa3427a199749bef0cd6bb5132bb130df
      lastState: {}
      name: reloader
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2026-06-09T13:59:20Z"
    hostIP: 172.20.0.2
    hostIPs:
    - ip: 172.20.0.2
    initContainerStatuses:
    - containerID: containerd://de9bcd63f7f278a598516ea00bb4f9b0c1fb669c26d8f49021791d8137676565
      image: quay.io/frrouting/frr:10.4.3
      imageID: quay.io/frrouting/frr@sha256:8745af1f9bbbc26ab11d99ccdf35e07aa3427a199749bef0cd6bb5132bb130df
      lastState: {}
      name: cp-frr-files
      ready: true
      restartCount: 0
      started: false
      state:
        terminated:
          containerID: containerd://de9bcd63f7f278a598516ea00bb4f9b0c1fb669c26d8f49021791d8137676565
          exitCode: 0
          finishedAt: "2026-06-09T13:59:12Z"
          reason: Completed
          startedAt: "2026-06-09T13:59:12Z"
    - containerID: containerd://ece8479e01fd5958fdf2405966dcee82007f4cf43da887fe80d8d8fb4393a27b
      image: quay.io/metallb/frr-k8s:v0.0.25
      imageID: quay.io/metallb/frr-k8s@sha256:1cb06fb2d5538c9f9b20d3adf00da8d1e6cb0166bc15df8add0d9efe578641a4
      lastState: {}
      name: cp-reloader
      ready: true
      restartCount: 0
      started: false
      state:
        terminated:
          containerID: containerd://ece8479e01fd5958fdf2405966dcee82007f4cf43da887fe80d8d8fb4393a27b
          exitCode: 0
          finishedAt: "2026-06-09T13:59:18Z"
          reason: Completed
          startedAt: "2026-06-09T13:59:18Z"
    - containerID: containerd://a6f60a246cb4582d4786b8fc4e9fcbe7d2101c29111a9b43e3ca6150dd142093
      image: quay.io/metallb/frr-k8s:v0.0.25
      imageID: quay.io/metallb/frr-k8s@sha256:1cb06fb2d5538c9f9b20d3adf00da8d1e6cb0166bc15df8add0d9efe578641a4
      lastState: {}
      name: cp-metrics
      ready: true
      restartCount: 0
      started: false
      state:
        terminated:
          containerID: containerd://a6f60a246cb4582d4786b8fc4e9fcbe7d2101c29111a9b43e3ca6150dd142093
          exitCode: 0
          finishedAt: "2026-06-09T13:59:18Z"
          reason: Completed
          startedAt: "2026-06-09T13:59:18Z"
    - containerID: containerd://0ed3d39a54476f9f9c3f44e25aa23a18c884f6d1b59c23445262bc8a6c221ef6
      image: quay.io/metallb/frr-k8s:v0.0.25
      imageID: quay.io/metallb/frr-k8s@sha256:1cb06fb2d5538c9f9b20d3adf00da8d1e6cb0166bc15df8add0d9efe578641a4
      lastState: {}
      name: cp-frr-status
      ready: true
      restartCount: 0
      started: false
      state:
        terminated:
          containerID: containerd://0ed3d39a54476f9f9c3f44e25aa23a18c884f6d1b59c23445262bc8a6c221ef6
          exitCode: 0
          finishedAt: "2026-06-09T13:59:19Z"
          reason: Completed
          startedAt: "2026-06-09T13:59:19Z"
    phase: Running
    podIP: 172.20.0.2
    podIPs:
    - ip: 172.20.0.2
    qosClass: BestEffort
    startTime: "2026-06-09T13:59:07Z"
- apiVersion: v1
  kind: Pod
  metadata:
    annotations:
      kubectl.kubernetes.io/default-container: frr-k8s-statuscleaner
    creationTimestamp: "2026-06-09T13:59:07Z"
    generateName: metallb-frr-k8s-statuscleaner-67874f5d9f-
    labels:
      app.kubernetes.io/component: statuscleaner
      pod-template-hash: 67874f5d9f
    name: metallb-frr-k8s-statuscleaner-67874f5d9f-p2mdc
    namespace: metallb
    ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: ReplicaSet
      name: metallb-frr-k8s-statuscleaner-67874f5d9f
      uid: 936c5774-40ae-474e-b48a-84fcf5d11434
    resourceVersion: "678"
    uid: 28af8371-1703-41d8-91f5-18decda3f9ec
  spec:
    containers:
    - args:
      - --webhook-port=19443
      - --log-level=info
      - --namespace=$(NAMESPACE)
      command:
      - /statuscleaner
      env:
      - name: NAMESPACE
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: metadata.namespace
      image: quay.io/metallb/frr-k8s:v0.0.25
      imagePullPolicy: IfNotPresent
      livenessProbe:
        failureThreshold: 3
        httpGet:
          path: /healthz
          port: webhook
          scheme: HTTPS
        initialDelaySeconds: 10
        periodSeconds: 10
        successThreshold: 1
        timeoutSeconds: 1
      name: frr-k8s-statuscleaner
      ports:
      - containerPort: 19443
        hostPort: 19443
        name: webhook
        protocol: TCP
      readinessProbe:
        failureThreshold: 3
        httpGet:
          path: /healthz
          port: webhook
          scheme: HTTPS
        initialDelaySeconds: 10
        periodSeconds: 10
        successThreshold: 1
        timeoutSeconds: 1
      resources: {}
      securityContext:
        allowPrivilegeEscalation: false
        capabilities:
          drop:
          - ALL
        readOnlyRootFilesystem: true
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: File
      volumeMounts:
      - mountPath: /tmp/k8s-webhook-server/serving-certs
        name: cert
        readOnly: true
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: kube-api-access-5jgzs
        readOnly: true
    dnsPolicy: ClusterFirst
    enableServiceLinks: true
    hostNetwork: true
    nodeName: chart-test-swarm-run-71-control-plane
    preemptionPolicy: PreemptLowerPriority
    priority: 0
    restartPolicy: Always
    schedulerName: default-scheduler
    securityContext: {}
    serviceAccount: metallb-frr-k8s-controller
    serviceAccountName: metallb-frr-k8s-controller
    terminationGracePeriodSeconds: 10
    tolerations:
    - effect: NoSchedule
      key: node-role.kubernetes.io/master
      operator: Exists
    - effect: NoSchedule
      key: node-role.kubernetes.io/control-plane
      operator: Exists
    - effect: NoExecute
      key: node.kubernetes.io/not-ready
      operator: Exists
      tolerationSeconds: 300
    - effect: NoExecute
      key: node.kubernetes.io/unreachable
      operator: Exists
      tolerationSeconds: 300
    volumes:
    - name: cert
      secret:
        defaultMode: 420
        secretName: frr-k8s-webhook-server-cert
    - name: kube-api-access-5jgzs
      projected:
        defaultMode: 420
        sources:
        - serviceAccountToken:
            expirationSeconds: 3607
            path: token
        - configMap:
            items:
            - key: ca.crt
              path: ca.crt
            name: kube-root-ca.crt
        - downwardAPI:
            items:
            - fieldRef:
                apiVersion: v1
                fieldPath: metadata.namespace
              path: namespace
  status:
    conditions:
    - lastProbeTime: null
      lastTransitionTime: "2026-06-09T13:59:18Z"
      status: "True"
      type: PodReadyToStartContainers
    - lastProbeTime: null
      lastTransitionTime: "2026-06-09T13:59:07Z"
      status: "True"
      type: Initialized
    - lastProbeTime: null
      lastTransitionTime: "2026-06-09T13:59:37Z"
      status: "True"
      type: Ready
    - lastProbeTime: null
      lastTransitionTime: "2026-06-09T13:59:37Z"
      status: "True"
      type: ContainersReady
    - lastProbeTime: null
      lastTransitionTime: "2026-06-09T13:59:07Z"
      status: "True"
      type: PodScheduled
    containerStatuses:
    - containerID: containerd://f4197c6d57f847835d632044a8f1a12622f274581b24ce81638a73f122ef7279
      image: quay.io/metallb/frr-k8s:v0.0.25
      imageID: quay.io/metallb/frr-k8s@sha256:1cb06fb2d5538c9f9b20d3adf00da8d1e6cb0166bc15df8add0d9efe578641a4
      lastState: {}
      name: frr-k8s-statuscleaner
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2026-06-09T13:59:18Z"
    hostIP: 172.20.0.2
    hostIPs:
    - ip: 172.20.0.2
    phase: Running
    podIP: 172.20.0.2
    podIPs:
    - ip: 172.20.0.2
    qosClass: BestEffort
    startTime: "2026-06-09T13:59:07Z"
- apiVersion: v1
  kind: Pod
  metadata:
    creationTimestamp: "2026-06-09T13:59:07Z"
    generateName: metallb-speaker-
    labels:
      app.kubernetes.io/component: speaker
      app.kubernetes.io/instance: metallb
      app.kubernetes.io/name: metallb
      controller-revision-hash: 78bd86984c
      pod-template-generation: "1"
    name: metallb-speaker-pxsmw
    namespace: metallb
    ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: DaemonSet
      name: metallb-speaker
      uid: be13e270-a27f-4c06-be31-9a5a5845e6c5
    resourceVersion: "671"
    uid: bed9491d-53dc-4b69-adac-907406023a3e
  spec:
    affinity:
      nodeAffinity:
        requiredDuringSchedulingIgnoredDuringExecution:
          nodeSelectorTerms:
          - matchFields:
            - key: metadata.name
              operator: In
              values:
              - chart-test-swarm-run-71-control-plane
    containers:
    - args:
      - --port=9120
      - --log-level=info
      env:
      - name: METALLB_NODE_NAME
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: spec.nodeName
      - name: METALLB_HOST
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: status.hostIP
      - name: METALLB_ML_BIND_ADDR
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: status.podIP
      - name: METALLB_ML_LABELS
        value: app.kubernetes.io/name=metallb,app.kubernetes.io/component=speaker
      - name: METALLB_ML_BIND_PORT
        value: "7946"
      - name: METALLB_ML_SECRET_KEY_PATH
        value: /etc/ml_secret_key
      - name: METALLB_BGP_TYPE
        value: frr-k8s
      - name: METALLB_POD_NAME
        valueFrom:
          fieldRef:
            apiVersion: v1
            fieldPath: metadata.name
      image: quay.io/metallb/speaker:v0.16.1
      imagePullPolicy: IfNotPresent
      livenessProbe:
        failureThreshold: 3
        httpGet:
          host: 127.0.0.1
          path: /healthz
          port: 17472
          scheme: HTTP
        initialDelaySeconds: 10
        periodSeconds: 10
        successThreshold: 1
        timeoutSeconds: 1
      name: speaker
      ports:
      - containerPort: 9120
        hostPort: 9120
        name: metricshttps
        protocol: TCP
      - containerPort: 7946
        hostPort: 7946
        name: memberlist-tcp
        protocol: TCP
      - containerPort: 7946
        hostPort: 7946
        name: memberlist-udp
        protocol: UDP
      readinessProbe:
        failureThreshold: 3
        httpGet:
          host: 127.0.0.1
          path: /readyz
          port: 17472
          scheme: HTTP
        initialDelaySeconds: 10
        periodSeconds: 10
        successThreshold: 1
        timeoutSeconds: 1
      resources:
        requests:
          cpu: 50m
          memory: 64Mi
      securityContext:
        allowPrivilegeEscalation: false
        capabilities:
          add:
          - NET_RAW
          drop:
          - ALL
        readOnlyRootFilesystem: true
      terminationMessagePath: /dev/termination-log
      terminationMessagePolicy: File
      volumeMounts:
      - mountPath: /etc/metallb/memberlist
        name: memberlist-config
        readOnly: true
      - mountPath: /etc/ml_secret_key
        name: memberlist
      - mountPath: /etc/metallb
        name: metallb-excludel2
      - mountPath: /var/run/secrets/kubernetes.io/serviceaccount
        name: kube-api-access-5fwj9
        readOnly: true
    dnsPolicy: ClusterFirst
    enableServiceLinks: true
    hostNetwork: true
    nodeName: chart-test-swarm-run-71-control-plane
    nodeSelector:
      kubernetes.io/os: linux
    preemptionPolicy: PreemptLowerPriority
    priority: 0
    restartPolicy: Always
    schedulerName: default-scheduler
    securityContext: {}
    serviceAccount: metallb-speaker
    serviceAccountName: metallb-speaker
    terminationGracePeriodSeconds: 0
    tolerations:
    - effect: NoSchedule
      key: node-role.kubernetes.io/master
      operator: Exists
    - effect: NoSchedule
      key: node-role.kubernetes.io/control-plane
      operator: Exists
    - effect: NoExecute
      key: node.kubernetes.io/not-ready
      operator: Exists
    - effect: NoExecute
      key: node.kubernetes.io/unreachable
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/disk-pressure
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/memory-pressure
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/pid-pressure
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/unschedulable
      operator: Exists
    - effect: NoSchedule
      key: node.kubernetes.io/network-unavailable
      operator: Exists
    volumes:
    - name: memberlist
      secret:
        defaultMode: 420
        secretName: metallb-memberlist
    - configMap:
        defaultMode: 256
        name: metallb-excludel2
      name: metallb-excludel2
    - configMap:
        defaultMode: 420
        name: metallb-memberlist-config
        optional: true
      name: memberlist-config
    - name: kube-api-access-5fwj9
      projected:
        defaultMode: 420
        sources:
        - serviceAccountToken:
            expirationSeconds: 3607
            path: token
        - configMap:
            items:
            - key: ca.crt
              path: ca.crt
            name: kube-root-ca.crt
        - downwardAPI:
            items:
            - fieldRef:
                apiVersion: v1
                fieldPath: metadata.namespace
              path: namespace
  status:
    conditions:
    - lastProbeTime: null
      lastTransitionTime: "2026-06-09T13:59:21Z"
      status: "True"
      type: PodReadyToStartContainers
    - lastProbeTime: null
      lastTransitionTime: "2026-06-09T13:59:07Z"
      status: "True"
      type: Initialized
    - lastProbeTime: null
      lastTransitionTime: "2026-06-09T13:59:35Z"
      status: "True"
      type: Ready
    - lastProbeTime: null
      lastTransitionTime: "2026-06-09T13:59:35Z"
      status: "True"
      type: ContainersReady
    - lastProbeTime: null
      lastTransitionTime: "2026-06-09T13:59:07Z"
      status: "True"
      type: PodScheduled
    containerStatuses:
    - containerID: containerd://fe3ed075447338060f6a4e0b9e51721c83b0bca9d5d0d2b096145470987bd0c2
      image: quay.io/metallb/speaker:v0.16.1
      imageID: quay.io/metallb/speaker@sha256:16561e96531e1852d5c229ad7fae6e994dcfa983ff7f4de6b6208b34a4e2ddbc
      lastState: {}
      name: speaker
      ready: true
      restartCount: 0
      started: true
      state:
        running:
          startedAt: "2026-06-09T13:59:21Z"
    hostIP: 172.20.0.2
    hostIPs:
    - ip: 172.20.0.2
    phase: Running
    podIP: 172.20.0.2
    podIPs:
    - ip: 172.20.0.2
    qosClass: Burstable
    startTime: "2026-06-09T13:59:07Z"
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      meta.helm.sh/release-name: metallb
      meta.helm.sh/release-namespace: metallb
    creationTimestamp: "2026-06-09T13:59:07Z"
    labels:
      app.kubernetes.io/managed-by: Helm
    name: frr-k8s-webhook-service
    namespace: metallb
    resourceVersion: "504"
    uid: c815337a-098e-412c-b471-6349cd5d0263
  spec:
    clusterIP: 10.96.11.71
    clusterIPs:
    - 10.96.11.71
    internalTrafficPolicy: Cluster
    ipFamilies:
    - IPv4
    ipFamilyPolicy: SingleStack
    ports:
    - port: 443
      protocol: TCP
      targetPort: webhook
    selector:
      app.kubernetes.io/component: statuscleaner
    sessionAffinity: None
    type: ClusterIP
  status:
    loadBalancer: {}
- apiVersion: v1
  kind: Service
  metadata:
    annotations:
      meta.helm.sh/release-name: metallb
      meta.helm.sh/release-namespace: metallb
    creationTimestamp: "2026-06-09T13:59:07Z"
    labels:
      app.kubernetes.io/instance: metallb
      app.kubernetes.io/managed-by: Helm
      app.kubernetes.io/name: metallb
      app.kubernetes.io/version: v0.16.1
      helm.sh/chart: metallb-0.16.1
    name: metallb-webhook-service
    namespace: metallb
    resourceVersion: "500"
    uid: a0964da2-d102-454d-8b33-78960e206906
  spec:
    clusterIP: 10.96.144.46
    clusterIPs:
    - 10.96.144.46
    internalTrafficPolicy: Cluster
    ipFamilies:
    - IPv4
    ipFamilyPolicy: SingleStack
    ports:
    - port: 443
      protocol: TCP
      targetPort: 9443
    selector:
      app.kubernetes.io/component: controller
      app.kubernetes.io/instance: metallb
      app.kubernetes.io/name: metallb
    sessionAffinity: None
    type: ClusterIP
  status:
    loadBalancer: {}
- apiVersion: apps/v1
  kind: DaemonSet
  metadata:
    annotations:
      deprecated.daemonset.template.generation: "1"
      meta.helm.sh/release-name: metallb
      meta.helm.sh/release-namespace: metallb
    creationTimestamp: "2026-06-09T13:59:07Z"
    generation: 1
    labels:
      app: frr-k8s
      app.kubernetes.io/component: frr-k8s
      app.kubernetes.io/instance: metallb
      app.kubernetes.io/managed-by: Helm
      app.kubernetes.io/name: frr-k8s
      app.kubernetes.io/version: v0.0.25
      helm.sh/chart: frr-k8s-0.0.25
    name: metallb-frr-k8s
    namespace: metallb
    resourceVersion: "679"
    uid: e744c187-ae42-406a-a7c2-a98ffdde336a
  spec:
    revisionHistoryLimit: 10
    selector:
      matchLabels:
        app.kubernetes.io/component: frr-k8s
        app.kubernetes.io/instance: metallb
        app.kubernetes.io/name: frr-k8s
    template:
      metadata:
        creationTimestamp: null
        labels:
          app: frr-k8s
          app.kubernetes.io/component: frr-k8s
          app.kubernetes.io/instance: metallb
          app.kubernetes.io/name: frr-k8s
      spec:
        containers:
        - args:
          - --node-name=$(NODE_NAME)
          - --namespace=$(NAMESPACE)
          - --metrics-bind-address=0.0.0.0:9140
          - --log-level=info
          command:
          - /frr-k8s
          env:
          - name: FRR_CONFIG_FILE
            value: /etc/frr_reloader/frr.conf
          - name: FRR_RELOADER_PID_FILE
            value: /etc/frr_reloader/reloader.pid
          - name: NODE_NAME
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: spec.nodeName
          - name: NAMESPACE
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: metadata.namespace
          image: quay.io/metallb/frr-k8s:v0.0.25
          imagePullPolicy: IfNotPresent
          livenessProbe:
            failureThreshold: 3
            httpGet:
              host: 127.0.0.1
              path: /healthz
              port: 7572
              scheme: HTTP
            initialDelaySeconds: 10
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          name: controller
          ports:
          - containerPort: 9140
            name: metricshttps
            protocol: TCP
          readinessProbe:
            failureThreshold: 3
            httpGet:
              host: 127.0.0.1
              path: /readyz
              port: 7572
              scheme: HTTP
            initialDelaySeconds: 10
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          resources: {}
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              add:
              - NET_RAW
              drop:
              - ALL
            readOnlyRootFilesystem: true
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
          - mountPath: /etc/frr_reloader
            name: reloader
        - command:
          - /bin/sh
          - -c
          - /sbin/tini -- /usr/lib/frr/docker-start
          env:
          - name: TINI_SUBREAPER
            value: "true"
          image: quay.io/frrouting/frr:10.4.3
          imagePullPolicy: IfNotPresent
          livenessProbe:
            failureThreshold: 3
            httpGet:
              path: /livez
              port: 9141
              scheme: HTTPS
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          name: frr
          resources: {}
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              add:
              - NET_ADMIN
              - NET_RAW
              - SYS_ADMIN
              - NET_BIND_SERVICE
            readOnlyRootFilesystem: true
          startupProbe:
            failureThreshold: 30
            httpGet:
              path: /livez
              port: 9141
              scheme: HTTPS
            periodSeconds: 5
            successThreshold: 1
            timeoutSeconds: 1
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
          - mountPath: /var/run/frr
            name: frr-sockets
          - mountPath: /etc/frr
            name: frr-conf
          - mountPath: /var/lib/frr
            name: frr-lib
          - mountPath: /var/tmp/frr
            name: frr-tmp
        - command:
          - /etc/frr_reloader/frr-reloader.sh
          image: quay.io/frrouting/frr:10.4.3
          imagePullPolicy: IfNotPresent
          name: reloader
          resources: {}
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
          - mountPath: /var/run/frr
            name: frr-sockets
          - mountPath: /etc/frr
            name: frr-conf
          - mountPath: /etc/frr_reloader
            name: reloader
        - args:
          - --metrics-port=9141
          - --metrics-bind-address=0.0.0.0
          command:
          - /etc/frr_metrics/frr-metrics
          image: quay.io/frrouting/frr:10.4.3
          imagePullPolicy: IfNotPresent
          name: frr-metrics
          ports:
          - containerPort: 9141
            name: frrmetricshttps
            protocol: TCP
          resources: {}
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
          - mountPath: /var/run/frr
            name: frr-sockets
          - mountPath: /etc/frr
            name: frr-conf
          - mountPath: /etc/frr_metrics
            name: metrics
        - args:
          - --node-name=$(NODE_NAME)
          - --namespace=$(NAMESPACE)
          - --pod-name=$(POD_NAME)
          - --log-level=info
          - --poll-interval=2m
          command:
          - /etc/frr_status/frr-status
          env:
          - name: NODE_NAME
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: spec.nodeName
          - name: NAMESPACE
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: metadata.namespace
          - name: POD_NAME
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: metadata.name
          image: quay.io/frrouting/frr:10.4.3
          imagePullPolicy: IfNotPresent
          name: frr-status
          resources: {}
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
          - mountPath: /var/run/frr
            name: frr-sockets
          - mountPath: /etc/frr
            name: frr-conf
          - mountPath: /etc/frr_status
            name: frr-status
        dnsPolicy: ClusterFirst
        hostNetwork: true
        initContainers:
        - command:
          - /bin/sh
          - -c
          - cp -rLf /tmp/frr/* /etc/frr/
          image: quay.io/frrouting/frr:10.4.3
          imagePullPolicy: IfNotPresent
          name: cp-frr-files
          resources: {}
          securityContext:
            runAsGroup: 101
            runAsUser: 100
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
          - mountPath: /tmp/frr
            name: frr-startup
          - mountPath: /etc/frr
            name: frr-conf
        - command:
          - /bin/sh
          - -c
          - cp -f /frr-reloader.sh /etc/frr_reloader/
          image: quay.io/metallb/frr-k8s:v0.0.25
          imagePullPolicy: IfNotPresent
          name: cp-reloader
          resources: {}
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
          - mountPath: /etc/frr_reloader
            name: reloader
        - command:
          - /bin/sh
          - -c
          - cp -f /frr-metrics /etc/frr_metrics/
          image: quay.io/metallb/frr-k8s:v0.0.25
          imagePullPolicy: IfNotPresent
          name: cp-metrics
          resources: {}
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
          - mountPath: /etc/frr_metrics
            name: metrics
        - command:
          - /bin/sh
          - -c
          - cp -f /frr-status /etc/frr_status/
          image: quay.io/metallb/frr-k8s:v0.0.25
          imagePullPolicy: IfNotPresent
          name: cp-frr-status
          resources: {}
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
          - mountPath: /etc/frr_status
            name: frr-status
        nodeSelector:
          kubernetes.io/os: linux
        restartPolicy: Always
        schedulerName: default-scheduler
        securityContext: {}
        serviceAccount: metallb-frr-k8s-controller
        serviceAccountName: metallb-frr-k8s-controller
        shareProcessNamespace: true
        terminationGracePeriodSeconds: 0
        tolerations:
        - effect: NoSchedule
          key: node-role.kubernetes.io/master
          operator: Exists
        - effect: NoSchedule
          key: node-role.kubernetes.io/control-plane
          operator: Exists
        volumes:
        - emptyDir: {}
          name: frr-sockets
        - configMap:
            defaultMode: 420
            name: metallb-frr-k8s-frr-startup
          name: frr-startup
        - emptyDir: {}
          name: frr-conf
        - emptyDir: {}
          name: reloader
        - emptyDir: {}
          name: metrics
        - emptyDir: {}
          name: frr-status
        - emptyDir: {}
          name: frr-lib
        - emptyDir: {}
          name: frr-tmp
    updateStrategy:
      rollingUpdate:
        maxSurge: 0
        maxUnavailable: 1
      type: RollingUpdate
  status:
    currentNumberScheduled: 1
    desiredNumberScheduled: 1
    numberAvailable: 1
    numberMisscheduled: 0
    numberReady: 1
    observedGeneration: 1
    updatedNumberScheduled: 1
- apiVersion: apps/v1
  kind: DaemonSet
  metadata:
    annotations:
      deprecated.daemonset.template.generation: "1"
      meta.helm.sh/release-name: metallb
      meta.helm.sh/release-namespace: metallb
    creationTimestamp: "2026-06-09T13:59:07Z"
    generation: 1
    labels:
      app.kubernetes.io/component: speaker
      app.kubernetes.io/instance: metallb
      app.kubernetes.io/managed-by: Helm
      app.kubernetes.io/name: metallb
      app.kubernetes.io/version: v0.16.1
      helm.sh/chart: metallb-0.16.1
    name: metallb-speaker
    namespace: metallb
    resourceVersion: "672"
    uid: be13e270-a27f-4c06-be31-9a5a5845e6c5
  spec:
    revisionHistoryLimit: 10
    selector:
      matchLabels:
        app.kubernetes.io/component: speaker
        app.kubernetes.io/instance: metallb
        app.kubernetes.io/name: metallb
    template:
      metadata:
        creationTimestamp: null
        labels:
          app.kubernetes.io/component: speaker
          app.kubernetes.io/instance: metallb
          app.kubernetes.io/name: metallb
      spec:
        containers:
        - args:
          - --port=9120
          - --log-level=info
          env:
          - name: METALLB_NODE_NAME
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: spec.nodeName
          - name: METALLB_HOST
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: status.hostIP
          - name: METALLB_ML_BIND_ADDR
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: status.podIP
          - name: METALLB_ML_LABELS
            value: app.kubernetes.io/name=metallb,app.kubernetes.io/component=speaker
          - name: METALLB_ML_BIND_PORT
            value: "7946"
          - name: METALLB_ML_SECRET_KEY_PATH
            value: /etc/ml_secret_key
          - name: METALLB_BGP_TYPE
            value: frr-k8s
          - name: METALLB_POD_NAME
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: metadata.name
          image: quay.io/metallb/speaker:v0.16.1
          imagePullPolicy: IfNotPresent
          livenessProbe:
            failureThreshold: 3
            httpGet:
              host: 127.0.0.1
              path: /healthz
              port: 17472
              scheme: HTTP
            initialDelaySeconds: 10
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          name: speaker
          ports:
          - containerPort: 9120
            name: metricshttps
            protocol: TCP
          - containerPort: 7946
            name: memberlist-tcp
            protocol: TCP
          - containerPort: 7946
            name: memberlist-udp
            protocol: UDP
          readinessProbe:
            failureThreshold: 3
            httpGet:
              host: 127.0.0.1
              path: /readyz
              port: 17472
              scheme: HTTP
            initialDelaySeconds: 10
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          resources:
            requests:
              cpu: 50m
              memory: 64Mi
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              add:
              - NET_RAW
              drop:
              - ALL
            readOnlyRootFilesystem: true
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
          - mountPath: /etc/metallb/memberlist
            name: memberlist-config
            readOnly: true
          - mountPath: /etc/ml_secret_key
            name: memberlist
          - mountPath: /etc/metallb
            name: metallb-excludel2
        dnsPolicy: ClusterFirst
        hostNetwork: true
        nodeSelector:
          kubernetes.io/os: linux
        restartPolicy: Always
        schedulerName: default-scheduler
        securityContext: {}
        serviceAccount: metallb-speaker
        serviceAccountName: metallb-speaker
        terminationGracePeriodSeconds: 0
        tolerations:
        - effect: NoSchedule
          key: node-role.kubernetes.io/master
          operator: Exists
        - effect: NoSchedule
          key: node-role.kubernetes.io/control-plane
          operator: Exists
        volumes:
        - name: memberlist
          secret:
            defaultMode: 420
            secretName: metallb-memberlist
        - configMap:
            defaultMode: 256
            name: metallb-excludel2
          name: metallb-excludel2
        - configMap:
            defaultMode: 420
            name: metallb-memberlist-config
            optional: true
          name: memberlist-config
    updateStrategy:
      rollingUpdate:
        maxSurge: 0
        maxUnavailable: 1
      type: RollingUpdate
  status:
    currentNumberScheduled: 1
    desiredNumberScheduled: 1
    numberAvailable: 1
    numberMisscheduled: 0
    numberReady: 1
    observedGeneration: 1
    updatedNumberScheduled: 1
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      deployment.kubernetes.io/revision: "1"
      meta.helm.sh/release-name: metallb
      meta.helm.sh/release-namespace: metallb
    creationTimestamp: "2026-06-09T13:59:07Z"
    generation: 1
    labels:
      app.kubernetes.io/component: controller
      app.kubernetes.io/instance: metallb
      app.kubernetes.io/managed-by: Helm
      app.kubernetes.io/name: metallb
      app.kubernetes.io/version: v0.16.1
      helm.sh/chart: metallb-0.16.1
    name: metallb-controller
    namespace: metallb
    resourceVersion: "661"
    uid: 993e3f95-6c1b-4177-831b-250266b2666b
  spec:
    progressDeadlineSeconds: 600
    replicas: 1
    revisionHistoryLimit: 10
    selector:
      matchLabels:
        app.kubernetes.io/component: controller
        app.kubernetes.io/instance: metallb
        app.kubernetes.io/name: metallb
    strategy:
      rollingUpdate:
        maxSurge: 25%
        maxUnavailable: 25%
      type: RollingUpdate
    template:
      metadata:
        creationTimestamp: null
        labels:
          app.kubernetes.io/component: controller
          app.kubernetes.io/instance: metallb
          app.kubernetes.io/name: metallb
      spec:
        containers:
        - args:
          - --port=9120
          - --log-level=info
          - --webhook-mode=enabled
          env:
          - name: METALLB_POD_NAME
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: metadata.name
          - name: METALLB_ML_SECRET_NAME
            value: metallb-memberlist
          - name: METALLB_DEPLOYMENT
            value: metallb-controller
          - name: METALLB_BGP_TYPE
            value: frr-k8s
          image: quay.io/metallb/controller:v0.16.1
          imagePullPolicy: IfNotPresent
          livenessProbe:
            failureThreshold: 3
            httpGet:
              path: /healthz
              port: 17472
              scheme: HTTP
            initialDelaySeconds: 10
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          name: controller
          ports:
          - containerPort: 9120
            name: metricshttps
            protocol: TCP
          - containerPort: 9443
            name: webhook-server
            protocol: TCP
          readinessProbe:
            failureThreshold: 3
            httpGet:
              path: /readyz
              port: 17472
              scheme: HTTP
            initialDelaySeconds: 10
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          resources:
            requests:
              cpu: 50m
              memory: 64Mi
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop:
              - ALL
            readOnlyRootFilesystem: true
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
          - mountPath: /tmp/k8s-webhook-server/serving-certs
            name: cert
            readOnly: true
        dnsPolicy: ClusterFirst
        nodeSelector:
          kubernetes.io/os: linux
        restartPolicy: Always
        schedulerName: default-scheduler
        securityContext:
          fsGroup: 65534
          runAsNonRoot: true
          runAsUser: 65534
        serviceAccount: metallb-controller
        serviceAccountName: metallb-controller
        terminationGracePeriodSeconds: 0
        volumes:
        - name: cert
          secret:
            defaultMode: 420
            secretName: metallb-webhook-cert
  status:
    availableReplicas: 1
    conditions:
    - lastTransitionTime: "2026-06-09T13:59:27Z"
      lastUpdateTime: "2026-06-09T13:59:27Z"
      message: Deployment has minimum availability.
      reason: MinimumReplicasAvailable
      status: "True"
      type: Available
    - lastTransitionTime: "2026-06-09T13:59:07Z"
      lastUpdateTime: "2026-06-09T13:59:27Z"
      message: ReplicaSet "metallb-controller-7b8b56ccdd" has successfully progressed.
      reason: NewReplicaSetAvailable
      status: "True"
      type: Progressing
    observedGeneration: 1
    readyReplicas: 1
    replicas: 1
    updatedReplicas: 1
- apiVersion: apps/v1
  kind: Deployment
  metadata:
    annotations:
      deployment.kubernetes.io/revision: "1"
      meta.helm.sh/release-name: metallb
      meta.helm.sh/release-namespace: metallb
    creationTimestamp: "2026-06-09T13:59:07Z"
    generation: 1
    labels:
      app: frr-k8s
      app.kubernetes.io/component: statuscleaner
      app.kubernetes.io/instance: metallb
      app.kubernetes.io/managed-by: Helm
      app.kubernetes.io/name: frr-k8s
      app.kubernetes.io/version: v0.0.25
      helm.sh/chart: frr-k8s-0.0.25
    name: metallb-frr-k8s-statuscleaner
    namespace: metallb
    resourceVersion: "683"
    uid: 5b83c3d4-1a58-472e-a6e4-8c3c59a43732
  spec:
    progressDeadlineSeconds: 600
    replicas: 1
    revisionHistoryLimit: 10
    selector:
      matchLabels:
        app.kubernetes.io/component: statuscleaner
    strategy:
      rollingUpdate:
        maxSurge: 25%
        maxUnavailable: 25%
      type: RollingUpdate
    template:
      metadata:
        annotations:
          kubectl.kubernetes.io/default-container: frr-k8s-statuscleaner
        creationTimestamp: null
        labels:
          app.kubernetes.io/component: statuscleaner
      spec:
        containers:
        - args:
          - --webhook-port=19443
          - --log-level=info
          - --namespace=$(NAMESPACE)
          command:
          - /statuscleaner
          env:
          - name: NAMESPACE
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: metadata.namespace
          image: quay.io/metallb/frr-k8s:v0.0.25
          imagePullPolicy: IfNotPresent
          livenessProbe:
            failureThreshold: 3
            httpGet:
              path: /healthz
              port: webhook
              scheme: HTTPS
            initialDelaySeconds: 10
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          name: frr-k8s-statuscleaner
          ports:
          - containerPort: 19443
            name: webhook
            protocol: TCP
          readinessProbe:
            failureThreshold: 3
            httpGet:
              path: /healthz
              port: webhook
              scheme: HTTPS
            initialDelaySeconds: 10
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          resources: {}
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop:
              - ALL
            readOnlyRootFilesystem: true
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
          - mountPath: /tmp/k8s-webhook-server/serving-certs
            name: cert
            readOnly: true
        dnsPolicy: ClusterFirst
        hostNetwork: true
        restartPolicy: Always
        schedulerName: default-scheduler
        securityContext: {}
        serviceAccount: metallb-frr-k8s-controller
        serviceAccountName: metallb-frr-k8s-controller
        terminationGracePeriodSeconds: 10
        tolerations:
        - effect: NoSchedule
          key: node-role.kubernetes.io/master
          operator: Exists
        - effect: NoSchedule
          key: node-role.kubernetes.io/control-plane
          operator: Exists
        volumes:
        - name: cert
          secret:
            defaultMode: 420
            secretName: frr-k8s-webhook-server-cert
  status:
    availableReplicas: 1
    conditions:
    - lastTransitionTime: "2026-06-09T13:59:37Z"
      lastUpdateTime: "2026-06-09T13:59:37Z"
      message: Deployment has minimum availability.
      reason: MinimumReplicasAvailable
      status: "True"
      type: Available
    - lastTransitionTime: "2026-06-09T13:59:07Z"
      lastUpdateTime: "2026-06-09T13:59:37Z"
      message: ReplicaSet "metallb-frr-k8s-statuscleaner-67874f5d9f" has successfully
        progressed.
      reason: NewReplicaSetAvailable
      status: "True"
      type: Progressing
    observedGeneration: 1
    readyReplicas: 1
    replicas: 1
    updatedReplicas: 1
- apiVersion: apps/v1
  kind: ReplicaSet
  metadata:
    annotations:
      deployment.kubernetes.io/desired-replicas: "1"
      deployment.kubernetes.io/max-replicas: "2"
      deployment.kubernetes.io/revision: "1"
      meta.helm.sh/release-name: metallb
      meta.helm.sh/release-namespace: metallb
    creationTimestamp: "2026-06-09T13:59:07Z"
    generation: 1
    labels:
      app.kubernetes.io/component: controller
      app.kubernetes.io/instance: metallb
      app.kubernetes.io/name: metallb
      pod-template-hash: 7b8b56ccdd
    name: metallb-controller-7b8b56ccdd
    namespace: metallb
    ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: Deployment
      name: metallb-controller
      uid: 993e3f95-6c1b-4177-831b-250266b2666b
    resourceVersion: "660"
    uid: b9171ca0-12dd-4915-9b42-0c95fe40c643
  spec:
    replicas: 1
    selector:
      matchLabels:
        app.kubernetes.io/component: controller
        app.kubernetes.io/instance: metallb
        app.kubernetes.io/name: metallb
        pod-template-hash: 7b8b56ccdd
    template:
      metadata:
        creationTimestamp: null
        labels:
          app.kubernetes.io/component: controller
          app.kubernetes.io/instance: metallb
          app.kubernetes.io/name: metallb
          pod-template-hash: 7b8b56ccdd
      spec:
        containers:
        - args:
          - --port=9120
          - --log-level=info
          - --webhook-mode=enabled
          env:
          - name: METALLB_POD_NAME
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: metadata.name
          - name: METALLB_ML_SECRET_NAME
            value: metallb-memberlist
          - name: METALLB_DEPLOYMENT
            value: metallb-controller
          - name: METALLB_BGP_TYPE
            value: frr-k8s
          image: quay.io/metallb/controller:v0.16.1
          imagePullPolicy: IfNotPresent
          livenessProbe:
            failureThreshold: 3
            httpGet:
              path: /healthz
              port: 17472
              scheme: HTTP
            initialDelaySeconds: 10
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          name: controller
          ports:
          - containerPort: 9120
            name: metricshttps
            protocol: TCP
          - containerPort: 9443
            name: webhook-server
            protocol: TCP
          readinessProbe:
            failureThreshold: 3
            httpGet:
              path: /readyz
              port: 17472
              scheme: HTTP
            initialDelaySeconds: 10
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          resources:
            requests:
              cpu: 50m
              memory: 64Mi
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop:
              - ALL
            readOnlyRootFilesystem: true
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
          - mountPath: /tmp/k8s-webhook-server/serving-certs
            name: cert
            readOnly: true
        dnsPolicy: ClusterFirst
        nodeSelector:
          kubernetes.io/os: linux
        restartPolicy: Always
        schedulerName: default-scheduler
        securityContext:
          fsGroup: 65534
          runAsNonRoot: true
          runAsUser: 65534
        serviceAccount: metallb-controller
        serviceAccountName: metallb-controller
        terminationGracePeriodSeconds: 0
        volumes:
        - name: cert
          secret:
            defaultMode: 420
            secretName: metallb-webhook-cert
  status:
    availableReplicas: 1
    fullyLabeledReplicas: 1
    observedGeneration: 1
    readyReplicas: 1
    replicas: 1
- apiVersion: apps/v1
  kind: ReplicaSet
  metadata:
    annotations:
      deployment.kubernetes.io/desired-replicas: "1"
      deployment.kubernetes.io/max-replicas: "2"
      deployment.kubernetes.io/revision: "1"
      meta.helm.sh/release-name: metallb
      meta.helm.sh/release-namespace: metallb
    creationTimestamp: "2026-06-09T13:59:07Z"
    generation: 1
    labels:
      app.kubernetes.io/component: statuscleaner
      pod-template-hash: 67874f5d9f
    name: metallb-frr-k8s-statuscleaner-67874f5d9f
    namespace: metallb
    ownerReferences:
    - apiVersion: apps/v1
      blockOwnerDeletion: true
      controller: true
      kind: Deployment
      name: metallb-frr-k8s-statuscleaner
      uid: 5b83c3d4-1a58-472e-a6e4-8c3c59a43732
    resourceVersion: "682"
    uid: 936c5774-40ae-474e-b48a-84fcf5d11434
  spec:
    replicas: 1
    selector:
      matchLabels:
        app.kubernetes.io/component: statuscleaner
        pod-template-hash: 67874f5d9f
    template:
      metadata:
        annotations:
          kubectl.kubernetes.io/default-container: frr-k8s-statuscleaner
        creationTimestamp: null
        labels:
          app.kubernetes.io/component: statuscleaner
          pod-template-hash: 67874f5d9f
      spec:
        containers:
        - args:
          - --webhook-port=19443
          - --log-level=info
          - --namespace=$(NAMESPACE)
          command:
          - /statuscleaner
          env:
          - name: NAMESPACE
            valueFrom:
              fieldRef:
                apiVersion: v1
                fieldPath: metadata.namespace
          image: quay.io/metallb/frr-k8s:v0.0.25
          imagePullPolicy: IfNotPresent
          livenessProbe:
            failureThreshold: 3
            httpGet:
              path: /healthz
              port: webhook
              scheme: HTTPS
            initialDelaySeconds: 10
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          name: frr-k8s-statuscleaner
          ports:
          - containerPort: 19443
            name: webhook
            protocol: TCP
          readinessProbe:
            failureThreshold: 3
            httpGet:
              path: /healthz
              port: webhook
              scheme: HTTPS
            initialDelaySeconds: 10
            periodSeconds: 10
            successThreshold: 1
            timeoutSeconds: 1
          resources: {}
          securityContext:
            allowPrivilegeEscalation: false
            capabilities:
              drop:
              - ALL
            readOnlyRootFilesystem: true
          terminationMessagePath: /dev/termination-log
          terminationMessagePolicy: File
          volumeMounts:
          - mountPath: /tmp/k8s-webhook-server/serving-certs
            name: cert
            readOnly: true
        dnsPolicy: ClusterFirst
        hostNetwork: true
        restartPolicy: Always
        schedulerName: default-scheduler
        securityContext: {}
        serviceAccount: metallb-frr-k8s-controller
        serviceAccountName: metallb-frr-k8s-controller
        terminationGracePeriodSeconds: 10
        tolerations:
        - effect: NoSchedule
          key: node-role.kubernetes.io/master
          operator: Exists
        - effect: NoSchedule
          key: node-role.kubernetes.io/control-plane
          operator: Exists
        volumes:
        - name: cert
          secret:
            defaultMode: 420
            secretName: frr-k8s-webhook-server-cert
  status:
    availableReplicas: 1
    fullyLabeledReplicas: 1
    observedGeneration: 1
    readyReplicas: 1
    replicas: 1
kind: List
metadata:
  resourceVersion: ""
