Zammad-Helm Custom ingressClassName

Title: Zammad-Helm add Custom ingressClassName e.g. “internal”

  1. What is your original issue/pain point you want to solve?
    We use a custom ingressClassName called internal in our Kubernetes cluster, which is not officially defined by the standard Zammad chart. The current deployment setup does not support this custom class name correctly.

  2. Which are one or two concrete situations where this problem hurts the most?

  • When deploying Zammad in our internal environment, the ingress is not created or functions incorrectly due to the unsupported ingressClassName.
  • This leads to broken or inaccessible services during internal testing or staging deployments, where the internal ingress class is required.
  1. Why is it not solvable with the Zammad standard?
    The Zammad Helm chart is not designed to handle custom ingressClassName values that are not officially defined. It lacks the flexibility to override or extend the ingress configuration in a way that supports non-standard ingress class setups like ours. Additionally, there is a ConfigMap managed by the chart that contains ingress-related settings. Since this ConfigMap would be overwritten on every upgrade or change, I would have to manually adjust and maintain it repeatedly, which is error-prone and not maintainable in the long term.

  2. What is your expectation/what do you want to achieve?
    I want to be able to define and use our custom ingressClassName: internal directly within the Helm deployment, without the need to manually patch resources afterward. Ideally, the chart should allow providing a full custom ingress manifest and optionally override the default ConfigMap or allow injecting custom values cleanly without modifying the upstream chart.

I created my own subchart with the following ingress.yaml:

---
kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
  name: zammad-test
  labels:
    app.kubernetes.io/managed-by: "Helm"
  annotations:
    nginx.ingress.kubernetes.io/proxy-body-size: "50m"
spec:
  ingressClassName: internal
  tls:
    - hosts:
        - xxx.xxx.de
      secretName: xxx.xxx.de
  rules:
    - host: xxx.xxx.de
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: zammad-nginx
                port:
                  number: 8080

Your Zammad environment:

  • Average concurrent agent count: 3
  • Average tickets a day: 50
  • What roles/people are involved: IT Department