blob: 5da493d0d8f52db0f044e0535baf7b3a01c65204 [file] [log] [blame]
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001## nginx configuration
2## Ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/index.md
3##
4
Yaguang Tang806de732025-03-25 14:24:29 +08005global:
6 image:
7 # -- Registry host to pull images from.
8 registry: registry.k8s.io
Mohammed Naser9ad0d462023-01-15 20:36:37 -05009## Overrides for generated resource names
10# See templates/_helpers.tpl
11# nameOverride:
12# fullnameOverride:
13
Mohammed Naser65cda132024-05-02 14:34:08 -040014# -- Override the deployment namespace; defaults to .Release.Namespace
15namespaceOverride: ""
Mohammed Naser9ad0d462023-01-15 20:36:37 -050016## Labels to apply to all resources
17##
18commonLabels: {}
19# scmhash: abc123
20# myLabel: aakkmd
21
22controller:
23 name: controller
Yaguang Tang806de732025-03-25 14:24:29 +080024 enableAnnotationValidations: true
Mohammed Naser9ad0d462023-01-15 20:36:37 -050025 image:
Mohammed Naser65cda132024-05-02 14:34:08 -040026 ## Keep false as default for now!
27 chroot: false
Yaguang Tang806de732025-03-25 14:24:29 +080028 # registry: registry.k8s.io
Mohammed Naser9ad0d462023-01-15 20:36:37 -050029 image: ingress-nginx/controller
30 ## for backwards compatibility consider setting the full image url via the repository value below
31 ## use *either* current default registry/image or repository format or installing chart by providing the values.yaml will fail
32 ## repository:
Yaguang Tang806de732025-03-25 14:24:29 +080033 tag: "v1.12.1"
34 digest: sha256:d2fbc4ec70d8aa2050dd91a91506e998765e86c96f32cffb56c503c9c34eed5b
35 digestChroot: sha256:90155c86548e0bb95b3abf1971cd687d8f5d43f340cfca0ad3484e2b8351096e
Mohammed Naser9ad0d462023-01-15 20:36:37 -050036 pullPolicy: IfNotPresent
Mohammed Naser65cda132024-05-02 14:34:08 -040037 runAsNonRoot: true
Yaguang Tang806de732025-03-25 14:24:29 +080038 # -- This value must not be changed using the official image.
39 # uid=101(www-data) gid=82(www-data) groups=82(www-data)
Mohammed Naser9ad0d462023-01-15 20:36:37 -050040 runAsUser: 101
Yaguang Tang806de732025-03-25 14:24:29 +080041 # -- This value must not be changed using the official image.
42 # uid=101(www-data) gid=82(www-data) groups=82(www-data)
43 runAsGroup: 82
Mohammed Naser65cda132024-05-02 14:34:08 -040044 allowPrivilegeEscalation: false
45 seccompProfile:
46 type: RuntimeDefault
47 readOnlyRootFilesystem: false
Mohammed Naser9ad0d462023-01-15 20:36:37 -050048 # -- Configures the controller container name
49 containerName: controller
Mohammed Naser9ad0d462023-01-15 20:36:37 -050050 # -- Configures the ports that the nginx-controller listens on
51 containerPort:
52 http: 80
53 https: 443
Yaguang Tang806de732025-03-25 14:24:29 +080054 # -- Global configuration passed to the ConfigMap consumed by the controller. Values may contain Helm templates.
55 # Ref.: https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/
Mohammed Naser9ad0d462023-01-15 20:36:37 -050056 config: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -050057 # -- Annotations to be added to the controller config configuration configmap.
58 configAnnotations: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -050059 # -- Will add custom headers before sending traffic to backends according to https://github.com/kubernetes/ingress-nginx/tree/main/docs/examples/customization/custom-headers
60 proxySetHeaders: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -050061 # -- Will add custom headers before sending response traffic to the client according to: https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/configmap/#add-headers
62 addHeaders: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -050063 # -- Optionally customize the pod dnsConfig.
64 dnsConfig: {}
Mohammed Naser65cda132024-05-02 14:34:08 -040065 # -- Optionally customize the pod hostAliases.
66 hostAliases: []
67 # - ip: 127.0.0.1
68 # hostnames:
69 # - foo.local
70 # - bar.local
71 # - ip: 10.1.2.3
72 # hostnames:
73 # - foo.remote
74 # - bar.remote
Mohammed Naser9ad0d462023-01-15 20:36:37 -050075 # -- Optionally customize the pod hostname.
76 hostname: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -050077 # -- Optionally change this to ClusterFirstWithHostNet in case you have 'hostNetwork: true'.
78 # By default, while using host network, name resolution uses the host's DNS. If you wish nginx-controller
79 # to keep resolving names inside the k8s network, use ClusterFirstWithHostNet.
80 dnsPolicy: ClusterFirst
Mohammed Naser9ad0d462023-01-15 20:36:37 -050081 # -- Bare-metal considerations via the host network https://kubernetes.github.io/ingress-nginx/deploy/baremetal/#via-the-host-network
Mohammed Naser65cda132024-05-02 14:34:08 -040082 # 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
Mohammed Naser9ad0d462023-01-15 20:36:37 -050083 reportNodeInternalIp: false
Mohammed Naser9ad0d462023-01-15 20:36:37 -050084 # -- Process Ingress objects without ingressClass annotation/ingressClassName field
85 # Overrides value for --watch-ingress-without-class flag of the controller binary
86 # Defaults to false
87 watchIngressWithoutClass: false
Mohammed Naser9ad0d462023-01-15 20:36:37 -050088 # -- Process IngressClass per name (additionally as per spec.controller).
89 ingressClassByName: false
Mohammed Naser65cda132024-05-02 14:34:08 -040090 # -- This configuration enables Topology Aware Routing feature, used together with service annotation service.kubernetes.io/topology-mode="auto"
91 # Defaults to false
92 enableTopologyAwareRouting: false
Yaguang Tang806de732025-03-25 14:24:29 +080093 # -- This configuration disable Nginx Controller Leader Election
94 disableLeaderElection: false
95 # -- Duration a leader election is valid before it's getting re-elected, e.g. `15s`, `10m` or `1h`. (Default: 30s)
96 electionTTL: ""
Mohammed Naser9ad0d462023-01-15 20:36:37 -050097 # -- This configuration defines if Ingress Controller should allow users to set
98 # their own *-snippet annotations, otherwise this is forbidden / dropped
99 # when users add those annotations.
100 # Global snippets in ConfigMap are still respected
Mohammed Naser65cda132024-05-02 14:34:08 -0400101 allowSnippetAnnotations: false
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500102 # -- Required for use with CNI based kubernetes installations (such as ones set up by kubeadm),
103 # since CNI and hostport don't mix yet. Can be deprecated once https://github.com/kubernetes/kubernetes/issues/23920
104 # is merged
105 hostNetwork: false
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500106 ## Use host ports 80 and 443
107 ## Disabled by default
108 hostPort:
109 # -- Enable 'hostPort' or not
110 enabled: false
111 ports:
112 # -- 'hostPort' http port
113 http: 80
114 # -- 'hostPort' https port
115 https: 443
Mohammed Naser65cda132024-05-02 14:34:08 -0400116 # NetworkPolicy for controller component.
117 networkPolicy:
118 # -- Enable 'networkPolicy' or not
119 enabled: false
120 # -- Election ID to use for status update, by default it uses the controller name combined with a suffix of 'leader'
121 electionID: ""
Mohammed Naser7d1623e2024-06-17 09:12:39 -0400122 # -- This section refers to the creation of the IngressClass resource.
123 # IngressClasses are immutable and cannot be changed after creation.
124 # We do not support namespaced IngressClasses, yet, so a ClusterRole and a ClusterRoleBinding is required.
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500125 ingressClassResource:
Mohammed Naser7d1623e2024-06-17 09:12:39 -0400126 # -- Name of the IngressClass
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500127 name: nginx
Mohammed Naser7d1623e2024-06-17 09:12:39 -0400128 # -- Create the IngressClass or not
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500129 enabled: true
Mohammed Naser7d1623e2024-06-17 09:12:39 -0400130 # -- If true, Ingresses without `ingressClassName` get assigned to this IngressClass on creation.
131 # Ingress creation gets rejected if there are multiple default IngressClasses.
132 # Ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#default-ingress-class
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500133 default: false
Yaguang Tang806de732025-03-25 14:24:29 +0800134 # -- Annotations to be added to the IngressClass resource.
135 annotations: {}
Mohammed Naser7d1623e2024-06-17 09:12:39 -0400136 # -- Controller of the IngressClass. An Ingress Controller looks for IngressClasses it should reconcile by this value.
137 # This value is also being set as the `--controller-class` argument of this Ingress Controller.
138 # Ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-class
139 controllerValue: k8s.io/ingress-nginx
Yaguang Tang806de732025-03-25 14:24:29 +0800140 # -- Aliases of this IngressClass. Creates copies with identical settings but the respective alias as name.
141 # Useful for development environments with only one Ingress Controller but production-like Ingress resources.
142 # `default` gets enabled on the original IngressClass only.
143 aliases: []
144 # aliases:
145 # - nginx-alias-1
146 # - nginx-alias-2
Mohammed Naser7d1623e2024-06-17 09:12:39 -0400147 # -- A link to a custom resource containing additional configuration for the controller.
148 # This is optional if the controller consuming this IngressClass does not require additional parameters.
149 # Ref: https://kubernetes.io/docs/concepts/services-networking/ingress/#ingress-class
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500150 parameters: {}
Mohammed Naser7d1623e2024-06-17 09:12:39 -0400151 # parameters:
152 # apiGroup: k8s.example.com
153 # kind: IngressParameters
154 # name: external-lb
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500155 # -- For backwards compatibility with ingress.class annotation, use ingressClass.
156 # Algorithm is as follows, first ingressClassName is considered, if not present, controller looks for ingress.class annotation
157 ingressClass: nginx
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500158 # -- Labels to add to the pod container metadata
159 podLabels: {}
160 # key: value
161
Mohammed Naser65cda132024-05-02 14:34:08 -0400162 # -- Security context for controller pods
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500163 podSecurityContext: {}
Mohammed Naser65cda132024-05-02 14:34:08 -0400164 # -- sysctls for controller pods
165 ## Ref: https://kubernetes.io/docs/tasks/administer-cluster/sysctl-cluster/
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500166 sysctls: {}
167 # sysctls:
168 # "net.core.somaxconn": "8192"
Mohammed Naser65cda132024-05-02 14:34:08 -0400169 # -- Security context for controller containers
170 containerSecurityContext: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500171 # -- Allows customization of the source of the IP address or FQDN to report
172 # in the ingress status field. By default, it reads the information provided
173 # by the service. If disable, the status field reports the IP address of the
174 # node or nodes where an ingress controller pod is running.
175 publishService:
176 # -- Enable 'publishService' or not
177 enabled: true
178 # -- Allows overriding of the publish service to bind to
179 # Must be <namespace>/<service_name>
180 pathOverride: ""
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500181 # Limit the scope of the controller to a specific namespace
182 scope:
183 # -- Enable 'scope' or not
184 enabled: false
185 # -- Namespace to limit the controller to; defaults to $(POD_NAMESPACE)
186 namespace: ""
187 # -- When scope.enabled == false, instead of watching all namespaces, we watching namespaces whose labels
188 # only match with namespaceSelector. Format like foo=bar. Defaults to empty, means watching all namespaces.
189 namespaceSelector: ""
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500190 # -- Allows customization of the configmap / nginx-configmap namespace; defaults to $(POD_NAMESPACE)
191 configMapNamespace: ""
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500192 tcp:
193 # -- Allows customization of the tcp-services-configmap; defaults to $(POD_NAMESPACE)
194 configMapNamespace: ""
195 # -- Annotations to be added to the tcp config configmap
196 annotations: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500197 udp:
198 # -- Allows customization of the udp-services-configmap; defaults to $(POD_NAMESPACE)
199 configMapNamespace: ""
200 # -- Annotations to be added to the udp config configmap
201 annotations: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500202 # -- Maxmind license key to download GeoLite2 Databases.
Yaguang Tang806de732025-03-25 14:24:29 +0800203 ## https://blog.maxmind.com/2019/12/significant-changes-to-accessing-and-using-geolite2-databases/
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500204 maxmindLicenseKey: ""
Mohammed Naser65cda132024-05-02 14:34:08 -0400205 # -- Additional command line arguments to pass to Ingress-Nginx Controller
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500206 # E.g. to specify the default SSL certificate you can use
207 extraArgs: {}
208 ## extraArgs:
209 ## default-ssl-certificate: "<namespace>/<secret_name>"
Mohammed Naser65cda132024-05-02 14:34:08 -0400210 ## time-buckets: "0.005,0.01,0.025,0.05,0.1,0.25,0.5,1,2.5,5,10"
211 ## length-buckets: "10,20,30,40,50,60,70,80,90,100"
212 ## size-buckets: "10,100,1000,10000,100000,1e+06,1e+07"
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500213
214 # -- Additional environment variables to set
215 extraEnvs: []
216 # extraEnvs:
217 # - name: FOO
218 # valueFrom:
219 # secretKeyRef:
220 # key: FOO
221 # name: secret-resource
222
223 # -- Use a `DaemonSet` or `Deployment`
224 kind: Deployment
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500225 # -- Annotations to be added to the controller Deployment or DaemonSet
226 ##
227 annotations: {}
228 # keel.sh/pollSchedule: "@every 60m"
229
230 # -- Labels to be added to the controller Deployment or DaemonSet and other resources that do not have option to specify labels
231 ##
232 labels: {}
233 # keel.sh/policy: patch
234 # keel.sh/trigger: poll
235
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500236 # -- The update strategy to apply to the Deployment or DaemonSet
237 ##
238 updateStrategy: {}
239 # rollingUpdate:
240 # maxUnavailable: 1
241 # type: RollingUpdate
242
Yaguang Tang806de732025-03-25 14:24:29 +0800243 # -- Specifies the number of seconds you want to wait for the controller deployment to progress before the system reports back that it has failed.
244 # Ref.: https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#progress-deadline-seconds
245 progressDeadlineSeconds: 0
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500246 # -- `minReadySeconds` to avoid killing pods before we are ready
247 ##
248 minReadySeconds: 0
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500249 # -- Node tolerations for server scheduling to nodes with taints
250 ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
251 ##
252 tolerations: []
253 # - key: "key"
254 # operator: "Equal|Exists"
255 # value: "value"
256 # effect: "NoSchedule|PreferNoSchedule|NoExecute(1.6 only)"
257
258 # -- Affinity and anti-affinity rules for server scheduling to nodes
259 ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
260 ##
261 affinity: {}
Mohammed Naser65cda132024-05-02 14:34:08 -0400262 # # An example of preferred pod anti-affinity, weight is in the range 1-100
263 # podAntiAffinity:
264 # preferredDuringSchedulingIgnoredDuringExecution:
265 # - weight: 100
266 # podAffinityTerm:
267 # labelSelector:
268 # matchExpressions:
269 # - key: app.kubernetes.io/name
270 # operator: In
271 # values:
Yaguang Tang806de732025-03-25 14:24:29 +0800272 # - '{{ include "ingress-nginx.name" . }}'
Mohammed Naser65cda132024-05-02 14:34:08 -0400273 # - key: app.kubernetes.io/instance
274 # operator: In
275 # values:
Yaguang Tang806de732025-03-25 14:24:29 +0800276 # - '{{ .Release.Name }}'
Mohammed Naser65cda132024-05-02 14:34:08 -0400277 # - key: app.kubernetes.io/component
278 # operator: In
279 # values:
280 # - controller
281 # topologyKey: kubernetes.io/hostname
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500282
Mohammed Naser65cda132024-05-02 14:34:08 -0400283 # # An example of required pod anti-affinity
284 # podAntiAffinity:
285 # requiredDuringSchedulingIgnoredDuringExecution:
286 # - labelSelector:
287 # matchExpressions:
288 # - key: app.kubernetes.io/name
289 # operator: In
290 # values:
Yaguang Tang806de732025-03-25 14:24:29 +0800291 # - '{{ include "ingress-nginx.name" . }}'
Mohammed Naser65cda132024-05-02 14:34:08 -0400292 # - key: app.kubernetes.io/instance
293 # operator: In
294 # values:
Yaguang Tang806de732025-03-25 14:24:29 +0800295 # - '{{ .Release.Name }}'
Mohammed Naser65cda132024-05-02 14:34:08 -0400296 # - key: app.kubernetes.io/component
297 # operator: In
298 # values:
299 # - controller
Yaguang Tang806de732025-03-25 14:24:29 +0800300 # topologyKey: kubernetes.io/hostname
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500301
302 # -- Topology spread constraints rely on node labels to identify the topology domain(s) that each Node is in.
303 ## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
304 ##
305 topologySpreadConstraints: []
Mohammed Naser65cda132024-05-02 14:34:08 -0400306 # - labelSelector:
307 # matchLabels:
308 # app.kubernetes.io/name: '{{ include "ingress-nginx.name" . }}'
309 # app.kubernetes.io/instance: '{{ .Release.Name }}'
310 # app.kubernetes.io/component: controller
Yaguang Tang806de732025-03-25 14:24:29 +0800311 # matchLabelKeys:
312 # - pod-template-hash
Mohammed Naser65cda132024-05-02 14:34:08 -0400313 # topologyKey: topology.kubernetes.io/zone
314 # maxSkew: 1
315 # whenUnsatisfiable: ScheduleAnyway
316 # - labelSelector:
317 # matchLabels:
318 # app.kubernetes.io/name: '{{ include "ingress-nginx.name" . }}'
319 # app.kubernetes.io/instance: '{{ .Release.Name }}'
320 # app.kubernetes.io/component: controller
Yaguang Tang806de732025-03-25 14:24:29 +0800321 # matchLabelKeys:
322 # - pod-template-hash
Mohammed Naser65cda132024-05-02 14:34:08 -0400323 # topologyKey: kubernetes.io/hostname
324 # maxSkew: 1
325 # whenUnsatisfiable: ScheduleAnyway
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500326
327 # -- `terminationGracePeriodSeconds` to avoid killing pods before we are ready
328 ## wait up to five minutes for the drain of connections
329 ##
330 terminationGracePeriodSeconds: 300
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500331 # -- Node labels for controller pod assignment
Mohammed Naser65cda132024-05-02 14:34:08 -0400332 ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500333 ##
334 nodeSelector:
335 kubernetes.io/os: linux
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500336 ## Liveness and readiness probe values
337 ## Ref: https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#container-probes
338 ##
339 ## startupProbe:
340 ## httpGet:
341 ## # should match container.healthCheckPath
342 ## path: "/healthz"
343 ## port: 10254
344 ## scheme: HTTP
345 ## initialDelaySeconds: 5
346 ## periodSeconds: 5
347 ## timeoutSeconds: 2
348 ## successThreshold: 1
349 ## failureThreshold: 5
350 livenessProbe:
351 httpGet:
352 # should match container.healthCheckPath
353 path: "/healthz"
354 port: 10254
355 scheme: HTTP
356 initialDelaySeconds: 10
357 periodSeconds: 10
358 timeoutSeconds: 1
359 successThreshold: 1
360 failureThreshold: 5
361 readinessProbe:
362 httpGet:
363 # should match container.healthCheckPath
364 path: "/healthz"
365 port: 10254
366 scheme: HTTP
367 initialDelaySeconds: 10
368 periodSeconds: 10
369 timeoutSeconds: 1
370 successThreshold: 1
371 failureThreshold: 3
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500372 # -- Path of the health check endpoint. All requests received on the port defined by
373 # the healthz-port parameter are forwarded internally to this path.
374 healthCheckPath: "/healthz"
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500375 # -- Address to bind the health check endpoint.
376 # It is better to set this option to the internal node address
Mohammed Naser65cda132024-05-02 14:34:08 -0400377 # if the Ingress-Nginx Controller is running in the `hostNetwork: true` mode.
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500378 healthCheckHost: ""
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500379 # -- Annotations to be added to controller pods
380 ##
381 podAnnotations: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500382 replicaCount: 1
Mohammed Naser65cda132024-05-02 14:34:08 -0400383 # -- Minimum available pods set in PodDisruptionBudget.
384 # Define either 'minAvailable' or 'maxUnavailable', never both.
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500385 minAvailable: 1
Mohammed Naser65cda132024-05-02 14:34:08 -0400386 # -- Maximum unavailable pods set in PodDisruptionBudget. If set, 'minAvailable' is ignored.
387 # maxUnavailable: 1
Yaguang Tang806de732025-03-25 14:24:29 +0800388 # -- Eviction policy for unhealthy pods guarded by PodDisruptionBudget.
389 # Ref: https://kubernetes.io/blog/2023/01/06/unhealthy-pod-eviction-policy-for-pdbs/
390 unhealthyPodEvictionPolicy: ""
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500391 ## Define requests resources to avoid probe issues due to CPU utilization in busy nodes
392 ## ref: https://github.com/kubernetes/ingress-nginx/issues/4735#issuecomment-551204903
393 ## Ideally, there should be no limits.
394 ## https://engineering.indeedblog.com/blog/2019/12/cpu-throttling-regression-fix/
395 resources:
Mohammed Naser65cda132024-05-02 14:34:08 -0400396 ## limits:
397 ## cpu: 100m
398 ## memory: 90Mi
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500399 requests:
400 cpu: 100m
401 memory: 90Mi
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500402 # Mutually exclusive with keda autoscaling
403 autoscaling:
404 enabled: false
Mohammed Naser65cda132024-05-02 14:34:08 -0400405 annotations: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500406 minReplicas: 1
407 maxReplicas: 11
408 targetCPUUtilizationPercentage: 50
409 targetMemoryUtilizationPercentage: 50
410 behavior: {}
Mohammed Naser65cda132024-05-02 14:34:08 -0400411 # scaleDown:
412 # stabilizationWindowSeconds: 300
413 # policies:
414 # - type: Pods
415 # value: 1
416 # periodSeconds: 180
417 # scaleUp:
418 # stabilizationWindowSeconds: 300
419 # policies:
420 # - type: Pods
421 # value: 2
422 # periodSeconds: 60
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500423 autoscalingTemplate: []
424 # Custom or additional autoscaling metrics
425 # ref: https://kubernetes.io/docs/tasks/run-application/horizontal-pod-autoscale/#support-for-custom-metrics
426 # - type: Pods
427 # pods:
428 # metric:
429 # name: nginx_ingress_controller_nginx_process_requests_total
430 # target:
431 # type: AverageValue
432 # averageValue: 10000m
433
434 # Mutually exclusive with hpa autoscaling
435 keda:
436 apiVersion: "keda.sh/v1alpha1"
437 ## apiVersion changes with keda 1.x vs 2.x
438 ## 2.x = keda.sh/v1alpha1
439 ## 1.x = keda.k8s.io/v1alpha1
440 enabled: false
441 minReplicas: 1
442 maxReplicas: 11
443 pollingInterval: 30
444 cooldownPeriod: 300
Mohammed Naser65cda132024-05-02 14:34:08 -0400445 # fallback:
446 # failureThreshold: 3
447 # replicas: 11
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500448 restoreToOriginalReplicaCount: false
449 scaledObject:
450 annotations: {}
451 # Custom annotations for ScaledObject resource
452 # annotations:
453 # key: value
454 triggers: []
Mohammed Naser65cda132024-05-02 14:34:08 -0400455 # - type: prometheus
456 # metadata:
457 # serverAddress: http://<prometheus-host>:9090
458 # metricName: http_requests_total
459 # threshold: '100'
460 # query: sum(rate(http_requests_total{deployment="my-deployment"}[2m]))
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500461
462 behavior: {}
Mohammed Naser65cda132024-05-02 14:34:08 -0400463 # scaleDown:
464 # stabilizationWindowSeconds: 300
465 # policies:
466 # - type: Pods
467 # value: 1
468 # periodSeconds: 180
469 # scaleUp:
470 # stabilizationWindowSeconds: 300
471 # policies:
472 # - type: Pods
473 # value: 2
474 # periodSeconds: 60
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500475 # -- Enable mimalloc as a drop-in replacement for malloc.
476 ## ref: https://github.com/microsoft/mimalloc
477 ##
478 enableMimalloc: true
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500479 ## Override NGINX template
480 customTemplate:
481 configMapName: ""
482 configMapKey: ""
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500483 service:
Mohammed Naser65cda132024-05-02 14:34:08 -0400484 # -- Enable controller services or not. This does not influence the creation of either the admission webhook or the metrics service.
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500485 enabled: true
Mohammed Naser65cda132024-05-02 14:34:08 -0400486 external:
487 # -- Enable the external controller service or not. Useful for internal-only deployments.
488 enabled: true
489 # -- Annotations to be added to the external controller service. See `controller.service.internal.annotations` for annotations to be added to the internal controller service.
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500490 annotations: {}
Mohammed Naser65cda132024-05-02 14:34:08 -0400491 # -- Labels to be added to both controller services.
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500492 labels: {}
Mohammed Naser65cda132024-05-02 14:34:08 -0400493 # -- Type of the external controller service.
494 # Ref: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
495 type: LoadBalancer
496 # -- Pre-defined cluster internal IP address of the external controller service. Take care of collisions with existing services.
497 # This value is immutable. Set once, it can not be changed without deleting and re-creating the service.
498 # Ref: https://kubernetes.io/docs/concepts/services-networking/service/#choosing-your-own-ip-address
499 clusterIP: ""
500 # -- List of node IP addresses at which the external controller service is available.
501 # Ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500502 externalIPs: []
Mohammed Naser65cda132024-05-02 14:34:08 -0400503 # -- Deprecated: Pre-defined IP address of the external controller service. Used by cloud providers to connect the resulting load balancer service to a pre-existing static IP.
504 # Ref: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer
505 loadBalancerIP: ""
506 # -- Restrict access to the external controller service. Values must be CIDRs. Allows any source address by default.
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500507 loadBalancerSourceRanges: []
Mohammed Naser65cda132024-05-02 14:34:08 -0400508 # -- Load balancer class of the external controller service. Used by cloud providers to select a load balancer implementation other than the cloud provider default.
509 # Ref: https://kubernetes.io/docs/concepts/services-networking/service/#load-balancer-class
510 loadBalancerClass: ""
511 # -- Enable node port allocation for the external controller service or not. Applies to type `LoadBalancer` only.
512 # Ref: https://kubernetes.io/docs/concepts/services-networking/service/#load-balancer-nodeport-allocation
513 # allocateLoadBalancerNodePorts: true
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500514
Mohammed Naser65cda132024-05-02 14:34:08 -0400515 # -- External traffic policy of the external controller service. Set to "Local" to preserve source IP on providers supporting it.
516 # Ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
517 externalTrafficPolicy: ""
518 # -- Session affinity of the external controller service. Must be either "None" or "ClientIP" if set. Defaults to "None".
519 # Ref: https://kubernetes.io/docs/reference/networking/virtual-ips/#session-affinity
520 sessionAffinity: ""
521 # -- Specifies the health check node port (numeric port number) for the external controller service.
522 # If not specified, the service controller allocates a port from your cluster's node port range.
523 # Ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500524 # healthCheckNodePort: 0
525
Mohammed Naser65cda132024-05-02 14:34:08 -0400526 # -- Represents the dual-stack capabilities of the external controller service. Possible values are SingleStack, PreferDualStack or RequireDualStack.
527 # Fields `ipFamilies` and `clusterIP` depend on the value of this field.
528 # Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
529 ipFamilyPolicy: SingleStack
530 # -- List of IP families (e.g. IPv4, IPv6) assigned to the external controller service. This field is usually assigned automatically based on cluster configuration and the `ipFamilyPolicy` field.
531 # Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500532 ipFamilies:
533 - IPv4
Mohammed Naser65cda132024-05-02 14:34:08 -0400534 # -- Enable the HTTP listener on both controller services or not.
535 enableHttp: true
536 # -- Enable the HTTPS listener on both controller services or not.
537 enableHttps: true
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500538 ports:
Mohammed Naser65cda132024-05-02 14:34:08 -0400539 # -- Port the external HTTP listener is published with.
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500540 http: 80
Mohammed Naser65cda132024-05-02 14:34:08 -0400541 # -- Port the external HTTPS listener is published with.
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500542 https: 443
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500543 targetPorts:
Mohammed Naser65cda132024-05-02 14:34:08 -0400544 # -- Port of the ingress controller the external HTTP listener is mapped to.
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500545 http: http
Mohammed Naser65cda132024-05-02 14:34:08 -0400546 # -- Port of the ingress controller the external HTTPS listener is mapped to.
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500547 https: https
Mohammed Naser65cda132024-05-02 14:34:08 -0400548 # -- Declare the app protocol of the external HTTP and HTTPS listeners or not. Supersedes provider-specific annotations for declaring the backend protocol.
549 # Ref: https://kubernetes.io/docs/concepts/services-networking/service/#application-protocol
550 appProtocol: true
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500551 nodePorts:
Mohammed Naser65cda132024-05-02 14:34:08 -0400552 # -- Node port allocated for the external HTTP listener. If left empty, the service controller allocates one from the configured node port range.
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500553 http: ""
Mohammed Naser65cda132024-05-02 14:34:08 -0400554 # -- Node port allocated for the external HTTPS listener. If left empty, the service controller allocates one from the configured node port range.
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500555 https: ""
Mohammed Naser65cda132024-05-02 14:34:08 -0400556 # -- Node port mapping for external TCP listeners. If left empty, the service controller allocates them from the configured node port range.
557 # Example:
558 # tcp:
559 # 8080: 30080
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500560 tcp: {}
Mohammed Naser65cda132024-05-02 14:34:08 -0400561 # -- Node port mapping for external UDP listeners. If left empty, the service controller allocates them from the configured node port range.
562 # Example:
563 # udp:
564 # 53: 30053
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500565 udp: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500566 internal:
Mohammed Naser65cda132024-05-02 14:34:08 -0400567 # -- Enable the internal controller service or not. Remember to configure `controller.service.internal.annotations` when enabling this.
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500568 enabled: false
Mohammed Naser65cda132024-05-02 14:34:08 -0400569 # -- Annotations to be added to the internal controller service. Mandatory for the internal controller service to be created. Varies with the cloud service.
570 # Ref: https://kubernetes.io/docs/concepts/services-networking/service/#internal-load-balancer
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500571 annotations: {}
Mohammed Naser65cda132024-05-02 14:34:08 -0400572 # -- Type of the internal controller service.
573 # Defaults to the value of `controller.service.type`.
574 # Ref: https://kubernetes.io/docs/concepts/services-networking/service/#publishing-services-service-types
575 type: ""
576 # -- Pre-defined cluster internal IP address of the internal controller service. Take care of collisions with existing services.
577 # This value is immutable. Set once, it can not be changed without deleting and re-creating the service.
578 # Ref: https://kubernetes.io/docs/concepts/services-networking/service/#choosing-your-own-ip-address
579 clusterIP: ""
580 # -- List of node IP addresses at which the internal controller service is available.
581 # Ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
582 externalIPs: []
583 # -- Deprecated: Pre-defined IP address of the internal controller service. Used by cloud providers to connect the resulting load balancer service to a pre-existing static IP.
584 # Ref: https://kubernetes.io/docs/concepts/services-networking/service/#loadbalancer
585 loadBalancerIP: ""
586 # -- Restrict access to the internal controller service. Values must be CIDRs. Allows any source address by default.
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500587 loadBalancerSourceRanges: []
Mohammed Naser65cda132024-05-02 14:34:08 -0400588 # -- Load balancer class of the internal controller service. Used by cloud providers to select a load balancer implementation other than the cloud provider default.
589 # Ref: https://kubernetes.io/docs/concepts/services-networking/service/#load-balancer-class
590 loadBalancerClass: ""
591 # -- Enable node port allocation for the internal controller service or not. Applies to type `LoadBalancer` only.
592 # Ref: https://kubernetes.io/docs/concepts/services-networking/service/#load-balancer-nodeport-allocation
593 # allocateLoadBalancerNodePorts: true
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500594
Mohammed Naser65cda132024-05-02 14:34:08 -0400595 # -- External traffic policy of the internal controller service. Set to "Local" to preserve source IP on providers supporting it.
596 # Ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
597 externalTrafficPolicy: ""
598 # -- Session affinity of the internal controller service. Must be either "None" or "ClientIP" if set. Defaults to "None".
599 # Ref: https://kubernetes.io/docs/reference/networking/virtual-ips/#session-affinity
600 sessionAffinity: ""
601 # -- Specifies the health check node port (numeric port number) for the internal controller service.
602 # If not specified, the service controller allocates a port from your cluster's node port range.
603 # Ref: https://kubernetes.io/docs/tasks/access-application-cluster/create-external-load-balancer/#preserving-the-client-source-ip
604 # healthCheckNodePort: 0
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500605
Mohammed Naser65cda132024-05-02 14:34:08 -0400606 # -- Represents the dual-stack capabilities of the internal controller service. Possible values are SingleStack, PreferDualStack or RequireDualStack.
607 # Fields `ipFamilies` and `clusterIP` depend on the value of this field.
608 # Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
609 ipFamilyPolicy: SingleStack
610 # -- List of IP families (e.g. IPv4, IPv6) assigned to the internal controller service. This field is usually assigned automatically based on cluster configuration and the `ipFamilyPolicy` field.
611 # Ref: https://kubernetes.io/docs/concepts/services-networking/dual-stack/#services
612 ipFamilies:
613 - IPv4
614 ports: {}
615 # -- Port the internal HTTP listener is published with.
616 # Defaults to the value of `controller.service.ports.http`.
617 # http: 80
618 # -- Port the internal HTTPS listener is published with.
619 # Defaults to the value of `controller.service.ports.https`.
620 # https: 443
621
622 targetPorts: {}
623 # -- Port of the ingress controller the internal HTTP listener is mapped to.
624 # Defaults to the value of `controller.service.targetPorts.http`.
625 # http: http
626 # -- Port of the ingress controller the internal HTTPS listener is mapped to.
627 # Defaults to the value of `controller.service.targetPorts.https`.
628 # https: https
629
630 # -- Declare the app protocol of the internal HTTP and HTTPS listeners or not. Supersedes provider-specific annotations for declaring the backend protocol.
631 # Ref: https://kubernetes.io/docs/concepts/services-networking/service/#application-protocol
632 appProtocol: true
633 nodePorts:
634 # -- Node port allocated for the internal HTTP listener. If left empty, the service controller allocates one from the configured node port range.
635 http: ""
636 # -- Node port allocated for the internal HTTPS listener. If left empty, the service controller allocates one from the configured node port range.
637 https: ""
638 # -- Node port mapping for internal TCP listeners. If left empty, the service controller allocates them from the configured node port range.
639 # Example:
640 # tcp:
641 # 8080: 30080
642 tcp: {}
643 # -- Node port mapping for internal UDP listeners. If left empty, the service controller allocates them from the configured node port range.
644 # Example:
645 # udp:
646 # 53: 30053
647 udp: {}
648 # shareProcessNamespace enables process namespace sharing within the pod.
649 # This can be used for example to signal log rotation using `kill -USR1` from a sidecar.
650 shareProcessNamespace: false
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500651 # -- Additional containers to be added to the controller pod.
652 # See https://github.com/lemonldap-ng-controller/lemonldap-ng-controller as example.
653 extraContainers: []
654 # - name: my-sidecar
655 # image: nginx:latest
656 # - name: lemonldap-ng-controller
657 # image: lemonldapng/lemonldap-ng-controller:0.2.0
658 # args:
659 # - /lemonldap-ng-controller
660 # - --alsologtostderr
661 # - --configmap=$(POD_NAMESPACE)/lemonldap-ng-configuration
662 # env:
663 # - name: POD_NAME
664 # valueFrom:
665 # fieldRef:
666 # fieldPath: metadata.name
667 # - name: POD_NAMESPACE
668 # valueFrom:
669 # fieldRef:
670 # fieldPath: metadata.namespace
671 # volumeMounts:
672 # - name: copy-portal-skins
673 # mountPath: /srv/var/lib/lemonldap-ng/portal/skins
674
675 # -- Additional volumeMounts to the controller main container.
676 extraVolumeMounts: []
677 # - name: copy-portal-skins
678 # mountPath: /var/lib/lemonldap-ng/portal/skins
679
680 # -- Additional volumes to the controller pod.
681 extraVolumes: []
682 # - name: copy-portal-skins
683 # emptyDir: {}
684
685 # -- Containers, which are run before the app containers are started.
686 extraInitContainers: []
687 # - name: init-myservice
688 # image: busybox
689 # command: ['sh', '-c', 'until nslookup myservice; do echo waiting for myservice; sleep 2; done;']
690
Yaguang Tang806de732025-03-25 14:24:29 +0800691 # -- Modules, which are mounted into the core nginx image.
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500692 extraModules: []
Mohammed Naser65cda132024-05-02 14:34:08 -0400693 # - name: mytestmodule
694 # image:
Yaguang Tang806de732025-03-25 14:24:29 +0800695 # # registry: registry.k8s.io
Mohammed Naser65cda132024-05-02 14:34:08 -0400696 # image: ingress-nginx/mytestmodule
697 # ## for backwards compatibility consider setting the full image url via the repository value below
698 # ## use *either* current default registry/image or repository format or installing chart by providing the values.yaml will fail
699 # ## repository:
700 # tag: "v1.0.0"
701 # digest: ""
702 # distroless: false
703 # containerSecurityContext:
704 # runAsNonRoot: true
705 # runAsUser: <user-id>
Yaguang Tang806de732025-03-25 14:24:29 +0800706 # runAsGroup: <group-id>
Mohammed Naser65cda132024-05-02 14:34:08 -0400707 # allowPrivilegeEscalation: false
708 # seccompProfile:
709 # type: RuntimeDefault
710 # capabilities:
711 # drop:
712 # - ALL
713 # readOnlyRootFilesystem: true
714 # resources: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500715 #
716 # The image must contain a `/usr/local/bin/init_module.sh` executable, which
717 # will be executed as initContainers, to move its config files within the
718 # mounted volume.
719
720 admissionWebhooks:
Mohammed Naser65cda132024-05-02 14:34:08 -0400721 name: admission
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500722 annotations: {}
723 # ignore-check.kube-linter.io/no-read-only-rootfs: "This deployment needs write access to root filesystem".
724
725 ## Additional annotations to the admission webhooks.
726 ## These annotations will be added to the ValidatingWebhookConfiguration and
727 ## the Jobs Spec of the admission webhooks.
728 enabled: true
Mohammed Naser65cda132024-05-02 14:34:08 -0400729 # -- Additional environment variables to set
730 extraEnvs: []
731 # extraEnvs:
732 # - name: FOO
733 # valueFrom:
734 # secretKeyRef:
735 # key: FOO
736 # name: secret-resource
737 # -- Admission Webhook failure policy to use
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500738 failurePolicy: Fail
739 # timeoutSeconds: 10
740 port: 8443
741 certificate: "/usr/local/certificates/cert"
742 key: "/usr/local/certificates/key"
743 namespaceSelector: {}
744 objectSelector: {}
745 # -- Labels to be added to admission webhooks
746 labels: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500747 service:
748 annotations: {}
749 # clusterIP: ""
750 externalIPs: []
751 # loadBalancerIP: ""
752 loadBalancerSourceRanges: []
753 servicePort: 443
754 type: ClusterIP
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500755 createSecretJob:
Mohammed Naser65cda132024-05-02 14:34:08 -0400756 name: create
757 # -- Security context for secret creation containers
758 securityContext:
759 runAsNonRoot: true
760 runAsUser: 65532
Yaguang Tang806de732025-03-25 14:24:29 +0800761 runAsGroup: 65532
Mohammed Naser65cda132024-05-02 14:34:08 -0400762 allowPrivilegeEscalation: false
763 seccompProfile:
764 type: RuntimeDefault
765 capabilities:
766 drop:
767 - ALL
768 readOnlyRootFilesystem: true
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500769 resources: {}
Mohammed Naser65cda132024-05-02 14:34:08 -0400770 # limits:
771 # cpu: 10m
772 # memory: 20Mi
773 # requests:
774 # cpu: 10m
775 # memory: 20Mi
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500776 patchWebhookJob:
Mohammed Naser65cda132024-05-02 14:34:08 -0400777 name: patch
778 # -- Security context for webhook patch containers
779 securityContext:
780 runAsNonRoot: true
781 runAsUser: 65532
Yaguang Tang806de732025-03-25 14:24:29 +0800782 runAsGroup: 65532
Mohammed Naser65cda132024-05-02 14:34:08 -0400783 allowPrivilegeEscalation: false
784 seccompProfile:
785 type: RuntimeDefault
786 capabilities:
787 drop:
788 - ALL
789 readOnlyRootFilesystem: true
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500790 resources: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500791 patch:
792 enabled: true
793 image:
Yaguang Tang806de732025-03-25 14:24:29 +0800794 # registry: registry.k8s.io
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500795 image: ingress-nginx/kube-webhook-certgen
796 ## for backwards compatibility consider setting the full image url via the repository value below
797 ## use *either* current default registry/image or repository format or installing chart by providing the values.yaml will fail
798 ## repository:
Yaguang Tang806de732025-03-25 14:24:29 +0800799 tag: v1.5.2
800 digest: sha256:e8825994b7a2c7497375a9b945f386506ca6a3eda80b89b74ef2db743f66a5ea
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500801 pullPolicy: IfNotPresent
802 # -- Provide a priority class name to the webhook patching job
803 ##
804 priorityClassName: ""
805 podAnnotations: {}
Mohammed Naser65cda132024-05-02 14:34:08 -0400806 # NetworkPolicy for webhook patch
807 networkPolicy:
808 # -- Enable 'networkPolicy' or not
809 enabled: false
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500810 nodeSelector:
811 kubernetes.io/os: linux
812 tolerations: []
813 # -- Labels to be added to patch job resources
814 labels: {}
Mohammed Naser65cda132024-05-02 14:34:08 -0400815 # -- Security context for secret creation & webhook patch pods
816 securityContext: {}
Yaguang Tang806de732025-03-25 14:24:29 +0800817 # -- Admission webhook patch job RBAC
818 rbac:
819 # -- Create RBAC or not
820 create: true
821 # -- Admission webhook patch job service account
822 serviceAccount:
823 # -- Create a service account or not
824 create: true
825 # -- Custom service account name
826 name: ""
827 # -- Auto-mount service account token or not
828 automountServiceAccountToken: true
Mohammed Naser65cda132024-05-02 14:34:08 -0400829 # Use certmanager to generate webhook certs
830 certManager:
831 enabled: false
832 # self-signed root certificate
833 rootCert:
834 # default to be 5y
835 duration: ""
836 admissionCert:
837 # default to be 1y
838 duration: ""
839 # issuerRef:
840 # name: "issuer"
841 # kind: "ClusterIssuer"
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500842 metrics:
843 port: 10254
Mohammed Naser65cda132024-05-02 14:34:08 -0400844 portName: metrics
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500845 # if this port is changed, change healthz-port: in extraArgs: accordingly
846 enabled: false
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500847 service:
Yaguang Tang806de732025-03-25 14:24:29 +0800848 # -- Enable the metrics service or not.
849 enabled: true
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500850 annotations: {}
851 # prometheus.io/scrape: "true"
852 # prometheus.io/port: "10254"
Mohammed Naser65cda132024-05-02 14:34:08 -0400853 # -- Labels to be added to the metrics service resource
854 labels: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500855 # clusterIP: ""
856
857 # -- List of IP addresses at which the stats-exporter service is available
Mohammed Naser65cda132024-05-02 14:34:08 -0400858 ## Ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500859 ##
860 externalIPs: []
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500861 # loadBalancerIP: ""
862 loadBalancerSourceRanges: []
863 servicePort: 10254
864 type: ClusterIP
865 # externalTrafficPolicy: ""
866 # nodePort: ""
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500867 serviceMonitor:
868 enabled: false
869 additionalLabels: {}
Yaguang Tang806de732025-03-25 14:24:29 +0800870 # -- Annotations to be added to the ServiceMonitor.
Mohammed Naser65cda132024-05-02 14:34:08 -0400871 annotations: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500872 ## The label to use to retrieve the job name from.
873 ## jobLabel: "app.kubernetes.io/name"
874 namespace: ""
875 namespaceSelector: {}
Mohammed Naser65cda132024-05-02 14:34:08 -0400876 ## Default: scrape .Release.Namespace or namespaceOverride only
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500877 ## To scrape all, use the following:
878 ## namespaceSelector:
879 ## any: true
880 scrapeInterval: 30s
881 # honorLabels: true
882 targetLabels: []
883 relabelings: []
884 metricRelabelings: []
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500885 prometheusRule:
886 enabled: false
887 additionalLabels: {}
Yaguang Tang806de732025-03-25 14:24:29 +0800888 # -- Annotations to be added to the PrometheusRule.
889 annotations: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500890 # namespace: ""
891 rules: []
Mohammed Naser65cda132024-05-02 14:34:08 -0400892 # # These are just examples rules, please adapt them to your needs
893 # - alert: NGINXConfigFailed
894 # expr: count(nginx_ingress_controller_config_last_reload_successful == 0) > 0
895 # for: 1s
896 # labels:
897 # severity: critical
898 # annotations:
899 # description: bad ingress config - nginx config test failed
900 # summary: uninstall the latest ingress changes to allow config reloads to resume
901 # # By default a fake self-signed certificate is generated as default and
902 # # it is fine if it expires. If `--default-ssl-certificate` flag is used
903 # # and a valid certificate passed please do not filter for `host` label!
904 # # (i.e. delete `{host!="_"}` so also the default SSL certificate is
905 # # checked for expiration)
906 # - alert: NGINXCertificateExpiry
907 # expr: (avg(nginx_ingress_controller_ssl_expire_time_seconds{host!="_"}) by (host) - time()) < 604800
908 # for: 1s
909 # labels:
910 # severity: critical
911 # annotations:
912 # description: ssl certificate(s) will expire in less then a week
913 # summary: renew expiring certificates to avoid downtime
914 # - alert: NGINXTooMany500s
915 # expr: 100 * ( sum( nginx_ingress_controller_requests{status=~"5.+"} ) / sum(nginx_ingress_controller_requests) ) > 5
916 # for: 1m
917 # labels:
918 # severity: warning
919 # annotations:
920 # description: Too many 5XXs
921 # summary: More than 5% of all requests returned 5XX, this requires your attention
922 # - alert: NGINXTooMany400s
923 # expr: 100 * ( sum( nginx_ingress_controller_requests{status=~"4.+"} ) / sum(nginx_ingress_controller_requests) ) > 5
924 # for: 1m
925 # labels:
926 # severity: warning
927 # annotations:
928 # description: Too many 4XXs
929 # summary: More than 5% of all requests returned 4XX, this requires your attention
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500930 # -- Improve connection draining when ingress controller pod is deleted using a lifecycle hook:
931 # With this new hook, we increased the default terminationGracePeriodSeconds from 30 seconds
932 # to 300, allowing the draining of connections up to five minutes.
933 # If the active connections end before that, the pod will terminate gracefully at that time.
934 # To effectively take advantage of this feature, the Configmap feature
935 # worker-shutdown-timeout new value is 240s instead of 10s.
936 ##
937 lifecycle:
938 preStop:
939 exec:
940 command:
941 - /wait-shutdown
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500942 priorityClassName: ""
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500943# -- Rollback limit
944##
945revisionHistoryLimit: 10
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500946## Default 404 backend
947##
948defaultBackend:
949 ##
950 enabled: false
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500951 name: defaultbackend
952 image:
Yaguang Tang806de732025-03-25 14:24:29 +0800953 # registry: registry.k8s.io
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500954 image: defaultbackend-amd64
955 ## for backwards compatibility consider setting the full image url via the repository value below
956 ## use *either* current default registry/image or repository format or installing chart by providing the values.yaml will fail
957 ## repository:
958 tag: "1.5"
959 pullPolicy: IfNotPresent
Mohammed Naser65cda132024-05-02 14:34:08 -0400960 runAsNonRoot: true
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500961 # nobody user -> uid 65534
962 runAsUser: 65534
Yaguang Tang806de732025-03-25 14:24:29 +0800963 runAsGroup: 65534
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500964 allowPrivilegeEscalation: false
Mohammed Naser65cda132024-05-02 14:34:08 -0400965 seccompProfile:
966 type: RuntimeDefault
967 readOnlyRootFilesystem: true
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500968 extraArgs: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500969 serviceAccount:
970 create: true
971 name: ""
972 automountServiceAccountToken: true
973 # -- Additional environment variables to set for defaultBackend pods
974 extraEnvs: []
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500975 port: 8080
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500976 ## Readiness and liveness probes for default backend
977 ## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-probes/
978 ##
979 livenessProbe:
980 failureThreshold: 3
981 initialDelaySeconds: 30
982 periodSeconds: 10
983 successThreshold: 1
984 timeoutSeconds: 5
985 readinessProbe:
986 failureThreshold: 6
987 initialDelaySeconds: 0
988 periodSeconds: 5
989 successThreshold: 1
990 timeoutSeconds: 5
Mohammed Naser65cda132024-05-02 14:34:08 -0400991 # -- The update strategy to apply to the Deployment or DaemonSet
992 ##
993 updateStrategy: {}
994 # rollingUpdate:
995 # maxUnavailable: 1
996 # type: RollingUpdate
Mohammed Naser9ad0d462023-01-15 20:36:37 -0500997
Mohammed Naser65cda132024-05-02 14:34:08 -0400998 # -- `minReadySeconds` to avoid killing pods before we are ready
999 ##
1000 minReadySeconds: 0
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001001 # -- Node tolerations for server scheduling to nodes with taints
1002 ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/
1003 ##
1004 tolerations: []
1005 # - key: "key"
1006 # operator: "Equal|Exists"
1007 # value: "value"
1008 # effect: "NoSchedule|PreferNoSchedule|NoExecute(1.6 only)"
1009
Yaguang Tang806de732025-03-25 14:24:29 +08001010 # -- Affinity and anti-affinity rules for server scheduling to nodes
1011 ## Ref: https://kubernetes.io/docs/concepts/configuration/assign-pod-node/#affinity-and-anti-affinity
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001012 affinity: {}
Yaguang Tang806de732025-03-25 14:24:29 +08001013 # # An example of preferred pod anti-affinity, weight is in the range 1-100
1014 # podAntiAffinity:
1015 # preferredDuringSchedulingIgnoredDuringExecution:
1016 # - weight: 100
1017 # podAffinityTerm:
1018 # labelSelector:
1019 # matchExpressions:
1020 # - key: app.kubernetes.io/name
1021 # operator: In
1022 # values:
1023 # - '{{ include "ingress-nginx.name" . }}'
1024 # - key: app.kubernetes.io/instance
1025 # operator: In
1026 # values:
1027 # - '{{ .Release.Name }}'
1028 # - key: app.kubernetes.io/component
1029 # operator: In
1030 # values:
1031 # - default-backend
1032 # topologyKey: kubernetes.io/hostname
1033
1034 # # An example of required pod anti-affinity
1035 # podAntiAffinity:
1036 # requiredDuringSchedulingIgnoredDuringExecution:
1037 # - labelSelector:
1038 # matchExpressions:
1039 # - key: app.kubernetes.io/name
1040 # operator: In
1041 # values:
1042 # - '{{ include "ingress-nginx.name" . }}'
1043 # - key: app.kubernetes.io/instance
1044 # operator: In
1045 # values:
1046 # - '{{ .Release.Name }}'
1047 # - key: app.kubernetes.io/component
1048 # operator: In
1049 # values:
1050 # - default-backend
1051 # topologyKey: kubernetes.io/hostname
1052
1053 # -- Topology spread constraints rely on node labels to identify the topology domain(s) that each Node is in.
1054 # Ref.: https://kubernetes.io/docs/concepts/workloads/pods/pod-topology-spread-constraints/
1055 topologySpreadConstraints: []
1056 # - labelSelector:
1057 # matchLabels:
1058 # app.kubernetes.io/name: '{{ include "ingress-nginx.name" . }}'
1059 # app.kubernetes.io/instance: '{{ .Release.Name }}'
1060 # app.kubernetes.io/component: default-backend
1061 # matchLabelKeys:
1062 # - pod-template-hash
1063 # topologyKey: topology.kubernetes.io/zone
1064 # maxSkew: 1
1065 # whenUnsatisfiable: ScheduleAnyway
1066 # - labelSelector:
1067 # matchLabels:
1068 # app.kubernetes.io/name: '{{ include "ingress-nginx.name" . }}'
1069 # app.kubernetes.io/instance: '{{ .Release.Name }}'
1070 # app.kubernetes.io/component: default-backend
1071 # matchLabelKeys:
1072 # - pod-template-hash
1073 # topologyKey: kubernetes.io/hostname
1074 # maxSkew: 1
1075 # whenUnsatisfiable: ScheduleAnyway
Mohammed Naser65cda132024-05-02 14:34:08 -04001076 # -- Security context for default backend pods
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001077 podSecurityContext: {}
Mohammed Naser65cda132024-05-02 14:34:08 -04001078 # -- Security context for default backend containers
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001079 containerSecurityContext: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001080 # -- Labels to add to the pod container metadata
1081 podLabels: {}
1082 # key: value
1083
1084 # -- Node labels for default backend pod assignment
Mohammed Naser65cda132024-05-02 14:34:08 -04001085 ## Ref: https://kubernetes.io/docs/concepts/scheduling-eviction/assign-pod-node/
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001086 ##
1087 nodeSelector:
1088 kubernetes.io/os: linux
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001089 # -- Annotations to be added to default backend pods
1090 ##
1091 podAnnotations: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001092 replicaCount: 1
Yaguang Tang806de732025-03-25 14:24:29 +08001093 # -- Minimum available pods set in PodDisruptionBudget.
1094 # Define either 'minAvailable' or 'maxUnavailable', never both.
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001095 minAvailable: 1
Yaguang Tang806de732025-03-25 14:24:29 +08001096 # -- Maximum unavailable pods set in PodDisruptionBudget. If set, 'minAvailable' is ignored.
1097 # maxUnavailable: 1
1098 # -- Eviction policy for unhealthy pods guarded by PodDisruptionBudget.
1099 # Ref: https://kubernetes.io/blog/2023/01/06/unhealthy-pod-eviction-policy-for-pdbs/
1100 unhealthyPodEvictionPolicy: ""
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001101 resources: {}
1102 # limits:
1103 # cpu: 10m
1104 # memory: 20Mi
1105 # requests:
1106 # cpu: 10m
1107 # memory: 20Mi
1108
1109 extraVolumeMounts: []
1110 ## Additional volumeMounts to the default backend container.
1111 # - name: copy-portal-skins
1112 # mountPath: /var/lib/lemonldap-ng/portal/skins
1113
1114 extraVolumes: []
1115 ## Additional volumes to the default backend pod.
1116 # - name: copy-portal-skins
1117 # emptyDir: {}
1118
Mohammed Naser65cda132024-05-02 14:34:08 -04001119 extraConfigMaps: []
1120 ## Additional configmaps to the default backend pod.
1121 # - name: my-extra-configmap-1
1122 # labels:
1123 # type: config-1
1124 # data:
1125 # extra_file_1.html: |
1126 # <!-- Extra HTML content for ConfigMap 1 -->
1127 # - name: my-extra-configmap-2
1128 # labels:
1129 # type: config-2
1130 # data:
1131 # extra_file_2.html: |
1132 # <!-- Extra HTML content for ConfigMap 2 -->
1133
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001134 autoscaling:
1135 annotations: {}
1136 enabled: false
1137 minReplicas: 1
1138 maxReplicas: 2
1139 targetCPUUtilizationPercentage: 50
1140 targetMemoryUtilizationPercentage: 50
Mohammed Naser65cda132024-05-02 14:34:08 -04001141 # NetworkPolicy for default backend component.
1142 networkPolicy:
1143 # -- Enable 'networkPolicy' or not
1144 enabled: false
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001145 service:
1146 annotations: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001147 # clusterIP: ""
1148
1149 # -- List of IP addresses at which the default backend service is available
Mohammed Naser65cda132024-05-02 14:34:08 -04001150 ## Ref: https://kubernetes.io/docs/concepts/services-networking/service/#external-ips
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001151 ##
1152 externalIPs: []
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001153 # loadBalancerIP: ""
1154 loadBalancerSourceRanges: []
1155 servicePort: 80
1156 type: ClusterIP
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001157 priorityClassName: ""
1158 # -- Labels to be added to the default backend resources
1159 labels: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001160## Enable RBAC as per https://github.com/kubernetes/ingress-nginx/blob/main/docs/deploy/rbac.md and https://github.com/kubernetes/ingress-nginx/issues/266
1161rbac:
1162 create: true
1163 scope: false
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001164serviceAccount:
1165 create: true
1166 name: ""
1167 automountServiceAccountToken: true
1168 # -- Annotations for the controller service account
1169 annotations: {}
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001170# -- Optional array of imagePullSecrets containing private registry credentials
1171## Ref: https://kubernetes.io/docs/tasks/configure-pod-container/pull-image-private-registry/
1172imagePullSecrets: []
1173# - name: secretName
1174
Mohammed Naser65cda132024-05-02 14:34:08 -04001175# -- TCP service key-value pairs
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001176## Ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/exposing-tcp-udp-services.md
1177##
1178tcp: {}
Mohammed Naser7d1623e2024-06-17 09:12:39 -04001179# "8080": "default/example-tcp-svc:9000"
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001180
Mohammed Naser65cda132024-05-02 14:34:08 -04001181# -- UDP service key-value pairs
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001182## Ref: https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/exposing-tcp-udp-services.md
1183##
1184udp: {}
Mohammed Naser7d1623e2024-06-17 09:12:39 -04001185# "53": "kube-system/kube-dns:53"
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001186
Mohammed Naser65cda132024-05-02 14:34:08 -04001187# -- Prefix for TCP and UDP ports names in ingress controller service
1188## Some cloud providers, like Yandex Cloud may have a requirements for a port name regex to support cloud load balancer integration
1189portNamePrefix: ""
Mohammed Naser9ad0d462023-01-15 20:36:37 -05001190# -- (string) A base64-encoded Diffie-Hellman parameter.
1191# This can be generated with: `openssl dhparam 4096 2> /dev/null | base64`
1192## Ref: https://github.com/kubernetes/ingress-nginx/tree/main/docs/examples/customization/ssl-dh-param
Mohammed Naser65cda132024-05-02 14:34:08 -04001193dhParam: ""