Skip to content

Commit bb340e6

Browse files
Feature: Add support for dualstack loadbalancers
Add config value `dualStack.loadBalancer` to toggle dualstack support for loadbalancers (LB need to support this feature).
1 parent 6f9942d commit bb340e6

File tree

7 files changed

+58
-10
lines changed

7 files changed

+58
-10
lines changed

charts/pihole/Chart.yaml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ description: Installs pihole in kubernetes
33
home: https://github.com/MoJo2600/pihole-kubernetes/tree/master/charts/pihole
44
name: pihole
55
appVersion: 2021.10.1
6-
version: 2.5.4
6+
version: 2.5.5
77
sources:
88
- https://github.com/MoJo2600/pihole-kubernetes/tree/master/charts/pihole
99
- https://pi-hole.net/

charts/pihole/templates/service-dhcp.yaml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,23 @@ metadata:
1414
{{- end }}
1515
spec:
1616
type: {{ .Values.serviceDhcp.type }}
17-
{{- if and (.Values.dualStack.enabled) (not (eq .Values.serviceDhcp.type "LoadBalancer")) }}
17+
{{- if and (.Values.dualStack.enabled) (or (not (eq .Values.serviceDhcp.type "LoadBalancer")) (.Values.dualStack.loadBalancer)) }}
1818
ipFamilies:
1919
- IPv4
2020
- IPv6
2121
ipFamilyPolicy: PreferDualStack
22+
{{- if and (.Values.serviceDhcp.loadBalancerIP) (.Values.serviceDhcp.loadBalancerIPv6) }}
23+
loadBalancerIP: {{ .Values.serviceDhcp.loadBalancerIP }},{{ .Values.serviceDhcp.loadBalancerIPv6 }}
24+
{{- else if .Values.serviceDhcp.loadBalancerIP }}
25+
loadBalancerIP: {{ .Values.serviceDhcp.loadBalancerIP }}
26+
{{- else if .Values.serviceDhcp.loadBalancerIPv6 }}
27+
loadBalancerIP: {{ .Values.serviceDhcp.loadBalancerIPv6 }}
2228
{{- end }}
29+
{{- else }}
2330
{{- if .Values.serviceDhcp.loadBalancerIP }}
2431
loadBalancerIP: {{ .Values.serviceDhcp.loadBalancerIP }}
2532
{{- end }}
33+
{{- end }}
2634
{{- if or (eq .Values.serviceDhcp.type "NodePort") (eq .Values.serviceDhcp.type "LoadBalancer") }}
2735
externalTrafficPolicy: {{ .Values.serviceDhcp.externalTrafficPolicy }}
2836
{{- end }}
@@ -35,7 +43,7 @@ spec:
3543
app: {{ template "pihole.name" . }}
3644
release: {{ .Release.Name }}
3745
---
38-
{{- if and (.Values.dualStack.enabled) (eq .Values.serviceDhcp.type "LoadBalancer") -}}
46+
{{- if and (.Values.dualStack.enabled) (eq .Values.serviceDhcp.type "LoadBalancer") (not .Values.dualStack.loadBalancer) -}}
3947
apiVersion: v1
4048
kind: Service
4149
metadata:

