diff --git a/unifi/Chart.yaml b/unifi/Chart.yaml index cecd9440..534d5129 100644 --- a/unifi/Chart.yaml +++ b/unifi/Chart.yaml @@ -2,7 +2,7 @@ apiVersion: v1 appVersion: 5.8.30 description: Ubiquiti Network's Unifi Controller name: unifi -version: 0.1.8 +version: 0.1.9 keywords: - ubiquiti - unifi diff --git a/unifi/README.md b/unifi/README.md index cf6ed43f..c25d05a8 100644 --- a/unifi/README.md +++ b/unifi/README.md @@ -5,7 +5,7 @@ This is a helm chart for [Ubiqiti Network's](https://www.ubnt.com/) [Unifi Contr ## TL;DR; ```console -$ helm install stable/unifi +helm install stable/unifi ``` ## Introduction @@ -17,14 +17,15 @@ This code is adopted from [this original repo](https://github.com/jacobalberty/u To install the chart with the release name `my-release`: ```console -$ helm install --name my-release stable/unifi +helm install --name my-release stable/unifi ``` + ## Uninstalling the Chart To uninstall/delete the `my-release` deployment: ```console -$ helm delete my-release --purge +helm delete my-release --purge ``` The command removes all the Kubernetes components associated with the chart and deletes the release. @@ -41,19 +42,31 @@ The following tables lists the configurable parameters of the Sentry chart and t | `guiService.type` | Kubernetes service type for the Unifi GUI | `ClusterIP` | | `guiService.port` | Kubernetes port where the Unifi GUI is exposed| `8443` | | `guiService.annotations` | Service annotations for the Unifi GUI | `{}` | +| `guiService.labels` | Custom labels | `{}` | | `guiService.loadBalancerIP` | Loadbalance IP for the Unifi GUI | `{}` | +| `guiService.loadBalancerSourceRanges` | List of IP CIDRs allowed access to load balancer (if supported) | None +| `guiService.externalTrafficPolicy` | Set the externalTrafficPolicy in the Service to either Cluster or Local | `Cluster` | `controllerService.type` | Kubernetes service type for the Unifi Controller communication | `NodePort` | | `controllerService.port` | Kubernetes port where the Unifi Controller is exposed - this needs to be reachable by the unifi devices on the network | `8080` | | `controllerService.annotations` | Service annotations for the Unifi Controller | `{}` | +| `controllerService.labels` | Custom labels | `{}` | | `controllerService.loadBalancerIP` | Loadbalance IP for the Unifi Controller | `{}` | +| `controllerService.loadBalancerSourceRanges` | List of IP CIDRs allowed access to load balancer (if supported) | None +| `controllerService.externalTrafficPolicy` | Set the externalTrafficPolicy in the Service to either Cluster or Local | `Cluster` | `stunService.type` | Kubernetes service type for the Unifi STUN | `NodePort` | | `stunService.port` | Kubernetes UDP port where the Unifi STUN is exposed | `3478` | | `stunService.annotations` | Service annotations for the Unifi STUN | `{}` | +| `stunService.labels` | Custom labels | `{}` | | `stunService.loadBalancerIP` | Loadbalance IP for the Unifi STUN | `{}` | +| `stunService.loadBalancerSourceRanges` | List of IP CIDRs allowed access to load balancer (if supported) | None +| `stunService.externalTrafficPolicy` | Set the externalTrafficPolicy in the Service to either Cluster or Local | `Cluster` | `discoveryService.type` | Kubernetes service type for AP discovery | `NodePort` | | `discoveryService.port` | Kubernetes UDP port for AP discovery | `10001` | | `discoveryService.annotations` | Service annotations for AP discovery | `{}` | +| `discoveryService.labels` | Custom labels | `{}` | | `discoveryService.loadBalancerIP` | Loadbalance IP for AP discovery | `{}` | +| `discoveryService.loadBalancerSourceRanges` | List of IP CIDRs allowed access to load balancer (if supported) | None +| `discoveryService.externalTrafficPolicy` | Set the externalTrafficPolicy in the Service to either Cluster or Local | `Cluster` | `ingress.enabled` | Enables Ingress | `false` | | `ingress.annotations` | Ingress annotations | `{}` | | `ingress.labels` | Custom labels | `{}` @@ -92,7 +105,6 @@ helm install --name my-release -f values.yaml stable/unifi Read through the [values.yaml](values.yaml) file. It has several commented out suggested values. - ## Regarding the services * `guiService`: represents the main web UI and is what one would normally point the ingress to diff --git a/unifi/templates/controller-svc.yaml b/unifi/templates/controller-svc.yaml index afe6a6a8..7cac96a6 100644 --- a/unifi/templates/controller-svc.yaml +++ b/unifi/templates/controller-svc.yaml @@ -7,13 +7,46 @@ metadata: chart: {{ template "unifi.chart" . }} release: {{ .Release.Name }} heritage: {{ .Release.Service }} +{{- if .Values.controllerService.labels }} +{{ toYaml .Values.controllerService.labels | indent 4 }} +{{- end }} +{{- with .Values.controllerService.annotations }} + annotations: +{{ toYaml . | indent 4 }} +{{- end }} spec: +{{- if (or (eq .Values.controllerService.type "ClusterIP") (empty .Values.controllerService.type)) }} + type: ClusterIP + {{- if .Values.controllerService.clusterIP }} + clusterIP: {{ .Values.controllerService.clusterIP }} + {{end}} +{{- else if eq .Values.controllerService.type "LoadBalancer" }} type: {{ .Values.controllerService.type }} + {{- if .Values.controllerService.loadBalancerIP }} + loadBalancerIP: {{ .Values.controllerService.loadBalancerIP }} + {{- end }} + {{- if .Values.controllerService.loadBalancerSourceRanges }} + loadBalancerSourceRanges: +{{ toYaml .Values.controllerService.loadBalancerSourceRanges | indent 4 }} + {{- end -}} +{{- else }} + type: {{ .Values.controllerService.type }} +{{- end }} +{{- if .Values.controllerService.externalIPs }} + externalIPs: +{{ toYaml .Values.controllerService.externalIPs | indent 4 }} +{{- end }} + {{- if .Values.controllerService.externalTrafficPolicy }} + externalTrafficPolicy: {{ .Values.controllerService.externalTrafficPolicy }} + {{- end }} ports: - port: {{ .Values.controllerService.port }} targetPort: controller protocol: TCP name: controller +{{ if (and (eq .Values.controllerService.type "NodePort") (not (empty .Values.controllerService.nodePort))) }} + nodePort: {{.Values.controllerService.nodePort}} +{{ end }} selector: app: {{ template "unifi.name" . }} release: {{ .Release.Name }} diff --git a/unifi/templates/discovery-svc.yaml b/unifi/templates/discovery-svc.yaml index 747e637c..b3f7b685 100644 --- a/unifi/templates/discovery-svc.yaml +++ b/unifi/templates/discovery-svc.yaml @@ -7,13 +7,46 @@ metadata: chart: {{ template "unifi.chart" . }} release: {{ .Release.Name }} heritage: {{ .Release.Service }} +{{- if .Values.discoveryService.labels }} +{{ toYaml .Values.discoveryService.labels | indent 4 }} +{{- end }} +{{- with .Values.discoveryService.annotations }} + annotations: +{{ toYaml . | indent 4 }} +{{- end }} spec: +{{- if (or (eq .Values.discoveryService.type "ClusterIP") (empty .Values.discoveryService.type)) }} + type: ClusterIP + {{- if .Values.discoveryService.clusterIP }} + clusterIP: {{ .Values.discoveryService.clusterIP }} + {{end}} +{{- else if eq .Values.discoveryService.type "LoadBalancer" }} type: {{ .Values.discoveryService.type }} + {{- if .Values.discoveryService.loadBalancerIP }} + loadBalancerIP: {{ .Values.discoveryService.loadBalancerIP }} + {{- end }} + {{- if .Values.discoveryService.loadBalancerSourceRanges }} + loadBalancerSourceRanges: +{{ toYaml .Values.discoveryService.loadBalancerSourceRanges | indent 4 }} + {{- end -}} +{{- else }} + type: {{ .Values.discoveryService.type }} +{{- end }} +{{- if .Values.discoveryService.externalIPs }} + externalIPs: +{{ toYaml .Values.discoveryService.externalIPs | indent 4 }} +{{- end }} + {{- if .Values.discoveryService.externalTrafficPolicy }} + externalTrafficPolicy: {{ .Values.discoveryService.externalTrafficPolicy }} + {{- end }} ports: - port: {{ .Values.discoveryService.port }} targetPort: discovery protocol: UDP name: discovery +{{ if (and (eq .Values.discoveryService.type "NodePort") (not (empty .Values.discoveryService.nodePort))) }} + nodePort: {{.Values.discoveryService.nodePort}} +{{ end }} selector: app: {{ template "unifi.name" . }} release: {{ .Release.Name }} diff --git a/unifi/templates/gui-svc.yaml b/unifi/templates/gui-svc.yaml index 2c6b8c3f..4f0c9b42 100644 --- a/unifi/templates/gui-svc.yaml +++ b/unifi/templates/gui-svc.yaml @@ -36,6 +36,9 @@ spec: externalIPs: {{ toYaml .Values.guiService.externalIPs | indent 4 }} {{- end }} + {{- if .Values.guiService.externalTrafficPolicy }} + externalTrafficPolicy: {{ .Values.guiService.externalTrafficPolicy }} + {{- end }} ports: - name: https-gui port: {{ .Values.guiService.port }} diff --git a/unifi/templates/stun-svc.yaml b/unifi/templates/stun-svc.yaml index 947654bb..335e0c9b 100644 --- a/unifi/templates/stun-svc.yaml +++ b/unifi/templates/stun-svc.yaml @@ -7,13 +7,46 @@ metadata: chart: {{ template "unifi.chart" . }} release: {{ .Release.Name }} heritage: {{ .Release.Service }} +{{- if .Values.stunService.labels }} +{{ toYaml .Values.stunService.labels | indent 4 }} +{{- end }} +{{- with .Values.stunService.annotations }} + annotations: +{{ toYaml . | indent 4 }} +{{- end }} spec: +{{- if (or (eq .Values.stunService.type "ClusterIP") (empty .Values.stunService.type)) }} + type: ClusterIP + {{- if .Values.stunService.clusterIP }} + clusterIP: {{ .Values.stunService.clusterIP }} + {{end}} +{{- else if eq .Values.stunService.type "LoadBalancer" }} type: {{ .Values.stunService.type }} + {{- if .Values.stunService.loadBalancerIP }} + loadBalancerIP: {{ .Values.stunService.loadBalancerIP }} + {{- end }} + {{- if .Values.stunService.loadBalancerSourceRanges }} + loadBalancerSourceRanges: +{{ toYaml .Values.stunService.loadBalancerSourceRanges | indent 4 }} + {{- end -}} +{{- else }} + type: {{ .Values.stunService.type }} +{{- end }} +{{- if .Values.stunService.externalIPs }} + externalIPs: +{{ toYaml .Values.stunService.externalIPs | indent 4 }} +{{- end }} + {{- if .Values.stunService.externalTrafficPolicy }} + externalTrafficPolicy: {{ .Values.stunService.externalTrafficPolicy }} + {{- end }} ports: - port: {{ .Values.stunService.port }} targetPort: stun protocol: UDP name: stun +{{ if (and (eq .Values.stunService.type "NodePort") (not (empty .Values.stunService.nodePort))) }} + nodePort: {{.Values.stunService.nodePort}} +{{ end }} selector: app: {{ template "unifi.name" . }} release: {{ .Release.Name }} \ No newline at end of file diff --git a/unifi/values.yaml b/unifi/values.yaml index 795b0590..7309c59d 100644 --- a/unifi/values.yaml +++ b/unifi/values.yaml @@ -21,10 +21,14 @@ guiService: ## 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 ## loadBalancerIP: + # loadBalancerSourceRanges: [] + ## Set the externalTrafficPolicy in the Service to either Cluster or Local + # externalTrafficPolicy: Cluster controllerService: type: NodePort @@ -38,10 +42,14 @@ controllerService: ## 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 ## loadBalancerIP: + # loadBalancerSourceRanges: [] + ## Set the externalTrafficPolicy in the Service to either Cluster or Local + # externalTrafficPolicy: Cluster stunService: type: NodePort @@ -55,10 +63,14 @@ stunService: ## 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 ## loadBalancerIP: + # loadBalancerSourceRanges: [] + ## Set the externalTrafficPolicy in the Service to either Cluster or Local + # externalTrafficPolicy: Cluster discoveryService: type: NodePort @@ -72,10 +84,14 @@ discoveryService: ## 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 ## loadBalancerIP: + # loadBalancerSourceRanges: [] + ## Set the externalTrafficPolicy in the Service to either Cluster or Local + # externalTrafficPolicy: Cluster ingress: enabled: false