feat(Frigate): Move to stable (#9876)

**Description**

It's ready, tested in incubator forever, ready to go now

⚒️ Fixes  # <!--(issue)-->

**⚙️ Type of change**

- [X] ⚙️ Feature/App addition
- [ ] 🪛 Bugfix
- [ ] ⚠️ Breaking change (fix or feature that would cause existing
functionality to not work as expected)
- [ ] 🔃 Refactor of current code

**🧪 How Has This Been Tested?**
<!--
Please describe the tests that you ran to verify your changes. Provide
instructions so we can reproduce. Please also list any relevant details
for your test configuration
-->

**📃 Notes:**
<!-- Please enter any other relevant information here -->

**✔️ Checklist:**

- [ ] ⚖️ My code follows the style guidelines of this project
- [ ] 👀 I have performed a self-review of my own code
- [ ] #️⃣ I have commented my code, particularly in hard-to-understand
areas
- [ ] 📄 I have made corresponding changes to the documentation
- [ ] ⚠️ My changes generate no new warnings
- [ ] 🧪 I have added tests to this description that prove my fix is
effective or that my feature works
- [X] ⬆️ I increased versions for any altered app according to semantic
versioning

** App addition**

If this PR is an app addition please make sure you have done the
following.

- [ ] 🪞 I have opened a PR on
[truecharts/containers](https://github.com/truecharts/containers) adding
the container to TrueCharts mirror repo.
- [ ] 🖼️ I have added an icon in the Chart's root directory called
`icon.png`

---

_Please don't blindly check all the boxes. Read them and only check
those that apply.
Those checkboxes are there for the reviewer to see what is this all
about and
the status of this PR with a quick glance._
This commit is contained in:
StevenMcElligott
2023-06-25 21:57:41 +03:00
committed by GitHub
parent 49a1542eac
commit 4a0bca558d
13 changed files with 3 additions and 3 deletions
+30
View File
@@ -0,0 +1,30 @@
# Patterns to ignore when building packages.
# This supports shell glob matching, relative path matching, and
# negation (prefixed with !). Only one pattern per line.
.DS_Store
# Common VCS dirs
.git/
.gitignore
.bzr/
.bzrignore
.hg/
.hgignore
.svn/
# Common backup files
*.swp
*.bak
*.tmp
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/
# OWNERS file for Kubernetes
OWNERS
# helm-docs templates
*.gotmpl
# docs folder
/docs
# icon
icon.png
File diff suppressed because it is too large Load Diff
+30
View File
@@ -0,0 +1,30 @@
apiVersion: v2
appVersion: "0.12.1"
dependencies:
- name: common
repository: https://library-charts.truecharts.org
version: 12.14.2
deprecated: false
description: NVR With Realtime Object Detection for IP Cameras
home: https://truecharts.org/charts/stable/frigate
icon: https://truecharts.org/img/hotlink-ok/chart-icons/frigate.png
keywords:
- encode
- nvr
- media
- frigate
kubeVersion: ">=1.16.0-0"
maintainers:
- email: info@truecharts.org
name: TrueCharts
url: https://truecharts.org
name: frigate
sources:
- https://github.com/truecharts/charts/tree/master/charts/stable/frigate
- https://github.com/blakeblackshear/frigate
type: application
version: 9.0.5
annotations:
truecharts.org/catagories: |
- nvr
truecharts.org/SCALE-support: "true"
+27
View File
@@ -0,0 +1,27 @@
# README
## General Info
TrueCharts can be installed as both *normal* Helm Charts or as Apps on TrueNAS SCALE.
However only installations using the TrueNAS SCALE Apps system are supported.
For more information about this App, please check the docs on the TrueCharts [website](https://truecharts.org/charts/incubator/)
**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/truecharts/charts/issues/new/choose)**
## Support
- Please check our [quick-start guides for TrueNAS SCALE](https://truecharts.org/manual/SCALE/guides/scale-intro).
- See the [Website](https://truecharts.org)
- Check our [Discord](https://discord.gg/tVsPTHWTtr)
- Open a [issue](https://github.com/truecharts/charts/issues/new/choose)
---
## Sponsor TrueCharts
TrueCharts can only exist due to the incredible effort of our staff.
Please consider making a [donation](https://truecharts.org/sponsor) or contributing back to the project any way you can!
*All Rights Reserved - The TrueCharts Project*
@@ -0,0 +1 @@
frigateConfig: {}
@@ -0,0 +1,11 @@
frigateConfig:
mqtt:
enabled: false
cameras:
dummy:
enabled: false
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:554/rtsp
roles:
- detect
@@ -0,0 +1,11 @@
# Installation instructions
## Hardcoded values
We hardcoded some values, so the chart/app can work correctly based on how it's written.
Those values are:
```yaml
database:
path: /db/frigate.db
```
Binary file not shown.

After

Width:  |  Height:  |  Size: 5.1 KiB

+173
View File
@@ -0,0 +1,173 @@
# Include{groups}
portals:
open:
# Include{portalLink}
questions:
# Include{global}
# Include{workload}
# Include{workloadDeployment}
# Include{replicas1}
# Include{podSpec}
# Include{containerMain}
# Include{containerBasic}
# Include{containerAdvanced}
# Include{containerConfig}
# Include{podOptions}
# Include{serviceRoot}
# Include{serviceMain}
# Include{serviceSelectorLoadBalancer}
# Include{serviceSelectorExtras}
- variable: main
label: Main Service Port Configuration
schema:
additional_attrs: true
type: dict
attrs:
- variable: port
label: Port
description: This port exposes the container port on the service
schema:
type: int
default: 10500
required: true
- variable: rtmp
label: RTMP Service
description: The service on which nodes connect to.
schema:
additional_attrs: true
type: dict
attrs:
# Include{serviceSelectorLoadBalancer}
# Include{serviceSelectorExtras}
- variable: rtmp
label: RTMP Service Port Configuration
schema:
additional_attrs: true
type: dict
attrs:
- variable: port
label: Port
description: This port exposes the container port on the service
schema:
type: int
default: 1935
required: true
- variable: rtsp
label: RTSP Service
description: The service on which nodes connect to.
schema:
additional_attrs: true
type: dict
attrs:
# Include{serviceSelectorLoadBalancer}
# Include{serviceSelectorExtras}
- variable: rtsp
label: RTSP Service Port Configuration
schema:
additional_attrs: true
type: dict
attrs:
- variable: port
label: Port
description: This port exposes the container port on the service
schema:
type: int
default: 8554
required: true
- variable: webrtc
label: WebRTC Service
description: The service on which nodes connect to.
schema:
additional_attrs: true
type: dict
attrs:
# Include{serviceSelectorLoadBalancer}
# Include{serviceSelectorExtras}
- variable: webrtc-tcp
label: WebRTC (TCP) Service Port Configuration
schema:
additional_attrs: true
type: dict
attrs:
- variable: port
label: Port
description: This port exposes the container port on the service
schema:
type: int
default: 8555
required: true
- variable: webrtc-udp
label: WebRTC (UDP) Service Port Configuration
schema:
additional_attrs: true
type: dict
attrs:
- variable: port
label: Port
description: This port exposes the container port on the service
schema:
type: int
default: 8555
required: true
# Include{serviceExpertRoot}
# Include{serviceExpert}
# Include{serviceList}
# Include{persistenceRoot}
- variable: media
label: App Media
description: Stores the Application Media and DB
schema:
additional_attrs: true
type: dict
attrs:
# Include{persistenceBasic}
- variable: config
label: App Config
description: Stores the Application Configuration
schema:
additional_attrs: true
type: dict
attrs:
# Include{persistenceBasic}
# Include{persistenceList}
# Include{ingressRoot}
- variable: main
label: Main Ingress
schema:
additional_attrs: true
type: dict
attrs:
# Include{ingressDefault}
# Include{ingressTLS}
# Include{ingressTraefik}
# Include{ingressAdvanced}
# Include{ingressList}
# Include{securityContextRoot}
- variable: runAsUser
label: runAsUser
description: The UserID of the user running the application
schema:
type: int
default: 0
- variable: runAsGroup
label: runAsGroup
description: The groupID this App of the user running the application
schema:
type: int
default: 0
# Include{securityContextContainer}
# Include{securityContextAdvanced}
# Include{securityContextPod}
- variable: fsGroup
label: fsGroup
description: The group that should own ALL storage.
schema:
type: int
default: 568
# Include{resources}
# Include{advanced}
# Include{addons}
# Include{codeserver}
# Include{netshoot}
# Include{vpn}
# Include{documentation}
@@ -0,0 +1 @@
{{- include "tc.v1.common.lib.chart.notes" $ -}}
@@ -0,0 +1,42 @@
{{/* Define the configmap */}}
{{- define "frigate.configmap" -}}
enabled: true
data:
{{- if .Values.frigateConfig }}
config.yml: |
{{- .Values.frigateConfig | toYaml | nindent 4 }}
{{- else }}
config.yml.dummy: |
mqtt:
enabled: false
cameras:
dummy:
enabled: false
ffmpeg:
inputs:
- path: rtsp://127.0.0.1:554/rtsp
roles:
- detect
{{- end }}
{{- end -}}
{{- define "frigate.configVolume" -}}
enabled: true
type: configmap
objectName: frigate-config
targetSelector:
main:
main: {}
init-config: {}
{{- if .Values.frigateConfig }}
mountPath: /config
items:
- key: config.yml
path: config.yml
{{- else }}
mountPath: /dummy-config
items:
- key: config.yml.dummy
path: config.yml.dummy
{{- end -}}
{{- end -}}
@@ -0,0 +1,20 @@
{{/* Make sure all variables are set properly */}}
{{- include "tc.v1.common.loader.init" . }}
{{/* Render configmap for frigate */}}
{{- $config := include "frigate.configmap" . | fromYaml -}}
{{- if $config -}}
{{- $_ := set .Values.configmap "frigate-config" $config -}}
{{- end -}}
{{- if not .Values.frigateConfig -}}
{{- $_ := set .Values.persistence.config "enabled" true -}}
{{- end -}}
{{- $vol := include "frigate.configVolume" . | fromYaml -}}
{{- if $vol -}}
{{- $_ := set .Values.persistence "frigate-config" $vol -}}
{{- end -}}
{{/* Render the templates */}}
{{ include "tc.v1.common.loader.apply" . }}
+96
View File
@@ -0,0 +1,96 @@
image:
repository: tccr.io/truecharts/frigate
pullPolicy: IfNotPresent
tag: v0.12.1@sha256:71c83d1c5454bfee190b450ab89b2889352688b8cf3f832782a47ed82e2c604d
# When this is defined, the contents will be mounted
# as configmap into the container at /config/config.yml.
frigateConfig: {}
# -- https://docs.frigate.video/configuration/
# mqtt:
# enabled: False
# cameras:
# dummy:
# enabled: False
# ffmpeg:
# inputs:
# - path: rtsp://127.0.0.1:554/rtsp
# roles:
# - detect
workload:
main:
podSpec:
initContainers:
init-config:
enabled: "{{ not .Values.frigateConfig }}"
type: init
imageSelector: alpineImage
command:
- /bin/sh
- -c
- |
mkdir -p /config
if [ ! -f /config/config.yml ]; then
echo "Config file not found, copying dummy..."
cp /dummy-config/config.yml.dummy /config/config.yml
echo "Config file copied, you can now edit it at /config/config.yml"
fi
securityContext:
container:
readOnlyRootFilesystem: false
runAsNonRoot: false
runAsUser: 0
runAsGroup: 0
service:
main:
ports:
main:
port: 10500
protocol: http
targetPort: 5000
rtmp:
enabled: true
ports:
rtmp:
enabled: true
port: 1935
targetPort: 1935
rtsp:
enabled: true
ports:
rtsp:
enabled: true
port: 8554
targetPort: 8554
webrtc:
enabled: true
ports:
webrtc-tcp:
enabled: true
port: 8555
targetPort: 8555
webrtc-udp:
enabled: true
port: 8555
protocol: udp
targetPort: 8555
persistence:
media:
enabled: true
mountPath: /media
config:
# Only enable when not using frigateConfig
enabled: false
mountPath: /config
targetSelector:
main:
main: {}
init-config: {}
portal:
open:
enabled: true