--- # 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: &app frigate spec: interval: 1h chartRef: kind: OCIRepository name: app-template install: remediation: retries: 3 upgrade: cleanupOnFail: true remediation: strategy: rollback retries: 3 dependsOn: - name: intel-device-plugin-gpu namespace: kube-system - name: mosquitto namespace: database - name: rook-ceph-cluster namespace: rook-ceph - name: volsync namespace: volsync values: defaultPodOptions: nodeSelector: google.feature.node.kubernetes.io/coral: "true" intel.feature.node.kubernetes.io/gpu: "true" controllers: frigate: annotations: reloader.stakater.com/auto: "true" containers: app: image: repository: ghcr.io/blakeblackshear/frigate tag: 0.16.0-beta3@sha256:944dbf199f1cbe99cfedc74b7cd9791daa68a334d4e9f74214a06dde58c1458a env: TZ: ${TIMEZONE} LIBVA_DRIVER_NAME: i965 envFrom: - secretRef: name: frigate-secret probes: liveness: &probes enabled: true custom: true spec: httpGet: path: /api/version port: &port 5000 initialDelaySeconds: 0 periodSeconds: 10 timeoutSeconds: 1 failureThreshold: 3 readiness: *probes startup: enabled: false resources: requests: cpu: 10m memory: 1000Mi gpu.intel.com/i915: 1 limits: memory: 6000Mi gpu.intel.com/i915: 1 securityContext: privileged: true service: app: controller: *app type: LoadBalancer externalTrafficPolicy: Local loadBalancerIP: ${CLUSTER_LB_FRIGATE} ports: http: port: *port rtsp: enabled: true port: 8554 ingress: app: enabled: true annotations: nginx.ingress.kubernetes.io/auth-method: GET nginx.ingress.kubernetes.io/auth-url: http://authelia.default.svc.cluster.local.:8888/api/verify nginx.ingress.kubernetes.io/auth-signin: https://auth.${SECRET_EXTERNAL_DOMAIN}?rm=$request_method nginx.ingress.kubernetes.io/auth-response-headers: Remote-User,Remote-Name,Remote-Groups,Remote-Email nginx.ingress.kubernetes.io/auth-snippet: proxy_set_header X-Forwarded-Method $request_method; hajimari.io/icon: mdi:cctv gethomepage.dev/enabled: "true" gethomepage.dev/name: Frigate gethomepage.dev/description: NVR with realtime local object detection for IP cameras gethomepage.dev/group: Applications gethomepage.dev/icon: frigate.png gethomepage.dev/href: https://frigate.${SECRET_EXTERNAL_DOMAIN} gethomepage.dev/pod-selector: >- app in ( frigate ) className: internal hosts: - host: &host "{{ .Release.Name }}.${SECRET_EXTERNAL_DOMAIN}" paths: - path: / service: identifier: app port: http tls: - hosts: - *host persistence: config: enabled: true existingClaim: *app globalMounts: - path: /data config-file: type: configMap name: frigate-configmap globalMounts: - path: /config/config.yml subPath: config.yml readOnly: true media: type: nfs server: 192.168.9.10 path: /var/mnt/vol1/apps/frigate globalMounts: - path: /media/frigate cache: type: emptyDir medium: Memory sizeLimit: 4Gi globalMounts: - path: /dev/shm usb: type: hostPath hostPath: /dev/bus/usb hostPathType: Directory advancedMounts: frigate: app: - path: /dev/bus/usb