diff --git a/charts/ingress-nginx/README.md b/charts/ingress-nginx/README.md index 5fe0f49a40..3931076509 100644 --- a/charts/ingress-nginx/README.md +++ b/charts/ingress-nginx/README.md @@ -443,6 +443,7 @@ metadata: | controller.readinessProbe.timeoutSeconds | int | `1` | | | controller.replicaCount | int | `1` | | | controller.reportNodeInternalIp | bool | `false` | Bare-metal considerations via the host network https://kubernetes.github.io/ingress-nginx/deploy/baremetal/#via-the-host-network Ingress status was blank because there is no Service exposing the Ingress-Nginx Controller in a configuration using the host network, the default --publish-service flag used in standard cloud setups does not apply | +| controller.resizePolicy | list | `[]` | Resize policy for controller containers. Ref: https://kubernetes.io/docs/tasks/configure-pod-container/resize-container-resources | | controller.resources.requests.cpu | string | `"100m"` | | | controller.resources.requests.memory | string | `"90Mi"` | | | controller.runtimeClassName | string | `""` | Instruct the kubelet to use the named RuntimeClass to run the pod | diff --git a/charts/ingress-nginx/templates/controller-daemonset.yaml b/charts/ingress-nginx/templates/controller-daemonset.yaml index a9a3dee399..137ca6e61b 100644 --- a/charts/ingress-nginx/templates/controller-daemonset.yaml +++ b/charts/ingress-nginx/templates/controller-daemonset.yaml @@ -174,6 +174,11 @@ spec: {{- if .Values.controller.resources }} resources: {{ toYaml .Values.controller.resources | nindent 12 }} {{- end }} + {{- if semverCompare ">=1.33.0-0" .Capabilities.KubeVersion.Version }} + {{- if .Values.controller.resizePolicy }} + resizePolicy: {{ toYaml .Values.controller.resizePolicy | nindent 12 }} + {{- end }} + {{- end }} {{- if .Values.controller.extraContainers }} {{- toYaml .Values.controller.extraContainers | nindent 8 }} {{- end }} diff --git a/charts/ingress-nginx/templates/controller-deployment.yaml b/charts/ingress-nginx/templates/controller-deployment.yaml index 224694d1b3..a1897e15ef 100644 --- a/charts/ingress-nginx/templates/controller-deployment.yaml +++ b/charts/ingress-nginx/templates/controller-deployment.yaml @@ -180,6 +180,11 @@ spec: {{- if .Values.controller.resources }} resources: {{ toYaml .Values.controller.resources | nindent 12 }} {{- end }} + {{- if semverCompare ">=1.33.0-0" .Capabilities.KubeVersion.Version }} + {{- if .Values.controller.resizePolicy }} + resizePolicy: {{ toYaml .Values.controller.resizePolicy | nindent 12 }} + {{- end }} + {{- end }} {{- if .Values.controller.extraContainers }} {{- toYaml .Values.controller.extraContainers | nindent 8 }} {{- end }} diff --git a/charts/ingress-nginx/tests/controller-daemonset_test.yaml b/charts/ingress-nginx/tests/controller-daemonset_test.yaml index 9f79a3b23d..2caf01f660 100644 --- a/charts/ingress-nginx/tests/controller-daemonset_test.yaml +++ b/charts/ingress-nginx/tests/controller-daemonset_test.yaml @@ -208,3 +208,23 @@ tests: - equal: path: spec.template.spec.runtimeClassName value: myClass + + - it: should create a DaemonSet with resize policy if `controller.resizePolicy` is set + capabilities: + majorVersion: 1 + minorVersion: 33 + set: + controller.kind: DaemonSet + controller.resizePolicy: + - resourceName: cpu + restartPolicy: NotRequired + - resourceName: memory + restartPolicy: RestartContainer + asserts: + - equal: + path: spec.template.spec.containers[0].resizePolicy + value: + - resourceName: cpu + restartPolicy: NotRequired + - resourceName: memory + restartPolicy: RestartContainer diff --git a/charts/ingress-nginx/tests/controller-deployment_test.yaml b/charts/ingress-nginx/tests/controller-deployment_test.yaml index 37b6908853..d5dcfc8d4d 100644 --- a/charts/ingress-nginx/tests/controller-deployment_test.yaml +++ b/charts/ingress-nginx/tests/controller-deployment_test.yaml @@ -231,3 +231,22 @@ tests: - equal: path: spec.template.spec.runtimeClassName value: myClass + + - it: should create a Deployment with resize policy if `controller.resizePolicy` is set + capabilities: + majorVersion: 1 + minorVersion: 33 + set: + controller.resizePolicy: + - resourceName: cpu + restartPolicy: NotRequired + - resourceName: memory + restartPolicy: RestartContainer + asserts: + - equal: + path: spec.template.spec.containers[0].resizePolicy + value: + - resourceName: cpu + restartPolicy: NotRequired + - resourceName: memory + restartPolicy: RestartContainer diff --git a/charts/ingress-nginx/values.yaml b/charts/ingress-nginx/values.yaml index 7e30b47821..4856d8bbe1 100644 --- a/charts/ingress-nginx/values.yaml +++ b/charts/ingress-nginx/values.yaml @@ -401,6 +401,13 @@ controller: requests: cpu: 100m memory: 90Mi + # -- Resize policy for controller containers. + # Ref: https://kubernetes.io/docs/tasks/configure-pod-container/resize-container-resources + resizePolicy: [] + # - resourceName: cpu + # restartPolicy: NotRequired + # - resourceName: memory + # restartPolicy: RestartContainer # Mutually exclusive with keda autoscaling autoscaling: enabled: false