[deCONZ] Added chart (#315)

* [deCONZ] Added chart

* [deCONZ] Fix linter error
This commit is contained in:
BJWS 2020-08-08 16:21:13 +02:00 committed by GitHub
parent 17e306825e
commit 9ff1b2bdeb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
12 changed files with 724 additions and 0 deletions

23
charts/deconz/.helmignore Normal file
View File

@ -0,0 +1,23 @@
# 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
*.orig
*~
# Various IDEs
.project
.idea/
*.tmproj
.vscode/

17
charts/deconz/Chart.yaml Normal file
View File

@ -0,0 +1,17 @@
apiVersion: v2
name: deconz
description: A Helm chart for deploying deCONZ
version: 1.0.0
appVersion: 2.05.79
keywords:
- deconz
- home-automation
- zigbee
home: https://github.com/billimek/billimek-charts/tree/master/charts/deconz
icon: https://avatars1.githubusercontent.com/u/4217524?s=400&v=4
sources:
- https://github.com/dresden-elektronik/deconz-rest-plugin
- https://github.com/marthoc/docker-deconz
maintainers:
- name: billimek
email: jeff@billimek.com

101
charts/deconz/README.md Normal file
View File

@ -0,0 +1,101 @@
# deCONZ helm chart
This is a helm chart for [deCONZ](https://www.dresden-elektronik.de/funk/software/deconz.html) based on the [container image provided by marthoc](https://hub.docker.com/r/marthoc/deconz/).
## TL;DR
```shell
helm repo add billimek https://billimek.com/billimek-charts/
helm install billimek/deconz
```
## Installing the Chart
To install the chart with the release name `my-release`:
```shell
helm install my-release billimek/deconz
```
## Uninstalling the Chart
To uninstall/delete the `my-release` deployment:
```shell
helm delete my-release --purge
```
The command removes all the Kubernetes components associated with the chart 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/billimek/billimek-charts/blob/master/charts/deconz/values.yaml) file. It has several commented out suggested values.
| Parameter | Description | Default |
| ------------------------------------------- | -------------------------------------------------------------------------------------------- | ---------------------------------------------- |
| `replicaCount` | Number of replicas to scale to | `1` |
| `autoscaling.enabled` | Enables Pod auto-scaling | `false` |
| `autoscaling.minReplicas` | Minimum number of replicas to auto-scale to | `1` |
| `autoscaling.maxReplicas` | Maximum number of replicas to auto-scale to | `1` |
| `image.repository` | Image repository | `marthoc/deconz` |
| `image.tag` | Image tag. Possible values listed [here](https://hub.docker.com/r/marthoc/deconz/tags/). | `amd64-2.05.79` |
| `image.pullPolicy` | Image pull policy | `IfNotPresent` |
| `strategyType` | Specifies the strategy used to replace old Pods by new ones | `Recreate` |
| `timezone` | Timezone the instance should run as, e.g. 'America/New_York' | `UTC` |
| `zigbeeDevice.enabled` | Enables passing through a Zigbee device | `false` |
| `zigbeeDevice.hostPath` | HostPath of the Zigbee device that should be passed through | `/dev/ttyUSB1` |
| `vnc.enabled` | Enabled the built-in VNC server to access the application | `true` |
| `vnc.password` | VNC server password | `changeme` |
| `vnc.existingSecret` | Existing Kubernetes secret containing the VNC password | `nil` |
| `probes.liveness.enabled` | Enables liveness probe for the Pod | `true` |
| `probes.liveness.failureThreshold` | Specify liveness `failureThreshold` parameter for the Pod | `5` |
| `probes.liveness.initialDelaySeconds` | Specify liveness `initialDelaySeconds` parameter for the Pod | `60` |
| `probes.liveness.timeoutSeconds` | Specify liveness `timeoutSeconds` parameter for the Pod | `10` |
| `probes.readiness.enabled` | Enables readiness probe for the Pod | `true` |
| `probes.readiness.initialDelaySeconds` | Specify readiness `initialDelaySeconds` parameter for the Pod | `60` |
| `probes.readiness.failureThreshold` | Specify readiness `failureThreshold` parameter for the Pod | `5` |
| `probes.readiness.timeoutSeconds` | Specify readiness `timeoutSeconds` parameter for the Pod | `10` |
| `probes.startup.enabled` | Enables startup probe for the Pod | `false` |
| `probes.startup.failureThreshold` | Specify startup `failureThreshold` parameter for the Pod | `30` |
| `probes.startup.timeoutSeconds` | Specify startup `periodSeconds` parameter for the Pod | `10` |
| `service.type` | Kubernetes service type for the GUI | `ClusterIP` |
| `service.httpPort` | Kubernetes port where the GUI is exposed | `80` |
| `service.websocketPort` | Kubernetes port where the Websocket is exposed | `443` |
| `service.vncPort` | Kubernetes port where the VNC server is exposed | `5900` |
| `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` |
| `ingress.enabled` | Enables Ingress | `false` |
| `ingress.annotations` | Ingress annotations | `{}` |
| `ingress.labels` | Custom labels | `{}` |
| `ingress.path` | Ingress path | `/` |
| `ingress.hosts` | Ingress accepted hostnames | `chart-example.local` |
| `ingress.tls` | Ingress TLS configuration | `[]` |
| `persistence.enabled` | Use persistent volume to store configuration data | `true` |
| `persistence.annotations` | Key-value pairs to add as persistent volume claim annotations | `{}` |
| `persistence.storageClass` | Type of persistent volume claim | `-` |
| `persistence.existingClaim` | Use an existing PVC to persist data | `nil` |
| `persistence.accessMode` | Persistence access mode | `ReadWriteOnce` |
| `persistence.size` | Size of persistent volume claim | `1Gi` |
| `extraVolumes` | Optionally add additional Volumes | `[]` |
| `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 | `{}` |
Specify each parameter using the `--set key=value[,key=value]` argument to `helm install`. For example,
```console
helm install my-release \
--set timezone="Europe/Amsterdam" \
billimek/deconz
```
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 -f values.yaml billimek/deconz
```

View File

@ -0,0 +1,22 @@
{{- $svcPort := .Values.service.httpPort -}}
1. Get the application URL by running these commands:
{{- if .Values.ingress.enabled }}
{{- range $host := .Values.ingress.hosts }}
{{- range .paths }}
http{{ if $.Values.ingress.tls }}s{{ end }}://{{ $host.host }}{{ . }}
{{- end }}
{{- end }}
{{- else if contains "NodePort" .Values.service.type }}
export NODE_PORT=$(kubectl get --namespace {{ .Release.Namespace }} -o jsonpath="{.spec.ports[0].nodePort}" services {{ include "deconz.fullname" . }})
export NODE_IP=$(kubectl get nodes --namespace {{ .Release.Namespace }} -o jsonpath="{.items[0].status.addresses[0].address}")
echo http://$NODE_IP:$NODE_PORT
{{- else if contains "LoadBalancer" .Values.service.type }}
NOTE: It may take a few minutes for the LoadBalancer IP to be available.
You can watch the status of by running 'kubectl get --namespace {{ .Release.Namespace }} svc -w {{ include "deconz.fullname" . }}'
export SERVICE_IP=$(kubectl get svc --namespace {{ .Release.Namespace }} {{ include "deconz.fullname" . }} --template "{{"{{ range (index .status.loadBalancer.ingress 0) }}{{.}}{{ end }}"}}")
echo http://$SERVICE_IP:{{ .Values.service.port }}
{{- else if contains "ClusterIP" .Values.service.type }}
export POD_NAME=$(kubectl get pods --namespace {{ .Release.Namespace }} -l "app.kubernetes.io/name={{ include "deconz.name" . }},app.kubernetes.io/instance={{ .Release.Name }}" -o jsonpath="{.items[0].metadata.name}")
echo "Visit http://127.0.0.1:8080 to use your application"
kubectl --namespace {{ .Release.Namespace }} port-forward $POD_NAME 8080:{{ $svcPort }}
{{- end }}

View File

@ -0,0 +1,114 @@
{{/* vim: set filetype=mustache: */}}
{{/*
Expand the name of the chart.
*/}}
{{- define "deconz.name" -}}
{{- default .Chart.Name .Values.nameOverride | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Create a default fully qualified app name.
We truncate at 63 chars because some Kubernetes name fields are limited to this (by the DNS naming spec).
If release name contains chart name it will be used as a full name.
*/}}
{{- define "deconz.fullname" -}}
{{- if .Values.fullnameOverride }}
{{- .Values.fullnameOverride | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- $name := default .Chart.Name .Values.nameOverride }}
{{- if contains $name .Release.Name }}
{{- .Release.Name | trunc 63 | trimSuffix "-" }}
{{- else }}
{{- printf "%s-%s" .Release.Name $name | trunc 63 | trimSuffix "-" }}
{{- end }}
{{- end }}
{{- end }}
{{/*
Create chart name and version as used by the chart label.
*/}}
{{- define "deconz.chart" -}}
{{- printf "%s-%s" .Chart.Name .Chart.Version | replace "+" "_" | trunc 63 | trimSuffix "-" }}
{{- end }}
{{/*
Common labels
*/}}
{{- define "deconz.labels" -}}
helm.sh/chart: {{ include "deconz.chart" . }}
{{ include "deconz.selectorLabels" . }}
{{- if .Chart.AppVersion }}
app.kubernetes.io/version: {{ .Chart.AppVersion | quote }}
{{- end }}
app.kubernetes.io/managed-by: {{ .Release.Service }}
{{- end }}
{{/*
Selector labels
*/}}
{{- define "deconz.selectorLabels" -}}
app.kubernetes.io/name: {{ include "deconz.name" . }}
app.kubernetes.io/instance: {{ .Release.Name }}
{{- end }}
{{/*
Create the name of the service account to use
*/}}
{{- define "deconz.serviceAccountName" -}}
{{- if .Values.serviceAccount.create }}
{{- default (include "deconz.fullname" .) .Values.serviceAccount.name }}
{{- else }}
{{- default "default" .Values.serviceAccount.name }}
{{- end }}
{{- end }}
{{/*
Return true if a secret object should be created
*/}}
{{- define "deconz.createSecret" -}}
{{- if .Values.vnc.existingSecret }}
{{- else -}}
{{- true -}}
{{- end -}}
{{- end -}}
{{/*
Get the password secret.
*/}}
{{- define "deconz.secretName" -}}
{{- if .Values.vnc.existingSecret }}
{{- printf "%s" .Values.vnc.existingSecret -}}
{{- else -}}
{{- printf "%s" (include "deconz.fullname" .) -}}
{{- end -}}
{{- end -}}
{{/*
Get the additional volumes
*/}}
{{- define "deconz.extraVolumes" -}}
{{- if .Values.extraVolumes }}
{{- $extraVolumes := .Values.extraVolumes -}}
{{- range $extraVolumes }}
{{- $_ := unset . "mountPath" }}
{{- end }}
{{- toYaml $extraVolumes }}
{{- end }}
{{- end }}
{{/*
Get the additional volumeMounts
*/}}
{{- define "deconz.extraVolumeMounts" -}}
{{- if .Values.extraVolumes }}
{{- $extraVolumeMounts := list -}}
{{- range .Values.extraVolumes }}
{{- if .mountPath }}
{{- $extraVolumeMounts = dict "name" .name "mountPath" .mountPath | append $extraVolumeMounts -}}
{{- else }}
{{- $extraVolumeMounts = dict "name" .name "mountPath" (printf "/mnt/%s" .name) | append $extraVolumeMounts -}}
{{- end }}
{{- end }}
{{- toYaml $extraVolumeMounts }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,15 @@
{{- if .Values.autoscaling.enabled }}
apiVersion: autoscaling/v2beta1
kind: HorizontalPodAutoscaler
metadata:
name: {{ include "deconz.fullname" . }}
labels:
{{- include "deconz.labels" . | nindent 4 }}
spec:
scaleTargetRef:
apiVersion: apps/v1
kind: StatefulSet
name: {{ include "deconz.fullname" . }}
minReplicas: {{ .Values.autoscaling.minReplicas }}
maxReplicas: {{ .Values.autoscaling.maxReplicas }}
{{- end }}

View File

@ -0,0 +1,40 @@
{{- if .Values.ingress.enabled -}}
{{- $fullName := include "deconz.fullname" . -}}
{{- $ingressPath := .Values.ingress.path -}}
{{- $svcPort := .Values.service.httpPort -}}
{{- if semverCompare ">=1.14-0" .Capabilities.KubeVersion.GitVersion -}}
apiVersion: networking.k8s.io/v1beta1
{{- else -}}
apiVersion: extensions/v1beta1
{{- end }}
kind: Ingress
metadata:
name: {{ $fullName }}
labels:
{{- include "deconz.labels" . | nindent 4 }}
{{- with .Values.ingress.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
spec:
{{- if .Values.ingress.tls }}
tls:
{{- range .Values.ingress.tls }}
- hosts:
{{- range .hosts }}
- {{ . | quote }}
{{- end }}
secretName: {{ .secretName }}
{{- end }}
{{- end }}
rules:
{{- range .Values.ingress.hosts }}
- host: {{ .host | quote }}
http:
paths:
- path: {{ $ingressPath }}
backend:
serviceName: {{ $fullName }}
servicePort: {{ $svcPort }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,11 @@
{{- if (include "deconz.createSecret" .) }}
apiVersion: v1
kind: Secret
metadata:
name: {{ template "deconz.fullname" . }}
labels:
{{- include "deconz.labels" . | nindent 4 }}
type: Opaque
data:
vnc-password: {{ required "You must specify a VNC password when not supplying an existing secret" .Values.vnc.password | b64enc | quote }}
{{- end }}

View File

@ -0,0 +1,52 @@
apiVersion: v1
kind: Service
metadata:
name: {{ include "deconz.fullname" . }}
labels:
{{- include "deconz.labels" . | nindent 4 }}
spec:
{{- if (or (eq .Values.service.type "ClusterIP") (empty .Values.service.type)) }}
type: ClusterIP
{{- if .Values.service.clusterIP }}
clusterIP: {{ .Values.service.clusterIP }}
{{end}}
{{- else if eq .Values.service.type "LoadBalancer" }}
type: {{ .Values.service.type }}
{{- if .Values.service.loadBalancerIP }}
loadBalancerIP: {{ .Values.service.loadBalancerIP }}
{{- end }}
{{- if .Values.service.externalTrafficPolicy }}
externalTrafficPolicy: {{ .Values.service.externalTrafficPolicy }}
{{- end }}
{{- if .Values.service.loadBalancerSourceRanges }}
loadBalancerSourceRanges:
{{ toYaml .Values.service.loadBalancerSourceRanges | indent 4 }}
{{- end -}}
{{- else }}
{{- if .Values.service.externalIPs }}
externalIPs:
{{ toYaml .Values.service.externalIPs | indent 4 }}
{{- end }}
publishNotReadyAddresses: {{ .Values.service.publishNotReadyAddresses }}
type: {{ .Values.service.type }}
{{- end }}
ports:
- port: {{ .Values.service.httpPort }}
targetPort: http
protocol: TCP
name: http
{{- if (and (eq .Values.service.type "NodePort") (not (empty .Values.service.nodePort))) }}
nodePort: {{.Values.service.nodePort}}
{{ end }}
- port: {{ .Values.service.websocketPort }}
targetPort: websocket
protocol: TCP
name: websocket
{{- if .Values.vnc.enabled }}
- port: {{ .Values.service.vncPort }}
targetPort: vnc
protocol: TCP
name: vnc
{{- end }}
selector:
{{- include "deconz.selectorLabels" . | nindent 4 }}

View File

@ -0,0 +1,12 @@
{{- if .Values.serviceAccount.create -}}
apiVersion: v1
kind: ServiceAccount
metadata:
name: {{ include "deconz.serviceAccountName" . }}
labels:
{{- include "deconz.labels" . | nindent 4 }}
{{- with .Values.serviceAccount.annotations }}
annotations:
{{- toYaml . | nindent 4 }}
{{- end }}
{{- end }}

View File

@ -0,0 +1,159 @@
apiVersion: apps/v1
kind: StatefulSet
metadata:
name: {{ include "deconz.fullname" . }}
labels:
{{- include "deconz.labels" . | nindent 4 }}
spec:
{{- if not .Values.autoscaling.enabled }}
replicas: {{ .Values.replicaCount }}
{{- end }}
selector:
matchLabels:
{{- include "deconz.selectorLabels" . | nindent 6 }}
serviceName: {{ include "deconz.name" . }}
template:
metadata:
{{- with .Values.podAnnotations }}
annotations:
{{- toYaml . | nindent 8 }}
{{- end }}
labels:
{{- include "deconz.selectorLabels" . | nindent 8 }}
spec:
{{- with .Values.imagePullSecrets }}
imagePullSecrets:
{{- toYaml . | nindent 8 }}
{{- end }}
serviceAccountName: {{ include "deconz.serviceAccountName" . }}
securityContext:
{{- toYaml .Values.podSecurityContext | nindent 8 }}
containers:
- name: {{ .Chart.Name }}
securityContext:
{{- toYaml .Values.securityContext | nindent 12 }}
image: "{{ .Values.image.repository }}:{{ .Values.image.tag }}"
imagePullPolicy: {{ .Values.image.pullPolicy }}
ports:
- name: http
containerPort: {{ int .Values.service.httpPort }}
protocol: TCP
- name: websocket
containerPort: {{ int .Values.service.websocketPort }}
protocol: TCP
{{- if .Values.vnc.enabled }}
- name: vnc
containerPort: {{ int .Values.service.vncPort }}
protocol: TCP
{{- end }}
env:
{{- if .Values.timezone }}
- name: TZ
value: "{{ .Values.timezone }}"
{{- end }}
- name: DECONZ_WEB_PORT
value: "{{ .Values.service.httpPort }}"
- name: DECONZ_WS_PORT
value: "{{ .Values.service.websocketPort }}"
{{- if .Values.zigbeeDevice.enabled }}
- name: DECONZ_DEVICE
value: "{{ .Values.zigbeeDevice.hostPath }}"
{{- end }}
{{- if .Values.vnc.enabled }}
- name: DECONZ_VNC_MODE
value: "1"
- name: DECONZ_VNC_PORT
value: "{{ .Values.service.vncPort }}"
- name: DECONZ_VNC_PASSWORD
valueFrom:
secretKeyRef:
name: {{ template "deconz.secretName" . }}
key: vnc-password
{{- end }}
volumeMounts:
{{- if .Values.zigbeeDevice.enabled }}
- name: zigbeeDevice
mountPath: {{ .Values.zigbeeDevice.hostPath }}
{{- end }}
- name: config
mountPath: /root/.local/share/dresden-elektronik/deCONZ
{{- include "deconz.extraVolumeMounts" . | nindent 12 }}
{{- if .Values.probes.liveness.enabled }}
livenessProbe:
tcpSocket:
port: http
initialDelaySeconds: {{ .Values.probes.liveness.initialDelaySeconds }}
failureThreshold: {{ .Values.probes.liveness.failureThreshold }}
timeoutSeconds: {{ .Values.probes.liveness.timeoutSeconds }}
{{- end }}
{{- if .Values.probes.readiness.enabled }}
readinessProbe:
tcpSocket:
port: http
initialDelaySeconds: {{ .Values.probes.readiness.initialDelaySeconds }}
failureThreshold: {{ .Values.probes.readiness.failureThreshold }}
timeoutSeconds: {{ .Values.probes.readiness.timeoutSeconds }}
{{- end }}
{{- if .Values.probes.startup.enabled }}
startupProbe:
tcpSocket:
port: http
failureThreshold: {{ .Values.probes.startup.failureThreshold }}
periodSeconds: {{ .Values.probes.startup.periodSeconds }}
{{- end }}
resources:
{{- toYaml .Values.resources | nindent 12 }}
{{- with .Values.nodeSelector }}
nodeSelector:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.affinity }}
affinity:
{{- toYaml . | nindent 8 }}
{{- end }}
{{- with .Values.tolerations }}
tolerations:
{{- toYaml . | nindent 8 }}
{{- end }}
volumes:
{{- if .Values.zigbeeDevice.enabled }}
- name: zigbeeDevice
hostPath:
path: {{ .Values.zigbeeDevice.hostPath }}
{{- end }}
{{- if not .Values.persistence.enabled }}
- name: config
emptyDir: {}
{{- end }}
{{- if and .Values.persistence.enabled .Values.persistence.existingClaim }}
- name: config
persistentVolumeClaim:
claimName: {{ .Values.persistence.existingClaim }}
{{- end }}
{{- include "deconz.extraVolumes" . | nindent 8 }}
volumeClaimTemplates:
{{- if and .Values.persistence.enabled ( not .Values.persistence.existingClaim ) }}
- metadata:
name: config
labels:
{{- include "deconz.labels" . | nindent 10 }}
{{- if .Values.persistence.annotations }}
annotations:
{{- toYaml .Values.persistence.annotations | nindent 10 }}
{{- end }}
spec:
accessModes: [ {{ .Values.persistence.accessMode | quote }} ]
resources:
requests:
storage: {{ .Values.persistence.size | quote }}
{{- if .Values.persistence.storageClass }}
{{- if (eq "-" .Values.persistence.storageClass) }}
storageClassName: ""
{{- else }}
storageClassName: {{ .Values.persistence.storageClass | quote }}
{{- end }}
{{- end }}
{{- end }}

158
charts/deconz/values.yaml Normal file
View File

@ -0,0 +1,158 @@
# Default values for deconz.
# This is a YAML-formatted file.
# Declare variables to be passed into your templates.
replicaCount: 1
autoscaling:
enabled: false
minReplicas: 1
maxReplicas: 1
image:
repository: marthoc/deconz
pullPolicy: IfNotPresent
# Overrides the image tag whose default is the chart appVersion.
tag: "amd64-2.05.79"
imagePullSecrets: []
# upgrade strategy type (e.g. Recreate or RollingUpdate)
strategyType: Recreate
nameOverride: ""
fullnameOverride: ""
timezone: "UTC"
# Specify the Zigbee device that should be passed through to the deCONZ container
zigbeeDevice:
enabled: false
hostPath: /dev/ttyUSB1
vnc:
enabled: true
## deCONZ VNC password
password: changeme
## Specify VNC password using existing secret containing a key named 'vnc-password'
existingSecret: ""
serviceAccount:
# Specifies whether a service account should be created
create: true
# Annotations to add to the service account
annotations: {}
# The name of the service account to use.
# If not set and create is true, a name is generated using the fullname template
name: ""
podAnnotations: {}
podSecurityContext: {}
# fsGroup: 2000
securityContext:
privileged: true
# capabilities:
# drop:
# - ALL
# readOnlyRootFilesystem: true
# runAsNonRoot: true
# runAsUser: 1000
persistence:
enabled: false
annotations: {}
## deconz data Persistent Volume Storage Class
## If defined, storageClassName: <storageClass>
## 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: deconz-data
accessMode: ReadWriteOnce
size: 1Gi
# Any extra volumes to define for the pod
# Volumes will be mounted to the folder specified under mountPath
# If no mountPath is set it will be mounted to /mnt/<name>
extraVolumes: []
# - name: example-name
# hostPath:
# path: /path/on/host
# type: DirectoryOrCreate
# mountPath: "/mnt/test"
service:
type: ClusterIP
clusterIP: ""
httpPort: 80
websocketPort: 443
vncPort: 5900
## 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
ingress:
enabled: false
annotations: {}
# kubernetes.io/ingress.class: nginx
# kubernetes.io/tls-acme: "true"
path: /
hosts:
- host: deconz.local
tls: []
# - secretName: deconz-tls
# hosts:
# - deconz.local
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
# requests:
# cpu: 100m
# memory: 128Mi
probes:
liveness:
enabled: true
initialDelaySeconds: 30
failureThreshold: 5
timeoutSeconds: 10
readiness:
enabled: true
initialDelaySeconds: 30
failureThreshold: 5
timeoutSeconds: 10
startup:
enabled: false
failureThreshold: 30
periodSeconds: 10
nodeSelector: {}
tolerations: []
affinity: {}