From 619d9e49e974bbfad168a836eb81772b5f06f512 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=97=AA=D1=94=CE=BD=CE=B9=CE=B7=20=E1=97=B7=CF=85=D0=BD?= =?UTF-8?q?=CA=9F?= Date: Sun, 18 Jul 2021 11:16:33 -0400 Subject: [PATCH] [frigate] chart based on common (#1091) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit * feat: welcome back frigate * feat: add resources block * Update charts/stable/frigate/templates/configmap.yaml Co-authored-by: Bᴇʀɴᴅ Sᴄʜᴏʀɢᴇʀs * feat: add resources block * feat: add resources block * fix: configmap tpl Co-authored-by: Bᴇʀɴᴅ Sᴄʜᴏʀɢᴇʀs --- charts/stable/frigate/.helmignore | 26 ++++ charts/stable/frigate/Chart.yaml | 24 +++ charts/stable/frigate/README.md | 117 ++++++++++++++ charts/stable/frigate/README.md.gotmpl | 146 ++++++++++++++++++ .../stable/frigate/README_CHANGELOG.md.gotmpl | 20 +++ charts/stable/frigate/README_CONFIG.md.gotmpl | 9 ++ charts/stable/frigate/templates/NOTES.txt | 1 + charts/stable/frigate/templates/common.yaml | 19 +++ .../stable/frigate/templates/configmap.yaml | 9 ++ charts/stable/frigate/values.yaml | 106 +++++++++++++ 10 files changed, 477 insertions(+) create mode 100644 charts/stable/frigate/.helmignore create mode 100644 charts/stable/frigate/Chart.yaml create mode 100644 charts/stable/frigate/README.md create mode 100644 charts/stable/frigate/README.md.gotmpl create mode 100644 charts/stable/frigate/README_CHANGELOG.md.gotmpl create mode 100644 charts/stable/frigate/README_CONFIG.md.gotmpl create mode 100644 charts/stable/frigate/templates/NOTES.txt create mode 100644 charts/stable/frigate/templates/common.yaml create mode 100644 charts/stable/frigate/templates/configmap.yaml create mode 100644 charts/stable/frigate/values.yaml diff --git a/charts/stable/frigate/.helmignore b/charts/stable/frigate/.helmignore new file mode 100644 index 00000000..4379e2b3 --- /dev/null +++ b/charts/stable/frigate/.helmignore @@ -0,0 +1,26 @@ +# 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 diff --git a/charts/stable/frigate/Chart.yaml b/charts/stable/frigate/Chart.yaml new file mode 100644 index 00000000..4ec22c56 --- /dev/null +++ b/charts/stable/frigate/Chart.yaml @@ -0,0 +1,24 @@ +apiVersion: v2 +appVersion: v0.8.0 +description: NVR With Realtime Object Detection for IP Cameras +name: frigate +version: 5.0.0 +kubeVersion: ">=1.16.0-0" +keywords: +- frigate +- nvr +- tensorflow +- coral +- ml +- machine-learning +home: https://github.com/k8s-at-home/charts/tree/master/charts/stable/frigate +icon: https://github.com/blakeblackshear/frigate/blob/master/docs/static/img/frigate.png +sources: +- https://github.com/blakeblackshear/frigate +maintainers: +- name: billimek + email: jeff@billimek.com +dependencies: +- name: common + repository: https://library-charts.k8s-at-home.com + version: 3.3.0 diff --git a/charts/stable/frigate/README.md b/charts/stable/frigate/README.md new file mode 100644 index 00000000..2e2754ff --- /dev/null +++ b/charts/stable/frigate/README.md @@ -0,0 +1,117 @@ +# frigate + +![Version: 5.0.0](https://img.shields.io/badge/Version-5.0.0-informational?style=flat-square) ![AppVersion: v0.8.0](https://img.shields.io/badge/AppVersion-v0.8.0-informational?style=flat-square) + +NVR With Realtime Object Detection for IP Cameras + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)** + +## Source Code + +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.k8s-at-home.com | common | 3.3.0 | + +## TL;DR + +```console +helm repo add k8s-at-home https://k8s-at-home.com/charts/ +helm repo update +helm install frigate k8s-at-home/frigate +``` + +## Installing the Chart + +To install the chart with the release name `frigate` + +```console +helm install frigate k8s-at-home/frigate +``` + +## Uninstalling the Chart + +To uninstall the `frigate` deployment + +```console +helm uninstall frigate +``` + +The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release. + +## Configuration + +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install frigate \ + --set env.TZ="America/New York" \ + k8s-at-home/frigate +``` + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install frigate k8s-at-home/frigate -f values.yaml +``` + +## Custom configuration + +N/A + +## Values + +**Important**: When deploying an application Helm chart you can add more values from our common library chart [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common) + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| affinity | object | `{}` | Affinity constraint rules to place the Pod on a specific node. [[ref]](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) | +| config | string | see URL to default config | See [docs](https://blakeblackshear.github.io/frigate/) for more details. | +| env | object | See below | environment variables. See [docs](https://blakeblackshear.github.io/frigate/) for more details. | +| env.FRIGATE_RTSP_PASSWORD | string | empty | Set a RTSP password | +| env.TZ | string | `"UTC"` | Set the container timezone | +| image.pullPolicy | string | `"IfNotPresent"` | image pull policy | +| image.repository | string | `"blakeblackshear/frigate"` | image repository | +| image.tag | string | `"0.8.4-amd64"` | image tag | +| ingress.main | object | See values.yaml | Enable and configure ingress settings for the chart under this key. | +| persistence | object | See values.yaml | Configure persistence settings for the chart under this key. | +| persistence.cache | object | See values.yaml | Configure a temporary cache. See [docs](https://blakeblackshear.github.io/frigate/) for more details.. | +| persistence.usb | object | See values.yaml | Configure a hostPathMount to mount a USB device in the container. | +| resources | object | `{}` | Configure the resource requests and/or limits for the Pod | +| securityContext.privileged | bool | `false` | (bool) Privileged securityContext may be required if USB devices are accessed directly through the host machine | +| service | object | See values.yaml | Configures service settings for the chart. | + +## Changelog + +All notable changes to this application Helm chart will be documented in this file but does not include changes from our common library. To read those click [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common#changelog). + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +### [5.0.0] + +#### Changed + +- **BREAKING**: Upgraded the common library dependency to version 3.0.0. This introduces several breaking changes (`service`, `ingress` and `persistence` keys have been refactored). + Be sure to check out the [library chart](https://github.com/k8s-at-home/library-charts/blob/common-3.2.0/charts/stable/common/) for the up-to-date values. + +[5.0.0]: #500 + +## Support + +- See the [Docs](https://docs.k8s-at-home.com/our-helm-charts/getting-started/) +- Open an [issue](https://github.com/k8s-at-home/charts/issues/new/choose) +- Ask a [question](https://github.com/k8s-at-home/organization/discussions) +- Join our [Discord](https://discord.gg/sTMX7Vh) community + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) diff --git a/charts/stable/frigate/README.md.gotmpl b/charts/stable/frigate/README.md.gotmpl new file mode 100644 index 00000000..358abe31 --- /dev/null +++ b/charts/stable/frigate/README.md.gotmpl @@ -0,0 +1,146 @@ +{{- define "custom.repository.organization" -}} +k8s-at-home +{{- end -}} + +{{- define "custom.repository.url" -}} +https://github.com/k8s-at-home/charts +{{- end -}} + +{{- define "custom.helm.url" -}} +https://k8s-at-home.com/charts/ +{{- end -}} + +{{- define "custom.helm.path" -}} +{{ template "custom.repository.organization" . }}/{{ template "chart.name" . }} +{{- end -}} + +{{- define "custom.notes" -}} +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new/choose)** +{{- end -}} + +{{- define "custom.requirements" -}} +## Requirements + +{{ template "chart.kubeVersionLine" . }} +{{- end -}} + +{{- define "custom.dependencies" -}} +## Dependencies + +{{ template "chart.requirementsTable" . }} +{{- end -}} + +{{- define "custom.install.tldr" -}} +## TL;DR + +```console +helm repo add {{ template "custom.repository.organization" . }} {{ template "custom.helm.url" . }} +helm repo update +helm install {{ template "chart.name" . }} {{ template "custom.helm.path" . }} +``` +{{- end -}} + +{{- define "custom.install" -}} +## Installing the Chart + +To install the chart with the release name `{{ template "chart.name" . }}` + +```console +helm install {{ template "chart.name" . }} {{ template "custom.helm.path" . }} +``` +{{- end -}} + +{{- define "custom.uninstall" -}} +## Uninstalling the Chart + +To uninstall the `{{ template "chart.name" . }}` deployment + +```console +helm uninstall {{ template "chart.name" . }} +``` + +The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release. +{{- end -}} + +{{- define "custom.configuration.header" -}} +## Configuration +{{- end -}} + +{{- define "custom.configuration.readValues" -}} +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml) from the [common library](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common). +{{- end -}} + +{{- define "custom.configuration.example.set" -}} +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install {{ template "chart.name" . }} \ + --set env.TZ="America/New York" \ + {{ template "custom.helm.path" . }} +``` +{{- end -}} + +{{- define "custom.configuration.example.file" -}} +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install {{ template "chart.name" . }} {{ template "custom.helm.path" . }} -f values.yaml +``` +{{- end -}} + +{{- define "custom.valuesSection" -}} +## Values + +**Important**: When deploying an application Helm chart you can add more values from our common library chart [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common) + +{{ template "chart.valuesTable" . }} +{{- end -}} + +{{- define "custom.support" -}} +## Support + +- See the [Docs](https://docs.k8s-at-home.com/our-helm-charts/getting-started/) +- Open an [issue](https://github.com/k8s-at-home/charts/issues/new/choose) +- Ask a [question](https://github.com/k8s-at-home/organization/discussions) +- Join our [Discord](https://discord.gg/sTMX7Vh) community +{{- end -}} + +{{ template "chart.header" . }} + +{{ template "chart.versionBadge" . }}{{ template "chart.typeBadge" . }}{{ template "chart.appVersionBadge" . }} + +{{ template "chart.description" . }} + +{{ template "custom.notes" . }} + +{{ template "chart.sourcesSection" . }} + +{{ template "custom.requirements" . }} + +{{ template "custom.dependencies" . }} + +{{ template "custom.install.tldr" . }} + +{{ template "custom.install" . }} + +{{ template "custom.uninstall" . }} + +{{ template "custom.configuration.header" . }} + +{{ template "custom.configuration.readValues" . }} + +{{ template "custom.configuration.example.set" . }} + +{{ template "custom.configuration.example.file" . }} + +{{ template "custom.custom.configuration" . }} + +{{ template "custom.valuesSection" . }} + +{{ template "custom.changelog" . }} + +{{ template "custom.support" . }} + +{{ template "helm-docs.versionFooter" . }} +{{ "" }} diff --git a/charts/stable/frigate/README_CHANGELOG.md.gotmpl b/charts/stable/frigate/README_CHANGELOG.md.gotmpl new file mode 100644 index 00000000..c15f63e1 --- /dev/null +++ b/charts/stable/frigate/README_CHANGELOG.md.gotmpl @@ -0,0 +1,20 @@ +{{- define "custom.changelog.header" -}} +## Changelog +{{- end -}} + +{{- define "custom.changelog" -}} +{{ template "custom.changelog.header" . }} + +All notable changes to this application Helm chart will be documented in this file but does not include changes from our common library. To read those click [here](https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common#changelog). + +The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/), and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). + +### [5.0.0] + +#### Changed + +- **BREAKING**: Upgraded the common library dependency to version 3.0.0. This introduces several breaking changes (`service`, `ingress` and `persistence` keys have been refactored). + Be sure to check out the [library chart](https://github.com/k8s-at-home/library-charts/blob/common-3.2.0/charts/stable/common/) for the up-to-date values. + +[5.0.0]: #500 +{{- end -}} diff --git a/charts/stable/frigate/README_CONFIG.md.gotmpl b/charts/stable/frigate/README_CONFIG.md.gotmpl new file mode 100644 index 00000000..e93d80bf --- /dev/null +++ b/charts/stable/frigate/README_CONFIG.md.gotmpl @@ -0,0 +1,9 @@ +{{- define "custom.custom.configuration.header" -}} +## Custom configuration +{{- end -}} + +{{- define "custom.custom.configuration" -}} +{{ template "custom.custom.configuration.header" . }} + +N/A +{{- end -}} diff --git a/charts/stable/frigate/templates/NOTES.txt b/charts/stable/frigate/templates/NOTES.txt new file mode 100644 index 00000000..90f7b653 --- /dev/null +++ b/charts/stable/frigate/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "common.notes.defaultNotes" . -}} diff --git a/charts/stable/frigate/templates/common.yaml b/charts/stable/frigate/templates/common.yaml new file mode 100644 index 00000000..40fe6cc7 --- /dev/null +++ b/charts/stable/frigate/templates/common.yaml @@ -0,0 +1,19 @@ +{{/* Make sure all variables are set properly */}} +{{- include "common.values.setup" . }} + +{{/* Append the hardcoded settings */}} +{{- define "frigate.configValues" -}} +persistence: + frigate-config: + enabled: "true" + mountPath: "/config/config.yml" + subPath: "config.yml" + type: "custom" + volumeSpec: + configMap: + name: {{ printf "%v-config" (include "common.names.fullname" .) }} +{{- end -}} +{{- $_ := mergeOverwrite .Values (include "frigate.configValues" . | fromYaml) -}} + +{{/* Render the templates */}} +{{ include "common.all" . }} diff --git a/charts/stable/frigate/templates/configmap.yaml b/charts/stable/frigate/templates/configmap.yaml new file mode 100644 index 00000000..ed62941d --- /dev/null +++ b/charts/stable/frigate/templates/configmap.yaml @@ -0,0 +1,9 @@ +apiVersion: v1 +kind: ConfigMap +metadata: + name: {{ include "common.names.fullname" . }}-config + labels: + {{- include "common.labels" . | nindent 4 }} +data: + config.yml: | + {{- tpl .Values.config $ | nindent 4 }} diff --git a/charts/stable/frigate/values.yaml b/charts/stable/frigate/values.yaml new file mode 100644 index 00000000..6e7b3fb5 --- /dev/null +++ b/charts/stable/frigate/values.yaml @@ -0,0 +1,106 @@ +# +# IMPORTANT NOTE +# +# This chart inherits from our common library chart. You can check the default values/options here: +# https://github.com/k8s-at-home/library-charts/tree/main/charts/stable/common/values.yaml +# + +image: + # -- image repository + repository: blakeblackshear/frigate + # -- image tag + tag: 0.8.4-amd64 + # -- image pull policy + pullPolicy: IfNotPresent + +# -- environment variables. See [docs](https://blakeblackshear.github.io/frigate/) for more details. +# @default -- See below +env: + # -- Set the container timezone + TZ: UTC + # -- Set a RTSP password + # @default -- empty + FRIGATE_RTSP_PASSWORD: "" + +# -- Configures service settings for the chart. +# @default -- See values.yaml +service: + main: + ports: + http: + port: 5000 + rtmp: + enabled: false + port: 1935 + protocol: TCP + targetPort: 1935 + +ingress: + # -- Enable and configure ingress settings for the chart under this key. + # @default -- See values.yaml + main: + enabled: false + +securityContext: + # -- (bool) Privileged securityContext may be required if USB devices are accessed directly through the host machine + privileged: false + +# -- Configure persistence settings for the chart under this key. +# @default -- See values.yaml +persistence: + data: + enabled: false + mountPath: /data + media: + enabled: false + mountPath: /media + # -- Configure a hostPathMount to mount a USB device in the container. + # @default -- See values.yaml + usb: + enabled: false + type: hostPath + hostPath: /dev/bus/usb + # -- Configure a temporary cache. See [docs](https://blakeblackshear.github.io/frigate/) for more details.. + # @default -- See values.yaml + cache: + enabled: true + type: emptyDir + medium: Memory + sizeLimit: 1Gi + mountPath: /dev/shm + +# -- Affinity constraint rules to place the Pod on a specific node. +# [[ref]](https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/#affinity-and-anti-affinity) +affinity: {} +# nodeAffinity: +# requiredDuringSchedulingIgnoredDuringExecution: +# nodeSelectorTerms: +# - matchExpressions: +# - key: app +# operator: In +# values: +# - coral-tpu + +# -- Configure the resource requests and/or limits for the Pod +resources: {} + # requests: + # # Hardware acceleration using an Intel iGPU w/ QuickSync and + # # using intel-gpu-plugin (https://github.com/intel/intel-device-plugins-for-kubernetes) + # gpu.intel.com/i915: 1 + # cpu: 200m + # memory: 256Mi + # limits: + # # Hardware acceleration using an Intel iGPU w/ QuickSync and + # # using intel-gpu-plugin (https://github.com/intel/intel-device-plugins-for-kubernetes) + # gpu.intel.com/i915: 1 + # memory: 4096Mi + +# -- See [docs](https://blakeblackshear.github.io/frigate/) for more details. +# @default -- see URL to default config +config: | + mqtt: + host: test.mosquitto.org + topic_prefix: frigate + detectors: + cpu1: + type: cpu