charts/pihole/templates/service-dns-tcp.yaml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,23 @@ metadata:
1414
{{- end }}
1515
spec:
1616
type: {{ .Values.serviceDns.type }}
17-
{{- if and (.Values.dualStack.enabled) (not (eq .Values.serviceDns.type "LoadBalancer")) }}
17+
{{- if and (.Values.dualStack.enabled) (or (not (eq .Values.serviceDns.type "LoadBalancer")) (.Values.dualStack.loadBalancer)) }}
1818
ipFamilies:
1919
- IPv4
2020
- IPv6
2121
ipFamilyPolicy: PreferDualStack
22+
{{- if and (.Values.serviceDns.loadBalancerIP) (.Values.serviceDns.loadBalancerIPv6) }}
23+
loadBalancerIP: {{ .Values.serviceDns.loadBalancerIP }},{{ .Values.serviceDns.loadBalancerIPv6 }}
24+
{{- else if .Values.serviceDns.loadBalancerIP }}
25+
loadBalancerIP: {{ .Values.serviceDns.loadBalancerIP }}
26+
{{- else if .Values.serviceDns.loadBalancerIPv6 }}
27+
loadBalancerIP: {{ .Values.serviceDns.loadBalancerIPv6 }}
2228
{{- end }}
29+
{{- else }}
2330
{{- if .Values.serviceDns.loadBalancerIP }}
2431
loadBalancerIP: {{ .Values.serviceDns.loadBalancerIP }}
2532
{{- end }}
33+
{{- end }}
2634
{{- if or (eq .Values.serviceDns.type "NodePort") (eq .Values.serviceDns.type "LoadBalancer") }}
2735
externalTrafficPolicy: {{ .Values.serviceDns.externalTrafficPolicy }}
2836
{{- end }}
@@ -44,7 +52,7 @@ spec:
4452
app: {{ template "pihole.name" . }}
4553
release: {{ .Release.Name }}
4654
---
47-
{{- if and (.Values.dualStack.enabled) (eq .Values.serviceDns.type "LoadBalancer") -}}
55+
{{- if and (.Values.dualStack.enabled) (eq .Values.serviceDns.type "LoadBalancer") (not .Values.dualStack.loadBalancer) -}}
4856
apiVersion: v1
4957
kind: Service
5058
metadata:

charts/pihole/templates/service-dns-udp.yaml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -14,15 +14,23 @@ metadata:
1414
{{- end }}
1515
spec:
1616
type: {{ .Values.serviceDns.type }}
17-
{{- if and (.Values.dualStack.enabled) (not (eq .Values.serviceDns.type "LoadBalancer")) }}
17+
{{- if and (.Values.dualStack.enabled) (or (not (eq .Values.serviceDns.type "LoadBalancer")) (.Values.dualStack.loadBalancer)) }}
1818
ipFamilies:
1919
- IPv4
2020
- IPv6
2121
ipFamilyPolicy: PreferDualStack
22+
{{- if and (.Values.serviceDns.loadBalancerIP) (.Values.serviceDns.loadBalancerIPv6) }}
23+
loadBalancerIP: {{ .Values.serviceDns.loadBalancerIP }},{{ .Values.serviceDns.loadBalancerIPv6 }}
24+
{{- else if .Values.serviceDns.loadBalancerIP }}
25+
loadBalancerIP: {{ .Values.serviceDns.loadBalancerIP }}
26+
{{- else if .Values.serviceDns.loadBalancerIPv6 }}
27+
loadBalancerIP: {{ .Values.serviceDns.loadBalancerIPv6 }}
2228
{{- end }}
29+
{{- else }}
2330
{{- if .Values.serviceDns.loadBalancerIP }}
2431
loadBalancerIP: {{ .Values.serviceDns.loadBalancerIP }}
2532
{{- end }}
33+
{{- end }}
2634
{{- if or (eq .Values.serviceDns.type "NodePort") (eq .Values.serviceDns.type "LoadBalancer") }}
2735
externalTrafficPolicy: {{ .Values.serviceDns.externalTrafficPolicy }}
2836
{{- end }}
@@ -38,7 +46,7 @@ spec:
3846
app: {{ template "pihole.name" . }}
3947
release: {{ .Release.Name }}
4048
---
41-
{{- if and (.Values.dualStack.enabled) (eq .Values.serviceDns.type "LoadBalancer") -}}
49+
{{- if and (.Values.dualStack.enabled) (eq .Values.serviceDns.type "LoadBalancer") (not .Values.dualStack.loadBalancer) -}}
4250
apiVersion: v1
4351
kind: Service
4452
metadata:

charts/pihole/templates/service-dns.yaml

