{
  "id": 18051811,
  "title": "We Dropped Harbor for Large Images. A Traefik Default Was the Cause.",
  "url": "https://urgent.news/2026/11/04/we-dropped-harbor-for-large-images-a-traefik-default-was-the-cause",
  "topic": "tech",
  "section": "Tech",
  "published": "2026-11-04T01:53:18.000Z",
  "source": {
    "name": "Dev.to",
    "slug": "dev-to",
    "url": "https://dev.to/crza5/we-dropped-harbor-for-large-images-a-traefik-default-was-the-cause-1nn"
  },
  "original_language": "en",
  "account": "The report details a technical issue faced during the migration of large image pushes from Harbor to Traefik in a newly established bare-metal cluster. The cluster utilized Cloudflare Tunnel for public accessibility, with Traefik acting as the ingress-nginx replacement, which was retired in March 2026. Initial upon migration, large images (over 100 MB) experienced intermittent failures during the push to Harbor, failing to meet the 60-second readTimeout set by Traefik's default configuration. This default covered the entire request, including the body, and cut off parts that exceeded this limit, resulting in 504 Gateway Timeout errors. The problem was elusive as metrics showed no anomalies. However, after enabling detailed tracing in Traefik and Cloudflare, it was discovered that the failures were consistent with the readTimeout settings leading to partial uploads. The resolution involved adjusting the Traefik entrypoint's readTimeout to 10 minutes (10m) for both web and websecure ports. This adjustment successfully allowed the large image pushes through without interruption, rectifying the issue. The incident highlights the importance of being aware of default timeout settings when adopting new components and the value of using traces to diagnose complex network issues.",
  "summary": "I stopped pushing large images to Harbor because the pushes kept failing. The cause was a default in Traefik, which I had adopted only because ingress-nginx was retired. It took me a while to see that, and the reason is the useful part. Every metric I had said the system was healthy. The setup The cluster is new and runs on bare metal. Only HTTP and HTTPS need to be reachable from outside.…",
  "key_points": [
    "Large images (over 100 MB) failed to push due to Traefik's default readTimeout",
    "60-second readTimeout cut off parts of large image uploads, causing 504 errors",
    "Adjusting Traefik entrypoint's readTimeout to 10 minutes resolved large image pushes"
  ],
  "editors_take": "Relying on default ingress configurations during infrastructure migrations creates hidden bottlenecks that can disrupt large-scale data transfers and necessitate deep network tracing to resolve.",
  "illustration": null,
  "coverage": {
    "outlets": 1,
    "also_reported_by": []
  },
  "ai_generated": true,
  "disclaimer": "Summaries, key points and the editor’s take are written by software from other outlets’ reporting and may contain errors — always check the linked original."
}