safesoftware/helm-charts

Expose ingressClassName due to deprecation of kubernetes.io/ingress.class annotation

Closed this issue · 2 comments

BWibo commented

I am running FME Server in a local bare metal k8s cluster. I use two Ingress controllers for applications only available from the internal network (like FME Server, ingressClassName=internal-nginx) and applications available to public internet (ingressClassName=nginx).

As of Kubernetes v1.22+ the kubernetes.io/ingress.class annotation is depracted in favor of the ingressClassName spec, as described here.

It would be very helpful to expose the ingressClassName in values.yml so I can set FME to use the internal IngressController, e.g.:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: my-ingress
spec:
  ingressClassName: internal-nginx
  ...

Example FME Server values.yml.

# ...
# ...
disableTLS: false
  ingress:
    # general annotations are applied to all ingresses
    general:
      # Pass this on to all Ingress for k8s >v1.22 
      ingressClassName: "internal-nginx"
      annotations:
       # Not working for k8s >v1.22 
       # kubernetes.io/ingress.class: "nginx"
        nginx.ingress.kubernetes.io/proxy-body-size: "0"
        nginx.ingress.kubernetes.io/affinity: cookie
        nginx.ingress.kubernetes.io/session-cookie-name: fmeserver-ingress
        nginx.ingress.kubernetes.io/session-cookie-hash: md5
    # annotations on the default web traffic ingress
    web:
# ...
# ...
# ...

Thanks so much for the report! Yes, we should definitely update this. I will file a ticket internally at Safe to track this and will update here when it is implemented.

The fmeserver-2023-0 chart now has the ingress class name expsosed as a parameter ingress.general.ingressClassName.