#7721·headlamp

frontend: Ingress list Path column returns empty string preventing search/sort, and hosts are squashed together

Author: harshitttt077Created Sep 19, 2026Updated Sep 19, 2026
Labelskind/bug

Describe the bug

In the Ingresses list view (/c/:cluster/ingresses), there are multiple related issues in the table columns:

  1. Path search and sorting is broken: The Path column has getValue: () => '', always returning an empty string. Because of this, users cannot filter, search, or sort ingresses by path or backend service name in the table filter. Typing an existing path or service name produces 0 results.
  2. Column ID mismatch: The column labeled Path has id: 'ports', which is an inaccurate leftover.
  3. Hosts squashed together: The Hosts column's getValue uses .join('') with no delimiter, squashing multiple hostnames into a single string (e.g. foo.combar.com instead of foo.com, bar.com), which affects search matching and text copying.
  4. Unsafe property access in RulesDisplay: In frontend/src/components/ingress/List.tsx:37, backend.service.port.number is accessed without optional chaining, which can throw an unhandled TypeError if backend.service.port is omitted or undefined.

Code Reference

In frontend/src/components/ingress/List.tsx:81-97:

typescript
        {
          id: 'hosts',
          label: t('Hosts'),
          getValue: ingress =>
            ingress
              .getRules()
              .map(r => r.host ?? '*')
              .join(''),
          render: ingress => (
            <LabelListItem labels={ingress.getRules().map(({ host }) => host || '*')} />
          ),
        },
        {
          id: 'ports',
          label: t('translation|Path'),
          getValue: () => '',
          render: (ingress: Ingress) => <RulesDisplay ingress={ingress} />,
        },

Source: kubernetes-sigs/headlamp