---
# yaml-language-server: $schema=https://raw.githubusercontent.com/bjw-s/helm-charts/main/charts/other/app-template/schemas/helmrelease-helm-v2.schema.json
apiVersion: helm.toolkit.fluxcd.io/v2
kind: HelmRelease
metadata:
  name: generic-device-plugin
spec:
  interval: 30m
  chart:
    spec:
      chart: app-template
      version: 3.5.1
      sourceRef:
        kind: HelmRepository
        name: bjw-s
        namespace: flux-system
  driftDetection:
    mode: enabled
  install:
    remediation:
      retries: 3
  upgrade:
    cleanupOnFail: true
    remediation:
      strategy: rollback
      retries: 3
  values:
    defaultPodOptions:
      priorityClassName: system-node-critical
    controllers:
      generic-device-plugin:
        type: daemonset
        strategy: RollingUpdate
        annotations:
          reloader.stakater.com/auto: "true"
        containers:
          generic-device-plugin:
            image:
              repository: ghcr.io/squat/generic-device-plugin
              tag: latest@sha256:ba6f0b4cf6c858d6ad29ba4d32e4da11638abbc7d96436bf04f582a97b2b8821
            args:
              - --config=/config/config.yml
            ports:
              - containerPort: 8080
                name: http
            securityContext:
              allowPrivilegeEscalation: false
              readOnlyRootFilesystem: true
              capabilities: { drop: ["ALL"] }
    persistence:
      config:
        type: configMap
        name: generic-device-plugin-configmap
        globalMounts:
          - path: /config/config.yml
            subPath: config.yml
            readOnly: true
      dev:
        type: hostPath
        hostPath: /dev
        globalMounts:
          - path: /dev
      device-plugin:
        type: hostPath
        hostPath: /var/lib/kubelet/device-plugins
        globalMounts:
          - path: /var/lib/kubelet/device-plugins