From adf03889a41853f83139dcf5e2c6011bc7ada911 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E1=97=AA=D1=94=CE=BD=CE=B9=CE=B7=20=E1=97=B7=CF=85=D0=BD?= =?UTF-8?q?=CA=9F?= Date: Fri, 8 Jan 2021 10:34:54 -0500 Subject: [PATCH] [zwavejs2mqtt] new chart (#483) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Co-authored-by: Bᴇʀɴᴅ Sᴄʜᴏʀɢᴇʀs <6213398+bjw-s@users.noreply.github.com> --- charts/zwavejs2mqtt/.helmignore | 24 +++++ charts/zwavejs2mqtt/Chart.yaml | 21 +++++ charts/zwavejs2mqtt/OWNERS | 8 ++ charts/zwavejs2mqtt/README.md | 97 ++++++++++++++++++++ charts/zwavejs2mqtt/templates/NOTES.txt | 1 + charts/zwavejs2mqtt/templates/common.yaml | 1 + charts/zwavejs2mqtt/values.yaml | 104 ++++++++++++++++++++++ 7 files changed, 256 insertions(+) create mode 100644 charts/zwavejs2mqtt/.helmignore create mode 100644 charts/zwavejs2mqtt/Chart.yaml create mode 100644 charts/zwavejs2mqtt/OWNERS create mode 100644 charts/zwavejs2mqtt/README.md create mode 100644 charts/zwavejs2mqtt/templates/NOTES.txt create mode 100644 charts/zwavejs2mqtt/templates/common.yaml create mode 100644 charts/zwavejs2mqtt/values.yaml diff --git a/charts/zwavejs2mqtt/.helmignore b/charts/zwavejs2mqtt/.helmignore new file mode 100644 index 00000000..e559de0a --- /dev/null +++ b/charts/zwavejs2mqtt/.helmignore @@ -0,0 +1,24 @@ +# Patterns to ignore when building packages. +# This supports shell glob matching, relative path matching, and +# negation (prefixed with !). Only one pattern per line. +.DS_Store +# Common VCS dirs +.git/ +.gitignore +.bzr/ +.bzrignore +.hg/ +.hgignore +.svn/ +# Common backup files +*.swp +*.bak +*.tmp +*~ +# Various IDEs +.project +.idea/ +*.tmproj +.vscode/ +# OWNERS file for Kubernetes +OWNERS diff --git a/charts/zwavejs2mqtt/Chart.yaml b/charts/zwavejs2mqtt/Chart.yaml new file mode 100644 index 00000000..579f4c78 --- /dev/null +++ b/charts/zwavejs2mqtt/Chart.yaml @@ -0,0 +1,21 @@ +apiVersion: v2 +appVersion: 1.0.0-alpha.2 +description: Fully configurable Zwave to MQTT Gateway and Control Panel +name: zwavejs2mqtt +version: 1.0.0 +keywords: + - zwave + - mqtt + - home-assistant +home: https://github.com/k8s-at-home/charts/tree/master/charts/zwavejs2mqtt +icon: https://github.com/OpenZWave/Zwave2Mqtt/raw/master/docs/OZW_Logo.png +sources: + - https://github.com/zwave-js/zwavejs2mqtt + - https://hub.docker.com/r/zwavejs/zwavejs2mqtt +maintainers: + - name: billimek + email: jeff@billimek.com +dependencies: + - name: common + repository: https://k8s-at-home.com/charts/ + version: 2.2.1 diff --git a/charts/zwavejs2mqtt/OWNERS b/charts/zwavejs2mqtt/OWNERS new file mode 100644 index 00000000..1ce35762 --- /dev/null +++ b/charts/zwavejs2mqtt/OWNERS @@ -0,0 +1,8 @@ +approvers: +- billimek +- onedr0p +- bjw-s +reviewers: +- billimek +- onedr0p +- bjw-s diff --git a/charts/zwavejs2mqtt/README.md b/charts/zwavejs2mqtt/README.md new file mode 100644 index 00000000..16b9e2e3 --- /dev/null +++ b/charts/zwavejs2mqtt/README.md @@ -0,0 +1,97 @@ +# zwavejs2mqtt + +This is a helm chart for [zwavejs2mqtt](https://github.com/zwave-js/zwavejs2mqtt). + +**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)** + +## TL;DR; + +```shell +$ helm repo add k8s-at-home https://k8s-at-home.com/charts/ +$ helm install k8s-at-home/zwavejs2mqtt +``` + +## Installing the Chart + +To install the chart with the release name `my-release`: + +```console +helm install --name my-release k8s-at-home/zwavejs2mqtt +``` + +**IMPORTANT NOTE:** a zwave controller device must be accessible on the node where this pod runs, in order for this chart to function properly. + +First, you will need to mount your zwave device into the pod, you can do so by adding the following to your values: + +```yaml +additionalVolumeMounts: + - name: usb + mountPath: /path/to/device + +additionalVolumes: + - name: usb + hostPath: + path: /path/to/device +``` + +Second you will need to set a nodeAffinity rule, for example: + +```yaml +affinity: + nodeAffinity: + requiredDuringSchedulingIgnoredDuringExecution: + nodeSelectorTerms: + - matchExpressions: + - key: app + operator: In + values: + - zwave-controller +``` + +... where a node with an attached zwave controller USB device is labeled with `app: zwave-controller` + +## Uninstalling the Chart + +To uninstall/delete the `my-release` deployment: + +```console +helm delete my-release --purge +``` + +The command removes all the Kubernetes components associated with the chart and deletes the release. + +Read through the charts [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/zwavejs2mqtt/values.yaml) +file. It has several commented out suggested values. +Additionally you can take a look at the common library [values.yaml](https://github.com/k8s-at-home/charts/blob/master/charts/common/values.yaml) for more (advanced) configuration options. + +Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example, +```console +helm install my-release \ + --set env.TZ="America/New_York" \ + k8s-at-home/zwavejs2mqtt +``` +Alternatively, a YAML file that specifies the values for the above parameters can be provided while installing the +chart. For example, +```console +helm install my-release k8s-at-home/zwavejs2mqtt --values values.yaml +``` + +```yaml +image: + tag: ... +``` + +--- +**NOTE** + +If you get +```console +Error: rendered manifests contain a resource that already exists. Unable to continue with install: existing resource conflict: ...` +``` +it may be because you uninstalled the chart with `skipuninstall` enabled, you need to manually delete the pvc or use `existingClaim`. + +--- + +## Upgrading an existing Release to a new major version + +A major chart version change (like 4.0.1 -> 5.0.0) indicates that there is an incompatible breaking change potentially needing manual actions. diff --git a/charts/zwavejs2mqtt/templates/NOTES.txt b/charts/zwavejs2mqtt/templates/NOTES.txt new file mode 100644 index 00000000..90f7b653 --- /dev/null +++ b/charts/zwavejs2mqtt/templates/NOTES.txt @@ -0,0 +1 @@ +{{- include "common.notes.defaultNotes" . -}} diff --git a/charts/zwavejs2mqtt/templates/common.yaml b/charts/zwavejs2mqtt/templates/common.yaml new file mode 100644 index 00000000..a6613c2c --- /dev/null +++ b/charts/zwavejs2mqtt/templates/common.yaml @@ -0,0 +1 @@ +{{ include "common.all" . }} diff --git a/charts/zwavejs2mqtt/values.yaml b/charts/zwavejs2mqtt/values.yaml new file mode 100644 index 00000000..7d1ffdb4 --- /dev/null +++ b/charts/zwavejs2mqtt/values.yaml @@ -0,0 +1,104 @@ +# Default values for zwavejs2mqtt. + +image: + repository: zwavejs/zwavejs2mqtt + pullPolicy: IfNotPresent + tag: 1.0.0-alpha.2 + +strategy: + type: Recreate + +# # See more environment variables in the zwavejs2mqtt documentation +# https://zwave-js.github.io/zwavejs2mqtt/#/guide/env-vars +env: {} + # OZW_NETWORK_KEY: + +probes: + liveness: + enabled: true + # custom: true + # spec: + # failureThreshold: 5 + # httpGet: + # path: /health + # port: http + # httpHeaders: + # - name: Accept + # value: text/plain + # initialDelaySeconds: 30 + # periodSeconds: 10 + # timeoutSeconds: 10 + readiness: + enabled: true + # custom: true + # spec: + # failureThreshold: 5 + # httpGet: + # path: /health + # port: http + # httpHeaders: + # - name: Accept + # value: text/plain + # initialDelaySeconds: 30 + # periodSeconds: 10 + # timeoutSeconds: 10 + startup: + enabled: false + # custom: true + # spec: + # failureThreshold: 5 + # httpGet: + # path: /health + # port: http + # httpHeaders: + # - name: Accept + # value: text/plain + # initialDelaySeconds: 30 + # periodSeconds: 10 + # timeoutSeconds: 10 + +service: + port: + port: 8091 + +securityContext: + privileged: true + +persistence: + config: + enabled: false + emptyDir: false + mountPath: /usr/src/app/store + ## 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: "-" + # accessMode: ReadWriteOnce + # size: 1Gi + ## Do not delete the pvc upon helm uninstall + # skipuninstall: false + # existingClaim: "" + +# Path to your zwave device in the container +additionalVolumeMounts: + - name: usb + mountPath: /dev/serial/by-id/usb-0658_0200-if00 + +# Path to your zwave device on the host +additionalVolumes: + - name: usb + hostPath: + path: /dev/serial/by-id/usb-0658_0200-if00 + +# affinity: +# nodeAffinity: +# requiredDuringSchedulingIgnoredDuringExecution: +# nodeSelectorTerms: +# - matchExpressions: +# - key: app +# operator: In +# values: +# - zwave-controller