diff --git a/charts/plex-exporter/.helmignore b/charts/plex-exporter/.helmignore new file mode 100644 index 0000000..4379e2b --- /dev/null +++ b/charts/plex-exporter/.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/plex-exporter/Chart.yaml b/charts/plex-exporter/Chart.yaml new file mode 100644 index 0000000..0b74ffb --- /dev/null +++ b/charts/plex-exporter/Chart.yaml @@ -0,0 +1,19 @@ +apiVersion: v2 +appVersion: 0.2.2 +description: A prometheus exporter for Plex Media Server +name: plex-exporter +version: 0.0.1 +kubeVersion: ">=1.16.0-0" +keywords: + - plex-exporter +home: https://github.com/nikdoof/helm-charts/tree/master/charts/plex-exporter +sources: + - https://github.com/arnarg/plex_exporter + - https://hub.docker.com/r/granra/plex_exporter/ +maintainers: + - name: nikdoof + email: andy@tensixtyone.com +dependencies: + - name: common + repository: https://library-charts.k8s-at-home.com + version: 4.2.0 diff --git a/charts/plex-exporter/README.md b/charts/plex-exporter/README.md new file mode 100644 index 0000000..5cc30cf --- /dev/null +++ b/charts/plex-exporter/README.md @@ -0,0 +1,120 @@ +# plex-exporter + +![Version: 0.0.1](https://img.shields.io/badge/Version-0.0.1-informational?style=flat-square) ![AppVersion: 0.2.2](https://img.shields.io/badge/AppVersion-0.2.2-informational?style=flat-square) + +A prometheus exporter for Plex Media Server + +**This chart is not maintained by the upstream project and any issues with the chart should be raised [here](https://github.com/nikdoof/helm-charts/issues/new/choose)** + +## Source Code + +* +* + +## Requirements + +Kubernetes: `>=1.16.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://library-charts.k8s-at-home.com | common | 4.2.0 | + +## TL;DR + +```console +helm repo add nikdoof-helm-charts https://nikdoof.github.io/helm-charts/ +helm repo update +helm install plex-exporter nikdoof-helm-charts/plex-exporter +``` + +## Installing the Chart + +To install the chart with the release name `plex-exporter` + +```console +helm install plex-exporter nikdoof-helm-charts/plex-exporter +``` + +## Uninstalling the Chart + +To uninstall the `plex-exporter` deployment + +```console +helm uninstall plex-exporter +``` + +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 plex-exporter \ + --set plex.server="http://192.168.1.1:32400"\ + nikdoof-helm-charts/plex-exporter +``` + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install plex-exporter nikdoof-helm-charts/plex-exporter -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 | +|-----|------|---------|-------------| +| env | object | See below | environment variables. See more environment variables in the [plex-exporter documentation](https://github.com/nikdoof/plex-chaos/tree/master/cmd/plex_exporter). | +| image.pullPolicy | string | `"IfNotPresent"` | image pull policy | +| image.repository | string | `"granra/plex_exporter"` | image repository | +| image.tag | string | `"v0.2.2"` | image tag | +| ingress.main | object | See values.yaml | Enable and configure ingress settings for the chart under this key. | +| metrics.enabled | bool | See values.yaml | Enable and configure a Prometheus serviceMonitor for the chart under this key. | +| metrics.prometheusRule | object | See values.yaml | Enable and configure Prometheus Rules for the chart under this key. | +| metrics.prometheusRule.rules | list | See prometheusrules.yaml | Configure additionial rules for the chart under this key. | +| metrics.serviceMonitor.interval | string | `"1m"` | | +| metrics.serviceMonitor.labels | object | `{}` | | +| metrics.serviceMonitor.scrapeTimeout | string | `"30s"` | | +| plex.server | string | `nil` | Server address of your Plex server, as a URL, including the port | +| 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). + +### [0.0.1] + +#### Added + +- Initial version + +#### Changed + +- N/A + +#### Removed + +- N/A + +[0.0.1]: #100 + +## Support + +- Open an [issue](https://github.com/nikdoof/helm-charts/issues/new/choose) + +---------------------------------------------- +Autogenerated from chart metadata using [helm-docs v1.5.0](https://github.com/norwoodj/helm-docs/releases/v1.5.0) diff --git a/charts/plex-exporter/README.md.gotmpl b/charts/plex-exporter/README.md.gotmpl new file mode 100644 index 0000000..ecff32e --- /dev/null +++ b/charts/plex-exporter/README.md.gotmpl @@ -0,0 +1,143 @@ +{{- define "custom.repository.organization" -}} +nikdoof-helm-charts +{{- end -}} + +{{- define "custom.repository.url" -}} +https://github.com/nikdoof/helm-charts +{{- end -}} + +{{- define "custom.helm.url" -}} +https://nikdoof.github.io/helm-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/nikdoof/helm-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 plex.server="http://192.168.1.1:32400"\ + {{ 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 + +- Open an [issue](https://github.com/nikdoof/helm-charts/issues/new/choose) +{{- 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/plex-exporter/README_CHANGELOG.md.gotmpl b/charts/plex-exporter/README_CHANGELOG.md.gotmpl new file mode 100644 index 0000000..01fd766 --- /dev/null +++ b/charts/plex-exporter/README_CHANGELOG.md.gotmpl @@ -0,0 +1,27 @@ +{{- 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). + +### [0.0.1] + +#### Added + +- Initial version + +#### Changed + +- N/A + +#### Removed + +- N/A + +[0.0.1]: #100 +{{- end -}} diff --git a/charts/plex-exporter/README_CONFIG.md.gotmpl b/charts/plex-exporter/README_CONFIG.md.gotmpl new file mode 100644 index 0000000..e93d80b --- /dev/null +++ b/charts/plex-exporter/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/plex-exporter/ci/test-values.yaml b/charts/plex-exporter/ci/test-values.yaml new file mode 100644 index 0000000..5bf54a3 --- /dev/null +++ b/charts/plex-exporter/ci/test-values.yaml @@ -0,0 +1,3 @@ +--- +plex: + server: test diff --git a/charts/plex-exporter/templates/NOTES.txt b/charts/plex-exporter/templates/NOTES.txt new file mode 100644 index 0000000..90f7b65 --- /dev/null +++ b/charts/plex-exporter/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "common.notes.defaultNotes" . -}} diff --git a/charts/plex-exporter/templates/common.yaml b/charts/plex-exporter/templates/common.yaml new file mode 100644 index 0000000..190a982 --- /dev/null +++ b/charts/plex-exporter/templates/common.yaml @@ -0,0 +1,13 @@ +{{/* Make sure all variables are set properly */}} +{{- include "common.values.setup" . }} + +{{/* Append the hardcoded settings */}} +{{- define "plex-exporter.harcodedValues" -}} +args: + - "--plex-server" + - "{{ .Values.plex.server }}" +{{- end -}} +{{- $_ := mergeOverwrite .Values (include "plex-exporter.harcodedValues" . | fromYaml) -}} + +{{/* Render the templates */}} +{{ include "common.all" . }} diff --git a/charts/plex-exporter/templates/prometheusrules.yaml b/charts/plex-exporter/templates/prometheusrules.yaml new file mode 100644 index 0000000..fc4fee1 --- /dev/null +++ b/charts/plex-exporter/templates/prometheusrules.yaml @@ -0,0 +1,27 @@ +{{- if and .Values.metrics.enabled .Values.metrics.prometheusRule.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: PrometheusRule +metadata: + name: {{ include "common.names.fullname" . }} + labels: + {{- include "common.labels" . | nindent 4 }} + {{- with .Values.metrics.prometheusRule.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + groups: + - name: {{ include "common.names.fullname" . }} + rules: + - alert: PlexExporterAbsent + annotations: + description: Plex Exporter has disappeared from Prometheus service discovery. + summary: Plex Exporter is down. + expr: | + absent(up{job=~".*{{ include "common.names.fullname" . }}.*"} == 1) + for: 5m + labels: + severity: critical + {{- with .Values.metrics.prometheusRule.rules }} + {{- toYaml . | nindent 8 }} + {{- end }} +{{- end }} diff --git a/charts/plex-exporter/templates/servicemonitor.yaml b/charts/plex-exporter/templates/servicemonitor.yaml new file mode 100644 index 0000000..b424548 --- /dev/null +++ b/charts/plex-exporter/templates/servicemonitor.yaml @@ -0,0 +1,24 @@ +{{- if .Values.metrics.enabled }} +apiVersion: monitoring.coreos.com/v1 +kind: ServiceMonitor +metadata: + name: {{ include "common.names.fullname" . }} + labels: + {{- include "common.labels" . | nindent 4 }} + {{- with .Values.metrics.serviceMonitor.labels }} + {{- toYaml . | nindent 4 }} + {{- end }} +spec: + selector: + matchLabels: + {{- include "common.labels.selectorLabels" . | nindent 6 }} + endpoints: + - port: metrics + {{- with .Values.metrics.serviceMonitor.interval }} + interval: {{ . }} + {{- end }} + {{- with .Values.metrics.serviceMonitor.scrapeTimeout }} + scrapeTimeout: {{ . }} + {{- end }} + path: /metrics +{{- end }} diff --git a/charts/plex-exporter/values.yaml b/charts/plex-exporter/values.yaml new file mode 100644 index 0000000..a3b2224 --- /dev/null +++ b/charts/plex-exporter/values.yaml @@ -0,0 +1,66 @@ +# +# 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: granra/plex_exporter + # -- image tag + tag: v0.2.2 + # -- image pull policy + pullPolicy: IfNotPresent + +# -- environment variables. See more environment variables in the [plex-exporter documentation](https://github.com/nikdoof/plex-chaos/tree/master/cmd/plex_exporter). +# @default -- See below +env: {} + +# -- Configures service settings for the chart. +# @default -- See values.yaml +service: + main: + ports: + http: + enabled: false + metrics: + enabled: true + protocol: TCP + port: 9594 + +ingress: + # -- Enable and configure ingress settings for the chart under this key. + # @default -- See values.yaml + main: + enabled: false + +plex: + # -- Server address of your Plex server, as a URL, including the port + server: + +metrics: + # -- Enable and configure a Prometheus serviceMonitor for the chart under this key. + # @default -- See values.yaml + enabled: false + serviceMonitor: + interval: 1m + scrapeTimeout: 30s + labels: {} + # -- Enable and configure Prometheus Rules for the chart under this key. + # @default -- See values.yaml + prometheusRule: + enabled: false + labels: {} + # -- Configure additionial rules for the chart under this key. + # @default -- See prometheusrules.yaml + rules: [] + # - alert: plexExporterAbsent + # annotations: + # description: plex Exporter has disappeared from Prometheus service discovery. + # summary: plex Exporter is down. + # expr: | + # absent(up{job=~".*plexexporter.*"} == 1) + # for: 5m + # labels: + # severity: critical