Simplify for unifi (#10789)

The discovery and stun ports are part of the same service. Unifi depends
on them to be on the same hostname.

Signed-off-by: Werner Buck <email@wernerbuck.nl>
This commit is contained in:
Werner Buck 2019-02-08 12:49:44 +01:00 committed by Kubernetes Prow Robot
parent 40af1115f9
commit b09535dfb4
6 changed files with 29 additions and 167 deletions

View File

@ -2,7 +2,7 @@ apiVersion: v1
appVersion: 5.9.29 appVersion: 5.9.29
description: Ubiquiti Network's Unifi Controller description: Ubiquiti Network's Unifi Controller
name: unifi name: unifi
version: 0.2.8 version: 0.3.0
keywords: keywords:
- ubiquiti - ubiquiti
- unifi - unifi

View File

@ -53,20 +53,8 @@ The following tables lists the configurable parameters of the Unifi chart and th
| `controllerService.loadBalancerIP` | Loadbalance IP for the Unifi Controller | `{}` | | `controllerService.loadBalancerIP` | Loadbalance IP for the Unifi Controller | `{}` |
| `controllerService.loadBalancerSourceRanges` | List of IP CIDRs allowed access to load balancer (if supported) | None | | `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` | | `controllerService.externalTrafficPolicy` | Set the externalTrafficPolicy in the Service to either Cluster or Local | `Cluster` |
| `stunService.type` | Kubernetes service type for the Unifi STUN | `NodePort` | | `controllerService.stun.port` | Kubernetes UDP port where the Unifi STUN is exposed | `3478` |
| `stunService.port` | Kubernetes UDP port where the Unifi STUN is exposed | `3478` | | `controllerService.discovery.port` | Kubernetes UDP port for AP discovery | `10001` |
| `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.enabled` | Enables Ingress | `false` |
| `ingress.annotations` | Ingress annotations | `{}` | | `ingress.annotations` | Ingress annotations | `{}` |
| `ingress.labels` | Custom labels | `{}` | | `ingress.labels` | Custom labels | `{}` |
@ -117,12 +105,12 @@ Read through the [values.yaml](values.yaml) file. It has several commented out s
devices run. If you run this as a `NodePort` (the default setting), make sure 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 that there is an external load balancer that is directing traffic from port
8080 to the `NodePort` for this service. 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 the `controllerService` exposes two additional ports:
- `discovery`: This needs to be reachable by the unifi devices on network but only during the discovery
phase. This is a UDP service. phase. This is a UDP service.
- `stunService`: Also used periodically by the unifi devices to communicate - `stun`: Also used periodically by the unifi devices to communicate
with the controller using UDP. See [this article][ubnt 3] and [this other with the controller using UDP. See [this article][ubnt 3] and [this other article][ubnt 4] for more information.
article][ubnt 4] for more information.
[docker]: https://hub.docker.com/r/jacobalberty/unifi/tags/ [docker]: https://hub.docker.com/r/jacobalberty/unifi/tags/
[github]: https://github.com/jacobalberty/unifi-docker [github]: https://github.com/jacobalberty/unifi-docker

View File

@ -46,6 +46,20 @@ spec:
name: controller name: controller
{{ if (and (eq .Values.controllerService.type "NodePort") (not (empty .Values.controllerService.nodePort))) }} {{ if (and (eq .Values.controllerService.type "NodePort") (not (empty .Values.controllerService.nodePort))) }}
nodePort: {{.Values.controllerService.nodePort}} nodePort: {{.Values.controllerService.nodePort}}
{{ end }}
- port: {{ .Values.controllerService.stun.port }}
targetPort: stun
protocol: UDP
name: stun
{{ if (and (eq .Values.controllerService.type "NodePort") (not (empty .Values.controllerService.stun.nodePort))) }}
nodePort: {{.Values.controllerService.stun.nodePort}}
{{ end }}
- port: {{ .Values.controllerService.discovery.port }}
targetPort: discovery
protocol: UDP
name: discovery
{{ if (and (eq .Values.controllerService.type "NodePort") (not (empty .Values.controllerService.discovery.nodePort))) }}
nodePort: {{.Values.controllerService.discovery.nodePort}}
{{ end }} {{ end }}
selector: selector:
app: {{ template "unifi.name" . }} app: {{ template "unifi.name" . }}

View File

@ -1,52 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ template "unifi.fullname" . }}-discovery
labels:
app: {{ template "unifi.name" . }}
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 }}

View File

@ -1,52 +0,0 @@
apiVersion: v1
kind: Service
metadata:
name: {{ template "unifi.fullname" . }}-stun
labels:
app: {{ template "unifi.name" . }}
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 }}

View File

@ -50,48 +50,12 @@ controllerService:
# loadBalancerSourceRanges: [] # loadBalancerSourceRanges: []
## Set the externalTrafficPolicy in the Service to either Cluster or Local ## Set the externalTrafficPolicy in the Service to either Cluster or Local
# externalTrafficPolicy: Cluster # externalTrafficPolicy: Cluster
stun:
stunService: port: 3478
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: # nodePort:
## Provide any additional annotations which may be required. This can be used to discovery:
## set the LoadBalancer service type to internal only. port: 10001
## 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
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: # 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
##
loadBalancerIP:
# loadBalancerSourceRanges: []
## Set the externalTrafficPolicy in the Service to either Cluster or Local
# externalTrafficPolicy: Cluster
ingress: ingress:
enabled: false enabled: false