Skip to content

tcp-balancer: HAProxy 3.3 breaks due to frontend/backend name collision #1966

Closed

Description

Problem

The tcp-balancer app fails to start after HAProxy was updated to version 3.3. The app uses haproxy:latest which now pulls a version that no longer supports having frontend and backend with identical names.

Error Message

[ALERT]    (8) : config : Parsing [/usr/local/etc/haproxy/haproxy.cfg:18]: backend 'http' has the same name as frontend 'http' declared at /usr/local/etc/haproxy/haproxy.cfg:12. This is no longer supported as of 3.3. Please rename one or the other.

Root Cause

The configmap template in packages/apps/tcp-balancer/templates/configmap.yaml creates frontend/backend pairs with matching names:

  • frontend http / backend http
  • frontend https / backend https
  • frontend kubernetes / backend kubernetes
  • frontend talos / backend talos

This was valid in HAProxy < 3.3 but is now a breaking error.

Suggested Fix

  1. Rename backends to use a suffix (e.g., backend http_backend, backend https_backend, etc.)
  2. Pin the image version to avoid unexpected breakage from :latest (e.g., haproxy:2.9 or haproxy:3.2)

Option 2 is recommended as a best practice regardless—using :latest in production workloads can lead to unexpected breakage like this.

Affected Files

  • packages/apps/tcp-balancer/templates/configmap.yaml - HAProxy config template
  • packages/apps/tcp-balancer/templates/deployment.yaml - Image reference (haproxy:latest)

Activity

  1. dosubot commented on Feb 3, 2026

    @dosubot

    The tcp-balancer app fails with HAProxy 3.3 because the config template defines frontend/backend pairs with identical names (like frontend http / backend http), which is no longer allowed in HAProxy 3.3+ and causes a startup error. The relevant config is in packages/apps/tcp-balancer/templates/configmap.yaml and the image is set to haproxy:latest in deployment.yaml, so the latest (breaking) version is always pulled.

    To fix this, rename each backend to use a unique name (for example, backend http_backend instead of backend http) in the configmap template, and update the corresponding default_backend references in the frontend sections. Also, pin the HAProxy image in the deployment template to a known working version (such as haproxy:2.9 or haproxy:3.2) instead of using :latest to avoid future unexpected breakage. This approach is supported by both the code and a relevant GitHub issue discussing explicit version pinning for HAProxy in managed apps like tcp-balancer (source, config example, deployment example).

    To reply, just mention @dosu.


    How did I do? Good | Irrelevant | Incorrect | Verbose | Hallucination | Report 🐛 | Other

    Chat with Dosu Open in Cursor Join Discord Share on X

  2. added
    kind/bugCategorizes issue or PR as related to a bug
    on Feb 3, 2026
  3. added
    area/networkingIssues or PRs related to networking (ingress, gateway, vpn, metallb, kube-ovn)
    priority/important-soonMust be staffed and worked on either currently, or very soon, ideally in time for the next release
    triage/acceptedIndicates an issue is ready to be actively worked on
    on Apr 27, 2026
  4. added
    lifecycle/staleDenotes an issue or PR has remained open with no activity and has become stale
    and removed on Aug 3, 2026
  5. yankawai commented on Sep 22, 2026

    @yankawai
    Contributor

    We hit the same failure on Cozystack 1.6.1: haproxy:latest resolves to 3.4.4 now and the pod dies at config parse on the frontend/backend name collision. #2321 has the right rename but has been idle since July, so #4366 carries it forward with the image pinned to the chart appVersion, the empty-whitelist guard and the unittest suite from that review.

  6. added a commit that references this issue on Sep 23, 2026
    12cc48d
  7. added a commit that references this issue on Oct 4, 2026
    cc9e476
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    area/networkingIssues or PRs related to networking (ingress, gateway, vpn, metallb, kube-ovn)kind/bugCategorizes issue or PR as related to a buglifecycle/staleDenotes an issue or PR has remained open with no activity and has become stalepriority/important-soonMust be staffed and worked on either currently, or very soon, ideally in time for the next releasetriage/acceptedIndicates an issue is ready to be actively worked on

    Type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions