IngressNginxController
Scope: Cluster
- objectspec
Required value
- array of stringsspec.acceptRequestsFrom
List of IP addresses in the CIDR format that are allowed accessing the load balancer.
Regardless of the inlet type, the address to be verified (the
original_addressfield in logs) is always the original IP address the connection is established from and not the client address that can be passed in some inlets via headers or using the proxy protocol.This parameter is implemented using the map module. If the original address is not allowed, nginx closes the connection, returning the code
444.By default, the controller can be connected to from any address.
- stringElement of the array
Pattern:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
- objectspec.additionalHeaders
Additional headers to add to all requests. Use the
key: value(string)format. - objectspec.additionalLogFields
Additional fields to add to nginx logs. Use the
key: value(string)format. - booleanspec.annotationValidationEnabled
Enables validation for Ingress rule annotations.
Default:
false - booleanspec.chaosMonkey
Tool for unexpected and random termination of Ingress controller Pods in a systemic manner.
Intended for testing the fault tolerance of the Ingress controller.
Default:
false - objectspec.config
Section of the Ingress controller parameters where you can add any supported option in the
key: value(string)format.An error in options may lead to the failure of the Ingress controller.
Be careful when using this parameter, as backward compatibility or stability of the target Ingress controller are not guaranteed.
- stringspec.controllerLogLevel
Defines the verbosity level for the Ingress controller logs.
Default:
InfoAllowed values:
Error— Only critical errors will be logged.Warn— Warnings and errors will be logged.Info— Informational messages, including basic debugging information.Extended— Extended information about changes in system state.Debug— Verbose debugging output, potentially very noisy.Trace— Trace-level logs with detailed step-by-step context. - objectspec.controllerPodsAdditionalAnnotations
Additional custom annotations for Ingress controller pods.
Be careful when using this parameter, as backward compatibility or stability of the target Ingress controller are not guaranteed.
- stringspec.controllerVersion
NGINX Ingress Controller version.
By default, the version set in the module settings is used.
Allowed values:
1.9,1.10,1.12 - objectspec.customErrors
Section with parameters for HTTP error customization.
If this section is defined in the configuration, all its parameters are required.
Changing any parameter causes the restart of all NGINX Ingress Controllers.
- array of stringsspec.customErrors.codes
Required value
List of response codes (array) causing redirection to the custom backend.
- stringElement of the array
Pattern:
^[1-5][0-9][0-9]$
- stringspec.customErrors.namespace
Required value
Name of a namespace keeping the service used as a default custom backend.
Example:
namespace: default - stringspec.customErrors.serviceName
Required value
Name of a service to be used as a default custom backend.
Example:
serviceName: custom-errors-backend-service
- objectspec.defaultSSLCertificate
The certificate that is used:
- For
catch-allserver requests (here, “catch-all server” refers to the nginx server directive. Requests without a corresponding Ingress resource end up on thecatch-allserver. - For Ingress resources that do not have a
secretNamespecified in thetlssection.
By default, a self-signed certificate is used.
Caution. This parameter does not affect certificates used in the Ingress resources of the Deckhouse modules. To specify the certificate to use in the Ingress resources of Deckhouse modules, use the global parameter
modules.https.customCertificate.- objectspec.defaultSSLCertificate.secretRef
Link to the Secret for passing to the Ingress controller.
- stringspec.defaultSSLCertificate.secretRef.name
Name of Secret containing the SSL certificate.
Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - stringspec.defaultSSLCertificate.secretRef.namespace
Name of the namespace containing the Secret with the SSL certificate.
Default:
d8-ingress-nginxPattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
- For
- booleanspec.disableHTTP2
Disables HTTP/2 support.
Default:
false - booleanspec.enableHTTP3
Enables HTTP/3 support.
HTTP3 is only available in Ingress controller version 1.10.
Default:
false - booleanspec.enableIstioSidecar
Attaches annotations to the controller pods to automatically inject Istio sidecar containers.
After setting this parameter, the
sidecar.istio.io/inject: "true"andtraffic.sidecar.istio.io/includeOutboundIPRanges: "<Service CIDR>"annotations will be attached to the Ingress controller pods. When these pods are created, Istio sidecars will be automatically added to them via a mutating webhook. After that, the sidecar will intercept all traffic directed to the Service CIDR.To use this feature, add the following annotations to your Ingress resources:
nginx.ingress.kubernetes.io/service-upstream: "true": Using this annotation, the Ingress controller sends requests to a service ClusterIP (from Service CIDR) instead of sending them to the application pods. Theistio-proxysidecar only intercepts traffic directed to Service CIDR, while the remaining requests are sent directly.nginx.ingress.kubernetes.io/upstream-vhost: myservice.myns.svc: Using this annotation, the sidecar can identify the application service that serves requests.
Caution. This parameter cannot be enabled if the Ingress controller inlet is set to
HostWithFailover. - objectspec.geoIP2
GeoIP2 activation options.
- array of stringsspec.geoIP2.maxmindEditionIDs
List of database revisions to download at startup.
For details on GeoLite databases, refer to the MaxMind blog article.
Default:
["GeoLite2-City","GeoLite2-ASN"]- stringElement of the array
Allowed values:
GeoIP2-Anonymous-IP,GeoIP2-Country,GeoIP2-City,GeoIP2-Connection-Type,GeoIP2-Domain,GeoIP2-ISP,GeoIP2-ASN,GeoLite2-ASN,GeoLite2-Country,GeoLite2-City
- stringspec.geoIP2.maxmindLicenseKey
License key to download the GeoIP2 database.
If the key is set in the configuration, the module downloads the GeoIP2 database every time the controller is started. For details on obtaining a key, refer to the MaxMind blog article.
- objectspec.hostPort
Section of the
HostPortinlet parameters.- booleanspec.hostPort.behindL7Proxy
Enables processing and passing of the incoming
X-Forwarded-*headers.Caution. Before using that option, ensure that requests to the Ingress come from trusted sources only. To set restrictions, use the
acceptRequestsFromparameter. - integerspec.hostPort.httpPort
Port for insecure HTTP connections.
If the parameter is not set, HTTP connections cannot be established.
This parameter is required if
httpsPortis not set.Example:
httpPort: 80 - integerspec.hostPort.httpsPort
Port for secure HTTPS connections.
If the parameter is not set, HTTPS connections cannot be established.
This parameter is required if
httpPortis not set.Example:
httpsPort: 443 - stringspec.hostPort.realIPHeader
The header for identifying the original IP address of a client.
This option works only if
behindL7Proxyis enabled.Default:
X-Forwarded-ForExample:
realIPHeader: CF-Connecting-IP
- objectspec.hostPortWithProxyProtocol
Section of the
HostPortWithProxyProtocolinlet parameters.- integerspec.hostPortWithProxyProtocol.httpPort
Port for insecure HTTP connections.
If the parameter is not set, HTTP connections cannot be established.
This parameter is required if
httpsPortis not set.Example:
httpPort: 80 - integerspec.hostPortWithProxyProtocol.httpsPort
Port for secure HTTPS connections.
If the parameter is not set, HTTPS connections cannot be established.
This parameter is required if
httpPortis not set.Example:
httpsPort: 443
- objectspec.hostPortWithSSLPassthrough
Section of the
HostPortWithSSLPassthroughinlet parameters.- integerspec.hostPortWithSSLPassthrough.httpPort
Port for insecure HTTP connections.
If the parameter is not set, HTTP connections cannot be established.
This parameter is required if
httpsPortis not set.Example:
httpPort: 80 - integerspec.hostPortWithSSLPassthrough.httpsPort
Port for secure HTTPS connections.
If the parameter is not set, HTTPS connections cannot be established.
This parameter is required if
httpPortis not set.Example:
httpsPort: 443
- booleanspec.hsts
Enables HTTP Strict-Transport-Security (HSTS) response headers. For details on HSTS headers, refer to the MDN Web Docs article.
Default:
false - objectspec.hstsOptions
HSTS parameters.
- booleanspec.hstsOptions.includeSubDomains
Applies HSTS parameters to all subdomains of a website.
Default:
false - stringspec.hstsOptions.maxAge
Time in seconds during which the browser remembers that the website is only accessible via HTTPS.
Default:
31536000Pattern:
^[1-9][0-9]*$Example:
maxAge: '31536000' - booleanspec.hstsOptions.preload
Adds a website to the preload list.
The list instructs browsers to establish connections to the specified websites over HTTPS only.
Default:
false
- stringspec.ingressClass
Name of the Ingress class to use with the NGINX Ingress Controller.
Using this option, you can create several controllers to use with a single Ingress class.
If you set it to
nginx, Ingress resources without thekubernetes.io/ingress.classannotation or thespec.ingressClassNamefield will be handled as well.Default:
nginxPattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Example:
ingressClass: nginx - stringspec.inlet
Required value
The way external traffic is routed to the cluster. Once you set the method, you cannot change it later.
Allowed values:
LoadBalancer: The Ingress controller is deployed, and aLoadBalancer-type service is provisioned.LoadBalancerWithProxyProtocol: The Ingress controller is deployed, and aLoadBalancer-type service is provisioned. The Ingress controller uses the proxy-protocol to get a real IP address of the client.-
LoadBalancerWithSSLPassthrough: The Ingress controller is deployed, and aLoadBalancer-type service is provisioned. This option enables the SSL Passthrough feature, allowing backends to be configured to accept SSL traffic directly without termination at the Ingress controller.The SSL Passthrough feature is implemented by intercepting all traffic on the configured HTTPS port (default:
443) and routing it to a local TCP proxy. This implementation bypasses nginx completely and introduces a significant performance penalty.The SSL Passthrough protocol leverages Server Name Indication (SNI) and reads the virtual domain data from the TLS handshake protocol, which requires a compatible client.
If the host name doesn’t match the requested host name, the request is forwarded to NGINX on the configured SSL Passthrough proxy port (default:
442), which subsequently proxies the request to the default backend.Unlike HTTP backends, traffic to SSL Passthrough backends is routed to the ClusterIP of the backing service instead of individual endpoints.
Since SSL Passthrough works at layer 4 of the OSI model (TCP) and not layer 7 (HTTP), using SSL Passthrough makes it impossible to use other annotations configured on an Ingress object.
HostPort: The Ingress controller is deployed and made available on node ports viahostPort.-
HostPortWithProxyProtocol: The Ingress controller is deployed and made available on node ports viahostPort. The Ingress controller uses the proxy-protocol to get a real IP address of the client.Caution. When using this inlet, ensure that requests to the Ingress come from trusted sources only. To enforce it, use the
acceptRequestsFromparameter. -
HostPortWithSSLPassthrough: The Ingress controller is deployed and made available on node ports viahostPort. This option enables the SSL Passthrough feature, allowing backends to be configured to accept SSL traffic directly without termination at the Ingress controller.Specify inlet parameters in the
spec.HostPortWithSSLPassthroughsection.The SSL Passthrough protocol leverages SNI and reads the virtual domain data from the TLS handshake protocol, which requires a compatible client.
If the host name doesn’t match the requested host name, the request is forwarded to NGINX on the configured SSL Passthrough proxy port (default:
442), which subsequently proxies the request to the default backend.The SSL Passthrough feature is implemented by intercepting all traffic on the configured HTTPS port (default:
443) and routing it to a local TCP proxy. This implementation bypasses nginx completely and introduces a significant performance penalty.Unlike HTTP backends, traffic to SSL Passthrough backends is routed to the ClusterIP of the backing service instead of individual endpoints.
Since SSL Passthrough works at layer 4 of the OSI model (TCP) and not layer 7 (HTTP), using SSL Passthrough makes it impossible to use other annotations configured on an Ingress object.
-
HostWithFailover: Two Ingress controllers are deployed: a primary and a backup. The primary controller runs in ahostNetwork. If the primary controller pods are unavailable, traffic is routed to the backup controller.There can be only one controller with this inlet type on a single host.
Ensure the following ports are available on the node:
80,81,443,444,4207,4208.To change the inlet, remove the iptables rules and restart the
kube-proxypods or reboot the nodes hosting Ingress controllers.This inlet cannot be used if the
enableIstioSidecarparameter is enabled.
Allowed values:
LoadBalancer,LoadBalancerWithSSLPassthrough,LoadBalancerWithProxyProtocol,HostPort,HostPortWithSSLPassthrough,HostPortWithProxyProtocol,HostWithFailover - booleanspec.legacySSL
Enables outdated versions of the TLS protocol and cipher suites.
Enables the following TLS protocol versions:
TLSv1,TLSv1.1,TLSv1.2,TLSv1.3.Enables the following combinations of cipher suites in order from the strongest to the weakest:
ECDHE-ECDSA-AES256-GCM-SHA384,ECDHE-RSA-AES256-GCM-SHA384,ECDHE-ECDSA-CHACHA20-POLY1305,ECDHE-RSA-CHACHA20-POLY1305,ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-AES256-SHA384,ECDHE-RSA-AES256-SHA384,ECDHE-ECDSA-AES128-SHA256,ECDHE-RSA-AES128-SHA256,ECDHE-ECDSA-AES256-SHA,ECDHE-RSA-AES256-SHA,ECDHE-ECDSA-AES128-SHA,ECDHE-RSA-AES128-SHA,AES256-GCM-SHA384,AES128-GCM-SHA256,AES256-SHA256,AES128-SHA256,AES256-SHA,AES128-SHA.By default, only
TLSv1.2andTLSv1.3with the newest cipher suites are enabled. - objectspec.loadBalancer
Not required value.
Section of the
LoadBalancerinlet parameters.- objectspec.loadBalancer.annotations
Annotations to assign to the service for flexible configuration of the load balancer.
The module does not take into account the specifics of setting annotations in different clouds.
If annotations for provisioning a load balancer are only applied when creating a service, recreate the IngressNginxController resource to update respective parameters (or create a new resource and then delete the old one).
- booleanspec.loadBalancer.behindL7Proxy
Enables processing and passing of the incoming
X-Forwarded-*headers.Caution. Before using that option, ensure that requests to the Ingress come from trusted sources only.
- stringspec.loadBalancer.loadBalancerClass
Class of the load balancer for incoming network requests (passed to the
spec.loadBalancerClassparameter of the provisioned service with theLoadBalancertype). - stringspec.loadBalancer.realIPHeader
The header for identifying the original IP address of a client.
This option works only if
behindL7Proxyis enabled.Default:
X-Forwarded-ForExample:
realIPHeader: CF-Connecting-IP - array of stringsspec.loadBalancer.sourceRanges
List of IP addresses in the CIDR format that are allowed accessing the load balancer.
Caution. A cloud provider may not support this option or ignore it.
Providers supporting this option: AWS, Azure, GCP. Providers ignoring this option: Yandex Cloud.
For other cloud providers, behavior may vary depending on the cloud implementation specifics. Test this option before using it in a production environment.
- stringElement of the array
Pattern:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
- objectspec.loadBalancerWithProxyProtocol
Not required value.
Section of the
LoadBalancerWithProxyProtocolinlet parameters.- objectspec.loadBalancerWithProxyProtocol.annotations
Annotations to assign to the service for flexible configuration of the load balancer.
The module does not take into account the specifics of setting annotations in different clouds.
If annotations for provisioning a load balancer are only applied when creating a service, recreate the IngressNginxController resource to update respective parameters (or create a new resource and then delete the old one).
- stringspec.loadBalancerWithProxyProtocol.loadBalancerClass
Class of the load balancer for incoming network requests (passed to the
spec.loadBalancerClassparameter of the provisioned service with theLoadBalancertype). - array of stringsspec.loadBalancerWithProxyProtocol.sourceRanges
List of IP addresses in the CIDR format that are allowed accessing the load balancer.
Caution. A cloud provider may not support this option or ignore it.
Providers supporting this option: AWS, Azure, GCP. Providers ignoring this option: Yandex Cloud.
For other cloud providers, behavior may vary depending on the cloud implementation specifics. Test this option before using it in a production environment.
- stringElement of the array
Pattern:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
- objectspec.loadBalancerWithSSLPassthrough
Not required value.
Section of the
LoadBalancerWithSSLPassthroughinlet parameters.- objectspec.loadBalancerWithSSLPassthrough.annotations
Annotations to assign to the service for flexible configuration of the load balancer.
The module does not take into account the specifics of setting annotations in different clouds.
If annotations for provisioning a load balancer are only applied when creating a service, recreate the IngressNginxController resource to update respective parameters (or create a new resource and then delete the old one).
- stringspec.loadBalancerWithSSLPassthrough.loadBalancerClass
Class of the load balancer for incoming network requests (passed to the
spec.loadBalancerClassparameter of the provisioned service with theLoadBalancertype). - array of stringsspec.loadBalancerWithSSLPassthrough.sourceRanges
List of IP addresses in the CIDR format that are allowed accessing the load balancer.
Caution. A cloud provider may not support this option or ignore it.
Providers supporting this option: AWS, Azure, GCP. Providers ignoring this option: Yandex Cloud.
For other cloud providers, behavior may vary depending on the cloud implementation specifics. Test this option before using it in a production environment.
- stringElement of the array
Pattern:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
- integerspec.maxReplicas
Maximum number of
LoadBalancer,LoadBalancerWithProxyProtocolandLoadBalancerWithSSLPassthroughreplicas for HPA.Default:
1Allowed values:
1 <= X - integerspec.minReplicas
Minimum number of
LoadBalancer,LoadBalancerWithProxyProtocolandLoadBalancerWithSSLPassthroughreplicas for HPA.Default:
1Allowed values:
1 <= X - booleanspec.nginxProfilingEnabled
Enables NGINX profiling using Valgrind. A memory analysis report is saved to the
/var/log/valgrinddirectory on the host. When enabled, Valgrind creates a file namedmemcheck.${timestamp}.log.After debugging is complete, don’t forget to disable profiling mode!
The report contains information about the process behavior, including potential memory leaks.
Caution. Enabling this option significantly increases memory usage and slows down HTTP/HTTPS request handling by the NGINX process.
Be aware. When the option is enabled, the ingress-nginx controller pod starts in privileged mode.
- objectspec.nodeSelector
Same as the
spec.nodeSelectorparameter in Kubernetes Pods.If the parameter is omitted or set to
false, Deckhouse will try to determine the value automatically.Use the format of a standard
nodeSelectorlist. Instance pods inherit this field as is. - objectspec.resourcesRequests
Maximum amount of CPU and memory resources a Pod can request when selecting a node. If the VPA is disabled, these max values become the default ones.
- stringspec.resourcesRequests.mode
Required value
Resource request management mode.
Default:
VPAAllowed values:
VPA,Static - objectspec.resourcesRequests.static
Static management mode parameters.
- stringspec.resourcesRequests.static.cpu
Value for CPU requests.
Default:
350m - stringspec.resourcesRequests.static.memory
Value for memory requests.
Default:
500Mi
- objectspec.resourcesRequests.vpa
Vertical Pod Autoscaler (VPA) mode parameters.
- objectspec.resourcesRequests.vpa.cpu
Parameters of CPU request restrictions.
- stringspec.resourcesRequests.vpa.cpu.max
Maximum value of allowed CPU requests to be submitted by the VPA.
Default:
50m - stringspec.resourcesRequests.vpa.cpu.min
Minimum value of allowed CPU requests to be submitted by the VPA.
Default:
10m
- objectspec.resourcesRequests.vpa.memory
Parameters of memory request restrictions.
- stringspec.resourcesRequests.vpa.memory.max
Maximum value of allowed memory requests to be submitted by the VPA.
Default:
200Mi - stringspec.resourcesRequests.vpa.memory.min
Minimum value of allowed memory requests to be submitted by the VPA.
Default:
50Mi
- stringspec.resourcesRequests.vpa.mode
VPA usage mode.
Default:
InitialAllowed values:
Initial,Auto
- array of objectsspec.tolerations
Same as the
spec.tolerationsparameter in Kubernetes Pods.If the parameter is omitted or set to
false, all the possible tolerations are automatically applied the module’s Pods.Use the format of a standard toleration list. Instance pods inherit this field as is.
- stringspec.tolerations.effect
Allowed values:
NoSchedule,PreferNoSchedule,NoExecute - stringspec.tolerations.key
- stringspec.tolerations.operator
Default:
EqualAllowed values:
Exists,Equal - integerspec.tolerations.tolerationSeconds
- stringspec.tolerations.value
- booleanspec.underscoresInHeaders
Enables using the underscore symbol in headers.
Related resources:
Default:
false - booleanspec.validationEnabled
Enables validation for Ingress rules.
Warning. Enabling validation increases the load on the master nodes of the cluster.
Default:
true - integerspec.waitLoadBalancerOnTerminating
Number of seconds before the
/healthzendpoint begins returning the500code when the pod enters theTerminatingstate.
Deprecated resource. Support for the resource might be removed in a later release.
- objectspec
Required value
- array of stringsspec.acceptRequestsFrom
IP or CIDR that is allowed to access the Ingress controller.
Regardless of the inlet type, the source IP address gets always verified (the
original_addressfield in logs) (the address that the connection was established from) and not the “address of the client” that can be passed in some inlets via headers or using the proxy protocol.This parameter is implemented using the map module. If the source address is not in the list of allowed addresses, nginx closes the connection immediately using HTTP code 444.
By default, the connection to the controller can be made from any address.
- stringElement of the array
Pattern:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
- objectspec.additionalHeaders
Additional headers to add to all request. (map: key (string)).
- objectspec.additionalLogFields
Additional fields to add to nginx logs. (map: key (string)).
- booleanspec.annotationValidationEnabled
Enables the annotation validation feature.
Default:
false - booleanspec.chaosMonkey
The instrument for unexpected and random termination of ingress controller Pods in a systemic manner. Chaos Monkey tests the resilience of ingress controller.
Default:
false - objectspec.config
The section with the Ingress controller parameters.
You can specify any supported parameter in it in the
key: value (string)format.Caution. An erroneous option may lead to the failure of the ingress controller;
Caution. The usage of this parameter is not recommended; the backward compatibility or operability of the ingress controller that uses this option is not guaranteed
- stringspec.controllerVersion
One of the supported NGINX Ingress controller versions.
By default: the version in the module settings is used.
Allowed values:
1.9,1.10,1.12 - objectspec.customErrors
The section with parameters of custom HTTP errors.
All parameters in this section are mandatory if it is defined. Changing any parameter leads to the restart of all NGINX Ingress controllers.
- array of stringsspec.customErrors.codes
Required value
Error codes which should be redirected to custom errors backend.
- stringElement of the array
Pattern:
^[1-5][0-9][0-9]$
- stringspec.customErrors.namespace
Required value
Namespace of custom errors backend.
Example:
namespace: default - stringspec.customErrors.serviceName
Required value
Name of kubernetes service that leads to custom errors backend.
Example:
serviceName: custom-errors-backend-service
- objectspec.defaultSSLCertificate
This certificate is used:
- for
catch-allserver requests (here, “catch-all server” refers to the nginx server directive. Requests for which there is no corresponding Ingress resource end up on thecatch-allserver. - for Ingress resources that do not have a
secretNamespecified in thetlssection.
By default, a self-signed certificate is used.
Caution. This parameter does not affect certificates used in the Ingress resources of the Deckhouse modules. You can specify the certificate to be used in the Ingress resources of the Deckhouse modules with the modules.https.customCertificate global parameter.
- objectspec.defaultSSLCertificate.secretRef
The Secret reference to pass to the Ingress Controller.
- stringspec.defaultSSLCertificate.secretRef.name
Name of Secret containing SSL—certificate.
Pattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$ - stringspec.defaultSSLCertificate.secretRef.namespace
Namespace, where the Secret is located.
Default:
d8-ingress-nginxPattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?$
- for
- booleanspec.disableHTTP2
Switch off HTTP2 support.
Default:
false - booleanspec.enableIstioSidecar
Attach annotations to the controller pods to automatically inject Istio sidecar containers.
After setting this parameter, the
sidecar.istio.io/inject: "true"andtraffic.sidecar.istio.io/includeOutboundIPRanges: "<Service CIDR>"annotations will be attached to the ingress-controller pods. During pod creation, the Istio’s mutating webhook will add the sidecar to it. After that, the sidecar will catch the network traffic to Service CIDR.To use this feature in your application, you must add these annotations to your Ingress resources:
nginx.ingress.kubernetes.io/service-upstream: "true"— using this annotation, the ingress-controller sends requests to a single ClusterIP (from Service CIDR) while envoy load balances them. Istio sidecar containers only catching traffic directed to Service CIDR.nginx.ingress.kubernetes.io/upstream-vhost: myservice.myns.svc— using this annotation, the sidecar can identify the application service that serves requests.
Caution. This parameter cannot be enabled if the Ingress controller inlet is set to
HostWithFailover. - objectspec.geoIP2
Enable GeoIP2 databases.
- array of stringsspec.geoIP2.maxmindEditionIDs
A list of database editions to download at startup.
Default:
["GeoLite2-City","GeoLite2-ASN"]- stringElement of the array
Allowed values:
GeoIP2-Anonymous-IP,GeoIP2-Country,GeoIP2-City,GeoIP2-Connection-Type,GeoIP2-Domain,GeoIP2-ISP,GeoIP2-ASN,GeoLite2-ASN,GeoLite2-Country,GeoLite2-City
- stringspec.geoIP2.maxmindLicenseKey
A license key to download the GeoIP2 database.
If the key is set, the module downloads the GeoIP2 database every time the controller is started. Click here to learn more about obtaining a license key.
- objectspec.hostPort
HostPortinlet settings.- booleanspec.hostPort.behindL7Proxy
Accepts all the incoming X-Forwarded-* headers and passes them to upstreams.
Caution. Make sure that requests to the ingress are sent from trusted sources when using this option. The
acceptRequestsFromparameter can help you with defining trusted sources. - integerspec.hostPort.httpPort
Port for insecure HTTP connections.
If the parameter is not set, the connection over HTTP cannot be established.
This parameter is mandatory if
httpsPortis not set.Example:
httpPort: 80 - integerspec.hostPort.httpsPort
Port for secure HTTPS connections.
If the parameter is not set, the connection over HTTPS cannot be established.
This parameter is mandatory if
httpPortis not set.Example:
httpsPort: 443 - stringspec.hostPort.realIPHeader
Sets the header field for identifying the originating IP address of a client.
This option works only if
behindL7Proxyis enabled.Default:
X-Forwarded-ForExample:
realIPHeader: CF-Connecting-IP
- objectspec.hostPortWithProxyProtocol
A section of parameters of the
HostPortWithProxyProtocolinlet.- integerspec.hostPortWithProxyProtocol.httpPort
Port for insecure HTTP connections.
If the parameter is not set, the connection over HTTP cannot be established.
This parameter is mandatory if
httpsPortis not set.Example:
httpPort: 80 - integerspec.hostPortWithProxyProtocol.httpsPort
Port for secure HTTPS connections.
If the parameter is not set, the connection over HTTPS cannot be established.
This parameter is mandatory if
httpPortis not set.Example:
httpsPort: 443
- objectspec.hstsOptions
Options for HTTP Strict Transport Security.
- booleanspec.hstsOptions.includeSubDomains
If this optional parameter is specified, this rule applies to all of subdomains as well.
Default:
false - stringspec.hstsOptions.maxAge
The time, in seconds, that the browser should remember that a site is only to be accessed using HTTPS.
Default:
31536000Pattern:
^[1-9][0-9]*$Example:
maxAge: '31536000' - booleanspec.hstsOptions.preload
Add your site to preload list to enforce to use SSL/TLS connections on your site.
Default:
false
- stringspec.ingressClass
The name of the Ingress class to use with the NGINX Ingress controller.
Using this option, you can create several controllers to use with a single ingress
Caution. If you set it to “nginx”, then Ingress resources lacking the
kubernetes.io/ingress.classannotation orspec.ingressClassNamefield will also be handled.Default:
nginxPattern:
^[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$Example:
ingressClass: nginx - stringspec.inlet
Required value
The way traffic from the external network is routed to the cluster. Once you have set the method, you cannot change it later.
LoadBalancer— Ingress controller is deployed and the service ofLoadBalancertype is provisioned.LoadBalancerWithProxyProtocol— Ingress controller is deployed and the service ofLoadBalancertype is provisioned. Ingress controller uses proxy-protocol to get a real IP of the client.-
HostPort— Ingress controller is deployed and available through nodes’ ports viahostPort;Settings are required in spec.HostPort.
-
HostPortWithProxyProtocol— Ingress controller is deployed and available through nodes’ ports via `hostPort, it uses proxy-protocol to get a real IP of the client;Settings are required in spec.HostPortWithProxyProtocol.
Caution. Make sure that requests to the Ingress are sent from trusted sources when using this inlet. The acceptRequestsFrom parameter can help you with defining trusted sources.
-
HostWithFailover— installs two ingress controllers, the primary and the backup one. The primary controller runs in a hostNetwork. If the pods of the primary controller are not available, the traffic is routed to the backup one;Caution. There can be only one controller with this inlet type on a host.
Caution. The following ports must be available on the node: 80, 81, 443, 444, 4207, 4208.
Caution. To change inlet, remove the iptables rules and restart the
kube-proxypods or reboot the nodes hosting Ingress controllers.Caution. This inlet cannot be used if the
enableIstioSidecarparameter is enabled.
Allowed values:
LoadBalancer,LoadBalancerWithProxyProtocol,HostPort,HostPortWithProxyProtocol,HostWithFailover - booleanspec.legacySSL
Enable outdated versions of the TLS protocol and cipher suites.
Enables the following TLS protocol versions:
TLSv1,TLSv1.1,TLSv1.2,TLSv1.3.Enables the following combinations of cipher suites in order from the strongest to the weakest:
ECDHE-ECDSA-AES256-GCM-SHA384,ECDHE-RSA-AES256-GCM-SHA384,ECDHE-ECDSA-CHACHA20-POLY1305,ECDHE-RSA-CHACHA20-POLY1305,ECDHE-ECDSA-AES128-GCM-SHA256,ECDHE-RSA-AES128-GCM-SHA256,ECDHE-ECDSA-AES256-SHA384,ECDHE-RSA-AES256-SHA384,ECDHE-ECDSA-AES128-SHA256,ECDHE-RSA-AES128-SHA256,ECDHE-ECDSA-AES256-SHA,ECDHE-RSA-AES256-SHA,ECDHE-ECDSA-AES128-SHA,ECDHE-RSA-AES128-SHA,AES256-GCM-SHA384,AES128-GCM-SHA256,AES256-SHA256,AES128-SHA256,AES256-SHA,AES128-SHA.By default, only
TLSv1.2andTLSv1.3with the newest cipher suites are enabled. - objectspec.loadBalancer
Not required value.
A section of parameters of the
LoadBalancerinlet.- objectspec.loadBalancer.annotations
Annotations to assign to the service for flexible configuration of the load balancer.
Caution. The module does not take into account the specifics of setting annotations in different clouds. Note that you will need to recreate
IngressNginxController(or create a new controller and then delete the old one) if annotations to provision a load balancer are only used when creating the service. - booleanspec.loadBalancer.behindL7Proxy
Accepts all the incoming
X-Forwarded-*headers and passes them to upstreams.Caution. Make sure that requests to the Ingress controller are sent from trusted sources when using this option.
- stringspec.loadBalancer.loadBalancerClass
The LoadBalancer class (it is passed to the
spec.loadBalancerClassparameter of the provisioned service of the LoadBalancer type). - stringspec.loadBalancer.realIPHeader
Sets the header field for identifying the originating IP address of a client.
This option works only if
behindL7Proxyis enabled.Default:
X-Forwarded-ForExample:
realIPHeader: CF-Connecting-IP - array of stringsspec.loadBalancer.sourceRanges
IP ranges (CIDR) that are allowed to access the load balancer.
Caution. The cloud provider may not support this option or ignore it. Providers supporting the option: AWS, GCP, Azure. Providers ignoring the option: YandexCloud. For other cloud providers, the behavior may depend on the specifics of the cloud implementation. Testing is recommended before use of the option in production.
- stringElement of the array
Pattern:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
- objectspec.loadBalancerWithProxyProtocol
Not required value.
A section of parameters of the
LoadBalancerWithProxyProtocolinlet.- objectspec.loadBalancerWithProxyProtocol.annotations
Annotations that will be passed to service with type load balancer to configure it.
Caution. The module does not take into account the specifics of setting annotations in different clouds. Note that you will need to recreate
IngressNginxController(or create a new controller and then delete the old one) if annotations to provision a load balancer are only used when creating the service. - stringspec.loadBalancerWithProxyProtocol.loadBalancerClass
The LoadBalancer class (it is passed to the
spec.loadBalancerClassparameter of the provisioned service of the LoadBalancer type). - array of stringsspec.loadBalancerWithProxyProtocol.sourceRanges
IP ranges (CIDR) that are allowed to access the load balancer.
Caution. The cloud provider may not support this option or ignore it. Providers supporting the option: AWS, GCP, Azure. Providers ignoring the option: YandexCloud. For other cloud providers, the behavior may depend on the specifics of the cloud implementation. Testing is recommended before use of the option in production.
- stringElement of the array
Pattern:
^(([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9]{2}|2[0-4][0-9]|25[0-5])(\/(3[0-2]|[1-2][0-9]|[0-9]))$
- integerspec.maxReplicas
LoadBalancer and LoadBalancerWithProxyProtocol controller’s Horizontal Pod Autoscaler maximum replicas count.
Default:
1Allowed values:
1 <= X - integerspec.minReplicas
LoadBalancer and LoadBalancerWithProxyProtocol controller’s Horizontal Pod Autoscaler minimum replicas count.
Default:
1Allowed values:
1 <= X - objectspec.nodeSelector
The same as in the pods’
spec.nodeSelectorparameter in Kubernetes.If the parameter is omitted or
false, it will be determined automatically.Format: the standard
nodeSelectorlist. Instance pods inherit this field as is. - objectspec.resourcesRequests
Max amounts of CPU and memory resources that the pod can request when selecting a node (if the VPA is disabled, then these values become the default ones).
- stringspec.resourcesRequests.mode
Required value
The mode for managing resource requests.
Default:
VPAAllowed values:
VPA,Static - objectspec.resourcesRequests.static
Static mode settings.
- stringspec.resourcesRequests.static.cpu
CPU requests.
Default:
350m - stringspec.resourcesRequests.static.memory
Memory requests.
Default:
500Mi
- objectspec.resourcesRequests.vpa
Parameters of the vpa mode.
- objectspec.resourcesRequests.vpa.cpu
CPU-related parameters.
- stringspec.resourcesRequests.vpa.cpu.max
Maximum allowed CPU requests.
Default:
50m - stringspec.resourcesRequests.vpa.cpu.min
Minimum allowed CPU requests.
Default:
10m
- objectspec.resourcesRequests.vpa.memory
The amount of memory requested.
- stringspec.resourcesRequests.vpa.memory.max
Maximum allowed memory requests.
Default:
200Mi - stringspec.resourcesRequests.vpa.memory.min
Minimum allowed memory requests.
Default:
50Mi
- stringspec.resourcesRequests.vpa.mode
The VPA usage mode.
Default:
InitialAllowed values:
Initial,Auto
- array of objectsspec.tolerations
The same as in the pods’
spec.tolerationsparameter in Kubernetes;If the parameter is omitted or
false, it will be determined automatically.Format: the standard toleration list. Instance pods inherit this field as is.
- stringspec.tolerations.effect
Allowed values:
NoSchedule,PreferNoSchedule,NoExecute - stringspec.tolerations.key
- stringspec.tolerations.operator
Default:
EqualAllowed values:
Exists,Equal - integerspec.tolerations.tolerationSeconds
- stringspec.tolerations.value
- booleanspec.underscoresInHeaders
Determines whether underscores are allowed in headers. Learn more….
This tutorial sheds light on why you should not enable it without careful consideration.
Default:
false - booleanspec.validationEnabled
Enable ingress validation admission.
Default:
true - integerspec.waitLoadBalancerOnTerminating
The number of seconds before the /healthz location will start to return a 500 code when the pod enters the Terminating state. This parameter has default values:
- 0s - for HostWithFailover
- 60s - for HostPort and HostPortWithProxyProtocol
- 120s - for LoadBalancer and LoadBalancerWithProxyProtocol