diff --git a/charts/ingress-nginx/README.md b/charts/ingress-nginx/README.md index 9550918732..b03ad200cb 100644 --- a/charts/ingress-nginx/README.md +++ b/charts/ingress-nginx/README.md @@ -402,6 +402,7 @@ As of version `1.26.0` of this chart, by simply not providing any clusterIP valu | controller.service.annotations | object | `{}` | | | controller.service.appProtocol | bool | `true` | If enabled is adding an appProtocol option for Kubernetes service. An appProtocol field replacing annotations that were using for setting a backend protocol. Here is an example for AWS: service.beta.kubernetes.io/aws-load-balancer-backend-protocol: http It allows choosing the protocol for each backend specified in the Kubernetes service. See the following GitHub issue for more details about the purpose: https://github.com/kubernetes/kubernetes/issues/40244 Will be ignored for Kubernetes versions older than 1.20 # | | controller.service.enableHttp | bool | `true` | | +| controller.service.enableHttp2 | bool | `false` | | | controller.service.enableHttps | bool | `true` | | | controller.service.enabled | bool | `true` | | | controller.service.external.enabled | bool | `true` | | diff --git a/charts/ingress-nginx/templates/controller-service.yaml b/charts/ingress-nginx/templates/controller-service.yaml index b2735d2e8f..13e5f92f2d 100644 --- a/charts/ingress-nginx/templates/controller-service.yaml +++ b/charts/ingress-nginx/templates/controller-service.yaml @@ -64,14 +64,18 @@ spec: nodePort: {{ .Values.controller.service.nodePorts.http }} {{- end }} {{- end }} - {{- if .Values.controller.service.enableHttps }} + {{- if or (.Values.controller.service.enableHttps) (.Values.controller.service.enableHttp2) }} - name: https port: {{ .Values.controller.service.ports.https }} protocol: TCP targetPort: {{ .Values.controller.service.targetPorts.https }} {{- if and (semverCompare ">=1.20" .Capabilities.KubeVersion.Version) (.Values.controller.service.appProtocol) }} + {{- if (.Values.controller.service.enableHttp2) }} + appProtocol: http2 + {{- else }} appProtocol: https {{- end }} + {{- end }} {{- if (and $setNodePorts (not (empty .Values.controller.service.nodePorts.https))) }} nodePort: {{ .Values.controller.service.nodePorts.https }} {{- end }} diff --git a/charts/ingress-nginx/values.yaml b/charts/ingress-nginx/values.yaml index d091391a8c..4e5b3f1090 100644 --- a/charts/ingress-nginx/values.yaml +++ b/charts/ingress-nginx/values.yaml @@ -430,6 +430,7 @@ controller: loadBalancerClass: "" enableHttp: true enableHttps: true + enableHttp2: false ## Set external traffic policy to: "Local" to preserve source IP on providers supporting it. ## Ref: https://kubernetes.io/docs/tutorials/services/source-ip/#source-ip-for-services-with-typeloadbalancer # externalTrafficPolicy: "" diff --git a/magefiles/helm.go b/magefiles/helm.go index 585a934134..5f29890681 100644 --- a/magefiles/helm.go +++ b/magefiles/helm.go @@ -374,6 +374,7 @@ type IngressChartValue struct { LoadBalancerSourceRanges []interface{} `yaml:"loadBalancerSourceRanges"` EnableHTTP bool `yaml:"enableHttp"` EnableHTTPS bool `yaml:"enableHttps"` + EnableHTTP2 bool `yaml:"enableHttp2"` IPFamilyPolicy string `yaml:"ipFamilyPolicy"` IPFamilies []string `yaml:"ipFamilies"` Ports struct {