Ingress-NGINX

The source code and default configuration of the Building Block is available in our GitLab.

Adding the Building Block

Add the directory syseleven-ingress-nginx to your control repository. Add a .gitlab-ci.yml to the directory with the following content:

include:
  - project: syseleven/building-blocks/helmfiles/ingress-nginx
    file: JobDevelopment.yaml
    ref: 5.1.3
  - project: syseleven/building-blocks/helmfiles/ingress-nginx
    file: JobStaging.yaml
    ref: 5.1.3
  - project: syseleven/building-blocks/helmfiles/ingress-nginx
    file: JobProduction.yaml
    ref: 5.1.3

Remove environments you are not using by removing their include.

Required configuration

No configuration is required.

Customize the default backend

The Building Block delivers a custom default backend. This default backend is used for all URLs the ingress-controller does not understand (i.e., all the requests that are not mapped with an Ingress) or for requests that got a 502, 503 or 504 from the upstream backend server. This default backend delivers configurable static pages while still maintaining the original error code.

You can customize the default backend by overriding maintenancePages in values-ingress-nginx-extension.yaml. See the values.yaml for the default maintenance page.

Here is an example on how to configure different error pages for different error codes.

maintenancePages:
  404.html: |-
    <!DOCTYPE html>
    <html>
      <head>
        <title>Error</title>
      </head>
      <body>
        ...
      </body>
    </html>
  418.html: |-
    ...
  429.html: |-
    ...
  500.html: |-
    ...
  502.html: |-
    ...
  503.html: |-
    ...
  523.html: |-
    ...

Monitoring

Additional alertrules

  • None

Additional Grafana dashboards

  • Request Handling Performance
    • An overview performance metrics of handled requests by the ingress-controller
  • NGINX Ingress controller
    • An overview of overall metrics collected by the ingress-controller (e.g. request volume, network pressure, ingress success rate, ingress throughput/requests, ssl certificates, ...)

Scale Setup

  • Choose between kind Deployment(default and recommended) or kind DaemonSet
  • Static replicas - you can statically configure the amount of replicas you need (when using the Deployment kind)
  • Autoscale replicas - you can configure the horizontal pod autoscaler to autoscale the ingress-nginx Deployment. See values.yaml for possible options.
  • Requests/limits for CPU/memory can be adjusted. We recommend not to set any CPU limits to avoid throttling the ingress-controller to avoid slowing down the entire application experience.