Lines changed: 15 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,9 +14,23 @@ metadata:
1414
{{- end }}
1515
spec:
1616
type: {{ .Values.serviceDns.type }}
17+
{{- if and (.Values.dualStack.enabled) (.Values.dualStack.loadBalancer) }}
18+
ipFamilies:
19+
- IPv4
20+
- IPv6
21+
ipFamilyPolicy: PreferDualStack
22+
{{- if and (.Values.serviceDns.loadBalancerIP) (.Values.serviceDns.loadBalancerIPv6) }}
23+
loadBalancerIP: {{ .Values.serviceDns.loadBalancerIP }},{{ .Values.serviceDns.loadBalancerIPv6 }}
24+
{{- else if .Values.serviceDns.loadBalancerIP }}
25+
loadBalancerIP: {{ .Values.serviceDns.loadBalancerIP }}
26+
{{- else if .Values.serviceDns.loadBalancerIPv6 }}
27+
loadBalancerIP: {{ .Values.serviceDns.loadBalancerIPv6 }}
28+
{{- end }}
29+
{{- else }}
1730
{{- if .Values.serviceDns.loadBalancerIP }}
1831
loadBalancerIP: {{ .Values.serviceDns.loadBalancerIP }}
1932
{{- end }}
33+
{{- end }}
2034
{{- if or (eq .Values.serviceDns.type "NodePort") (eq .Values.serviceDns.type "LoadBalancer") }}
2135
externalTrafficPolicy: {{ .Values.serviceDns.externalTrafficPolicy }}
2236
{{- end }}
@@ -45,7 +59,7 @@ spec:
4559
app: {{ template "pihole.name" . }}
4660
release: {{ .Release.Name }}
4761
---
48-
{{- if and (.Values.dualStack.enabled) (eq .Values.serviceDns.type "LoadBalancer") -}}
62+
{{- if and (.Values.dualStack.enabled) (eq .Values.serviceDns.type "LoadBalancer") (not .Values.dualStack.loadBalancer) -}}
4963
apiVersion: v1
5064
kind: Service
5165
metadata:

charts/pihole/templates/service-web.yaml

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -13,15 +13,23 @@ metadata:
1313
{{- end }}
1414
spec:
1515
type: {{ .Values.serviceWeb.type }}
16-
{{- if and (.Values.dualStack.enabled) (not (eq .Values.serviceWeb.type "LoadBalancer")) }}
16+
{{- if and (.Values.dualStack.enabled) (or (not (eq .Values.serviceWeb.type "LoadBalancer")) (.Values.dualStack.loadBalancer)) }}
1717
ipFamilies:
1818
- IPv4
1919
- IPv6
2020
ipFamilyPolicy: PreferDualStack
21+
{{- if and (.Values.serviceWeb.loadBalancerIP) (.Values.serviceWeb.loadBalancerIPv6) }}
22+
loadBalancerIP: {{ .Values.serviceWeb.loadBalancerIP }},{{ .Values.serviceWeb.loadBalancerIPv6 }}
23+
{{- else if .Values.serviceWeb.loadBalancerIP }}
24+
loadBalancerIP: {{ .Values.serviceWeb.loadBalancerIP }}
25+
{{- else if .Values.serviceWeb.loadBalancerIPv6 }}
26+
loadBalancerIP: {{ .Values.serviceWeb.loadBalancerIPv6 }}
2127
{{- end }}
28+
{{- else }}
2229
{{- if .Values.serviceWeb.loadBalancerIP }}
2330
loadBalancerIP: {{ .Values.serviceWeb.loadBalancerIP }}
2431
{{- end }}
32+
{{- end }}
2533
{{- if or (eq .Values.serviceWeb.type "NodePort") (eq .Values.serviceWeb.type "LoadBalancer") }}
2634
externalTrafficPolicy: {{ .Values.serviceWeb.externalTrafficPolicy }}
2735
{{- end }}
@@ -47,7 +55,7 @@ spec:
4755
app: {{ template "pihole.name" . }}
4856
release: {{ .Release.Name }}
4957
---
50-
{{- if and (.Values.dualStack.enabled) (eq .Values.serviceWeb.type "LoadBalancer") -}}
58+
{{- if and (.Values.dualStack.enabled) (eq .Values.serviceWeb.type "LoadBalancer") (not .Values.dualStack.loadBalancer) -}}
5159
apiVersion: v1
5260
kind: Service
5361
metadata:

charts/pihole/values.yaml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,8 @@ image:
2525
dualStack:
2626
# -- set this to true to enable creation of DualStack services or creation of separate IPv6 services if `serviceDns.type` is set to `"LoadBalancer"`
2727
enabled: false
28+
# -- set this to true to create a single loadbalancer service. Some loadbalancer implementations do not work well with separate services for IPv4 and IPv6, i.e. klipper-lb (k3s)
29+
loadBalancer: false
2830

2931
dnsHostPort:
3032
# -- set this to true to enable dnsHostPort

0 commit comments

Comments
 (0)