apiVersion: apps/v1
kind: DaemonSet
metadata:
  annotations:
    deprecated.daemonset.template.generation: "1"
    meta.helm.sh/release-name: octavia
    meta.helm.sh/release-namespace: openstack
    openstackhelm.openstack.org/release_uuid: ""
  creationTimestamp: "2026-04-22T03:25:56Z"
  generation: 1
  labels:
    app.kubernetes.io/managed-by: Helm
    application: octavia
    component: health_manager
    release_group: octavia
  name: octavia-health-manager-default
  namespace: openstack
  resourceVersion: "22515"
  uid: 19b83493-2cf7-48e5-b7a2-1481144ee057
spec:
  revisionHistoryLimit: 10
  selector:
    matchLabels:
      application: octavia
      component: health_manager
      release_group: octavia
  template:
    metadata:
      annotations:
        configmap-bin-hash: c4bcb2ed7bca6cdaa6a717953414bfd7a424a44d6e703264226311286766ccaa
        configmap-etc-hash: 6359dc03e0987a3c6861877893ef9ad21a9f7d50707fe2f868fcee3b5b43bafc
      creationTimestamp: null
      labels:
        application: octavia
        component: health_manager
        release_group: octavia
    spec:
      containers:
      - command:
        - /tmp/octavia-health-manager.sh
        - start
        image: harbor.atmosphere.dev/ghcr.io/vexxhost/octavia:main@sha256:13bfd0f2e24ca220fa66a1996c6e403fcf2b8ddb2cc86705ea250c5f65fb4487
        imagePullPolicy: IfNotPresent
        lifecycle:
          preStop:
            exec:
              command:
              - /tmp/octavia-health-manager.sh
              - stop
        name: octavia-health-manager
        resources: {}
        securityContext:
          capabilities:
            add:
            - NET_ADMIN
          runAsUser: 0
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /etc/octavia
          name: pod-etc-octavia
        - mountPath: /tmp/octavia-health-manager.sh
          name: octavia-bin
          readOnly: true
          subPath: octavia-health-manager.sh
        - mountPath: /etc/octavia/octavia.conf
          name: octavia-etc
          readOnly: true
          subPath: octavia.conf
        - mountPath: /etc/octavia/certs/server
          name: octavia-server-ca
        - mountPath: /etc/octavia/certs/client
          name: octavia-client-certs
        - mountPath: /etc/octavia/certs/jobboard-default
          name: octavia-jobboard-default-ca
        - mountPath: /etc/octavia/certs/jobboard-sentinel
          name: octavia-jobboard-sentinel-ca
      dnsPolicy: ClusterFirstWithHostNet
      hostNetwork: true
      hostPID: true
      initContainers:
      - command:
        - kubernetes-entrypoint
        env:
        - name: POD_NAME
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.name
        - name: NAMESPACE
          valueFrom:
            fieldRef:
              apiVersion: v1
              fieldPath: metadata.namespace
        - name: INTERFACE_NAME
          value: eth0
        - name: PATH
          value: /usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/
        - name: DEPENDENCY_SERVICE
          value: openstack:percona-xtradb-haproxy,openstack:percona-xtradb-haproxy,openstack:keystone-api,openstack:rabbitmq-octavia,openstack:memcached,openstack:neutron-server,openstack:octavia-api
        - name: DEPENDENCY_JOBS
          value: octavia-db-sync,octavia-ks-user,octavia-ks-endpoints,octavia-rabbit-init
        - name: DEPENDENCY_DAEMONSET
        - name: DEPENDENCY_CONTAINER
        - name: DEPENDENCY_POD_JSON
        - name: DEPENDENCY_CUSTOM_RESOURCE
        image: harbor.atmosphere.dev/ghcr.io/vexxhost/kubernetes-entrypoint:edge
        imagePullPolicy: IfNotPresent
        name: init
        resources: {}
        securityContext:
          allowPrivilegeEscalation: false
          readOnlyRootFilesystem: true
          runAsUser: 65534
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
      - command:
        - /tmp/octavia-health-manager-get-port.sh
        env:
        - name: OS_IDENTITY_API_VERSION
          value: "3"
        - name: OS_AUTH_URL
          valueFrom:
            secretKeyRef:
              key: OS_AUTH_URL
              name: octavia-keystone-admin
        - name: OS_REGION_NAME
          valueFrom:
            secretKeyRef:
              key: OS_REGION_NAME
              name: octavia-keystone-admin
        - name: OS_INTERFACE
          valueFrom:
            secretKeyRef:
              key: OS_INTERFACE
              name: octavia-keystone-admin
        - name: OS_ENDPOINT_TYPE
          valueFrom:
            secretKeyRef:
              key: OS_INTERFACE
              name: octavia-keystone-admin
        - name: OS_PROJECT_DOMAIN_NAME
          valueFrom:
            secretKeyRef:
              key: OS_PROJECT_DOMAIN_NAME
              name: octavia-keystone-admin
        - name: OS_PROJECT_NAME
          valueFrom:
            secretKeyRef:
              key: OS_PROJECT_NAME
              name: octavia-keystone-admin
        - name: OS_USER_DOMAIN_NAME
          valueFrom:
            secretKeyRef:
              key: OS_USER_DOMAIN_NAME
              name: octavia-keystone-admin
        - name: OS_USERNAME
          valueFrom:
            secretKeyRef:
              key: OS_USERNAME
              name: octavia-keystone-admin
        - name: OS_PASSWORD
          valueFrom:
            secretKeyRef:
              key: OS_PASSWORD
              name: octavia-keystone-admin
        - name: OS_DEFAULT_DOMAIN
          valueFrom:
            secretKeyRef:
              key: OS_DEFAULT_DOMAIN
              name: octavia-keystone-admin
        image: harbor.atmosphere.dev/ghcr.io/vexxhost/heat:main@sha256:3be2b3d1ab07714491f915307416d288783e484669a4b58a8fe3b7412b97044c
        imagePullPolicy: IfNotPresent
        name: octavia-health-manager-get-port
        resources: {}
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /tmp/pod-shared
          name: pod-shared
        - mountPath: /tmp/octavia-health-manager-get-port.sh
          name: octavia-bin
          readOnly: true
          subPath: octavia-health-manager-get-port.sh
      - command:
        - /tmp/octavia-health-manager-nic-init.sh
        image: harbor.atmosphere.dev/ghcr.io/vexxhost/openvswitch:v3.3.6-6
        imagePullPolicy: IfNotPresent
        name: octavia-health-manager-nic-init
        resources: {}
        securityContext:
          capabilities:
            add:
            - NET_ADMIN
          runAsUser: 0
        terminationMessagePath: /dev/termination-log
        terminationMessagePolicy: File
        volumeMounts:
        - mountPath: /tmp/pod-shared
          name: pod-shared
        - mountPath: /tmp/octavia-health-manager-nic-init.sh
          name: octavia-bin
          readOnly: true
          subPath: octavia-health-manager-nic-init.sh
        - mountPath: /run
          name: run
      nodeSelector:
        openstack-control-plane: enabled
      restartPolicy: Always
      schedulerName: default-scheduler
      securityContext: {}
      serviceAccount: octavia-health-manager
      serviceAccountName: octavia-health-manager
      terminationGracePeriodSeconds: 30
      volumes:
      - emptyDir: {}
        name: pod-etc-octavia
      - configMap:
          defaultMode: 365
          name: octavia-bin
        name: octavia-bin
      - name: octavia-etc
        secret:
          defaultMode: 292
          secretName: octavia-health-manager-default
      - emptyDir: {}
        name: pod-shared
      - hostPath:
          path: /run
          type: ""
        name: run
      - name: octavia-server-ca
        secret:
          defaultMode: 420
          secretName: octavia-server-ca
      - name: octavia-client-certs
        secret:
          defaultMode: 420
          secretName: octavia-client-certs
      - name: octavia-jobboard-default-ca
        secret:
          defaultMode: 420
          secretName: valkey-server-certs
      - name: octavia-jobboard-sentinel-ca
        secret:
          defaultMode: 420
          secretName: valkey-server-certs
  updateStrategy:
    rollingUpdate:
      maxSurge: 0
      maxUnavailable: 1
    type: RollingUpdate
status:
  currentNumberScheduled: 1
  desiredNumberScheduled: 1
  numberAvailable: 1
  numberMisscheduled: 0
  numberReady: 1
  observedGeneration: 1
  updatedNumberScheduled: 1
