From beaf1d697aa7c7f237eb5099cf75e4f003eb1d7c Mon Sep 17 00:00:00 2001 From: Vegetto Date: Sat, 13 Mar 2021 16:30:07 +0100 Subject: [PATCH] [helm-docs] Addopt helm-docs for remaining charts (#660) * homebridge -> helm-docs * librespeed -> helmdocs * node-feature-discovery -> helm-docs * oauth2-proxy -> helm-docs * sersock -> helmdocs * speedtest -> helm-docs * unifi -> helm-docs * bump version * uptimerobot -> helm-docs * do not install test ser2sock * Add influxdb dependency * no default value for externalTrafficPolicy Co-authored-by: angelnu --- .github/ct-install.yaml | 1 + .helmdocsignore | 7 - charts/homebridge/Chart.yaml | 2 +- charts/homebridge/README.md | 211 +++++++---- charts/homebridge/README.md.gotmpl | 145 ++++++++ charts/homebridge/README_CHANGELOG.md.gotmpl | 27 ++ charts/homebridge/README_CONFIG.md.gotmpl | 9 + charts/homebridge/values.yaml | 79 +++- charts/librespeed/Chart.yaml | 2 +- charts/librespeed/README.md | 194 ++++++---- charts/librespeed/README.md.gotmpl | 145 ++++++++ charts/librespeed/README_CHANGELOG.md.gotmpl | 27 ++ charts/librespeed/README_CONFIG.md.gotmpl | 9 + charts/librespeed/values.yaml | 108 +++--- charts/node-feature-discovery/Chart.yaml | 2 +- charts/node-feature-discovery/README.md | 155 +++++--- .../node-feature-discovery/README.md.gotmpl | 145 ++++++++ .../README_CHANGELOG.md.gotmpl | 27 ++ .../README_CONFIG.md.gotmpl | 9 + charts/node-feature-discovery/values.yaml | 44 ++- charts/oauth2-proxy/Chart.yaml | 2 +- charts/oauth2-proxy/README.md | 279 ++++++++------- charts/oauth2-proxy/README.md.gotmpl | 145 ++++++++ .../oauth2-proxy/README_CHANGELOG.md.gotmpl | 59 +++ charts/oauth2-proxy/README_CONFIG.md.gotmpl | 38 ++ charts/oauth2-proxy/values.yaml | 115 +++--- charts/ser2sock/Chart.yaml | 2 +- charts/ser2sock/README.md | 154 +++++--- charts/ser2sock/README.md.gotmpl | 145 ++++++++ charts/ser2sock/README_CHANGELOG.md.gotmpl | 27 ++ charts/ser2sock/README_CONFIG.md.gotmpl | 25 ++ charts/ser2sock/values.yaml | 46 ++- charts/speedtest/Chart.yaml | 8 +- charts/speedtest/README.md | 136 +++++-- charts/speedtest/README.md.gotmpl | 145 ++++++++ charts/speedtest/README_CHANGELOG.md.gotmpl | 27 ++ charts/speedtest/README_CONFIG.md.gotmpl | 9 + charts/speedtest/templates/configmap.yaml | 2 +- charts/speedtest/values.yaml | 37 +- charts/unifi/Chart.yaml | 2 +- charts/unifi/README.md | 336 +++++++++--------- charts/unifi/README.md.gotmpl | 145 ++++++++ charts/unifi/README_CHANGELOG.md.gotmpl | 27 ++ charts/unifi/README_CONFIG.md.gotmpl | 45 +++ charts/unifi/values.yaml | 304 ++++++++-------- charts/uptimerobot/Chart.yaml | 2 +- charts/uptimerobot/README.md | 131 ++++--- charts/uptimerobot/README.md.gotmpl | 145 ++++++++ charts/uptimerobot/README_CHANGELOG.md.gotmpl | 27 ++ charts/uptimerobot/README_CONFIG.md.gotmpl | 9 + charts/uptimerobot/values.yaml | 10 +- 51 files changed, 3012 insertions(+), 920 deletions(-) create mode 100644 charts/homebridge/README.md.gotmpl create mode 100644 charts/homebridge/README_CHANGELOG.md.gotmpl create mode 100644 charts/homebridge/README_CONFIG.md.gotmpl create mode 100644 charts/librespeed/README.md.gotmpl create mode 100644 charts/librespeed/README_CHANGELOG.md.gotmpl create mode 100644 charts/librespeed/README_CONFIG.md.gotmpl create mode 100644 charts/node-feature-discovery/README.md.gotmpl create mode 100644 charts/node-feature-discovery/README_CHANGELOG.md.gotmpl create mode 100644 charts/node-feature-discovery/README_CONFIG.md.gotmpl create mode 100644 charts/oauth2-proxy/README.md.gotmpl create mode 100644 charts/oauth2-proxy/README_CHANGELOG.md.gotmpl create mode 100644 charts/oauth2-proxy/README_CONFIG.md.gotmpl create mode 100644 charts/ser2sock/README.md.gotmpl create mode 100644 charts/ser2sock/README_CHANGELOG.md.gotmpl create mode 100644 charts/ser2sock/README_CONFIG.md.gotmpl create mode 100644 charts/speedtest/README.md.gotmpl create mode 100644 charts/speedtest/README_CHANGELOG.md.gotmpl create mode 100644 charts/speedtest/README_CONFIG.md.gotmpl create mode 100644 charts/unifi/README.md.gotmpl create mode 100644 charts/unifi/README_CHANGELOG.md.gotmpl create mode 100644 charts/unifi/README_CONFIG.md.gotmpl create mode 100644 charts/uptimerobot/README.md.gotmpl create mode 100644 charts/uptimerobot/README_CHANGELOG.md.gotmpl create mode 100644 charts/uptimerobot/README_CONFIG.md.gotmpl diff --git a/.github/ct-install.yaml b/.github/ct-install.yaml index 83107f9f..f2234fbd 100644 --- a/.github/ct-install.yaml +++ b/.github/ct-install.yaml @@ -6,6 +6,7 @@ chart-dirs: excluded-charts: - alertmanager-bot - dnsmadeeasy-webhook +- ser2sock - zigbee2mqtt chart-repos: - bitnami=https://charts.bitnami.com/bitnami diff --git a/.helmdocsignore b/.helmdocsignore index d3c824c1..f6de48ad 100644 --- a/.helmdocsignore +++ b/.helmdocsignore @@ -1,8 +1 @@ -charts/homebridge -charts/librespeed -charts/node-feature-discovery -charts/oauth2-proxy -charts/ser2sock -charts/speedtest -charts/unifi charts/uptimerobot diff --git a/charts/homebridge/Chart.yaml b/charts/homebridge/Chart.yaml index 3b002e42..21574451 100644 --- a/charts/homebridge/Chart.yaml +++ b/charts/homebridge/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 appVersion: 3.1.0 -version: 1.0.2 +version: 1.0.3 name: homebridge description: A lightweight NodeJS server that emulates the iOS HomeKit API type: application diff --git a/charts/homebridge/README.md b/charts/homebridge/README.md index bbe50f50..70bcb186 100644 --- a/charts/homebridge/README.md +++ b/charts/homebridge/README.md @@ -1,100 +1,165 @@ -# Homebridge +# homebridge -This is a helm chart for [Homebridge](https://homebridge.io) based on [Docker Homebridge](https://github.com/oznu/docker-homebridge). +![Version: 1.0.3](https://img.shields.io/badge/Version-1.0.3-informational?style=flat-square) ![Type: application](https://img.shields.io/badge/Type-application-informational?style=flat-square) ![AppVersion: 3.1.0](https://img.shields.io/badge/AppVersion-3.1.0-informational?style=flat-square) -## TL;DR; +A lightweight NodeJS server that emulates the iOS HomeKit API -```shell +**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 + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| + +## TL;DR + +```console helm repo add k8s-at-home https://k8s-at-home.com/charts/ -helm install k8s-at-home/homebridge +helm repo update +helm install homebridge k8s-at-home/homebridge ``` ## Installing the Chart -To install the chart with the release name `my-release`: +To install the chart with the release name `homebridge` -```shell -helm install --name my-release k8s-at-home/homebridge +```console +helm install homebridge k8s-at-home/homebridge ``` ## Uninstalling the Chart -To uninstall/delete the `my-release` deployment: +To uninstall the `homebridge` deployment -```shell -helm delete my-release --purge +```console +helm uninstall homebridge ``` -The command removes all the Kubernetes components associated with the chart and deletes the release. +The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release. ## Configuration -The following tables lists the configurable parameters of the Home Assistant chart and their default values. +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](../common/values.yaml) from the [common library](../common). -| Parameter | Description | Default | -| ----------------------------------------------- | --------------------------------------------------------------------------------------------------------------------------------- | ----------------------------------- | -| `image.repository` | Image repository | `oznu/homebridge` | -| `image.tag` | Image tag. Possible values listed [here](https://hub.docker.com/r/oznu/homebridge/tags). | `3.1.0` | -| `image.pullPolicy` | Image pull policy | `IfNotPresent` | -| `image.pullSecrets` | Secrets to use when pulling the image | `[]` | -| `strategyType` | Specifies the strategy used to replace old Pods by new ones | `Recreate` | -| `timezone` | Specify the container timezone | `UTC` | -| `puid` | process userID the instance should run as | `1000` | -| `pgid` | process groupID the instance should run as | `1000` | -| `config.enableUI` | Enable the Homebridge UI plugin | `true` | -| `config.plugins` | Additional Homebridge plugins to install at container startup | `[]` | -| `config.additionalPackages` | Additional Alpine packages to install at container statup | `[] ` | -| `probes.liveness.enabled` | Use the livenessProbe? | `true` | -| `probes.liveness.initialDelaySeconds` | Specify liveness `initialDelaySeconds` parameter for the deployment | `60` | -| `probes.liveness.failureThreshold` | Specify liveness `failureThreshold` parameter for the deployment | `5` | -| `probes.liveness.timeoutSeconds` | Specify liveness `timeoutSeconds` parameter for the deployment | `10` | -| `probes.readiness.enabled` | Use the readinessProbe? | `true` | -| `probes.readiness.initialDelaySeconds` | Specify readiness `initialDelaySeconds` parameter for the deployment | `60` | -| `probes.readiness.failureThreshold` | Specify readiness `failureThreshold` parameter for the deployment | `5` | -| `probes.readiness.timeoutSeconds` | Specify readiness `timeoutSeconds` parameter for the deployment | `10` | -| `probes.startup.enabled` | Use the startupProbe? (new in kubernetes 1.16) | `false` | -| `probes.startup.failureThreshold` | Specify startup `failureThreshold` parameter for the deployment | `5` | -| `probes.startup.periodSeconds` | Specify startup `periodSeconds` parameter for the deployment | `10` | -| `service.type` | Kubernetes service type for the homebridge GUI | `ClusterIP` | -| `service.httpPort` | Kubernetes port where the homebridge GUI is exposed | `8123` | -| `service.annotations` | Service annotations for the homebridge GUI | `{}` | -| `service.clusterIP` | Cluster IP for the homebridge GUI | `` | -| `service.externalIPs` | External IPs for the homebridge GUI | `[]` | -| `service.loadBalancerIP` | Loadbalancer IP for the homebridge GUI | `` | -| `service.loadBalancerSourceRanges` | Loadbalancer client IP restriction range for the homebridge GUI | `[]` | -| `service.externalTrafficPolicy` | Loadbalancer externalTrafficPolicy | `` | -| `hostNetwork` | Enable hostNetwork - needed for discovery to work | `false` | -| `service.nodePort` | nodePort to listen on for the homebridge GUI | `` | -| `ingress.enabled` | Enables Ingress | `false` | -| `ingress.annotations` | Ingress annotations | `{}` | -| `ingress.path` | Ingress path | `/` | -| `ingress.hosts` | Ingress accepted hostnames | `chart-example.local` | -| `ingress.tls` | Ingress TLS configuration | `[]` | -| `persistence.enabled` | Use persistent volume to store data | `true` | -| `persistence.size` | Size of persistent volume claim | `1Gi` | -| `persistence.existingClaim` | Use an existing PVC to persist data | `nil` | -| `persistence.storageClass` | Type of persistent volume claim | `-` | -| `persistence.accessMode` | Persistence access modes | `ReadWriteMany` | -| `persistence.skipuninstall` | Do not delete the pvc upon helm uninstall | `false` | -| `extraEnvs` | Extra ENV vars to pass to the homebridge container | `[]` | -| `resources` | CPU/Memory resource requests/limits or the homebridge GUI | `{}` | -| `nodeSelector` | Node labels for pod assignment or the homebridge GUI | `{}` | -| `tolerations` | Toleration labels for pod assignment or the homebridge GUI | `[]` | -| `affinity` | Affinity settings for pod assignment or the homebridge GUI | `{}` | -| `podAnnotations` | Key-value pairs to add as pod annotations | `{}` | +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. -Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, - -```shell -helm install --name my-release \ - --set timezone="UTC" \ +```console +helm install homebridge \ + --set env.TZ="America/New York" \ k8s-at-home/homebridge ``` -Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example, +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. -```shell -helm install --name my-release -f values.yaml k8s-at-home/homebridge +```console +helm install homebridge k8s-at-home/homebridge -f values.yaml ``` -Read through the [values.yaml](values.yaml) file. It has several commented out suggested values. +## 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/charts/tree/master/charts/common/) + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| affinity | object | `{}` | Affinity settings for pod assignment or the homebridge GUI | +| config.additionalPackages | list | `[]` | Additional Alpine packages to install at container statup such as `bash` | +| config.enableUI | bool | `true` | Enable the Homebridge UI plugin | +| config.plugins | list | `[]` | Additional Homebridge plugins to install at container startup such as `homebridge-hue` | +| extraEnvs | list | `[]` | Extra ENV vars to pass to the homebridge container | +| fullnameOverride | string | `""` | | +| hostNetwork | bool | `false` | Enable hostNetwork - needed for discovery to work | +| image.pullPolicy | string | `"IfNotPresent"` | Image pull policy | +| image.repository | string | `"oznu/homebridge"` | Image repository | +| image.tag | string | `"3.1.0"` | Overrides the image tag whose default is the chart appVersion. Possible values listed [here](https://hub.docker.com/r/oznu/homebridge/tags) | +| imagePullSecrets | list | `[]` | Secrets to use when pulling the image | +| ingress.annotations | object | `{}` | Ingress annotations | +| ingress.enabled | bool | `false` | Enables Ingress | +| ingress.hosts | list | `["chart-example.local"]` | Ingress accepted hostnames | +| ingress.path | string | `"/"` | Ingress path | +| ingress.tls | list | `[]` | Ingress TLS configuration | +| nameOverride | string | `""` | | +| nodeSelector | object | `{}` | Node labels for pod assignment or the homebridge GUI | +| persistence.accessMode | string | `"ReadWriteOnce"` | Persistence access modes | +| persistence.enabled | bool | `true` | Use persistent volume to store data | +| persistence.existingClaim | string | `nil` | Use an existing PVC to persist data | +| persistence.size | string | `"1Gi"` | Size of persistent volume claim | +| persistence.skipuninstall | bool | `false` | Do not delete the pvc upon helm uninstall | +| persistence.storageClass | string | `nil` | Type of persistent volume claim | +| pgid | int | `1000` | process groupID the instance should run as | +| podAnnotations | object | `{}` | Key-value pairs to add as pod annotations | +| podSecurityContext | object | `{}` | | +| probes.liveness.enabled | bool | `true` | Use the livenessProbe? | +| probes.liveness.failureThreshold | int | `5` | Specify liveness `failureThreshold` parameter for the deployment | +| probes.liveness.initialDelaySeconds | int | `60` | Specify liveness `initialDelaySeconds` parameter for the deployment | +| probes.liveness.timeoutSeconds | int | `10` | Specify liveness `timeoutSeconds` parameter for the deployment | +| probes.readiness.enabled | bool | `true` | Use the readinessProbe? | +| probes.readiness.failureThreshold | int | `5` | Specify readiness `failureThreshold` parameter for the deployment | +| probes.readiness.initialDelaySeconds | int | `60` | Specify readiness `initialDelaySeconds` parameter for the deployment | +| probes.readiness.timeoutSeconds | int | `10` | Specify readiness `timeoutSeconds` parameter for the deployment | +| probes.startup.enabled | bool | `false` | Use the startupProbe? (new in kubernetes 1.16) | +| probes.startup.failureThreshold | int | `30` | Specify startup `failureThreshold` parameter for the deployment | +| probes.startup.periodSeconds | int | `10` | Specify startup `periodSeconds` parameter for the deployment | +| puid | int | `1000` | process userID the instance should run as | +| replicaCount | int | `1` | | +| resources | object | `{}` | CPU/Memory resource requests/limits or the homebridge GUI | +| securityContext | object | `{}` | | +| service.annotations | object | `{}` | Service annotations for the homebridge GUI | +| service.clusterIP | string | `nil` | Cluster IP for the homebridge GUI | +| service.externalIPs | string | `nil` | External IPs for the homebridge GUI | +| service.externalTrafficPolicy | string | `nil` | Loadbalancer externalTrafficPolicy | +| service.homebridgePort | int | `51826` | | +| service.httpPort | int | `8080` | Kubernetes port where the homebridge GUI is exposed | +| service.loadBalancerIP | string | `nil` | Loadbalancer IP for the homebridge GUI | +| service.loadBalancerSourceRanges | string | `nil` | Loadbalancer client IP restriction range for the homebridge GUI | +| service.nodePort | string | `nil` | nodePort to listen on for the homebridge GUI | +| service.type | string | `"ClusterIP"` | Kubernetes service type for the homebridge GUI | +| serviceAccount.annotations | object | `{}` | | +| serviceAccount.create | bool | `true` | | +| serviceAccount.name | string | `""` | | +| strategyType | string | `"Recreate"` | Specifies the strategy used to replace old Pods by new ones | +| timezone | string | `"UTC"` | Specify the container timezone | +| tolerations | list | `[]` | Toleration labels for pod assignment or the homebridge GUI | + +## 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/charts/tree/master/charts/common/README.md#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). + +### [1.0.3] + +#### Added + +- N/A + +#### Changed + +- Use helm-docs + +#### Removed + +- N/A + +[1.0.3]: #1.0.3 + +## 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) \ No newline at end of file diff --git a/charts/homebridge/README.md.gotmpl b/charts/homebridge/README.md.gotmpl new file mode 100644 index 00000000..8b868671 --- /dev/null +++ b/charts/homebridge/README.md.gotmpl @@ -0,0 +1,145 @@ +{{- 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](../common/values.yaml) from the [common library](../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/charts/tree/master/charts/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/homebridge/README_CHANGELOG.md.gotmpl b/charts/homebridge/README_CHANGELOG.md.gotmpl new file mode 100644 index 00000000..5f6f22f9 --- /dev/null +++ b/charts/homebridge/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/charts/tree/master/charts/common/README.md#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). + +### [1.0.3] + +#### Added + +- N/A + +#### Changed + +- Use helm-docs + +#### Removed + +- N/A + +[1.0.3]: #1.0.3 +{{- end -}} diff --git a/charts/homebridge/README_CONFIG.md.gotmpl b/charts/homebridge/README_CONFIG.md.gotmpl new file mode 100644 index 00000000..e93d80bf --- /dev/null +++ b/charts/homebridge/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/homebridge/values.yaml b/charts/homebridge/values.yaml index 70f065aa..8ca73fb9 100644 --- a/charts/homebridge/values.yaml +++ b/charts/homebridge/values.yaml @@ -3,29 +3,39 @@ replicaCount: 1 image: + # -- Image repository repository: oznu/homebridge + # -- Image pull policy pullPolicy: IfNotPresent - # Overrides the image tag whose default is the chart appVersion. + # -- Overrides the image tag whose default is the chart appVersion. + # Possible values listed [here](https://hub.docker.com/r/oznu/homebridge/tags) tag: "3.1.0" +# -- Secrets to use when pulling the image imagePullSecrets: [] + nameOverride: "" fullnameOverride: "" -# upgrade strategy type (e.g. Recreate or RollingUpdate) +# -- Specifies the strategy used to replace old Pods by new ones strategyType: Recreate +# -- Specify the container timezone timezone: "UTC" +# -- process userID the instance should run as puid: 1000 +# -- process groupID the instance should run as pgid: 1000 config: + # -- Enable the Homebridge UI plugin enableUI: true + # -- Additional Homebridge plugins to install at container startup such as `homebridge-hue` plugins: [] - # - homebridge-hue + # -- Additional Alpine packages to install at container statup such as `bash` additionalPackages: [] - # - bash +# -- Extra ENV vars to pass to the homebridge container extraEnvs: [] serviceAccount: @@ -37,6 +47,7 @@ serviceAccount: # If not set and create is true, a name is generated using the fullname template name: "" +# -- Key-value pairs to add as pod annotations podAnnotations: {} podSecurityContext: {} @@ -51,60 +62,87 @@ securityContext: {} # runAsUser: 1000 service: + # -- Kubernetes service type for the homebridge GUI type: ClusterIP homebridgePort: 51826 + # -- Kubernetes port where the homebridge GUI is exposed httpPort: 8080 + # -- Service annotations for the homebridge GUI + annotations: {} + # -- (string) Cluster IP for the homebridge GUI + clusterIP: + # -- (string) External IPs for the homebridge GUI + externalIPs: + # -- (string) Loadbalancer IP for the homebridge GUI + loadBalancerIP: + # -- (string) Loadbalancer client IP restriction range for the homebridge GUI + loadBalancerSourceRanges: + # -- (string) Loadbalancer externalTrafficPolicy + externalTrafficPolicy: + # -- (int) nodePort to listen on for the homebridge GUI + nodePort: ingress: + # -- Enables Ingress enabled: false + # -- Ingress annotations annotations: {} - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" + # -- Ingress path path: / + # -- Ingress accepted hostnames hosts: - chart-example.local + # -- Ingress TLS configuration tls: [] # - secretName: chart-example-tls # hosts: # - chart-example.local +# -- Enable hostNetwork - needed for discovery to work hostNetwork: false persistence: + # -- Use persistent volume to store data enabled: true - ## homebridge data Persistent Volume Storage Class - ## If defined, storageClassName: - ## If set to "-", storageClassName: "", which disables dynamic provisioning - ## If undefined (the default) or set to null, no storageClassName spec is - ## set, choosing the default provisioner. (gp2 on AWS, standard on - ## GKE, AWS & OpenStack) - ## - # storageClass: "-" - ## - ## If you want to reuse an existing claim, you can pass the name of the PVC using - ## the existingClaim variable - # existingClaim: your-claim + # -- (string) Type of persistent volume claim + storageClass: + # -- (string) Use an existing PVC to persist data + existingClaim: + # -- Persistence access modes accessMode: ReadWriteOnce + # -- Size of persistent volume claim size: 1Gi - ## Do not delete the pvc upon helm uninstall + # -- Do not delete the pvc upon helm uninstall skipuninstall: false probes: liveness: + # -- Use the livenessProbe? enabled: true + # -- Specify liveness `initialDelaySeconds` parameter for the deployment initialDelaySeconds: 60 + # -- Specify liveness `failureThreshold` parameter for the deployment failureThreshold: 5 + # -- Specify liveness `timeoutSeconds` parameter for the deployment timeoutSeconds: 10 readiness: + # -- Use the readinessProbe? enabled: true + # -- Specify readiness `initialDelaySeconds` parameter for the deployment initialDelaySeconds: 60 + # -- Specify readiness `failureThreshold` parameter for the deployment failureThreshold: 5 + # -- Specify readiness `timeoutSeconds` parameter for the deployment timeoutSeconds: 10 startup: + # -- Use the startupProbe? (new in kubernetes 1.16) enabled: false + # -- Specify startup `failureThreshold` parameter for the deployment failureThreshold: 30 + # -- Specify startup `periodSeconds` parameter for the deployment periodSeconds: 10 +# -- CPU/Memory resource requests/limits or the homebridge GUI resources: {} # We usually recommend not to specify default resources and to leave this as a conscious # choice for the user. This also increases chances charts run on environments with little @@ -117,8 +155,11 @@ resources: {} # cpu: 100m # memory: 128Mi +# -- Node labels for pod assignment or the homebridge GUI nodeSelector: {} +# -- Toleration labels for pod assignment or the homebridge GUI tolerations: [] +# -- Affinity settings for pod assignment or the homebridge GUI affinity: {} diff --git a/charts/librespeed/Chart.yaml b/charts/librespeed/Chart.yaml index 4513a80f..9ae6580e 100644 --- a/charts/librespeed/Chart.yaml +++ b/charts/librespeed/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 appVersion: 1.0.6-12 description: Librespeed is a HTML5 webpage to test upload and download speeds name: librespeed -version: 2.0.0 +version: 2.0.1 keywords: - librespeed home: https://github.com/k8s-at-home/charts/tree/master/charts/librespeed diff --git a/charts/librespeed/README.md b/charts/librespeed/README.md index d690307d..91121d49 100644 --- a/charts/librespeed/README.md +++ b/charts/librespeed/README.md @@ -1,96 +1,152 @@ -# Librespeed +# librespeed -HTML5 based speedtest with password protected history +![Version: 2.0.1](https://img.shields.io/badge/Version-2.0.1-informational?style=flat-square) ![AppVersion: 1.0.6-12](https://img.shields.io/badge/AppVersion-1.0.6--12-informational?style=flat-square) -**This chart is not maintained by the Librespeed project and any issues with the chart should be raised [here](https://github.com/k8s-at-home/charts/issues/new)** +Librespeed is a HTML5 webpage to test upload and download speeds -## TL;DR; +**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)** -```shell +## Source Code + +* +* +* + +## Requirements + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| + +## TL;DR + +```console helm repo add k8s-at-home https://k8s-at-home.com/charts/ -helm install k8s-at-home/librespeed +helm repo update +helm install librespeed k8s-at-home/librespeed ``` -## Introduction - -This code is adopted from the [Linuxserver Librespeed docker image](https://hub.docker.com/r/linuxserver/librespeed) which runs the [Librespeed application](https://github.com/librespeed/speedtest) - ## Installing the Chart -To install the chart with the release name `my-release`: +To install the chart with the release name `librespeed` -```shell -helm install --name my-release k8s-at-home/librespeed +```console +helm install librespeed k8s-at-home/librespeed ``` + ## Uninstalling the Chart -To uninstall/delete the `my-release` deployment: +To uninstall the `librespeed` deployment -```shell -helm delete my-release --purge +```console +helm uninstall librespeed ``` -The command removes all the Kubernetes components associated with the chart and deletes the release. +The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release. ## Configuration -The following tables lists the configurable parameters of the Librespeed chart and their default values. +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](../common/values.yaml) from the [common library](../common). -| Parameter | Description | Default | -|:---------------------------------- |:----------------------------------------------------------------------- |:------------------------- | -| `image.repository` | Librespeed image | `linuxserver/librespeed` | -| `image.tag` | Librespeed image tag | `5.2-ls25` | -| `image.pullPolicy` | Librespeed image pull policy | `IfNotPresent` | -| `strategyType` | Specifies the strategy used to replace old Pods by new ones | `Recreate` | -| `livenessProbePath` | Default livenessProbe path | `/` | -| `readinessProbePath` | Default readinessProbe path | `/` | -| `timezone` | Default timezone | `UTC` | -| `puid` | Default UID | `1000` | -| `pgid` | Default GID | `1000` | -| `telemetry` | Enable/Disable history | `false` | -| `title` | Title of your speedtest | `LibreSpeed` | -| `idObfuscation` | Test IDs are obfuscated, avoids exposing database internal sequential IDs| `false` | -| `redactIPAddresses` | IP addresses/hostnames are redacted from the collected telemetry | `false` | -| `email` | Email address for GDPR requests. Must be specified when telemetry=true | `fake@fake.com | -| `distance` | how the distance from the server is measured. Options `km`, `mi`, or `` | `km` | -| `service.type` | Kubernetes service type for the GUI | `ClusterIP` | -| `service.port` | Kubernetes port where the GUI is exposed | `1880` | -| `service.nodePort` | Kubernetes nodePort where the GUI is exposed | `` | -| `service.annotations` | Service annotations for the GUI | `{}` | -| `service.labels` | Custom labels | `{}` | -| `service.loadBalancerIP` | Loadbalance IP for the GUI | `{}` | -| `service.loadBalancerSourceRanges` | List of IP CIDRs allowed access to load balancer (if supported) | None | -| `service.externalTrafficPolicy` | Set the externalTrafficPolicy in the Service to either Cluster or Local | `Cluster` | -| `ingress.enabled` | Enables Ingress | `false` | -| `ingress.annotations` | Ingress annotations | `{}` | -| `ingress.path` | Ingress path | `/` | -| `ingress.hosts` | Ingress accepted hostnames | `chart-example.local` | -| `ingress.tls` | Ingress TLS configuration | `[]` | -| `persistence.enabled` | Use persistent volume to store data | `false` | -| `persistence.size` | Size of persistent volume claim | `5Gi` | -| `persistence.existingClaim` | Use an existing PVC to persist data | `nil` | -| `persistence.storageClass` | Type of persistent volume claim | `-` | -| `persistence.accessModes` | Persistence access modes | `ReadWriteOnce` | -| `persistence.subPath` | Mount a sub dir of the persistent volume | `nil` | -| `resources` | CPU/Memory resource requests/limits | `{}` | -| `nodeSelector` | Node labels for pod assignment | `{}` | -| `tolerations` | Toleration labels for pod assignment | `[]` | -| `affinity` | Affinity settings for pod assignment | `{}` | -| `podAnnotations` | Key-value pairs to add as pod annotations | `{}` | -| `deploymentAnnotations` | Key-value pairs to add as deployment annotations | `{}` | +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. -Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, - -```shell -helm install --name my-release \ - --set config.timezone="America/New_York" \ +```console +helm install librespeed \ + --set env.TZ="America/New York" \ k8s-at-home/librespeed ``` -Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example, +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. -```shell -helm install --name my-release -f values.yaml k8s-at-home/librespeed +```console +helm install librespeed k8s-at-home/librespeed -f values.yaml ``` -Read through the [values.yaml](values.yaml) file. It has several commented out suggested values. +## 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/charts/tree/master/charts/common/) + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| affinity | object | `{}` | Affinity settings for pod assignment or the homebridge GUI | +| deploymentAnnotations | object | `{}` | Key-value pairs to add as deployment annotations | +| distance | string | `"km"` | how the distance from the server is measured. Options `km`, `mi`, or `` | +| email | string | `nil` | Email address for GDPR requests. Must be specified when telemetry=true | +| fullnameOverride | string | `""` | | +| idObfuscation | bool | `false` | Test IDs are obfuscated, avoids exposing database internal sequential IDs | +| image.pullPolicy | string | `"IfNotPresent"` | Librespeed image pull policy | +| image.repository | string | `"adolfintel/speedtest"` | Librespeed image | +| image.tag | string | `"latest"` | Librespeed image tag | +| ingress.annotations | object | `{}` | Ingress annotations | +| ingress.enabled | bool | `false` | Enables Ingress | +| ingress.hosts | list | `["chart-example.local"]` | Ingress accepted hostnames | +| ingress.path | string | `"/"` | Ingress path | +| ingress.tls | list | `[]` | Ingress TLS configuration | +| livenessProbePath | string | `"/"` | Default livenessProbe path | +| nameOverride | string | `""` | | +| nodeSelector | object | `{}` | Node labels for pod assignment or the homebridge GUI | +| password | string | `"ChangeMe"` | password for stats page | +| persistence.accessMode | string | `"ReadWriteOnce"` | Persistence access modes | +| persistence.enabled | bool | `true` | Use persistent volume to store data | +| persistence.existingClaim | string | `nil` | Use an existing PVC to persist data | +| persistence.size | string | `"1Gi"` | Size of persistent volume claim | +| persistence.skipuninstall | bool | `false` | Do not delete the pvc upon helm uninstall | +| persistence.storageClass | string | `nil` | Type of persistent volume claim | +| persistence.subPath | string | `nil` | When mounting the data volume you may specify a subPath | +| pgid | string | `"1000"` | Default GID | +| podAnnotations | object | `{}` | Key-value pairs to add as pod annotations | +| puid | string | `"1000"` | Default UID | +| readinessProbePath | string | `"/"` | Default readinessProbe path | +| redactIPAddresses | bool | `false` | IP addresses/hostnames are redacted from the collected telemetry | +| resources | object | `{}` | CPU/Memory resource requests/limits or the homebridge GUI | +| service.annotations | object | `{}` | Service annotations for the GUI | +| service.externalTrafficPolicy | string | `"Cluster"` | Set the externalTrafficPolicy in the Service to either Cluster or Local | +| service.labels | object | `{}` | Custom labels | +| service.loadBalancerIP | string | `nil` | Loadbalance IP for the GUI | +| service.loadBalancerSourceRanges | list | `nil` | List of IP CIDRs allowed access to load balancer (if supported) | +| service.nodePort | int | `nil` | Kubernetes nodePort where the GUI is exposed | +| service.port | int | `80` | Kubernetes port where the GUI is exposed | +| service.type | string | `"ClusterIP"` | Kubernetes service type for the GUI | +| strategyType | string | `"Recreate"` | Specifies the strategy used to replace old Pods by new ones | +| telemetry | bool | `false` | Enable/Disable history | +| timezone | string | `"UTC"` | Default timezone | +| title | string | `"LibreSpeed"` | Title of your speedtest | +| tolerations | list | `[]` | Toleration labels for pod assignment or the homebridge GUI | + +## 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/charts/tree/master/charts/common/README.md#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). + +### [2.0.1] + +#### Added + +- N/A + +#### Changed + +- Use helm-docs + +#### Removed + +- N/A + +[2.0.1]: #2.0.1 + +## 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) \ No newline at end of file diff --git a/charts/librespeed/README.md.gotmpl b/charts/librespeed/README.md.gotmpl new file mode 100644 index 00000000..8b868671 --- /dev/null +++ b/charts/librespeed/README.md.gotmpl @@ -0,0 +1,145 @@ +{{- 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](../common/values.yaml) from the [common library](../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/charts/tree/master/charts/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/librespeed/README_CHANGELOG.md.gotmpl b/charts/librespeed/README_CHANGELOG.md.gotmpl new file mode 100644 index 00000000..dfccc3ca --- /dev/null +++ b/charts/librespeed/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/charts/tree/master/charts/common/README.md#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). + +### [2.0.1] + +#### Added + +- N/A + +#### Changed + +- Use helm-docs + +#### Removed + +- N/A + +[2.0.1]: #2.0.1 +{{- end -}} diff --git a/charts/librespeed/README_CONFIG.md.gotmpl b/charts/librespeed/README_CONFIG.md.gotmpl new file mode 100644 index 00000000..e93d80bf --- /dev/null +++ b/charts/librespeed/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/librespeed/values.yaml b/charts/librespeed/values.yaml index a75d6ab2..ae476a02 100644 --- a/charts/librespeed/values.yaml +++ b/charts/librespeed/values.yaml @@ -2,112 +2,122 @@ # This is a YAML-formatted file. # Declare variables to be passed into your templates. -# upgrade strategy type (e.g. Recreate or RollingUpdate) +# -- Specifies the strategy used to replace old Pods by new ones strategyType: Recreate image: + # -- Librespeed image repository: adolfintel/speedtest + # -- Librespeed image tag tag: latest + # -- Librespeed image pull policy pullPolicy: IfNotPresent nameOverride: "" fullnameOverride: "" +# -- Default livenessProbe path livenessProbePath: / +# -- Default readinessProbe path readinessProbePath: / +# -- Default timezone timezone: "UTC" +# -- Default UID puid: "1000" +# -- Default GID pgid: "1000" -## Store results? If enabled, password is required +# -- Enable/Disable history telemetry: false -## The following are required when telemetry is enabled -## If telemetry is enabled, a stats page will be available at http://your.server/results/stats.php -# password: "ChangeMe" -# email: "fake@fake.com" +# -- password for stats page +password: "ChangeMe" +# -- (string) Email address for GDPR requests. Must be specified when telemetry=true +email: -## The following are optional. The defaults are listed -# title: LibreSpeed -## Test IDs are obfuscated, to avoid exposing the database internal sequential IDs -# idObfuscation: false -## IP addresses and hostnames are redacted from the collected telemetry, for better privacy -# redactIPAddresses: false -## Specifies how the distance from the server is measured. Can be either km for kilometers, mi for miles, or an empty string to disable distance measurement. -# distance: "km" +# -- Title of your speedtest +title: LibreSpeed +# -- Test IDs are obfuscated, avoids exposing database internal sequential IDs +idObfuscation: false +# -- IP addresses/hostnames are redacted from the collected telemetry +redactIPAddresses: false +# -- how the distance from the server is measured. Options `km`, `mi`, or `` +distance: "km" service: + # -- Kubernetes service type for the GUI type: ClusterIP + # -- Kubernetes port where the GUI is exposed port: 80 - ## Specify the nodePort value for the LoadBalancer and NodePort service types. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport - ## - # nodePort: - ## Provide any additional annotations which may be required. This can be used to - ## set the LoadBalancer service type to internal only. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer - ## + # -- (int) Kubernetes nodePort where the GUI is exposed + nodePort: + # -- Service annotations for the GUI annotations: {} + # -- Custom labels labels: {} - ## Use loadBalancerIP to request a specific static IP, - ## otherwise leave blank - ## + # -- (string) Loadbalance IP for the GUI loadBalancerIP: - # loadBalancerSourceRanges: [] - ## Set the externalTrafficPolicy in the Service to either Cluster or Local - # externalTrafficPolicy: Cluster + # -- (list) List of IP CIDRs allowed access to load balancer (if supported) + loadBalancerSourceRanges: + # -- Set the externalTrafficPolicy in the Service to either Cluster or Local + externalTrafficPolicy: ingress: + # -- Enables Ingress enabled: false + # -- Ingress annotations annotations: {} - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" + # -- Ingress path path: / + # -- Ingress accepted hostnames hosts: - chart-example.local + # -- Ingress TLS configuration tls: [] # - secretName: chart-example-tls # hosts: # - chart-example.local persistence: + # -- Use persistent volume to store data enabled: false - ## node-red data Persistent Volume Storage Class - ## If defined, storageClassName: - ## If set to "-", storageClassName: "", which disables dynamic provisioning - ## If undefined (the default) or set to null, no storageClassName spec is - ## set, choosing the default provisioner. (gp2 on AWS, standard on - ## GKE, AWS & OpenStack) - ## - # storageClass: "-" - ## - ## If you want to reuse an existing claim, you can pass the name of the PVC using - ## the existingClaim variable - # existingClaim: your-claim + # -- (string) Type of persistent volume claim + storageClass: + # -- (string) Use an existing PVC to persist data + existingClaim: + # -- Persistence access modes accessMode: ReadWriteOnce + # -- Size of persistent volume claim size: 1Gi - ## When mounting the data volume you may specify a subPath - # subPath: /configs/node-red - + # -- Do not delete the pvc upon helm uninstall + skipuninstall: false + # -- (string) When mounting the data volume you may specify a subPath + subPath: +# -- CPU/Memory resource requests/limits or the homebridge GUI resources: {} # We usually recommend not to specify default resources and to leave this as a conscious # choice for the user. This also increases chances charts run on environments with little # resources, such as Minikube. If you do want to specify resources, uncomment the following # lines, adjust them as necessary, and remove the curly braces after 'resources:'. # limits: - # cpu: 100m - # memory: 128Mi + # cpu: 100m + # memory: 128Mi # requests: - # cpu: 100m - # memory: 128Mi + # cpu: 100m + # memory: 128Mi +# -- Node labels for pod assignment or the homebridge GUI nodeSelector: {} +# -- Toleration labels for pod assignment or the homebridge GUI tolerations: [] +# -- Affinity settings for pod assignment or the homebridge GUI affinity: {} +# -- Key-value pairs to add as pod annotations podAnnotations: {} +# -- Key-value pairs to add as deployment annotations deploymentAnnotations: {} diff --git a/charts/node-feature-discovery/Chart.yaml b/charts/node-feature-discovery/Chart.yaml index 6e59f7c5..f31c8e26 100644 --- a/charts/node-feature-discovery/Chart.yaml +++ b/charts/node-feature-discovery/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 name: node-feature-discovery -version: 2.1.0 +version: 2.1.1 appVersion: 0.7.0 description: Detect hardware features available on each node in a Kubernetes cluster, and advertises those features using node labels keywords: diff --git a/charts/node-feature-discovery/README.md b/charts/node-feature-discovery/README.md index 9f3d9c54..112ec87c 100644 --- a/charts/node-feature-discovery/README.md +++ b/charts/node-feature-discovery/README.md @@ -1,72 +1,141 @@ -# node-feature-discovery helm chart +# node-feature-discovery -This is a helm chart for [node-feature-discovery](https://github.com/kubernetes-sigs/node-feature-discovery) using the master/worker pattern. +![Version: 2.1.1](https://img.shields.io/badge/Version-2.1.1-informational?style=flat-square) ![AppVersion: 0.7.0](https://img.shields.io/badge/AppVersion-0.7.0-informational?style=flat-square) + +Detect hardware features available on each node in a Kubernetes cluster, and advertises those features using node labels + +**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 + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| ## TL;DR -```shell +```console helm repo add k8s-at-home https://k8s-at-home.com/charts/ -helm install k8s-at-home/node-feature-discovery +helm repo update +helm install node-feature-discovery k8s-at-home/node-feature-discovery ``` ## Installing the Chart -To install the chart with the release name `my-release`: +To install the chart with the release name `node-feature-discovery` -```shell -helm install my-release k8s-at-home/node-feature-discovery +```console +helm install node-feature-discovery k8s-at-home/node-feature-discovery ``` ## Uninstalling the Chart -To uninstall/delete the `my-release` deployment: +To uninstall the `node-feature-discovery` deployment -```shell -helm delete my-release --purge +```console +helm uninstall node-feature-discovery ``` -The command removes all the Kubernetes components associated with the chart and deletes the release. +The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release. ## Configuration -The following tables lists the configurable parameters of the Sentry chart and their default values. -Read through the [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/node-feature-discovery/values.yaml) file. It has several commented out suggested values. +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](../common/values.yaml) from the [common library](../common). -| Parameter | Description | Default | -| ------------------------------------------- | -------------------------------------------------------------------------------------------- | ----------------------------------------------------- | -| `image.repository` | Image repository | `quay.io/kubernetes_incubator/node-feature-discovery` | -| `image.tag` | Image tag. Possible values listed [here](https://github.com/kubernetes-sigs/node-feature-discovery/releases). | `v0.6.0` | -| `image.pullPolicy` | Image pull policy | `IfNotPresent` | -| `strategyType` | Specifies the strategy used to replace old Pods by new ones | `Recreate` | -| `sources` | List of sources to consider when labeling - see [documentation](https://github.com/kubernetes-sigs/node-feature-discovery#feature-sources) for info | `[]` | -| `config` | node-feature-discovery configuration - see [nfd-worker.conf.example](https://github.com/kubernetes-sigs/node-feature-discovery/blob/master/nfd-worker.conf.example) for example | `{}` | -| `service.type` | Kubernetes service type for the GUI | `ClusterIP` | -| `service.port` | Kubernetes port where the GUI is exposed | `8080` | -| `service.annotations` | Service annotations for the GUI | `{}` | -| `service.labels` | Custom labels | `{}` | -| `service.loadBalancerIP` | Loadbalancer IP for the GUI | `{}` | -| `service.loadBalancerSourceRanges` | List of IP CIDRs allowed access to load balancer (if supported) | `nil` | -| `podAnnotations` | Key-value pairs to add as pod annotations | `{}` | -| `master.replicaCount` | Number of replicas to scale the master component to | `1` | -| `master.resources` | CPU/Memory resource requests/limits for master component | `{}` | -| `master.nodeSelector` | Node labels for master component pod assignment | `{}` | -| `master.tolerations` | Toleration labels for master component pod assignment | See [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/node-feature-discovery/values.yaml) | -| `master.affinity` | Affinity settings for master component pod assignment | See [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/node-feature-discovery/values.yaml) | -| `worker.resources` | CPU/Memory resource requests/limits for worker component | `{}` | -| `worker.nodeSelector` | Node labels for worker component pod assignment | `{}` | -| `worker.tolerations` | Toleration labels for worker component pod assignment | `[]` | -| `worker.affinity` | Affinity settings for worker component pod assignment | `{}` | - -Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. ```console -helm install my-release \ - --set image.pullPolicy="Always" \ +helm install node-feature-discovery \ + --set env.TZ="America/New York" \ k8s-at-home/node-feature-discovery ``` -Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example, +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. ```console -helm install my-release -f values.yaml k8s-at-home/node-feature-discovery +helm install node-feature-discovery k8s-at-home/node-feature-discovery -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/charts/tree/master/charts/common/) + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| config | string | `"#sources:\n# cpu:\n# cpuid:\n## NOTE: whitelist has priority over blacklist\n# attributeBlacklist:\n# - \"BMI1\"\n# - \"BMI2\"\n# - \"CLMUL\"\n# - \"CMOV\"\n# - \"CX16\"\n# - \"ERMS\"\n# - \"F16C\"\n# - \"HTT\"\n# - \"LZCNT\"\n# - \"MMX\"\n# - \"MMXEXT\"\n# - \"NX\"\n# - \"POPCNT\"\n# - \"RDRAND\"\n# - \"RDSEED\"\n# - \"RDTSCP\"\n# - \"SGX\"\n# - \"SSE\"\n# - \"SSE2\"\n# - \"SSE3\"\n# - \"SSE4.1\"\n# - \"SSE4.2\"\n# - \"SSSE3\"\n# attributeWhitelist:\n# kernel:\n# kconfigFile: \"/path/to/kconfig\"\n# configOpts:\n# - \"NO_HZ\"\n# - \"X86\"\n# - \"DMI\"\n# pci:\n# deviceClassWhitelist:\n# - \"0200\"\n# - \"03\"\n# - \"12\"\n# deviceLabelFields:\n# - \"class\"\n# - \"vendor\"\n# - \"device\"\n# - \"subsystem_vendor\"\n# - \"subsystem_device\"\n# usb:\n# deviceClassWhitelist:\n# - \"0e\"\n# - \"ef\"\n# - \"fe\"\n# - \"ff\"\n# deviceLabelFields:\n# - \"class\"\n# - \"vendor\"\n# - \"device\"\n# custom:\n# - name: \"my.kernel.feature\"\n# matchOn:\n# - loadedKMod: [\"example_kmod1\", \"example_kmod2\"]\n# - name: \"my.pci.feature\"\n# matchOn:\n# - pciId:\n# class: [\"0200\"]\n# vendor: [\"15b3\"]\n# device: [\"1014\", \"1017\"]\n# - pciId :\n# vendor: [\"8086\"]\n# device: [\"1000\", \"1100\"]\n# - name: \"my.usb.feature\"\n# matchOn:\n# - usbId:\n# class: [\"ff\"]\n# vendor: [\"03e7\"]\n# device: [\"2485\"]\n# - usbId:\n# class: [\"fe\"]\n# vendor: [\"1a6e\"]\n# device: [\"089a\"]\n# - name: \"my.combined.feature\"\n# matchOn:\n# - pciId:\n# vendor: [\"15b3\"]\n# device: [\"1014\", \"1017\"]\n# loadedKMod : [\"vendor_kmod1\", \"vendor_kmod2\"]\n"` | node-feature-discovery configuration - see https://github.com/kubernetes-sigs/node-feature-discovery/blob/master/nfd-worker.conf.example for example | +| fullnameOverride | string | `""` | | +| image.pullPolicy | string | `"IfNotPresent"` | Image pull policy | +| image.repository | string | `"gcr.io/k8s-staging-nfd/node-feature-discovery"` | Image repository | +| image.tag | string | `"v0.7.0"` | Image tag. Possible values listed [here](https://github.com/kubernetes-sigs/node-feature-discovery/releases). | +| imagePullSecrets | list | `[]` | | +| master.affinity | object | `{"nodeAffinity":{"preferredDuringSchedulingIgnoredDuringExecution":[{"preference":{"matchExpressions":[{"key":"node-role.kubernetes.io/master","operator":"In","values":[""]}]},"weight":1}]}}` | Affinity settings for master component pod assignment | +| master.nodeSelector | object | `{}` | Node labels for master component pod assignment | +| master.replicaCount | int | `1` | Number of replicas to scale the master component to | +| master.resources | object | `{}` | CPU/Memory resource requests/limits for master component | +| master.securityContext | object | `{}` | | +| master.tolerations | list | `[{"effect":"NoSchedule","key":"node-role.kubernetes.io/master","operator":"Equal","value":""}]` | Toleration labels for master component pod assignment. | +| nameOverride | string | `""` | | +| podAnnotations | object | `{}` | Key-value pairs to add as pod annotations | +| podSecurityContext | object | `{}` | | +| rbac.create | bool | `true` | | +| service.annotations | object | `{}` | Service annotations for the GUI | +| service.clusterIP | string | `""` | | +| service.externalTrafficPolicy | string | `"Local"` | Set the externalTrafficPolicy in the Service to either Cluster or Local | +| service.labels | object | `{}` | Custom labels | +| service.loadBalancerIP | string | `nil` | Loadbalance IP for the GUI | +| service.loadBalancerSourceRanges | list | `nil` | List of IP CIDRs allowed access to load balancer (if supported) | +| service.nodePort | int | `nil` | Kubernetes nodePort where the GUI is exposed | +| service.port | int | `8080` | Kubernetes port where the GUI is exposed | +| service.type | string | `"ClusterIP"` | Kubernetes service type for the GUI | +| serviceAccount.annotations | object | `{}` | | +| serviceAccount.create | bool | `true` | | +| serviceAccount.name | string | `""` | | +| sources | list | `[]` | List of sources to consider when labeling - see [documentation](https://github.com/kubernetes-sigs/node-feature-discovery#feature-sources) for info | +| worker.affinity | object | `{}` | Affinity settings for worker component pod assignment | +| worker.nodeSelector | object | `{}` | Node labels for worker component pod assignment | +| worker.resources | object | `{}` | CPU/Memory resource requests/limits for worker component | +| worker.securityContext | object | `{}` | | +| worker.tolerations | list | `[]` | Toleration labels for worker component pod assignment | + +## 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/charts/tree/master/charts/common/README.md#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). + +### [1.0.0] + +#### Added + +- N/A + +#### Changed + +- N/A + +#### Removed + +- N/A + +[1.0.0]: #1.0.0 + +## 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) \ No newline at end of file diff --git a/charts/node-feature-discovery/README.md.gotmpl b/charts/node-feature-discovery/README.md.gotmpl new file mode 100644 index 00000000..8b868671 --- /dev/null +++ b/charts/node-feature-discovery/README.md.gotmpl @@ -0,0 +1,145 @@ +{{- 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](../common/values.yaml) from the [common library](../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/charts/tree/master/charts/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/node-feature-discovery/README_CHANGELOG.md.gotmpl b/charts/node-feature-discovery/README_CHANGELOG.md.gotmpl new file mode 100644 index 00000000..e6167dad --- /dev/null +++ b/charts/node-feature-discovery/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/charts/tree/master/charts/common/README.md#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). + +### [1.0.0] + +#### Added + +- N/A + +#### Changed + +- N/A + +#### Removed + +- N/A + +[1.0.0]: #1.0.0 +{{- end -}} diff --git a/charts/node-feature-discovery/README_CONFIG.md.gotmpl b/charts/node-feature-discovery/README_CONFIG.md.gotmpl new file mode 100644 index 00000000..e93d80bf --- /dev/null +++ b/charts/node-feature-discovery/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/node-feature-discovery/values.yaml b/charts/node-feature-discovery/values.yaml index 2bd3c13d..05b15d42 100644 --- a/charts/node-feature-discovery/values.yaml +++ b/charts/node-feature-discovery/values.yaml @@ -3,9 +3,11 @@ # Declare variables to be passed into your templates. image: + # -- Image repository repository: gcr.io/k8s-staging-nfd/node-feature-discovery + # -- Image pull policy pullPolicy: IfNotPresent - # Overrides the image tag whose default is the chart appVersion. + # -- Image tag. Possible values listed [here](https://github.com/kubernetes-sigs/node-feature-discovery/releases). tag: "v0.7.0" imagePullSecrets: [] @@ -25,7 +27,7 @@ rbac: # Specifies whether RBAC roles should be created create: true -# Comma separated list of feature sources. +# -- List of sources to consider when labeling - see [documentation](https://github.com/kubernetes-sigs/node-feature-discovery#feature-sources) for info sources: [] # - cpu # - custom @@ -39,7 +41,7 @@ sources: [] # - system # - usb -# node-feature-discovery configuration - see https://github.com/kubernetes-sigs/node-feature-discovery/blob/master/nfd-worker.conf.example for example +# -- node-feature-discovery configuration - see https://github.com/kubernetes-sigs/node-feature-discovery/blob/master/nfd-worker.conf.example for example config: | #sources: # cpu: @@ -128,28 +130,32 @@ config: | # loadedKMod : ["vendor_kmod1", "vendor_kmod2"] service: + # -- Kubernetes service type for the GUI type: ClusterIP clusterIP: "" + # -- Kubernetes port where the GUI is exposed port: 8080 + # -- (int) Kubernetes nodePort where the GUI is exposed + nodePort: + # -- Service annotations for the GUI + annotations: {} + # -- Custom labels + labels: {} + # -- (string) Loadbalance IP for the GUI + loadBalancerIP: + # -- (list) List of IP CIDRs allowed access to load balancer (if supported) + loadBalancerSourceRanges: + # -- Set the externalTrafficPolicy in the Service to either Cluster or Local + externalTrafficPolicy: - ## Specify the nodePort value for the LoadBalancer and NodePort service types. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport - # nodePort: - ## List of IP addresses at which the hass-configurator service is available - ## Ref: https://kubernetes.io/docs/user-guide/services/#external-ips - externalIPs: [] - ## Use loadBalancerIP to request a specific static IP, otherwise leave blank - loadBalancerIP: "" - # loadBalancerSourceRanges: [] - ## Set the externalTrafficPolicy in the Service to either Cluster or Local - externalTrafficPolicy: # Local - +# -- Key-value pairs to add as pod annotations podAnnotations: {} podSecurityContext: {} # fsGroup: 2000 master: + # -- Number of replicas to scale the master component to replicaCount: 1 securityContext: {} @@ -160,6 +166,7 @@ master: # runAsNonRoot: true # runAsUser: 1000 + # -- CPU/Memory resource requests/limits for master component resources: {} # We usually recommend not to specify default resources and to leave this as a conscious # choice for the user. This also increases chances charts run on environments with little @@ -172,14 +179,17 @@ master: # cpu: 100m # memory: 128Mi + # -- Node labels for master component pod assignment nodeSelector: {} + # -- Toleration labels for master component pod assignment. tolerations: - key: "node-role.kubernetes.io/master" operator: "Equal" value: "" effect: "NoSchedule" + # -- Affinity settings for master component pod assignment affinity: nodeAffinity: preferredDuringSchedulingIgnoredDuringExecution: @@ -199,6 +209,7 @@ worker: # runAsNonRoot: true # runAsUser: 1000 + # -- CPU/Memory resource requests/limits for worker component resources: {} # We usually recommend not to specify default resources and to leave this as a conscious # choice for the user. This also increases chances charts run on environments with little @@ -211,8 +222,11 @@ worker: # cpu: 100m # memory: 128Mi + # -- Node labels for worker component pod assignment nodeSelector: {} + # -- Toleration labels for worker component pod assignment tolerations: [] + # -- Affinity settings for worker component pod assignment affinity: {} diff --git a/charts/oauth2-proxy/Chart.yaml b/charts/oauth2-proxy/Chart.yaml index f3e7077d..0bc80800 100644 --- a/charts/oauth2-proxy/Chart.yaml +++ b/charts/oauth2-proxy/Chart.yaml @@ -1,5 +1,5 @@ name: oauth2-proxy -version: 5.0.0 +version: 5.0.1 apiVersion: v1 appVersion: 7.0.1 home: https://oauth2-proxy.github.io/oauth2-proxy/ diff --git a/charts/oauth2-proxy/README.md b/charts/oauth2-proxy/README.md index e762e2fd..b8f3be52 100644 --- a/charts/oauth2-proxy/README.md +++ b/charts/oauth2-proxy/README.md @@ -1,154 +1,72 @@ # oauth2-proxy -[oauth2-proxy](https://github.com/pusher/oauth2_proxy) is a reverse proxy and static file server that provides authentication using Providers (Google, GitHub, and others) to validate accounts by email, domain or group. +![Version: 5.0.1](https://img.shields.io/badge/Version-5.0.1-informational?style=flat-square) ![AppVersion: 7.0.1](https://img.shields.io/badge/AppVersion-7.0.1-informational?style=flat-square) -## TL;DR; +A reverse proxy that provides authentication with Google, Github or other providers + +**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.9.0-0` + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| + +## TL;DR ```console -$ helm install stable/oauth2-proxy +helm repo add k8s-at-home https://k8s-at-home.com/charts/ +helm repo update +helm install oauth2-proxy k8s-at-home/oauth2-proxy ``` -## Introduction - -This chart bootstraps an oauth2-proxy deployment on a [Kubernetes](http://kubernetes.io) cluster using the [Helm](https://helm.sh) package manager. - ## Installing the Chart -To install the chart with the release name `my-release`: +To install the chart with the release name `oauth2-proxy` ```console -$ helm install stable/oauth2-proxy --name my-release +helm install oauth2-proxy k8s-at-home/oauth2-proxy ``` -The command deploys oauth2-proxy on the Kubernetes cluster in the default configuration. The [configuration](#configuration) section lists the parameters that can be configured during installation. - ## Uninstalling the Chart -To uninstall/delete the `my-release` deployment: +To uninstall the `oauth2-proxy` deployment ```console -$ helm delete my-release +helm uninstall oauth2-proxy ``` -The command removes all the Kubernetes components associated with the chart and deletes the release. - -## Upgrading an existing Release to a new major version - -A major chart version change (like v1.2.3 -> v2.0.0) indicates that there is an -incompatible breaking change needing manual actions. - -### To 1.0.0 - -This version upgrade oauth2-proxy to v4.0.0. Please see the [changelog](https://github.com/pusher/oauth2_proxy/blob/v4.0.0/CHANGELOG.md#v400) in order to upgrade. - -### To 2.0.0 - -Version 2.0.0 of this chart introduces support for Kubernetes v1.16.x by way of addressing the deprecation of the Deployment object apiVersion `apps/v1beta2`. See [the v1.16 API deprecations page](https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/) for more information. - -Due to [this issue](https://github.com/helm/helm/issues/6583) there may be errors performing a `helm upgrade`of this chart from versions earlier than 2.0.0. - -### To 3.0.0 - -Version 3.0.0 introduces support for [EKS IAM roles for service accounts](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) by adding a managed service account to the chart. This is a breaking change since the service account is enabled by default. To disable this behaviour set `serviceAccount.enabled` to `false` - -### To 4.0.0 - -This is a breaking change as the chart was moved to k8s-at-home. No other change on top of the 3.x.x branch. - -## To 5.0.0 - -Not many breaking changes. See the [changelog](https://github.com/oauth2-proxy/oauth2-proxy/releases/tag/v7.0.0) for oauth2-proxy, specifically the section "Breaking Changes" for a few configuration changes, particularly to do with the Azure provider. +The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release. ## Configuration -The following table lists the configurable parameters of the oauth2-proxy chart and their default values. +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](../common/values.yaml) from the [common library](../common). -Parameter | Description | Default ---- | --- | --- -`affinity` | node/pod affinities | None -`authenticatedEmailsFile.enabled` | Enables authorize individual email addresses | `false` -`authenticatedEmailsFile.template` | Name of the configmap that is handled outside of that chart | `""` -`authenticatedEmailsFile.restricted_access` | [email addresses](https://github.com/pusher/oauth2_proxy#email-authentication) list config | `""` -`config.clientID` | oauth client ID | `""` -`config.clientSecret` | oauth client secret | `""` -`config.cookieSecret` | server specific cookie for the secret; create a new one with `openssl rand -base64 32 | head -c 32 | base64` | `""` -`config.existingSecret` | existing Kubernetes secret to use for OAuth2 credentials. See [secret template](https://github.com/helm/charts/blob/master/stable/oauth2-proxy/templates/secret.yaml) for the required values | `nil` -`config.configFile` | custom [oauth2_proxy.cfg](https://github.com/pusher/oauth2_proxy/blob/master/contrib/oauth2_proxy.cfg.example) contents for settings not overridable via environment nor command line | `""` -`config.existingConfig` | existing Kubernetes configmap to use for the configuration file. See [config template](https://github.com/helm/charts/blob/master/stable/oauth2-proxy/templates/configmap.yaml) for the required values | `nil` -`config.google.adminEmail` | user impersonated by the google service account | `""` -`config.google.serviceAccountJson` | google service account json contents | `""` -`config.google.existingConfig` | existing Kubernetes configmap to use for the service account file. See [google secret template](https://github.com/helm/charts/blob/master/stable/oauth2-proxy/templates/google-secret.yaml) for the required values | `nil` -`extraArgs` | key:value list of extra arguments to give the binary | `{}` -`extraEnv` | key:value list of extra environment variables to give the binary | `[]` -`extraVolumes` | list of extra volumes | `[]` -`extraVolumeMounts` | list of extra volumeMounts | `[]` -`htpasswdFile.enabled` | enable htpasswd-file option | `false` -`htpasswdFile.entries` | list of [SHA encrypted user:passwords](https://pusher.github.io/oauth2_proxy/configuration#command-line-options) | `{}` -`htpasswdFile.existingSecret` | existing Kubernetes secret to use for OAuth2 htpasswd file | `""` -`httpScheme` | `http` or `https`. `name` used for port on the deployment. `httpGet` port `name` and `scheme` used for `liveness`- and `readinessProbes`. `name` and `targetPort` used for the service. | `http` -`image.pullPolicy` | Image pull policy | `IfNotPresent` -`image.repository` | Image repository | `quay.io/pusher/oauth2_proxy` -`image.tag` | Image tag | `v5.1.0` -`imagePullSecrets` | Specify image pull secrets | `nil` (does not add image pull secrets to deployed pods) -`ingress.enabled` | Enable Ingress | `false` -`ingress.ingressClassName` | Set ingressClassName | `nil` -`ingress.path` | Ingress accepted path | `/` -`ingress.extraPaths` | Ingress extra paths to prepend to every host configuration. Useful when configuring [custom actions with AWS ALB Ingress Controller](https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/ingress/annotation/#actions). | `[]` -`ingress.annotations` | Ingress annotations | `nil` -`ingress.hosts` | Ingress accepted hostnames | `nil` -`ingress.tls` | Ingress TLS configuration | `nil` -`initContainers` | pod init containers | `[]` -`livenessProbe.enabled` | enable Kubernetes livenessProbe. Disable to use oauth2-proxy with Istio mTLS. See [Istio FAQ](https://istio.io/help/faq/security/#k8s-health-checks) | `true` -`livenessProbe.initialDelaySeconds` | number of seconds | 0 -`livenessProbe.timeoutSeconds` | number of seconds | 1 -`nodeSelector` | node labels for pod assignment | `{}` -`podAnnotations` | annotations to add to each pod | `{}` -`podLabels` | additional labesl to add to each pod | `{}` -`podDisruptionBudget.enabled`| Enabled creation of PodDisruptionBudget (only if replicaCount > 1) | true -`podDisruptionBudget.minAvailable`| minAvailable parameter for PodDisruptionBudget | 1 -`podSecurityContext` | Kubernetes security context to apply to pod | `{}` -`priorityClassName` | priorityClassName | `nil` -`readinessProbe.enabled` | enable Kubernetes readinessProbe. Disable to use oauth2-proxy with Istio mTLS. See [Istio FAQ](https://istio.io/help/faq/security/#k8s-health-checks) | `true` -`readinessProbe.initialDelaySeconds` | number of seconds | 0 -`readinessProbe.timeoutSeconds` | number of seconds | 1 -`readinessProbe.periodSeconds` | number of seconds | 10 -`readinessProbe.successThreshold` | number of successes | 1 -`replicaCount` | desired number of pods | `1` -`resources` | pod resource requests & limits | `{}` -`service.port` | port for the service | `80` -`service.type` | type of service | `ClusterIP` -`service.clusterIP` | cluster ip address | `nil` -`service.loadBalancerIP` | ip of load balancer | `nil` -`service.loadBalancerSourceRanges` | allowed source ranges in load balancer | `nil` -`serviceAccount.enabled` | create a service account | `true` -`serviceAccount.name` | the service account name | `` -`serviceAccount.annotations` | (optional) annotations for the service account | `{}` -`tolerations` | list of node taints to tolerate | `[]` -`topologySpreadConstraints.enabled` | enable Kubernetes [topologySpreadConstraints](https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/) | `false` -`topologySpreadConstraints.maxSkew` | the degree to which Pods may be unevenly distributed | `1` -`topologySpreadConstraints.topologyKey` | the key of node labels | `topology.kubernetes.io/zone` -`topologySpreadConstraints.whenUnsatisfiable` | how to deal with a Pod if it doesn't satisfy the spread constraint (`DoNotSchedule`, `ScheduleAnyway`) | `DoNotSchedule` -`securityContext.enabled` | enable Kubernetes security context on container | `false` -`securityContext.runAsNonRoot` | make sure that the container runs as a non-root user | `true` -`proxyVarsAsSecrets` | choose between environment values or secrets for setting up OAUTH2_PROXY variables. When set to false, remember to add the variables OAUTH2_PROXY_CLIENT_ID, OAUTH2_PROXY_CLIENT_SECRET, OAUTH2_PROXY_COOKIE_SECRET in extraEnv | `true` - - -Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. ```console -$ helm install stable/oauth2-proxy --name my-release \ - --set=image.tag=v0.0.2,resources.limits.cpu=200m +helm install oauth2-proxy \ + --set env.TZ="America/New York" \ + k8s-at-home/oauth2-proxy ``` -Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example, +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. ```console -$ helm install stable/oauth2-proxy --name my-release -f values.yaml +helm install oauth2-proxy k8s-at-home/oauth2-proxy -f values.yaml ``` -> **Tip**: You can use the default [values.yaml](values.yaml) +## Custom configuration -## SSL Configuration +### SSL Configuration See: [SSL Configuration](https://pusher.github.io/oauth2_proxy/tls-configuration). Use ```values.yaml``` like: @@ -178,3 +96,126 @@ data: cert.pem: AB..== cert.key: CD..== ``` + +## 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/charts/tree/master/charts/common/) + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| affinity | object | `{}` | node/pod affinities Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity | +| authenticatedEmailsFile.enabled | bool | `false` | Enables authorize individual email addresses | +| authenticatedEmailsFile.restricted_access | string | `""` | [email addresses](https://github.com/pusher/oauth2_proxy#email-authentication) list config | +| authenticatedEmailsFile.template | string | `""` | Name of the configmap that is handled outside of that chart It's a simpler way to maintain only one configmap (user list) instead changing it for each oauth2-proxy service. Be aware the value name in the extern config map in data needs to be named to "restricted_user_access". One email per line example: restricted_access: |- name1@domain name2@domain If you override the config with restricted_access it will configure a user list within this chart what takes care of the config map resource. | +| config.clientID | string | `"XXXXXXX"` | OAuth client ID | +| config.clientSecret | string | `"XXXXXXXX"` | OAuth client secret | +| config.configFile | string | `"email_domains = [ \"*\" ]\nupstreams = [ \"file:///dev/null\" ]"` | google service account json contents serviceAccountJson: xxxx -- Alternatively, use an existing secret (see google-secret.yaml for required fields) existingSecret: google-secret -- custom [oauth2_proxy.cfg](https://github.com/pusher/oauth2_proxy/blob/master/contrib/oauth2_proxy.cfg.example) contents for settings not overridable via environment nor command line | +| config.cookieSecret | string | `"XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX"` | server specific cookie for the secret; create a new one with `openssl rand -base64 32 | head -c 32 | base64` | +| config.existingConfig | string | `nil` | xisting Kubernetes configmap to use for the configuration file. See [config template](https://github.com/helm/charts/blob/master/stable/oauth2-proxy/templates/configmap.yaml) for the required values | +| config.google | object | `{}` | | +| extraArgs | object | `{}` | key:value list of extra arguments to give the binary | +| extraEnv | list | `[]` | key:value list of extra environment variables to give the binary | +| extraVolumeMounts | list | `[]` | list of extra volumeMounts | +| extraVolumes | list | `[]` | list of extra volumes | +| htpasswdFile.enabled | bool | `false` | enable htpasswd-file option | +| htpasswdFile.entries | object | `{}` | list of [SHA encrypted user:passwords](https://pusher.github.io/oauth2_proxy/configuration#command-line-options) | +| htpasswdFile.existingSecret | string | `""` | existing Kubernetes secret to use for OAuth2 htpasswd file | +| httpScheme | string | `"http"` | `http` or `https`. `name` used for port on the deployment. `httpGet` port `name` and `scheme` used for `liveness`- and `readinessProbes`. `name` and `targetPort` used for the service. | +| image.pullPolicy | string | `"IfNotPresent"` | Image pull policy | +| image.repository | string | `"quay.io/oauth2-proxy/oauth2-proxy"` | Image repository | +| image.tag | string | `"v7.0.1"` | Image tag | +| imagePullSecrets | list | `nil` | Optionally specify an array of imagePullSecrets. Secrets must be manually created in the namespace. ref: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod | +| ingress.annotations | object | `{}` | Ingress annotations | +| ingress.enabled | bool | `false` | Enable Ingress | +| ingress.extraPaths | list | `[]` | Ingress extra paths to prepend to every host configuration. Useful when configuring [custom actions with AWS ALB Ingress Controller](https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/ingress/annotation/#actions). | +| ingress.hosts | list | `[]` | Ingress accepted hostnames | +| ingress.ingressClassName | string | `nil` | Set ingressClassName | +| ingress.path | string | `"/"` | Ingress accepted path | +| ingress.tls | list | `nil` | Ingress TLS configuration | +| initContainers | list | `[]` | Configure init containers for pod Ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ | +| livenessProbe | object | `{"enabled":true,"initialDelaySeconds":0,"timeoutSeconds":1}` | Configure Kubernetes liveness probes. Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/ Disable both when deploying with Istio 1.0 mTLS. https://istio.io/help/faq/security/#k8s-health-checks | +| nodeSelector | object | `{}` | Node labels for pod assignment Ref: https://kubernetes.io/docs/user-guide/node-selection/ | +| podAnnotations | object | `{}` | annotations to add to each pod | +| podDisruptionBudget | object | `{"enabled":true,"minAvailable":1}` | PodDisruptionBudget settings Ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/ | +| podLabels | object | `{}` | labels to add to each pod | +| podSecurityContext | object | `{}` | | +| priorityClassName | string | `""` | | +| proxyVarsAsSecrets | bool | `true` | | +| readinessProbe | object | `{"enabled":true,"initialDelaySeconds":0,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}` | Configure Kubernetes readiness probes. | +| replicaCount | int | `1` | | +| resources | object | `{}` | | +| securityContext | object | `{"enabled":false,"runAsNonRoot":true}` | Configure Kubernetes security context for container Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ | +| service.annotations | object | `{}` | Service annotations for the GUI | +| service.loadBalancerIP | string | `nil` | Loadbalance IP for the GUI | +| service.loadBalancerSourceRanges | list | `nil` | List of IP CIDRs allowed access to load balancer (if supported) | +| service.port | int | `80` | Kubernetes port where the GUI is exposed | +| service.type | string | `"ClusterIP"` | Kubernetes service type for the GUI | +| serviceAccount.annotations | object | `{}` | | +| serviceAccount.enabled | bool | `true` | | +| serviceAccount.name | string | `nil` | | +| tolerations | list | `[]` | Tolerations for pod assignment Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ | +| topologySpreadConstraints | object | `{"enabled":false,"maxSkew":1,"topologyKey":"topology.kubernetes.io/zone","whenUnsatisfiable":"DoNotSchedule"}` | Configure Pod Topology Spread Constraints See https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ Requires Kubernetes >= v1.16 | + +## 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/charts/tree/master/charts/common/README.md#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). + +### [1.0.0] + +#### Changed + +- This version upgrade oauth2-proxy to v4.0.0. Please see the [changelog](https://github.com/pusher/oauth2_proxy/blob/v4.0.0/CHANGELOG.md#v400) in order to upgrade. + +### [2.0.0] + +#### Changed + +- support for Kubernetes v1.16.x by way of addressing the deprecation of the Deployment object apiVersion `apps/v1beta2`. See [the v1.16 API deprecations page](https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/) for more information. + +Due to [this issue](https://github.com/helm/helm/issues/6583) there may be errors performing a `helm upgrade`of this chart from versions earlier than 2.0.0. + +### [3.0.0] + +#### Changed + +- support for [EKS IAM roles for service accounts](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) by adding a managed service account to the chart. This is a breaking change since the service account is enabled by default. To disable this behaviour set `serviceAccount.enabled` to `false` + +### [4.0.0] + +#### Changed + +- This is a breaking change as the chart was moved to k8s-at-home. No other change on top of the 3.x.x branch. + +### [5.0.0] + +#### Changed + +- Not many breaking changes. See the [changelog](https://github.com/oauth2-proxy/oauth2-proxy/releases/tag/v7.0.0) for oauth2-proxy, specifically the section "Breaking Changes" for a few configuration changes, particularly to do with the Azure provider. + +### [5.0.1] + +#### Added + +- N/A + +#### Changed + +- Use helm-docs + +#### Removed + +- N/A + +[5.0.1]: #5.0.1 + +## 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) \ No newline at end of file diff --git a/charts/oauth2-proxy/README.md.gotmpl b/charts/oauth2-proxy/README.md.gotmpl new file mode 100644 index 00000000..8b868671 --- /dev/null +++ b/charts/oauth2-proxy/README.md.gotmpl @@ -0,0 +1,145 @@ +{{- 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](../common/values.yaml) from the [common library](../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/charts/tree/master/charts/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/oauth2-proxy/README_CHANGELOG.md.gotmpl b/charts/oauth2-proxy/README_CHANGELOG.md.gotmpl new file mode 100644 index 00000000..b18b0662 --- /dev/null +++ b/charts/oauth2-proxy/README_CHANGELOG.md.gotmpl @@ -0,0 +1,59 @@ +{{- 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/charts/tree/master/charts/common/README.md#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). + +### [1.0.0] + +#### Changed + +- This version upgrade oauth2-proxy to v4.0.0. Please see the [changelog](https://github.com/pusher/oauth2_proxy/blob/v4.0.0/CHANGELOG.md#v400) in order to upgrade. + +### [2.0.0] + +#### Changed + +- support for Kubernetes v1.16.x by way of addressing the deprecation of the Deployment object apiVersion `apps/v1beta2`. See [the v1.16 API deprecations page](https://kubernetes.io/blog/2019/07/18/api-deprecations-in-1-16/) for more information. + +Due to [this issue](https://github.com/helm/helm/issues/6583) there may be errors performing a `helm upgrade`of this chart from versions earlier than 2.0.0. + +### [3.0.0] + +#### Changed + +- support for [EKS IAM roles for service accounts](https://docs.aws.amazon.com/eks/latest/userguide/iam-roles-for-service-accounts.html) by adding a managed service account to the chart. This is a breaking change since the service account is enabled by default. To disable this behaviour set `serviceAccount.enabled` to `false` + +### [4.0.0] + +#### Changed + +- This is a breaking change as the chart was moved to k8s-at-home. No other change on top of the 3.x.x branch. + +### [5.0.0] + +#### Changed + +- Not many breaking changes. See the [changelog](https://github.com/oauth2-proxy/oauth2-proxy/releases/tag/v7.0.0) for oauth2-proxy, specifically the section "Breaking Changes" for a few configuration changes, particularly to do with the Azure provider. + +### [5.0.1] + +#### Added + +- N/A + +#### Changed + +- Use helm-docs + +#### Removed + +- N/A + +[5.0.1]: #5.0.1 +{{- end -}} diff --git a/charts/oauth2-proxy/README_CONFIG.md.gotmpl b/charts/oauth2-proxy/README_CONFIG.md.gotmpl new file mode 100644 index 00000000..763a1622 --- /dev/null +++ b/charts/oauth2-proxy/README_CONFIG.md.gotmpl @@ -0,0 +1,38 @@ +{{- define "custom.custom.configuration.header" -}} +## Custom configuration +{{- end -}} + +{{- define "custom.custom.configuration" -}} +{{ template "custom.custom.configuration.header" . }} + +### SSL Configuration + +See: [SSL Configuration](https://pusher.github.io/oauth2_proxy/tls-configuration). +Use ```values.yaml``` like: + +```yaml +... +extraArgs: + tls-cert: /path/to/cert.pem + tls-key: /path/to/cert.key + +extraVolumes: + - name: ssl-cert + secret: + secretName: my-ssl-secret + +extraVolumeMounts: + - mountPath: /path/to/ + name: ssl-cert +... +``` + +With a secret called `my-ssl-secret`: + +```yaml +... +data: + cert.pem: AB..== + cert.key: CD..== +``` +{{- end -}} diff --git a/charts/oauth2-proxy/values.yaml b/charts/oauth2-proxy/values.yaml index c57b9d53..da144476 100644 --- a/charts/oauth2-proxy/values.yaml +++ b/charts/oauth2-proxy/values.yaml @@ -1,22 +1,22 @@ # Oauth client configuration specifics config: - # OAuth client ID + # -- OAuth client ID clientID: "XXXXXXX" - # OAuth client secret + # -- OAuth client secret clientSecret: "XXXXXXXX" - # Create a new secret with the following command - # openssl rand -base64 32 | head -c 32 | base64 - # Use an existing secret for OAuth2 credentials (see secret.yaml for required fields) - # Example: - # existingSecret: secret + # -- server specific cookie for the secret; create a new one with `openssl rand -base64 32 | head -c 32 | base64` cookieSecret: "XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX" google: {} + # -- user impersonated by the google service account # adminEmail: xxxx + + # -- google service account json contents # serviceAccountJson: xxxx - # Alternatively, use an existing secret (see google-secret.yaml for required fields) - # Example: + + # -- Alternatively, use an existing secret (see google-secret.yaml for required fields) # existingSecret: google-secret - # Default configuration, to be overridden + + # -- custom [oauth2_proxy.cfg](https://github.com/pusher/oauth2_proxy/blob/master/contrib/oauth2_proxy.cfg.example) contents for settings not overridable via environment nor command line configFile: |- email_domains = [ "*" ] upstreams = [ "file:///dev/null" ] @@ -24,32 +24,37 @@ config: # configFile: |- # pass_basic_auth = false # pass_access_token = true - # Use an existing config map (see configmap.yaml for required fields) - # Example: - # existingConfig: config + + # -- (string)existing Kubernetes configmap to use for the configuration file. See [config template](https://github.com/helm/charts/blob/master/stable/oauth2-proxy/templates/configmap.yaml) for the required values + existingConfig: image: + # -- Image repository repository: "quay.io/oauth2-proxy/oauth2-proxy" + # -- Image tag tag: "v7.0.1" + # -- Image pull policy pullPolicy: "IfNotPresent" -# Optionally specify an array of imagePullSecrets. +# -- (list) Optionally specify an array of imagePullSecrets. # Secrets must be manually created in the namespace. # ref: https://kubernetes.io/docs/concepts/containers/images/#specifying-imagepullsecrets-on-a-pod -# imagePullSecrets: +imagePullSecrets: # - name: myRegistryKeySecretName +# -- key:value list of extra arguments to give the binary extraArgs: {} +# -- key:value list of extra environment variables to give the binary extraEnv: [] # To authorize individual email addresses # That is part of extraArgs but since this needs special treatment we need to do a separate section authenticatedEmailsFile: + # -- Enables authorize individual email addresses enabled: false - # template is the name of the configmap what contains the email user list but has been configured without this chart. + # -- Name of the configmap that is handled outside of that chart # It's a simpler way to maintain only one configmap (user list) instead changing it for each oauth2-proxy service. # Be aware the value name in the extern config map in data needs to be named to "restricted_user_access". - template: "" # One email per line # example: # restricted_access: |- @@ -57,18 +62,22 @@ authenticatedEmailsFile: # name2@domain # If you override the config with restricted_access it will configure a user list within this chart what takes care of the # config map resource. + template: "" + + # -- [email addresses](https://github.com/pusher/oauth2_proxy#email-authentication) list config restricted_access: "" service: + # -- Kubernetes service type for the GUI type: ClusterIP - # when service.type is ClusterIP ... - # clusterIP: 192.0.2.20 - # when service.type is LoadBalancer ... - # loadBalancerIP: 198.51.100.40 - # loadBalancerSourceRanges: 203.0.113.0/24 + # -- Kubernetes port where the GUI is exposed port: 80 + # -- Service annotations for the GUI annotations: {} - # foo.io/bar: "true" + # -- (string) Loadbalance IP for the GUI + loadBalancerIP: + # -- (list) List of IP CIDRs allowed access to load balancer (if supported) + loadBalancerSourceRanges: ## Create or use ServiceAccount serviceAccount: @@ -80,27 +89,33 @@ serviceAccount: annotations: {} ingress: + # -- Enable Ingress enabled: false + # -- Ingress accepted path path: / - # Used to create an Ingress record. - # hosts: - # - chart-example.local - # Extra paths to prepend to every host configuration. This is useful when working with annotation based services. - # extraPaths: + # -- Ingress accepted hostnames + hosts: [] + # -- Ingress extra paths to prepend to every host configuration. Useful when configuring [custom actions with AWS ALB Ingress Controller](https://kubernetes-sigs.github.io/aws-alb-ingress-controller/guide/ingress/annotation/#actions). + extraPaths: [] # - path: /* # backend: # serviceName: ssl-redirect # servicePort: use-annotation - # annotations: + + # -- Ingress annotations + annotations: {} # kubernetes.io/ingress.class: nginx # kubernetes.io/tls-acme: "true" - # tls: + + # -- (list) Ingress TLS configuration + tls: # Secrets must be manually created in the namespace. # - secretName: chart-example-tls # hosts: # - chart-example.local - # Define the ingressClassName - # ingressClassName: nginx + + # -- (string) Set ingressClassName + ingressClassName: resources: {} # limits: @@ -110,33 +125,35 @@ resources: {} # cpu: 100m # memory: 300Mi +# -- list of extra volumes extraVolumes: [] # - name: ca-bundle-cert # secret: # secretName: +# -- list of extra volumeMounts extraVolumeMounts: [] # - mountPath: /etc/ssl/certs/ # name: ca-bundle-cert priorityClassName: "" -# Affinity for pod assignment +# -- node/pod affinities # Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity -# affinity: {} +affinity: {} -# Tolerations for pod assignment +# -- Tolerations for pod assignment # Ref: https://kubernetes.io/docs/concepts/configuration/taint-and-toleration/ tolerations: [] -# Node labels for pod assignment +# -- Node labels for pod assignment # Ref: https://kubernetes.io/docs/user-guide/node-selection/ nodeSelector: {} # Whether to use secrets instead of environment values for setting up OAUTH2_PROXY variables proxyVarsAsSecrets: true -# Configure Kubernetes liveness and readiness probes. +# -- Configure Kubernetes liveness probes. # Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/ # Disable both when deploying with Istio 1.0 mTLS. https://istio.io/help/faq/security/#k8s-health-checks livenessProbe: @@ -144,6 +161,7 @@ livenessProbe: initialDelaySeconds: 0 timeoutSeconds: 1 +# -- Configure Kubernetes readiness probes. readinessProbe: enabled: true initialDelaySeconds: 0 @@ -151,18 +169,20 @@ readinessProbe: periodSeconds: 10 successThreshold: 1 -# Configure Kubernetes security context for container +# -- Configure Kubernetes security context for container # Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ securityContext: enabled: false runAsNonRoot: true +# -- annotations to add to each pod podAnnotations: {} +# -- labels to add to each pod podLabels: {} replicaCount: 1 -## PodDisruptionBudget settings -## ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/ +# -- PodDisruptionBudget settings +# Ref: https://kubernetes.io/docs/concepts/workloads/pods/disruptions/ podDisruptionBudget: enabled: true minAvailable: 1 @@ -171,27 +191,30 @@ podDisruptionBudget: # Ref: https://kubernetes.io/docs/tasks/configure-pod-container/security-context/ podSecurityContext: {} -# Configure init containers for pod -# REF: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ +# -- Configure init containers for pod +# Ref: https://kubernetes.io/docs/concepts/workloads/pods/init-containers/ initContainers: [] -# whether to use http or https +# -- `http` or `https`. `name` used for port on the deployment. `httpGet` port `name` and `scheme` used for `liveness`- and `readinessProbes`. `name` and `targetPort` used for the service. httpScheme: http # Additionally authenticate against a htpasswd file. Entries must be created with "htpasswd -s" for SHA encryption. # Alternatively supply an existing secret which contains the required information. htpasswdFile: + # -- enable htpasswd-file option enabled: false + # -- existing Kubernetes secret to use for OAuth2 htpasswd file existingSecret: "" + # -- list of [SHA encrypted user:passwords](https://pusher.github.io/oauth2_proxy/configuration#command-line-options) entries: {} # One row for each user # example: # entries: # - testuser:{SHA}EWhzdhgoYJWy0z2gyzhRYlN9DSiv -## Configure Pod Topology Spread Constraints -## See https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ -## Requires Kubernetes >= v1.16 +# -- Configure Pod Topology Spread Constraints +# See https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/ +# Requires Kubernetes >= v1.16 topologySpreadConstraints: enabled: false maxSkew: 1 diff --git a/charts/ser2sock/Chart.yaml b/charts/ser2sock/Chart.yaml index e0333add..aee15a2d 100644 --- a/charts/ser2sock/Chart.yaml +++ b/charts/ser2sock/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 appVersion: 1.0.0 description: Serial to Socket Redirector name: ser2sock -version: 2.0.1 +version: 2.0.2 keywords: - ser2sock home: https://github.com/k8s-at-home/charts/tree/master/charts/ser2sock diff --git a/charts/ser2sock/README.md b/charts/ser2sock/README.md index 640daada..4ae7fae1 100644 --- a/charts/ser2sock/README.md +++ b/charts/ser2sock/README.md @@ -1,22 +1,70 @@ -# ser2sock: Serial to Socket Redirector +# ser2sock -This is a helm chart for [ser2sock](https://github.com/nutechsoftware/ser2sock) +![Version: 2.0.2](https://img.shields.io/badge/Version-2.0.2-informational?style=flat-square) ![AppVersion: 1.0.0](https://img.shields.io/badge/AppVersion-1.0.0-informational?style=flat-square) -## TL;DR; +Serial to Socket Redirector -```shell -$ helm repo add k8s-at-home https://k8s-at-home.com/charts/ -$ helm install k8s-at-home/ser2sock +**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 + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| + +## TL;DR + +```console +helm repo add k8s-at-home https://k8s-at-home.com/charts/ +helm repo update +helm install ser2sock k8s-at-home/ser2sock ``` ## Installing the Chart -To install the chart with the release name `my-release`: +To install the chart with the release name `ser2sock` ```console -helm install --name my-release k8s-at-home/ser2sock +helm install ser2sock k8s-at-home/ser2sock ``` +## Uninstalling the Chart + +To uninstall the `ser2sock` deployment + +```console +helm uninstall ser2sock +``` + +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](../common/values.yaml) from the [common library](../common). + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. + +```console +helm install ser2sock \ + --set env.TZ="America/New York" \ + k8s-at-home/ser2sock +``` + +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. + +```console +helm install ser2sock k8s-at-home/ser2sock -f values.yaml +``` + +## Custom configuration + **IMPORTANT NOTE:** the USB device must be accessible on the node where this pod runs, in order for this chart to function properly. A way to achieve this can be with nodeAffinity rules, for example: @@ -35,52 +83,66 @@ affinity: ... where a node with an attached Coral USB device is labeled with `usb: alarmdecoder` -## Uninstalling the Chart +## Values -To uninstall/delete the `my-release` deployment: +**Important**: When deploying an application Helm chart you can add more values from our common library chart [here](https://github.com/k8s-at-home/charts/tree/master/charts/common/) -```console -helm delete my-release --purge -``` +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| affinity | object | `{}` | Affinity settings for pod assignment of the GUI | +| baudRate | int | `115200` | Baudrate | +| device | string | `"/dev/ttyUSB0"` | USB Device to use | +| fullnameOverride | string | `""` | | +| image.pullPolicy | string | `"IfNotPresent"` | Image pull policy | +| image.repository | string | `"tenstartups/ser2sock"` | Image repository | +| image.tag | string | `"latest"` | Image tag. Possible values listed [here](https://hub.docker.com/r/tenstartups/ser2sock/tags). | +| nameOverride | string | `""` | | +| nodeSelector | object | `{}` | Node labels for pod assignment of the GUI | +| pgid | string | `"1001"` | GID to run as | +| podAnnotations | object | `{}` | Pod annotations | +| puid | string | `"1001"` | UID to run as | +| resources | object | `{}` | CPU/Memory resource requests/limits or the GUI | +| service.annotations | object | `{}` | Service annotations for the GUI | +| service.clusterIP | string | `nil` | Cluster IP for the GUI | +| service.externalIPs | string | `nil` | External IPs for the GUI | +| service.externalTrafficPolicy | string | `nil` | Loadbalancer externalTrafficPolicy | +| service.loadBalancerIP | string | `nil` | Loadbalancer IP for the GUI | +| service.loadBalancerSourceRanges | string | `nil` | Loadbalancer client IP restriction range for the GUI | +| service.nodePort | string | `nil` | nodePort to listen on for the GUI | +| service.port | int | `10000` | Kubernetes port where the GUI is exposed | +| service.type | string | `"ClusterIP"` | Kubernetes service type for the GUI | +| strategyType | string | `"Recreate"` | Specifies the strategy used to replace old Pods by new ones | +| timezone | string | `nil` | Timezone the ser2sock instance should run as, e.g. 'America/New_York' | +| tolerations | list | `[]` | Toleration labels for pod assignment of the GUI | -The command removes all the Kubernetes components associated with the chart and deletes the release. +## Changelog -## Configuration +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/charts/tree/master/charts/common/README.md#Changelog). -The following tables lists the configurable parameters of the Sentry chart and their default values. +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). -| Parameter | Description | Default | -|----------------------------|-------------------------------------|---------------------------------------------------------| -| `image.repository` | Image repository | `tenstartups/ser2sock` | -| `image.tag` | Image tag. Possible values listed [here](https://hub.docker.com/r/tenstartups/ser2sock/tags).| `latest`| -| `image.pullPolicy` | Image pull policy | `IfNotPresent` | -| `strategyType` | Specifies the strategy used to replace old Pods by new ones | `Recreate` | -| `timezone` | Timezone the ser2sock instance should run as, e.g. 'America/New_York' | `` | -| `device` | USB Device to use | `/dev/ttyUSB0` | -| `puid` | UID to run as | `1001` | -| `pgid` | GID to run as | `1001` | -| `Service.type` | Kubernetes service type for the ser2sock GUI | `ClusterIP` | -| `Service.port` | Kubernetes port where the ser2sock GUI is exposed| `5000` | -| `Service.annotations` | Service annotations for the ser2sock GUI | `{}` | -| `Service.labels` | Custom labels | `{}` | -| `Service.loadBalancerIP` | Loadbalance IP for the ser2sock GUI | `{}` | -| `Service.loadBalancerSourceRanges` | List of IP CIDRs allowed access to load balancer (if supported) | None -| `resources` | CPU/Memory resource requests/limits | `{}` | -| `nodeSelector` | Node labels for pod assignment | `{}` | -| `tolerations` | Toleration labels for pod assignment | `[]` | -| `affinity` | Affinity settings for pod assignment | `{}` | +### [2.0.2] -Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, +#### Added -```console -helm install --name my-release \ - k8s-at-home/ser2sock -``` +- N/A -Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example, +#### Changed -```console -helm install --name my-release -f values.yaml k8s-at-home/ser2sock -``` +- N/A -Read through the [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/ser2sock/values.yaml) file. It has several commented out suggested values. +#### Removed + +- N/A + +[2.0.2]: #2.0.2 + +## 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) \ No newline at end of file diff --git a/charts/ser2sock/README.md.gotmpl b/charts/ser2sock/README.md.gotmpl new file mode 100644 index 00000000..8b868671 --- /dev/null +++ b/charts/ser2sock/README.md.gotmpl @@ -0,0 +1,145 @@ +{{- 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](../common/values.yaml) from the [common library](../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/charts/tree/master/charts/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/ser2sock/README_CHANGELOG.md.gotmpl b/charts/ser2sock/README_CHANGELOG.md.gotmpl new file mode 100644 index 00000000..a222497c --- /dev/null +++ b/charts/ser2sock/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/charts/tree/master/charts/common/README.md#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). + +### [2.0.2] + +#### Added + +- N/A + +#### Changed + +- N/A + +#### Removed + +- N/A + +[2.0.2]: #2.0.2 +{{- end -}} diff --git a/charts/ser2sock/README_CONFIG.md.gotmpl b/charts/ser2sock/README_CONFIG.md.gotmpl new file mode 100644 index 00000000..d7b19e64 --- /dev/null +++ b/charts/ser2sock/README_CONFIG.md.gotmpl @@ -0,0 +1,25 @@ +{{- define "custom.custom.configuration.header" -}} +## Custom configuration +{{- end -}} + +{{- define "custom.custom.configuration" -}} +{{ template "custom.custom.configuration.header" . }} + +**IMPORTANT NOTE:** the USB device must be accessible on the node where this pod runs, in order for this chart to function properly. + +A way to achieve this can be with nodeAffinity rules, for example: + +```yaml +affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: usb + operator: In + values: + - alarmdecoder +``` + +... where a node with an attached Coral USB device is labeled with `usb: alarmdecoder` +{{- end -}} diff --git a/charts/ser2sock/values.yaml b/charts/ser2sock/values.yaml index 96bdb007..95e3bdba 100644 --- a/charts/ser2sock/values.yaml +++ b/charts/ser2sock/values.yaml @@ -2,44 +2,52 @@ # This is a YAML-formatted file. # Declare variables to be passed into your templates. -# upgrade strategy type (e.g. Recreate or RollingUpdate) +# -- Specifies the strategy used to replace old Pods by new ones strategyType: Recreate image: + # -- Image repository repository: tenstartups/ser2sock + # -- Image tag. Possible values listed [here](https://hub.docker.com/r/tenstartups/ser2sock/tags). tag: latest + # -- Image pull policy pullPolicy: IfNotPresent nameOverride: "" fullnameOverride: "" -# timezone: "America/New York" +# -- (string) Timezone the ser2sock instance should run as, e.g. 'America/New_York' +timezone: +# -- USB Device to use device: "/dev/ttyUSB0" +# -- UID to run as puid: "1001" +# -- GID to run as pgid: "1001" +# -- Baudrate baudRate: 115200 service: + # -- Kubernetes service type for the GUI type: ClusterIP + # -- Kubernetes port where the GUI is exposed port: 10000 - ## Specify the nodePort value for the LoadBalancer and NodePort service types. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport - ## - # nodePort: - ## Provide any additional annotations which may be required. This can be used to - ## set the LoadBalancer service type to internal only. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer - ## + # -- Service annotations for the GUI annotations: {} - labels: {} - ## Use loadBalancerIP to request a specific static IP, - ## otherwise leave blank - ## + # -- (string) Cluster IP for the GUI + clusterIP: + # -- (string) External IPs for the GUI + externalIPs: + # -- (string) Loadbalancer IP for the GUI loadBalancerIP: - # loadBalancerSourceRanges: [] - ## Set the externalTrafficPolicy in the Service to either Cluster or Local - # externalTrafficPolicy: Cluster + # -- (string) Loadbalancer client IP restriction range for the GUI + loadBalancerSourceRanges: + # -- (string) Loadbalancer externalTrafficPolicy + externalTrafficPolicy: + # -- (string) nodePort to listen on for the GUI + nodePort: +# -- CPU/Memory resource requests/limits or the GUI resources: {} # We usually recommend not to specify default resources and to leave this as a conscious # choice for the user. This also increases chances charts run on environments with little @@ -52,10 +60,14 @@ resources: {} # cpu: 100m # memory: 128Mi +# -- Node labels for pod assignment of the GUI nodeSelector: {} +# -- Toleration labels for pod assignment of the GUI tolerations: [] +# -- Affinity settings for pod assignment of the GUI affinity: {} +# -- Pod annotations podAnnotations: {} diff --git a/charts/speedtest/Chart.yaml b/charts/speedtest/Chart.yaml index 944ee7bb..240ab740 100644 --- a/charts/speedtest/Chart.yaml +++ b/charts/speedtest/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 name: speedtest -version: 3.0.0 +version: 3.0.1 appVersion: 1.0.0 description: periodic speedtest and save the results to InfluxDB keywords: @@ -15,3 +15,9 @@ sources: maintainers: - name: billimek email: jeff@billimek.com + +dependencies: +- name: influxdb + version: 1.1.9 + repository: https://charts.bitnami.com/bitnami + condition: influxdb.enabled diff --git a/charts/speedtest/README.md b/charts/speedtest/README.md index 065a8af6..518e500a 100644 --- a/charts/speedtest/README.md +++ b/charts/speedtest/README.md @@ -1,71 +1,129 @@ -# Speedtest.net Collector For InfluxDB and Grafana +# speedtest -![Screenshot](https://camo.githubusercontent.com/c652a6685bcb5a8cec6a47c92e57d159b28e47e7/68747470733a2f2f7075752e73682f746d664f412f623535373665383864652e706e67) +![Version: 3.0.1](https://img.shields.io/badge/Version-3.0.1-informational?style=flat-square) ![AppVersion: 1.0.0](https://img.shields.io/badge/AppVersion-1.0.0-informational?style=flat-square) -This tool is a wrapper for speedtest-cli which allows you to run periodic speedtets and save the results to Influxdb +periodic speedtest and save the results to InfluxDB -## TL;DR; +**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 + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| +| https://charts.bitnami.com/bitnami | influxdb | 1.1.9 | + +## TL;DR ```console -$ helm repo add k8s-at-home https://k8s-at-home.com/charts/ -$ helm install k8s-at-home/speedtest +helm repo add k8s-at-home https://k8s-at-home.com/charts/ +helm repo update +helm install speedtest k8s-at-home/speedtest ``` ## Installing the Chart -To install the chart with the release name `my-release`: +To install the chart with the release name `speedtest` ```console -$ helm install --name my-release k8s-at-home/speedtest +helm install speedtest k8s-at-home/speedtest ``` ## Uninstalling the Chart -To uninstall/delete the `my-release` deployment: +To uninstall the `speedtest` deployment ```console -$ helm delete my-release --purge +helm uninstall speedtest ``` -The command removes all the Kubernetes components associated with the chart and deletes the release. +The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release. ## Configuration -The configuration is set as a block of text through a configmap and mounted as a file in /src/config.ini Any value in this text block should match the defined speedtest configuration. There are several values here that will have to match our kubernetes 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](../common/values.yaml) from the [common library](../common). -## Configuration - -The following tables lists the configurable parameters of the Sentry chart and their default values. - -| Parameter | Description | Default | -| ------------------------------- | ------------------------------- | ---------------------------------------------------------- | -| `image.repository` | speedtest image | `k8s-at-home/speedtestusage-for-influxdb` | -| `image.tag` | speedtest image tag | `latest` | -| `image.pullPolicy` | speedtest image pull policy | `IfNotPresent` | -| `debug` | Display debugging output | `false` | -| `config.delay` | how many seconds to wait between checks | `3600` | -| `config.influxdb.host` | InfluxDB hostname | `influxdb-influxdb` | -| `config.influxdb.port` | InfluxDB port | `8086` | -| `config.influxdb.database` | InfluxDB database | `speedtests` | -| `config.influxdb.username` | InfluxDB username | `` | -| `config.influxdb.password` | InfluxDB password | `` | -| `config.influxdb.ssl` | InfluxDB connection using SSL | `false` | -| `config.speedtest.server` | server to use for speedtest - leave blank to auto-pick | `` | -| `podAnnotations` | Key-value pairs to add as pod annotations | `{}` | - - -Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. ```console -$ helm install --name my-release \ - --set config.influxdb.host=some-influx-host \ +helm install speedtest \ + --set env.TZ="America/New York" \ k8s-at-home/speedtest ``` -Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example, +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. ```console -$ helm install --name my-release -f values.yaml k8s-at-home/speedtest +helm install speedtest k8s-at-home/speedtest -f values.yaml ``` -Read through the [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/speedtest/values.yaml) file. It has several commented out suggested values. +## 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/charts/tree/master/charts/common/) + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| config.delay | int | `3600` | how many seconds to wait between checks | +| config.influxdb.database | string | `"speedtests"` | InfluxDB database | +| config.influxdb.host | string | `nil` | InfluxDB host @default - internal influxDB chart if not set | +| config.influxdb.password | string | `nil` | InfluxDB password | +| config.influxdb.port | int | `8086` | InfluxDB port | +| config.influxdb.ssl | bool | `false` | enable TLS | +| config.influxdb.username | string | `nil` | InfluxDB username | +| config.speedtest.server | string | `nil` | server to use for speedtest - leave blank to auto-pick | +| debug | bool | `false` | Display debugging output | +| image.pullPolicy | string | `"IfNotPresent"` | speedtest image pull policy | +| image.repository | string | `"atribe/speedtest-for-influxdb-and-grafana"` | speedtest image | +| image.tag | string | `"latest"` | speedtest image tag | +| influxdb.architecture | string | `"standalone"` | | +| influxdb.authEnabled | bool | `false` | | +| influxdb.database | string | `"speedtests"` | | +| influxdb.enabled | bool | `true` | | +| influxdb.persistence.enabled | bool | `false` | | +| nodeSelector | object | `{}` | | +| podAnnotations | object | `{}` | Key-value pairs to add as pod annotations | +| replicaCount | int | `1` | | +| resources | object | `{}` | | + +## 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/charts/tree/master/charts/common/README.md#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). + +### [3.0.1] + +#### Added + +- N/A + +#### Changed + +- USe helm-docs + +#### Removed + +- N/A + +[3.0.1]: #3.0.1 + +## 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) \ No newline at end of file diff --git a/charts/speedtest/README.md.gotmpl b/charts/speedtest/README.md.gotmpl new file mode 100644 index 00000000..8b868671 --- /dev/null +++ b/charts/speedtest/README.md.gotmpl @@ -0,0 +1,145 @@ +{{- 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](../common/values.yaml) from the [common library](../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/charts/tree/master/charts/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/speedtest/README_CHANGELOG.md.gotmpl b/charts/speedtest/README_CHANGELOG.md.gotmpl new file mode 100644 index 00000000..e216d056 --- /dev/null +++ b/charts/speedtest/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/charts/tree/master/charts/common/README.md#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). + +### [3.0.1] + +#### Added + +- N/A + +#### Changed + +- USe helm-docs + +#### Removed + +- N/A + +[3.0.1]: #3.0.1 +{{- end -}} diff --git a/charts/speedtest/README_CONFIG.md.gotmpl b/charts/speedtest/README_CONFIG.md.gotmpl new file mode 100644 index 00000000..e93d80bf --- /dev/null +++ b/charts/speedtest/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/speedtest/templates/configmap.yaml b/charts/speedtest/templates/configmap.yaml index ce137c2e..b983b0d1 100644 --- a/charts/speedtest/templates/configmap.yaml +++ b/charts/speedtest/templates/configmap.yaml @@ -12,7 +12,7 @@ data: [GENERAL] Delay = {{ .Values.config.delay }} [INFLUXDB] - Address = {{ .Values.config.influxdb.host }} + Address = {{ default .Values.config.influxdb.host (printf "%s-influxdb" .Release.Name) }} Port = {{ .Values.config.influxdb.port }} Database = {{ .Values.config.influxdb.database }} Username = {{ .Values.config.influxdb.username }} diff --git a/charts/speedtest/values.yaml b/charts/speedtest/values.yaml index 252457fc..82216bff 100644 --- a/charts/speedtest/values.yaml +++ b/charts/speedtest/values.yaml @@ -3,8 +3,11 @@ # Declare variables to be passed into your templates. replicaCount: 1 image: + # -- speedtest image repository: atribe/speedtest-for-influxdb-and-grafana + # -- speedtest image tag tag: latest + # -- speedtest image pull policy pullPolicy: IfNotPresent resources: {} # We usually recommend not to specify default resources and to leave this as a conscious @@ -17,21 +20,43 @@ resources: {} # requests: # cpu: 100m # memory: 128Mi + nodeSelector: {} +# -- Display debugging output debug: false config: - # how many seconds to wait between checks + # -- how many seconds to wait between checks delay: 3600 influxdb: - # host/port/database are mandatory - change as needed - host: influxdb-influxdb + # -- InfluxDB host + # @default - internal influxDB chart if not set + host: + # -- InfluxDB port port: 8086 + # -- InfluxDB database database: speedtests - # username: - # password: + # -- (string) InfluxDB username + username: + # -- (string) InfluxDB password + password: + # -- enable TLS ssl: false speedtest: - # Leave blank to auto pick server + # -- server to use for speedtest - leave blank to auto-pick server: +# -- Key-value pairs to add as pod annotations podAnnotations: {} + +# Enable embeded influxdb +# ... for more options see https://github.com/bitnami/charts/tree/master/bitnami/influxdb +influxdb: + # - Use internal Influx DB. Set to false if you use an external DB. + enabled: true + architecture: standalone + database: speedtests + authEnabled: false + persistence: + enabled: false + # storageClass: "" + # size: 8Gi diff --git a/charts/unifi/Chart.yaml b/charts/unifi/Chart.yaml index 45521b9a..ccd3ee6b 100644 --- a/charts/unifi/Chart.yaml +++ b/charts/unifi/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v2 appVersion: 5.14.23 description: Ubiquiti Network's Unifi Controller name: unifi -version: 1.5.2 +version: 1.5.3 keywords: - ubiquiti - unifi diff --git a/charts/unifi/README.md b/charts/unifi/README.md index 50ff8561..c0da4563 100644 --- a/charts/unifi/README.md +++ b/charts/unifi/README.md @@ -1,184 +1,70 @@ -# Ubiquiti Network's Unifi Controller +# unifi -This is a helm chart for [Ubiquiti Network's][ubnt] [Unifi Controller][ubnt 2]. +![Version: 1.5.3](https://img.shields.io/badge/Version-1.5.3-informational?style=flat-square) ![AppVersion: 5.14.23](https://img.shields.io/badge/AppVersion-5.14.23-informational?style=flat-square) -## TL;DR; +Ubiquiti Network's Unifi Controller -```shell +**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 + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| + +## TL;DR + +```console helm repo add k8s-at-home https://k8s-at-home.com/charts/ -helm install k8s-at-home/unifi +helm repo update +helm install unifi k8s-at-home/unifi ``` ## Installing the Chart -To install the chart with the release name `my-release`: +To install the chart with the release name `unifi` ```console -helm install --name my-release stable/unifi +helm install unifi k8s-at-home/unifi ``` ## Uninstalling the Chart -To uninstall/delete the `my-release` deployment: +To uninstall the `unifi` deployment ```console -helm delete my-release --purge +helm uninstall unifi ``` -The command removes all the Kubernetes components associated with the chart and deletes the release. +The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release. ## Configuration -The following tables lists the configurable parameters of the Unifi chart and their default values. +Read through the [values.yaml](./values.yaml) file. It has several commented out suggested values. +Other values may be used from the [values.yaml](../common/values.yaml) from the [common library](../common). -| Parameter | Default | Description | -|-------------------------------------------------|------------------------------|------------------------------------------------------------------------------------------------------------------------| -| `image.repository` | `jacobalberty/unifi` | Image repository | -| `image.tag` | `5.14.23` | Image tag. Possible values listed [here][docker]. | -| `image.pullPolicy` | `IfNotPresent` | Image pull policy | -| `strategyType` | `Recreate` | Specifies the strategy used to replace old Pods by new ones | -| `guiService.type` | `ClusterIP` | Kubernetes service type for the Unifi GUI | -| `guiService.port` | `8443` | Kubernetes port where the Unifi GUI is exposed | -| `guiService.annotations` | `{}` | Service annotations for the Unifi GUI | -| `guiService.labels` | `{}` | Custom labels | -| `guiService.loadBalancerIP` | `{}` | Loadbalance IP for the Unifi GUI | -| `guiService.loadBalancerSourceRanges` | None | List of IP CIDRs allowed access to load balancer (if supported) | -| `guiService.externalTrafficPolicy` | `Cluster` | Set the externalTrafficPolicy in the Service to either Cluster or Local | -| `captivePortalService.enabled` | `false` | Install the captive portal service (needed if you want guest captive portal) | -| `captivePortalService.type` | `ClusterIP` | Kubernetes service type for the captive portal | -| `captivePortalService.http` | `8880` | Kubernetes port where the captive portal is exposed | -| `captivePortalService.https` | `8843` | Kubernetes port where the captive portal is exposed (with SSL) | -| `captivePortalService.annotations` | `{}` | Service annotations for the captive portal | -| `captivePortalService.labels` | `{}` | Custom labels | -| `captivePortalService.loadBalancerIP` | `{}` | Loadbalance IP for the Unifi GUI | -| `captivePortalService.loadBalancerSourceRanges` | None | List of IP CIDRs allowed access to load balancer (if supported) | -| `captivePortalService.externalTrafficPolicy` | `Cluster` | Set the externalTrafficPolicy in the Service to either Cluster or Local | -| `captivePortalService.ingress.enabled` | `false` | Enables Ingress (for the captive portal, the main ingress needs to be enabled for the controller to be accessible) | -| `captivePortalService.ingress.annotations` | `{}` | Ingress annotations for the captive portal | -| `captivePortalService.ingress.labels` | `{}` | Custom labels for the captive portal | -| `captivePortalService.ingress.path` | `/` | Ingress path for the captive portal | -| `captivePortalService.ingress.hosts` | `chart-example.local` | Ingress accepted hostnames for the captive portal | -| `captivePortalService.ingress.tls` | `[]` | Ingress TLS configuration for the captive portal | -| `controllerService.type` | `NodePort` | Kubernetes service type for the Unifi Controller communication | -| `controllerService.port` | `8080` | Kubernetes port where the Unifi Controller is exposed - this needs to be reachable by the unifi devices on the network | -| `controllerService.annotations` | `{}` | Service annotations for the Unifi Controller | -| `controllerService.labels` | `{}` | Custom labels | -| `controllerService.loadBalancerIP` | `{}` | Loadbalance IP for the Unifi Controller | -| `controllerService.loadBalancerSourceRanges` | None | List of IP CIDRs allowed access to load balancer (if supported) | -| `controllerService.externalTrafficPolicy` | `Cluster` | Set the externalTrafficPolicy in the Service to either Cluster or Local | -| `controllerService.ingress.enabled` | `false` | Enables Ingress for the controller | -| `controllerService.ingress.annotations` | `{}` | Ingress annotations for the controller | -| `controllerService.ingress.labels` | `{}` | Custom labels for the controller | -| `controllerService.ingress.path` | `/` | Ingress path for the controller | -| `controllerService.ingress.hosts` | `chart-example.local` | Ingress accepted hostnames for the controller | -| `controllerService.ingress.tls` | `[]` | Ingress TLS configuration for the controller | -| `stunService.type` | `NodePort` | Kubernetes service type for the Unifi STUN | -| `stunService.port` | `3478` | Kubernetes UDP port where the Unifi STUN is exposed | -| `stunService.annotations` | `{}` | Service annotations for the Unifi STUN | -| `stunService.labels` | `{}` | Custom labels | -| `stunService.loadBalancerIP` | `{}` | Loadbalance IP for the Unifi STUN | -| `stunService.loadBalancerSourceRanges` | None | List of IP CIDRs allowed access to load balancer (if supported) | -| `stunService.externalTrafficPolicy` | `Cluster` | Set the externalTrafficPolicy in the Service to either Cluster or Local | -| `discoveryService.type` | `NodePort` | Kubernetes service type for AP discovery | -| `discoveryService.port` | `10001` | Kubernetes UDP port for AP discovery | -| `discoveryService.annotations` | `{}` | Service annotations for AP discovery | -| `discoveryService.labels` | `{}` | Custom labels | -| `discoveryService.loadBalancerIP` | `{}` | Loadbalance IP for AP discovery | -| `discoveryService.loadBalancerSourceRanges` | None | List of IP CIDRs allowed access to load balancer (if supported) | -| `discoveryService.externalTrafficPolicy` | `Cluster` | Set the externalTrafficPolicy in the Service to either Cluster or Local | -| `syslogService.type` | `NodePort` | Kubernetes service type for remote syslog capture | -| `syslogService.port` | `5514` | Kubernetes UDP port for remote syslog capture | -| `syslogService.annotations` | `{}` | Service annotations for remote syslog capture | -| `syslogService.labels` | `{}` | Custom labels | -| `syslogService.loadBalancerIP` | `{}` | Loadbalancer IP for remote syslog capture | -| `syslogService.loadBalancerSourceRanges` | None | List of IP CIDRs allowed access to load balancer (if supported) | -| `syslogService.externalTrafficPolicy` | `Cluster` | Set the externalTrafficPolicy in the Service to either Cluster or Local | -| `speedtestService.type` | `ClusterIP` | Kubernetes service type for mobile speedtest | -| `speedtestService.port` | `6789` | Kubernetes UDP port for mobile speedtest | -| `speedtestService.annotations` | `{}` | Service annotations for mobile speedtest | -| `speedtestService.labels` | `{}` | Custom labels | -| `speedtestService.loadBalancerIP` | `{}` | Loadbalancer IP for mobile speedtest | -| `speedtestService.loadBalancerSourceRanges` | None | List of IP CIDRs allowed access to load balancer (if supported) | -| `speedtestService.externalTrafficPolicy` | `Cluster` | Set the externalTrafficPolicy in the Service to either Cluster or Local | -| `unifiedService.enabled` | `false` | Use a single service for GUI, controller, STUN, discovery, syslog and speedtest | -| `unifiedService.type` | `ClusterIP` | Kubernetes service type for the unified service | -| `unifiedService.annotations` | `{}` | Annotations for the unified service | -| `unifiedService.labels` | `{}` | Custom labels for the unified service | -| `unifiedService.loadBalancerIP` | None | Load balancer IP for the unified service | -| `unifiedService.loadBalancerSourceRanges` | None | List of IP CIDRs allowed access to the load balancer (if supported) | -| `unifiedService.externalTrafficPolicy` | `Cluster` | Set the externalTrafficPolicy in the service to either Cluster or Local | -| `ingress.enabled` | `false` | Enables Ingress | -| `ingress.annotations` | `{}` | Ingress annotations | -| `ingress.labels` | `{}` | Custom labels | -| `ingress.path` | `/` | Ingress path | -| `ingress.hosts` | `chart-example.local` | Ingress accepted hostnames | -| `ingress.tls` | `[]` | Ingress TLS configuration | -| `timezone` | `UTC` | Timezone the Unifi controller should run as, e.g. 'America/New York' | -| `runAsRoot` | `false` | Run the controller as UID0 (root user); if set to false, will give container SETFCAP instead | -| `UID` | `999` | Run the controller as user UID | -| `GID` | `999` | Run the controller as group GID | -| `customCert.enabled` | `false` | Define whether you are using s custom certificate | -| `customCert.isChain` | `false` | If you are using a Let's Encrypt certificate which already includes the full chain set this to `true` | -| `customCert.certName` | `tls.crt` | Name of the the certificate file in `/cert` | -| `customCert.keyName` | `tls.key` | Name of the the private key file in `/cert` | -| `customCert.certSecret` | `nil` | Name of the the k8s tls secret where the certificate and its key are stored. | -| `logging.promtail.enabled` | `false` | Enable a Promtail sidecar to collect controller logs | -| `logging.promtail.image.repository` | `grafana/promtail` | Promtail image repository | -| `logging.promtail.image.tag` | `1.6.0` | Promtail image tag | -| `logging.promtail.image.pullPolicy` | `IfNotPresent` | Promtail image pull policy | -| `logging.promtail.loki.url` | `http://loki.logs.svc.cluster.local:3100/loki/api/v1/push` | URL of the Loki push API | -| `mongodb.enabled` | `false` | Use external MongoDB for data storage | -| `mongodb.dbUri` | `mongodb://mongo/unifi` | external MongoDB URI | -| `mongodb.statDbUri` | `mongodb://mongo/unifi_stat` | external MongoDB statdb URI | -| `mongodb.databaseName` | `unifi` | external MongoDB database name | -| `persistence.enabled` | `true` | Use persistent volume to store data | -| `persistence.size` | `5Gi` | Size of persistent volume claim | -| `persistence.existingClaim` | `nil` | Use an existing PVC to persist data | -| `persistence.subPath` | `` | Store data in a subdirectory of PV instead of at the root directory | -| `persistence.storageClass` | `-` | Type of persistent volume claim | -| `extraVolumes` | `[]` | Additional volumes to be used by extraVolumeMounts | -| `extraVolumeMounts` | `[]` | Additional volume mounts to be mounted in unifi container | -| `persistence.accessModes` | `[]` | Persistence access modes | -| `extraConfigFiles` | `{}` | Dictionary containing files mounted to `/configmap` inside the pod (See [values.yaml](values.yaml) for examples) | -| `extraJvmOpts` | `[]` | List of additional JVM options, e.g. `["-Dlog4j.configurationFile=file:/configmap/log4j2.xml"]` | -| `jvmInitHeapSize` | `` | Java Virtual Machine (JVM) initial, and minimum, heap size. | -| `jvmMaxHeapSize` | `1024M` | Java Virtual Machine (JVM) maximum heap size. | -| `resources` | `{}` | CPU/Memory resource requests/limits | -| `livenessProbe.enabled` | `true` | Turn on and off liveness probe | -| `livenessProbe.initialDelaySeconds` | `30` | Delay before liveness probe is initiated | -| `livenessProbe.periodSeconds` | `15` | How often to perform the probe | -| `livenessProbe.timeoutSeconds` | `5` | When the probe times out | -| `livenessProbe.failureThreshold` | `3` | Minimum consecutive failures for the probe | -| `livenessProbe.successThreshold` | `1` | Minimum consecutive successes for the probe | -| `readinessProbe.enabled` | `true` | Turn on and off readiness probe | -| `readinessProbe.initialDelaySeconds` | `30` | Delay before readiness probe is initiated | -| `readinessProbe.periodSeconds` | `15` | How often to perform the probe | -| `readinessProbe.timeoutSeconds` | `5` | When the probe times out | -| `readinessProbe.failureThreshold` | `3` | Minimum consecutive failures for the probe | -| `readinessProbe.successThreshold` | `1` | Minimum consecutive successes for the probe | -| `nodeSelector` | `{}` | Node labels for pod assignment | -| `tolerations` | `[]` | Toleration labels for pod assignment | -| `affinity` | `{}` | Affinity settings for pod assignment | -| `podAnnotations` | `{}` | Key-value pairs to add as pod annotations | -| `deploymentAnnotations` | `{}` | Key-value pairs to add as deployment annotations | - -Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. ```console -helm install --name my-release \ - --set timezone="America/New York" \ - stable/unifi +helm install unifi \ + --set env.TZ="America/New York" \ + k8s-at-home/unifi ``` -Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example, +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. ```console -helm install --name my-release -f values.yaml stable/unifi +helm install unifi k8s-at-home/unifi -f values.yaml ``` -Read through the [values.yaml](values.yaml) file. It has several commented out suggested values. +## Custom configuration -## Regarding the services +### Regarding the services - `guiService`: Represents the main web UI and is what one would normally point the ingress to. @@ -196,13 +82,13 @@ Read through the [values.yaml](values.yaml) file. It has several commented out s - `stunService`: Also used periodically by the unifi devices to communicate with the controller using UDP. See [this article][ubnt 3] and [this other article][ubnt 4] for more information. -- `syslogService`: Used to capture syslog from Unifi devices if the feature is +- `syslogService`: Used to capture syslog from Unifi devices if the feature is enabled in the site configuration. This needs to be reachable by Unifi devices on port 5514/UDP. - `speedtestService`: Used for mobile speedtest inside the UniFi Mobile app. This needs to be reachable by clients connecting to port 6789/TCP. -## Ingress and HTTPS +### Ingress and HTTPS Unifi does [not support HTTP][unifi] so if you wish to use the guiService, you need to ensure that you use a backend transport of HTTPS. @@ -216,10 +102,142 @@ ingress: nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" ``` -[docker]: https://hub.docker.com/r/jacobalberty/unifi/tags/ -[github]: https://github.com/jacobalberty/unifi-docker -[ubnt]: https://www.ubnt.com/ -[ubnt 2]: https://unifi-sdn.ubnt.com/ -[ubnt 3]: https://help.ubnt.com/hc/en-us/articles/204976094-UniFi-What-protocol-does-the-controller-use-to-communicate-with-the-UAP- -[ubnt 4]: https://help.ubnt.com/hc/en-us/articles/115015457668-UniFi-Troubleshooting-STUN-Communication-Errors -[unifi]: https://community.ui.com/questions/Controller-how-to-deactivate-http-to-https/c5e247d8-b5b9-4c84-a3bb-28a90fd65668 +## 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/charts/tree/master/charts/common/) + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| GID | int | `999` | | +| UID | int | `999` | | +| affinity | object | `{}` | | +| captivePortalService.annotations | object | `{}` | Provide any additional annotations which may be required. This can be used to set the LoadBalancer service type to internal only. ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer | +| captivePortalService.enabled | bool | `false` | | +| captivePortalService.externalTrafficPolicy | string | `"Cluster"` | Set the externalTrafficPolicy in the Service to either Cluster or Local | +| captivePortalService.http | int | `8880` | Kubernetes port where the http service is exposed | +| captivePortalService.https | int | `8843` | Kubernetes port where the https service is exposed | +| captivePortalService.ingress | object | `{"annotations":{},"enabled":false,"hosts":["chart-example.local"],"path":"/","tls":[]}` | Ingress settings | +| captivePortalService.labels | object | `{}` | | +| captivePortalService.loadBalancerIP | string | `nil` | Use loadBalancerIP to request a specific static IP, otherwise leave blank | +| captivePortalService.loadBalancerSourceRanges | list | `nil` | loadBalancerSourceRanges | +| captivePortalService.type | string | `"ClusterIP"` | Kubernetes service type | +| controllerService.annotations | object | `{}` | Provide any additional annotations which may be required. This can be used to set the LoadBalancer service type to internal only. ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer | +| controllerService.enabled | bool | `false` | | +| controllerService.externalTrafficPolicy | string | `"Cluster"` | Set the externalTrafficPolicy in the Service to either Cluster or Local | +| controllerService.ingress | object | `{"annotations":{},"enabled":false,"hosts":["chart-example.local"],"path":"/","tls":[]}` | Ingress settings | +| controllerService.labels | object | `{}` | | +| controllerService.loadBalancerIP | string | `nil` | Use loadBalancerIP to request a specific static IP, otherwise leave blank | +| controllerService.loadBalancerSourceRanges | list | `nil` | loadBalancerSourceRanges | +| controllerService.port | int | `8080` | Kubernetes port where the service is exposed | +| controllerService.type | string | `"NodePort"` | Kubernetes service type | +| customCert | object | `{"certName":"tls.crt","enabled":false,"isChain":false,"keyName":"tls.key"}` | If you provide your own custom certificate in /cert you can define the following parameters to configure the controller | +| deploymentAnnotations | object | `{}` | | +| discoveryService.annotations | object | `{}` | Provide any additional annotations which may be required. This can be used to set the LoadBalancer service type to internal only. ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer | +| discoveryService.enabled | bool | `false` | | +| discoveryService.externalTrafficPolicy | string | `"Cluster"` | Set the externalTrafficPolicy in the Service to either Cluster or Local | +| discoveryService.ingress | object | `{"annotations":{},"enabled":false,"hosts":["chart-example.local"],"path":"/","tls":[]}` | Ingress settings | +| discoveryService.labels | object | `{}` | | +| discoveryService.loadBalancerIP | string | `nil` | Use loadBalancerIP to request a specific static IP, otherwise leave blank | +| discoveryService.loadBalancerSourceRanges | list | `nil` | loadBalancerSourceRanges | +| discoveryService.port | int | `10001` | Kubernetes port where the service is exposed | +| discoveryService.type | string | `"NodePort"` | Kubernetes service type | +| extraConfigFiles | object | `{}` | | +| extraJvmOpts | list | `[]` | | +| extraVolumeMounts | list | `[]` | | +| extraVolumes | list | `[]` | | +| guiService.annotations | object | `{}` | Provide any additional annotations which may be required. This can be used to set the LoadBalancer service type to internal only. ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer | +| guiService.enabled | bool | `false` | | +| guiService.externalTrafficPolicy | string | `"Cluster"` | Set the externalTrafficPolicy in the Service to either Cluster or Local | +| guiService.labels | object | `{}` | | +| guiService.loadBalancerIP | string | `nil` | Use loadBalancerIP to request a specific static IP, otherwise leave blank | +| guiService.loadBalancerSourceRanges | list | `nil` | loadBalancerSourceRanges | +| guiService.nodePort | int | `nil` | Specify the nodePort value for the LoadBalancer and NodePort service types. ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport | +| guiService.port | int | `8443` | Kubernetes port where the service is exposed | +| guiService.type | string | `"ClusterIP"` | Kubernetes service type | +| image.pullPolicy | string | `"IfNotPresent"` | | +| image.repository | string | `"jacobalberty/unifi"` | | +| image.tag | string | `"5.14.23"` | | +| ingress | object | `{"annotations":{},"enabled":false,"hosts":["chart-example.local"],"path":"/","tls":[]}` | Ingress settings | +| jvmInitHeapSize | string | `nil` | Java Virtual Machine (JVM) initial, and minimum, heap size Unset value means there is no lower limit | +| jvmMaxHeapSize | string | `"1024M"` | Java Virtual Machine (JVM) maximum heap size For larger installations a larger value is recommended. For memory constrained system this value can be lowered. | +| livenessProbe | object | `{"enabled":true,"failureThreshold":3,"initialDelaySeconds":30,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}` | Liveness probe values Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes | +| logging | object | `{"promtail":{"enabled":false,"image":{"pullPolicy":"IfNotPresent","repository":"grafana/promtail","tag":"1.6.0"},"loki":{"url":"http://loki.logs.svc.cluster.local:3100/loki/api/v1/push"}}}` | Logging configuration | +| mongodb | object | `{"databaseName":"unifi","dbUri":"mongodb://mongo/unifi","enabled":false,"statDbUri":"mongodb://mongo/unifi_stat"}` | define an external mongoDB instead of using the built-in mongodb | +| nodeSelector | object | `{}` | | +| persistence.accessMode | string | `"ReadWriteOnce"` | Persistence access modes | +| persistence.enabled | bool | `true` | Use persistent volume to store data | +| persistence.existingClaim | string | `nil` | Use an existing PVC to persist data | +| persistence.size | string | `"5Gi"` | Size of persistent volume claim | +| persistence.skipuninstall | bool | `false` | Do not delete the pvc upon helm uninstall | +| persistence.storageClass | string | `nil` | Type of persistent volume claim | +| podAnnotations | object | `{}` | | +| readinessProbe | object | `{"enabled":true,"failureThreshold":3,"initialDelaySeconds":15,"periodSeconds":10,"successThreshold":1,"timeoutSeconds":1}` | Readiness probe values Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes | +| resources | object | `{}` | | +| runAsRoot | bool | `false` | | +| speedtestService.annotations | object | `{}` | Provide any additional annotations which may be required. This can be used to set the LoadBalancer service type to internal only. ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer | +| speedtestService.enabled | bool | `false` | | +| speedtestService.externalTrafficPolicy | string | `"Cluster"` | Set the externalTrafficPolicy in the Service to either Cluster or Local | +| speedtestService.labels | object | `{}` | | +| speedtestService.loadBalancerIP | string | `nil` | Use loadBalancerIP to request a specific static IP, otherwise leave blank | +| speedtestService.loadBalancerSourceRanges | list | `nil` | loadBalancerSourceRanges | +| speedtestService.port | int | `6789` | Kubernetes port where the service is exposed | +| speedtestService.type | string | `"ClusterIP"` | Kubernetes service type | +| strategyType | string | `"Recreate"` | upgrade strategy type (e.g. Recreate or RollingUpdate) | +| stunService.annotations | object | `{}` | Provide any additional annotations which may be required. This can be used to set the LoadBalancer service type to internal only. ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer | +| stunService.enabled | bool | `false` | | +| stunService.externalTrafficPolicy | string | `"Cluster"` | Set the externalTrafficPolicy in the Service to either Cluster or Local | +| stunService.labels | object | `{}` | | +| stunService.loadBalancerIP | string | `nil` | Use loadBalancerIP to request a specific static IP, otherwise leave blank | +| stunService.loadBalancerSourceRanges | list | `nil` | loadBalancerSourceRanges | +| stunService.port | int | `3478` | Kubernetes port where the service is exposed | +| stunService.type | string | `"NodePort"` | Kubernetes service type | +| syslogService.annotations | object | `{}` | Provide any additional annotations which may be required. This can be used to set the LoadBalancer service type to internal only. ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer | +| syslogService.enabled | bool | `false` | | +| syslogService.externalTrafficPolicy | string | `"Cluster"` | Set the externalTrafficPolicy in the Service to either Cluster or Local | +| syslogService.labels | object | `{}` | | +| syslogService.loadBalancerIP | string | `nil` | Use loadBalancerIP to request a specific static IP, otherwise leave blank | +| syslogService.loadBalancerSourceRanges | list | `nil` | loadBalancerSourceRanges | +| syslogService.port | int | `5514` | Kubernetes port where the service is exposed | +| syslogService.type | string | `"NodePort"` | Kubernetes service type | +| timezone | string | `"UTC"` | | +| tolerations | list | `[]` | | +| unifiedService.annotations | object | `{}` | Provide any additional annotations which may be required. This can be used to set the LoadBalancer service type to internal only. ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer | +| unifiedService.enabled | bool | `false` | | +| unifiedService.externalTrafficPolicy | string | `"Cluster"` | Set the externalTrafficPolicy in the Service to either Cluster or Local | +| unifiedService.labels | object | `{}` | | +| unifiedService.loadBalancerIP | string | `nil` | Use loadBalancerIP to request a specific static IP, otherwise leave blank | +| unifiedService.loadBalancerSourceRanges | list | `nil` | loadBalancerSourceRanges | +| unifiedService.nodePort | int | `nil` | Specify the nodePort value for the LoadBalancer and NodePort service types. ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport | +| unifiedService.type | string | `"ClusterIP"` | Kubernetes service type | + +## 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/charts/tree/master/charts/common/README.md#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). + +### [1.5.3] + +#### Added + +- N/A + +#### Changed + +- Use helm-docs + +#### Removed + +- N/A + +[1.5.3]: #1.5.3 + +## 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) \ No newline at end of file diff --git a/charts/unifi/README.md.gotmpl b/charts/unifi/README.md.gotmpl new file mode 100644 index 00000000..8b868671 --- /dev/null +++ b/charts/unifi/README.md.gotmpl @@ -0,0 +1,145 @@ +{{- 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](../common/values.yaml) from the [common library](../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/charts/tree/master/charts/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/unifi/README_CHANGELOG.md.gotmpl b/charts/unifi/README_CHANGELOG.md.gotmpl new file mode 100644 index 00000000..4627b445 --- /dev/null +++ b/charts/unifi/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/charts/tree/master/charts/common/README.md#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). + +### [1.5.3] + +#### Added + +- N/A + +#### Changed + +- Use helm-docs + +#### Removed + +- N/A + +[1.5.3]: #1.5.3 +{{- end -}} diff --git a/charts/unifi/README_CONFIG.md.gotmpl b/charts/unifi/README_CONFIG.md.gotmpl new file mode 100644 index 00000000..8cb5579e --- /dev/null +++ b/charts/unifi/README_CONFIG.md.gotmpl @@ -0,0 +1,45 @@ +{{- define "custom.custom.configuration.header" -}} +## Custom configuration +{{- end -}} + +{{- define "custom.custom.configuration" -}} +{{ template "custom.custom.configuration.header" . }} + +### Regarding the services + +- `guiService`: Represents the main web UI and is what one would normally point + the ingress to. +- `captivePortalService`: This service is used to allow the captive portal webpage + to be accessible. It needs to be reachable by the clients connecting to your guest + network. +- `controllerService`: This is needed in order for the unifi devices to talk to + the controller and must be otherwise exposed to the network where the unifi + devices run. If you run this as a `NodePort` (the default setting), make sure + that there is an external load balancer that is directing traffic from port + 8080 to the `NodePort` for this service. +- `discoveryService`: This needs to be reachable by the unifi devices on the + network similar to the controller `Service` but only during the discovery + phase. This is a UDP service. +- `stunService`: Also used periodically by the unifi devices to communicate + with the controller using UDP. See [this article][ubnt 3] and [this other + article][ubnt 4] for more information. +- `syslogService`: Used to capture syslog from Unifi devices if the feature is + enabled in the site configuration. This needs to be reachable by Unifi devices + on port 5514/UDP. +- `speedtestService`: Used for mobile speedtest inside the UniFi Mobile app. + This needs to be reachable by clients connecting to port 6789/TCP. + +### Ingress and HTTPS + +Unifi does [not support HTTP][unifi] so if you wish to use the guiService, you +need to ensure that you use a backend transport of HTTPS. + +An example entry in `values.yaml` to achieve this is as follows: + +``` +ingress: + enabled: true + annotations: + nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" +``` +{{- end -}} diff --git a/charts/unifi/values.yaml b/charts/unifi/values.yaml index b1e5a73e..859df86b 100644 --- a/charts/unifi/values.yaml +++ b/charts/unifi/values.yaml @@ -2,7 +2,7 @@ # This is a YAML-formatted file. # Declare variables to be passed into your templates. -# upgrade strategy type (e.g. Recreate or RollingUpdate) +# -- upgrade strategy type (e.g. Recreate or RollingUpdate) strategyType: Recreate image: @@ -19,106 +19,98 @@ image: # different services on different IPs. unifiedService: enabled: false + # -- Kubernetes service type type: ClusterIP - ## Specify the nodePort value for the LoadBalancer and NodePort service types. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport - ## - # nodePort: - ## Provide any additional annotations which may be required. This can be used to - ## set the LoadBalancer service type to internal only. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer - ## + # -- (int) Specify the nodePort value for the LoadBalancer and NodePort service types. + # ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + # + nodePort: + # -- Provide any additional annotations which may be required. This can be used to + # set the LoadBalancer service type to internal only. + # ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer annotations: {} labels: {} - ## Use loadBalancerIP to request a specific static IP, - ## otherwise leave blank - ## + # -- Use loadBalancerIP to request a specific static IP, + # otherwise leave blank loadBalancerIP: - # loadBalancerSourceRanges: [] - ## Set the externalTrafficPolicy in the Service to either Cluster or Local - # externalTrafficPolicy: Cluster + # -- (list) loadBalancerSourceRanges + loadBalancerSourceRanges: + # -- Set the externalTrafficPolicy in the Service to either Cluster or Local + externalTrafficPolicy: guiService: + enabled: false + # -- Kubernetes service type type: ClusterIP + # -- Kubernetes port where the service is exposed port: 8443 - ## Specify the nodePort value for the LoadBalancer and NodePort service types. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport - ## - # nodePort: - ## Provide any additional annotations which may be required. This can be used to - ## set the LoadBalancer service type to internal only. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer - ## + # -- (int) Specify the nodePort value for the LoadBalancer and NodePort service types. + # ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport + # + nodePort: + # -- Provide any additional annotations which may be required. This can be used to + # set the LoadBalancer service type to internal only. + # ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer annotations: {} labels: {} - ## Use loadBalancerIP to request a specific static IP, - ## otherwise leave blank - ## + # -- Use loadBalancerIP to request a specific static IP, + # otherwise leave blank loadBalancerIP: - # loadBalancerSourceRanges: [] - ## Set the externalTrafficPolicy in the Service to either Cluster or Local - # externalTrafficPolicy: Cluster + # -- (list) loadBalancerSourceRanges + loadBalancerSourceRanges: + # -- Set the externalTrafficPolicy in the Service to either Cluster or Local + externalTrafficPolicy: captivePortalService: enabled: false + # -- Kubernetes service type type: ClusterIP - ## Specify the nodePort value for the LoadBalancer and NodePort service types. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport - ## + # -- Kubernetes port where the http service is exposed http: 8880 + # -- Kubernetes port where the https service is exposed https: 8843 - ## Provide any additional annotations which may be required. This can be used to - ## set the LoadBalancer service type to internal only. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer - ## + # -- Provide any additional annotations which may be required. This can be used to + # set the LoadBalancer service type to internal only. + # ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer annotations: {} labels: {} - ## Use loadBalancerIP to request a specific static IP, - ## otherwise leave blank - ## + # -- Use loadBalancerIP to request a specific static IP, + # otherwise leave blank loadBalancerIP: - # loadBalancerSourceRanges: [] - ## Set the externalTrafficPolicy in the Service to either Cluster or Local - # externalTrafficPolicy: Cluster + # -- (list) loadBalancerSourceRanges + loadBalancerSourceRanges: + # -- Set the externalTrafficPolicy in the Service to either Cluster or Local + externalTrafficPolicy: - - # Ingress settings only for the captive portal + # -- Ingress settings ingress: enabled: false annotations: {} - # nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" path: / hosts: - chart-example.local tls: [] - # - secretName: chart-example-tls - # hosts: - # - chart-example.local controllerService: + enabled: false + # -- Kubernetes service type type: NodePort + # -- Kubernetes port where the service is exposed port: 8080 - ## Specify the nodePort value for the LoadBalancer and NodePort service types. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport - ## - # nodePort: - ## Provide any additional annotations which may be required. This can be used to - ## set the LoadBalancer service type to internal only. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer - ## + # -- Provide any additional annotations which may be required. This can be used to + # set the LoadBalancer service type to internal only. + # ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer annotations: {} labels: {} - ## Use loadBalancerIP to request a specific static IP, - ## otherwise leave blank - ## + # -- Use loadBalancerIP to request a specific static IP, + # otherwise leave blank loadBalancerIP: - # loadBalancerSourceRanges: [] - ## Set the externalTrafficPolicy in the Service to either Cluster or Local - # externalTrafficPolicy: Cluster - ## - # Ingress settings only for the controller + # -- (list) loadBalancerSourceRanges + loadBalancerSourceRanges: + # -- Set the externalTrafficPolicy in the Service to either Cluster or Local + externalTrafficPolicy: + + # -- Ingress settings ingress: enabled: false annotations: {} @@ -128,102 +120,100 @@ controllerService: tls: [] stunService: + enabled: false + # -- Kubernetes service type type: NodePort - port: 3478 # udp - ## Specify the nodePort value for the LoadBalancer and NodePort service types. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport - ## - # nodePort: - ## Provide any additional annotations which may be required. This can be used to - ## set the LoadBalancer service type to internal only. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer - ## + # -- Kubernetes port where the service is exposed + port: 3478 + # -- Provide any additional annotations which may be required. This can be used to + # set the LoadBalancer service type to internal only. + # ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer annotations: {} labels: {} - ## Use loadBalancerIP to request a specific static IP, - ## otherwise leave blank - ## + # -- Use loadBalancerIP to request a specific static IP, + # otherwise leave blank loadBalancerIP: - # loadBalancerSourceRanges: [] - ## Set the externalTrafficPolicy in the Service to either Cluster or Local - # externalTrafficPolicy: Cluster + # -- (list) loadBalancerSourceRanges + loadBalancerSourceRanges: + # -- Set the externalTrafficPolicy in the Service to either Cluster or Local + externalTrafficPolicy: discoveryService: + enabled: false + # -- Kubernetes service type type: NodePort - port: 10001 # udp - ## Specify the nodePort value for the LoadBalancer and NodePort service types. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport - ## - # nodePort: - ## Provide any additional annotations which may be required. This can be used to - ## set the LoadBalancer service type to internal only. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer - ## + # -- Kubernetes port where the service is exposed + port: 10001 + # -- Provide any additional annotations which may be required. This can be used to + # set the LoadBalancer service type to internal only. + # ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer annotations: {} labels: {} - ## Use loadBalancerIP to request a specific static IP, - ## otherwise leave blank - ## + # -- Use loadBalancerIP to request a specific static IP, + # otherwise leave blank loadBalancerIP: - # loadBalancerSourceRanges: [] - ## Set the externalTrafficPolicy in the Service to either Cluster or Local - # externalTrafficPolicy: Cluster + # -- (list) loadBalancerSourceRanges + loadBalancerSourceRanges: + # -- Set the externalTrafficPolicy in the Service to either Cluster or Local + externalTrafficPolicy: + + + # -- Ingress settings + ingress: + enabled: false + annotations: {} + path: / + hosts: + - chart-example.local + tls: [] syslogService: + enabled: false + # -- Kubernetes service type type: NodePort - port: 5514 # udp - ## Specify the nodePort value for the LoadBalancer and NodePort service types. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport - ## - # nodePort: - ## Provide any additional annotations which may be required. This can be used to - ## set the LoadBalancer service type to internal only. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer - ## + # -- Kubernetes port where the service is exposed + port: 5514 + # -- Provide any additional annotations which may be required. This can be used to + # set the LoadBalancer service type to internal only. + # ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer annotations: {} labels: {} - ## Use loadBalancerIP to request a specific static IP, - ## otherwise leave blank - ## + # -- Use loadBalancerIP to request a specific static IP, + # otherwise leave blank loadBalancerIP: - # loadBalancerSourceRanges: [] - ## Set the externalTrafficPolicy in the Service to either Cluster or Local - # externalTrafficPolicy: Cluster + # -- (list) loadBalancerSourceRanges + loadBalancerSourceRanges: + # -- Set the externalTrafficPolicy in the Service to either Cluster or Local + externalTrafficPolicy: speedtestService: + enabled: false + # -- Kubernetes service type type: ClusterIP + # -- Kubernetes port where the service is exposed port: 6789 - ## Specify the nodePort value for the LoadBalancer and NodePort service types. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport - ## - # nodePort: - ## Provide any additional annotations which may be required. This can be used to - ## set the LoadBalancer service type to internal only. - ## ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer - ## + # -- Provide any additional annotations which may be required. This can be used to + # set the LoadBalancer service type to internal only. + # ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer annotations: {} labels: {} - ## Use loadBalancerIP to request a specific static IP, - ## otherwise leave blank - ## + # -- Use loadBalancerIP to request a specific static IP, + # otherwise leave blank loadBalancerIP: - # loadBalancerSourceRanges: [] - ## Set the externalTrafficPolicy in the Service to either Cluster or Local - # externalTrafficPolicy: Cluster + # -- (list) loadBalancerSourceRanges + loadBalancerSourceRanges: + # -- Set the externalTrafficPolicy in the Service to either Cluster or Local + externalTrafficPolicy: + +# -- Ingress settings ingress: enabled: false annotations: {} - # nginx.ingress.kubernetes.io/backend-protocol: "HTTPS" - # kubernetes.io/ingress.class: nginx - # kubernetes.io/tls-acme: "true" path: / hosts: - chart-example.local tls: [] - # - secretName: chart-example-tls - # hosts: - # - chart-example.local timezone: UTC @@ -231,8 +221,8 @@ runAsRoot: false UID: 999 GID: 999 -## If you provide your own custom certificate in /cert -## you can define the following parameters to configure the controller +# -- If you provide your own custom certificate in /cert +# you can define the following parameters to configure the controller customCert: enabled: false isChain: false @@ -242,7 +232,7 @@ customCert: # you can pass the name of that secret using certSecret variable # certSecret: unifi-tls -# Logging configuration +# -- Logging configuration logging: promtail: enabled: false @@ -253,7 +243,7 @@ logging: loki: url: http://loki.logs.svc.cluster.local:3100/loki/api/v1/push -# define an external mongoDB instead of using the built-in mongodb +# -- define an external mongoDB instead of using the built-in mongodb mongodb: enabled: false dbUri: mongodb://mongo/unifi @@ -261,24 +251,18 @@ mongodb: databaseName: unifi persistence: - enabled: true - ## unifi data Persistent Volume Storage Class - ## If defined, storageClassName: - ## If set to "-", storageClassName: "", which disables dynamic provisioning - ## If undefined (the default) or set to null, no storageClassName spec is - ## set, choosing the default provisioner. (gp2 on AWS, standard on - ## GKE, AWS & OpenStack) - ## - # storageClass: "-" - ## - ## If you want to reuse an existing claim, you can pass the name of the PVC using - ## the existingClaim variable - # existingClaim: your-claim - # - ## Applies a prefix to the directories created by the unifi container - # subPath: unifi + # -- Use persistent volume to store data + enabled: false + # -- (string) Type of persistent volume claim + storageClass: + # -- (string) Use an existing PVC to persist data + existingClaim: + # -- Persistence access modes accessMode: ReadWriteOnce + # -- Size of persistent volume claim size: 5Gi + # -- Do not delete the pvc upon helm uninstall + skipuninstall: false extraVolumes: [] ## specify additional volume to be used by extraVolumeMounts inside unifi container @@ -300,13 +284,13 @@ extraJvmOpts: [] # - "-Dlog4j.configurationFile=file:/configmap/log4j2.xml" # - "-Dsystem_ip=1.2.3.4" -## Java Virtual Machine (JVM) initial, and minimum, heap size -## Unset value means there is no lower limit +# -- Java Virtual Machine (JVM) initial, and minimum, heap size +# Unset value means there is no lower limit jvmInitHeapSize: -## Java Virtual Machine (JVM) maximum heap size -## For larger installations a larger value is recommended. -## For memory constrained system this value can be lowered. +# -- Java Virtual Machine (JVM) maximum heap size +# For larger installations a larger value is recommended. +# For memory constrained system this value can be lowered. jvmMaxHeapSize: 1024M extraConfigFiles: {} @@ -350,9 +334,8 @@ resources: {} # cpu: 100m # memory: 128Mi -## Liveness and readiness probe values -## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes -## +# -- Liveness probe values +# Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes livenessProbe: enabled: true initialDelaySeconds: 30 @@ -360,6 +343,9 @@ livenessProbe: timeoutSeconds: 1 failureThreshold: 3 successThreshold: 1 + +# -- Readiness probe values +# Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes readinessProbe: enabled: true initialDelaySeconds: 15 diff --git a/charts/uptimerobot/Chart.yaml b/charts/uptimerobot/Chart.yaml index b9c447f0..25b754b7 100644 --- a/charts/uptimerobot/Chart.yaml +++ b/charts/uptimerobot/Chart.yaml @@ -1,6 +1,6 @@ apiVersion: v2 name: uptimerobot -version: 3.0.1 +version: 3.0.2 appVersion: 1.1.0 description: A tool to get statistics from Uptime Robot and log it into InfluxDB keywords: diff --git a/charts/uptimerobot/README.md b/charts/uptimerobot/README.md index 8ea04d2a..5a8805c6 100644 --- a/charts/uptimerobot/README.md +++ b/charts/uptimerobot/README.md @@ -1,73 +1,120 @@ -# A tool to get statistics from Uptime Robot and log it into InfluxDB +# uptimerobot -![Screenshot](https://raw.githubusercontent.com/billimek/node-influx-uptimerobot/master/docs/dashboard.png) +![Version: 3.0.1](https://img.shields.io/badge/Version-3.0.1-informational?style=flat-square) ![AppVersion: 1.1.0](https://img.shields.io/badge/AppVersion-1.1.0-informational?style=flat-square) -This tool allows you to run periodic uptimerobot data usage checks and save the results to Influxdb +A tool to get statistics from Uptime Robot and log it into InfluxDB -## TL;DR; +**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 + +## Dependencies + +| Repository | Name | Version | +|------------|------|---------| + +## TL;DR ```console -$ helm repo add k8s-at-home https://k8s-at-home.com/charts/ -$ helm install k8s-at-home/uptimerobot +helm repo add k8s-at-home https://k8s-at-home.com/charts/ +helm repo update +helm install uptimerobot k8s-at-home/uptimerobot ``` -## Introduction - -This code is adopted from [this original repo](https://github.com/trojanc/node-influx-uptimerobot) - ## Installing the Chart -To install the chart with the release name `my-release`: +To install the chart with the release name `uptimerobot` ```console -$ helm install --name my-release k8s-at-home/uptimerobot +helm install uptimerobot k8s-at-home/uptimerobot ``` + ## Uninstalling the Chart -To uninstall/delete the `my-release` deployment: +To uninstall the `uptimerobot` deployment ```console -$ helm delete my-release --purge +helm uninstall uptimerobot ``` -The command removes all the Kubernetes components associated with the chart and deletes the release. +The command removes all the Kubernetes components associated with the chart **including persistent volumes** and deletes the release. ## Configuration -The configuration is set as a block of text through a configmap and mounted as a file in /src/config.ini Any value in this text block should match the defined uptimerobot configuration. There are several values here that will have to match our kubernetes 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](../common/values.yaml) from the [common library](../common). -## Configuration - -The following tables lists the configurable parameters of the Sentry chart and their default values. - -| Parameter | Description | Default | -| ------------------------------- | ------------------------------- | ---------------------------------------------------------- | -| `image.repository` | uptimerobot image | `billimek/uptimerobotusage-for-influxdb` | -| `image.tag` | uptimerobot image tag | `latest` | -| `image.pullPolicy` | uptimerobot image pull policy | `IfNotPresent` | -| `delay` | number of seconds to wait between collections | `300` | -| `config.influxdb.host` | InfluxDB hostname | `influxdb-influxdb` | -| `config.influxdb.port` | InfluxDB port | `8086` | -| `config.influxdb.database` | InfluxDB database | `uptimerobot` | -| `config.influxdb.protocol` | InfluxDB protocol | `http` | -| `config.influxdb.username` | InfluxDB username | `` | -| `config.influxdb.password` | InfluxDB password | `` | -| `config.uptimerobot.apikey` | uptimerobot API key (REQUIRED) | `someapikey` | -| `podAnnotations` | Key-value pairs to add as pod annotations | `{}` | - - -Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. ```console -$ helm install --name my-release \ - --set config.uptimerobot.apikey=thisismyapikey \ +helm install uptimerobot \ + --set env.TZ="America/New York" \ k8s-at-home/uptimerobot ``` -Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. For example, +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the chart. ```console -$ helm install --name my-release -f values.yaml k8s-at-home/uptimerobot +helm install uptimerobot k8s-at-home/uptimerobot -f values.yaml ``` -Read through the [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/uptimerobot/values.yaml) file. It has several commented out suggested values. +## 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/charts/tree/master/charts/common/) + +| Key | Type | Default | Description | +|-----|------|---------|-------------| +| config.influxdb.database | string | `"uptimerobot"` | | +| config.influxdb.host | string | `"influxdb-influxdb"` | host/port/database are mandatory - change as needed | +| config.influxdb.port | int | `8086` | | +| config.influxdb.protocol | string | `"http"` | | +| config.uptimerobot.apikey | string | `"someapikey"` | uptimerobot API key (REQUIRED) | +| delay | int | `300` | number of seconds to wait between collections | +| image.pullPolicy | string | `"Always"` | uptimerobot image pull policy | +| image.repository | string | `"billimek/node-influx-uptimerobot"` | uptimerobot image | +| image.tag | string | `"latest"` | uptimerobot image tag | +| nodeSelector | object | `{}` | | +| podAnnotations | object | `{}` | Key-value pairs to add as pod annotations | +| replicaCount | int | `1` | | +| resources | object | `{}` | | + +## 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/charts/tree/master/charts/common/README.md#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). + +### [3.0.1] + +#### Added + +- N/A + +#### Changed + +- Use helm-docs + +#### Removed + +- N/A + +[3.0.1]: #3.0.1 + +## 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) \ No newline at end of file diff --git a/charts/uptimerobot/README.md.gotmpl b/charts/uptimerobot/README.md.gotmpl new file mode 100644 index 00000000..8b868671 --- /dev/null +++ b/charts/uptimerobot/README.md.gotmpl @@ -0,0 +1,145 @@ +{{- 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](../common/values.yaml) from the [common library](../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/charts/tree/master/charts/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/uptimerobot/README_CHANGELOG.md.gotmpl b/charts/uptimerobot/README_CHANGELOG.md.gotmpl new file mode 100644 index 00000000..21dc5b6d --- /dev/null +++ b/charts/uptimerobot/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/charts/tree/master/charts/common/README.md#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). + +### [3.0.2] + +#### Added + +- N/A + +#### Changed + +- Use helm-docs + +#### Removed + +- N/A + +[3.0.2]: #3.0.2 +{{- end -}} diff --git a/charts/uptimerobot/README_CONFIG.md.gotmpl b/charts/uptimerobot/README_CONFIG.md.gotmpl new file mode 100644 index 00000000..e93d80bf --- /dev/null +++ b/charts/uptimerobot/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/uptimerobot/values.yaml b/charts/uptimerobot/values.yaml index ee447f33..257814b5 100644 --- a/charts/uptimerobot/values.yaml +++ b/charts/uptimerobot/values.yaml @@ -3,8 +3,11 @@ # Declare variables to be passed into your templates. replicaCount: 1 image: + # -- uptimerobot image repository: billimek/node-influx-uptimerobot + # -- uptimerobot image tag tag: latest + # -- uptimerobot image pull policy pullPolicy: Always resources: {} # We usually recommend not to specify default resources and to leave this as a conscious @@ -18,11 +21,11 @@ resources: {} # cpu: 100m # memory: 128Mi nodeSelector: {} -# number of seconds to wait between collections +# -- number of seconds to wait between collections delay: 300 config: influxdb: - # host/port/database are mandatory - change as needed + # -- host/port/database are mandatory - change as needed host: influxdb-influxdb port: 8086 protocol: http @@ -30,9 +33,10 @@ config: # username: # password: uptimerobot: - # API key is mandatory and must be populated + # -- uptimerobot API key (REQUIRED) apikey: someapikey # logs_limit: 100 # response_times_limit: 100 +# -- Key-value pairs to add as pod annotations podAnnotations: {}