Skip to content

Commit af62479

Browse files
committed
FEATURE/MAJOR: kubernetes-ingress: Add QUIC support for upcoming IC v1.11
Signed-off-by: Dinko Korunic <[email protected]>
1 parent 7faee23 commit af62479

File tree

5 files changed

+71
-0
lines changed

5 files changed

+71
-0
lines changed

kubernetes-ingress/templates/NOTES.txt

Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -22,16 +22,51 @@ Service ports mapped are:
2222
- name: {{ $key }}
2323
containerPort: {{ $value }}
2424
protocol: TCP
25+
{{- end }}
26+
- name: quic
27+
containerPort: {{ .Values.controller.containerPort.https }}
28+
protocol: UDP
29+
{{- range .Values.controller.service.tcpPorts }}
30+
- name: {{ .name }}-tcp
31+
containerPort: {{ .targetPort }}
32+
protocol: TCP
2533
{{- end }}
2634
{{- end }}
2735
{{- if eq .Values.controller.kind "DaemonSet" }}
36+
{{- $useHostPort := .Values.controller.daemonset.useHostPort -}}
2837
{{- $hostPorts := .Values.controller.daemonset.hostPorts -}}
38+
{{- $hostIP := .Values.controller.daemonset.hostIP -}}
2939
{{- range $key, $value := .Values.controller.containerPort }}
3040
- name: {{ $key }}
3141
containerPort: {{ $value }}
3242
protocol: TCP
43+
{{- if $useHostPort }}
3344
hostPort: {{ index $hostPorts $key | default $value }}
3445
{{- end }}
46+
{{- if $hostIP }}
47+
hostIP: {{ $hostIP }}
48+
{{- end }}
49+
{{- end }}
50+
- name: quic
51+
containerPort: {{ .Values.controller.containerPort.https }}
52+
protocol: UDP
53+
{{- if $useHostPort }}
54+
hostPort: {{ .Values.controller.daemonset.hostPorts.https }}
55+
{{- end }}
56+
{{- if $hostIP }}
57+
hostIP: {{ $hostIP }}
58+
{{- end }}
59+
{{- range .Values.controller.service.tcpPorts }}
60+
- name: {{ .name }}-tcp
61+
containerPort: {{ .port }}
62+
protocol: TCP
63+
{{- if $useHostPort }}
64+
hostPort: {{ .port }}
65+
{{- end }}
66+
{{- if $hostIP }}
67+
hostIP: {{ $hostIP }}
68+
{{- end }}
69+
{{- end }}
3570
{{- end }}
3671

3772
Node IP can be found with:

kubernetes-ingress/templates/controller-daemonset.yaml

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ spec:
101101
- --configmap={{ include "kubernetes-ingress.namespace" . }}/{{ include "kubernetes-ingress.fullname" . }}
102102
- --http-bind-port={{ .Values.controller.containerPort.http }}
103103
- --https-bind-port={{ .Values.controller.containerPort.https }}
104+
- --quic-bind-port={{ .Values.controller.containerPort.https }}
105+
- --quic-announce-port={{ .Values.controller.service.ports.https }}
104106
{{- if .Values.controller.ingressClass }}
105107
- --ingress.class={{ .Values.controller.ingressClass }}
106108
{{- end }}
@@ -147,6 +149,15 @@ spec:
147149
hostIP: {{ $hostIP }}
148150
{{- end }}
149151
{{- end }}
152+
- name: quic
153+
containerPort: {{ .Values.controller.containerPort.https }}
154+
protocol: UDP
155+
{{- if $useHostPort }}
156+
hostPort: {{ .Values.controller.daemonset.hostPorts.https }}
157+
{{- end }}
158+
{{- if $hostIP }}
159+
hostIP: {{ $hostIP }}
160+
{{- end }}
150161
{{- range .Values.controller.service.tcpPorts }}
151162
- name: {{ .name }}-tcp
152163
containerPort: {{ .port }}

kubernetes-ingress/templates/controller-deployment.yaml

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -101,6 +101,8 @@ spec:
101101
- --configmap={{ include "kubernetes-ingress.namespace" . }}/{{ include "kubernetes-ingress.fullname" . }}
102102
- --http-bind-port={{ .Values.controller.containerPort.http }}
103103
- --https-bind-port={{ .Values.controller.containerPort.https }}
104+
- --quic-bind-port={{ .Values.controller.containerPort.https }}
105+
- --quic-announce-port={{ .Values.controller.service.ports.https }}
104106
{{- if .Values.controller.ingressClass }}
105107
- --ingress.class={{ .Values.controller.ingressClass }}
106108
{{- end }}
@@ -141,6 +143,9 @@ spec:
141143
containerPort: {{ $value }}
142144
protocol: TCP
143145
{{- end }}
146+
- name: quic
147+
containerPort: {{ .Values.controller.containerPort.https }}
148+
protocol: UDP
144149
{{- range .Values.controller.service.tcpPorts }}
145150
- name: {{ .name }}-tcp
146151
containerPort: {{ .targetPort }}

kubernetes-ingress/templates/controller-service.yaml

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,18 @@ spec:
6767
nodePort: {{ .Values.controller.service.nodePorts.https }}
6868
{{- end }}
6969
{{- end }}
70+
{{- if .Values.controller.service.enablePorts.quic }}
71+
- name: quic
72+
port: {{ .Values.controller.service.ports.https }}
73+
protocol: UDP
74+
{{- if semverCompare ">=1.20.0-0" .Capabilities.KubeVersion.Version }}
75+
appProtocol: https
76+
{{- end }}
77+
targetPort: {{ .Values.controller.service.targetPorts.quic }}
78+
{{- if .Values.controller.service.nodePorts.https }}
79+
nodePort: {{ .Values.controller.service.nodePorts.https }}
80+
{{- end }}
81+
{{- end }}
7082
{{- if .Values.controller.service.enablePorts.stat }}
7183
- name: stat
7284
port: {{ .Values.controller.service.ports.stat }}

kubernetes-ingress/values.yaml

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -317,6 +317,12 @@ controller:
317317
# - --namespace-whitelist=default
318318
# - --namespace-whitelist=namespace1
319319
# - --namespace-blacklist=namespace2
320+
# - --disable-ipv4
321+
# - --disable-ipv6
322+
# - --disable-http
323+
# - --disable-https
324+
# - --disable-quic
325+
# - --sync-period=10s
320326

321327
## Custom configuration for Controller
322328
## ref: https://github.com/haproxytech/kubernetes-ingress/tree/master/documentation
@@ -398,6 +404,7 @@ controller:
398404
enablePorts:
399405
http: true
400406
https: true
407+
quic: true
401408
stat: true
402409
prometheus: true
403410

@@ -406,6 +413,7 @@ controller:
406413
targetPorts:
407414
http: http
408415
https: https
416+
quic: quic
409417
stat: stat
410418
prometheus: prometheus
411419

0 commit comments

Comments
 (0)