<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0" xmlns:media="http://search.yahoo.com/mrss/">
    <channel>
        <title><![CDATA[Unified Gateway for VMs, Containers, and AI | Traefik Labs]]></title>
        <description><![CDATA[Traefik is the solution to fragmented operations caused by the VMware exodus, Ingress NGINX retirement, API sprawl, and Enterprise AI adoption.]]></description>
        <link>https://traefik.io</link>
        <image>
            <url>https://traefik.io/favicon.svg</url>
            <title>Unified Gateway for VMs, Containers, and AI | Traefik Labs</title>
            <link>https://traefik.io</link>
        </image>
        <generator>NextJS</generator>
        <lastBuildDate>Tue, 14 Jul 2026 04:35:40 GMT</lastBuildDate>
        <atom:link href="https://traefik.io/rss.xml" rel="self" type="application/rss+xml"/>
        <ttl>60</ttl>
        <atom:link/>
        <item>
            <title><![CDATA[Ten Years In, Traefik is Having Its Biggest Year Ever]]></title>
            <description><![CDATA[Traefik just reached 1,000 contributors on GitHub and 3.5 billion pulls of the official Docker image. Now, after 10 years of growth, it's only accelerating.]]></description>
            <link>https://traefik.io/traefik-contributor-count-and-adoption-are-accelerating</link>
            <guid isPermaLink="true">https://traefik.io/traefik-contributor-count-and-adoption-are-accelerating</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[News]]></category>
            <category><![CDATA[Traefik Proxy]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Thu, 09 Jul 2026 14:30:58 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/07/10-years-blog_no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1124&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/07/10-years-blog_no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/07/10-years-blog_no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/07/10-years-blog_no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2026/07/10-years-blog_no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;This week, Traefik crossed two milestones at once: &lt;strong&gt;1,000 contributors&lt;/strong&gt; on GitHub and &lt;strong&gt;3.5 billion pulls&lt;/strong&gt; of the official Docker image. And it happened as the project enters its second decade.&lt;/p&gt;&lt;p&gt;I would love to tell you this is a story about longevity. It isn&apos;t. 2026 is on pace to be the most active year in Traefik&apos;s history, with more pull requests merged than in any year before. Ten years in, the project is not aging gracefully. It is accelerating. And the reasons why say a lot about where cloud native infrastructure is heading.&lt;/p&gt;&lt;h2 id=&quot;from-cloud-native-to-claude-native&quot;&gt;From Cloud Native to Claude Native&lt;/h2&gt;&lt;p&gt;I wrote Traefik&apos;s first lines of code in 2015, the year the cloud native movement got its name. Docker was two years old. Kubernetes had just hit 1.0. The CNCF was founded that summer. Everyone was suddenly running dozens of containers that appeared and disappeared in seconds, and the reverse proxies of the day, built for a world of static config files and graceful reloads, simply could not keep up.&lt;/p&gt;&lt;p&gt;Traefik was built on one idea: &lt;strong&gt;infrastructure should configure itself&lt;/strong&gt;. Point Traefik at your orchestrator, and it discovers your services, builds its routing table, and updates it in real time as containers come and go. No templates, no config generation, no reload. In 2015 that was a radical idea. Today it is table stakes, and I am proud that Traefik helped make it so.&lt;/p&gt;&lt;p&gt;That first year, fourteen people committed code to the repository.&lt;/p&gt;&lt;p&gt;The graveyard of infrastructure software is full of projects that solved one era&apos;s problem perfectly and then stopped. What has kept Traefik alive is that the founding idea, dynamic, self-configuring traffic management, turned out to apply to every wave that followed.&lt;/p&gt;&lt;p&gt;When the industry consolidated on Kubernetes, Traefik became one of the most widely deployed ingress controllers in the world, and the platforms voted with their defaults. Rancher (SUSE) made Traefik the out-of-the-box ingress of K3s from the beginning, Nutanix standardized its Kubernetes Platform on it years ago, and Canonical MicroK8s now ships it as the default ingress controller on every cluster. The wave is still growing: RKE2 adopts Traefik as its default starting with v1.36 currently shipping, and since the retirement of Ingress NGINX, IBM Cloud, OVHcloud, TIBCO and others &lt;a href=&quot;https://traefik.io/press/traefik-becomes-the-de-facto-standard-for-kubernetes-networking-as-major-platform-vendors-migrate-from-ingress-nginx?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;have each independently selected Traefik&lt;/a&gt; as their strategic ingress and Gateway API solution. When platform vendors who compete with each other all land on the same proxy, that is not a trend; it is a standard.&lt;/p&gt;&lt;p&gt;When organizations realized their ingress point was actually their API entry point, we built &lt;a href=&quot;https://traefik.io/traefik-hub?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;strong&gt;Traefik Hub&lt;/strong&gt;&lt;/a&gt;: full API management on top of the proxy, with governance, versioning, access control, and a developer portal, running on the same runtime that already handled the traffic.&lt;/p&gt;&lt;p&gt;When LLMs reached production infrastructure, with their fragmented SDKs, scattered credentials, and zero observability, we applied the same playbook to AI traffic. The &lt;a href=&quot;https://traefik.io/solutions/ai-gateway?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;strong&gt;Traefik AI Gateway&lt;/strong&gt;&lt;/a&gt; gives teams one secure, observable entry point to every model provider. And as agentic AI took off, we extended it with an &lt;a href=&quot;https://traefik.io/solutions/mcp-gateway?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;strong&gt;MCP Gateway&lt;/strong&gt;&lt;/a&gt;, bringing the same governance to the traffic between agents and tools.&lt;/p&gt;&lt;p&gt;Today, this converges into a single product vision: a &lt;a href=&quot;https://traefik.io/blog/why-choose-traefik?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;strong&gt;unified gateway for VMs, containers, and AI&lt;/strong&gt;&lt;/a&gt;. One runtime, one control plane, wherever your workloads live and whatever they talk to. And moving across that spectrum is seamless by design: start with open source Traefik Proxy, turn on Hub&apos;s API management, add the AI Gateway, and each step is a configuration change on the runtime you already operate, never a replatform. Your routing rules, middlewares, and operational knowledge carry over intact. Container router, Kubernetes ingress, API management, AI and MCP gateway: four eras, one architecture, one community.&lt;/p&gt;&lt;h2 id=&quot;35-billion-pulls-in-perspective&quot;&gt;3.5 Billion Pulls, in Perspective&lt;/h2&gt;&lt;p&gt;Ten years of crossing eras compounds into a number: 3.5 billion pulls of the official Docker image. To put it in context, I went through the pull counts of Docker&apos;s official images, the curated library that includes the most foundational software in our industry. The handful of images that sit above Traefik are the bedrock of modern computing: operating system bases like Alpine and Ubuntu, language runtimes like Python and Node, and the major open source databases.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Traefik is one of the fifteen most downloaded official images on Docker Hub&lt;/strong&gt;, standing shoulder to shoulder with the operating systems, languages, and databases the entire industry runs on.&lt;/p&gt;&lt;p&gt;Every one of those pulls is a decision to put Traefik on the path of production traffic. That is not a vanity metric. That is trust, compounded daily for ten years.&lt;/p&gt;&lt;h2 id=&quot;the-most-active-year-in-traefiks-history&quot;&gt;The Most Active Year in Traefik&apos;s History&lt;/h2&gt;&lt;p&gt;Adoption tells you about a project&apos;s past. Development activity tells you about its future.&lt;/p&gt;&lt;p&gt;In 2025, the community merged nearly 500 pull requests. In the first six months of 2026 alone, it merged &lt;strong&gt;470, a pace of roughly 940 for the year: almost double last year, and the highest sustained activity in the project&apos;s history&lt;/strong&gt;.&amp;nbsp;&lt;/p&gt;&lt;p&gt;A ten-year-old project setting all-time activity records is not normal. It is happening because of two deliberate bets.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The first bet: making the Ingress NGINX migration a non-event.&lt;/strong&gt; When the Kubernetes SIG Network announced the retirement of Ingress NGINX, millions of clusters were suddenly on a countdown to running unmaintained software. Rather than telling users to rewrite everything, we built a &lt;a href=&quot;https://traefik.io/blog/traefik-proxy-3-7-is-available?ref=containous.ghost.io&quot;&gt;&lt;u&gt;native NGINX Ingress provider into Traefik&lt;/u&gt;&lt;/a&gt;: it reads existing Ingress resources and their nginx.ingress.kubernetes.io annotations directly, more than 80 of them, with no conversion and no YAML rewriting. That engineering effort, and the wave of adopters it brought, is one of the engines behind the record numbers above. New users file issues, contribute fixes, and push the project forward.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The second bet: going all-in on Gateway API.&lt;/strong&gt; We didn&apos;t just implement the spec; we invested in shaping it, contributing to the specification work and its extension into AI and LLM routing. Gateway API is the future of Kubernetes networking, and Traefik is one of the few projects where you can run legacy Ingress, NGINX annotations, and Gateway API side by side, on the same instance, and migrate at your own pace. Being at the frontier of the spec means being where the ecosystem&apos;s energy is, and that energy shows up directly in our repository.&lt;/p&gt;&lt;p&gt;Activity follows relevance. The numbers are at an all-time high because, ten years in, Traefik is solving the two most pressing traffic problems in Kubernetes today.&lt;/p&gt;&lt;h2 id=&quot;1000-contributors-and-two-new-maintainers&quot;&gt;1,000 Contributors, and Two New Maintainers&lt;/h2&gt;&lt;p&gt;The milestone that means the most to me is not the pulls.&lt;/p&gt;&lt;p&gt;Fourteen people wrote code for Traefik in 2015. This month, the &lt;a href=&quot;https://github.com/traefik/traefik/graphs/contributors?all=1&amp;ref=containous.ghost.io&quot;&gt;&lt;u&gt;one thousandth contributor&lt;/u&gt;&lt;/a&gt; landed a change in traefik/traefik. Docker pulls measure adoption; contributors measure ownership. A thousand people own a piece of this project.&lt;/p&gt;&lt;p&gt;To every one of the 1,000, thank you. You built one of the most downloaded pieces of infrastructure software on the planet.&lt;/p&gt;&lt;p&gt;This week, I had the honor of welcoming two new maintainers: &lt;strong&gt;Kangmin Kim&lt;/strong&gt; (&lt;a href=&quot;https://github.com/amazon7737?ref=containous.ghost.io&quot;&gt;&lt;u&gt;@amazon7737&lt;/u&gt;&lt;/a&gt;), from Busan, South Korea, and &lt;strong&gt;Nándor Kollár&lt;/strong&gt; (&lt;a href=&quot;https://github.com/nandorKollar?ref=containous.ghost.io&quot;&gt;&lt;u&gt;@nandorKollar&lt;/u&gt;&lt;/a&gt;), from Munich, Germany. Both earned it through high-quality contributions.&lt;/p&gt;&lt;p&gt;1,000 contributors, 3.5 billion pulls, and, a record nobody asked me to announce, our highest year ever for CVE reports. You do not get the first two without the third: security researchers only audit software the world actually runs. So, thank you Claude, I suppose. Jokes aside, vulnerabilities being found, and more importantly quickly patched, are the sign of a healthy project.&lt;/p&gt;&lt;h2 id=&quot;the-next-decade-starts-now&quot;&gt;The Next Decade Starts Now&lt;/h2&gt;&lt;p&gt;There has never been a better moment to jump in. The project is moving faster than at any point in its ten years, and the best time to join a community is when it is accelerating. We have already surpassed the 1,000 contributor mark since I began writing this blog post, so if you&apos;ve ever thought about contributing to open source, contributor number 1,009 is a &lt;a href=&quot;https://github.com/traefik/traefik/issues?q=is%3Aissue%20state%3Aopen%20label%3Acontributor%2Fgood-first-issue&amp;ref=containous.ghost.io&quot;&gt;&lt;u&gt;good first issue&lt;/u&gt;&lt;/a&gt; away.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Ten years ago, Traefik was a bet that infrastructure should configure itself. A thousand contributors and 3.5 billion pulls later, the bet keeps paying off, and the pace keeps rising.&lt;/p&gt;&lt;p&gt;I said this is not a story about longevity. It is a story about momentum. And the most active year in Traefik&apos;s history is the one happening right now.&lt;/p&gt;&lt;h2 id=&quot;resources&quot;&gt;Resources&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/traefik/traefik?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik on GitHub&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://hub.docker.com/_/traefik?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik official Docker image&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/traefik/ingress-nginx-migration?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;u&gt;Ingress NGINX migration tool&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/traefik-hub-api-gateway?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik Hub and AI Gateway&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://community.traefik.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Community forum&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[What Happens If The Connection Goes Down? Lessons Learned from Anthropic's Fable 5 and Mythos 5 Going Dark]]></title>
            <description><![CDATA[A directive by the US government led to Anthropic disabling Fable 5 and Mythos 5 overnight. It's time to take AI sovereignty more seriously. Here's how.]]></description>
            <link>https://traefik.io/anthropic-fable-5-mythos-5-and-ai-sovereignty</link>
            <guid isPermaLink="true">https://traefik.io/anthropic-fable-5-mythos-5-and-ai-sovereignty</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[News]]></category>
            <category><![CDATA[Strategy]]></category>
            <category><![CDATA[AI Strategy]]></category>
            <dc:creator><![CDATA[Immánuel Fodor]]></dc:creator>
            <pubDate>Mon, 29 Jun 2026 23:54:24 GMT</pubDate>
            <content:encoded>&lt;![CDATA[
&lt;!--kg-card-begin: html--&gt;
&lt;script type=&quot;application/ld+json&quot;&gt;
{
  &quot;@context&quot;: &quot;https://schema.org&quot;,
  &quot;@type&quot;: &quot;FAQPage&quot;,
  &quot;mainEntity&quot;: [
    {
      &quot;@type&quot;: &quot;Question&quot;,
      &quot;name&quot;: &quot;Does running an open-weight model mean giving up the frontier?&quot;,
      &quot;acceptedAnswer&quot;: {
        &quot;@type&quot;: &quot;Answer&quot;,
        &quot;text&quot;: &quot;For now, partly. The strongest open model, Kimi K2.6, trails the best closed models, and the best US open model, Nemotron 3 Ultra, trails Kimi. The gap is real and far smaller than it was a year ago. For many production workloads, it is small enough that removing the external dependency is the better trade. For the few tasks that genuinely need the absolute top of the frontier, a gateway lets you route only those to a hosted model and keep everything else local.&quot;
      }
    },
    {
      &quot;@type&quot;: &quot;Question&quot;,
      &quot;name&quot;: &quot;Isn&apos;t this just a hardware problem in disguise?&quot;,
      &quot;acceptedAnswer&quot;: {
        &quot;@type&quot;: &quot;Answer&quot;,
        &quot;text&quot;: &quot;Partly, yes. A 550B model needs a serious GPU, and self-hosting trades an API bill for a hardware and operations bill. That is a real cost and worth modeling carefully. What you buy with it is continuity that no external party can revoke. Whether it is worth the spend depends on how much your product would suffer if the model went dark on a Friday afternoon.
&quot;
      }
    },
    {
      &quot;@type&quot;: &quot;Question&quot;,
      &quot;name&quot;: &quot;We already through a gateway. Are we covered?&quot;,
      &quot;acceptedAnswer&quot;: {
        &quot;@type&quot;: &quot;Answer&quot;,
        &quot;text&quot;: &quot;You are covered for the swap, which is the hard part. If your apps reach models through a gateway rather than calling providers directly, changing the model is a configuration change instead of a cross-service rewrite. The piece most setups still miss is that the model is only one of three boundaries an agent crosses. Traefik runs all three as one control plane from a single binary: the API Gateway in front of your services, the AI Gateway in front of the models, and the MCP Gateway in front of the tools agents call. Routing the model locally closes one dependency. Running the safety checks, tool authorization, and policy for all three at the same gate, on your own infrastructure, is what keeps the entire chain off the public internet.&quot;
      }
    }
  ]
}
&lt;/script&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;&lt;em&gt;A government switched off a frontier model overnight. Here is why that reframes the sovereignty argument, and why the open-weights ecosystem finally makes the alternative real.&lt;/em&gt;&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/06/what-happens-if-the-connection-goes-down_blog-no-copy-1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Graphic showing Anthropic&apos;s Fable 5 and Mythos 5 being disconnected.&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/06/what-happens-if-the-connection-goes-down_blog-no-copy-1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/06/what-happens-if-the-connection-goes-down_blog-no-copy-1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/06/what-happens-if-the-connection-goes-down_blog-no-copy-1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/06/what-happens-if-the-connection-goes-down_blog-no-copy-1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;On Friday, June 12, at 5:21 pm Eastern, Anthropic received a letter. By the time most of the US East Coast was thinking about dinner, two of the most capable AI models in commercial use, Fable 5 and Mythos 5, were gone. Disabled for every customer, worldwide, within the span of an afternoon.&lt;/p&gt;&lt;p&gt;The trigger was an &lt;a href=&quot;https://www.anthropic.com/news/fable-mythos-access?ref=containous.ghost.io&quot;&gt;&lt;u&gt;export control directive&lt;/u&gt;&lt;/a&gt; from the US government, citing national security authorities, ordering Anthropic to suspend access for any foreign national, whether inside or outside the United States, including the company&apos;s own foreign-national employees. Unable to cleanly segment access by nationality, Anthropic disabled the models for everyone. The company said it disagreed with the order and believed it was a misunderstanding. The models stayed dark anyway.&lt;/p&gt;&lt;p&gt;The shape of this matters more than the headline.&lt;/p&gt;&lt;p&gt;An outage would have ended. A price change or a deprecation notice would have come with a warning and a migration window, the kind of disruption every vendor relationship is built to absorb. This was different in kind. Someone outside your company, and outside your vendor&apos;s full control, decided that a model your product depended on would stop answering. Available to hundreds of millions of people that morning. Gone by that evening.&lt;/p&gt;&lt;p&gt;One detail makes this concrete for me in a way it might not be for a reader in San Francisco. I am a foreign national, working from Budapest, and the directive, read literally, was about people like me. The access I had at the start of my workday, under the strict terms of the order, was gone by the close of business. The reason came down to the passport I hold.&lt;/p&gt;&lt;h2 id=&quot;we-wrote-the-question-in-april-in-june-we-got-our-answer&quot;&gt;We Wrote the Question in April. In June We Got Our Answer.&lt;/h2&gt;&lt;p&gt;Two months ago, we published &lt;a href=&quot;https://traefik.io/blog/the-five-levels-of-ai-sovereignty-a-maturity-model-for-infrastructure-control?ref=containous.ghost.io&quot;&gt;&lt;u&gt;The Five Levels of AI Sovereignty&lt;/u&gt;&lt;/a&gt;, a maturity model for figuring out how much control an organization actually has over its AI infrastructure. One of the first questions we tell people to ask is blunt: &lt;em&gt;what happens if your internet connection goes down?&lt;/em&gt;&lt;/p&gt;&lt;p&gt;We meant it literally. Outages, air-gaps, and the network cable. We were thinking about availability zones and egress firewalls.&lt;/p&gt;&lt;p&gt;June 12 added a way to lose a model we hadn&apos;t explored. The connection was fine. The data center was fine. The vendor was willing. The model still went away, because the legal right to use it was revoked by someone with no stake in your uptime. Our framework has a dimension that catches this after the fact, the one we labeled vendor lock-in and escape velocity. We framed it around contracts and pricing renewals. A Friday-afternoon letter from the Commerce Department belongs in the same column, and it never occurred to us to put it there.&lt;/p&gt;&lt;p&gt;The lesson holds, sharpened. If the most capable thing in your stack is a model you do not control, your continuity is a function of decisions made in rooms you will never sit in.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-201464153180&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.546875px; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;201464153180&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJDlsjiN9t46P6gwnYzp%2B7b1jwAvo4CaSzgN%2BBRPnv5Uj88je3kVO19HSacCWOOF1RQ7YxnETXAtMnzPNOWHWZqddxHI%2FVNBabKngRhP2CQ4TJEvHlwrx%2B5xVgHkZCrytLDQidDVhdOfv7kwAPywQyTUHsH5a%2BQI68XJLrYMExmJ%2FwYqGd5Vq8xfxRaaN8TUDLYACS8FWEAy9ianZ3X%2B8d4LEo%3D&amp;webInteractiveContentId=201464153180&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;ai sovereignty cta image - square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-201464153180.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;the-reason-this-argument-was-easy-to-ignore-until-now&quot;&gt;The Reason This Argument Was Easy to Ignore Until Now&lt;/h2&gt;&lt;p&gt;For most of the last two years, the honest counterargument to all of this was capability. You could run a model locally, and it would be meaningfully worse than the hosted frontier. For many teams, the math was uneven enough that they accepted the dependency and moved on. The hosted model was simply better, and the gap was wide.&lt;/p&gt;&lt;p&gt;That calculation changed this spring, and it changed fast.&lt;/p&gt;&lt;p&gt;The strongest open-weight models in the world right now are Chinese. Moonshot&apos;s Kimi K2.6 &lt;a href=&quot;https://artificialanalysis.ai/articles/nvidia-nemotron-3-ultra-released?ref=containous.ghost.io&quot;&gt;&lt;u&gt;leads the open field&lt;/u&gt;&lt;/a&gt; on the Artificial Analysis Intelligence Index at around 54, ahead of every open competitor and inside the top tier overall. DeepSeek shipped V4 Pro and V4 Flash in April. Alibaba&apos;s Qwen 3.5 and 3.6 lines landed under permissive Apache licensing. Z.ai shipped &lt;a href=&quot;https://codingfleet.com/blog/glm-5-2-vs-deepseek-v4-pro/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;GLM-5.2 on June 13&lt;/u&gt;&lt;/a&gt;, the day after the Fable 5 order, posting the highest open-weight SWE-bench Pro coding score to date and, of note, an Anthropic-compatible API.&lt;/p&gt;&lt;p&gt;Then, on June 4, Nvidia &lt;a href=&quot;https://developer.nvidia.com/blog/nvidia-nemotron-3-ultra-powers-faster-more-efficient-reasoning-for-long-running-agents/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;released Nemotron 3 Ultra&lt;/u&gt;&lt;/a&gt;, announced days earlier at Computex. It is a 550-billion-parameter mixture-of-experts model with roughly 55 billion parameters active per token, the most capable open-weight model a US lab has shipped, scoring about 48 on the same index. Nvidia published the weights, the post-trained checkpoints, the datasets, and the training recipes. It serves over 300 tokens per second on early endpoints, several times faster than comparably sized peers, and it was built deliberately for agentic work: tool calls, structured output, long-horizon planning that holds up over many turns.&lt;/p&gt;&lt;p&gt;The gaps are real. Nemotron 3 Ultra is the best US open model, and it still trails Kimi K2.6 by several points on the index. A 550B model wants a real GPU; this is data-center hardware, not a spare workstation. Self-hosting swaps an API bill for a hardware and operations bill, and that cost is worth modeling carefully before anyone commits.&lt;/p&gt;&lt;p&gt;Here is what survives all those caveats. Each of these models can run with zero external dependency. You pull the weights once. After that, there is no API to call, no license server to phone home to, no provider in the request path, and nobody in a position to send a letter that turns the model off. The capability gap is now small enough that, for a large class of workloads, closing the dependency is worth the few benchmark points you give up.&lt;/p&gt;&lt;h2 id=&quot;the-part-where-the-gateway-earns-its-place&quot;&gt;The Part Where the Gateway Earns Its Place&lt;/h2&gt;&lt;p&gt;A swap like this only survives contact with a real codebase if the application does not know which model answered.&lt;/p&gt;&lt;p&gt;If your services call a model provider&apos;s SDK directly, switching from a hosted model to a local one means editing and redeploying every service that talks to a model. Routed through a gateway, the model becomes a setting. The address your applications send their prompts to can point at a hosted frontier model today and a self-hosted Nemotron or Kimi deployment tomorrow, and nothing downstream has to change. The application keeps speaking the same protocol. The gateway decides where the request actually lands.&lt;/p&gt;&lt;p&gt;The safety layer matters here just as much, and it is the dimension that quietly drops teams a level. If your jailbreak detection, PII redaction, and content filtering are API calls to a hosted moderation model, then your &quot;sovereign&quot; deployment has a cloud dependency baked into every single request. Move those checks to local models running behind the same gateway, and the dependency disappears. That is the &lt;a href=&quot;https://traefik.io/solutions/ai-gateway?ref=containous.ghost.io&quot;&gt;&lt;u&gt;AI Safety Architecture&lt;/u&gt;&lt;/a&gt; dimension we flagged as the one teams most often miss. After June 12, it is the one I would check first.&lt;/p&gt;&lt;p&gt;This is the same place we have been pointing to for a while. Model routing, fallback, token-cost governance, and safety are &lt;a href=&quot;https://traefik.io/blog/fixing-ai-cross-cutting-concerns-with-gateway-pattern?ref=containous.ghost.io&quot;&gt;&lt;u&gt;cross-cutting concerns&lt;/u&gt;&lt;/a&gt; that belong in the infrastructure layer rather than scattered through application code. Put them at the gate, and you can change models, run them air-gapped, and keep one audit trail across the &lt;a href=&quot;https://traefik.io/blog/the-triple-ai-security-gap?ref=containous.ghost.io&quot;&gt;&lt;u&gt;three trust boundaries&lt;/u&gt;&lt;/a&gt; where AI traffic actually crosses. None of this is new architecture invented for the occasion. The AI Gateway here is part of Traefik Hub, built on the same Traefik foundation that teams already run in front of their traffic. The &lt;a href=&quot;https://traefik.io/solutions/air-gapped-ai-and-api-management?ref=containous.ghost.io&quot;&gt;&lt;u&gt;air-gapped deployment&lt;/u&gt;&lt;/a&gt; path is the one defense and healthcare teams have been asking us about for a year. June 12 simply gave everyone else a concrete reason to care.&lt;/p&gt;&lt;h2 id=&quot;the-new-question-is-who-can-switch-you-off&quot;&gt;The New Question Is Who Can Switch You Off&lt;/h2&gt;&lt;p&gt;The sovereignty conversation has mostly been about data: where it lives, which jurisdiction&apos;s rules apply, and whether a region&apos;s name on a contract satisfies an auditor. Those questions still matter.&lt;/p&gt;&lt;p&gt;The Fable 5 directive added a different one. Can someone outside your organization turn off the model your product runs on without notice and without recourse? For a hosted frontier model, the answer is now demonstrably yes, and that someone does not have to be your vendor. For a model whose weights sit on a disk you own, behind a gateway you operate, the answer is no. That is the whole distinction, and as of this spring, it is finally buildable without surrendering so much capability that no one would choose it.&lt;/p&gt;&lt;p&gt;We built &lt;a href=&quot;https://traefik.io/blog/the-five-levels-of-ai-sovereignty-a-maturity-model-for-infrastructure-control?ref=containous.ghost.io&quot;&gt;&lt;u&gt;the maturity model&lt;/u&gt;&lt;/a&gt; to help teams find out where they really stand. If you read it in April and filed sovereignty under &quot;important, not urgent,&quot; this is the part where the second word changes.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-201464153180&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.546875px; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;201464153180&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJDlsjiN9t46P6gwnYzp%2B7b1jwAvo4CaSzgN%2BBRPnv5Uj88je3kVO19HSacCWOOF1RQ7YxnETXAtMnzPNOWHWZqddxHI%2FVNBabKngRhP2CQ4TJEvHlwrx%2B5xVgHkZCrytLDQidDVhdOfv7kwAPywQyTUHsH5a%2BQI68XJLrYMExmJ%2FwYqGd5Vq8xfxRaaN8TUDLYACS8FWEAy9ianZ3X%2B8d4LEo%3D&amp;webInteractiveContentId=201464153180&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;ai sovereignty cta image - square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-201464153180.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;frequently-asked-questions&quot;&gt;Frequently Asked Questions&lt;/h2&gt;&lt;h3 id=&quot;does-running-an-open-weight-model-mean-giving-up-the-frontier&quot;&gt;Does running an open-weight model mean giving up the frontier? &lt;/h3&gt;&lt;p&gt;For now, partly. The strongest open model, Kimi K2.6, trails the best closed models, and the best US open model, Nemotron 3 Ultra, trails Kimi. The gap is real and far smaller than it was a year ago. For many production workloads, it is small enough that removing the external dependency is the better trade. For the few tasks that genuinely need the absolute top of the frontier, a gateway lets you route only those to a hosted model and keep everything else local.&lt;/p&gt;&lt;h3 id=&quot;isnt-this-just-a-hardware-problem-in-disguise&quot;&gt;Isn&apos;t this just a hardware problem in disguise? &lt;/h3&gt;&lt;p&gt;Partly, yes. A 550B model needs a serious GPU, and self-hosting trades an API bill for a hardware and operations bill. That is a real cost and worth modeling carefully. What you buy with it is continuity that no external party can revoke. Whether it is worth the spend depends on how much your product would suffer if the model went dark on a Friday afternoon.&lt;/p&gt;&lt;h3 id=&quot;we-already-route-through-a-gateway-are-we-covered&quot;&gt;We already route through a gateway. Are we covered? &lt;/h3&gt;&lt;p&gt;You are covered for the swap, which is the hard part. If your apps reach models through a gateway rather than calling providers directly, changing the model is a configuration change instead of a cross-service rewrite. The piece most setups still miss is that the model is only one of &lt;a href=&quot;https://traefik.io/blog/the-triple-ai-security-gap?ref=containous.ghost.io&quot;&gt;&lt;u&gt;three boundaries&lt;/u&gt;&lt;/a&gt; an agent crosses. Traefik runs all three as one control plane from a single binary: the API Gateway in front of your services, the AI Gateway in front of the models, and the MCP Gateway in front of the tools agents call. Routing the model locally closes one dependency. Running the safety checks, tool authorization, and policy for all three at the same gate, on your own infrastructure, is what keeps the entire chain off the public internet.&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Service Middlewares: A New Composition Layer In Traefik v3.7]]></title>
            <description><![CDATA[What do you do when you need to attach middleware to select branches of mirrored backends or canary deployments? Use service-layer middlewares, of course!]]></description>
            <link>https://traefik.io/traefik-v3-7-service-middlewares</link>
            <guid isPermaLink="true">https://traefik.io/traefik-v3-7-service-middlewares</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[Traefik Proxy]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <dc:creator><![CDATA[Simon Delicata]]></dc:creator>
            <pubDate>Tue, 09 Jun 2026 21:46:49 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/06/service-middleware-blog-image_no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/06/service-middleware-blog-image_no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/06/service-middleware-blog-image_no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/06/service-middleware-blog-image_no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/06/service-middleware-blog-image_no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;For most of Traefik’s existence, every middleware has been attached to a router. That model works well for what it was built for: access control, rate limiting, CORS, redirects—things that describe the route’s policy. But some transformations have nothing to do with the route. They exist because a backend has its own contract, and every request reaching that backend needs to honor it. With one router pointing to one dedicated service, you can fudge that by hanging backend-contract middlewares off the router. The model breaks the moment a service is shared by several routers, or composed from several backends.&lt;/p&gt;
&lt;p&gt;The composite case makes this structural. As soon as you reach for composite Traefik services (e.g., weighted splits for canary deployments, mirroring for shadow validation, and failover between heterogeneous upstreams) a single router middleware can no longer express what you need. If you want to add a header to the canary branch only, for example, a router middleware applies to both. Or maybe you want to strip credentials from mirrored traffic, but your router middleware would strip them from the primary too. What if you want each side of a failover to carry its own upstream conventions, but there&apos;s only one middleware chain and it runs before the service selection.&lt;/p&gt;
&lt;p&gt;These aren’t edge cases you can work around with better routing rules. They’re things the router-middleware model simply cannot express.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://traefik.io/blog/traefik-proxy-3-7-is-available?ref=containous.ghost.io&quot;&gt;Traefik v3.7&lt;/a&gt; adds a second layer. Middlewares can now live on the service itself, executing after the routing decision and, crucially, after the service-selection decision in composite services. This post walks through the scenarios where that matters.&lt;/p&gt;
&lt;h2 id=&quot;the-two-layer-model&quot;&gt;The Two-Layer Model&lt;/h2&gt;
&lt;p&gt;The historical pipeline was straightforward:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Request → Route match → Router middlewares → Service → Backend&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Service middlewares add a second execution point:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Request → Route match → Router middlewares → Service → Service middlewares → Backend&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;The rule of thumb fits in two sentences: &lt;strong&gt;If the middleware concerns &lt;em&gt;who&lt;/em&gt; can access or &lt;em&gt;how&lt;/em&gt; the request arrives, it belongs on the router. If it concerns &lt;em&gt;how the backend receives&lt;/em&gt; the request, it belongs on the service.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Authentication (user-facing), rate limiting meant to protect a route, and CORS are router middlewares. Backend-specific header adaptation, credential injection for an upstream API, and path rewriting that matches a backend’s expectations are service middlewares. The split is almost always obvious once you ask which layer owns the concern.&lt;/p&gt;
&lt;p&gt;Three things follow from this model. First, the Middlewares field sits on the Service type itself, so it’s available uniformly whether the service is a plain &lt;code&gt;LoadBalancer&lt;/code&gt;, a &lt;code&gt;Weighted&lt;/code&gt;, a &lt;code&gt;Mirroring&lt;/code&gt;, or a &lt;code&gt;Failover&lt;/code&gt;. Second, in composite services (Weighted, Mirroring, Failover), service middlewares on a child execute &lt;em&gt;only on the branch that actually receives the request&lt;/em&gt;, which is what makes every scenario below work. Third, the Kubernetes Gateway API expresses the exact same idea through &lt;code&gt;backendRefs[].filters&lt;/code&gt;; what Traefik calls a &lt;code&gt;service middleware&lt;/code&gt;, Gateway API calls a &lt;code&gt;backendRef filter&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;One practical note on where middlewares attach. In the Kubernetes CRD and the Gateway API, you can nest middlewares &lt;em&gt;inline&lt;/em&gt; on a child of a composite (a weighted entry, a mirror, a failover branch). In the file provider, a weighted child or a mirror entry is just a reference (no inline middleware field) so per-branch behaviour is expressed by making the child a standalone service that carries its own middlewares. Same outcome, one level of indirection. Scenario 3 below uses this form.&lt;/p&gt;
&lt;h2 id=&quot;scenario-1-canary-with-per-backend-transformation&quot;&gt;Scenario 1: Canary with Per-Backend Transformation&lt;/h2&gt;
&lt;p&gt;You run a Weighted service that sends 90% of traffic to the stable version of your API and 10% to a canary. The canary was built against a newer internal contract and expects an extra header (let&apos;s say &lt;code&gt;X-Feature-Flag: new-engine&lt;/code&gt;) that the stable backend doesn’t recognise and would silently ignore (or, worse, reject).&lt;/p&gt;
&lt;p&gt;Attaching &lt;code&gt;X-Feature-Flag&lt;/code&gt; to the router adds the header to &lt;em&gt;both&lt;/em&gt; branches. Removing it from the router and writing application logic to forward it conditionally moves the problem somewhere else. Duplicating the router for each variant defeats the purpose of weighted traffic in the first place.&lt;/p&gt;
&lt;p&gt;With service middlewares, the transformation lives on the canary child only:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: add-feature-flag
spec:
  headers:
    customRequestHeaders:
      X-Feature-Flag: new-engine
---
apiVersion: traefik.io/v1alpha1
kind: TraefikService
metadata:
  name: api
spec:
  weighted:
    services:
      - name: api-stable
        port: 80
        weight: 90
      - name: api-canary
        port: 80
        weight: 10
        middlewares:
          - name: add-feature-flag
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The stable branch is untouched. The canary branch fires the middleware after the weighted decision has been made, so it only applies to the 10% that actually reach the canary backend. Roll the canary back by flipping the weights to 100 / 0 and there&apos;s no middleware to remove, no route to change.&lt;/p&gt;
&lt;p&gt;The Gateway API expresses this with its own vocabulary. The same idea, “apply this header modification to this backend only,” becomes a filter on a &lt;code&gt;backendRef&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: api
spec:
  rules:
    - backendRefs:
        - name: api-stable
          port: 80
          weight: 90
        - name: api-canary
          port: 80
          weight: 10
          filters:
            - type: RequestHeaderModifier
              requestHeaderModifier:
                set:
                  - name: X-Feature-Flag
                    value: new-engine
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Traefik v3.7 supports &lt;code&gt;RequestHeaderModifier&lt;/code&gt;, &lt;code&gt;ResponseHeaderModifier&lt;/code&gt;, &lt;code&gt;RequestRedirect&lt;/code&gt;, and &lt;code&gt;URLRewrite&lt;/code&gt; on &lt;code&gt;backendRefs[].filters&lt;/code&gt;, plus &lt;code&gt;ExtensionRef&lt;/code&gt; for Traefik-native middlewares. If you already standardise on Gateway API, this is the native spelling and you get per-backend transformations without leaving the spec. If you’re on the Traefik CRDs, the TraefikService version above gives you the same behaviour. Same idea, two spellings.&lt;/p&gt;
&lt;h2 id=&quot;scenario-2-mirroring-with-redaction&quot;&gt;Scenario 2: Mirroring with Redaction&lt;/h2&gt;
&lt;p&gt;Traffic mirroring is how you validate a new implementation, a shadow analytics pipeline, or a benchmarking rig against real requests without risking production. Traefik’s Mirroring service duplicates incoming requests to one or more mirror backends while the primary response is what the client actually sees.&lt;/p&gt;
&lt;p&gt;The problem is that mirrored requests are identical copies of the originals. Every &lt;code&gt;Authorization&lt;/code&gt; header, every session cookie, every API key your primary backend receives also ends up on the mirror. If the mirror is run by a different team, lives in a sandbox environment, or is instrumented with verbose logging, you’ve just extended the trust boundary of your production secrets to places it probably shouldn’t reach.&lt;/p&gt;
&lt;p&gt;Router middlewares can’t help: stripping &lt;code&gt;Authorization&lt;/code&gt; from the router would also strip it from the primary backend and break production auth. Service middlewares, placed on the mirror branch only, solve it:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: scrub-secrets
spec:
  headers:
    customRequestHeaders:
      Authorization: &quot;&quot;
      Cookie: &quot;&quot;
      X-Api-Key: &quot;&quot;
      X-Shadow: &quot;true&quot;
---
apiVersion: traefik.io/v1alpha1
kind: TraefikService
metadata:
  name: orders-with-shadow
spec:
  mirroring:
    name: orders-primary
    port: 80
    mirrors:
      - name: orders-shadow
        port: 80
        percent: 100
        middlewares:
          - name: scrub-secrets
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The primary backend keeps its full request. The mirror receives the same request with credentials removed and an &lt;code&gt;X-Shadow&lt;/code&gt;: true marker so its logs are unambiguous. The scrub is a single piece of configuration that can be audited in one place, which matters when the middleware is a &lt;em&gt;security control&lt;/em&gt;, not a convenience.&lt;/p&gt;
&lt;h2 id=&quot;scenario-3-failover-between-heterogeneous-providers&quot;&gt;Scenario 3: Failover Between Heterogeneous Providers&lt;/h2&gt;
&lt;p&gt;A &lt;code&gt;Failover&lt;/code&gt; service sends traffic to a primary backend and falls back to a secondary when the primary is unhealthy. When the two backends are identical (i.e., two replicas of the same service) no per-branch transformation is needed. But when they aren’t identical, each side has its own contract.&lt;/p&gt;
&lt;p&gt;Take payment processing, for example. Your primary is Cashew, your fallback is Doshly. Cashew expects &lt;code&gt;Accept: application/vnd.cashew.v2+json&lt;/code&gt; and accepts charges at &lt;code&gt;/v1/charges&lt;/code&gt;, while Doshly wants &lt;code&gt;Accept: application/vnd.doshly.V3+json&lt;/code&gt; and routes payments through &lt;code&gt;/v3/payments&lt;/code&gt;. A router middleware can only set one &lt;code&gt;Accept&lt;/code&gt; header and one path. Whichever backend the failover selects, the other’s contract is wrong.&lt;/p&gt;
&lt;p&gt;Service middlewares let each branch carry its own adaptation:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;http:
  services:
    payments:
      failover:
        service: cashew
        fallback: doshly
        errors:
          status:
            - &quot;500-599&quot;

    cashew:
      loadBalancer:
        servers:
          - url: &quot;https://api.cashew.io&quot;
      middlewares:
        - cashew-version
        - cashew-path

    doshly:
      loadBalancer:
        servers:
          - url: &quot;https://checkout.doshly.io&quot;
      middlewares:
        - doshly-version
        - doshly-path

  middlewares:
    cashew-version:
      headers:
        customRequestHeaders:
          Accept: &quot;application/vnd.cashew.v2+json&quot;

    cashew-path:
      replacePath:
        path: &quot;/v1/charges&quot;

    doshly-version:
      headers:
        customRequestHeaders:
          Accept: &quot;application/vnd.doshly.v3+json&quot;

    doshly-path:
      replacePath:
        path: &quot;/v3/payments&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The failover decision picks the right backend and the right contract in a single configuration. Switch upstreams by swapping which one is primary. The middleware chain follows automatically.&lt;/p&gt;
&lt;h2 id=&quot;scenario-4-per-backend-rate-limiting-for-a-fragile-upstream&quot;&gt;Scenario 4: Per-Backend Rate Limiting for a Fragile Upstream&lt;/h2&gt;
&lt;p&gt;Your search endpoint fans out to two backends through a &lt;code&gt;Weighted&lt;/code&gt; service: an internal catalog that handles thousands of requests per second without flinching, and a partner’s public API with a hard quota of 100 req/sec. Cross it and you get a barrage of 429s plus a 30-second cool-down that hurts everyone downstream.&lt;/p&gt;
&lt;p&gt;A router-level rate limit forces you to size for the slowest backend. Throttle at the partner’s 100 req/sec and you choke the internal catalog for no reason. Keep the router’s limit high and you push the partner over the cliff on every surge. Either way, when your tier is renegotiated and the quota moves, you have to find every router that touches this service to update it.&lt;/p&gt;
&lt;p&gt;A service middleware puts the limit with the backend that actually has the constraint:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: partner-quota
spec:
  rateLimit:
    average: 80
    burst: 40
    # bucket by request Host rather than by client IP — only the
    # public search host routes to this backend, so every bucket
    # collapses to one, giving us a single global counter that
    # protects the upstream instead of fairly sharing among clients
    sourceCriterion:
      requestHost: true
---
apiVersion: traefik.io/v1alpha1
kind: TraefikService
metadata:
  name: search
spec:
  weighted:
    services:
      - name: catalog-internal
        port: 80
        weight: 70
      - name: catalog-partner
        port: 80
        weight: 30
        middlewares:
          - name: partner-quota
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The internal branch runs uncapped. The partner branch is protected from your own bursts, so you stop pushing it over the cliff and triggering 429-storms. Callers see a Traefik 429 you can absorb (cache, retry with backoff, degrade gracefully) instead of a partner-side rejection that takes half a minute to clear. When the quota changes, one object updates.&lt;/p&gt;
&lt;p&gt;The same reasoning extends to &lt;code&gt;circuitBreaker&lt;/code&gt; for unpredictable degradation: rate limit when you know the quota up front, circuit breaker when you have to react to symptoms. Both belong on the service that’s fragile, not on a router that doesn’t know which branch the request will end up on.&lt;/p&gt;
&lt;h2 id=&quot;scenario-5-external-api-with-credential-injection&quot;&gt;Scenario 5: External API with Credential Injection&lt;/h2&gt;
&lt;p&gt;Your platform proxies requests to an external geocoding API that authenticates with a custom header. Internally, three routes send traffic to this service: one from the public search page, one from the admin dashboard, one from a batch processing pipeline. Each route has its own access control, but the geocoding API always needs the same &lt;code&gt;X-Api-Key&lt;/code&gt; injected.&lt;/p&gt;
&lt;p&gt;Without service middlewares, you’d duplicate the credential-injection middleware on each router, and every new route to this service needs to remember to include it. Forget one, and requests arrive at the external API without authentication, producing silent 401s that are hard to trace.&lt;/p&gt;
&lt;p&gt;With a service middleware, the injection lives on the service itself:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;http:
  routers:
    geocoding-public:
      rule: &quot;Host(`search.example.com`) &amp;amp;&amp;amp; PathPrefix(`/geocode`)&quot;
      middlewares:
        - public-rate-limit
      service: geocoding

    geocoding-admin:
      rule: &quot;Host(`admin.internal`) &amp;amp;&amp;amp; PathPrefix(`/geocode`)&quot;
      middlewares:
        - admin-ipallowlist
      service: geocoding

    geocoding-batch:
      rule: &quot;Host(`batch.internal`) &amp;amp;&amp;amp; PathPrefix(`/geocode`)&quot;
      middlewares:
        - batch-basicauth
      service: geocoding

  services:
    geocoding:
      loadBalancer:
        servers:
          - url: &quot;https://api.geocoding-provider.com&quot;
      middlewares:
        - inject-geo-key

  middlewares:
    inject-geo-key:
      headers:
        customRequestHeaders:
          X-Api-Key: &quot;geo_prod_xxx&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Each route keeps its own authentication. The backend’s credential (i.e., how the upstream API wants to be spoken to) lives in one place and travels with the service. Add a fourth route without knowing that &lt;code&gt;inject-geo-key&lt;/code&gt; exists; it works automatically.&lt;/p&gt;
&lt;p&gt;One caveat: &lt;code&gt;customRequestHeaders&lt;/code&gt; takes literal strings, not Secret references. Source the key through your &lt;code&gt;secret-injection&lt;/code&gt; workflow (templated manifests, External Secrets Operator, sealed secrets) rather than committing the value as shown.&lt;/p&gt;
&lt;h2 id=&quot;more-places-this-fits&quot;&gt;More Places This Fits&lt;/h2&gt;
&lt;p&gt;The same pattern shows up in dozens of situations. A few that don’t need a full walkthrough but are worth knowing about:&lt;/p&gt;
&lt;h3 id=&quot;circuit-breaker-on-a-fragile-backend&quot;&gt;Circuit Breaker on a Fragile Backend&lt;/h3&gt;
&lt;p&gt;Some upstreams don’t fail at a predictable quota; they return 500s in bursts, intermittent failures that cascade if you keep sending traffic. A &lt;code&gt;circuitBreaker&lt;/code&gt; as a service middleware trips when the error ratio crosses a threshold and gives the backend time to recover, while the other backends in the composite keep serving normally.&lt;/p&gt;
&lt;h3 id=&quot;plugin-driven-body-transformations&quot;&gt;Plugin-Driven Body Transformations&lt;/h3&gt;
&lt;p&gt;Built-in middlewares don&apos;t touch request or response bodies; plugins do. As service middlewares, they slot into the same composition model. A plugin on a weighted child can rewrite JSON for the migrating branch only, leaving the legacy branch untouched until the migration finishes.&lt;/p&gt;
&lt;h3 id=&quot;header-translation-during-a-backend-migration&quot;&gt;Header Translation During a Backend Migration&lt;/h3&gt;
&lt;p&gt;You’re shifting traffic from a legacy backend that expects &lt;code&gt;Authorization: Bearer&lt;/code&gt; … to a new one with its own &lt;code&gt;X-Api-Key&lt;/code&gt; (a backend-owned secret, independent of the client’s bearer). A &lt;code&gt;Weighted&lt;/code&gt; service runs the split; the new backend carries a middleware that sets its &lt;code&gt;X-Api-Key&lt;/code&gt; and strips the inbound &lt;code&gt;Authorization&lt;/code&gt;. Roll forward by adjusting the weights. When the legacy service is decommissioned, the translation middleware goes with it.&lt;/p&gt;
&lt;h2 id=&quot;which-middleware-goes-where&quot;&gt;Which Middleware Goes Where&lt;/h2&gt;
&lt;p&gt;Here&apos;s a short guide to keep handy. While there are no hard and fast rules, the guide below provides some default answers to the key question, &quot;what is this middleware actually about?&quot;&lt;/p&gt;
&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Middleware Concern&lt;/th&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;User authentication (who can access the route)&lt;/td&gt;
&lt;td&gt;Router&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Credential injection for the upstream API&lt;/td&gt;
&lt;td&gt;Service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rate limit to protect a route or a client&lt;/td&gt;
&lt;td&gt;Router&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rate limit to protect a fragile backend&lt;/td&gt;
&lt;td&gt;Service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;CORS&lt;/td&gt;
&lt;td&gt;Router&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Strip prefix, path rewrite&lt;/td&gt;
&lt;td&gt;Service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Request headers adapting to a backend’s contract&lt;/td&gt;
&lt;td&gt;Service&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Response headers shaping the client view&lt;/td&gt;
&lt;td&gt;Router&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;User-facing redirects&lt;/td&gt;
&lt;td&gt;Router&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Host header rewriting for upstream routing&lt;/td&gt;
&lt;td&gt;Service&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;When you’re unsure, ask whether the middleware would still make sense if you swapped the backend for an entirely different implementation. If the answer is “yes, the middleware is still needed” it belongs on the router. If the answer is “no, this is specific to how &lt;em&gt;this&lt;/em&gt; backend wants to be spoken to” it belongs on the service.&lt;/p&gt;
&lt;p&gt;Service middlewares are available from Traefik v3.7 onwards, in the file provider, the Kubernetes CRD (standalone IngressRoute services and all TraefikService variants), the Kubernetes Ingress provider (via the traefik.ingress.kubernetes.io/service.middlewares annotation), and the Gateway API (&lt;code&gt;backendRefs[].filters&lt;/code&gt;). The full reference is in the &lt;a href=&quot;https://doc.traefik.io/traefik/?ref=containous.ghost.io&quot;&gt;Traefik documentation&lt;/a&gt;.&lt;/p&gt;

&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-202811305109&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:256.4375px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;202811305109&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLK8maQHdU6q7EG2h0kSzNCjyoYjZ1B%2FZTiVafz2WndAGLgPsyJJbdZSWbyYv3S8dSdWn0Egs%2BZ17mLBVohqrm5MWAHYzLBG%2FHBI4fNUb%2F6RGqKV3GyrBiHoS7edZHoOTNymxuZnL0ABkCwIJpDpJJRjNPcO3Q1zL7dUiOHW1M5vtbbFs%2FnXQBEbzuA378tfSA%3D%3D&amp;webInteractiveContentId=202811305109&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;ingress-nginx-promo-image&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-202811305109.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Ingress NGINX Migration Guide (3 of 3): Cut Over One Ingress at a Time with Zero Downtime]]></title>
            <description><![CDATA[In the final part of our migration guide, learn how to cut over from Ingress NGINX to Traefik progressively with zero downtime and instant rollback.]]></description>
            <link>https://traefik.io/ingress-nginx-migration-guide-3-cutting-over-progressively-with-zero-downtime</link>
            <guid isPermaLink="true">https://traefik.io/ingress-nginx-migration-guide-3-cutting-over-progressively-with-zero-downtime</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[Traefik Proxy]]></category>
            <category><![CDATA[ingress nginx]]></category>
            <dc:creator><![CDATA[Nicolas Mengin]]></dc:creator>
            <pubDate>Wed, 20 May 2026 16:50:50 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/ingress-nginx-migration-guide-image_no-copy.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/05/ingress-nginx-migration-guide-image_no-copy.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/05/ingress-nginx-migration-guide-image_no-copy.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/05/ingress-nginx-migration-guide-image_no-copy.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/ingress-nginx-migration-guide-image_no-copy.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;A real zero-downtime migration is not a moment; it is an invariant. At every step, including the one you are about to take, there must be a working configuration you can revert to in seconds. Not a backup. Not a recovery plan. A live, running, traffic-serving configuration, one &lt;code&gt;kubectl edit&lt;/code&gt; away.&lt;/p&gt;
&lt;p&gt;That is what this post is about. The combination of Traefik v3.7&apos;s native Ingress NGINX annotation support and its priority-based routing model lets you keep that invariant from the first packet to the last. You move Ingresses one at a time. You always have somewhere to fall back to. And when the last Ingress is migrated, you find out you have been in production on Traefik for weeks already.&lt;/p&gt;&lt;p&gt;This is the third and final post of the series, published alongside the &lt;a href=&quot;https://traefik.io/blog/traefik-proxy-3-7-is-available?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik v3.7 GA&lt;/u&gt;&lt;/a&gt;:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/blog/ingress-nginx-migration-audit?ref=containous.ghost.io&quot;&gt;&lt;strong&gt;&lt;u&gt;Audit&lt;/u&gt;&lt;/strong&gt;&lt;/a&gt;: inventory your annotations and translate the NGINX ConfigMap.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/blog/ingress-nginx-migration-guide-2-of-3-install-traefik?ref=containous.ghost.io&quot;&gt;&lt;strong&gt;&lt;u&gt;Install&lt;/u&gt;&lt;/strong&gt;&lt;/a&gt;: deploy Traefik with Helm next to your existing NGINX controller.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Progressive migration&lt;/strong&gt; (this post): cut over route by route, with zero downtime.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The &lt;a href=&quot;https://doc.traefik.io/traefik/migrate/nginx-to-traefik/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;official Traefik migration guide&lt;/u&gt;&lt;/a&gt; documents a blue-green approach. This post takes a different path, one designed for teams that cannot freeze a cluster for an hour, let alone a weekend.&lt;/p&gt;&lt;h2 id=&quot;the-catch-all-is-the-invariant&quot;&gt;The Catch-All is the Invariant&lt;/h2&gt;&lt;p&gt;Every progressive migration in this series rests on one mechanism: a Traefik &lt;strong&gt;catch-all router&lt;/strong&gt; sitting in front of Ingress NGINX, with a priority lower than any real Ingress. Traefik forwards any request for which it has no matching rule to Ingress NGINX unchanged.&lt;/p&gt;&lt;p&gt;That router is the safety net. As long as it is in place, every request that does not match a migrated Ingress still flows through Ingress NGINX exactly as it did before. You can migrate one Ingress, ten, or zero, and the rest of your production traffic does not know the difference.&lt;/p&gt;&lt;p&gt;There is no &lt;strong&gt;big-bang&lt;/strong&gt;. There is no maintenance window. There is no &quot;migration day&quot;. There is a sequence of tiny, individually reversible changes, each protected by the same fallback.&lt;/p&gt;&lt;p&gt;The rest of this post walks through the two operational moves that make this work: putting Traefik in front of Ingress NGINX (Step 1), and migrating Ingresses one by one (Step 2). They both rely on the catch-all routes, as well as on the audits and installations you have already carried out.&lt;/p&gt;&lt;h2 id=&quot;initial-situation&quot;&gt;Initial Situation&lt;/h2&gt;&lt;p&gt;Coming out of the second post:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;Ingress NGINX serves all external traffic via a LoadBalancer (or NodePort) service.&lt;/li&gt;
&lt;li&gt;An &lt;code&gt;IngressClass&lt;/code&gt; named &lt;code&gt;nginx&lt;/code&gt;, with controller &lt;code&gt;k8s.io/ingress-nginx&lt;/code&gt;, tells the cluster which Ingress resources Ingress NGINX should handle.&lt;/li&gt;
&lt;li&gt;Traefik is deployed in the cluster but unreachable from outside. It is configured to accept both Ingress resources (with Ingress NGINX annotations) on the &lt;code&gt;traefik-nginx&lt;/code&gt; IngressClass, and Traefik CRDs (&lt;code&gt;IngressRoute&lt;/code&gt;, &lt;code&gt;IngressRouteTCP&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Current traffic flow:&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/Initial-situation-diagram.png&quot; class=&quot;kg-image&quot; alt=&quot;initial flow diagram&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;158&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/05/Initial-situation-diagram.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/05/Initial-situation-diagram.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/05/Initial-situation-diagram.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/Initial-situation-diagram.png 2152w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;For the rest of this post, we will work against a representative production-style Ingress that uses the features most likely to trip up a naive migration: snippets, header manipulation, and SSL redirects.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# IngressClass
apiVersion: networking.k8s.io/v1
kind: IngressClass
metadata:
  name: nginx
spec:
  controller: k8s.io/ingress-nginx
# Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-with-nginx-annotation
  annotations:
    # SNIPPETS
    nginx.ingress.kubernetes.io/server-snippet: |
      location = /exact {
            return 200 &quot;exact-match&quot;;
          }
    nginx.ingress.kubernetes.io/configuration-snippet: |
      # Add Headers on the response
      add_header X-Method $request_method;
      set $my_var &quot;hello&quot;;
      add_header X-My-Var $my_var;
      set $combined &quot;$request_method-$request_uri&quot;;
      add_header X-Combined $combined;
      # Add/Set Headers on the request
      proxy_set_header X-Backend-Uri $request_uri;
      more_set_input_headers &quot;X-Custom-Input:input-value&quot;;
    # SSL Redirect
    nginx.ingress.kubernetes.io/ssl-redirect: &quot;true&quot;
spec:
  ingressClassName: nginx
  rules:
  - host: whoami.docker.localhost
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: whoami
            port:
              number: 80
  tls:
  - hosts:
    - whoami.docker.localhost
    secretName: external-certs &amp;lt;= Set your TLS files secret name here&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For Ingress NGINX to honor the snippets on this Ingress, the controller ConfigMap must allow them:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# NGINX Configuration
apiVersion: v1
kind: ConfigMap
metadata:
  name: nginx-configuration
data:
  use-forwarded-headers: &quot;true&quot;
  allow-snippet-annotations: &quot;true&quot;
  annotations-risk-level: Critical&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;step-1-put-traefik-in-front-of-ingress-nginx&quot;&gt;Step 1: Put Traefik in Front of Ingress NGINX&lt;/h2&gt;&lt;p&gt;This first step is to put Traefik on the traffic path, while Ingress NGINX keeps handling every request unchanged. Once this step is complete, the invariant is established: a single one-line change to the LoadBalancer selector reverts the entire cluster to the pre-Traefik state.&lt;/p&gt;&lt;h3 id=&quot;1-check-traefik-configuration&quot;&gt;1. Check Traefik Configuration&lt;/h3&gt;&lt;p&gt;In the previous blog post, we configured Traefik with the &lt;code&gt;kubernetesIngressNGINX&lt;/code&gt; provider pointed at the &lt;code&gt;traefik-nginx&lt;/code&gt; IngressClass, the &lt;code&gt;traefik-ingress-controller&lt;/code&gt; controller, and the kubernetesCRD provider enabled, so we can define &lt;code&gt;IngressRoute&lt;/code&gt; and &lt;code&gt;IngressRouteTCP&lt;/code&gt; resources in the next step.&lt;/p&gt;
&lt;p&gt;Before we go further, double-check the Traefik deployment is wired the way we expect:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$kubectl describe deployment/traefik
…
Pod Template:
  Labels:           app.kubernetes.io/name=traefik
  Service Account:  traefik-ingress-controller
  Containers:
   traefik:
    Image:       traefik:v3.7.0
    Ports:       80/TCP, 8080/TCP, 443/TCP
    Host Ports:  0/TCP, 0/TCP, 0/TCP
    Args:
      --api.insecure
      --entrypoints.traefik.address=:8080
      --entrypoints.web.address=:80
      --entrypoints.websecure.address=:443
      --entryPoints.websecure.http.tls=true
      --providers.kubernetesIngressNGINX.ingressClass=traefik-nginx
      --providers.kubernetesIngressNGINX.ingressClassByName=true
      --providers.kubernetesIngressNGINX.controllerClass=&quot;traefik.io/ingress-controller&quot;
      --providers.kubernetesIngressNGINX.allowSnippetAnnotations=true
      --providers.kubernetesIngressNGINX.httpentrypoint=web
      --providers.kubernetesIngressNGINX.httpsentrypoint=websecure
      --providers.kubernetescrd
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;2-expose-ingress-nginx-as-a-clusterip-service&quot;&gt;2. Expose Ingress NGINX as a ClusterIP service&lt;/h3&gt;&lt;p&gt;For Traefik to forward to Ingress NGINX, Ingress NGINX needs a stable internal address. We create a ClusterIP Service that selects the existing Ingress NGINX pods. The external LoadBalancer stays untouched for now, Ingress NGINX is reachable from two places, the LoadBalancer (still serving production) and the new ClusterIP (about to be used by Traefik).&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# Internal ClusterIP Service for ingress-nginx
apiVersion: v1
kind: Service
metadata:
  name: internal-nginx-svc
spec:
  type: ClusterIP
  selector:
    app.kubernetes.io/name: ingress-nginx
  ports:
  - name: http
    port: 80
    targetPort: 80
  - name: https
    port: 443
    targetPort: 443
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;3-add-catch-all-routes&quot;&gt;3. Add Catch-All Routes&lt;/h3&gt;
&lt;p&gt;We create two resources, one &lt;code&gt;IngressRouteTCP&lt;/code&gt; and one &lt;code&gt;IngressRoute&lt;/code&gt;, one for each entrypoint. These match every hostname and forward the request to Ingress NGINX. The TLS entry point uses passthrough mode, meaning ingress-nginx continues to terminate TLS exactly as before.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Catch-all TCP route for TLS connections (TLS passthrough)
apiVersion: traefik.io/v1alpha1
kind: IngressRouteTCP
metadata:
  name: traefik-catchall-tcp-tls
spec:
  entryPoints:
  - websecure
  routes:
  - match: HostSNI(`*`)
    services:
    - name: internal-nginx-svc
      port: 443
  tls:
    passthrough: true
---
# Catch-all HTTP route for non-TLS connections
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: traefik-catchall-http
spec:
  entryPoints:
  - web
  routes:
  - match: HostRegexp(`.*`)
    services:
    - name: internal-nginx-svc
      port: 80
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;4-swing-the-loadbalancer-to-traefik&quot;&gt;4. Swing the LoadBalancer to Traefik&lt;/h3&gt;
&lt;p&gt;To complete step 1, the final move is to update the external LoadBalancer selector from &lt;code&gt;ingress-nginx&lt;/code&gt; to &lt;code&gt;traefik&lt;/code&gt;. This is the only change visible to external clients, and it is instantaneous. Traefik starts receiving traffic and, because the only routes it knows about are the two catch-alls, forwards every request untouched to ingress-nginx.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: v1
kind: Service
metadata:
  name: ingress-controller
spec:
  type: LoadBalancer
  selector:
    app.kubernetes.io/name: traefik # &amp;lt;= was ingress-nginx
  ports:
  - name: http
    port: 80
    targetPort: 80
  - name: https
    port: 443
    targetPort: 443

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;New traffic flow:&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/Step-1-----Install-Traefik-in-front-of-ingress-nginx.png&quot; class=&quot;kg-image&quot; alt=&quot;diagram of traefik in front of ingress-nginx&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;98&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/05/Step-1-----Install-Traefik-in-front-of-ingress-nginx.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/05/Step-1-----Install-Traefik-in-front-of-ingress-nginx.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/05/Step-1-----Install-Traefik-in-front-of-ingress-nginx.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2026/05/Step-1-----Install-Traefik-in-front-of-ingress-nginx.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;There is no user impact: every request passes through Traefik and arrives at ingress-nginx exactly as before.&lt;/p&gt;&lt;p&gt;The Traefik dashboard confirms the state. Besides the routers that expose the dashboard itself, only two catch-all routers are active, one TCP and one HTTP, both at low priority.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/screenshot-1.png&quot; class=&quot;kg-image&quot; alt=&quot;screenshot of Traefik Proxy dashboard with one route&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;603&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/05/screenshot-1.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/05/screenshot-1.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/05/screenshot-1.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/screenshot-1.png 2048w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/screenshot-2.png&quot; class=&quot;kg-image&quot; alt=&quot;screenshot of Traefik Proxy dashboard with more routes&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;599&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/05/screenshot-2.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/05/screenshot-2.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/05/screenshot-2.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/screenshot-2.png 2048w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;step-2-migrate-ingress-resources-one-by-one&quot;&gt;Step 2: Migrate Ingress Resources One by One&lt;/h2&gt;&lt;p&gt;With Traefik in place and a live fallback running, we can now move each Ingress resource to Traefik independently, at whatever pace suits the team.&lt;/p&gt;&lt;p&gt;The process is the same for each Ingress resource:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Edit the manifest and change &lt;code&gt;ingressClassName&lt;/code&gt; from nginx to &lt;code&gt;traefik-nginx&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Apply.&lt;/li&gt;
&lt;li&gt;Traefik picks it up immediately and creates an HTTP router. Because the new router matches a specific host (or path), and the catch-all matches &lt;code&gt;*&lt;/code&gt;, the more specific rule wins. From that instant on, the Ingress is served by Traefik directly.&lt;/li&gt;
&lt;li&gt;Confirm in the Traefik dashboard that the new router is active and green.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Here is the updated Ingress. Note that the only change is the IngressClass name:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Ingress, updated to use the traefik-nginx IngressClass
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-with-nginx-annotation
  annotations:
    nginx.ingress.kubernetes.io/server-snippet: |
      location = /exact {
            return 200 &quot;exact-match&quot;;
          }
    nginx.ingress.kubernetes.io/configuration-snippet: |
      # Add Headers on the response
      add_header X-Method $request_method;
      set $my_var &quot;hello&quot;;
      add_header X-My-Var $my_var;
      set $combined &quot;$request_method-$request_uri&quot;;
      add_header X-Combined $combined;
      # Add/Set Headers on the request
      proxy_set_header X-Backend-Uri $request_uri;
      more_set_input_headers &quot;X-Custom-Input:input-value&quot;;
    nginx.ingress.kubernetes.io/ssl-redirect: &quot;true&quot;
spec:
  ingressClassName: traefik-nginx  # &amp;lt;= changed from nginx
  rules:
  - host: whoami.docker.localhost
    http:
      paths:
      - path: /
        pathType: Prefix
        backend:
          service:
            name: whoami
            port:
              number: 80
  tls:
  - hosts:
    - whoami.docker.localhost
    secretName: external-certs &amp;lt;= Set your TLS files secret name here&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The annotations are unchanged. Traefik v3.7 reads them natively and translates them into the equivalent routing rules and middlewares. The audit you did in the first post is what makes this trustworthy: you already know, before you apply, that this Ingress falls in the &lt;em&gt;Supported&lt;/em&gt; bucket.&lt;/p&gt;&lt;p&gt;After applying, the dashboard shows the new HTTP router active alongside the remaining catch-all routes:&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/screenshot-3.png&quot; class=&quot;kg-image&quot; alt=&quot;screenshot of traefik dashboard&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;597&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/05/screenshot-3.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/05/screenshot-3.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/05/screenshot-3.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/screenshot-3.png 2048w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;At this point, two flows coexist in the cluster: one for the migrated Ingresses, and still the previous one for the not-yet-migrated Ingresses.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/Step-2-----Incremental-migration.png&quot; class=&quot;kg-image&quot; alt=&quot;Diagram showing progressive migration to Traefik Proxy&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;244&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/05/Step-2-----Incremental-migration.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/05/Step-2-----Incremental-migration.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/05/Step-2-----Incremental-migration.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2026/05/Step-2-----Incremental-migration.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Rolling back is symmetrical: flip the IngressClass back to &lt;code&gt;nginx&lt;/code&gt;, and the Ingress returns to ingress-nginx; the catch-all takes care of the rest. Nothing else in the cluster needs to know.&lt;/p&gt;
&lt;p&gt;Repeat for each Ingress, at whatever cadence the team can handle. One per sprint, ten per afternoon, fifty in a coordinated push. The catch-all does not care.&lt;/p&gt;
&lt;p&gt;Once the last Ingress has been migrated, Ingress NGINX is no longer needed. Clean up in two steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Delete the catch-all &lt;code&gt;IngressRoute&lt;/code&gt; and &lt;code&gt;IngressRouteTCP&lt;/code&gt; resources (&lt;code&gt;traefik-catchall-http&lt;/code&gt; and &lt;code&gt;traefik-catchall-tcp-tls&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;Remove the ingress-nginx resources you don’t need anymore, keeping the Load-Balancer Service:&lt;br&gt;
a. The Deployment (&lt;code&gt;ingress-nginx-controller&lt;/code&gt;)&lt;br&gt;
b. The internal ClusterIP service (&lt;code&gt;internal-nginx-svc&lt;/code&gt;)&lt;br&gt;
c. The ConfigMap (&lt;code&gt;nginx-configuration&lt;/code&gt;)&lt;br&gt;
d. The RBAC (&lt;code&gt;ingress-nginx&lt;/code&gt; &lt;code&gt;ClusterRole&lt;/code&gt; and &lt;code&gt;ClusterRoleBinding&lt;/code&gt;)&lt;br&gt;
e. The ServiceAccount (&lt;code&gt;ingress-nginx&lt;/code&gt;)&lt;br&gt;
f. The original nginx &lt;code&gt;IngressClass&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;If you installed ingress-nginx via Helm, add the annotation &lt;code&gt;helm.sh/resource-policy&lt;/code&gt;: keep to the &lt;code&gt;ingress-nginx-controller&lt;/code&gt; Service prevents the uninstall from deleting it. That matters: that Service holds the LoadBalancer IP your DNS points at, you do not want to lose it.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Final traffic flow:&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/Final-situation.png&quot; class=&quot;kg-image&quot; alt=&quot;Diagram of final cut over to Traefik Proxy&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;169&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/05/Final-situation.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/05/Final-situation.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/05/Final-situation.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/Final-situation.png 2134w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Et voilà. Traefik is now the sole Ingress Controller, handling every route with full native support for the existing annotation-based configuration, no manifest rewrites required.&lt;/p&gt;&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;&lt;p&gt;The way most teams think about an Ingress controller migration is: &lt;em&gt;we have to swap A for B, what is the safest moment to do it?&lt;/em&gt; The answer is always disappointing, because there is no safe moment to swap one production component for another.&lt;/p&gt;&lt;p&gt;The way to migrate is to stop framing it as a swap at all. Put Traefik on the traffic path with a catch-all, and from that point on, you are not migrating a controller; you are migrating Ingress resources, one at a time, each with its own atomic decision and its own one-line rollback. The catch-all is what makes the difference between &quot;we need a maintenance window&quot; and &quot;we can do this Tuesday afternoon&quot;.&lt;/p&gt;&lt;p&gt;Traefik v3.7 makes the per-Ingress move trivial because it reads ingress-nginx annotations natively. The audit told you which Ingresses are in the safe bucket. The install put Traefik in the cluster without touching production. This post connects the two: with a single catch-all router, every Ingress migration becomes the smallest possible change.&lt;/p&gt;&lt;p&gt;Give it a try, and let the &lt;a href=&quot;https://community.traefik.io/?ref=containous.ghost.io&quot;&gt;Traefik community&lt;/a&gt; know how it goes!&lt;/p&gt;&lt;h3 id=&quot;useful-links&quot;&gt;Useful Links&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik/providers/kubernetes-ingress-nginx/?ref=containous.ghost.io&quot;&gt;Traefik ingress-nginx provider documentation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://kubernetes.github.io/ingress-nginx/user-guide/nginx-configuration/annotations/?ref=containous.ghost.io&quot;&gt;ingress-nginx annotation reference&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/traefik/traefik/releases/tag/v3.7.0?ref=containous.ghost.io&quot;&gt;Traefik v3.7 release notes&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik/routing/routers/?ref=containous.ghost.io#priority&quot;&gt;Traefik routing priority documentation&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Ingress NGINX Migration Guide (2 of 3): Traefik Lands, Ingress NGINX Stays Safe.]]></title>
            <description><![CDATA[Deploy Traefik next to Ingress NGINX with zero production impact. Helm install, ConfigMap translation, and annotation validation before a single route moves.]]></description>
            <link>https://traefik.io/ingress-nginx-migration-guide-2-of-3-install-traefik</link>
            <guid isPermaLink="true">https://traefik.io/ingress-nginx-migration-guide-2-of-3-install-traefik</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[ingress nginx]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Wed, 13 May 2026 15:09:11 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/ingress-nginx-guide-part-2_no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/05/ingress-nginx-guide-part-2_no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/05/ingress-nginx-guide-part-2_no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/05/ingress-nginx-guide-part-2_no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/ingress-nginx-guide-part-2_no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The riskiest moment in an Ingress NGINX migration is not the cutover. It is the second between &lt;em&gt;&quot;we have to migrate&quot;&lt;/em&gt; and &lt;em&gt;&quot;we have actually started&quot;&lt;/em&gt;. Teams either freeze (because the project feels enormous) or jump straight to the cutover (because they want it over with). Both produce outages.&lt;/p&gt;&lt;p&gt;There is a much better way: install Traefik in your cluster as a second controller, with its own IngressClass, and let it sit there. Your existing Ingress NGINX keeps serving everything. No traffic moves yet. Once Traefik is ready and validated, the third post walks through moving your Ingress resources to it one by one.&lt;/p&gt;&lt;p&gt;This is the second post of a 3-part series on migrating off Ingress NGINX, published alongside the Traefik v3.7 GA:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Audit&lt;/strong&gt;: inventory your annotations and translate the NGINX ConfigMap (&lt;a href=&quot;https://traefik.io/blog/ingress-nginx-migration-audit?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;read our guide here&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Install&lt;/strong&gt; (this post): deploy Traefik with Helm next to your existing NGINX controller.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Progressive migration&lt;/strong&gt;: cut over route by route, with zero downtime.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;This post focuses on the Traefik installation only.&lt;/strong&gt; Moving your Ingress resources from Ingress NGINX to Traefik, one at a time, is the topic of the third post. Here, we get Traefik deployed, configured with the new IngressClass, and validated against a duplicated test Ingress, sitting next to Ingress NGINX and ready to take over when you decide.&lt;/p&gt;&lt;p&gt;If you have not run the audit yet, do that first. This post assumes you already know which of your Ingress resources fall in the &lt;em&gt;Vanilla&lt;/em&gt;, &lt;em&gt;Supported&lt;/em&gt;, &lt;em&gt;Unsupported&lt;/em&gt;, and &lt;em&gt;Invalid&lt;/em&gt; buckets, and that your global ConfigMap has been translated to Traefik&apos;s static configuration.&lt;/p&gt;&lt;h2 id=&quot;why-install-side-by-side-instead-of-replacing-in-place&quot;&gt;Why Install Side by Side, Instead of Replacing in Place&lt;/h2&gt;&lt;p&gt;The instinct, especially under deadline pressure, is to uninstall Ingress NGINX and install Traefik. Same IngressClass, same Service, same LoadBalancer IP. Done by lunchtime.&lt;/p&gt;&lt;p&gt;Don&apos;t.&lt;/p&gt;&lt;p&gt;When the new controller takes over the same traffic path, every misconfigured annotation, every forgotten ConfigMap setting, every silently different default becomes a production incident. The blast radius is your entire cluster. The rollback is a re-installation of the old controller, which takes time you do not have when 80 services are returning 503.&lt;/p&gt;&lt;p&gt;The side-by-side install eliminates this class of failure. You deploy Traefik in its own namespace, on a &lt;strong&gt;new, dedicated IngressClass&lt;/strong&gt; (&lt;code&gt;traefik-nginx&lt;/code&gt;). Your existing Ingress resources keep their &lt;code&gt;nginx&lt;/code&gt; IngressClass. They keep flowing through Ingress NGINX, untouched. Traefik is in the cluster, configured, and idle until you explicitly point an Ingress at it.&lt;/p&gt;&lt;p&gt;More importantly, this separation is what makes a &lt;strong&gt;progressive migration&lt;/strong&gt; possible. Once both controllers are running, you can move your Ingress resources from Ingress NGINX to Traefik &lt;strong&gt;one at a time&lt;/strong&gt;: edit a single Ingress, change its &lt;code&gt;ingressClassName&lt;/code&gt; from &lt;code&gt;nginx&lt;/code&gt; to &lt;code&gt;traefik-nginx&lt;/code&gt;, validate, move on to the next. No big-bang. No frozen weekend. Each route is its own atomic decision, with its own rollback (just flip the IngressClass back). The &lt;a href=&quot;https://doc.traefik.io/traefik/migrate/nginx-to-traefik/?ref=containous.ghost.io&quot;&gt;Traefik migration guide&lt;/a&gt; documents this as a blue-green pattern, and it is exactly what the third post will walk through. This post focuses on getting Traefik installed and ready for it.&lt;/p&gt;&lt;h2 id=&quot;install-traefik-with-the-official-helm-chart&quot;&gt;Install Traefik With the Official Helm Chart&lt;/h2&gt;&lt;p&gt;The &lt;a href=&quot;https://github.com/traefik/traefik-helm-chart?ref=containous.ghost.io&quot;&gt;&lt;code&gt;traefik/traefik-helm-chart&lt;/code&gt;&lt;/a&gt; is the canonical install path. Start by adding the repo:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;helm repo add --force-update traefik &amp;lt;https://traefik.github.io/charts&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Create a dedicated namespace for the new controller. Keeping it separate from &lt;code&gt;ingress-nginx&lt;/code&gt; is good hygiene: it makes RBAC scoping, monitoring, and uninstall trivial later.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;kubectl create namespace traefik
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now the values file. The key piece is &lt;code&gt;providers.kubernetesIngressNGINX.enabled: true&lt;/code&gt;, with the new IngressClass and controllerClass that Traefik will own:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# traefik-values.yaml

providers:
  # Read Ingress resources using the new traefik-nginx IngressClass.
  # Existing nginx-class Ingresses are NOT touched: they keep flowing
  # through ingress-nginx until you explicitly migrate them (the third post).
  kubernetesIngressNGINX:
    enabled: true
    # New IngressClass that Traefik owns, distinct from ingress-nginx&apos;s &quot;nginx&quot;.
    ingressClass: &quot;traefik-nginx&quot;
    ingressClassByName: true
    # Traefik&apos;s own controller class for the new IngressClass.
    controllerClass: &quot;traefik.io/ingress-controller&quot;
    # Accept snippet annotations when migrated Ingresses use them.
    allowSnippetAnnotations: true

  # Standard Kubernetes Ingress provider disabled: we only consume the new class.
  kubernetesIngress:
    enabled: false

# Let the chart create the IngressClass that Traefik watches.
# This is the same IngressClass that the kubernetesIngressNGINX provider
# above is configured to consume. Not default-class: we do not want any
# Ingress without an explicit class to land on Traefik.
ingressClass:
  enabled: true
  isDefaultClass: false
  name: &quot;traefik-nginx&quot;

# No Service for Traefik yet. The third post will repoint your existing
# ingress-nginx Service (which already has a LoadBalancer IP) to Traefik&apos;s
# pod selector. No need to provision anything extra to validate, port-forward
# to the pod is enough.
service:
  enabled: false

# Dashboard for validation, reached via port-forward during install.
ingressRoute:
  dashboard:
    enabled: true
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Install with:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;helm install traefik traefik/traefik \\
  --namespace traefik \\
  --values traefik-values.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;That&apos;s the entire install. One Helm command, one values file. The chart deploys the controller and creates the &lt;code&gt;traefik-nginx&lt;/code&gt; IngressClass in the same operation. The new controller is running, configured to watch a class that nothing in your cluster uses yet, with no LoadBalancer of its own. It is in the cluster, but invisible to production traffic.&lt;/p&gt;&lt;p&gt;Verify the pods are up:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;kubectl -n traefik get pods
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You should see one (or more) Traefik pod in &lt;code&gt;Running&lt;/code&gt; state. No Service in the namespace. That is by design: the third post will reuse the existing Ingress NGINX Service by editing its selector.&lt;/p&gt;&lt;h2 id=&quot;translate-the-configmap-into-static-configuration&quot;&gt;Translate the ConfigMap Into Static Configuration&lt;/h2&gt;&lt;p&gt;If your audit identified ConfigMap keys that need to come over (timeouts, body sizes, default backend, allow-cross-namespace, etc.), the corresponding Traefik options live under &lt;code&gt;providers.kubernetesIngressNGINX&lt;/code&gt; in the same values file. The mapping is in the &lt;a href=&quot;https://doc.traefik.io/traefik/master/migrate/nginx-to-traefik/?ref=containous.ghost.io#step-0-migrate-your-global-configmap-settings&quot;&gt;migration guide&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;A typical example:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;providers:
  kubernetesIngressNGINX:
    enabled: true
    ingressClass: &quot;traefik-nginx&quot;
    ingressClassByName: true
    controllerClass: &quot;traefik.io/ingress-controller&quot;
    allowSnippetAnnotations: true

    # Translated from ingress-nginx ConfigMap
    proxyBodySize: 16777216           # was proxy-body-size: &quot;16m&quot;
    proxyConnectTimeout: 30           # was proxy-connect-timeout: &quot;30&quot;
    proxyBuffering: true              # was proxy-buffering: &quot;on&quot;
    allowCrossNamespaceResources: true
    globalAllowedResponseHeaders:
      - X-Frame-Options
      - X-Custom-Header
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Apply with &lt;code&gt;helm upgrade traefik traefik/traefik -n traefik -f traefik-values.yaml&lt;/code&gt;.&lt;/p&gt;&lt;h3 id=&quot;cross-cutting-keys-tls-options-as-a-concrete-example&quot;&gt;Cross-Cutting Keys: TLS Options as a Concrete Example&lt;/h3&gt;&lt;p&gt;Some ConfigMap keys do not belong under the provider at all. The clearest case is &lt;strong&gt;TLS policy&lt;/strong&gt;: &lt;code&gt;ssl-protocols&lt;/code&gt;, &lt;code&gt;ssl-ciphers&lt;/code&gt;, &lt;code&gt;ssl-prefer-server-ciphers&lt;/code&gt;. In Ingress NGINX these are single cluster-wide knobs in the ConfigMap. In Traefik, they live in a &lt;a href=&quot;https://doc.traefik.io/traefik/reference/routing-configuration/http/tls/tls-options/?ref=containous.ghost.io&quot;&gt;&lt;code&gt;TLSOption&lt;/code&gt;&lt;/a&gt; CRD that can be cluster-wide (named &lt;code&gt;default&lt;/code&gt;) or per-Ingress.&lt;/p&gt;&lt;p&gt;Say your Ingress NGINX ConfigMap has:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;data:
  ssl-protocols: &quot;TLSv1.2 TLSv1.3&quot;
  ssl-ciphers: &quot;ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES256-GCM-SHA384:ECDHE-RSA-AES256-GCM-SHA384&quot;
  ssl-prefer-server-ciphers: &quot;true&quot;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;The Traefik equivalent is a single &lt;code&gt;TLSOption&lt;/code&gt; named &lt;code&gt;default&lt;/code&gt;, which Traefik applies cluster-wide to every route that does not specify its own:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# default-tls-options.yaml
apiVersion: traefik.io/v1alpha1
kind: TLSOption
metadata:
  name: default
  namespace: traefik
spec:
  minVersion: VersionTLS12
  cipherSuites:
    - TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256
    - TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256
    - TLS_ECDHE_ECDSA_WITH_AES_256_GCM_SHA384
    - TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384
  preferServerCipherSuites: true
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;kubectl apply -f default-tls-options.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Two things to know when you do this translation:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Cipher names&lt;/strong&gt;. NGINX uses OpenSSL names (&lt;code&gt;ECDHE-ECDSA-AES128-GCM-SHA256&lt;/code&gt;); Traefik uses Go&apos;s &lt;a href=&quot;https://pkg.go.dev/crypto/tls?ref=containous.ghost.io#pkg-constants&quot;&gt;crypto/tls names&lt;/a&gt; (&lt;code&gt;TLS_ECDHE_ECDSA_WITH_AES_128_GCM_SHA256&lt;/code&gt;). The mapping is one-to-one but the strings are different. The TLS 1.3 cipher suites in Go are non-configurable, so they&apos;re omitted from the list.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;TLS versions&lt;/strong&gt;. &lt;code&gt;ssl-protocols: &quot;TLSv1.2 TLSv1.3&quot;&lt;/code&gt; becomes &lt;code&gt;minVersion: VersionTLS12&lt;/code&gt;. Traefik will also accept TLS 1.3 unless you set &lt;code&gt;maxVersion&lt;/code&gt;. To explicitly cap at one version, set both &lt;code&gt;minVersion&lt;/code&gt; and &lt;code&gt;maxVersion&lt;/code&gt; to the same value.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The same pattern applies to the other cross-cutting keys: &lt;strong&gt;HSTS&lt;/strong&gt; (&lt;code&gt;hsts&lt;/code&gt;, &lt;code&gt;hsts-max-age&lt;/code&gt;, &lt;code&gt;hsts-include-subdomains&lt;/code&gt;) becomes a &lt;a href=&quot;https://doc.traefik.io/traefik/reference/routing-configuration/http/middlewares/headers/?ref=containous.ghost.io&quot;&gt;Headers middleware&lt;/a&gt; attached to an entryPoint, and &lt;strong&gt;PROXY protocol&lt;/strong&gt; (&lt;code&gt;use-proxy-protocol&lt;/code&gt;) becomes an &lt;a href=&quot;https://doc.traefik.io/traefik/reference/install-configuration/entrypoints/?ref=containous.ghost.io#proxyprotocol-and-load-balancers&quot;&gt;entryPoint setting&lt;/a&gt; in the same &lt;code&gt;traefik-values.yaml&lt;/code&gt; you used for install. The &lt;a href=&quot;https://doc.traefik.io/traefik/master/migrate/nginx-to-traefik/?ref=containous.ghost.io#step-0-migrate-your-global-configmap-settings&quot;&gt;ConfigMap migration step of the guide&lt;/a&gt; lists the full mapping.&lt;/p&gt;&lt;h2 id=&quot;validate-with-a-duplicated-ingress&quot;&gt;Validate With a Duplicated Ingress&lt;/h2&gt;&lt;p&gt;Now the most important part: prove that Traefik would correctly serve your Ingresses &lt;em&gt;before&lt;/em&gt; anyone reroutes traffic.&lt;/p&gt;&lt;p&gt;Because Traefik watches the new &lt;code&gt;traefik-nginx&lt;/code&gt; IngressClass, it sees none of your existing production Ingresses. That is the safe default. To validate that Traefik handles your annotations correctly, pick one or two representative Ingresses from your audit and &lt;strong&gt;duplicate them into a test namespace with the new IngressClass&lt;/strong&gt;. The original Ingresses stay on Ingress NGINX, untouched. The clones run on Traefik.&lt;/p&gt;&lt;p&gt;Pick something that exercises the annotations you care about, for example one with snippets, authentication, or rewrite rules. Then duplicate it like this:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# test/duplicate-whoami.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: app-prod-test
---
# Same Deployment + Service as in production, copied verbatim
apiVersion: apps/v1
kind: Deployment
metadata:
  name: whoami
  namespace: app-prod-test
spec:
  replicas: 1
  selector:
    matchLabels:
      app: whoami
  template:
    metadata:
      labels:
        app: whoami
    spec:
      containers:
        - name: whoami
          image: traefik/whoami
          ports:
            - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: whoami
  namespace: app-prod-test
spec:
  selector:
    app: whoami
  ports:
    - port: 80
      targetPort: 80
---
# Same Ingress as in production, with two differences:
# 1. ingressClassName: nginx -&amp;gt; traefik-nginx
# 2. host gets a -test suffix so it does not collide
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: whoami
  namespace: app-prod-test
  annotations:
    nginx.ingress.kubernetes.io/ssl-redirect: &quot;false&quot;
    nginx.ingress.kubernetes.io/configuration-snippet: |
      add_header X-Custom-Header &quot;from-snippet&quot;;
spec:
  ingressClassName: traefik-nginx
  rules:
    - host: whoami-test.example.com
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: whoami
                port:
                  number: 80
&lt;/code&gt;&lt;/pre&gt;&lt;pre&gt;&lt;code&gt;kubectl apply -f test/duplicate-whoami.yaml
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;Now hit it through Traefik via &lt;code&gt;port-forward&lt;/code&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;kubectl -n traefik port-forward deploy/traefik 18000:80 &amp;amp;

curl -i -H &quot;Host: whoami-test.example.com&quot; &amp;lt;http://localhost:18000/&amp;gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;You should see a &lt;code&gt;200 OK&lt;/code&gt;, the whoami response body, &lt;strong&gt;and the headers your annotations declared&lt;/strong&gt; (in this example, &lt;code&gt;X-Custom-Header: from-snippet&lt;/code&gt;). If the annotations land correctly here, they will land correctly in production once you move the real Ingress in the third post.&lt;/p&gt;&lt;p&gt;Repeat for two or three of your higher-risk Ingresses. The audit told you which ones deserve scrutiny; this is the place to scrutinize them. Once you are confident, delete the test namespace (or keep it as a permanent staging surface for future migrations):&lt;/p&gt;&lt;pre&gt;&lt;code&gt;kubectl delete namespace app-prod-test
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;&lt;strong&gt;Open the dashboard&lt;/strong&gt; to see what Traefik knows:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;kubectl -n traefik port-forward deploy/traefik 9000:9000 &amp;amp;
xdg-open &amp;lt;http://localhost:9000/dashboard/&amp;gt;   # use `open` on macOS
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In steady state, the dashboard will show only your test routes (since no production Ingress is in &lt;code&gt;traefik-nginx&lt;/code&gt; yet). That is the whole point: the dashboard becomes a real-time witness of what you migrate, route by route, in the third post.&lt;/p&gt;&lt;h2 id=&quot;a-pre-flight-checklist-before-you-migrate&quot;&gt;A Pre-Flight Checklist Before You Migrate&lt;/h2&gt;&lt;p&gt;Before you move to the progressive migration (the third post), confirm:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Traefik pods are healthy and running in the &lt;code&gt;traefik&lt;/code&gt; namespace&lt;/li&gt;&lt;li&gt;The &lt;code&gt;traefik-nginx&lt;/code&gt; IngressClass exists, with controller &lt;code&gt;traefik.io/ingress-controller&lt;/code&gt;&lt;/li&gt;&lt;li&gt;Your test Ingress (or two) running with &lt;code&gt;ingressClassName: traefik-nginx&lt;/code&gt; responds correctly through Traefik, with the expected annotations applied&lt;/li&gt;&lt;li&gt;Your ConfigMap-derived settings (timeouts, body sizes, allowlists) are in your values file and visible in the Traefik container args&lt;/li&gt;&lt;li&gt;The Traefik dashboard is reachable via &lt;code&gt;kubectl port-forward&lt;/code&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;No production Ingress has been switched to &lt;/strong&gt;&lt;code&gt;traefik-nginx&lt;/code&gt;&lt;strong&gt; yet.&lt;/strong&gt; Everything that matters still flows through Ingress NGINX.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If every box is checked, you have done the safest thing possible: you have a fully functional Traefik controller, validated against duplicated copies of your real Ingresses, sitting in the cluster waiting to be used. Nothing has shipped to production yet.&lt;/p&gt;&lt;h2 id=&quot;what-comes-next&quot;&gt;What Comes Next&lt;/h2&gt;&lt;p&gt;If you followed the steps above, &lt;strong&gt;everything is now in place for the migration&lt;/strong&gt;. Traefik is installed, configured, and watching its own dedicated IngressClass. Your ConfigMap-derived settings are translated. Your TLS policy is in a &lt;code&gt;TLSOption&lt;/code&gt;. You have curl-validated at least one duplicated Ingress and confirmed Traefik handles your annotations correctly. Production traffic still flows through Ingress NGINX, untouched.&lt;/p&gt;&lt;p&gt;That setup is not an accident. Every decision in this post (separate namespace, new IngressClass, no Service of its own, validation through a duplicate rather than the real Ingress, no DNS or LoadBalancer change yet) was made so that the actual migration in the third post is &lt;strong&gt;as boring and low-risk as possible&lt;/strong&gt;. There is no big-bang to schedule. When you flip the IngressClass on your first real Ingress in the third post, you are doing something you have already proven works, with an instant rollback if anything is off.&lt;/p&gt;&lt;p&gt;The next post walks through that progressive migration: moving your Ingress resources from &lt;code&gt;nginx&lt;/code&gt; to &lt;code&gt;traefik-nginx&lt;/code&gt; one at a time, using a Traefik catch-all in front of Ingress NGINX to preserve zero-downtime guarantees, and a blue-green pattern that lets you roll back at any point with a single line change. With Traefik already installed and validated, the progressive migration stops being a project and becomes a sprint task.&lt;/p&gt;&lt;h1 id=&quot;resources&quot;&gt;Resources&lt;/h1&gt;&lt;ul&gt;&lt;li&gt;Helm chart: &lt;a href=&quot;http://github.com/traefik/traefik-helm-chart?ref=containous.ghost.io&quot;&gt;github.com/traefik/traefik-helm-chart&lt;/a&gt;&lt;/li&gt;&lt;li&gt;NGINX Ingress provider reference: &lt;a href=&quot;http://doc.traefik.io/?ref=containous.ghost.io&quot;&gt;doc.traefik.io&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Migration guide: &lt;a href=&quot;http://doc.traefik.io/traefik/migrate/nginx-to-traefik?ref=containous.ghost.io&quot;&gt;doc.traefik.io/traefik/migrate/nginx-to-traefik&lt;/a&gt; (and the &lt;a href=&quot;https://doc.traefik.io/traefik/master/migrate/nginx-to-traefik/?ref=containous.ghost.io#step-0-migrate-your-global-configmap-settings&quot;&gt;ConfigMap migration section&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Migration tool: &lt;a href=&quot;http://github.com/traefik/ingress-nginx-migration?ref=containous.ghost.io&quot;&gt;github.com/traefik/ingress-nginx-migration&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Harness Engineering vs Platform Engineering: A Mental Model for How Both Win]]></title>
            <description><![CDATA[Explore where exactly the line is between platform and harness, what each plane owns, and why the line keeps getting blurred in the field.]]></description>
            <link>https://traefik.io/harness-engineering-vs-platform-engineering-a-mental-model-for-how-both-win</link>
            <guid isPermaLink="true">https://traefik.io/harness-engineering-vs-platform-engineering-a-mental-model-for-how-both-win</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Strategy]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <dc:creator><![CDATA[Sudeep Goswami, Immánuel Fodor]]></dc:creator>
            <pubDate>Thu, 07 May 2026 21:25:19 GMT</pubDate>
            <content:encoded>&lt;![CDATA[
&lt;!--kg-card-begin: html--&gt;
&lt;script type=&quot;application/ld+json&quot;&gt;
{
  &quot;@context&quot;: &quot;https://schema.org&quot;,
  &quot;@type&quot;: &quot;FAQPage&quot;,
  &quot;mainEntity&quot;: [
    {
      &quot;@type&quot;: &quot;Question&quot;,
      &quot;name&quot;: &quot;Our harness framework already has an auth plugin. Why isn&apos;t that good enough?&quot;,
      &quot;acceptedAnswer&quot;: {
        &quot;@type&quot;: &quot;Answer&quot;,
        &quot;text&quot;: &quot;It works for one agent. The problem surfaces when the second and third agents ship, built by different teams on different frameworks, each with its own auth plugin configured differently. At that point there is no single place to answer which agents are allowed to call this data source; the answer is scattered across application repositories. Authorization needs to be enforced at a control point that is independent of any individual harness, keyed on agent identity, not on which framework happened to ship a plugin first.&quot;
      }
    },
    {
      &quot;@type&quot;: &quot;Question&quot;,
      &quot;name&quot;: &quot;What is the minimum viable platform layer for a team just starting with agents?&quot;,
      &quot;acceptedAnswer&quot;: {
        &quot;@type&quot;: &quot;Answer&quot;,
        &quot;text&quot;: &quot;Three things: identity for the calling agent, an audit trail of every model and tool call, and a single egress point for model traffic. Everything else (e.g., cost attribution, content filtering, regional routing) can be layered on top. The mistake most teams make is skipping the egress point entirely and wiring agents directly to model APIs. That decision is cheap to make and expensive to undo once the fleet grows.&quot;
      }
    },
    {
      &quot;@type&quot;: &quot;Question&quot;,
      &quot;name&quot;: &quot;How do we handle the latency penalty of out-of-process governance?&quot;,
      &quot;acceptedAnswer&quot;: {
        &quot;@type&quot;: &quot;Answer&quot;,
        &quot;text&quot;: &quot;The penalty is real but routinely overstated. A well-deployed gateway adds single-digit milliseconds to a call that already takes hundreds of milliseconds to complete a model round-trip. The more important question is where latency actually matters in an agentic workflow. And the answer is almost always inside the orchestration loop, which is harness territory. Platform-layer governance sits outside that loop. Optimize the harness for latency; build the platform for correctness and auditability.&quot;
      }
    },
    {
      &quot;@type&quot;: &quot;Question&quot;,
      &quot;name&quot;: &quot;We already have three different harness frameworks in production. Where do we start?&quot;,
      &quot;acceptedAnswer&quot;: {
        &quot;@type&quot;: &quot;Answer&quot;,
        &quot;text&quot;: &quot;Start with the platform, not the harnesses. Standardizing harness frameworks is a multi-team, multi-quarter negotiation. Standardizing the egress layer is not; it is an infrastructure decision that can be made once and applied uniformly. Get identity, audit, and model routing consistent across all three harnesses first. Once the platform seam is clean, harness consolidation becomes optional rather than urgent.&quot;
      }
    },
    {
      &quot;@type&quot;: &quot;Question&quot;,
      &quot;name&quot;: &quot;As models absorb more harness capabilities, does the platform layer shrink too?&quot;,
      &quot;acceptedAnswer&quot;: {
        &quot;@type&quot;: &quot;Answer&quot;,
        &quot;text&quot;: &quot;The opposite. As self-verification, planning, and tool use migrate into the model, the harness gets thinner and the calls leaving the agent process get more consequential, not less. A model that autonomously selects and invokes tools is making more decisions that require audit, authorization, and cost attribution, not fewer. Every capability that moves from the harness into the model is a capability that now needs to be governed at the platform layer rather than observed inside a single agent process.&quot;
      }
    }
  ]
}
&lt;/script&gt;
&lt;!--kg-card-end: html--&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/use-this-one-harness-vs-plaform.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/05/use-this-one-harness-vs-plaform.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/05/use-this-one-harness-vs-plaform.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/05/use-this-one-harness-vs-plaform.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/use-this-one-harness-vs-plaform.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Two posts in early 2026 reframed how the industry thinks about agent quality. LangChain&apos;s Deep Agents team&lt;a href=&quot;https://blog.langchain.com/improving-deep-agents-with-harness-engineering/?ref=containous.ghost.io&quot;&gt; &lt;u&gt;published harness engineering numbers&lt;/u&gt;&lt;/a&gt; that moved their coding agent from outside the Top 30 to rank 5 on Terminal-Bench 2.0, a 13.7-point gain achieved by holding GPT-5.2-Codex fixed and changing only system prompts, tools, and middleware. A few weeks later, Cursor published&lt;a href=&quot;https://cursor.com/blog/continually-improving-agent-harness?ref=containous.ghost.io&quot;&gt; &lt;u&gt;a long read&lt;/u&gt;&lt;/a&gt; on how its harness team manages context, classifies errors, runs continuous A/B tests, and tunes per model family. Then came the Cursor SDK, exposing the harness as a programmable surface to anyone. Anthropic&apos;s Opus 4.7 release notes called out self-verification as a built-in model capability. A new vernacular took hold: the model is one half, the harness is the other, and anything not in the model lives in the harness.&lt;/p&gt;&lt;p&gt;The conclusion most readers drew was that the harness is the product. That is a useful corrective. It pushes back on the model-of-the-month obsession and puts attention on the engineering work that actually compounds.&lt;/p&gt;&lt;p&gt;But the harness is only half the architecture. The other half is platform engineering, and the boundary between the two is the most consequential decision an enterprise architect makes when planning agentic systems at scale.&lt;/p&gt;&lt;p&gt;An &lt;a href=&quot;https://traefik.io/blog/fixing-ai-cross-cutting-concerns-with-gateway-pattern?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;earlier post&lt;/a&gt; argued that AI cross-cutting concerns belong at the platform layer for the same reasons HTTP cross-cutting concerns ended up at the API gateway over the past decade. This post takes that conclusion as given and asks the next question: where exactly is the line between platform and harness, what does each plane own, and why does the line keep getting blurred in the field?&lt;/p&gt;&lt;h2 id=&quot;what-harness-engineering-actually-owns&quot;&gt;What Harness Engineering Actually Owns&lt;/h2&gt;&lt;p&gt;A harness is everything wrapping the model inside a single agent process. Anatomies vary, but a useful decomposition has emerged across the major harness publications:&lt;/p&gt;&lt;p&gt;The orchestration loop (the ReAct or Thought-Action-Observation cycle), system prompt assembly, tool definitions and tool-call execution, hooks and middleware around model and tool calls, sub-agent delegation, in-process memory and state, sandboxed code execution, context window compression and offloading, lifecycle management for sessions, structured output parsing, and self-verification logic.&lt;/p&gt;&lt;p&gt;Every one of these decisions is task-specific or model-specific. The harness is where domain knowledge about a particular agent&apos;s job lives. It is the right place to encode that a coding agent should re-read its own diff before declaring done, that a research agent should plan then execute, that a support agent should escalate after three failed tool calls. The harness optimizes for one agent&apos;s task performance, token budget, and latency profile.&lt;/p&gt;&lt;p&gt;Three things follow from this scope. First, harness engineering is fundamentally an application-layer discipline. Second, harness improvements compound through observation, with techniques like tracing, evaluation harnesses, and iterative tuning against benchmarks. Third, every harness optimizes for itself.&lt;/p&gt;&lt;h2 id=&quot;what-platform-engineering-owns&quot;&gt;What Platform Engineering Owns&lt;/h2&gt;&lt;p&gt;Production agents do not run alone. A single enterprise will run dozens, often hundreds. Different teams pick different harness frameworks. Some agents call frontier APIs, some call self-hosted models, some call sovereign deployments. Some agents call MCP servers operated by the same company; others call MCP servers run by partners or third parties. Some agents serve internal users; others serve external customers under different commercial and regulatory terms.&lt;/p&gt;&lt;p&gt;The concerns that span this fleet are platform engineering concerns. Identity and authentication of the calling agent. Authorization of which tools and data each agent can touch. Audit records that a regulator or incident responder can read. Rate limiting and concurrency control across tenants. Cost attribution and FinOps quotas. Secrets handling. Content filtering for prompt and response payloads. Regional routing for data residency. Failover and circuit breaking when a model provider degrades. Consistent observability across the full traffic graph.&lt;/p&gt;&lt;p&gt;These concerns share three properties. They must be enforced consistently across agents built by different teams using different frameworks. They must be auditable from a single control point. And they must outlive any individual harness or model choice, because the harness ecosystem is moving faster than any enterprise can refactor.&lt;/p&gt;&lt;p&gt;The Triple Gate Pattern (API Gateway for north-south application traffic, AI Gateway for model traffic, MCP Gateway for tool and data-source traffic) is one expression of this platform layer. The specific pattern matters less than the architectural principle: every call leaving the agent process traverses a governed control point.&lt;/p&gt;&lt;h2 id=&quot;the-reference-architecture-blueprint&quot;&gt;The Reference Architecture Blueprint&lt;/h2&gt;&lt;p&gt;A complete agentic system has three layers with clear seams between them.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/harness-platform-targets.png&quot; class=&quot;kg-image&quot; alt=&quot;Harness, Platform, and Targets layers&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1108&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/05/harness-platform-targets.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/05/harness-platform-targets.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/05/harness-platform-targets.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/harness-platform-targets.png 2048w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;Layer 1: The harness, in-process.&lt;/strong&gt; Owns orchestration, prompt assembly, tool selection logic, sub-agent fan-out, context compression, in-process memory, and self-verification. Owned by the application team. Optimized per agent.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Layer 2: The platform, out-of-process.&lt;/strong&gt; Owns identity, authorization, audit, rate limits, cost controls, secrets, content filtering, regional routing, failover, and traffic-graph observability. Owned by platform or infrastructure engineering. Enforced uniformly across all agents.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Layer 3: The targets.&lt;/strong&gt; Models (frontier APIs, self-hosted endpoints, sovereign deployments), tools and MCP servers (internal, partner, third-party), and existing application APIs. Owned by various teams or providers, treated as governed dependencies.&lt;/p&gt;&lt;p&gt;The seam between Layer 1 and Layer 2 is the most important design decision. It is the point at which every model call, every tool invocation, every MCP request leaves the agent process. If that seam is well defined, the harness can evolve independently of the platform. The application team can rip out one harness framework and adopt another without renegotiating governance. The platform team can introduce a new policy without coordinating with every application team.&lt;/p&gt;&lt;p&gt;If the seam is poorly defined, the two layers smear into each other. Authorization decisions end up in harness middleware where the security team cannot audit them. Cost controls end up in platform code where application teams cannot tune them. Every change becomes a cross-team negotiation.&lt;/p&gt;&lt;h2 id=&quot;cross-cutting-concerns-mapped&quot;&gt;Cross-Cutting Concerns, Mapped&lt;/h2&gt;&lt;p&gt;The contested zone is the set of concerns that could plausibly live in either layer. Each entry below passes the cross-cutting test from the previous post (uniformity across applications, no domain knowledge required, systemic blast radius when wrong) but the question this post addresses is sharper: when the call leaves the agent process, what stays inside the harness and what moves to the platform?&lt;/p&gt;&lt;h3 id=&quot;concerns-owned-by-the-harness-in-process-task-specific&quot;&gt;Concerns Owned by the Harness (In-Process, Task-Specific)&lt;/h3&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Concern&lt;/th&gt;
&lt;th&gt;Reasoning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Tool selection for a given task&lt;/td&gt;
&lt;td&gt;Task-specific; depends on prompt and intermediate state&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Per-task model selection (capability fit)&lt;/td&gt;
&lt;td&gt;Depends on sub-task semantics&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Sub-agent delegation logic&lt;/td&gt;
&lt;td&gt;Internal to one agent&apos;s planning&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Context window compression&lt;/td&gt;
&lt;td&gt;Intra-loop performance optimization&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Self-verification of model output&lt;/td&gt;
&lt;td&gt;Task correctness within a single agent&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Eval and tracing of agent reasoning&lt;/td&gt;
&lt;td&gt;Reasoning is internal; benefits from harness-native observability&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Session persistence and checkpointing&lt;/td&gt;
&lt;td&gt;Internal to agent lifecycle&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;h3 id=&quot;concerns-owned-by-the-platform-out-of-process-fleet-wide&quot;&gt;Concerns Owned by the Platform (Out-of-Process, Fleet-Wide)&lt;/h3&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Concern&lt;/th&gt;
&lt;th&gt;Reasoning&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Identity of the calling agent&lt;/td&gt;
&lt;td&gt;Must be consistent across harnesses; required for audit&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Authorization to invoke a tool&lt;/td&gt;
&lt;td&gt;Enforces TBAC across all agents; cannot be self-asserted&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Secrets injection into tool calls&lt;/td&gt;
&lt;td&gt;Secrets must not enter the harness process memory&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Rate limits and concurrency caps&lt;/td&gt;
&lt;td&gt;Multi-tenant fairness and provider quotas&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Per-policy model routing (cost, region, compliance)&lt;/td&gt;
&lt;td&gt;Enterprise-wide policy, not per-task&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Failover when a model provider degrades&lt;/td&gt;
&lt;td&gt;Must be transparent to the harness; consistent SLOs&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Content filtering and DLP on prompts and responses&lt;/td&gt;
&lt;td&gt;Regulatory and data-protection consistency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Audit trail of every model and tool call&lt;/td&gt;
&lt;td&gt;Single source of truth for compliance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Traffic-graph observability and correlation&lt;/td&gt;
&lt;td&gt;Cross-agent and cross-tenant visibility&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Cost attribution by team or product&lt;/td&gt;
&lt;td&gt;Requires enforcement at the call site, not self-report&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;A simple test for any concern not listed: if the answer must be consistent across multiple agent applications, or if a regulator might ask to see it, the concern belongs at the platform. If the answer is task-specific or model-specific within one agent, the concern belongs in the harness.&lt;/p&gt;&lt;h2 id=&quot;the-governance-gravitational-pull&quot;&gt;The Governance Gravitational Pull&lt;/h2&gt;&lt;p&gt;Harness frameworks have a recurring pattern of absorbing concerns that belong at the platform layer. Recent harness releases have introduced declarative permission rules in the harness, model routing logic in harness profiles, secrets handled inside the harness process, and audit hooks bolted onto harness middleware. Each of these is technically possible. None of them scale across an enterprise.&lt;/p&gt;&lt;p&gt;The pull is structural, not malicious. Three forces drive it.&lt;/p&gt;&lt;p&gt;The first is commercial. Harness frameworks compete by being indispensable. The more concerns a harness owns, the more switching cost it accumulates. A harness that handles auth, routing, and audit is stickier than one that does only orchestration. From the vendor&apos;s perspective, this is rational behavior.&lt;/p&gt;&lt;p&gt;The second is technical. In-process is faster than out-of-process. A permission check that runs locally is microseconds; a check that traverses a network gateway is milliseconds. For a harness optimizing per-task latency, the in-process answer is always tempting.&lt;/p&gt;&lt;p&gt;The third is organizational. Application teams move faster than platform teams. When a coding agent needs a new tool yesterday, asking the platform team to onboard it next sprint is not a workable answer. So application teams build governance shortcuts inside the harness, intending to migrate them later. They rarely do.&lt;/p&gt;&lt;p&gt;The trap closes when the enterprise has five harnesses, each with its own auth model, each with its own audit format, each with its own rate-limit configuration. The CISO discovers there is no single place to ask which agents are allowed to read which data. The FinOps team discovers that cost attribution is inferred from logs scraped after the fact. The compliance team discovers that audit records are scattered across vendor-specific trace stores. By that point, retrofitting platform-layer governance requires touching every harness.&lt;/p&gt;&lt;h2 id=&quot;anti-patterns&quot;&gt;Anti-Patterns&lt;/h2&gt;&lt;p&gt;A short list of anti-patterns observed in real deployments.&lt;/p&gt;&lt;h3 id=&quot;auth-in-the-harness&quot;&gt;Auth in the Harness&lt;/h3&gt;&lt;p&gt;Authorization decisions are encoded in harness middleware or skill definitions.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Symptom&lt;/strong&gt;: The security team cannot answer &quot;which agents can call this MCP server&quot; without reading source code from multiple application repositories.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Remedy&lt;/strong&gt;: Move authorization to a gateway that enforces a uniform policy language, keyed on agent identity and task context.&lt;/p&gt;&lt;h3 id=&quot;per-product-harness-with-no-platform&quot;&gt;Per-Product Harness with No Platform&lt;/h3&gt;&lt;p&gt;Each product team picks its own harness, runs its own model contracts, and ships independently. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Symptom&lt;/strong&gt;: Many model contracts, several audit formats, no consolidated cost view.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Remedy&lt;/strong&gt;: Standardize the platform layer (gateways, identity, audit) before standardizing the harness layer. The platform should be harness-agnostic; the harness should be platform-aware.&lt;/p&gt;&lt;h3 id=&quot;harness-vendor-as-governance-vendor&quot;&gt;Harness Vendor as Governance Vendor&lt;/h3&gt;&lt;p&gt;Teams treat a harness framework&apos;s enterprise edition as the governance solution.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Symptom&lt;/strong&gt;: Governance scope is limited to whatever the harness vendor implements; introducing a second harness requires re-implementing controls.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Remedy&lt;/strong&gt;: Keep governance in the platform layer where it is harness-independent.&lt;/p&gt;&lt;h3 id=&quot;model-list-in-harness-configuration&quot;&gt;Model List in Harness Configuration&lt;/h3&gt;&lt;p&gt;Each harness ships with a hard-coded list of supported models and routing rules.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Symptom&lt;/strong&gt;: Introducing a new model means coordinating updates across every harness; deprecating one is harder still. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Remedy&lt;/strong&gt;: Harnesses should request a model class (planning, coding, summarization); the AI Gateway resolves the class to a specific model based on policy, region, and cost.&lt;/p&gt;&lt;h3 id=&quot;mcp-servers-as-direct-dependencies&quot;&gt;MCP Servers as Direct Dependencies&lt;/h3&gt;&lt;p&gt;Harnesses connect directly to MCP servers over the network without an intermediate gateway. &lt;/p&gt;&lt;p&gt;&lt;strong&gt;Symptom&lt;/strong&gt;: Every MCP server reinvents auth, rate limiting, and audit, often badly. The OWASP MCP Top 10 documents the resulting attack surface in detail.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Remedy&lt;/strong&gt;: MCP traffic flows through an MCP Gateway that handles identity, TBAC, secrets, and audit on behalf of every server behind it.&lt;/p&gt;&lt;h2 id=&quot;a-look-forward&quot;&gt;A Look Forward&lt;/h2&gt;&lt;p&gt;Two trends bear watching.&lt;/p&gt;&lt;p&gt;The harness gets thinner over time. Self-verification, planning, and tool use are migrating into the model itself. Opus 4.7&apos;s release notes call out attention to instructions and self-verification as model capabilities, which means harness components built specifically to compensate for those gaps will be absorbed. LangChain has acknowledged this trajectory explicitly, framing harness components as bets on what the model cannot yet do.&lt;/p&gt;&lt;p&gt;The platform gets thicker over time. Every regulatory regime that touches AI (the EU AI Act, sector-specific frameworks for finance and healthcare, sovereign data rules) lands at the platform layer because that is where enforcement is possible. Every cost-control reflex inside a CFO organization lands at the platform layer because that is where attribution can be enforced rather than reported. Every breach analysis lands at the platform layer because that is where the audit record lives.&lt;/p&gt;&lt;p&gt;The architectural takeaway is straightforward. Bet that the harness will keep changing. Bet that the platform will keep accreting requirements. Build the seam between them deliberately, and resist the pull to collapse them into one layer.&lt;/p&gt;&lt;p&gt;The harness is not the product. The model is not the product. The platform is not the product. The product is the agent that ships safely, scales economically, and survives an audit. That requires that both the harness and the platform are owned by the right teams and separated by a clean seam.&lt;/p&gt;&lt;h2 id=&quot;frequently-asked-questions&quot;&gt;Frequently Asked Questions&lt;/h2&gt;&lt;h3 id=&quot;our-harness-framework-already-has-an-auth-plugin-why-isnt-that-good-enough&quot;&gt;Our harness framework already has an auth plugin. Why isn&apos;t that good enough?&lt;/h3&gt;&lt;p&gt;It works for one agent. The problem surfaces when the second and third agents ship, built by different teams on different frameworks, each with its own auth plugin configured differently. At that point there is no single place to answer which agents are allowed to call this data source; the answer is scattered across application repositories. Authorization needs to be enforced at a control point that is independent of any individual harness, keyed on agent identity, not on which framework happened to ship a plugin first.&lt;/p&gt;&lt;h3 id=&quot;what-is-the-minimum-viable-platform-layer-for-a-team-just-starting-with-agents&quot;&gt;What is the minimum viable platform layer for a team just starting with agents?&lt;/h3&gt;&lt;p&gt;Three things: identity for the calling agent, an audit trail of every model and tool call, and a single egress point for model traffic. Everything else (e.g., cost attribution, content filtering, regional routing) can be layered on top. The mistake most teams make is skipping the egress point entirely and wiring agents directly to model APIs. That decision is cheap to make and expensive to undo once the fleet grows.&lt;/p&gt;&lt;h3 id=&quot;how-do-we-handle-the-latency-penalty-of-out-of-process-governance&quot;&gt;How do we handle the latency penalty of out-of-process governance?&lt;/h3&gt;&lt;p&gt;The penalty is real but routinely overstated. A well-deployed gateway adds single-digit milliseconds to a call that already takes hundreds of milliseconds to complete a model round-trip. The more important question is where latency actually matters in an agentic workflow. And the answer is almost always inside the orchestration loop, which is harness territory. Platform-layer governance sits outside that loop. Optimize the harness for latency; build the platform for correctness and auditability.&lt;/p&gt;&lt;h3 id=&quot;we-already-have-three-different-harness-frameworks-in-production-where-do-we-start&quot;&gt;We already have three different harness frameworks in production. Where do we start?&lt;/h3&gt;&lt;p&gt;Start with the platform, not the harnesses. Standardizing harness frameworks is a multi-team, multi-quarter negotiation. Standardizing the egress layer is not; it is an infrastructure decision that can be made once and applied uniformly. Get identity, audit, and model routing consistent across all three harnesses first. Once the platform seam is clean, harness consolidation becomes optional rather than urgent.&lt;/p&gt;&lt;h3 id=&quot;as-models-absorb-more-harness-capabilities-does-the-platform-layer-shrink-too&quot;&gt;As models absorb more harness capabilities, does the platform layer shrink too?&lt;/h3&gt;&lt;p&gt;The opposite. As self-verification, planning, and tool use migrate into the model, the harness gets thinner and the calls leaving the agent process get more consequential, not less. A model that autonomously selects and invokes tools is making more decisions that require audit, authorization, and cost attribution, not fewer. Every capability that moves from the harness into the model is a capability that now needs to be governed at the platform layer rather than observed inside a single agent process.&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Cross-Cutting Concerns Are Back, and the AI Stack Is Abusing the Gateway Pattern]]></title>
            <description><![CDATA[It took a decade to solve API governance cross-cutting concerns via the API gateway pattern. While AI brings new concerns, the architectural answer is the same.]]></description>
            <link>https://traefik.io/fixing-ai-cross-cutting-concerns-with-gateway-pattern</link>
            <guid isPermaLink="true">https://traefik.io/fixing-ai-cross-cutting-concerns-with-gateway-pattern</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Strategy]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <dc:creator><![CDATA[Immánuel Fodor, Sudeep Goswami]]></dc:creator>
            <pubDate>Thu, 07 May 2026 18:34:27 GMT</pubDate>
            <content:encoded>&lt;![CDATA[
&lt;!--kg-card-begin: html--&gt;
&lt;script type=&quot;application/ld+json&quot;&gt;
{
  &quot;@context&quot;: &quot;https://schema.org&quot;,
  &quot;@type&quot;: &quot;FAQPage&quot;,
  &quot;mainEntity&quot;: [
    {
      &quot;@type&quot;: &quot;Question&quot;,
      &quot;name&quot;: &quot;What is a cross-cutting concern, and how do I know if something qualifies?&quot;,
      &quot;acceptedAnswer&quot;: {
        &quot;@type&quot;: &quot;Answer&quot;,
        &quot;text&quot;: &quot;A cross-cutting concern is behavior that needs to apply consistently across many parts of a system but does not belong to any one of them. Three tests identify it cleanly. First, the uniformity test: would the organization expect every team to implement this exactly the same way? Second, the domain knowledge test: does the implementation require knowing what the application does? Third, the blast radius test: when this behavior is wrong, is the failure systemic or local? If the answer is uniform, requires no domain knowledge, and fails systemically when wrong, it is cross-cutting and belongs at a shared enforcement layer, not inside each application.&quot;
      }
    },
    {
      &quot;@type&quot;: &quot;Question&quot;,
      &quot;name&quot;: &quot;Isn&apos;t a guardrail library good enough for prompt safety?&quot;,
      &quot;acceptedAnswer&quot;: {
        &quot;@type&quot;: &quot;Answer&quot;,
        &quot;text&quot;: &quot;Guardrail libraries do what they claim at the function level. The architectural problem is placement. When five teams each import their own guardrail library with their own configuration, the organization has five policy rule sets drifting in five different directions. More fundamentally, a guardrail that lives inside the model&apos;s probabilistic reasoning loop depends on the model&apos;s decision to comply with it. That is a layer of defense. It is not enforcement. Enforcement requires an independent runtime boundary that the model cannot reason its way around.&quot;
      }
    },
    {
      &quot;@type&quot;: &quot;Question&quot;,
      &quot;name&quot;: &quot;What made the LiteLLM compromise so damaging, and could better security hygiene have prevented it?&quot;,
      &quot;acceptedAnswer&quot;: {
        &quot;@type&quot;: &quot;Answer&quot;,
        &quot;text&quot;: &quot;Better hygiene at the package level would have helped at the margins, but the root cause was architectural. The proxy ran inside the application process, which meant that compromising one package version gave the attacker access to every credential the application held (e.g., API keys, cloud credentials, Kubernetes configs, CI/CD secrets). An infrastructure-layer gateway deployed as a single hardened service has a fundamentally different attack surface. Both can be compromised, but the blast radius is not the same. The LiteLLM incident is a supply chain story on the surface and an architectural placement failure underneath.&quot;
      }
    },
    {
      &quot;@type&quot;: &quot;Question&quot;,
      &quot;name&quot;: &quot;We already have an API gateway. Does that cover our AI traffic?&quot;,
      &quot;acceptedAnswer&quot;: {
        &quot;@type&quot;: &quot;Answer&quot;,
        &quot;text&quot;: &quot;It covers the backend-and-system boundary—i.e., authentication, function-level authorization, schema validation, rate limiting—exactly as it always has. It does not cover the two new boundaries the AI stack introduces. The conversation boundary, where prompts and completions move between users and models, needs prompt injection defense, jailbreak detection, PII redaction, semantic caching, model routing, and token-level cost control. The tool-and-action boundary, where agents discover and invoke MCP tools, needs task-based access control, tool filtering, parameter validation, and tool poisoning defense. An API gateway was not built to inspect content at either of those boundaries. Extending the same architectural principle to all three trust boundaries is what the Triple Gate Pattern addresses.&quot;
      }
    },
    {
      &quot;@type&quot;: &quot;Question&quot;,
      &quot;name&quot;: &quot;How does identity work across the full agent request chain?&quot;,
      &quot;acceptedAnswer&quot;: {
        &quot;@type&quot;: &quot;Answer&quot;,
        &quot;text&quot;: &quot;An end user authenticates at the API gateway. The request hits an agent. The agent invokes an MCP tool. The tool calls a backend API. If the same identity does not flow end-to-end through that chain, the system either grants the agent broad service-account privileges, which violates least privilege, or invents application-level identity translation, which fragments governance again. Token delegation, on-behalf-of flows, and task-based access control at the gate layer are the mechanisms that keep the chain coherent. They require a privileged position in the request path that application code cannot reliably hold.&quot;
      }
    },
    {
      &quot;@type&quot;: &quot;Question&quot;,
      &quot;name&quot;: &quot;What is tool poisoning and why can&apos;t individual MCP servers defend against it?&quot;,
      &quot;acceptedAnswer&quot;: {
        &quot;@type&quot;: &quot;Answer&quot;,
        &quot;text&quot;: &quot;Tool poisoning exploits the fact that MCP tool descriptions are injected directly into the model context. A tool that appears benign by name can carry hidden instructions in its description that the model will follow, including redirecting actions, exfiltrating data, or chaining to unauthorized tool calls. Individual MCP servers cannot defend against this because the attack targets the model reading the description, not the server serving it. The only layer with full visibility into the tool description before the model sees it is a gateway sitting between the agent and the MCP server catalog. That is where tool poisoning defense has to live.&quot;
      }
    }
  ]
}
&lt;/script&gt;
&lt;!--kg-card-end: html--&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/cross-cutting-concerns-blog_no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;opposing diagrams where security is either managed at the service level or at the gateway level&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/05/cross-cutting-concerns-blog_no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/05/cross-cutting-concerns-blog_no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/05/cross-cutting-concerns-blog_no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/cross-cutting-concerns-blog_no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Some architectural problems do not stay solved. They come back every time the system grows by an order of magnitude, with the same root conditions in a more demanding form. Cross-cutting concerns are one such problem.&lt;/p&gt;&lt;p&gt;They were named decades ago, in the era of aspect-oriented programming. They were resolved at the network layer over the 2010s, when API gateways absorbed authentication, rate limiting, observability, and policy enforcement from every microservice and moved them into a shared infrastructure layer. That lesson took roughly a decade to settle, and the cost of learning it was paid in production breaches, audit findings, and engineering rework done late.&lt;/p&gt;&lt;p&gt;The same pattern is now playing out at the AI layer, on a faster timeline, with larger blast radii. The cross-cutting concerns specific to AI traffic, including prompt safety, content filtering, model fallback, agent authorization, token cost governance, and tool poisoning defense, are being implemented in application code, imported Python libraries, and inside individual MCP servers. The deployment data is already mainstream. The case studies are already public. The architectural answer is not new, but the conditions that make it the right answer are stronger in 2026 than at any prior moment.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-209462438701&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;209462438701&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLInooxHDqAlle07ZcpU56l72GmrSKhntCIqSYTdPSrjskv35pYEsxqERWPO%2F0rufV8QLBP6YI9PEn%2FHnUVqNH3c9XsMXGW2GFmYg3c5W08YdM3jeNjbQfGgSuoPL98fUEBsX42OPB5SFcHmiY%2BdLb8WzFn1RBpapRJLjwjN6Bjn9THdoLDwemPFV%2BTVRxKCouQB7JLJYxlh%2F%2FNybQi5Bg%3D%3D&amp;webInteractiveContentId=209462438701&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;7cs-ai-governance-ebook-promo-square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-209462438701.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;what-counts-as-a-cross-cutting-concern-and-what-does-not&quot;&gt;What Counts as a Cross-Cutting Concern, and What Does Not&lt;/h2&gt;&lt;p&gt;A cross-cutting concern is behavior that needs to apply consistently across many parts of a system but does not belong to any one of them. Authentication is the textbook example. Every protected endpoint needs it. None of them defines it. Logging, observability, rate limiting, retries, audit, content safety, encryption in transit, and policy enforcement work the same way. They appear everywhere, but they do not encode the business knowledge of any specific application.&lt;/p&gt;&lt;p&gt;Domain logic is the opposite. The rule that a Premium customer can keep more saved searches than a Standard customer is domain logic. It depends on knowledge of what the application does. It cannot be implemented uniformly across the company because it is specific to this product. It belongs in the application that owns the product.&lt;/p&gt;&lt;p&gt;The line is not always obvious, and that is exactly where things end up in the wrong place. A three-question test sharpens the call.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The uniformity test:&lt;/strong&gt; would the organization expect every team to implement this exactly the same way? Authentication, yes. Refund eligibility, no.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The domain knowledge test:&lt;/strong&gt; does the implementation require knowing what the application does? Rate limiting, no. Approving a wire transfer, yes.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The blast radius test:&lt;/strong&gt; when this behavior is wrong, is the failure systemic or local? An auth bypass shipping in fifty applications is a company-wide incident. A pricing bug in one product is a local incident.&lt;/p&gt;&lt;p&gt;When a behavior is uniform, requires no domain knowledge, and fails systemically when wrong, it is cross-cutting and belongs at a layer that enforces it once for everyone. When it goes the other way, it is domain logic and belongs in the application.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://owasp.org/API-Security/editions/2023/en/0x11-t10/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OWASP&apos;s API Security Top 10&lt;/u&gt;&lt;/a&gt; cleanly illustrates the line. Function-level authorization, the check that asks whether this user is allowed to call this kind of endpoint at all, is cross-cutting. The same logic applies across every endpoint that requires the same role. Object-level authorization, the check that asks whether this user owns this specific record, is closer to domain logic. It depends on the business relationship between the caller and the object. &lt;a href=&quot;https://owasp.org/API-Security/editions/2023/en/0xa1-broken-object-level-authorization/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OWASP&apos;s guidance&lt;/u&gt;&lt;/a&gt; is explicit that object-level authorization checks must live in the function that handles the object, because that is where the domain knowledge lives. The rule is not &quot;everything goes in the gateway.&quot; It is &quot;each cross-cutting concern goes at the right shared layer, and each domain check stays in the application that knows the domain.&quot;&lt;/p&gt;&lt;p&gt;The easiest way to think about this principle is cross-cutting concerns become dangerous when they are implemented locally but expected to behave globally. The risk to watch for is treating a cross-cutting concern as application code and depending on every team across the organization to implement it correctly, consistently, and in lockstep over time.&lt;/p&gt;&lt;h2 id=&quot;why-this-matters-more-in-2026-than-ever&quot;&gt;Why This Matters More in 2026 Than Ever&lt;/h2&gt;&lt;p&gt;Six conditions, each more pronounced now than at any prior moment, push cross-cutting concerns out of application code and into a dedicated layer.&lt;/p&gt;&lt;h3 id=&quot;1-scale&quot;&gt;1. Scale&lt;/h3&gt;&lt;p&gt;A typical enterprise deployment in 2026 runs hundreds to thousands of services, not dozens. &lt;a href=&quot;https://www.wiz.io/reports/state-of-ai-in-the-cloud-2026?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Wiz Research&apos;s State of AI in the Cloud 2026 report&lt;/u&gt;&lt;/a&gt; found that 90 percent of analyzed cloud environments run self-hosted AI software on top of an existing microservices estate, with managed AI services in 81 percent and Model Context Protocol servers in roughly 80 percent. Each additional service is another place where authentication, rate limiting, observability, and policy enforcement could drift. The probability that fifty independently implemented copies of an authorization check are all correct at any given moment approaches zero. At a thousand copies, it is zero. Modern scale makes scattered cross-cutting code a statistical certainty of inconsistency.&lt;/p&gt;&lt;h3 id=&quot;2-velocity&quot;&gt;2. Velocity&lt;/h3&gt;&lt;p&gt;Continuous deployment pipelines push code to production multiple times a day, and AI traffic compounds the pressure with model swaps, prompt updates, and tool catalog changes happening on an even faster cadence. When cross-cutting policy lives inside the application, every deployment is a chance to silently disable it. A teammate refactors the auth middleware. A pull request &quot;simplifies&quot; the logging path. A library update changes the default rate-limit behavior. None of these are reliably caught at code review, because the team owns its own policy. They are caught, if at all, by an audit weeks later. A policy enforced at a separate layer, with its own change-management surface and its own deployment cadence, does not drift by accident.&lt;/p&gt;&lt;h3 id=&quot;3-compliance-density&quot;&gt;3. Compliance Density&lt;/h3&gt;&lt;p&gt;Regulatory frameworks now stack on top of each other in ways they did not in 2015. SOC 2 Type II, ISO 27001, HIPAA, PCI DSS, GDPR, the EU AI Act, the EU Cyber Resilience Act, and sector-specific regulations all require uniform enforcement of access control, data handling, and audit trails. Demonstrating compliance is straightforward when policy is expressed once and enforced uniformly. It is nearly impossible when policy is reimplemented in every application in every language by every team. Auditors do not accept &quot;the policy is in the code&quot; when there are 200 copies of the code.&lt;/p&gt;&lt;h3 id=&quot;4-threat-economics&quot;&gt;4. Threat Economics&lt;/h3&gt;&lt;p&gt;Attackers automate. The economics of exploitation in 2026 reward adversaries who can detect inconsistencies at machine speed. When one application enforces a rate limit, and another does not, automated reconnaissance finds the gap in minutes. When one MCP server validates tool inputs and another does not, the inconsistency is the attack surface. The &lt;a href=&quot;https://newsroom.ibm.com/2026-02-25-IBM-2026-X-Force-Threat-Index-AI-Driven-Attacks-are-Escalating-as-Basic-Security-Gaps-Leave-Enterprises-Exposed?ref=containous.ghost.io&quot;&gt;&lt;u&gt;IBM X-Force 2026 Threat Intelligence Index&lt;/u&gt;&lt;/a&gt; reports a 44 percent year-over-year increase in attacks that began with the exploitation of public-facing applications, citing missing authentication controls and AI-enabled vulnerability discovery as primary drivers. Wiz Research has separately observed malware that uses LLMs to dynamically generate commands and adapt execution at runtime. Defenders cannot afford the inconsistency that scattered cross-cutting code produces, because attackers will find it before the audit does.&lt;/p&gt;&lt;h3 id=&quot;5-supply-chain-reality&quot;&gt;5. Supply Chain Reality &lt;/h3&gt;&lt;p&gt;Modern application code imports tens of thousands of dependencies transitively. Every imported library that handles a cross-cutting concern is a credential and privilege boundary that an attacker can pursue. The LiteLLM compromise in March 2026 made this concrete. When an LLM proxy lives as a Python library inside the application process, compromise of the library is compromise of every credential the application holds. Externalizing the logic to a separate, hardened service that the platform team operates contains the blast radius by design. It is the difference between one credential leak and forty thousand.&lt;/p&gt;&lt;h3 id=&quot;6-polyglot-reality&quot;&gt;6. Polyglot Reality&lt;/h3&gt;&lt;p&gt;The modern enterprise stack is not one language. A typical AI-adjacent deployment includes Python application code calling Go inference servers, Rust ingest pipelines, Node.js front ends, and Java backend services. Cross-cutting concerns implemented as Python decorators do not protect the Go service. Rate limiting implemented in a Java filter does not apply to the Rust pipeline. The only way to enforce consistent policy across a polyglot estate is to enforce it at the network boundary that all the languages share.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;A seventh condition&lt;/strong&gt; belongs alongside the sixth, and it is unique to this decade. Token-level cost governance, model fallback and failover, semantic caching, prompt safety, jailbreak detection, PII redaction, and tool-use authorization are cross-cutting concerns that did not exist a few years ago. They cut across applications the same way authentication does, but they also cut across model providers, agent runtimes, and tool catalogs. Centralizing them is not a generalization of an old principle. It is the only practical way to handle them.&lt;/p&gt;&lt;p&gt;These conditions are stronger now than ever. Each one independently argues for moving cross-cutting concerns out of the application runtime. Together, the case is overwhelming.&lt;/p&gt;&lt;h2 id=&quot;the-api-gateway-a-pattern-that-already-worked&quot;&gt;The API Gateway: A Pattern That Already Worked&lt;/h2&gt;&lt;p&gt;The principle has already been proven for HTTP traffic. The API gateway pattern, formalized in the microservices canon and now standard in enterprise architecture, exists because the industry confronted these forces a decade ago at the network layer and concluded that authentication, rate limiting, request validation, observability, and policy enforcement belonged in a single layer rather than scattered across hundreds of services. &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/architecture/microservices/design/gateway?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Microsoft&apos;s API gateway guidance&lt;/u&gt;&lt;/a&gt; states the case directly: the gateway centralizes client-service interaction and performs cross-cutting tasks such as authentication, SSL termination, mutual TLS, and rate limiting. &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/architecture/patterns/gateway-offloading?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Microsoft&apos;s Gateway Offloading pattern&lt;/u&gt;&lt;/a&gt;, the related architectural reference, identifies certificate management, authentication, SSL termination, monitoring, protocol translation, and throttling as concerns that should be moved out of individual services and into the gateway tier.&lt;/p&gt;&lt;p&gt;The validation came from production telemetry, not from theory. Organizations that placed cross-cutting concerns at the gateway layer ran more reliably, audited more cleanly, recovered from incidents faster, and onboarded new services without re-implementing security primitives. Organizations that did not, paid the cost in breaches, audit findings, and engineering rework. After a decade of empirical settlement, the API gateway became default infrastructure: a tool that platform teams reach for early in any architecture conversation.&lt;/p&gt;&lt;p&gt;That conclusion still holds even though the traffic shape has changed. If anything, the traffic pattern has changed in ways that strengthen the case.&lt;/p&gt;&lt;h2 id=&quot;a-new-dimension-the-caller-may-be-an-agent&quot;&gt;A New Dimension: The Caller May Be an Agent&lt;/h2&gt;&lt;p&gt;The original API gateway pattern made an implicit assumption about the caller. The caller was a known type: a human user, a front-end application, an internal service, or a partner integration. Each of those has a stable identity, a request shape that maps cleanly to a documented API, and behavior that does not surprise the operator.&lt;/p&gt;&lt;p&gt;The AI stack changes the caller. An agent, executing a multi-step plan against a model and a tool catalog, may now be the entity deciding which API to call, which MCP tool to invoke, and which prompt to send to which model. The caller is not just sending a request. The caller is interpreting intent, selecting actions, and chaining tool invocations on the fly.&lt;/p&gt;&lt;p&gt;That changes what the cross-cutting concern surface needs to cover.&lt;/p&gt;&lt;p&gt;The controls that gate API access (rate limit, auth, schema validation) are no longer sufficient on their own, because the caller may invoke a sequence of perfectly authorized API calls that, taken together, exfiltrate data the user never had permission to expose, or take actions the user never explicitly approved. &lt;a href=&quot;https://genai.owasp.org/llm-top-10/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OWASP&apos;s LLM Top 10&lt;/u&gt;&lt;/a&gt; names this risk explicitly as excessive agency: an agent with broad tool access can compose actions in ways no individual permission grant intended. Unbounded consumption is the same risk pointed at cost rather than data.&lt;/p&gt;&lt;p&gt;The caller&apos;s inputs are also different. Prompts, retrieved documents, tool descriptions, and tool results are content, not structured requests. Prompt injection therefore becomes a class of vulnerability that a traditional API gateway is not built to detect. OWASP&apos;s LLM Top 10 ranks &lt;a href=&quot;https://genai.owasp.org/llmrisk/llm01-prompt-injection/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;prompt injection&lt;/u&gt;&lt;/a&gt; as the leading risk to LLM-integrated systems. The MCP specification&apos;s own &lt;a href=&quot;https://modelcontextprotocol.io/docs/tutorials/security/security_best_practices?ref=containous.ghost.io&quot;&gt;&lt;u&gt;security guidance&lt;/u&gt;&lt;/a&gt; warns about confused deputy risks, broad tokens, expanded blast radius, audit noise, and privilege chaining as protocol-level concerns that the implementer has to address.&lt;/p&gt;&lt;p&gt;The right response is not to abandon the API gateway. It is to extend the same principle to two new boundaries the AI stack has introduced: the conversation boundary, where prompts and completions live, and the tool-and-action boundary, where agents discover and invoke tools. Each new boundary is its own enforcement point. All three need to operate from the same identity, the same audit trail, and the same policy fabric.&lt;/p&gt;&lt;h2 id=&quot;guardrails-are-not-governance&quot;&gt;Guardrails Are Not Governance&lt;/h2&gt;&lt;p&gt;A useful distinction is becoming clearer in the academic and industry literature on agentic AI risk: prompt-level guardrails, model safety filters, and LLM-as-judge checks are useful signals, but they are not governance. They sit inside the model&apos;s probabilistic reasoning loop and depend on the model’s decision to comply with them. That is a layer of defense. It is not enforcement.&lt;/p&gt;&lt;p&gt;A recent paper by Szpruch, Sudjianto, Bhatti, and Ang on &lt;a href=&quot;https://papers.ssrn.com/sol3/papers.cfm?abstract_id=6567199&amp;ref=containous.ghost.io&quot;&gt;&lt;u&gt;scalable runtime governance for agentic AI in financial services&lt;/u&gt;&lt;/a&gt;, drawing on Model Risk Management practice, makes the architectural case directly. Outcomes in agentic systems emerge from execution trajectories, rather than from a stable input-output mapping. The failures that matter (unsafe tool use, skipped approvals, privacy breaches, uncontrolled side effects) are process failures that surface during runtime, across the sequence of model calls, retrievals, tool invocations, and state transitions that make up the agent&apos;s actual work. Effective oversight requires runtime enforcement: governance-semantic telemetry, continuous authorization, temporal policy conformance checking, drift monitoring over trajectory health, and tier-based containment. Related work, including the &lt;a href=&quot;https://arxiv.org/abs/2508.03858?ref=containous.ghost.io&quot;&gt;&lt;u&gt;MI9 framework&lt;/u&gt;&lt;/a&gt; from researchers at Barclays&apos; Model Risk Management group and the &lt;a href=&quot;https://arxiv.org/abs/2603.16586?ref=containous.ghost.io&quot;&gt;&lt;u&gt;&quot;Policies on Paths&quot;&lt;/u&gt;&lt;/a&gt; formulation in recent EU AI Act compliance research, converges on the same architectural conclusion.&lt;/p&gt;&lt;p&gt;The implication is direct. Governance for agentic AI cannot live inside the application&apos;s own prompt template, inside an in-process guardrail library, or inside the model&apos;s instruction tuning. It needs to live at the runtime boundary, where actions, tool calls, identity, approvals, and side effects pass through enforcement points that are independent of the model&apos;s probabilistic reasoning.&lt;/p&gt;&lt;p&gt;This is the cross-cutting concern argument restated in the language of regulated AI risk. The runtime governance that the literature is calling for needs a runtime enforcement point. If policy, telemetry, authorization, and containment are embedded separately inside every AI application, every MCP server, and every backend API, the organization has governance in theory but fragmentation in practice.&lt;/p&gt;&lt;h2 id=&quot;the-ai-stack-is-re-running-the-anti-pattern&quot;&gt;The AI Stack Is Re-Running the Anti-Pattern&lt;/h2&gt;&lt;p&gt;Current AI infrastructure deployment patterns systematically violate the principle the API gateway pattern proved out.&lt;/p&gt;&lt;p&gt;LLM proxy libraries are imported into the application code. LiteLLM, the most widely deployed example, is typically loaded as a Python module running in the application process, holding API keys and routing requests across providers. The proxy lives in the runtime. Every application that wants centralized routing imports its own copy. Every application that imports it inherits the proxy&apos;s full security surface, including all the credentials it holds.&lt;/p&gt;&lt;p&gt;Guardrail libraries are imported into the application code. NVIDIA&apos;s &lt;a href=&quot;https://github.com/NVIDIA-NeMo/Guardrails?ref=containous.ghost.io&quot;&gt;&lt;u&gt;NeMo Guardrails&lt;/u&gt;&lt;/a&gt; ships as a Python package that wraps a LangChain chain or any Runnable. The library does what it claims. The architectural placement, however, means that prompt safety lives within whichever team&apos;s application imports it. When five applications in the same enterprise each import their own guardrail library with their own configuration, the organization&apos;s policy footprint is five distinct rule sets drifting in five different directions.&lt;/p&gt;&lt;p&gt;MCP servers ship with ad-hoc per-server authentication. The Model Context Protocol, &lt;a href=&quot;https://www.anthropic.com/news/model-context-protocol?ref=containous.ghost.io&quot;&gt;&lt;u&gt;introduced by Anthropic in November 2024&lt;/u&gt;&lt;/a&gt;, has seen extraordinary adoption with over 5,000 community-developed servers within months of release. The current specification references &lt;a href=&quot;https://modelcontextprotocol.io/specification/2025-11-25/basic/authorization?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OAuth 2.1, protected resource metadata, and authorization server discovery&lt;/u&gt;&lt;/a&gt;, but the protocol delegates the actual enforcement to each implementer. MCP standardizes how tools are discovered and invoked. It does not, on its own, standardize how they are governed. When every MCP server is responsible for its own auth, the result is dozens of different auth implementations across dozens of MCP servers, plus a tool-poisoning attack surface where a malicious tool description can hijack the model that is reading it.&lt;/p&gt;&lt;p&gt;Run the three-question test against any of these patterns. Is prompt safety expected to behave uniformly across applications? Yes. Does prompt safety require domain knowledge of each application&apos;s functionality? No, with rare exceptions. Is a prompt safety failure systemic when it ships in dozens of apps? Yes. Prompt safety is cross-cutting by every test, and yet the deployed pattern treats it as application code.&lt;/p&gt;&lt;p&gt;The same test applies to LLM cost governance, model fallback, content filtering, agent-tool authorization, and audit. They are cross-cutting by every test. The default deployment pattern places them in the runtime anyway. The result is the AI version of pre-gateway microservices sprawl: every application validates prompts differently, every agent handles tool permissions differently, every MCP server makes its own authorization assumptions, every model integration has different rate limits and retry logic and cost ceilings, every team produces a different audit trail, and security cannot answer the simple question, what did this agent see, decide, call, and change?&lt;/p&gt;&lt;p&gt;This is the pre-API-gateway pattern, applied to AI. It violates all six conditions outlined above. It does not scale. It drifts on every deployment. It does not produce uniform compliance evidence. It hands attackers exploitable inconsistencies. It widens the supply chain’s attack surface. It does not work in polyglot stacks. And it cannot solve the AI-specific concerns it was deployed to solve, because each application solves them differently.&lt;/p&gt;&lt;h2 id=&quot;the-case-studies-are-already-public&quot;&gt;The Case Studies Are Already Public&lt;/h2&gt;&lt;p&gt;The cost is not hypothetical.&lt;/p&gt;&lt;p&gt;In March 2026, attackers compromised the LiteLLM Python package. Two malicious versions, 1.82.7 and 1.82.8, were published to PyPI on March 24 after the maintainer&apos;s publishing token was stolen through an upstream supply chain compromise of the Trivy security scanner. Wiz Research observed LiteLLM running in approximately 36 percent of the cloud environments it analyzed. The package is downloaded more than three million times per day, and &lt;a href=&quot;https://futuresearch.ai/blog/litellm-hack-were-you-one-of-the-47000/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;FutureSearch&apos;s analysis of BigQuery PyPI download logs&lt;/u&gt;&lt;/a&gt; found that the malicious versions were installed roughly 47,000 times before PyPI quarantined the package. Because the proxy ran inside the application process, the malicious payload had access to environment variables, API keys, cloud credentials for AWS, GCP, and Azure, Kubernetes configs, CI/CD secrets, and SSH keys. The investigation, based on reports by &lt;a href=&quot;https://snyk.io/blog/poisoned-security-scanner-backdooring-litellm/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Snyk&lt;/u&gt;&lt;/a&gt;, &lt;a href=&quot;https://www.sonatype.com/blog/compromised-litellm-pypi-package-delivers-multi-stage-credential-stealer?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Sonatype&lt;/u&gt;&lt;/a&gt;, &lt;a href=&quot;https://securitylabs.datadoghq.com/articles/litellm-compromised-pypi-teampcp-supply-chain-campaign/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Datadog Security Labs&lt;/u&gt;&lt;/a&gt;, and &lt;a href=&quot;https://www.trendmicro.com/en_us/research/26/c/inside-litellm-supply-chain-compromise.html?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Trend Micro&lt;/u&gt;&lt;/a&gt;, traced the campaign to a group tracked as TeamPCP. Datadog Security Labs and other responders advised that any host or CI job that installed the affected versions should be treated as a full credential exposure event, not a routine package update gone wrong.&lt;/p&gt;&lt;p&gt;Tool poisoning is the MCP equivalent. First published by Invariant Labs and now identified in the &lt;a href=&quot;https://owasp.org/www-project-mcp-top-10/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;emerging OWASP MCP Top 10 framework&lt;/u&gt;&lt;/a&gt;, currently in beta, tool poisoning exploits the fact that MCP tool descriptions are injected directly into the model context. A tool that appears benign by name can carry hidden instructions in its description that the model will follow. Academic threat modeling using STRIDE and DREAD identifies tool poisoning as the most prevalent and impactful client-side vulnerability in MCP today. The defense is not a smarter individual MCP server. It is an enforcement layer that inspects and authorizes every tool call before the model sees it.&lt;/p&gt;&lt;p&gt;The scale of exposure is no longer experimental. Wiz&apos;s 2026 report found that MCP servers were running in roughly 80% of analyzed cloud environments, with 5%of those environments running at least one internet-facing MCP server. Self-hosted AI agent technology was found in 57% of organizations. The footprint expanded faster than any infrastructure standard in recent enterprise computing memory, largely without architectural review.&lt;/p&gt;&lt;p&gt;Reliability data points the same way. &lt;a href=&quot;https://www.datadoghq.com/state-of-ai-engineering/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Datadog&apos;s analysis&lt;/u&gt;&lt;/a&gt; of customer LLM call traces found that in February 2026, 5% of all LLM call spans returned errors, and roughly 60% of those errors were rate-limit failures from upstream providers. In March, rate-limit errors alone accounted for nearly 8.4 million failed spans. When fallback, retry, caching, and budget enforcement live in each application&apos;s code, each application owns its own resilience problem, and each solves it differently. Centralizing that logic, exactly as the API gateway pattern centralizes HTTP rate limiting, is the obvious response.&lt;/p&gt;&lt;h2 id=&quot;the-triple-gate-pattern-one-control-plane-three-trust-boundaries&quot;&gt;The Triple Gate Pattern: One Control Plane, Three Trust Boundaries&lt;/h2&gt;&lt;p&gt;AI traffic in 2026 crosses three distinct trust boundaries, each with its own cross-cutting concerns.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/triple-gate-diagram.jpg&quot; class=&quot;kg-image&quot; alt=&quot;triple gate pattern&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1892&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/05/triple-gate-diagram.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/05/triple-gate-diagram.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/05/triple-gate-diagram.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/triple-gate-diagram.jpg 2104w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The &lt;strong&gt;conversation boundary&lt;/strong&gt;, where prompts and completions move between users and models, is the AI Gateway&apos;s domain. Prompt injection defense, jailbreak detection, topic control, PII redaction, semantic caching, model routing, token-level cost control, model failover, and model observability all belong here. Every one of these passes the three-question test for cross-cutting.&lt;/p&gt;&lt;p&gt;The &lt;strong&gt;tool-and-action boundary&lt;/strong&gt;, where agents discover MCP tools and invoke them with parameters, is the MCP Gateway&apos;s domain. Task-based access control, tool filtering, parameter validation, on-behalf-of token delegation, session routing, and tool-level audit belong here. Tool poisoning defense lives here as well, because the gateway is the only layer in the chain with full visibility into the tool description before the model sees it.&lt;/p&gt;&lt;p&gt;The &lt;strong&gt;backend-and-system boundary&lt;/strong&gt;, where the result of all that activity becomes an actual API call into a system of record, is the API Gateway&apos;s domain. Authentication, function-level authorization, schema validation, rate limiting, WAF, and lifecycle governance all continue to belong here, exactly as they have for the past decade.&lt;/p&gt;&lt;p&gt;These three boundaries are &lt;a href=&quot;https://traefik.io/blog/the-triple-ai-security-gap?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;the Triple Gate Pattern&lt;/a&gt;. They need to operate as one control plane, not three separate systems.&lt;/p&gt;&lt;p&gt;This is not the same as putting everything in the gateway. Each gate enforces the cross-cutting policy envelope at its trust boundary. The applications behind the gates still own their domain decisions: business rules, workflow logic, and the object-level authorization checks that depend on the relationship between the caller and the specific data being accessed. The gateway should enforce the shared runtime concerns. The application still owns the domain-specific ones. That distinction is what keeps the pattern useful rather than overreaching.&lt;/p&gt;&lt;p&gt;When each gate is implemented as application runtime code rather than infrastructure, the pattern fragments. The API gateway is in the infrastructure layer, where it has always been. The AI gateway is a library inside one team&apos;s Python service. The MCP gateway is a sidecar pattern built by another team last quarter, with different policy semantics and a different config language. The three gates do not see each other. The audit trail does not connect. A request that enters through the API gateway as an authenticated user X can emerge as a privileged service account at the MCP gateway because the application in between handled identity its own way. The cost-governance policy at the AI gateway is unaware of the rate-limit policy at the API gateway, because they are different systems run by different teams on different release cadences.&lt;/p&gt;&lt;p&gt;The compounding effect is operational. An LLM proxy sees the model interaction but not the agent actions that follow. An MCP proxy sees tool calls but not the LLM conversation that triggered them. An API gateway sees the inbound user request but loses sight of what the agent did downstream. Each layer knows part of the story. No one knows the full chain. When an incident occurs, the investigation has to stitch together logs from three systems with three different identity models, three different policy languages, and three different teams to find out what happened.&lt;/p&gt;&lt;p&gt;What security and platform teams actually need: one control plane, one declarative policy expressing what is allowed at each gate, one identity propagated across all three, one audit trail covering the full request chain, and one operational surface for incident response. That is the case for treating AI Gateway and MCP Gateway as infrastructure-layer concerns rather than application-layer libraries. The same case that the industry already accepted for the API gateway applies consistently to the new traffic types.&lt;/p&gt;&lt;h2 id=&quot;a-few-points-that-deserve-their-own-spotlight&quot;&gt;A Few Points That Deserve Their Own Spotlight&lt;/h2&gt;&lt;p&gt;Supply chain placement is part of the cross-cutting concern surface. The LiteLLM incident is widely framed as a supply chain attack, which it was. It is also, more fundamentally, an architectural placement failure. A cross-cutting concern that had to be implemented somewhere was implemented inside every application&apos;s process space. The supply-chain attack succeeded because the proxy lived in the runtime. An infrastructure-layer gateway, deployed as a single hardened service that the platform team operates, has a fundamentally different attack surface than a Python library imported by every application team in the company. Both can be compromised. The blast radius is not the same.&lt;/p&gt;&lt;p&gt;Identity has to flow through the chain. An end user authenticates at the API gateway. The request hits an agent. The agent invokes an MCP tool. The tool calls a backend API. If the same identity does not flow end-to-end through this chain, the system either has to grant the agent broad service-account privileges, which violates least privilege, or invent application-level identity translation, which fragments yet again. Token delegation, on-behalf-of flows, and task-based access control at the gate layer are the mechanisms that keep this chain coherent. They cannot be implemented well as application code, because they require a privileged position in the request path.&lt;/p&gt;&lt;p&gt;Memory safety and language choice matter at the gate. CISA&apos;s January 2026 memory safety roadmap deadline, NSA and FBI guidance, and the EU Cyber Resilience Act all push critical infrastructure toward the adoption of memory-safe languages. The control plane sitting in front of every API, every LLM call, and every MCP tool invocation is critical infrastructure by any reasonable definition. The gate cannot be a place where C and C++ vulnerabilities still live.&lt;/p&gt;&lt;h2 id=&quot;where-to-go-from-here&quot;&gt;Where to Go From Here&lt;/h2&gt;&lt;p&gt;Cross-cutting concerns belong in a layer where they can be expressed once and enforced consistently. That is true today, in 2026, for the same reasons that made it true for HTTP traffic a decade ago, plus several reasons that did not exist then: AI-specific concerns, agent-driven callers, faster threat economics, and a much larger supply chain blast radius.&lt;/p&gt;&lt;p&gt;The API gateway pattern absorbed this lesson at the HTTP layer over the past decade. Production telemetry validated it. The pattern is now standard architecture, applied without much debate, because the costs of the alternative were paid out in public over many incidents.&lt;/p&gt;&lt;p&gt;The AI stack is now in the position the API stack was a decade ago. The architectural pressures are the same, the early warning signs are already on the public record, and the lessons are available to read. The LiteLLM compromise, tool poisoning attacks against MCP, the scattered guardrail-library deployment pattern, and the fragmented identity flow across LLM and agent traffic all point in the same direction. The Triple Gate Pattern, with API Gateway, AI Gateway, and MCP Gateway operating as a unified infrastructure-layer control plane, is the architecturally consistent response.&lt;/p&gt;&lt;p&gt;Cross-cutting concerns become dangerous when they are implemented locally but expected to behave globally. The teams that handle the AI infrastructure transition well will not be the ones with the most guardrails scattered across the most applications. They will be the ones whose runtime architecture governs every request, every prompt, every tool call, and every API behind it from a single, coherent control plane.&lt;/p&gt;&lt;p&gt;The principle holds. Agentic AI is making it concrete: runtime governance needs runtime enforcement, and runtime enforcement needs gates. The choice for teams building AI infrastructure in 2026 is which costs to absorb: the small, planned cost of getting the architecture right at the start, or the much higher costs of the API gateway era already documented when the same principle was learned in production. The data, case studies, and deployment patterns suggest that choice is closer at hand than it might feel.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-209462438701&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;209462438701&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLInooxHDqAlle07ZcpU56l72GmrSKhntCIqSYTdPSrjskv35pYEsxqERWPO%2F0rufV8QLBP6YI9PEn%2FHnUVqNH3c9XsMXGW2GFmYg3c5W08YdM3jeNjbQfGgSuoPL98fUEBsX42OPB5SFcHmiY%2BdLb8WzFn1RBpapRJLjwjN6Bjn9THdoLDwemPFV%2BTVRxKCouQB7JLJYxlh%2F%2FNybQi5Bg%3D%3D&amp;webInteractiveContentId=209462438701&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;7cs-ai-governance-ebook-promo-square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-209462438701.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;frequently-asked-questions&quot;&gt;Frequently Asked Questions&lt;/h2&gt;&lt;h3 id=&quot;what-is-a-cross-cutting-concern-and-how-do-i-know-if-something-qualifies&quot;&gt;What is a cross-cutting concern, and how do I know if something qualifies?&lt;/h3&gt;&lt;p&gt;A cross-cutting concern is behavior that needs to apply consistently across many parts of a system but does not belong to any one of them. Three tests identify it cleanly. First, the uniformity test: would the organization expect every team to implement this exactly the same way? Second, the domain knowledge test: does the implementation require knowing what the application does? Third, the blast radius test: when this behavior is wrong, is the failure systemic or local? If the answer is uniform, requires no domain knowledge, and fails systemically when wrong, it is cross-cutting and belongs at a shared enforcement layer, not inside each application.&lt;/p&gt;&lt;h3 id=&quot;isnt-a-guardrail-library-good-enough-for-prompt-safety&quot;&gt;Isn&apos;t a guardrail library good enough for prompt safety?&lt;/h3&gt;&lt;p&gt;Guardrail libraries do what they claim at the function level. The architectural problem is placement. When five teams each import their own guardrail library with their own configuration, the organization has five policy rule sets drifting in five different directions. More fundamentally, a guardrail that lives inside the model&apos;s probabilistic reasoning loop depends on the model&apos;s decision to comply with it. That is a layer of defense. It is not enforcement. Enforcement requires an independent runtime boundary that the model cannot reason its way around.&lt;/p&gt;&lt;h3 id=&quot;what-made-the-litellm-compromise-so-damaging-and-could-better-security-hygiene-have-prevented-it&quot;&gt;What made the LiteLLM compromise so damaging, and could better security hygiene have prevented it?&lt;/h3&gt;&lt;p&gt;Better hygiene at the package level would have helped at the margins, but the root cause was architectural. The proxy ran inside the application process, which meant that compromising one package version gave the attacker access to every credential the application held (e.g., API keys, cloud credentials, Kubernetes configs, CI/CD secrets). An infrastructure-layer gateway deployed as a single hardened service has a fundamentally different attack surface. Both can be compromised, but the blast radius is not the same. The LiteLLM incident is a supply chain story on the surface and an architectural placement failure underneath.&lt;/p&gt;&lt;h3 id=&quot;we-already-have-an-api-gateway-does-that-cover-our-ai-traffic&quot;&gt;We already have an API gateway. Does that cover our AI traffic?&lt;/h3&gt;&lt;p&gt;It covers the backend-and-system boundary—i.e., authentication, function-level authorization, schema validation, rate limiting—exactly as it always has. It does not cover the two new boundaries the AI stack introduces. The conversation boundary, where prompts and completions move between users and models, needs prompt injection defense, jailbreak detection, PII redaction, semantic caching, model routing, and token-level cost control. The tool-and-action boundary, where agents discover and invoke MCP tools, needs task-based access control, tool filtering, parameter validation, and tool poisoning defense. An API gateway was not built to inspect content at either of those boundaries. Extending the same architectural principle to all three trust boundaries is what the Triple Gate Pattern addresses.&lt;/p&gt;&lt;h3 id=&quot;how-does-identity-work-across-the-full-agent-request-chain&quot;&gt;How does identity work across the full agent request chain?&lt;/h3&gt;&lt;p&gt;An end user authenticates at the API gateway. The request hits an agent. The agent invokes an MCP tool. The tool calls a backend API. If the same identity does not flow end-to-end through that chain, the system either grants the agent broad service-account privileges, which violates least privilege, or invents application-level identity translation, which fragments governance again. Token delegation, on-behalf-of flows, and task-based access control at the gate layer are the mechanisms that keep the chain coherent. They require a privileged position in the request path that application code cannot reliably hold.&lt;/p&gt;&lt;h3 id=&quot;what-is-tool-poisoning-and-why-cant-individual-mcp-servers-defend-against-it&quot;&gt;What is tool poisoning and why can&apos;t individual MCP servers defend against it?&lt;/h3&gt;&lt;p&gt;Tool poisoning exploits the fact that MCP tool descriptions are injected directly into the model context. A tool that appears benign by name can carry hidden instructions in its description that the model will follow, including redirecting actions, exfiltrating data, or chaining to unauthorized tool calls. Individual MCP servers cannot defend against this because the attack targets the model reading the description, not the server serving it. The only layer with full visibility into the tool description before the model sees it is a gateway sitting between the agent and the MCP server catalog. That is where tool poisoning defense has to live.&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Traefik Proxy 3.7: Ingress NGINX, Without Ingress NGINX]]></title>
            <description><![CDATA[Traefik Proxy 3.7 brings support for 85+ Ingress NGINX annotations, TLS certs in the dashboard, middlewares on services, full Gateway API v1.5 support, & more.]]></description>
            <link>https://traefik.io/traefik-proxy-3-7-is-available</link>
            <guid isPermaLink="true">https://traefik.io/traefik-proxy-3-7-is-available</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[News]]></category>
            <category><![CDATA[Traefik Proxy]]></category>
            <category><![CDATA[ingress nginx]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Wed, 06 May 2026 15:33:00 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/traefik-proxy-3.7-1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1123&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/05/traefik-proxy-3.7-1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/05/traefik-proxy-3.7-1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/05/traefik-proxy-3.7-1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2026/05/traefik-proxy-3.7-1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Traefik Proxy 3.7, codenamed &lt;a href=&quot;https://en.wikipedia.org/wiki/Langres_cheese?ref=containous.ghost.io&quot;&gt;Langres&lt;/a&gt;, is the most consequential release we&apos;ve shipped this year. It brings &lt;strong&gt;85+ Ingress NGINX annotations&lt;/strong&gt; now natively supported (and the experimental flag finally dropped), a brand-new &lt;strong&gt;certificates view in the dashboard&lt;/strong&gt;, &lt;strong&gt;middlewares on services&lt;/strong&gt;, &lt;strong&gt;full Gateway API v1.5 support&lt;/strong&gt;, and &lt;strong&gt;retries and failover driven by HTTP status codes&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;If you&apos;re running Ingress NGINX today, Traefik Proxy v3.7 is your drop-in replacement. Bring your existing manifests, enable the provider, and Traefik takes over. No YAML rewrite. No annotation conversion. No big-bang cutover. That&apos;s the headline. Let&apos;s get into the rest.&lt;/p&gt;&lt;h2 id=&quot;85-annotations-90-of-snippets-use-cases-and-its-all-production-ready&quot;&gt;85+ Annotations, 90% of Snippets Use Cases, and It&apos;s All Production Ready&lt;/h2&gt;&lt;p&gt;When we &lt;a href=&quot;https://traefik.io/blog/transition-from-ingress-nginx-to-traefik?ref=containous.ghost.io&quot;&gt;first introduced the Ingress NGINX provider in v3.5&lt;/a&gt;, we framed it as a migration foundation. Nine months, dozens of community PRs, and one &lt;a href=&quot;https://traefik.io/blog/ingress-nginx-is-out?ref=containous.ghost.io&quot;&gt;official Ingress NGINX retirement announcement&lt;/a&gt; later, Traefik has become a true drop-in replacement.&lt;/p&gt;&lt;p&gt;In v3.7, the Ingress NGINX provider supports &lt;strong&gt;more than 85 of the most common annotations natively, covering more than 90% of real-world usage patterns&lt;/strong&gt; we have observed across hundreds of production clusters. We didn&apos;t pick them by guessing. The open-source &lt;a href=&quot;https://github.com/traefik/ingress-nginx-migration?ref=containous.ghost.io&quot;&gt;Ingress NGINX-migration tool&lt;/a&gt; (part of the &lt;a href=&quot;https://ingressnginxmigration.org/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Ultimate Migration Kit&lt;/a&gt; we shipped earlier this year) sends us anonymized usage data when users opt in (e.g., which annotations are deployed, in what combinations, and at what frequency). Every annotation we added in this release was prioritized from real production patterns across hundreds of clusters.&lt;/p&gt;&lt;p&gt;The breadth covers the entire long tail: authentication, session affinity, routing and redirects, proxy tuning, load balancing, rate limiting, canary deployments, custom headers, custom error pages, default backends, access control, and observability. The complete list of 85+ supported annotations and their behavioral notes lives in the &lt;a href=&quot;https://doc.traefik.io/traefik/reference/routing-configuration/kubernetes/ingress-nginx/?ref=containous.ghost.io&quot;&gt;NGINX Ingress Provider documentation&lt;/a&gt;.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-202811305109&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:256.4375px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;202811305109&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLKIsY6aN6flXe0iU3qh8wg8la16F7xeCr3X%2FO51P0pGrgnvNGuTXGGSGrgLfK0LnGw2lZYFjeu3VMfadnaz6pj2aSK2c%2Fvh%2BY19BtLb8XWAr%2BQqZZGrUxrHVlf0L191Bl4u1RNp1GIDF7CaEDOWfEA%2B8cOjbXplb3nemfDO0y5GnuRtxci9ltxFjmy3uZba7w%3D%3D&amp;webInteractiveContentId=202811305109&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;ingress-nginx-promo-image&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-202811305109.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;The most strategically important addition is partial support for &lt;code&gt;configuration-snippet&lt;/code&gt;, &lt;code&gt;server-snippet&lt;/code&gt;, and &lt;code&gt;auth-snippet&lt;/code&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12715?ref=containous.ghost.io&quot;&gt;#12715&lt;/a&gt;, &lt;a href=&quot;https://github.com/traefik/traefik/pull/12778?ref=containous.ghost.io&quot;&gt;#12778&lt;/a&gt; by &lt;a href=&quot;https://github.com/juliens?ref=containous.ghost.io&quot;&gt;@juliens&lt;/a&gt;). Snippets are the universal escape hatch of Ingress NGINX, used heavily in production: they let users embed raw NGINX directives that the controller pastes verbatim into the generated &lt;code&gt;nginx.conf&lt;/code&gt; file before reloading the worker processes. Because the user-provided text becomes part of the runtime configuration without parsing or validation, a malicious or simply malformed value can inject arbitrary NGINX behavior into the controller. Snippets aren&apos;t the specific vector exploited by &lt;a href=&quot;https://www.wiz.io/blog/ingress-nginx-kubernetes-vulnerabilities?ref=containous.ghost.io&quot;&gt;IngressNightmare&lt;/a&gt; (that was a different annotation), but they are the most extreme expression of the same architectural pattern: user input templated into the controller&apos;s runtime config.&lt;/p&gt;
&lt;p&gt;The Kubernetes maintainers explicitly cited snippets as one of the &quot;serious security flaws&quot; that drove the retirement decision. But refusing snippets in Traefik would break too many real migrations, and copying Ingress NGINX&apos;s approach would recreate the vulnerability class. So we did neither: Traefik parses snippet content into structured input, maps it against a curated allowlist of common, safe directives (header manipulation, rewrites, variable interpolation for client IPs and URI components), and rejects everything else. Unlike Ingress NGINX, Traefik does not generate a raw config file at all, so there is nothing for the raw user text to be pasted into. The 90% of real-world snippet use cases just work, on a simpler and safer foundation.&lt;/p&gt;
&lt;p&gt;Behind the scenes, what does this mean operationally? There is no YAML to rewrite. Bring your existing Ingress resources, enable the provider with a few lines of static configuration, and Traefik translates them into its internal object model securely:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;providers:
  kubernetesIngressNginx:
    enabled: true&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The full step-by-step path, including running the audit, deploying Traefik alongside your existing controller, and progressively shifting traffic, is in the &lt;a href=&quot;https://doc.traefik.io/traefik/migrate/nginx-to-traefik/?ref=containous.ghost.io&quot;&gt;Ingress NGINX to Traefik migration guide&lt;/a&gt;. We&apos;re also publishing a 3-part blog series alongside this release that walks through it end-to-end. The first post, &lt;a href=&quot;https://traefik.io/blog/ingress-nginx-migration-audit?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Ingress NGINX Migration: Measure Twice, Cut Once&lt;/a&gt;, covers the audit step in depth: how to inventory your annotations with the migration tool and translate the NGINX ConfigMap into Traefik&apos;s configuration model. Parts 2 (install) and 3 (progressive cutover) follow weekly.&lt;/p&gt;&lt;p&gt;And after a year of community-driven maturation, the provider has graduated. The experimental flag is gone. The Ingress NGINX Provider is now a first-class citizen in Traefik. If you are still on Ingress NGINX, this is your drop-in replacement, &lt;a href=&quot;https://traefik.io/press/traefik-becomes-the-de-facto-standard-for-kubernetes-networking-as-major-platform-vendors-migrate-from-ingress-nginx?ref=containous.ghost.io&quot;&gt;validated by IBM Cloud, Nutanix, OVHcloud, SUSE, TIBCO&lt;/a&gt;, and a long list of organizations that have already made the switch.&lt;/p&gt;&lt;h2 id=&quot;tls-certificates-in-the-dashboard-a-community-gift&quot;&gt;TLS Certificates in the Dashboard: A Community Gift&lt;/h2&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/tls-certs-in-dashboard.png&quot; class=&quot;kg-image&quot; alt=&quot;TLS Certificates in the Traefik Proxy Dashboard&quot; loading=&quot;lazy&quot; width=&quot;1256&quot; height=&quot;996&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/05/tls-certs-in-dashboard.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/05/tls-certs-in-dashboard.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/tls-certs-in-dashboard.png 1256w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Some of the best Traefik features come from outside our core team. v3.7 ships a &lt;strong&gt;brand-new Certificates menu in the dashboard&lt;/strong&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12628?ref=containous.ghost.io&quot;&gt;#12628&lt;/a&gt;), authored by &lt;a href=&quot;https://github.com/holomekc?ref=containous.ghost.io&quot;&gt;@holomekc&lt;/a&gt; as an external contribution that we are particularly proud of.&lt;/p&gt;&lt;p&gt;For years, certificates were the invisible part of Traefik&apos;s runtime. You configured them, you deployed them, and you trusted that everything was working. The new dashboard view brings that visibility front and center: you can now see every TLS certificate in use, the domains it covers, its expiration, and where it is attached across HTTP and TCP routers.&lt;/p&gt;&lt;p&gt;This is exactly the kind of operator-quality-of-life feature that does not show up in benchmarks but transforms day-to-day operations. Renewal anxiety, expired certs in production, missing domains on a wildcard cert: the dashboard now answers all of these at a glance.&lt;/p&gt;&lt;h2 id=&quot;middlewares-on-services-a-cleaner-routing-model&quot;&gt;Middlewares on Services: A Cleaner Routing Model&lt;/h2&gt;&lt;p&gt;Until now, middlewares in Traefik attached to routers or entryPoints. That mostly worked, but it produced a pattern that anyone running Traefik at scale knows well: when a service is exposed by ten routers, you end up duplicating the same middleware reference ten times. And when that middleware is a &lt;code&gt;forwardAuth&lt;/code&gt; or a rate limiter that fundamentally belongs to the &lt;em&gt;service&lt;/em&gt;, not the route, the duplication is a smell.&lt;/p&gt;
&lt;p&gt;v3.7 fixes this with &lt;a href=&quot;https://doc.traefik.io/traefik/reference/routing-configuration/http/load-balancing/service/?ref=containous.ghost.io#services-middlewares&quot;&gt;&lt;strong&gt;middlewares on services&lt;/strong&gt;&lt;/a&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12544?ref=containous.ghost.io&quot;&gt;#12544&lt;/a&gt; by &lt;a href=&quot;https://github.com/juliens?ref=containous.ghost.io&quot;&gt;@juliens&lt;/a&gt;, co-authored with &lt;a href=&quot;https://github.com/lbenguigui?ref=containous.ghost.io&quot;&gt;@lbenguigui&lt;/a&gt;). You can now attach middlewares directly to a service definition, and they apply to every router that targets that service.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;http:
  services:
    api:
      loadBalancer:
        servers:
          - url: &quot;http://api-backend:8080&quot;
      middlewares:
        - rate-limit
        - auth
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This change matters beyond the convenience of fewer YAML lines. It moves middleware semantics closer to where they belong conceptually. Authentication that protects a service should live on the service. Rate limiting that protects a backend&apos;s capacity should live on the backend. The router stays focused on what it is for: matching requests.&lt;/p&gt;
&lt;p&gt;The same change also unlocks &lt;strong&gt;Gateway API filters on HTTP backends&lt;/strong&gt;, a long-standing gap in our Gateway API support that this single PR closed.&lt;/p&gt;
&lt;h2 id=&quot;gateway-api-v15-leading-the-standard-setting-the-pace&quot;&gt;Gateway API v1.5: Leading the Standard, Setting the Pace&lt;/h2&gt;
&lt;p&gt;Traefik v3.7 ships with full support for &lt;a href=&quot;https://kubernetes.io/blog/2026/04/21/gateway-api-v1-5/?ref=containous.ghost.io&quot;&gt;&lt;strong&gt;Gateway API v1.5.1&lt;/strong&gt;&lt;/a&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12768?ref=containous.ghost.io&quot;&gt;#12768&lt;/a&gt; by &lt;a href=&quot;https://github.com/mmatur?ref=containous.ghost.io&quot;&gt;@mmatur&lt;/a&gt;), the latest revision of the Kubernetes networking standard. Traefik is part of the very small circle of gateways that keep pace with the Gateway API project with the regularity of a metronome: every minor release of the spec lands in a Traefik release within days. This release brings two notable additions on top of v1.5 baseline:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Multiple &lt;code&gt;certificateRefs&lt;/code&gt; on Gateway listeners&lt;/strong&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12590?ref=containous.ghost.io&quot;&gt;#12590&lt;/a&gt; by &lt;a href=&quot;https://github.com/mortennordbye?ref=containous.ghost.io&quot;&gt;@mortennordbye&lt;/a&gt;). A listener can now reference multiple certificates, with Traefik selecting the correct one on each SNI. This eliminates a class of workarounds that involved either splitting a single logical Gateway into several, or fronting it with extra TLS termination.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Secret support for &lt;code&gt;BackendTLSPolicy.caCertificateRefs&lt;/code&gt;&lt;/strong&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12927?ref=containous.ghost.io&quot;&gt;#12927&lt;/a&gt; by &lt;a href=&quot;https://github.com/kevinpollet?ref=containous.ghost.io&quot;&gt;@kevinpollet&lt;/a&gt;). End-to-end TLS to backend services with private CAs now works with secret-stored CA bundles, removing the last friction point for production-grade BackendTLSPolicy deployments.&lt;/p&gt;
&lt;p&gt;Combined with the new middlewares-on-services semantics that bring Gateway API filters to HTTP backends, v3.7 closes the remaining feature gap between the Ingress provider and the Gateway API provider.&lt;/p&gt;
&lt;h2 id=&quot;retry-and-failover-driven-by-status-codes-resilience-that-resembles-reality&quot;&gt;Retry and Failover Driven by Status Codes: Resilience That Resembles Reality&lt;/h2&gt;
&lt;p&gt;Traefik has had a &lt;code&gt;Retry&lt;/code&gt; middleware and a &lt;code&gt;Failover&lt;/code&gt; service since the early days. Both were good, but both shared the same blind spot: they only fired on connection failures and explicit health-check signals, not on what your application was actually telling them.&lt;/p&gt;
&lt;p&gt;That changed in v3.7.&lt;/p&gt;
&lt;p&gt;The &lt;strong&gt;&lt;code&gt;Retry&lt;/code&gt; middleware&lt;/strong&gt; &lt;a href=&quot;https://doc.traefik.io/traefik/reference/routing-configuration/http/middlewares/retry/?ref=containous.ghost.io&quot;&gt;now supports&lt;/a&gt; retries based on &lt;strong&gt;HTTP response status codes&lt;/strong&gt;, a configurable &lt;strong&gt;per-attempt timeout&lt;/strong&gt;, and an opt-in flag for &lt;strong&gt;non-idempotent methods&lt;/strong&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12667?ref=containous.ghost.io&quot;&gt;#12667&lt;/a&gt; by &lt;a href=&quot;https://github.com/LBF38?ref=containous.ghost.io&quot;&gt;@LBF38&lt;/a&gt;). If your backend occasionally returns a 502 under load, you can configure Traefik to absorb that and retry without the client noticing:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;http:
  middlewares:
    smart-retry:
      retry:
        attempts: 3
        initialInterval: 100ms
        retryOn:
          statusCodes:
            - 502
            - 503
            - 504
        timeout: 2s
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;strong&gt;&lt;code&gt;Failover&lt;/code&gt; service&lt;/strong&gt; &lt;a href=&quot;https://doc.traefik.io/traefik/reference/routing-configuration/http/load-balancing/service/?ref=containous.ghost.io#failover&quot;&gt;now triggers&lt;/a&gt; on response status codes too (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12596?ref=containous.ghost.io&quot;&gt;#12596&lt;/a&gt; by &lt;a href=&quot;https://github.com/lbenguigui?ref=containous.ghost.io&quot;&gt;@lbenguigui&lt;/a&gt;). Combined with the new &lt;strong&gt;service failover support in the TraefikService CRD&lt;/strong&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12733?ref=containous.ghost.io&quot;&gt;#12733&lt;/a&gt; by &lt;a href=&quot;https://github.com/jspdown?ref=containous.ghost.io&quot;&gt;@jspdown&lt;/a&gt;), you can declare blue-green and active-passive setups directly in Kubernetes without leaving Traefik&apos;s CRD model:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: traefik.io/v1alpha1
kind: TraefikService
metadata:
  name: api-failover
spec:
  failover:
    service: api-primary
    fallback: api-backup
    healthCheck: {}
    errors:
      status:
        - &quot;500-504&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Real production failures rarely look like clean connection refusals. They look like 502s during a slow rollout, 503s when an autoscaler is catching up, 504s when a downstream dependency degrades. v3.7 lets Traefik respond to those signals natively, without external service meshes or sidecar acrobatics.&lt;/p&gt;
&lt;h2 id=&quot;more-goodies&quot;&gt;More Goodies&lt;/h2&gt;
&lt;p&gt;A non-exhaustive selection of the rest, because every release has a long tail of quality-of-life improvements that do not need their own section but absolutely deserve a mention:&lt;/p&gt;
&lt;h3 id=&quot;routing-rules&quot;&gt;Routing &amp;amp; Rules&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Wildcard host in &lt;code&gt;Host&lt;/code&gt; and &lt;code&gt;HostSNI&lt;/code&gt; matchers (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12884?ref=containous.ghost.io&quot;&gt;#12884&lt;/a&gt; by &lt;a href=&quot;https://github.com/juliens?ref=containous.ghost.io&quot;&gt;@juliens&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Providers routing precedence configuration (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12895?ref=containous.ghost.io&quot;&gt;#12895&lt;/a&gt; by &lt;a href=&quot;https://github.com/juliens?ref=containous.ghost.io&quot;&gt;@juliens&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Per-Ingress entry points selection on Nginx Ingresses (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12727?ref=containous.ghost.io&quot;&gt;#12727&lt;/a&gt; by &lt;a href=&quot;https://github.com/ajacques?ref=containous.ghost.io&quot;&gt;@ajacques&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ipAllowListStrategy&lt;/code&gt; option for &lt;code&gt;allowlist-source-range&lt;/code&gt; and &lt;code&gt;whitelist-source-range&lt;/code&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12932?ref=containous.ghost.io&quot;&gt;#12932&lt;/a&gt; by &lt;a href=&quot;https://github.com/mathieuherbert?ref=containous.ghost.io&quot;&gt;@mathieuherbert&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;middleware&quot;&gt;Middleware&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;New &lt;code&gt;encodedCharacters&lt;/code&gt; middleware (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12555?ref=containous.ghost.io&quot;&gt;#12555&lt;/a&gt; by &lt;a href=&quot;https://github.com/gndz07?ref=containous.ghost.io&quot;&gt;@gndz07&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;authSignInURL&lt;/code&gt; in forward auth (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12293?ref=containous.ghost.io&quot;&gt;#12293&lt;/a&gt; by &lt;a href=&quot;https://github.com/kyounghunJang?ref=containous.ghost.io&quot;&gt;@kyounghunJang&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;errorRequestHeaders&lt;/code&gt; in Errors middleware (&lt;a href=&quot;https://github.com/traefik/traefik/pull/13034?ref=containous.ghost.io&quot;&gt;#13034&lt;/a&gt; by &lt;a href=&quot;https://github.com/gndz07?ref=containous.ghost.io&quot;&gt;@gndz07&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;tls&quot;&gt;TLS&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Graceful handling of missing TLSStore secrets (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12522?ref=containous.ghost.io&quot;&gt;#12522&lt;/a&gt; by &lt;a href=&quot;https://github.com/david-garcia-garcia?ref=containous.ghost.io&quot;&gt;@david-garcia-garcia&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Fragmented TLS Client Hello support (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12787?ref=containous.ghost.io&quot;&gt;#12787&lt;/a&gt; by &lt;a href=&quot;https://github.com/rtribotte?ref=containous.ghost.io&quot;&gt;@rtribotte&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;CertificateTimeout&lt;/code&gt; ACME configuration option (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12278?ref=containous.ghost.io&quot;&gt;#12278&lt;/a&gt; by &lt;a href=&quot;https://github.com/ceko?ref=containous.ghost.io&quot;&gt;@ceko&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;observability&quot;&gt;Observability&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Stdio access logs alongside OTLP logging (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12307?ref=containous.ghost.io&quot;&gt;#12307&lt;/a&gt; by &lt;a href=&quot;https://github.com/Mulgish?ref=containous.ghost.io&quot;&gt;@Mulgish&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;OTel-conformant trace context attributes in access logs (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12801?ref=containous.ghost.io&quot;&gt;#12801&lt;/a&gt; by &lt;a href=&quot;https://github.com/mmatur?ref=containous.ghost.io&quot;&gt;@mmatur&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Kubernetes Ingress logs fields (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12913?ref=containous.ghost.io&quot;&gt;#12913&lt;/a&gt; by &lt;a href=&quot;https://github.com/rtribotte?ref=containous.ghost.io&quot;&gt;@rtribotte&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;File path support for &lt;code&gt;metrics.influxdb2.token&lt;/code&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12458?ref=containous.ghost.io&quot;&gt;#12458&lt;/a&gt; by &lt;a href=&quot;https://github.com/barhun?ref=containous.ghost.io&quot;&gt;@barhun&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;web-ui&quot;&gt;Web UI&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Server weight in service detail view (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12325?ref=containous.ghost.io&quot;&gt;#12325&lt;/a&gt; by &lt;a href=&quot;https://github.com/murataslan1?ref=containous.ghost.io&quot;&gt;@murataslan1&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Dashboard name configuration (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12410?ref=containous.ghost.io&quot;&gt;#12410&lt;/a&gt; by &lt;a href=&quot;https://github.com/gndz07?ref=containous.ghost.io&quot;&gt;@gndz07&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;misc&quot;&gt;MISC&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Global option to disable X-Forwarded-For appending (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12374?ref=containous.ghost.io&quot;&gt;#12374&lt;/a&gt; by &lt;a href=&quot;https://github.com/lbenguigui?ref=containous.ghost.io&quot;&gt;@lbenguigui&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Cipher suites configuration with ServersTransport (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11965?ref=containous.ghost.io&quot;&gt;#11965&lt;/a&gt; by &lt;a href=&quot;https://github.com/NEwa-05?ref=containous.ghost.io&quot;&gt;@NEwa-05&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;maxResponseBodySize&lt;/code&gt; on HTTP provider (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12788?ref=containous.ghost.io&quot;&gt;#12788&lt;/a&gt; by &lt;a href=&quot;https://github.com/gndz07?ref=containous.ghost.io&quot;&gt;@gndz07&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;maxResponseBodySize&lt;/code&gt; on ForwardAuth (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12694?ref=containous.ghost.io&quot;&gt;#12694&lt;/a&gt; by &lt;a href=&quot;https://github.com/gndz07?ref=containous.ghost.io&quot;&gt;@gndz07&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Knative v1.20.0 support (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12441?ref=containous.ghost.io&quot;&gt;#12441&lt;/a&gt; by &lt;a href=&quot;https://github.com/idurgakalyan?ref=containous.ghost.io&quot;&gt;@idurgakalyan&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Several security advisories were also addressed across the v3.7 cycle. The full list, with CVE IDs, severity, and patched versions, is on the &lt;a href=&quot;https://github.com/traefik/traefik/security/advisories?ref=containous.ghost.io&quot;&gt;Traefik Security Advisories page&lt;/a&gt;. Security continues to be a first-class part of every release.&lt;/p&gt;
&lt;h2 id=&quot;a-toast-to-the-community&quot;&gt;A Toast to the Community&lt;/h2&gt;&lt;p&gt;Traefik 3.7 is the work of a community that takes its time and gets it right. More than 80 contributors shipped code into this release, from first-time PR authors fixing typos in documentation to long-time maintainers landing entire subsystems. With 63k+ GitHub stars and billions of downloads behind us, every release is a community release, and v3.7 is more than most.&lt;/p&gt;&lt;p&gt;To everyone who opened an issue, reviewed a PR, sent us migration data through the audit tool, contributed an annotation, or shared their production war stories: thank you. You are why Traefik continues to set the standard for cloud-native ingress. Want to add yours to v3.8? &lt;a href=&quot;https://github.com/traefik/traefik/issues/12631?ref=containous.ghost.io&quot;&gt;traefik/traefik#12631&lt;/a&gt; tracks the remaining Ingress NGINX annotations and is a great on-ramp for first-time contributors, but contributions are welcome across the entire codebase, on any topic.&lt;/p&gt;&lt;p&gt;Ready to upgrade?&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-202811305109&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:256.4375px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;202811305109&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLKIsY6aN6flXe0iU3qh8wg8la16F7xeCr3X%2FO51P0pGrgnvNGuTXGGSGrgLfK0LnGw2lZYFjeu3VMfadnaz6pj2aSK2c%2Fvh%2BY19BtLb8XWAr%2BQqZZGrUxrHVlf0L191Bl4u1RNp1GIDF7CaEDOWfEA%2B8cOjbXplb3nemfDO0y5GnuRtxci9ltxFjmy3uZba7w%3D%3D&amp;webInteractiveContentId=202811305109&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;ingress-nginx-promo-image&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-202811305109.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;essential-resources-and-next-steps&quot;&gt;Essential Resources and Next Steps&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Download Traefik 3.7&lt;/strong&gt;: &lt;a href=&quot;https://github.com/traefik/traefik/releases/tag/v3.7.0?ref=containous.ghost.io&quot;&gt;GitHub Release&lt;/a&gt; | &lt;a href=&quot;https://hub.docker.com/_/traefik?ref=containous.ghost.io&quot;&gt;Docker Hub&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Documentation&lt;/strong&gt;: &lt;a href=&quot;https://doc.traefik.io/traefik/?ref=containous.ghost.io&quot;&gt;Complete Documentation&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;NGINX Migration&lt;/strong&gt;: &lt;a href=&quot;http://ingressnginxmigration.org/?ref=containous.ghost.io&quot;&gt;ingressnginxmigration.org&lt;/a&gt; | &lt;a href=&quot;https://github.com/traefik/ingress-nginx-migration?ref=containous.ghost.io&quot;&gt;Migration Tool&lt;/a&gt; | &lt;a href=&quot;https://doc.traefik.io/traefik/migrate/nginx-to-traefik/?ref=containous.ghost.io&quot;&gt;NGINX Migration Guide&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Community&lt;/strong&gt;: &lt;a href=&quot;https://github.com/traefik/traefik?ref=containous.ghost.io&quot;&gt;GitHub Repository&lt;/a&gt; | &lt;a href=&quot;https://community.traefik.io/?ref=containous.ghost.io&quot;&gt;Community Forum&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Ingress NGINX Migration Guide (1 of 3): Measure Twice, Cut Once]]></title>
            <description><![CDATA[In the vast majority of Ingress NGINX migrations, only 1% requires human judgement. But without a proper audit, how can you tell which 1% needs your attention?]]></description>
            <link>https://traefik.io/ingress-nginx-migration-audit</link>
            <guid isPermaLink="true">https://traefik.io/ingress-nginx-migration-audit</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[Traefik Proxy]]></category>
            <category><![CDATA[ingress nginx]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Wed, 06 May 2026 15:32:08 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/Blog_without_copies@2x--6-.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/05/Blog_without_copies@2x--6-.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/05/Blog_without_copies@2x--6-.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/05/Blog_without_copies@2x--6-.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/Blog_without_copies@2x--6-.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Every migration story starts the same way: with a team staring at a production cluster, a long changelog of annotations, and a ConfigMap nobody has touched in three years. The gap between &quot;we should migrate off Ingress NGINX&quot; and &quot;we know exactly what to do Monday morning&quot; feels enormous. Opaque. Risky. Expensive.&lt;/p&gt;&lt;p&gt;It isn&apos;t.&lt;/p&gt;&lt;p&gt;In the vast majority of clusters I&apos;ve seen since we started helping teams move off Ingress NGINX, 99% of the migration is mechanical: the annotations translate directly, the ConfigMap settings have an obvious Traefik equivalent, and the cutover is a matter of shifting traffic route by route. Only about 1% of a typical deployment actually requires human judgment. The hard part isn&apos;t doing the work. The hard part is knowing, before you start, which 1% deserves your attention.&lt;/p&gt;&lt;p&gt;That&apos;s what an audit is for. And it&apos;s the first thing you should do, before you install Traefik, before you touch a single Ingress resource, before you write a migration plan.&lt;/p&gt;&lt;p&gt;This is post 1 of a 3-part series on migrating from Ingress NGINX to Traefik, published alongside &lt;a href=&quot;https://traefik.io/blog/traefik-proxy-3-7-is-available?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;the Traefik v3.7 GA&lt;/a&gt;. We&apos;ve broken the series into three steps:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Audit&lt;/strong&gt; (this post): inventory your annotations and translate the NGINX ConfigMap.&lt;strong&gt; &lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Install&lt;/strong&gt;: deploy Traefik with Helm next to your existing NGINX controller.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Migrate&lt;/strong&gt;: cut over route by route, using IngressClass routing, L4 TLS pass-through, and a blue-green pattern.&lt;/li&gt;&lt;/ol&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-202811305109&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:256.4375px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;202811305109&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLKIsY6aN6flXe0iU3qh8wg8la16F7xeCr3X%2FO51P0pGrgnvNGuTXGGSGrgLfK0LnGw2lZYFjeu3VMfadnaz6pj2aSK2c%2Fvh%2BY19BtLb8XWAr%2BQqZZGrUxrHVlf0L191Bl4u1RNp1GIDF7CaEDOWfEA%2B8cOjbXplb3nemfDO0y5GnuRtxci9ltxFjmy3uZba7w%3D%3D&amp;webInteractiveContentId=202811305109&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;ingress-nginx-promo-image&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-202811305109.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;the-real-cost-of-skipping-the-audit&quot;&gt;The Real Cost of Skipping the Audit&lt;/h2&gt;&lt;p&gt;The instinct when a project is under deadline pressure is to start moving. Install the new controller. Flip the first route. Fix things as they break. I understand the appeal. I&apos;ve shipped enough infrastructure to know that &quot;just start&quot; works, sometimes.&lt;/p&gt;&lt;p&gt;This is not one of those times.&lt;/p&gt;&lt;p&gt;Ingress NGINX accumulates complexity in two places that are easy to overlook. The first is &lt;strong&gt;annotations on individual Ingress resources&lt;/strong&gt;, which have grown to several hundred over the years. Most teams use a handful; a few teams use dozens; almost nobody has a complete inventory. The second is &lt;strong&gt;the controller ConfigMap&lt;/strong&gt;, which quietly sets cluster-wide defaults for timeouts, TLS policy, body sizes, logging formats, and a long tail of NGINX-specific tuning that your application teams have never seen and would not recognize.&lt;/p&gt;&lt;p&gt;Skip the audit and these two surfaces bite you at the worst possible moment: after you&apos;ve already put Traefik in the traffic path. A missing annotation mapping causes a silent behavior change for one team. A forgotten ConfigMap setting breaks TLS for a specific client. You roll back under pressure, lose trust, and the migration stalls for a quarter.&lt;/p&gt;&lt;p&gt;The audit is not a box-ticking exercise. It&apos;s the difference between a migration that takes an afternoon and one that takes a fiscal year.&lt;/p&gt;&lt;h2 id=&quot;why-grep-is-not-an-audit&quot;&gt;Why Grep is Not an Audit&lt;/h2&gt;
&lt;p&gt;The obvious temptation is to &lt;code&gt;kubectl get ingress -A -o yaml | grep annotations&lt;/code&gt; and call it a day. Don&apos;t. That approach fails on three fronts.&lt;/p&gt;
&lt;p&gt;First, it tells you which annotations exist but not which ones actually matter. An annotation that Traefik supports natively is a non-event. An annotation that requires a new middleware is a small piece of work. An annotation with no direct equivalent is a conversation with the team that owns that Ingress. Grep cannot distinguish between these three, and treating them as equivalent is how migrations slip.&lt;/p&gt;
&lt;p&gt;Second, it ignores the ConfigMap entirely. The &lt;code&gt;ingress-nginx-controller&lt;/code&gt; ConfigMap is where your &lt;code&gt;proxy-body-size&lt;/code&gt;, your &lt;code&gt;ssl-ciphers&lt;/code&gt;, your &lt;code&gt;hsts-max-age&lt;/code&gt;, and your &lt;code&gt;use-proxy-protocol&lt;/code&gt; live. None of these appear on any Ingress resource. None of them will show up in a grep of your Kubernetes manifests. All of them affect production behavior.&lt;/p&gt;
&lt;p&gt;Third, it produces a list, not a plan. A list of annotations is not actionable until someone sits down and maps each one to its Traefik equivalent, identifies gaps, and decides what to do about them. That work takes hours or days depending on cluster size. Worse, it gets redone every time a new engineer picks up the project.&lt;/p&gt;
&lt;p&gt;This is exactly the kind of problem that tooling solves well and humans solve badly.&lt;/p&gt;
&lt;h2 id=&quot;the-two-step-audit&quot;&gt;The Two-Step Audit&lt;/h2&gt;&lt;p&gt;Here is the approach we recommend, and it has a deliberate order: &lt;strong&gt;Ingress annotations first, ConfigMap second&lt;/strong&gt;. Both matter. Doing them in this sequence means you can scope the work and start planning before you touch the controller itself.&lt;/p&gt;&lt;h3 id=&quot;step-1-audit-your-ingress-annotations-with-the-migration-tool&quot;&gt;Step 1: Audit Your Ingress Annotations with the Migration Tool&lt;/h3&gt;&lt;p&gt;We built &lt;a href=&quot;https://github.com/traefik/ingress-nginx-migration?ref=containous.ghost.io&quot;&gt;&lt;code&gt;ingress-nginx-migration&lt;/code&gt;&lt;/a&gt;, an open-source CLI that connects to your cluster and analyzes every Ingress resource in the namespaces you choose (or all of them, by default). It serves an interactive HTML report at &lt;code&gt;http://localhost:8080&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Install and run it against your live cluster:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -sSL https://raw.githubusercontent.com/traefik/ingress-nginx-migration/main/scripts/install.sh | bash
ingress-nginx-migration --kubeconfig ~/.kube/config
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The tool needs read-only access (&lt;code&gt;list&lt;/code&gt;, &lt;code&gt;get&lt;/code&gt;, &lt;code&gt;watch&lt;/code&gt;) on &lt;code&gt;ingresses&lt;/code&gt; and &lt;code&gt;ingressclasses&lt;/code&gt;. Nothing else. It never modifies your cluster.&lt;/p&gt;
&lt;p&gt;The report classifies your annotations into four buckets:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Vanilla&lt;/strong&gt;: Ingresses that use no Ingress NGINX-specific annotations at all. They migrate as-is, on any recent Traefik version. For many clusters, this is a surprisingly large share.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Supported&lt;/strong&gt;: Ingresses whose every nginx annotation has a Traefik equivalent. These also migrate as-is, with no YAML rewriting. The report tells you the minimum Traefik version each annotation requires (v3.6, v3.7, or Traefik Hub for ModSecurity), so you know exactly which version to deploy.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Unsupported&lt;/strong&gt;: Ingresses that use at least one annotation Traefik does not yet support. The report lists those annotations and their frequency across your cluster, so you can quickly see whether you are looking at a couple of edge cases or a load-bearing pattern that needs a workaround.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Invalid&lt;/strong&gt;: Annotations the tool does not recognize at all - neither in the supported list nor in the known-unsupported list. These are typically typos, custom extensions, or annotations specific to a fork. They get their own tab in the report so you can review them and clean up before the migration rather than during it.&lt;/li&gt;&lt;/ul&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/A-migration-report-generated-by-Migration-assessment-tool.png&quot; class=&quot;kg-image&quot; alt=&quot;A report generated by our migration assessment tool.&quot; loading=&quot;lazy&quot; width=&quot;1110&quot; height=&quot;708&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/05/A-migration-report-generated-by-Migration-assessment-tool.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/05/A-migration-report-generated-by-Migration-assessment-tool.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/A-migration-report-generated-by-Migration-assessment-tool.png 1110w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;A report generated by our migration assessment tool.&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;In a matter of minutes, the tool turns &quot;hundreds of Ingresses in production&quot; into a prioritized queue. You know exactly which resources migrate seamlessly today, what minimum Traefik version covers the bulk of your fleet, and which Ingresses need a closer look before you touch them.&lt;/p&gt;&lt;p&gt;If you choose to share your report with us via the &quot;Share Report&quot; button (anonymized by design - only counts and annotation names, never resource names, namespaces, or configurations), you also help us prioritize which annotations we add support for next. Many of the 80+ annotations now supported by Traefik v3.7 were prioritized from data that users sent us through exactly this channel.&lt;/p&gt;&lt;h3 id=&quot;step-2-translate-your-configmap&quot;&gt;Step 2: Translate your ConfigMap&lt;/h3&gt;&lt;p&gt;Once you know the state of your Ingress annotations, turn to the other half: the controller ConfigMap. The full mapping table lives in the &lt;a href=&quot;https://doc.traefik.io/traefik/master/migrate/nginx-to-traefik/?ref=containous.ghost.io#step-0-migrate-your-global-configmap-settings&quot;&gt;Ingress NGINX ConfigMap migration guide&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;In Ingress NGINX, the ConfigMap is a single cluster-wide configuration layer. In Traefik, the same behavior is split across four surfaces, each with a clear purpose:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;providers.kubernetesIngressNGINX&lt;/code&gt; static configuration, for Ingress NGINX compatibility defaults like &lt;code&gt;proxyBodySize&lt;/code&gt;, &lt;code&gt;proxyConnectTimeout&lt;/code&gt;, and &lt;code&gt;proxyBuffering&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;EntryPoints, for listener behavior like HTTP-to-HTTPS redirection and PROXY protocol.&lt;/li&gt;
&lt;li&gt;Dynamic &lt;code&gt;tls.options&lt;/code&gt; and HTTP middlewares, for TLS policy, HSTS, and header behavior.&lt;/li&gt;
&lt;li&gt;Traefik access log configuration, for request logging.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This split is intentional. Each surface has a single, well-defined responsibility, which makes Traefik&apos;s behavior easier to reason about per route. It also means that when you migrate, you rarely need to translate a ConfigMap setting to a single equivalent. You translate it to the right surface.&lt;/p&gt;&lt;p&gt;Start by exporting what you actually use today:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl get configmap ingress-nginx-controller -n ingress-nginx -o yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Most keys fall into one of three categories. The first is the &lt;strong&gt;direct-mapping keys&lt;/strong&gt;: &lt;code&gt;proxy-connect-timeout&lt;/code&gt;, &lt;code&gt;proxy-body-size&lt;/code&gt;, &lt;code&gt;client-body-buffer-size&lt;/code&gt;, &lt;code&gt;proxy-next-upstream&lt;/code&gt;, &lt;code&gt;custom-http-errors&lt;/code&gt;, and similar. These have a one-to-one Traefik equivalent under &lt;code&gt;providers.kubernetesIngressNGINX&lt;/code&gt;. The only gotcha is unit conversion: NGINX accepts values like &lt;code&gt;16k&lt;/code&gt; or &lt;code&gt;1m&lt;/code&gt;, Traefik expects raw bytes or integer seconds.&lt;/p&gt;
&lt;p&gt;The second category is the &lt;strong&gt;cross-cutting keys&lt;/strong&gt;: &lt;code&gt;ssl-redirect&lt;/code&gt;, &lt;code&gt;ssl-protocols&lt;/code&gt;, &lt;code&gt;hsts&lt;/code&gt;, &lt;code&gt;use-proxy-protocol&lt;/code&gt;. These don&apos;t belong on the provider; they belong on entryPoints, TLS options, or a headers middleware attached cluster-wide. This is where Traefik&apos;s per-surface model pays off: a headers middleware attached to an entryPoint gives you a cluster-wide HSTS default, but you can override it per-route without editing a central ConfigMap and rolling the whole controller.&lt;/p&gt;
&lt;p&gt;The third category is the &lt;strong&gt;drop-it keys&lt;/strong&gt;: &lt;code&gt;worker-processes&lt;/code&gt;, &lt;code&gt;worker-cpu-affinity&lt;/code&gt;, Lua shared dict settings, &lt;code&gt;main-snippet&lt;/code&gt;, &lt;code&gt;http-snippet&lt;/code&gt;, and their friends. These are NGINX internals. Traefik doesn&apos;t expose them because Traefik isn&apos;t NGINX. If you find one of these in your ConfigMap, &lt;strong&gt;translate the intent, not the directive. Ask yourself what behavior the team actually wanted, and configure that behavior in Traefik.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;The complete, section-by-section translation table is in &lt;a href=&quot;https://doc.traefik.io/traefik/master/migrate/nginx-to-traefik/?ref=containous.ghost.io#step-0-migrate-your-global-configmap-settings&quot;&gt;the ConfigMap migration step of the guide&lt;/a&gt;. It covers every ConfigMap key we&apos;ve seen in production clusters and tells you exactly which Traefik surface takes over.&lt;/p&gt;
&lt;h2 id=&quot;what-the-audit-gives-you&quot;&gt;What the Audit Gives You&lt;/h2&gt;&lt;p&gt;When you finish the two-step audit, you have three artifacts:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;A &lt;strong&gt;categorized list of every Ingress&lt;/strong&gt; in your cluster (vanilla, supported, unsupported, plus a separate tab for invalid/unknown annotations), with a per-annotation breakdown and the minimum Traefik version required to cover each one.&lt;/li&gt;&lt;li&gt;A &lt;strong&gt;line-by-line translation of your ConfigMap&lt;/strong&gt; into Traefik static configuration, entryPoints, middlewares, and access logs.&lt;/li&gt;&lt;li&gt;A &lt;strong&gt;concrete scope&lt;/strong&gt;, for the first time in the project. You can tell your team how many Ingresses are in the 99% versus the 1%. You can estimate the work. You can plan in sprints instead of quarters.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;This is what I meant earlier when I said the hard part isn&apos;t doing the work. Migrating a vanilla or fully-supported Ingress is a kubectl command. Translating a direct-mapping ConfigMap key is a YAML change. The reason migrations feel impossible is not that the work is hard. It&apos;s that teams don&apos;t know, until they start, how much of the work is hard and how much isn&apos;t.&lt;/p&gt;&lt;p&gt;An audit tells you.&lt;/p&gt;&lt;h2 id=&quot;what-comes-next&quot;&gt;What Comes Next?&lt;/h2&gt;&lt;p&gt;This is the first post in a series covering the full migration from Ingress NGINX to Traefik alongside our v3.7 GA. The next post will walk through installing Traefik with Helm next to your existing NGINX controller, in a configuration that serves the same Ingress resources in parallel so you can validate behavior without moving any traffic. The third will cover the progressive cutover: route by route, using IngressClass routing, L4 TLS pass-through, and a blue-green pattern that lets you roll back at any point with a single change.&lt;/p&gt;&lt;p&gt;For now, run the audit. You don&apos;t need v3.7 installed. You don&apos;t need to commit to a migration plan. You just need to know where you stand. Fifteen minutes from now, you will.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-202811305109&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:256.4375px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;202811305109&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLKIsY6aN6flXe0iU3qh8wg8la16F7xeCr3X%2FO51P0pGrgnvNGuTXGGSGrgLfK0LnGw2lZYFjeu3VMfadnaz6pj2aSK2c%2Fvh%2BY19BtLb8XWAr%2BQqZZGrUxrHVlf0L191Bl4u1RNp1GIDF7CaEDOWfEA%2B8cOjbXplb3nemfDO0y5GnuRtxci9ltxFjmy3uZba7w%3D%3D&amp;webInteractiveContentId=202811305109&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;ingress-nginx-promo-image&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-202811305109.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;resources&quot;&gt;Resources&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Migration website: &lt;a href=&quot;http://ingressnginxmigration.org/?ref=containous.ghost.io&quot;&gt;ingressnginxmigration.org&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Migration tool: &lt;a href=&quot;http://github.com/traefik/ingress-nginx-migration?ref=containous.ghost.io&quot;&gt;github.com/traefik/ingress-nginx-migration&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Migration guide: &lt;a href=&quot;http://doc.traefik.io/traefik/migrate/nginx-to-traefik?ref=containous.ghost.io&quot;&gt;doc.traefik.io/traefik/migrate/nginx-to-traefik&lt;/a&gt; (and the &lt;a href=&quot;https://doc.traefik.io/traefik/master/migrate/nginx-to-traefik/?ref=containous.ghost.io#step-0-migrate-your-global-configmap-settings&quot;&gt;ConfigMap migration section&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;Annotation reference: &lt;a href=&quot;https://doc.traefik.io/traefik/reference/routing-configuration/kubernetes/ingress-nginx/?ref=containous.ghost.io#annotations-support&quot;&gt;Traefik NGINX Ingress Provider docs&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Community forum: &lt;a href=&quot;http://community.traefik.io/?ref=containous.ghost.io&quot;&gt;community.traefik.io&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[The CISO's Seven-Layer Cake: A Modern Defense Blueprint for the Frontier AI Era]]></title>
            <description><![CDATA[Defense is built in functional layers, where each layer has its own capabilities. In this guide, we walk through the 7 layers you need for modern defense.]]></description>
            <link>https://traefik.io/layered-defense-in-ai-era</link>
            <guid isPermaLink="true">https://traefik.io/layered-defense-in-ai-era</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Strategy]]></category>
            <category><![CDATA[AI Strategy]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <dc:creator><![CDATA[Sudeep Goswami, Immánuel Fodor]]></dc:creator>
            <pubDate>Tue, 05 May 2026 19:06:28 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/ciso-7-layer-cake-blog-image_no-copy-V2.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/05/ciso-7-layer-cake-blog-image_no-copy-V2.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/05/ciso-7-layer-cake-blog-image_no-copy-V2.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/05/ciso-7-layer-cake-blog-image_no-copy-V2.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/ciso-7-layer-cake-blog-image_no-copy-V2.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Modern enterprise defense is built in functional layers. Each layer has its own capabilities and its own prevention mode. Identity is the foundation on which every other layer depends. Traffic governance is the tier where policy does its heaviest work. Security operations sit at the top, correlating signals from everything beneath. &lt;/p&gt;&lt;p&gt;Below is an illustration of this layered defense:&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-width-wide&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/CISO-7-Layer-Cake.png&quot; class=&quot;kg-image&quot; alt=&quot;Illustration of the CISO&apos;s 7-Layer Cake for Modern Defense&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;2960&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/05/CISO-7-Layer-Cake.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/05/CISO-7-Layer-Cake.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/05/CISO-7-Layer-Cake.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2026/05/CISO-7-Layer-Cake.png 2400w&quot; sizes=&quot;(min-width: 1200px) 1200px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The reference architecture that follows is the field guide for how these layers are actually deployed. No vendors are named. This is deliberate. The goal is a capability framework that 1) survives vendor churn and acquisition cycles and 2) that CISOs can use to assess any product against a consistent standard.&lt;/p&gt;&lt;h2 id=&quot;why-this-blueprint-exists&quot;&gt;Why This Blueprint Exists&lt;/h2&gt;&lt;p&gt;The economics of enterprise defense have shifted. Frontier AI models have collapsed the cost and time required to discover vulnerabilities, chain them into exploit paths, and execute autonomous attack sequences. What used to take a skilled team weeks now runs in minutes. Defender playbooks built around human-speed response assume a luxury the attacker no longer grants.&lt;/p&gt;&lt;h3 id=&quot;the-capability-asymmetry-is-now-live&quot;&gt;The Capability Asymmetry is Now Live&lt;/h3&gt;&lt;p&gt;What was recently a forward-looking argument is now a live deployment. Multiple frontier AI labs have released cyber-capable models under divergent access philosophies. One approach concentrates the most offensive-capable model in the hands of a small coalition of roughly a dozen partners, on the explicit position that broader distribution is too dangerous at present. Another approach scales defender-focused cyber models to thousands of enterprises, on the premise that defenders fall behind if strong tooling is withheld. Both positions can be correct simultaneously. Both produce the same structural consequence: offensive capability has already outpaced the rate at which defender architectures can absorb it.&lt;/p&gt;&lt;p&gt;The proliferation window is short. Industry estimates suggest the time for offensive frontier-class capabilities to diffuse from the initial holders to the broader threat landscape at six to eighteen months. Enterprises outside the initial coalitions have that long to mature their deterministic layers before the asymmetry reaches their threat model. This blueprint treats that window as the clock against which architectural decisions should be measured.&lt;/p&gt;&lt;p&gt;On the defender side of the same window, the largest identity and security platforms are converging on a single architectural pattern: bundling credential issuance with traffic and tool-invocation enforcement under one control plane. The convenience is real. The architectural cost is the subject of this blueprint.&lt;/p&gt;&lt;p&gt;On the offensive side, three structural changes follow from this shift.&amp;nbsp;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;The volume of attempted exploitation will rise by orders of magnitude, not percentages.&lt;/li&gt;&lt;li&gt;The window between vulnerability disclosure and active weaponization will compress toward zero.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Autonomous attack agents will operate at machine speed across the full kill chain, which means defender architectures that rely on human review at any critical point will be outpaced.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;This blueprint answers that shift. It is organized around a small set of design principles, names the capabilities required at each layer of the defense stack, and describes how the layers work symbiotically to produce an architecture that is both economically rational and operationally defensible.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-209462438701&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;209462438701&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLcNmoaJQIvEC53424Dg0xL46GR58iny6D4K0Wlr2zFUxVYyMd1DIRvae%2FaeYk4KIlMcJw0tUS1yOoho7JstflfPKEKognmviG0nqNmkSX%2B9jpp%2FJJ%2FrivC0CfQhRUIBgidbZhBMpgnX5bmfAPiCRoIcu7Q7hGWjaQ86kGd9bTo2b03%2B1HU49WlY%2FaTLuYhPzFAAmJ9t9c2Kz2ziOAIqA%3D%3D&amp;webInteractiveContentId=209462438701&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;7cs-ai-governance-ebook-promo-square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-209462438701.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;design-principles&quot;&gt;Design Principles&lt;/h2&gt;&lt;h3 id=&quot;principle-one-minimize-the-attack-surface&quot;&gt;&lt;strong&gt;Principle One:&lt;/strong&gt; Minimize the Attack Surface&lt;/h3&gt;&lt;p&gt;Every component in the stack either reduces the attack surface or does not. Components that reduce surface earn their cost. Components that merely observe the surface are valuable but secondary. The primary architectural question at every layer is: what surface does this component remove, and at what cost per event?&lt;/p&gt;&lt;p&gt;Surface reduction happens in three ways:&amp;nbsp;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Policy-level reduction removes traffic, calls, or actions that violate declared rules before they reach anything of value.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Structural reduction removes entire classes of vulnerability through design choices (memory safety in the data path, least-privilege defaults, network segmentation).&amp;nbsp;&lt;/li&gt;&lt;li&gt;Supply chain reduction removes the untrusted code, dependencies, and artifacts that expand the blast radius of any single compromise.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;A surface that does not exist cannot be attacked. This is not a slogan. It is the only defense that scales against adversaries operating at machine speed.&lt;/p&gt;&lt;h3 id=&quot;principle-two-prefer-deterministic-prevention-over-behavioral-judgment&quot;&gt;&lt;strong&gt;Principle Two:&lt;/strong&gt; Prefer Deterministic Prevention Over Behavioral Judgment&lt;/h3&gt;&lt;p&gt;Where an attack class can be expressed as a structured policy decision, evaluated with certainty against structured inputs, it should be prevented deterministically. Where it cannot, behavioral approaches are necessary. Conflating these two modes is the single most common architectural error. Pushing as much prevention as possible into the deterministic mode is the single most consequential design choice in a modern defense architecture.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Deterministic prevention&lt;/strong&gt; denies or allows based on rules that can be evaluated with certainty. The inputs are structured: protocol fields, identity claims, policy declarations, cryptographic signatures, declared schemas. The decision is a function of those inputs, not a probability. A request either carries a valid token with the required scope, or it does not. A container image either matches a signed, approved hash, or it does not. An agent either has the task-level authorization to call a given tool, or it does not.&lt;/p&gt;&lt;p&gt;Deterministic prevention has three properties that make it economically dominant where it applies. The false positive rate is near zero because the decision is not a judgment. The latency is microseconds because the evaluation is trivial. It requires no human in the loop because there is nothing to review. When an attack class can be reduced to a deterministic rule, preventing it at the wire costs effectively nothing per event.&lt;/p&gt;&lt;p&gt;The limitation is equally clear. Deterministic prevention cannot catch what its rules do not describe. Novel attacks, behavioral anomalies, and anything requiring contextual judgment fall outside its reach.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Behavioral approaches&lt;/strong&gt; operate on patterns, statistical models, and machine learning classifiers trained on past attacker and defender behavior. They are necessary for the attack classes that cannot be reduced to rules: lateral movement, insider abuse, novel malware behavior, anomalous data access, and sophisticated social engineering. Their false-positive rates are non-zero by design, their latency is higher, and their efficacy depends on training data quality, model freshness, and telemetry coverage.&lt;/p&gt;&lt;p&gt;The two modes are complementary, not competing. Deterministic prevention handles the knowable and removes an enormous volume from the behavioral layer. Behavioral detection then operates on a smaller, cleaner signal where its higher cost per event is justified. An architecture that uses behavioral detection for problems that should have been prevented deterministically wastes analyst capacity on routine violations and starves the behavioral layer of the signal quality it needs to catch what actually matters.&lt;/p&gt;&lt;h3 id=&quot;principle-three-detect-at-machine-speed-what-could-not-be-prevented&quot;&gt;&lt;strong&gt;Principle Three:&lt;/strong&gt; Detect at Machine Speed What Could Not Be Prevented&lt;/h3&gt;&lt;p&gt;No architecture prevents everything. Novel attacks, insider threats, supply chain compromises, and zero-day exploits will bypass preventive controls. For these, the measure of defense is time to detection and time to first response, both of which must operate at machine speed against machine-speed adversaries.&lt;/p&gt;&lt;p&gt;Detection is only as good as its input signal. An architecture that has minimized the attack surface through strong prevention, and that handles the knowable deterministically, produces detection telemetry with far higher signal-to-noise than one that relies solely on detection. Prevention makes detection work.&lt;/p&gt;&lt;p&gt;These three principles are interdependent. Minimization reduces the space the other two principles have to cover. Deterministic prevention removes whole attack classes from the behavioral layer and feeds a cleaner signal to what remains. Machine-speed detection closes the gap where prevention cannot reach. &lt;/p&gt;&lt;p&gt;The blueprint that follows is organized around making all three operate at their strongest.&lt;/p&gt;&lt;h2 id=&quot;the-seven-layers-of-modern-defense&quot;&gt;The Seven Layers of Modern Defense&lt;/h2&gt;&lt;p&gt;The blueprint below describes seven functional layers. Each layer is defined by its capabilities, not by the products that provide them. Some products span multiple layers. Some layers can be partially covered by other layers. The goal is coverage of every capability, not one product per layer.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-width-full kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/CISO-7-Layer-Cake-Modern-Blueprint.png&quot; class=&quot;kg-image&quot; alt=&quot;Modern Defense Blueprint&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1650&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/05/CISO-7-Layer-Cake-Modern-Blueprint.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/05/CISO-7-Layer-Cake-Modern-Blueprint.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/05/CISO-7-Layer-Cake-Modern-Blueprint.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2026/05/CISO-7-Layer-Cake-Modern-Blueprint.png 2400w&quot;&gt;&lt;figcaption&gt;&lt;i&gt;&lt;em class=&quot;italic&quot; style=&quot;white-space: pre-wrap;&quot;&gt;This Modern Defense Blueprint, a field guide.&lt;/em&gt;&lt;/i&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;In the blueprint above, identity pervades every layer. The traffic governance plane is the policy fulcrum, unifying API, AI inference, and agent tool traffic under a single deterministic policy model. The learning loop at the base shows behavioral detections at Layers 5 and 7 being promoted into deterministic rules at Layers 1, 3, and 4. This is how the cake is actually assembled.&lt;/p&gt;&lt;h3 id=&quot;layer-1-identity-and-access-fabric&quot;&gt;Layer 1: Identity and Access Fabric&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Purpose. &lt;/strong&gt;Establish and enforce who (or what) is acting, what they are authorized to do, and under what conditions. This is the foundation on which every other layer stands.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Core Capabilities.&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Strong authentication with phishing-resistant factors&lt;/li&gt;&lt;li&gt;Single sign-on with centralized session control&lt;/li&gt;&lt;li&gt;Conditional access based on device posture, location, time, and behavioral signals&lt;/li&gt;&lt;li&gt;Workload and machine identity (TLS, SPIFFE, service accounts)&lt;/li&gt;&lt;li&gt;Non-human identity governance for agents and automated systems, including discovery, lifecycle, attribution, and revocation of agent identities at scale&lt;/li&gt;&lt;li&gt;Privileged access management with just-in-time elevation&lt;/li&gt;&lt;li&gt;Session anomaly detection&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Prevention Mode&lt;/strong&gt;. Primarily deterministic at the policy evaluation level. Behavioral for anomaly detection (impossible travel, session hijacking indicators).&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Design Intent&lt;/strong&gt;. Identity is the first and most consequential policy decision in any request, which is why it is Layer 1. Every downstream layer consumes identity as an input; none can operate coherently without it. An architecture that treats identity as a boolean (authenticated or not) rather than a rich policy input has ceded most of its authorization power before any other layer has a chance to act. Agents and workloads require first-class identity, not an afterthought.&lt;/p&gt;&lt;h3 id=&quot;layer-2-perimeter-and-edge&quot;&gt;Layer 2: Perimeter and Edge&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Purpose. &lt;/strong&gt;Reduce the volume and class of traffic that reaches internal systems. Establish the first boundary of trust in network terms.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Core Capabilities.&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Volumetric attack absorption (DDoS mitigation, connection rate limits)&lt;/li&gt;&lt;li&gt;Protocol hygiene (TLS termination, cipher policy, protocol version enforcement)&lt;/li&gt;&lt;li&gt;DNS security (filtering, DNSSEC, tunneling detection)&lt;/li&gt;&lt;li&gt;Web filtering and category-based access control&lt;/li&gt;&lt;li&gt;Geographic and reputation-based denial&lt;/li&gt;&lt;li&gt;Secure enterprise browsing with isolation capabilities for untrusted content&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Prevention Mode&lt;/strong&gt;. Predominantly deterministic at the network level. Behavioral for threat intelligence overlays and anomaly detection.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Design Intent&lt;/strong&gt;. Every request that can be denied here is a request that does not consume downstream capacity. This layer earns its cost through volume reduction more than sophistication. Perimeter is positioned as Layer 2 rather than Layer 1 because a modern zero trust architecture starts with identity; perimeter is a reinforcing boundary, not the primary one.&lt;/p&gt;&lt;h3 id=&quot;layer-3-traffic-governance-plane&quot;&gt;Layer 3: Traffic Governance Plane&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;. Enforce fine-grained policy on every request, call, and action that traverses the environment. This is the layer at which deterministic prevention produces its greatest leverage.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Core Capabilities&lt;/strong&gt;.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;API gateway functions: schema validation, authentication enforcement, scope-based authorization, rate limiting, quota enforcement, request/response transformation&lt;/li&gt;&lt;li&gt;Web application firewall with both signature and positive-model rules&lt;/li&gt;&lt;li&gt;AI and inference governance: model routing, prompt policy, token budgets, output filtering, inference-layer identity&lt;/li&gt;&lt;li&gt;Agent and tool invocation governance: task-based access control, tool-level authorization, transaction scoping, delegated authority flows, and Model Context Protocol enforcement as the emerging standard for agent-to-tool traffic&lt;/li&gt;&lt;li&gt;Observable policy decisions with structured telemetry for every evaluated request&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Prevention Mode&lt;/strong&gt;. Overwhelmingly deterministic. This is the layer at which the deterministic prevention thesis is strongest, because the inputs (protocol semantics, identity claims, declared policy) are all structured, and the decisions are binary.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Design Intent&lt;/strong&gt;. Three properties make this layer structurally irreplaceable. It sits between every external caller and every protected workload, which makes it the enforcement point with the broadest reach. It operates on structured protocol data, enabling deterministic prevention at very low false-positive rates. It produces the richest per-request telemetry in the stack, which means its observability output is what enables effective downstream detection.&lt;/p&gt;&lt;p&gt;A critical architectural requirement at this layer is heterogeneity. Modern environments carry three distinct classes of traffic: application API calls, AI inference requests, and agent tool invocations. Each has its own policy model, identity semantics, and abuse patterns. Fragmenting these into three separate governance systems produces operational drift, policy inconsistency, and gaps at the boundaries. A unified policy plane across all three is a structural requirement, not a preference.&lt;/p&gt;&lt;p&gt;The same heterogeneity logic applies to identity. The traffic governance plane consumes identity claims from multiple providers across the modern enterprise: workforce identity systems, customer identity systems, machine and workload identity, and increasingly agentic identity issued through standards-based protocols. A traffic plane bound to a single identity provider is a fragmentation point, not a unification point. The enforcement layer must be neutral across identity sources by construction, because the issuance of identity and the enforcement of what that identity is permitted to do are different architectural responsibilities operating on different telemetry, at different cadences, and with different failure modes. Collapsing those responsibilities into a single control plane is consolidation, not coherence.&lt;/p&gt;&lt;p&gt;An additional non-negotiable is memory safety in the data path. Any component that sits in every request path and is written in a memory-unsafe language is a perpetual patch-cadence problem. The vulnerability deluge anticipated by frontier AI research has now been empirically demonstrated. Recent frontier model disclosures surfaced thousands of previously unknown zero-day vulnerabilities across foundational software, including flaws that had survived decades of human review. Memory-unsafe data path components are not a feature to be patched on cadence. They are a structural liability on a short clock.&lt;/p&gt;&lt;h3 id=&quot;layer-4-application-and-supply-chain-integrity&quot;&gt;Layer 4: Application and Supply Chain Integrity&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;. Ensure that the code, dependencies, and artifacts running in the environment are trusted by construction, not by hope.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Core Capabilities&lt;/strong&gt;.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Secure software development lifecycle with enforced gates&lt;/li&gt;&lt;li&gt;Software bill of materials generation and policy-based admission control&lt;/li&gt;&lt;li&gt;Signed artifact enforcement at deployment&lt;/li&gt;&lt;li&gt;Hardened, minimal base images with continuous vulnerability remediation&lt;/li&gt;&lt;li&gt;Dependency provenance tracking&lt;/li&gt;&lt;li&gt;Secrets scanning in source, builds, and images&lt;/li&gt;&lt;li&gt;Static and dynamic application security testing integrated into CI/CD&lt;/li&gt;&lt;li&gt;Model and dataset provenance for AI workloads&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Prevention Mode&lt;/strong&gt;. Deterministic at the policy gate level (signed or not, on SBOM allowlist or not, scan-clean or not). Behavioral in the static analysis phase.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Design Intent&lt;/strong&gt;. The inside-out attack pattern (a compromise propagated through the supply chain, ending inside the perimeter with full trust) is the most consequential shift in the threat model over the last two years. This layer exists to make that pattern structurally harder. Every artifact that enters the environment should carry cryptographic evidence of its provenance, and admission should be contingent on policy satisfaction, not reputation.&lt;/p&gt;&lt;p&gt;The compounding pressure on this layer comes from downstream flow. When frontier-scale discovery surfaces thousands of vulnerabilities in foundational operating systems, browsers, and widely used open-source libraries, those findings propagate into every enterprise software bill of materials as new critical advisories. A supply chain posture built on manual review and best-effort patching cannot process that volume. The admission gate must be deterministic, and the dependency set must be actively minimized.&lt;/p&gt;&lt;h3 id=&quot;layer-5-workload-runtime-protection&quot;&gt;Layer 5: Workload Runtime Protection&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;. Detect and contain attacks that have bypassed preventive controls and are operating within the environment.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Core Capabilities&lt;/strong&gt;.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Endpoint detection and response with behavioral analytics&lt;/li&gt;&lt;li&gt;Cloud workload protection (container, VM, serverless)&lt;/li&gt;&lt;li&gt;Runtime network segmentation and microsegmentation&lt;/li&gt;&lt;li&gt;Kernel-level telemetry (eBPF or equivalent) for syscall and process behavior&lt;/li&gt;&lt;li&gt;Lateral movement detection&lt;/li&gt;&lt;li&gt;Memory-level attack detection (exploitation techniques, injection, escalation)&lt;/li&gt;&lt;li&gt;Container and Kubernetes-specific runtime controls&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Prevention Mode&lt;/strong&gt;. Predominantly behavioral. Some deterministic capability through policy (Pod Security, network policies, seccomp, capability dropping).&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Design Intent&lt;/strong&gt;. This is where behavioral prevention and detection do their heaviest work. The inputs are unstructured (process trees, syscall patterns, memory access, network flows). Deterministic rules exist, but cover a smaller fraction of the attack space than at Layer 3. Accepting this means funding this layer for what it does well (behavioral judgment) and not asking it to do the work that should have happened deterministically upstream.&lt;/p&gt;&lt;h3 id=&quot;layer-6-data-protection&quot;&gt;Layer 6: Data Protection&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;. Protect data at rest, in transit, and in use, and prevent its unauthorized egress.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Core Capabilities&lt;/strong&gt;.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Encryption at rest with managed key lifecycle&lt;/li&gt;&lt;li&gt;Encryption in transit with strong protocol policy&lt;/li&gt;&lt;li&gt;Data classification and labeling&lt;/li&gt;&lt;li&gt;Data loss prevention with channel coverage (email, web, endpoint, API)&lt;/li&gt;&lt;li&gt;Secrets management with rotation and ephemeral issuance&lt;/li&gt;&lt;li&gt;Database activity monitoring&lt;/li&gt;&lt;li&gt;Tokenization and format-preserving encryption for sensitive fields&lt;/li&gt;&lt;li&gt;Model output filtering for sensitive data exposure in AI contexts&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Prevention Mode&lt;/strong&gt;. Deterministic for encryption enforcement, access policy, and classification-based blocking. Behavioral for anomalous access patterns and egress detection.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Design Intent&lt;/strong&gt;. Data is the ultimate objective of most attacks. This layer makes data valuable only where it should be valuable and visible only to those who should see it. Irreversibility is the key concept: a leaked key, an exfiltrated dataset, and an exposed model weight cannot be recovered. Preventive controls at this layer are therefore disproportionately valuable.&lt;/p&gt;&lt;h3 id=&quot;layer-7-security-operations-and-response&quot;&gt;Layer 7: Security Operations and Response&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Purpose&lt;/strong&gt;. Correlate signals across layers, detect what individual layers cannot see in isolation, and respond at machine speed.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Core Capabilities&lt;/strong&gt;.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Centralized telemetry ingestion from every layer&lt;/li&gt;&lt;li&gt;Correlation and detection engineering&lt;/li&gt;&lt;li&gt;Machine learning and behavioral analytics across combined signals&lt;/li&gt;&lt;li&gt;Threat intelligence integration&lt;/li&gt;&lt;li&gt;Orchestration and automated response (SOAR capabilities)&lt;/li&gt;&lt;li&gt;Case management and investigation tooling&lt;/li&gt;&lt;li&gt;Metrics instrumentation for time to detection and time to response&lt;/li&gt;&lt;li&gt;Threat hunting capabilities with full-fidelity data access&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Prevention Mode&lt;/strong&gt;. Primarily detection. Behavioral by nature of the problem space. Deterministic correlation rules exist, but are the floor, not the ceiling.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Design Intent&lt;/strong&gt;. This layer succeeds or fails on signal quality. An architecture that feeds it noise produces analyst burnout and false confidence. An architecture that feeds it structured, policy-contextual telemetry from strong preventive layers produces detection at the speed the threat requires. AI-augmented security operations are no longer an aspirational capability. Defender-focused cyber models and agent governance platforms are now actively deployed at enterprise scale across major vendors. &lt;/p&gt;&lt;p&gt;That shift raises the ceiling on what this layer can do, but does not raise the floor. A behavioral analytics engine, whether classical or AI-driven, delivers value proportional to the quality of the signal it consumes. Time to detection and time to first response in single-digit minutes are the emerging standard, and that standard is only achievable when the upstream layers have done their job.&lt;/p&gt;&lt;h2 id=&quot;how-the-layers-work-symbiotically&quot;&gt;How the Layers Work Symbiotically&lt;/h2&gt;&lt;p&gt;The seven layers are not independent. The value of the architecture lies in how it reinforces itself.&lt;/p&gt;&lt;h3 id=&quot;prevention-feeds-detection&quot;&gt;Prevention Feeds Detection&lt;/h3&gt;&lt;p&gt;Every policy decision at Layers 1, 2, and 3 is also a telemetry event. A denied request generates a log line that enriches the SOC&apos;s understanding of attacker behavior. A granted request carries a structured context (identity, scope, policy decision) that makes Layer 7 correlation dramatically more effective. The prevention layers are not parallel to the detection layer; they are upstream tributaries feeding it.&lt;/p&gt;&lt;h3 id=&quot;detection-informs-prevention&quot;&gt;Detection Informs Prevention&lt;/h3&gt;&lt;p&gt;Behavioral detection at Layers 5 and 7 identifies new attack patterns that can then be encoded as deterministic rules at Layers 1 through 3. Every novel attack caught behaviorally should produce a question: can this now be prevented deterministically in the future? The architecture learns.&lt;/p&gt;&lt;h3 id=&quot;identity-pervades-every-layer&quot;&gt;Identity Pervades Every Layer&lt;/h3&gt;&lt;p&gt;The identity fabric at Layer 1 is not consulted once at login. It is the input to policy decisions at the traffic layer, the basis for workload permissions at the runtime layer, the access gate for data at Layer 6, and the pivot for correlation at Layer 7. An identity architecture that cannot service all of these consistently produces gaps at the seams. Identity is Layer 1 precisely because nothing downstream works without it.&lt;/p&gt;&lt;h3 id=&quot;supply-chain-integrity-underwrites-runtime-assumptions&quot;&gt;Supply Chain Integrity Underwrites Runtime Assumptions&lt;/h3&gt;&lt;p&gt;The behavioral detection at Layer 5 is calibrated against an assumed baseline of legitimate workload behavior. When supply chain integrity at Layer 4 is weak, the baseline is contaminated, and Layer 5 loses its ability to distinguish benign from malicious. Strong supply chain controls are not a parallel investment to runtime detection; they are its precondition.&lt;/p&gt;&lt;h3 id=&quot;the-traffic-governance-plane-is-the-policy-fulcrum&quot;&gt;The Traffic Governance Plane is the Policy Fulcrum&lt;/h3&gt;&lt;p&gt;More policy decisions are made at this layer than anywhere else in the stack, because every request, call, and invocation passes through it. The quality of policy at this layer compounds. A well-governed traffic plane removes enormous volume from downstream layers, delivers structured context to the SOC, and handles entire attack classes deterministically. A poorly governed traffic plane pushes work downstream that downstream layers are not designed to handle efficiently.&lt;/p&gt;&lt;h3 id=&quot;defender-ai-is-itself-a-governed-workload&quot;&gt;Defender AI is Itself a Governed Workload&lt;/h3&gt;&lt;p&gt;The AI-augmented SOC, the AI-driven AppSec platform, and any automated remediation agent introduced into the environment are not outside this architecture. They are subjects of it. A defender AI agent is a non-human identity at Layer 1, a traffic-generating client at Layer 3, and a software artifact with its own dependency set at Layer 4. Its training data provenance, invocation patterns, and authorized actions all produce telemetry at Layer 7. Organizations deploying defender AI without applying the same architectural controls to those agents inherit a new class of privileged insider risk. The blueprint applies to itself.&lt;/p&gt;&lt;h2 id=&quot;the-economic-case-for-this-blueprint&quot;&gt;The Economic Case for This Blueprint&lt;/h2&gt;&lt;p&gt;The case for this architecture rests on four economic realities.&lt;/p&gt;&lt;h3 id=&quot;1-cost-per-event-is-not-linear-across-layers&quot;&gt;1. Cost Per Event is Not Linear Across Layers&lt;/h3&gt;&lt;p&gt;A policy denial at the traffic layer costs nothing effectively. A SOC alert costs analyst time. A contained incident costs an incident response engagement. An uncontained breach costs the full regulatory, reputational, and operational burden. Shifting events leftward in this cost curve is the single most impactful thing an architecture can do.&lt;/p&gt;&lt;h3 id=&quot;2-irreversibility-has-infinite-cost&quot;&gt;2. Irreversibility has Infinite Cost&lt;/h3&gt;&lt;p&gt;Certain attack outcomes cannot be undone. Exfiltrated data, leaked keys, destructive agent actions, and poisoned model weights. For these outcomes, prevention is not a cost optimization; it is the only available defense. Architectures that under-fund prevention for outcomes in this category are accepting unbounded downside.&lt;/p&gt;&lt;h3 id=&quot;3-detection-has-a-latency-floor&quot;&gt;3. Detection has a Latency Floor&lt;/h3&gt;&lt;p&gt;Human-in-the-loop detection cannot be compressed below certain thresholds. Automated detection can be faster, but it still operates in non-zero time. The current generation of defender-focused AI tooling closes part of that gap, but the floor does not disappear. &lt;/p&gt;&lt;p&gt;Adversaries with access to frontier discovery models operate below that floor by construction, because their decision cycle is set by inference cost rather than by analyst review. Deterministic prevention operates in microseconds. For the attack classes that can be expressed deterministically, prevention is the only mode that keeps pace with machine-speed adversaries, regardless of how capable the defender&apos;s own AI layer becomes.&lt;/p&gt;&lt;h3 id=&quot;4-signal-quality-compounds&quot;&gt;4. Signal Quality Compounds&lt;/h3&gt;&lt;p&gt;Strong upstream prevention produces a cleaner downstream signal. A clean signal enables faster and more accurate detection. Accurate detection justifies higher automation in response. Each layer&apos;s effectiveness multiplies through the one downstream. Weak upstream controls degrade every layer that follows.&lt;/p&gt;&lt;h2 id=&quot;a-maturity-model-for-self-assessment&quot;&gt;A Maturity Model for Self-Assessment&lt;/h2&gt;&lt;figure class=&quot;kg-card kg-image-card kg-width-wide&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/CISO-7-Layer-Cake-Maturity-Model---Maturity-Model.png&quot; class=&quot;kg-image&quot; alt=&quot;maturity model for self assessment&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1250&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/05/CISO-7-Layer-Cake-Maturity-Model---Maturity-Model.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/05/CISO-7-Layer-Cake-Maturity-Model---Maturity-Model.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/05/CISO-7-Layer-Cake-Maturity-Model---Maturity-Model.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2026/05/CISO-7-Layer-Cake-Maturity-Model---Maturity-Model.png 2400w&quot; sizes=&quot;(min-width: 1200px) 1200px&quot;&gt;&lt;/figure&gt;&lt;p&gt;In this maturity model, there are four stages of architectural coherence. Stage 1 is a single wall with trust assumed inside. Stage 2 layers multiple defenses that operate independently. Stage 3 shifts prevention deterministically to the wire and makes identity pervasive. Stage 4 closes the loop, with behavioral detections becoming new deterministic rules on a short cadence. The goal is not Stage 4 everywhere. The goal is knowing where the next investment produces the greatest marginal improvement.&lt;/p&gt;&lt;p&gt;A CISO using this blueprint can assess the current state against the following progression. The goal is not to be at the highest stage everywhere; it is to understand where the organization sits and where the next investment produces the greatest marginal improvement.&lt;/p&gt;&lt;h3 id=&quot;stage-1-perimeter-centric&quot;&gt;Stage 1: Perimeter-Centric&lt;/h3&gt;&lt;p&gt;Defense is concentrated at the network edge. Identity is coarse. Inside the perimeter, trust is broadly assumed. Detection is signature-based. This stage is structurally unsound against modern threat models and is increasingly rare in mature organizations.&lt;/p&gt;&lt;h3 id=&quot;stage-2-defense-in-depth&quot;&gt;Stage 2: Defense in Depth&lt;/h3&gt;&lt;p&gt;Multiple layers exist but operate independently. Identity is federated but not pervasive. Detection is present but overwhelmed by volume. This is the most common stage. It survives but does not scale against frontier AI-enabled threats.&lt;/p&gt;&lt;h3 id=&quot;stage-3-deterministic-first&quot;&gt;Stage 3: Deterministic First&lt;/h3&gt;&lt;p&gt;Prevention has been deliberately shifted leftward into layers where it can operate deterministically. The traffic governance plane enforces fine-grained policy. Identity is pervasive across humans, workloads, and agents. Behavioral detection operates on a cleaner signal because routine violations are prevented upstream. Time to detection is measured in minutes.&lt;/p&gt;&lt;h3 id=&quot;stage-4-symbiotic&quot;&gt;Stage 4: Symbiotic&lt;/h3&gt;&lt;p&gt;The layers operate as a single system. Telemetry flows consistently. Detection findings become new preventive rules on a short cadence. Supply chain integrity underwrites runtime assumptions. Identity governs every policy decision. Response is largely automated for the volume of routine events, freeing analysts for the novel and complex. Time to detection and response is measured in single-digit minutes. The organization can defend against machine-speed adversaries because its own architecture operates at machine speed.&lt;/p&gt;&lt;p&gt;Stage 4 is achievable. It requires discipline in capability selection, commitment to deterministic prevention wherever viable, and architectural coherence across layers. Most organizations pursuing this trajectory find that the constraint is not technology but integration quality, which is why capability coherence matters more than any individual product choice.&lt;/p&gt;&lt;h2 id=&quot;implementation-sequence&quot;&gt;Implementation Sequence&lt;/h2&gt;&lt;figure class=&quot;kg-card kg-image-card kg-width-wide&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/05/CISO-7-Layer-Cake-Implementation-Sequence.png&quot; class=&quot;kg-image&quot; alt=&quot;implementation sequence&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/05/CISO-7-Layer-Cake-Implementation-Sequence.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/05/CISO-7-Layer-Cake-Implementation-Sequence.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/05/CISO-7-Layer-Cake-Implementation-Sequence.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2026/05/CISO-7-Layer-Cake-Implementation-Sequence.png 2400w&quot; sizes=&quot;(min-width: 1200px) 1200px&quot;&gt;&lt;/figure&gt;&lt;p&gt;In the implementation sequence above, there are five investments in priority order. Identity is the foundation. Traffic governance is the fulcrum where deterministic prevention produces its greatest leverage. Supply chain integrity closes the inside-out attack path. SOC modernization comes fourth, not first, because an AI-augmented SOC built on weak upstream layers is a fast analyst drowning in the same noise. Step five is a loop, not a terminus.&lt;/p&gt;&lt;p&gt;For an organization assessing where to invest next, the recommended sequence is:&lt;/p&gt;&lt;p&gt;First, identity (Layer 1). No downstream layer works well if identity is incoherent. Pervasive, strong, conditional identity for humans, workloads, and agents is the prerequisite for everything else. The numbering of this blueprint places identity at Layer 1 for precisely this reason: it is the foundation on which all other investment depends.&lt;/p&gt;&lt;p&gt;Second, the traffic governance plane (Layer 3). This is where the largest volume of deterministic prevention happens and where the richest detection telemetry is produced. Unifying API, AI, and agent traffic governance under a single policy model is a strategic investment with compounding returns. Perimeter (Layer 2) is typically mature in existing organizations, which is why new investment is usually better directed at Layer 3.&lt;/p&gt;&lt;p&gt;Third, supply chain integrity (Layer 4). The inside-out attack pattern is the fastest-growing threat class. Investment here produces disproportionate risk reduction because it closes entire attack paths structurally.&lt;/p&gt;&lt;p&gt;Fourth, SOC modernization (Layer 7). An AI-driven SOC operating on the cleaner signal produced by the first three investments reaches its potential. This is a live purchasing decision for most CISOs today, because defender AI platforms are being actively marketed to SOC teams right now. The sequence matters. An AI-augmented SOC built on top of weak identity, a fragmented traffic governance plane, and a porous supply chain produces a very fast analyst drowning in the same noise. Upstream first, then SOC, in that order.&lt;/p&gt;&lt;p&gt;Fifth, continuous refinement of all layers. The architecture is never complete. New detection findings become new preventive rules. New threat intelligence updates every layer. Maturity is a direction, not a destination.&lt;/p&gt;&lt;h2 id=&quot;closing-principle&quot;&gt;Closing Principle&lt;/h2&gt;&lt;p&gt;The shift to frontier AI threat models rewards architectural coherence over point-product sophistication. An organization with a coherent seven-layer architecture operating deterministically where possible, and behaviorally where necessary, with clean signal flow between layers, will outperform one with superior individual products and weaker integration every time.&lt;/p&gt;&lt;p&gt;Coherence is not the same as consolidation. The layers are deliberately distinct because they perform different functions on different inputs at different cadences, and collapsing them into a single product surface erodes the structural defense in depth that makes the architecture work. The system that issues credentials should not be the only system enforcing what those credentials can do. The system that hosts a workload should not be the only system observing it. Architectural coherence is achieved through clean interfaces between distinct layers, not through bundling those layers into a single control plane.&lt;/p&gt;&lt;p&gt;The measure of a modern defense is not how many tools it contains. It is how small its attack surface has become, how quickly it detects what did get through, and how little human intervention either of those requires. That is the standard the frontier AI era imposes on defenders. This blueprint is how to meet it.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-209462438701&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;209462438701&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLcNmoaJQIvEC53424Dg0xL46GR58iny6D4K0Wlr2zFUxVYyMd1DIRvae%2FaeYk4KIlMcJw0tUS1yOoho7JstflfPKEKognmviG0nqNmkSX%2B9jpp%2FJJ%2FrivC0CfQhRUIBgidbZhBMpgnX5bmfAPiCRoIcu7Q7hGWjaQ86kGd9bTo2b03%2B1HU49WlY%2FaTLuYhPzFAAmJ9t9c2Kz2ziOAIqA%3D%3D&amp;webInteractiveContentId=209462438701&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;7cs-ai-governance-ebook-promo-square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-209462438701.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Breaking the Monolith with Nutanix Cloud Infrastructure and Traefik Hub]]></title>
            <description><![CDATA[Learn how to modernize your infrastructure by unifying your traffic layer across VMs (Nutanix AHV) and progressively migrating to containers (Nutanix NKP).]]></description>
            <link>https://traefik.io/unified-ingress-for-nutanix-ahv-and-nkp</link>
            <guid isPermaLink="true">https://traefik.io/unified-ingress-for-nutanix-ahv-and-nkp</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[Nutanix]]></category>
            <category><![CDATA[VMs]]></category>
            <category><![CDATA[Containers]]></category>
            <dc:creator><![CDATA[Steve Eyler, Zaid Albirawi]]></dc:creator>
            <pubDate>Thu, 23 Apr 2026 22:17:30 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/breaking-monolith-nutanix-blog-image_no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Graphic of breaking monolith with Nutanix and Traefik Hub&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/breaking-monolith-nutanix-blog-image_no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/breaking-monolith-nutanix-blog-image_no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/breaking-monolith-nutanix-blog-image_no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/breaking-monolith-nutanix-blog-image_no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;You have a monolith running on a VM. It works. It has worked for years. But the pressure to modernize is real: new features take too long, scaling is expensive, and the teams building on it are stepping on each other&apos;s toes.&lt;/p&gt;&lt;p&gt;The instinct is to rewrite everything. Stand up a Kubernetes cluster, containerize the whole thing, and flip the switch. But if you have been in this industry long enough, you know how that story usually ends. Months of work. A missed deadline. A rollback. A very quiet retro.&lt;/p&gt;&lt;p&gt;There is a better way. And if you are running Nutanix, you already have the infrastructure to do it.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-169083275181&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;169083275181&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJ5jx%2Fz9UuDGS1tqQqx4%2FlUT7MR%2FwLnOKFpLkHLgflMbeuZcek18q2gLODg8xV0woeNSBTzzq9tKbaphBEsYNcf3PsjiOcegmXOXhuJDaSF5nink%2BwWO2R3tRwRNo7sXOs38yMERLOojCNYfJgWah195NZSps7oLnD1H7lqeTbmgUgnHlnijvAH18Vazq7HwZLoOU7Ish9eTjA8%2Fa1i&amp;webInteractiveContentId=169083275181&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Square Image - 1200 x 1200(7)&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-169083275181.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;the-real-blocker-is-not-containers&quot;&gt;The Real Blocker Is Not Containers&lt;/h2&gt;&lt;p&gt;Most modernization efforts stall before a single microservice is shipped. The blocker is not Kubernetes. It is not containerization. It is the gap between the VM world, where the monolith lives, and the container world where you want to go.&lt;/p&gt;&lt;p&gt;You can’t extract a service if you can’t route traffic to it. You can’t validate a new service if you can’t observe it handling real requests. And you can’t do any of this safely if authentication is applied differently at every layer.&lt;/p&gt;&lt;p&gt;The first move is not to break anything apart. The first move is to unify your traffic layer.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/monolith-routing.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Diagram of Traffic management with monolith&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;350&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/monolith-routing.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/monolith-routing.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/monolith-routing.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/monolith-routing.jpg 2194w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;With a unified traffic layer, you get a single control point across all environments:&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/unifying-traffic-layer.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Diagram of unifying traffic with a single control point across all environments&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;815&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/unifying-traffic-layer.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/unifying-traffic-layer.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/unifying-traffic-layer.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2026/04/unifying-traffic-layer.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;why-nutanix-changes-the-equation&quot;&gt;Why Nutanix Changes the Equation&lt;/h2&gt;&lt;p&gt;Nutanix is unique here because it runs both compute substrates natively. Your monolith sits on &lt;a href=&quot;https://www.nutanix.com/products/ahv?ref=containous.ghost.io&quot;&gt;&lt;u&gt;AHV virtual machines&lt;/u&gt;&lt;/a&gt;. Nutanix Kubernetes Platform (NKP) runs containers right next to them on the same compute cluster, same storage, same network fabric. You don’t need to build a bridge between two clouds or two data centers. The bridge already exists at the infrastructure level.&lt;/p&gt;&lt;p&gt;What you need is an application-layer bridge: something that understands HTTP, can discover services across both VMs and Kubernetes, and gives you the traffic controls to move between them safely.&lt;/p&gt;&lt;p&gt;That is where Traefik Hub comes in.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/traefik-as-the-application-intelligence-layer.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Diagram of using Traefik Hub as the unified application layer&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1176&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/traefik-as-the-application-intelligence-layer.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/traefik-as-the-application-intelligence-layer.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/traefik-as-the-application-intelligence-layer.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2026/04/traefik-as-the-application-intelligence-layer.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;step-one-deploy-your-unified-ingress-across-vms-and-kubernetes&quot;&gt;Step One: Deploy Your Unified Ingress Across VMs and Kubernetes&lt;/h2&gt;&lt;p&gt;Before you think about microservices, you need a single entry point for all traffic. Today, your monolith probably handles its own ingress, or sits behind a legacy load balancer that knows nothing about your containers.&lt;/p&gt;&lt;p&gt;The first step is to deploy Traefik Hub in two places:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;On NKP&lt;/strong&gt;, upgrade to Traefik Hub. &lt;a href=&quot;https://www.nutanix.com/products/kubernetes-management-platform?ref=containous.ghost.io&quot;&gt;&lt;u&gt;NKP&lt;/u&gt;&lt;/a&gt; already ships with a Kommander-managed Traefik instance for platform ingress, so the technology is familiar. You install Traefik Hub via Helm alongside it, using ingress classes to separate responsibilities. The Kommander instance keeps its existing ingress class for platform traffic, while Traefik Hub uses a dedicated class for application traffic. The NKP instance becomes your parent gateway, the central routing brain for all traffic.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;On AHV&lt;/strong&gt;, install Traefik Hub directly on a VM in the same VPC or subnet as your monolith. No Kubernetes required. Traefik Hub runs as a native binary on Linux, provisioned via cloud-init when you spin up the VM in Prism Central. It connects to the Nutanix Prism Central API and automatically discovers your VMs using category tags. Tag a VM with &lt;code&gt;TraefikServiceName: orders&lt;/code&gt; and Traefik picks it up within seconds.&lt;/p&gt;
&lt;p&gt;Now, let&apos;s connect them. Traefik Hub&apos;s multi-cluster capability uses a parent-child architecture where the NKP instance acts as the parent and the AHV instance registers as a child. The child exposes an uplink entry point on a dedicated port, and the parent automatically discovers all advertised workloads. Communication between them is secured with mutual TLS.&lt;/p&gt;&lt;p&gt;The result: a unified gateway on NKP that can route traffic to containers running in Kubernetes and to services running on VMs. One control plane. One set of routing rules. One place to enforce policy. Your monolith is now accessible through the same gateway that will serve your future microservices.&lt;/p&gt;&lt;h3 id=&quot;lock-down-the-network-with-nutanix%E2%80%99s-flow-microsegmentation&quot;&gt;Lock Down the Network with Nutanix’s Flow Microsegmentation&lt;/h3&gt;&lt;p&gt;Unified ingress solves the north-south problem: how traffic gets in. But a multi-cluster architecture also creates new network communication paths that need to be secured. There are two distinct concerns here, and &lt;a href=&quot;https://portal.nutanix.com/page/documents/solutions/details?targetId=TN-2094-Flow:TN-2094-Flow&amp;ref=containous.ghost.io&quot;&gt;&lt;u&gt;Flow Network Security&lt;/u&gt;&lt;/a&gt; addresses both.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;First: securing the Traefik-to-Traefik multi-cluster communication.&lt;/strong&gt; The parent gateway on NKP communicates with child instances on AHV VMs and other NKP clusters via mTLS on the uplink port (9443 in this example). At the application layer, mutual TLS ensures that only the parent can connect to the child and vice versa. But at the network layer, you should also lock this down with Flow.&lt;/p&gt;
&lt;p&gt;First, we need to define an Entity Group that will reference the Traefik Hub pods inside the NKP clusters, and tag the Traefik Hub VMs with &lt;code&gt;AppType: traefik-hub&lt;/code&gt; category. Then we can create an application policy that allows traffic on port 9443 only between VMs tagged with &lt;code&gt;AppType: traefik-hub&lt;/code&gt;  and pods selected with the Traefik Entity Group. Everything else trying to reach that port gets dropped. This ensures that even if something else on the network tries to probe the uplink endpoint, it never gets through.&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/diagram---securing-the-Traefik-to-Traefik-multi-cluster-communication.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Diagram of securing the Traefik-to-Traefik multi-cluster communication&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1346&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/diagram---securing-the-Traefik-to-Traefik-multi-cluster-communication.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/diagram---securing-the-Traefik-to-Traefik-multi-cluster-communication.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/diagram---securing-the-Traefik-to-Traefik-multi-cluster-communication.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2026/04/diagram---securing-the-Traefik-to-Traefik-multi-cluster-communication.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;Second: securing east-west traffic between workloads.&lt;/strong&gt; This is where Flow microsegmentation shines. Flow is a distributed, stateful firewall built into the AHV hypervisor that enforces policies at the VM vNIC level, before a packet ever reaches another workload. When using NKP, Flow extends the same policy model to Kubernetes pods and services. The result is consistent network security enforcement across both compute substrates, managed from a single Prism Central console.&lt;/p&gt;&lt;p&gt;Traefik Hub Nutanix Prism Central provider uses Nutanix Categories for service discovery in an AHV environment. Tag your monolith VMs with categories like &lt;code&gt;AppTier: backend&lt;/code&gt;, and group your containerized microservices into Entity Groups based on their cluster, namespace and labels. Flow can then define exactly which workloads can talk to each other, on which ports, and in which direction, regardless of whether they run on VMs or Kubernetes.&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/diagram-of-securing-east-west-traffic-between-workloads.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Diagram of securing east-west traffic between workloads&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1346&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/diagram-of-securing-east-west-traffic-between-workloads.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/diagram-of-securing-east-west-traffic-between-workloads.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/diagram-of-securing-east-west-traffic-between-workloads.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2026/04/diagram-of-securing-east-west-traffic-between-workloads.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Together, these two layers create defense-in-depth. Traefik Hub handles application-level concerns at Layer 7—e.g., who is making the request, whether they are authenticated, whether they should be rate-limited, and which backend version should receive the traffic. Flow handles the network-level concerns at Layers 3 and 4—e.g., can this VM talk to that pod at all, on which ports, and in which direction.&lt;/p&gt;&lt;p&gt;In practice, this means you can tighten security as you decompose. When the orders service moves from the monolith to its own container on NKP, you create a Flow policy that allows the new orders pod to reach the database VM on port 5432, and nothing else. The monolith keeps its existing access. The new microservice gets only what it needs. If the orders pod is ever compromised, the blast radius is contained to what Flow explicitly permits.&lt;/p&gt;&lt;p&gt;Flow also supports quarantine policies. If your security tooling detects anomalous behavior from a workload, Flow can instantly isolate it, cutting off all network access while allowing forensic investigation traffic. This is especially valuable during a migration, where new services are being validated, and the risk profile is temporarily elevated.Finally, the same security model Flow applies to VMs extends directly to NKP. You define Entity Groups to identify which pods should receive which traffic, then reuse your existing VM rules, swapping the category tags that identified the monolith for the Entity Groups covering its containerized replacement. Both rule sets can run in tandem during the cutover, so the monolith and its microservice counterparts stay protected under a single, consistent policy throughout the migration.&lt;/p&gt;&lt;h2 id=&quot;step-two-establish-observability-before-you-touch-anything&quot;&gt;Step Two: Establish Observability Before You Touch Anything&lt;/h2&gt;&lt;p&gt;You now have a gateway in front of everything. Before you extract a single service, start leveraging it.&lt;/p&gt;&lt;p&gt;Traefik Hub emits OpenTelemetry metrics, traces, and logs out of the box. Point Traefik Hub&apos;s OpenTelemetry exporter at the your telemetry suite, and you will immediately get visibility into every request flowing through the gateway.&lt;/p&gt;&lt;p&gt;On the network side, Nutanix Flow also gives you something most teams wish they had before starting a decomposition: a visual map of actual traffic patterns across your monolith. Flow&apos;s traffic visualization shows you which VMs are talking to which other VMs, how often, on which ports, and in which direction. This is invaluable for understanding data access patterns. If you can see that the orders module only talks to the orders database and the notification queue, you have evidence that it is a good extraction candidate. If you can see that the pricing module reaches into six different backends, you know to leave it alone for now.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/diagram-of-establishing-observability-with-Traefik-Hub-and-Nutanix-Flow.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Diagram of establish observability using Traefik Hub and Nutanix Flow&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1346&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/diagram-of-establishing-observability-with-Traefik-Hub-and-Nutanix-Flow.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/diagram-of-establishing-observability-with-Traefik-Hub-and-Nutanix-Flow.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/diagram-of-establishing-observability-with-Traefik-Hub-and-Nutanix-Flow.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2026/04/diagram-of-establishing-observability-with-Traefik-Hub-and-Nutanix-Flow.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;This is not optional. This is the foundation on which everything else depends. Between Traefik Hub&apos;s request-level telemetry and Flow&apos;s network-level traffic visualization, you need to answer questions like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Which endpoints get the most traffic?&lt;/li&gt;&lt;li&gt;What are the current latency baselines?&lt;/li&gt;&lt;li&gt;Which parts of the monolith are already isolated in terms of data access?&lt;/li&gt;&lt;li&gt;Which VMs communicate with which backends, and how tightly coupled are they?&lt;/li&gt;&lt;li&gt;Where are the error hotspots?&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The answers to these questions tell you what to extract first and, just as importantly, what to leave alone. Many teams make the mistake of extracting the service they think is most important. The right choice is usually the service that is most independent, has the clearest boundaries, and causes the least disruption if something goes wrong. Flow&apos;s traffic map gives you hard evidence for that decision instead of guesswork.&lt;/p&gt;&lt;p&gt;Observability also gives you the before picture. When you start routing traffic to a new microservice, you need to compare its behavior against the monolith&apos;s baseline. Without that baseline, you are flying blind.&lt;/p&gt;&lt;h2 id=&quot;step-three-centralize-authentication&quot;&gt;Step Three: Centralize Authentication&lt;/h2&gt;&lt;p&gt;Before you split traffic between the monolith and new services, you need a consistent authentication layer. The goal is simple: one place where identity is verified, so every service behind the gateway can trust who is making the request.&lt;/p&gt;&lt;p&gt;If your organization already uses an OIDC-compatible identity provider (Keycloak, Auth0, Okta, Entra ID, or similar), Traefik Hub makes this straightforward. Configure the gateway to validate JWT tokens at the edge, so that every request that reaches your services is already authenticated. If you are not there yet, that is perfectly fine. Traefik Hub also supports basic auth, API keys, and custom header-based authentication. You can start with whatever your monolith uses today and evolve toward centralized identity at your own pace. The important thing is that the gateway becomes the single enforcement point, regardless of the mechanism behind it.&lt;/p&gt;&lt;p&gt;Here is the pragmatic part: it is perfectly fine to validate at the gateway &lt;em&gt;and&lt;/em&gt; still have the monolith validate internally. You do not need to rip out the monolith&apos;s auth layer on day one. Configure Traefik to forward the validated credentials downstream so the monolith can continue to verify them as it always has. Over time, as you gain confidence, services behind the gateway can rely on the gateway&apos;s validation and skip their own.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/diagram-of-centralizing-authentication-with-Traefik.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Diagram of centralizing authentication with Traefik&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1217&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/diagram-of-centralizing-authentication-with-Traefik.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/diagram-of-centralizing-authentication-with-Traefik.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/diagram-of-centralizing-authentication-with-Traefik.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2026/04/diagram-of-centralizing-authentication-with-Traefik.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;This approach means you do not need to change the monolith&apos;s auth logic to get started. The gateway adds a layer of centralized enforcement without requiring the monolith to change.&lt;/p&gt;&lt;h2 id=&quot;step-four-decide-what-to-extract&quot;&gt;Step Four: Decide What to Extract&lt;/h2&gt;&lt;p&gt;With the foundation in place, the real work begins: deciding what to decompose, in what order, and why.&lt;/p&gt;&lt;h3 id=&quot;how-to-pick-the-first-service&quot;&gt;How to Pick the First Service&lt;/h3&gt;&lt;p&gt;Not every service is a good candidate for early extraction. Here is what to consider:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Domain Independence&lt;/strong&gt;&lt;br&gt;
Look for functionality with clear boundaries around data ownership and API surface. An &lt;code&gt;orders&lt;/code&gt; service that reads from its own tables and exposes a clean REST API is a better first candidate than a pricing engine that reaches into six different database schemas.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Team Ownership&lt;/strong&gt; The team that owns the domain should own the extraction. If you are extracting the notifications service, the team that builds and maintains notifications should drive it. They know the edge cases, the failure modes, and the quirks that no architecture diagram captures.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Risk Tolerance&lt;/strong&gt;Start with something that has a fallback. If the new notifications microservice fails, can you queue the notifications and retry? That is a much safer first extraction than the payment service, where failure means lost revenue.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Data Coupling&lt;/strong&gt;If the candidate service shares a database with other parts of the monolith, you have a harder extraction ahead of you. Shared databases are the number one reason monolith decompositions stall. Either decouple the data first, or pick a service that already has its own data store. This is where Flow&apos;s traffic visualization pays off again.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Instead of relying on architecture diagrams that may be out of date, you can look at the actual network communication graph and see exactly which components access which data stores. A module that Flow shows talking to a single database is a clean extraction target. A module that Flow shows reaching into multiple different backends is one you should consider deferring.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Traffic Patterns&lt;/strong&gt;Your observability data shows the request volume, latency profile, and error rate of each endpoint. Pick something with moderate traffic for your first extraction. Too low and you will not learn anything. Too high and a mistake impacts too many users.&lt;/p&gt;&lt;h3 id=&quot;what-the-team-should-think-about&quot;&gt;What the Team Should Think About&lt;/h3&gt;&lt;p&gt;Beyond picking the service, the team needs to align on a few things before code gets written:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;API contracts&lt;/strong&gt;.&lt;strong&gt; &lt;/strong&gt;Define the API surface of the new service before you build it. The monolith already exposes these endpoints. The new service needs to be a drop-in replacement from the client&apos;s perspective.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Data migration strategy&lt;/strong&gt;. If the new service needs its own data store, how do you migrate the data? Do you do it upfront, or run dual writes for a period?&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Error handling and fallback&lt;/strong&gt;. What happens when the new service is down? Does the gateway fall back to the monolith? Does it return a cached response? Does it fail loudly? Decide this before you ship.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Deployment independence&lt;/strong&gt;. The whole point of microservices is that teams can ship independently. If deploying the new service still requires coordinating with the monolith team, you have not actually decomposed anything.&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;step-five-implement-the-strangler-fig-pattern&quot;&gt;Step Five: Implement the Strangler Fig Pattern&lt;/h2&gt;&lt;p&gt;Now the migration starts. The pattern is called the Strangler Fig: new functionality grows around the old system, gradually replacing it piece by piece, until the original is no longer needed.&lt;/p&gt;&lt;p&gt;In a Nutanix environment with Traefik Hub, this pattern is controlled entirely through routing. You never need to change DNS records, update load balancer configs, or redeploy the monolith. Every change is a routing rule update.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/Diagram-of-the-Strangler-Fig-Pattern.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Diagram of the Strangler Fig Pattern&quot; loading=&quot;lazy&quot; width=&quot;1806&quot; height=&quot;1646&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/Diagram-of-the-Strangler-Fig-Pattern.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/Diagram-of-the-Strangler-Fig-Pattern.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/Diagram-of-the-Strangler-Fig-Pattern.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/Diagram-of-the-Strangler-Fig-Pattern.jpg 1806w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h3 id=&quot;phase-1-mirror-traffic&quot;&gt;Phase 1: Mirror Traffic&lt;/h3&gt;&lt;p&gt;Deploy your new microservice on NKP. &lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/expose/services/api-gateway-mirroring?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Configure Traefik Hub to mirror&lt;/u&gt;&lt;/a&gt; a percentage of production traffic to it. Mirroring sends a copy of each request to the new service while continuing to serve all responses from the monolith. Users see no difference. The mirror&apos;s responses are discarded.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/diagram-of-mirroring-traffic-with-progressive-deployment.jpg&quot; class=&quot;kg-image&quot; alt=&quot;diagram of mirroring traffic&quot; loading=&quot;lazy&quot; width=&quot;1806&quot; height=&quot;2030&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/diagram-of-mirroring-traffic-with-progressive-deployment.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/diagram-of-mirroring-traffic-with-progressive-deployment.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/diagram-of-mirroring-traffic-with-progressive-deployment.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/diagram-of-mirroring-traffic-with-progressive-deployment.jpg 1806w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Start at 10%. Watch the new service&apos;s logs, traces, and error rates. Compare its latency against the monolith&apos;s baseline. If it handles 10% cleanly, ramp to 25%, then 50%, then 100%.&lt;/p&gt;&lt;p&gt;Mirroring is zero-risk validation. You are testing with real production traffic patterns, real payloads, and real edge cases. No amount of synthetic load testing gives you this level of confidence.&lt;/p&gt;&lt;h3 id=&quot;phase-2-ab-testing-with-live-traffic&quot;&gt;Phase 2: A/B Testing with Live Traffic&lt;/h3&gt;&lt;p&gt;Once the microservice handles 100% of the mirrored traffic cleanly, you are ready to send real traffic. But not all of it. When the microservice successfully processes 100% of the mirrored traffic without issues, you can then begin directing live traffic to it. However, start with a partial rollout.&lt;/p&gt;&lt;p&gt;Use Traefik Hub&apos;s &lt;a href=&quot;https://traefik.io/blog/choose-the-right-load-balancing-strategy?ref=containous.ghost.io&quot;&gt;&lt;u&gt;weighted round-robin&lt;/u&gt;&lt;/a&gt; to split traffic between the monolith and the new service. Start with 10% going to the new service and 90% staying on the monolith. Monitor closely.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/diagram-of-A-B-Testing-with-Live-Traffic.jpg&quot; class=&quot;kg-image&quot; alt=&quot;diagram of A/B Testing with Live Traffic&quot; loading=&quot;lazy&quot; width=&quot;1664&quot; height=&quot;1866&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/diagram-of-A-B-Testing-with-Live-Traffic.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/diagram-of-A-B-Testing-with-Live-Traffic.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/diagram-of-A-B-Testing-with-Live-Traffic.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/diagram-of-A-B-Testing-with-Live-Traffic.jpg 1664w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;For more control, use identity-aware routing. Traefik can extract claims from JWT tokens and route based on user attributes. Send internal employees to the new service first. Then beta users. Then a broader cohort. This gives you surgical control over who experiences the new path.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/diagram-of-indentiy-aware-routing.jpg&quot; class=&quot;kg-image&quot; alt=&quot;diagram of indentiy-aware routing&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1937&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/diagram-of-indentiy-aware-routing.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/diagram-of-indentiy-aware-routing.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/diagram-of-indentiy-aware-routing.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/diagram-of-indentiy-aware-routing.jpg 2220w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Sticky sessions ensure that once a user is assigned to a version, they stay there for their session. No one bounces between the old and new checkout flow mid-transaction. To prevent users from being switched between the old and new checkout processes mid-transaction, sticky sessions are employed. This guarantees that once a user is assigned to a specific version, they remain with that version for the duration of their session.&lt;/p&gt;&lt;h3 id=&quot;phase-3-gradual-cutover&quot;&gt;Phase 3: Gradual Cutover&lt;/h3&gt;&lt;p&gt;As confidence grows, shift the weights. 5/95 becomes 10/90, then 25/75, then 50/50. At each stage, compare error rates, latency, and throughput between the two paths. If anything degrades, shift the weight back. No redeployment. No rollback pipeline. Just a configuration change.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/diagram-of-gradual-cutover.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Diagram of gradual cutover&quot; loading=&quot;lazy&quot; width=&quot;1844&quot; height=&quot;604&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/diagram-of-gradual-cutover.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/diagram-of-gradual-cutover.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/diagram-of-gradual-cutover.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/diagram-of-gradual-cutover.jpg 1844w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;When you reach 100% on the new service, keep the monolith endpoint alive for a while as a failover target. Traefik Hub&apos;s failover service automatically redirects traffic back to the monolith if the new service fails health checks.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/Diagram-of-keeping-the-monolith-endpoint-as-a-failover-target.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Diagram of keeping the monolith endpoint as a failover target&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1534&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/Diagram-of-keeping-the-monolith-endpoint-as-a-failover-target.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/Diagram-of-keeping-the-monolith-endpoint-as-a-failover-target.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/Diagram-of-keeping-the-monolith-endpoint-as-a-failover-target.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/Diagram-of-keeping-the-monolith-endpoint-as-a-failover-target.jpg 2310w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Only decommission the old path when the team is confident, and the data confirms it.&lt;/p&gt;&lt;h3 id=&quot;phase-4-repeat&quot;&gt;Phase 4: Repeat&lt;/h3&gt;&lt;p&gt;Pick the next service. The process is the same: mirror, A/B test, shift, cut over. Each extraction gets easier because the patterns are established, the tooling is in place, and the team has done it before.&lt;/p&gt;&lt;h2 id=&quot;the-multi-cluster-architecture&quot;&gt;The Multi-Cluster Architecture&lt;/h2&gt;&lt;p&gt;What makes this work on Nutanix is the multi-cluster topology. The parent Traefik Hub instance on NKP is the single entry point for all external traffic. It connects to child instances running on:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;NKP workload clusters&lt;/strong&gt; hosting your containerized microservices&lt;/li&gt;&lt;li&gt;&lt;strong&gt;AHV VMs&lt;/strong&gt; hosting your monolith and any services that have not yet been containerized&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Additional NKP clusters&lt;/strong&gt; if you run dedicated clusters for different teams or environments&lt;/li&gt;&lt;/ul&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/Diagram-of-multi-cluster-architecture-with-Traefik-Hub.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Diagram of multi-cluster architecture with Traefik Hub&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1249&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/Diagram-of-multi-cluster-architecture-with-Traefik-Hub.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/Diagram-of-multi-cluster-architecture-with-Traefik-Hub.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/Diagram-of-multi-cluster-architecture-with-Traefik-Hub.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2026/04/Diagram-of-multi-cluster-architecture-with-Traefik-Hub.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The parent automatically discovers workloads advertised by each child. When a new service comes online in any child cluster, the parent sees it and can route to it immediately. This works across Kubernetes and VMs transparently because the multi-cluster provider is infrastructure-agnostic. It just needs HTTP connectivity.&lt;/p&gt;&lt;p&gt;This also means your Day 2 operations benefit from the same architecture. Need to spin up a new NKP cluster for a team? Add it as a child, and the parent can route to it. Need to run a canary deployment across clusters? Use weighted routing on the parent to split traffic between the old and new clusters. Need high availability? Configure failover services so traffic shifts automatically when a cluster goes down.&lt;/p&gt;&lt;h2 id=&quot;what-you-get-at-the-end&quot;&gt;What You Get at the End&lt;/h2&gt;&lt;p&gt;By the end of this process, you have:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;A unified gateway that manages traffic across VMs and containers from a single control plane&lt;/li&gt;&lt;li&gt;Defense in depth: L7 application security from Traefik Hub and L3/4 microsegmentation from Nutanix Flow, working in concert&lt;/li&gt;&lt;li&gt;Centralized authentication that does not require the monolith to change&lt;/li&gt;&lt;li&gt;End-to-end observability across every service, regardless of where it runs&lt;/li&gt;&lt;li&gt;A proven, repeatable process for extracting services safely&lt;/li&gt;&lt;li&gt;Infrastructure that supports the next evolution, whether that is AI workloads, edge deployments, or API management&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The monolith does not disappear overnight. It should not. Some parts of it will run for years, and that is fine. The point is that you can extract what needs to move, at the pace that makes sense for your teams, with the confidence that every step is reversible.&lt;/p&gt;&lt;p&gt;Traffic control is migration control. And on Nutanix with Traefik Hub, you have all the control you need.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-169083275181&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;169083275181&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJ5jx%2Fz9UuDGS1tqQqx4%2FlUT7MR%2FwLnOKFpLkHLgflMbeuZcek18q2gLODg8xV0woeNSBTzzq9tKbaphBEsYNcf3PsjiOcegmXOXhuJDaSF5nink%2BwWO2R3tRwRNo7sXOs38yMERLOojCNYfJgWah195NZSps7oLnD1H7lqeTbmgUgnHlnijvAH18Vazq7HwZLoOU7Ish9eTjA8%2Fa1i&amp;webInteractiveContentId=169083275181&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Square Image - 1200 x 1200(7)&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-169083275181.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;additional-resources&quot;&gt;Additional Resources&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/blog/breaking-the-monolith-controlled-api-gateway-journey?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Breaking the Monolith: A Controlled API Gateway Journey&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/blog/one-gateway-three-estates-zero-compromises?ref=containous.ghost.io&quot;&gt;&lt;u&gt;One Gateway, Three Estates, Zero Compromises&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/solutions/nutanix-and-traefik?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Nutanix and Traefik Solution Overview&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/expose/multi-cluster?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Multi-Cluster Traffic Distribution&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/guides/nutanix-prism-central-guide?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Nutanix Prism Central Setup Guide&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/expose/services/api-gateway-mirroring?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traffic Mirroring&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/expose/services/api-gateway-canary?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Canary Deployments&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/expose/services/api-gateway-ab-testing?ref=containous.ghost.io&quot;&gt;&lt;u&gt;A/B Testing&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.nutanix.com/products/flow-network-security?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Nutanix Flow Network Security&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;script id=&quot;tocOverrides&quot; type=&quot;application/json&quot;&gt;
  {
    &quot;1&quot;: &quot;The Real Blocker Is Not Containers&quot;,
    &quot;2&quot;: &quot;Why Nutanix Changes the Equation&quot;,
    &quot;3&quot;: &quot;Step 1: Deploy Unified Ingress&quot;,
    &quot;4&quot;: &quot;Step 2: Establish Observability&quot;,
    &quot;5&quot;: &quot;Step 3: Centralize Authentication&quot;,
    &quot;6&quot;: &quot;Step 4: Decide What to Extract&quot;,
    &quot;7&quot;: &quot;Step 5: The Strangler Fig Pattern&quot;,
    &quot;8&quot;: &quot;The Multi-Cluster Architecture&quot;,
    &quot;9&quot;: &quot;What You Get at the End&quot;,
    &quot;10&quot;: &quot;Additional Resources&quot;
  }
&lt;/script&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[One Platform. One Gateway. Every Request Governed.]]></title>
            <description><![CDATA[Learn how Traefik Labs & SUSE unify application delivery governance across VMs & containers, covering VMware migration, Kubernetes ingress, & AI agent control.]]></description>
            <link>https://traefik.io/govern-suse-rancher-vms-rke2-and-k3s-with-traefik</link>
            <guid isPermaLink="true">https://traefik.io/govern-suse-rancher-vms-rke2-and-k3s-with-traefik</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Strategy]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <category><![CDATA[MCP Gateway]]></category>
            <category><![CDATA[RKE2]]></category>
            <category><![CDATA[K3s]]></category>
            <category><![CDATA[VMs]]></category>
            <dc:creator><![CDATA[Troy Topnik, Sudeep Goswami]]></dc:creator>
            <pubDate>Sun, 19 Apr 2026 09:00:00 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;p&gt;&lt;em&gt;How Traefik Labs and SUSE power unified application delivery governance across VM and container estates, covering VMware migration, Kubernetes ingress, and AI agent control.&lt;/em&gt;&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/SUSE-blog-without-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/SUSE-blog-without-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/SUSE-blog-without-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/SUSE-blog-without-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/SUSE-blog-without-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;Three waves&lt;/strong&gt; are hitting enterprise infrastructure simultaneously, and they are converging on the same answer.&lt;/p&gt;&lt;p&gt;The first wave is &lt;strong&gt;VMware displacement&lt;/strong&gt;. Two years after Broadcom completed its acquisition of VMware, the predicted mass exodus has not materialized, but a measured, sustained unwind is well underway. CloudBolt&apos;s January 2026 survey of 302 enterprise IT decision-makers found that &lt;a href=&quot;https://www.cloudbolt.io/cii-report-the-mass-exodus-that-never-was/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;86 percent of organizations are actively reducing their VMware footprint&lt;/a&gt;, while 88 percent report that anticipated future price increases are already shaping infrastructure decisions. Most organizations saw price increases of 25-49%; outlier cases have been dramatically higher. The organizations evaluating &lt;a href=&quot;https://www.suse.com/products/rancher/virtualization/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;SUSE Virtualization&lt;/a&gt;, Nutanix, and OpenShift as destinations are not making minor adjustments. They are re-platforming their entire estate, without realizing that infrastructure migration and application delivery migration are two different problems.&lt;/p&gt;&lt;p&gt;The second wave is &lt;strong&gt;Kubernetes networking consolidation&lt;/strong&gt;. The Kubernetes community &lt;a href=&quot;https://kubernetes.io/blog/2025/11/11/ingress-nginx-retirement/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;retired ingress-nginx in March 2026&lt;/a&gt;, ending all maintenance, bug fixes, and security patches for one of the most widely deployed components in production infrastructure. SUSE formalized &lt;a href=&quot;https://www.suse.com/c/kubecon-eu-2026-rke2-nginx-traefik-support/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Traefik as the default ingress controller for RKE2&lt;/a&gt; starting with v1.36, extending what K3s has delivered for years. IBM Cloud, Nutanix, OVHcloud, and TIBCO each made the same choice independently.&lt;/p&gt;&lt;p&gt;The third wave is &lt;strong&gt;enterprise AI governance&lt;/strong&gt;. Organizations are deploying AI inference workloads, autonomous agents, and MCP-connected tool pipelines into production. API gateway, AI gateway, and MCP governance are absent across every segment of the enterprise infrastructure landscape today. They have to be added, and the architecture of how they are added determines how well-governed, auditable, and portable the result is.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-177548019563&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:225px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;177548019563&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJ3MQuqdghtsZOSqlxZs10L89gTG2cWXSN0Q5JyDK42k5nszAbOA9pKpkYxvSD8dTs0SDSYWNKmNKTobTXPAYpamndqzRtKLuCkEUGxPBZq437HNA1vwJoWtwCC7d7%2Btt1p7o3j7%2FZMzthT2k79gyGhOKSbgQ6HD8O0MoEVb%2BLS8s1%2BLxgUFx0mQ0yvc50%3D&amp;webInteractiveContentId=177548019563&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Hub-cta&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-177548019563.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;!--kg-card-end: html--&gt;
&lt;p&gt;The joint architecture described in this post addresses all three waves with a single platform and a single upgrade path.&lt;/p&gt;&lt;h2 id=&quot;the-architecture-at-a-glance&quot;&gt;The Architecture at a Glance&lt;/h2&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/traefik_suse_architecture_v11.png&quot; class=&quot;kg-image&quot; alt=&quot;Diagram of how Traefik Hub sits in front of both SUSE estates: the VM estate (SUSE Virtualization/Harvester) and the Kubernetes estate (RKE2 + K3s), both managed by SUSE Rancher Suite. &quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1991&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/traefik_suse_architecture_v11.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/traefik_suse_architecture_v11.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/traefik_suse_architecture_v11.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2026/04/traefik_suse_architecture_v11.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;i&gt;&lt;em class=&quot;italic&quot; style=&quot;white-space: pre-wrap;&quot;&gt;Traefik Hub sits in front of both SUSE estates: the VM estate (SUSE Virtualization/Harvester) and the Kubernetes estate (RKE2 + K3s), both managed by SUSE Rancher Suite. &lt;/em&gt;&lt;/i&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;h2 id=&quot;two-estates-one-management-plane&quot;&gt;Two Estates, One Management Plane&lt;/h2&gt;&lt;p&gt;A common misconception is that &lt;a href=&quot;https://www.suse.com/products/rancher/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;SUSE Rancher Prime&lt;/a&gt; is a Kubernetes-only management platform and SUSE Virtualization is a VM-only platform. Neither is correct, and the distinction matters significantly for how Traefik is positioned in this architecture.&lt;/p&gt;&lt;p&gt;SUSE Rancher Prime is &lt;a href=&quot;https://documentation.suse.com/cloudnative/rancher-manager/latest/en/integrations/harvester/harvester.html?ref=traefik.io&quot; rel=&quot;noreferrer&quot;&gt;the unified management control plane for both estates&lt;/a&gt;. It manages Kubernetes clusters (RKE2 and K3s) and SUSE Virtualization (Harvester) VM clusters from a single interface and API surface. Platform teams operating mixed environments do not need separate consoles for virtualization and Kubernetes.&lt;/p&gt;&lt;p&gt;SUSE Virtualization (Harvester), the VM platform, is itself built on Kubernetes. It runs RKE2 internally, and VMs are managed as Kubernetes objects via KubeVirt. This means VMs have a Kubernetes API surface: they can be declared as YAML manifests, exposed as Kubernetes services, and managed through the same GitOps workflows as containerized workloads. The current release of Harvester defaults to ingress-nginx. Traefik becomes the default ingress controller in Harvester v1.9, which is in active development. Once v1.9 ships, the Traefik application delivery layer will be consistent across both SUSE estates by default, with no additional configuration required.&lt;/p&gt;&lt;p&gt;On the Kubernetes estate, &lt;a href=&quot;https://www.suse.com/c/kubecon-eu-2026-rke2-nginx-traefik-support/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;RKE2 defaults to Traefik&lt;/a&gt; from v1.36, and K3s has defaulted to Traefik for years. Together with the Harvester v1.9 roadmap, this means Traefik is converging as the standard ingress and application delivery layer across the entire SUSE estate, from edge K3s clusters through enterprise RKE2 to Harvester-managed VM infrastructure.&lt;/p&gt;&lt;h2 id=&quot;the-gateway-layer-traefik-hub-across-both-estates&quot;&gt;The Gateway Layer: Traefik Hub Across Both Estates&lt;/h2&gt;&lt;p&gt;One of the consistent findings in analyzing application delivery across VMware customer segments is how wide the gap is. Across every segment reviewed, vSphere-only, VVF, and VCF with or without Avi, API gateway is absent, AI gateway is absent, and MCP governance is absent or limited to transport-layer session persistence. These gaps do not close when organizations migrate to SUSE. They close when organizations deploy Traefik Hub. The &lt;a href=&quot;https://traefik.io/blog/the-triple-ai-security-gap?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Triple Gate architecture&lt;/a&gt; addresses all three with a single deployment, a single control plane, and a single audit surface, applied uniformly to both the VM and Kubernetes estates.&lt;/p&gt;&lt;h3 id=&quot;api-gateway&quot;&gt;API Gateway&lt;/h3&gt;&lt;p&gt;The API governance gap is older and deeper than most organizations realize. A typical VMware estate routes API traffic through NGINX or F5 without any catalog of what APIs exist in production, no record of which consumers are calling which endpoints, no deprecation workflow, and no API-level access controls. When organizations begin migrating workloads, they frequently discover that their API surface is both larger and less understood than anyone believed. The migration moment is when the gap becomes operationally expensive rather than theoretically concerning.&lt;/p&gt;&lt;p&gt;Traefik&apos;s API Gateway closes this gap at the ingress boundary, before any backend on either estate receives a request. The &lt;a href=&quot;https://traefik.io/solutions/waf?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Coraza WAF&lt;/a&gt; is a Go-native implementation of the OWASP Core Rule Set, the same ruleset used in ModSecurity-compatible deployments, but without the C/C++ data plane that &lt;a href=&quot;https://www.cisa.gov/news-events/alerts/2025/01/17/cisa-and-fbi-release-updated-guidance-product-security-bad-practices?ref=containous.ghost.io&quot;&gt;&lt;u&gt;regulators are asking vendors to move away from&lt;/u&gt;&lt;/a&gt;. It applies equally to traffic destined for VM-hosted services on Harvester and container-hosted services on RKE2. Authentication is enforced at the gateway: JWT validation, OAuth2 flows, API key management, and policy-based access control are all handled before the request propagates. Rate limiting operates at the consumer level: per user, per team, and per application, using token bucket or sliding window algorithms. API lifecycle management provides the developer portal, access plans, versioning, and deprecation controls that transform a collection of endpoints into a governed API platform.&lt;/p&gt;&lt;p&gt;The regulated industry argument is direct. PCI-DSS requires a WAF for card data environments. HIPAA requires access logging and breach notification capability. The combination of &lt;a href=&quot;https://traefik.io/traefik-hub-api-gateway?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Traefik&apos;s API Gateway&lt;/a&gt; for north-south enforcement and SUSE Security&apos;s container security for east-west micro-segmentation provides the two-perimeter architecture that zero-trust frameworks prescribe: enforce at the boundary, enforce between workloads. The same deployment that handles API governance also closes the memory safety compliance gap, since Coraza is written entirely in Go.&lt;/p&gt;&lt;h3 id=&quot;ai-gateway&quot;&gt;AI Gateway&lt;/h3&gt;&lt;p&gt;AI inference infrastructure creates two simultaneous problems that traditional ingress controllers were never designed to solve.&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;The first is cost&lt;/strong&gt;. GPU inference is expensive: a frontier model call that involves a long context window can cost orders of magnitude more than a typical API request, and an application making unconstrained inference calls can generate thousands of dollars in cloud spend within hours. Without a gateway, that spend is invisible until the invoice arrives.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;The second is risk&lt;/strong&gt;. Model outputs can contain PII extracted from training data, prompt injection attacks can manipulate model behavior in ways that produce harmful or policy-violating responses, and models from different providers have different safety characteristics that need to be accounted for in regulated deployments.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://traefik.io/solutions/ai-gateway?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Traefik&apos;s AI Gateway&lt;/a&gt; addresses both dimensions at the infrastructure layer. Multi-provider model routing with weighted failover involves defining a primary inference endpoint and a fallback chain. If the primary provider is rate-limited, unavailable, or over budget, traffic shifts to the next provider automatically, with no application code changes, no DNS updates, and no manual intervention. Token budget enforcement operates as a gateway policy: per-user, per-team, and per-application token budgets are enforced before inference happens. An HTTP 429 response is returned before GPU cycles are consumed, which means cost controls are enforced at the infrastructure layer rather than discovered after the fact through billing reconciliation.&lt;/p&gt;&lt;p&gt;Safety pipelines run as middleware in the request and response chain. NVIDIA Safety NIMs, purpose-built safety models covering PII detection, prompt injection detection, and content filtering, execute in parallel with the primary inference call. The safety check result can gate the response before it reaches the consumer. For organizations running AI workloads on NVIDIA GPU nodes in RKE2, this creates a coherent safety architecture: NVIDIA hardware for inference, NVIDIA safety models for guardrails, and Traefik as the orchestration and enforcement layer that applies those guardrails consistently across every inference endpoint on the platform.&lt;/p&gt;&lt;h3 id=&quot;mcp-gateway&quot;&gt;MCP Gateway&lt;/h3&gt;&lt;p&gt;The Model Context Protocol is the emerging standard for how AI agents call external tools: databases, APIs, file systems, shell interfaces, and internal services. The governance question MCP raises is different in kind from traditional API governance. A conventional API consumer is a deterministic program calling a known endpoint with known parameters. An MCP-connected AI agent is a probabilistic system whose tool calls are shaped by natural-language instructions, and whose behavior can be redirected by a sufficiently crafted prompt. The blast radius of a prompt injection attack scales directly with the breadth of tool access available to the targeted agent. An agent with unrestricted MCP access to production systems is, in effect, an insider threat that can be triggered from the outside.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://traefik.io/solutions/mcp-gateway?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Task-Based Access Control&lt;/a&gt; (TBAC) is Traefik&apos;s answer to this problem, and it operates at a different layer than anything in the traditional load-balancing market. The distinction is worth making precisely: Avi Networks announced MCP session persistence as a tech preview at VMware Explore 2025. Session persistence keeps the same agent talking to the same MCP server connection across requests: this is an L4 transport concern. TBAC defines what tasks an agent can perform, on what resources, under what conditions, at the application layer. A TBAC policy does not say &quot;this agent can connect to this MCP server.&quot; It says, &quot;this agent can call this MCP server to perform read operations on cluster configuration data, for clusters in the production namespace, at a rate not exceeding one hundred calls per hour, between 08:00 and 22:00 UTC.&quot; Every call outside those parameters is blocked and logged. Session persistence and task authorization are not competing capabilities; they operate at different layers of the stack and address entirely different problems.&lt;/p&gt;&lt;p&gt;The &lt;a href=&quot;https://www.suse.com/c/kubecon-eu-2026-first-agentic-ecosystem-platform/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;AI Assistant (aka “Liz”)&lt;/a&gt; in SUSE Rancher Prime illustrates the practical governance model. It uses MCP to call external tools to retrieve cluster state, diagnose anomalies, and execute remediation workflows. TBAC defines what the assistant can do: which data sources it can query, which cluster operations it can initiate, and under what conditions. A policy that allows the assistant to read monitoring data from a CMDB MCP server does not automatically allow it to write to a production configuration store, even if both are reachable MCP servers. Every tool call is logged: agent identity, tool called, parameters passed, response received, and timestamp, creating the audit trail that compliance teams require when AI is part of a production operational workflow. Critically, the governance layer is independent of the agent. Whether the deployment involves Liz, a third-party agent framework, or a custom-built pipeline, the same TBAC policies apply at the gateway without modifications to the agent itself. The control surface belongs to the platform operator, not to the agent vendor.&lt;/p&gt;&lt;p&gt;All three gates (API, AI, &amp;amp; MCP) run on the same Traefik Hub instance, activated with a single Helm chart upgrade from Traefik Proxy. No re-architecture, no migration of existing routing rules, no new deployment footprint. A platform team that deploys Traefik Proxy as the default ingress controller on RKE2 today has a direct path to closing the API governance gap, the AI cost and safety gap, and the agent authorization gap across both the VM and Kubernetes estates, through a single upgrade operation.&lt;/p&gt;&lt;h2 id=&quot;the-vmware-exit-traefik-as-the-application-delivery-constant&quot;&gt;The VMware Exit: Traefik as the Application Delivery Constant&lt;/h2&gt;&lt;p&gt;The most common entry point for this joint architecture in 2026 is not a greenfield deployment. It is a VMware exit.&lt;/p&gt;&lt;p&gt;A typical VMware estate runs F5 BIG-IP, NGINX, or HAProxy for load balancing and a standalone WAF from F5 or Cloudflare. Every one of those components is written in C or C++. The regulatory picture on this is no longer advisory. CISA&apos;s &quot;&lt;a href=&quot;https://www.cisa.gov/resources-tools/resources/product-security-bad-practices?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Product Security Bad Practices&lt;/a&gt;&quot; guidance set January 1, 2026 as the deadline for software manufacturers to publish a memory safety roadmap for any existing product written in memory-unsafe languages used in serving critical infrastructure. That deadline has passed. Any vendor supplying network-facing infrastructure to regulated environments that cannot produce a published memory-safety roadmap is now operating against explicit CISA guidance. A June 2025 joint NSA/CISA &lt;a href=&quot;https://media.defense.gov/2025/Jun/23/2003742198/-1/-1/0/CSI_MEMORY_SAFE_LANGUAGES_REDUCING_VULNERABILITIES_IN_MODERN_SOFTWARE_DEVELOPMENT.PDF?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Cybersecurity Information Sheet&lt;/a&gt; reinforced the same position, identifying memory safety vulnerabilities as serious risks to national security and critical infrastructure. The EU Cyber Resilience Act adds a parallel European mandate. Every legacy application delivery component in the VMware ecosystem (F5, NGINX, HAProxy, Avi, and Envoy) has a C or C++ data plane. Traefik, written in Go, has no memory-safety debt to address. It is already compliant by design.&lt;/p&gt;&lt;p&gt;Both vSphere 7 (October 2025) and vSphere 8 (October 2027) are on fixed end-of-life timelines, with no standalone vSphere 9. VCF 9.0 removed general-purpose NSX load balancing from the base entitlement. The migration follows three stages, with Traefik as the constant across all of them:&lt;/p&gt;&lt;h3 id=&quot;migrate-day-0&quot;&gt;Migrate (DAY 0)&lt;/h3&gt;&lt;p&gt;Deploy Traefik in front of existing VMware workloads before any infrastructure moves. This replaces C/C++ tools with a single memory-safe Go binary and decouples application identity from infrastructure identity. SUSE VM Import controller migrates VMs from vCenter to SUSE Virtualization (Harvester). Traefik auto-discovers workloads at their new location because they are still exposed as Kubernetes services. Traffic continues to flow without any upstream configuration changes.&lt;/p&gt;&lt;h3 id=&quot;modernize&quot;&gt;Modernize&lt;/h3&gt;&lt;p&gt;As workloads are containerized on RKE2, Traefik can manage canary routing between VM-hosted and container-hosted services simultaneously. One policy set governs both estates. No big-bang cutover. RKE2 v1.36 arrives pre-integrated with Traefik, so new clusters join the same governance model immediately.&lt;/p&gt;&lt;h3 id=&quot;transform&quot;&gt;Transform&lt;/h3&gt;&lt;p&gt;AI inference workloads on RKE2 with NVIDIA GPU nodes become a third estate behind the same gateway. Token-level rate limiting governs GPU resource costs. A single Helm chart upgrade from Traefik Proxy to Traefik Hub activates API Gateway, AI Gateway, and MCP Gateway across all three estates simultaneously.&lt;/p&gt;&lt;blockquote&gt;&lt;em&gt;The organizations that deploy Traefik on Day 0 of their VMware exit arrive at their destination with application delivery governance already in place, across VMs and containers alike.&lt;/em&gt;&lt;/blockquote&gt;&lt;h2 id=&quot;why-regulated-industries-should-pay-attention&quot;&gt;Why Regulated Industries Should Pay Attention&lt;/h2&gt;&lt;p&gt;For organizations in regulated environments, Traefik Hub provides a supported, sanctioned &lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/reference/install/fips/ref-fips?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;path to FIPS 140-2 compliance&lt;/a&gt;. The implementation uses BoringCrypto, a FIPS 140-2 validated cryptographic module derived from BoringSSL, compiled directly into the Go binary. This means FIPS compliance is not a configuration option or a wrapper: it is enforced at the cryptographic primitive level, covering TLS, JWT validation, API key handling, and HMAC operations. Organizations operating under FedRAMP, HIPAA, PCI-DSS, or EU CRA requirements can deploy Traefik Hub with a fully documented, auditable cryptographic baseline. Air-gapped deployments are supported through RKE2’s offline image tarball distribution, which bundles Traefik natively, combined with Traefik Hub’s offline activation model.&lt;/p&gt;&lt;p&gt;SUSE Security handles east-west security policy within clusters while Traefik handles north-south governance at the estate boundary. Together, they form the two-perimeter model that zero-trust frameworks require. This applies across both the VM and Kubernetes estates managed by Rancher Prime. For organizations that missed the January 1, 2026 CISA deadline for publishing a memory safety roadmap, the SUSE and Traefik migration is itself the roadmap: moving application delivery to a Go-based stack eliminates the class of vulnerability CISA is targeting, rather than scheduling a future plan to do so.&lt;/p&gt;&lt;h2 id=&quot;the-upgrade-path-is-the-commercial-insight&quot;&gt;The Upgrade Path is the Commercial Insight&lt;/h2&gt;&lt;p&gt;Every Kubernetes cluster on K3s or RKE2 already runs Traefik Proxy as the default ingress controller. Every Harvester VM cluster runs K3s with Traefik inside. Organizations already running Traefik Proxy across their SUSE estate are one Helm chart upgrade away from Traefik Hub, which adds API Gateway, AI Gateway, MCP Gateway, and full API lifecycle management with no changes to the underlying cluster or existing ingress resources.&lt;/p&gt;&lt;p&gt;For VMware exiters, the same logic applies from Day 0. Adopting Traefik before the first VM moves means the upgrade path to full AI governance is already established before the migration completes. No second integration project, no second vendor, no second control plane.&lt;/p&gt;&lt;h2 id=&quot;susecon-2026-and-what-comes-next&quot;&gt;SUSECON 2026 and What Comes Next&lt;/h2&gt;&lt;p&gt;SUSECON 2026 runs from April 20–23 in Prague. The theme is &lt;em&gt;Shape Your Resilient Future&lt;/em&gt;, with tracks covering AI adoption, digital sovereignty, Cloud Native modernization, and the shift from legacy virtualization. The SUSE Sovereign Summit opens on April 20 and focuses on infrastructure independence and regulatory compliance. The VMware displacement motion that SUSE is leading into SUSECON is sovereign infrastructure by another name: open source, portable, auditable, not subject to the pricing decisions of a single acquirer.&lt;/p&gt;&lt;p&gt;The architecture described here is deployable today. Teams attending SUSECON can begin the first stage of the migration path before the conference ends.&lt;/p&gt;&lt;h3 id=&quot;summary-the-three-waves-are-converging&quot;&gt;Summary: The Three Waves are Converging&lt;/h3&gt;&lt;p&gt;The joint Traefik and SUSE stack addresses VMware displacement, Kubernetes networking consolidation, and enterprise AI governance across both SUSE estates:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Traefik is already the default ingress inside both SUSE estates: K3s inside Harvester (VM estate) and RKE2/K3s (Kubernetes estate), providing a consistent application delivery model across the entire platform&lt;/li&gt;&lt;li&gt;A three-stage VMware migration path (Migrate, Modernize, Transform) with Traefik as the constant, replacing C/C++ application delivery tools with a memory-safe Go platform from Day 0&lt;/li&gt;&lt;li&gt;SUSE Rancher Prime as the unified management plane for both VM and Kubernetes estates, with Traefik Hub as the unified governance layer in front of both&lt;/li&gt;&lt;li&gt;A single Helm chart upgrade from Traefik Proxy to Traefik Hub activates API Gateway, AI Gateway, and MCP Gateway across all estates simultaneously&lt;/li&gt;&lt;li&gt;A two-perimeter security model: Traefik for north-south governance, SUSE Security for east-west policy, across both VM and container workloads&lt;/li&gt;&lt;li&gt;FIPS-certified, air-gap-ready sanctioned &amp;amp; supported images from Traefik Labs for regulated industry deployments&lt;/li&gt;&lt;li&gt;A memory-safe, Go-based implementation that is compliant by architecture with CISA&apos;s January 2026 memory safety roadmap deadline (now passed) and with NSA, FBI, and EU CRA guidance, replacing every C/C++ component in the legacy VMware application delivery stack&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Platform teams, CTOs, and CISOs navigating VMware exits, Kubernetes modernization, and enterprise AI adoption in 2026 are not choosing between stability and modernization. With this architecture, they are choosing both on a single platform, across every estate, with a single upgrade path.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-177548019563&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:225px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;177548019563&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJ3MQuqdghtsZOSqlxZs10L89gTG2cWXSN0Q5JyDK42k5nszAbOA9pKpkYxvSD8dTs0SDSYWNKmNKTobTXPAYpamndqzRtKLuCkEUGxPBZq437HNA1vwJoWtwCC7d7%2Btt1p7o3j7%2FZMzthT2k79gyGhOKSbgQ6HD8O0MoEVb%2BLS8s1%2BLxgUFx0mQ0yvc50%3D&amp;webInteractiveContentId=177548019563&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Hub-cta&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-177548019563.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;further-reading&quot;&gt;Further Reading&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://www.cloudbolt.io/industry-research/cii-the-mass-exodus-that-never-was/?ref=containous.ghost.io&quot;&gt;&lt;em&gt;&lt;u&gt;CloudBolt: &quot;The Mass Exodus That Never Was: The Squeeze Is Just Beginning&quot; (February 2026)&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://kubernetes.io/blog/2025/11/12/ingress-nginx-retirement/?ref=containous.ghost.io&quot;&gt;&lt;em&gt;&lt;u&gt;Kubernetes SIG Network: ingress-nginx retirement announcement (November 2025)&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.suse.com/c/kubecon-eu-2026-rke2-nginx-traefik-support/?ref=containous.ghost.io&quot;&gt;&lt;em&gt;&lt;u&gt;SUSE KubeCon EU 2026: RKE2 ingress migration to Traefik&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.suse.com/c/kubecon-eu-2026-first-agentic-ecosystem-platform/?ref=containous.ghost.io&quot;&gt;&lt;em&gt;&lt;u&gt;SUSE KubeCon EU 2026: Rancher Prime Agentic AI Ecosystem and MCP integration&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.cisa.gov/resources-tools/resources/product-security-bad-practices?ref=containous.ghost.io&quot;&gt;&lt;em&gt;&lt;u&gt;CISA Product Security Bad Practices: memory safety roadmap deadline January 1, 2026&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://media.defense.gov/2025/Jun/23/2003742198/-1/-1/0/CSI_MEMORY_SAFE_LANGUAGES_REDUCING_VULNERABILITIES_IN_MODERN_SOFTWARE_DEVELOPMENT.PDF?ref=containous.ghost.io&quot;&gt;&lt;em&gt;&lt;u&gt;NSA + CISA joint guide: Memory Safe Languages, Reducing Vulnerabilities in Modern Software Development (June 2025)&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/reference/install/fips/ref-fips?ref=containous.ghost.io&quot;&gt;&lt;em&gt;&lt;u&gt;Traefik Hub FIPS Compliance documentation&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;about-suse&quot;&gt;&lt;strong&gt;About SUSE&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;SUSE is a global leader in enterprise open source software, across Linux operating systems, Kubernetes container management, Edge solutions and AI. The majority of the Fortune 500 rely on SUSE to provide resilient infrastructure, enabling IT leaders to optimize cost and manage heterogeneous environments. SUSE collaborates with partners and communities to provide organizations with choices to maximize their current IT systems and innovate with next-generation technologies across traditional on-premises to cloud native, multi-cloud to edge and beyond. For more information, visit &lt;a href=&quot;http://www.suse.com/?ref=containous.ghost.io&quot;&gt;suse.com&lt;/a&gt;.&lt;/p&gt;&lt;h3 id=&quot;about-traefik-labs&quot;&gt;About Traefik Labs&lt;/h3&gt;&lt;p&gt;Traefik Labs is the creator of Traefik Proxy, the world&apos;s most widely deployed cloud-native application proxy with over 3.4 billion Docker Hub downloads and 62,000+ GitHub stars, and Traefik Hub, the integrated platform for API Gateway, AI Gateway, MCP Gateway, and API lifecycle management. Learn more at &lt;a href=&quot;https://traefik.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;traefik.io&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[The Five Levels of AI Sovereignty: A Maturity Model for Infrastructure Control]]></title>
            <description><![CDATA[Most enterprises claiming sovereign AI infrastructure have sovereignty theater instead. This framework defines five levels and seven dimensions to reveal where your architecture actually stands.]]></description>
            <link>https://traefik.io/the-five-levels-of-ai-sovereignty-a-maturity-model-for-infrastructure-control</link>
            <guid isPermaLink="true">https://traefik.io/the-five-levels-of-ai-sovereignty-a-maturity-model-for-infrastructure-control</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Strategy]]></category>
            <category><![CDATA[AI Strategy]]></category>
            <dc:creator><![CDATA[Sudeep Goswami]]></dc:creator>
            <pubDate>Thu, 16 Apr 2026 07:59:00 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;p&gt;&lt;em&gt;Not all sovereignty is created equal. Here&apos;s how to figure out where your organization actually stands, and where it needs to be.&lt;/em&gt;&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/AI-Sovereignty-Blog_without_copies@2x.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/AI-Sovereignty-Blog_without_copies@2x.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/AI-Sovereignty-Blog_without_copies@2x.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/AI-Sovereignty-Blog_without_copies@2x.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/AI-Sovereignty-Blog_without_copies@2x.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;We regularly talk to enterprises that tell us they have &quot;sovereign AI infrastructure.&quot; Then we ask a few questions:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;What happens if your internet connection goes down?&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Where does your AI safety filtering actually run?&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;If you wanted to move to a different cloud provider next quarter, how much would you have to rewrite?&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The answers are usually uncomfortable. The &quot;sovereign&quot; infrastructure turns out to depend on a SaaS control plane in Virginia. The AI guardrails make an API call to a model hosted by a hyperscaler. The governance policies are configured in a vendor console that can&apos;t be exported.&lt;/p&gt;&lt;p&gt;This isn&apos;t sovereignty. It&apos;s a sovereignty theater.&lt;/p&gt;&lt;p&gt;The word has become so overloaded that it&apos;s nearly meaningless. Data residency gets called sovereignty. Hybrid clouds get called sovereignty. &quot;We&apos;ll run the data plane in your VPC&quot; gets called sovereignty. None of these are wrong, exactly. But they describe very different levels of control, and conflating them is creating real problems for organizations trying to make architecture decisions.&lt;/p&gt;&lt;p&gt;So we built a framework to make the distinctions explicit. We&apos;re calling it the &lt;strong&gt;AI Sovereignty Maturity Model&lt;/strong&gt;. Two moving parts: &lt;strong&gt;&lt;em&gt;five levels&lt;/em&gt;&lt;/strong&gt; that describe what sovereignty looks like at each stage, and &lt;strong&gt;&lt;em&gt;seven dimensions&lt;/em&gt;&lt;/strong&gt; that show where to look when you&apos;re assessing your own architecture. It&apos;s not a sales tool, it&apos;s a diagnostic tool. We use it internally to understand where prospects actually are, and we&apos;re publishing it because the industry needs a common language for these conversations.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-201464153180&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.546875px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;201464153180&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLjI8kwBAP6Ylmx46f%2FKKLazSnXTw911MJYn5%2BlawCLQsarc7EWvrT0W2%2B3YL73UMcNboYO7jyvPLfN%2F4rIIbaOpUHjjkWrR%2Bo4FnVjCZVIEIxkiw5jsniOs7dNruruHAw7EtrxS8OzKFI0DkOMjC0qAQINtJpdmD6Gr7Aw%2FJ%2Bl48ioIyJ%2FZkjSKTCJzPy8C%2FM9%2BWEUiGH4RdAsNnKYTW%2B96hs%3D&amp;webInteractiveContentId=201464153180&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;ai sovereignty cta image - square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-201464153180.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;from-compliance-theater-to-true-control&quot;&gt;From Compliance Theater to True Control&lt;/h2&gt;&lt;p&gt;The model defines five levels. Each one represents a meaningfully different relationship between an organization and its AI infrastructure.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-3f74b5e7-f177-4078-9cd7-ca3d3d45b6c6.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/data-src-image-3f74b5e7-f177-4078-9cd7-ca3d3d45b6c6.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/data-src-image-3f74b5e7-f177-4078-9cd7-ca3d3d45b6c6.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/data-src-image-3f74b5e7-f177-4078-9cd7-ca3d3d45b6c6.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-3f74b5e7-f177-4078-9cd7-ca3d3d45b6c6.png 2048w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;Level 1: Data Residency&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Data is stored in a specific geography. A Frankfurt data center. A US-East region. A specific availability zone that satisfies compliance requirements.&lt;/p&gt;&lt;p&gt;But the control plane managing that data lives somewhere else. The AI models processing queries make calls to external APIs. The policies governing access are configured in a vendor&apos;s cloud console.&lt;/p&gt;&lt;p&gt;Level 1 satisfies a checkbox, but it does not provide control. If the vendor has an outage, operations stop. If a geopolitical event disrupts connectivity, operations stop. If the vendor changes their terms or pricing, there&apos;s no recourse.&lt;/p&gt;&lt;p&gt;Most organizations that claim sovereignty are actually here.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Level 2: Bring Your Own Cloud&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The data plane runs in the customer&apos;s environment. Usually their own AWS, Azure, or GCP account. This is a real improvement over Level 1. Cost economics are better because you&apos;re using your own committed spend and enterprise discounts. Latency is better because the data doesn&apos;t leave your environment for processing. Compliance posture is cleaner because your security team can apply their own controls to the data plane.&lt;/p&gt;&lt;p&gt;But the control plane is still external. The vendor operates the &quot;brain&quot; as a managed service. Configuration, orchestration, policy management, and often authentication all depend on that external connection.&lt;/p&gt;&lt;p&gt;This is where most &quot;hybrid&quot; and &quot;BYOC&quot; architectures land. It&apos;s a legitimate improvement over fully hosted SaaS. But it&apos;s not sovereignty. If the vendor&apos;s control plane goes down, your data plane keeps running on its last known configuration, but you can&apos;t update policies, push new routes, or respond to changing conditions. If the vendor decides to change the API, deprecate a feature, or raise prices, you&apos;re along for the ride.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Level 3: Self-Hosted (Connected)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Both the control plane and the data plane run on the customer infrastructure. This could be on-premises, in a private cloud, or in a customer-managed public cloud account. The customer operates the full stack.&lt;/p&gt;&lt;p&gt;But external dependencies remain. Licensing validation that phones home. Telemetry that gets sent to the vendor. AI safety checks that call cloud-hosted models. Software updates that require connectivity to pull.&lt;/p&gt;&lt;p&gt;Level 3 organizations have meaningful control over their infrastructure on a day-to-day basis. But they&apos;re not independent. An internet outage degrades operations. An air-gapped deployment isn&apos;t possible without punching holes in the egress firewall. The architecture has hidden connective tissue to the outside world.&lt;/p&gt;&lt;p&gt;We see many financial services organizations here. They want to operate on-premises for compliance, but their architecture still has dependencies that would fail an air-gap test.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Level 4: Self-Hosted (Autonomous)&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The full stack runs on customer infrastructure with no external connections required. None.&lt;/p&gt;&lt;p&gt;Internet connectivity is optional. You can plug in for updates when you want them, but operations continue indefinitely without any vendor communication. Licensing works offline. Governance is policy-as-code that lives in your repo. AI safety systems (guardrails, content filters, jailbreak detection) run on local models rather than using cloud APIs.&lt;/p&gt;&lt;p&gt;If you pull the network cable, everything keeps working.&lt;/p&gt;&lt;p&gt;This is what defense and intelligence organizations require for classified workloads. It&apos;s increasingly what healthcare organizations need for sensitive AI processing. It&apos;s what any organization should want if they&apos;re serious about operational resilience.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Level 5: True Sovereignty&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Level 4 capabilities, plus full portability.&lt;/p&gt;&lt;p&gt;This is the distinction that matters most and gets talked about least. An organization can be fully self-hosted and autonomous (Level 4) but still locked into proprietary formats, vendor-specific APIs, and architectures that can&apos;t be migrated without a rewrite.&lt;/p&gt;&lt;p&gt;Level 5 means escape velocity. This is what cloud native architecture was always supposed to deliver: the same configuration that runs in AWS runs on-premises. The same policies that work in your US deployment work in your EU deployment. If you decide to change vendors, or change clouds, or bring everything in-house, you can migrate your entire stack without rearchitecting.&lt;/p&gt;&lt;p&gt;You own the architecture, not just the deployment.&lt;/p&gt;&lt;p&gt;This is rare. Most vendors don&apos;t want you to have it because it eliminates lock-in. But it&apos;s the only level that provides true strategic optionality.&lt;/p&gt;&lt;p&gt;Knowing the levels exist is one thing. Knowing where your own architecture actually sits on them is another. That&apos;s the job of the seven dimensions. Each one is a place where sovereignty either holds or quietly fails, and assessing them is how you figure out your real level. There&apos;s also a rule about how they combine that catches most organizations off guard, but that comes later. First, the dimensions themselves.&lt;/p&gt;&lt;h2 id=&quot;where-dependencies-hide&quot;&gt;Where Dependencies Hide&lt;/h2&gt;&lt;p&gt;Each dimension matters on its own. The tables below show what different situations look like at different levels. The five-level definitions above remain the source of truth; these tables are shortcuts to help you locate yourself quickly. Find the row that describes your situation, and the right column tells you what level that puts you at.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-53474607-ca4c-460a-a194-ad754aa22a98.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1500&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/data-src-image-53474607-ca4c-460a-a194-ad754aa22a98.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/data-src-image-53474607-ca4c-460a-a194-ad754aa22a98.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/data-src-image-53474607-ca4c-460a-a194-ad754aa22a98.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-53474607-ca4c-460a-a194-ad754aa22a98.png 2048w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h3 id=&quot;1-control-plane-location&quot;&gt;1. Control Plane Location&lt;/h3&gt;&lt;p&gt;&lt;em&gt;Where does the &quot;brain&quot; of your AI infrastructure live?&lt;/em&gt;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div style=&quot;overflow-x:auto;max-width:100%&quot;&gt;
&lt;table style=&quot;border:none;border-collapse:collapse;table-layout:auto;width:468pt&quot;&gt;&lt;colgroup&gt;&lt;col&gt;&lt;col style=&quot;width:80pt&quot;&gt;&lt;/colgroup&gt;
&lt;thead&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;th style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot; scope=&quot;col&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Your situation is…&lt;/span&gt;&lt;/p&gt;&lt;/th&gt;&lt;th style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot; scope=&quot;col&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Achievable level&lt;/span&gt;&lt;/p&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Control plane is vendor-managed in the vendor&apos;s environment. You configure via their console or API, but they operate it.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;L1-L2&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Control plane runs in your environment but requires periodic external validation (license checks, external IdP calls ).&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;L3&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Control plane is fully self-hosted. No external dependencies. You can operate indefinitely without vendor communication.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;L4-L5&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;This is usually the dimension where organizations overestimate their level. &quot;We run on-premises&quot; doesn&apos;t mean Level 4 if every authentication request routes through an external identity provider.&lt;/p&gt;&lt;h3 id=&quot;2-data-plane-location&quot;&gt;2. Data Plane Location&lt;/h3&gt;&lt;p&gt;&lt;em&gt;Where does the actual processing of sensitive data occur?&lt;/em&gt;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div style=&quot;overflow-x:auto;max-width:100%&quot;&gt;
&lt;table style=&quot;border:none;border-collapse:collapse;table-layout:auto;width:468pt&quot;&gt;&lt;colgroup&gt;&lt;col&gt;&lt;col style=&quot;width:80pt&quot;&gt;&lt;/colgroup&gt;
&lt;thead&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;th style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot; scope=&quot;col&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Your situation is…&lt;/span&gt;&lt;/p&gt;&lt;/th&gt;&lt;th style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot; scope=&quot;col&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Achievable Level&lt;/span&gt;&lt;/p&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Data plane runs in the vendor&apos;s environment (you chose the region, but they operate it).&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;L1&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Data plane runs in your environment (your cloud account, your data center, your hardware).&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;L2-L5&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;This is the dimension most vendors emphasize because it&apos;s the easiest to solve. BYOC architectures get you to Level 2 on this dimension. But it&apos;s only one of seven.&lt;/p&gt;&lt;h3 id=&quot;3-network-dependency&quot;&gt;3. Network Dependency&lt;/h3&gt;&lt;p&gt;&lt;em&gt;What happens if your internet connection goes down?&lt;/em&gt;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div style=&quot;overflow-x:auto;max-width:100%&quot;&gt;
&lt;table style=&quot;border:none;border-collapse:collapse;table-layout:auto;width:468pt&quot;&gt;&lt;colgroup&gt;&lt;col&gt;&lt;col style=&quot;width:80pt&quot;&gt;&lt;/colgroup&gt;
&lt;thead&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;th style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot; scope=&quot;col&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Your situation is…&lt;/span&gt;&lt;/p&gt;&lt;/th&gt;&lt;th style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot; scope=&quot;col&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Achievable Level&lt;/span&gt;&lt;/p&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Operations halt or severely degrade. Control plane is unreachable. New configurations can&apos;t be applied.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;L1-L2&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Core operations continue, but some features are unavailable. Maybe you can&apos;t update policies or pull new models.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;L3&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Full operations continue indefinitely. Internet is optional. Air-gapped deployment is possible.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;L4-L5&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;This is the test we use most often. If the answer is &quot;we&apos;d have problems,&quot; that tells you where the hidden dependencies are.&lt;/p&gt;&lt;h3 id=&quot;4-governance-model&quot;&gt;4. Governance Model&lt;/h3&gt;&lt;p&gt;&lt;em&gt;How are policies defined, enforced, and audited?&lt;/em&gt;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div style=&quot;overflow-x:auto;max-width:100%&quot;&gt;
&lt;table style=&quot;border:none;border-collapse:collapse;table-layout:auto;width:468pt&quot;&gt;&lt;colgroup&gt;&lt;col&gt;&lt;col style=&quot;width:80pt&quot;&gt;&lt;/colgroup&gt;
&lt;thead&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;th style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot; scope=&quot;col&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Your situation is…&lt;/span&gt;&lt;/p&gt;&lt;/th&gt;&lt;th style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot; scope=&quot;col&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Achievable Level&lt;/span&gt;&lt;/p&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Policies configured in the vendor&apos;s console. Limited or no export capability. You can&apos;t version control your governance.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;L1-L2&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Policies exportable, but in vendor-specific formats. Partial GitOps support.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;L3&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Full policy-as-code. Governance lives in your repo. Same policies deploy to any environment. Portable across vendors.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;L4-L5&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;This matters more than most organizations realize. If your governance can&apos;t move with you, you don&apos;t own it.&lt;/p&gt;&lt;h3 id=&quot;5-ai-safety-architecture&quot;&gt;5. AI Safety Architecture&lt;/h3&gt;&lt;p&gt;&lt;em&gt;Where do guardrails and safety checks execute?&lt;/em&gt;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div style=&quot;overflow-x:auto;max-width:100%&quot;&gt;
&lt;table style=&quot;border:none;border-collapse:collapse;table-layout:auto;width:468pt&quot;&gt;&lt;colgroup&gt;&lt;col&gt;&lt;col style=&quot;width:80pt&quot;&gt;&lt;/colgroup&gt;
&lt;thead&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;th style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot; scope=&quot;col&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Your situation is…&lt;/span&gt;&lt;/p&gt;&lt;/th&gt;&lt;th style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot; scope=&quot;col&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Achievable Level&lt;/span&gt;&lt;/p&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Safety checks (topic control, content filtering, jailbreak detection) require external API calls to cloud-hosted models.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;L1-L3&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Safety systems run locally on your hardware. No external calls. Works offline.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;L4-L5&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;This is becoming critical. Organizations are deploying guardrails to satisfy responsible AI requirements, but those guardrails often introduce the very dependencies sovereignty is supposed to eliminate. If your jailbreak detection calls a cloud API, you&apos;ve added latency to every request, expanded your attack surface, and potentially violated data sovereignty requirements.&lt;/p&gt;&lt;p&gt;We see organizations that are Level 4 on everything else fall to Level 3 here because their safety stack wasn&apos;t designed for offline operation.&lt;/p&gt;&lt;h3 id=&quot;6-agent-governance&quot;&gt;6. Agent Governance&lt;/h3&gt;&lt;p&gt;&lt;em&gt;How are AI agents authorized to access tools and take actions?&lt;/em&gt;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div style=&quot;overflow-x:auto;max-width:100%&quot;&gt;
&lt;table style=&quot;border:none;border-collapse:collapse;table-layout:auto;width:468pt&quot;&gt;&lt;colgroup&gt;&lt;col&gt;&lt;col style=&quot;width:80pt&quot;&gt;&lt;/colgroup&gt;
&lt;thead&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;th style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot; scope=&quot;col&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Your situation is…&lt;/span&gt;&lt;/p&gt;&lt;/th&gt;&lt;th style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot; scope=&quot;col&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Achievable Level&lt;/span&gt;&lt;/p&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;No agent governance layer. AI tools are accessed via standard API authentication. Once authenticated, agents have standing access.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;L1-L2&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Agent governance exists, but it depends on an external policy engine or authorization service.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;L3&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Dedicated agent gateway with continuous authorization, running entirely on your infrastructure. Per-request policy evaluation.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;L4-L5&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;This dimension didn&apos;t exist two years ago. Now it&apos;s arguably the most important.&lt;/p&gt;&lt;p&gt;The rise of agentic AI (systems that don&apos;t just generate text but take actions via protocols like MCP) breaks traditional security models. An agent might be authenticated, but that doesn&apos;t mean every action it takes should be authorized. Agents can hallucinate. Agents can be manipulated by adversarial prompts. Agents can explore solution paths you didn&apos;t anticipate.&lt;/p&gt;&lt;p&gt;The security model needs to shift from &quot;authenticate once and trust&quot; to &quot;authorize continuously at the gateway.&quot; And that gateway needs to run on your infrastructure. If you&apos;re calling an external service to decide whether an agent can read a database, you&apos;ve introduced latency, dependency, and metadata leakage into every tool call.&lt;/p&gt;&lt;p&gt;Most organizations haven&apos;t built this yet. The ones who have are differentiated.&lt;/p&gt;&lt;h3 id=&quot;7-vendor-lock-in-escape-velocity&quot;&gt;7. Vendor Lock-in / Escape Velocity&lt;/h3&gt;&lt;p&gt;&lt;em&gt;Can you migrate your entire stack without rewriting?&lt;/em&gt;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div style=&quot;overflow-x:auto;max-width:100%&quot;&gt;
&lt;table style=&quot;border:none;border-collapse:collapse;table-layout:auto;width:468pt&quot;&gt;&lt;colgroup&gt;&lt;col&gt;&lt;col style=&quot;width:80pt&quot;&gt;&lt;/colgroup&gt;
&lt;thead&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;th style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;white-space:nowrap;&quot; scope=&quot;col&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Your situation is…&lt;/span&gt;&lt;/p&gt;&lt;/th&gt;&lt;th style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot; scope=&quot;col&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Achievable Level&lt;/span&gt;&lt;/p&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;white-space:nowrap;;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Migration requires significant rearchitecture. Policies, configurations, and integrations are tied to vendor-specific formats.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;L1-L3&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Portable deployment artifacts (containers, Helm charts), but some vendor-specific dependencies in configuration or governance.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;L4&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Full portability. The same configuration works in any environment. Vendor change is a small migration, not a complete rewrite.&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;L5&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;This is escape velocity. It&apos;s what turns sovereignty from a compliance checkbox into strategic leverage.&lt;/p&gt;&lt;p&gt;When you have Level 5 portability, every vendor conversation changes. You&apos;re not negotiating from captivity. You&apos;re negotiating as a partner with options. That optionality has real monetary value in every contract renewal.&lt;/p&gt;&lt;h2 id=&quot;the-rule-that-changes-everything&quot;&gt;The Rule That Changes Everything&lt;/h2&gt;&lt;p&gt;Now for the rule we promised earlier: &lt;strong&gt;your overall sovereignty level is determined by your lowest-scoring dimension.&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-17be9f41-c9ef-4585-a76a-2e31d8177ae3.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/data-src-image-17be9f41-c9ef-4585-a76a-2e31d8177ae3.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/data-src-image-17be9f41-c9ef-4585-a76a-2e31d8177ae3.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/data-src-image-17be9f41-c9ef-4585-a76a-2e31d8177ae3.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-17be9f41-c9ef-4585-a76a-2e31d8177ae3.png 2048w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;An organization can be Level 4 on control plane location, Level 4 on data plane, and Level 4 on network dependency model. But if their AI governance model requires their policies to be written in the vendor’s console and cannot be version controlled, they&apos;re Level 2 overall. That single dependency defines their ceiling.&lt;/p&gt;&lt;p&gt;This is why &quot;we run the data plane in your VPC&quot; isn&apos;t enough. If the control plane is external, you&apos;re Level 2. If the safety checks are external, you&apos;re Level 3. If you can&apos;t migrate without rewriting, you&apos;re Level 4.&lt;/p&gt;&lt;p&gt;The model forces you to look at every dependency, not just the ones vendors want to talk about.&lt;/p&gt;&lt;h2 id=&quot;assessing-your-position&quot;&gt;Assessing Your Position&lt;/h2&gt;&lt;p&gt;Here&apos;s a simple worksheet. Rate your organization on each dimension. Be honest. The goal isn&apos;t to get a high score. The goal is to understand where you are and where the gaps are.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div style=&quot;overflow-x:auto;max-width:100%&quot;&gt;
&lt;table style=&quot;border:none;border-collapse:collapse;table-layout:fixed;width:468pt&quot;&gt;&lt;colgroup&gt;&lt;col&gt;&lt;col&gt;&lt;col&gt;&lt;col&gt;&lt;/colgroup&gt;&lt;thead&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;th style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot; scope=&quot;col&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Dimension&lt;/span&gt;&lt;/p&gt;&lt;/th&gt;&lt;th style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot; scope=&quot;col&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Current Level (1-5)&lt;/span&gt;&lt;/p&gt;&lt;/th&gt;&lt;th style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot; scope=&quot;col&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Target Level (1-5)&lt;/span&gt;&lt;/p&gt;&lt;/th&gt;&lt;th style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot; scope=&quot;col&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;text-align: center;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Gap&lt;/span&gt;&lt;/p&gt;&lt;/th&gt;&lt;/tr&gt;&lt;/thead&gt;&lt;tbody&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Control Plane Location&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Data Plane Location&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Network Dependency&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Governance Model&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;AI Safety Architecture&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Agent Governance&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Vendor Lock-in&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:700;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Overall (lowest score)&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;blockquote&gt;&lt;strong&gt;Note: Your overall level is your lowest dimension. If you&apos;re Level 4 on six dimensions and Level 2 on one, you&apos;re Level 2. There is no averaging. There is no partial credit.&lt;/strong&gt;&lt;/blockquote&gt;&lt;h2 id=&quot;what-good-looks-like-by-industry&quot;&gt;What &quot;Good&quot; Looks Like by Industry&lt;/h2&gt;&lt;p&gt;Different industries have different requirements. Here&apos;s what we see in practice:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Defense and Intelligence:&lt;/strong&gt; Level 4-5 required for classified workloads. Air-gapped operation is non-negotiable. Most DoD contracts now explicitly require AI infrastructure capable of operating offline. ITAR and FedRAMP requirements are pushing even unclassified workloads toward Level 4.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Healthcare:&lt;/strong&gt; Moving toward Level 3-4 for AI processing of PHI. HIPAA doesn&apos;t explicitly require it yet, but the Office for Civil Rights (OCR) guidance is trending toward &quot;know where your AI runs.&quot; Organizations using AI for clinical decision support are increasingly uncomfortable with cloud-dependent architectures.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Financial Services:&lt;/strong&gt; Level 3-4 is typical for production AI. The pattern we see most often: develop in the cloud (for speed), deploy on-premises (for compliance). This requires Level 4+ governance portability to avoid maintaining two separate configurations. Level 5 is becoming a competitive differentiator for firms that want to move fast without accumulating technical debt.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Public Sector:&lt;/strong&gt; Varies widely by jurisdiction. EU sovereign cloud mandates are pushing toward Level 4. APAC data localization requirements are creating demand for Level 3+. The US federal government is increasingly Level 4 for AI workloads, especially post-executive order.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Enterprise (General):&lt;/strong&gt; Most are Level 2, think they&apos;re Level 3, and should be planning for Level 4. The organizations moving fastest on AI are also accumulating the most sovereignty debt. Shadow agents, scattered API keys, ungoverned model access. At some point, the bill comes due.&lt;/p&gt;&lt;h2 id=&quot;why-this-matters-now&quot;&gt;Why This Matters Now&lt;/h2&gt;&lt;p&gt;The AI governance conversation has shifted faster than most organizations realize.&lt;/p&gt;&lt;p&gt;A few months ago, boards were asking, &quot;how do we adopt AI?&quot; Now they&apos;re asking, &quot;how do we control AI?&quot; That&apos;s a different question, and it requires different infrastructure.&lt;/p&gt;&lt;p&gt;We&apos;re seeing it in every enterprise conversation. The initial inquiry is about capability: can you do AI gateway, can you do MCP governance, can you integrate with our LLM providers? But within a few minutes, the conversation shifts to control. Where does this run? What happens if the connection goes down? Can we operate this in our air-gapped environment? How do we avoid getting locked in?&lt;/p&gt;&lt;p&gt;The organizations that build for sovereignty now will have options. The organizations that optimize for &lt;em&gt;convenience&lt;/em&gt; will spend the next three years explaining to auditors and boards why they can&apos;t answer basic questions about where their AI runs and who controls it.&lt;/p&gt;&lt;p&gt;The maturity model doesn&apos;t make the decision for you. But it makes the tradeoffs explicit. And in our experience, once executives see the tradeoffs clearly, they rarely choose Level 2 when they could have Level 4 or Level 5.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-201464153180&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.546875px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;201464153180&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLjI8kwBAP6Ylmx46f%2FKKLazSnXTw911MJYn5%2BlawCLQsarc7EWvrT0W2%2B3YL73UMcNboYO7jyvPLfN%2F4rIIbaOpUHjjkWrR%2Bo4FnVjCZVIEIxkiw5jsniOs7dNruruHAw7EtrxS8OzKFI0DkOMjC0qAQINtJpdmD6Gr7Aw%2FJ%2Bl48ioIyJ%2FZkjSKTCJzPy8C%2FM9%2BWEUiGH4RdAsNnKYTW%2B96hs%3D&amp;webInteractiveContentId=201464153180&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;ai sovereignty cta image - square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-201464153180.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;hr&gt;&lt;p&gt;&lt;em&gt;For the strategic argument behind why sovereignty is operating leverage (not just compliance), read &lt;/em&gt;&lt;a href=&quot;https://traefik.io/blog/ai-sovereignty?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;em&gt;&lt;u&gt;AI Sovereignty: Why Control Is Your Ultimate Operating Leverage&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[One Gateway. Three Estates. Zero Compromises.]]></title>
            <description><![CDATA[When a single user request touches a VM, a container, and an AI inference endpoint, who enforces consistent authentication, rate limiting, and access policy across all three?]]></description>
            <link>https://traefik.io/one-gateway-three-estates-zero-compromises</link>
            <guid isPermaLink="true">https://traefik.io/one-gateway-three-estates-zero-compromises</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[VMware]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <category><![CDATA[Partners]]></category>
            <dc:creator><![CDATA[Aniket Daptari, Sudeep Goswami]]></dc:creator>
            <pubDate>Fri, 03 Apr 2026 18:06:00 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;p&gt;How Nutanix and Traefik Labs Are Unifying Application Delivery Across VMs, Containers, and AI. &lt;/p&gt;&lt;p&gt;&lt;em&gt;A joint perspective from Nutanix and Traefik Labs.&lt;/em&gt;&lt;/p&gt;&lt;hr&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/One_Gateway_Three_Estates_Blog_without_copies@2x.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/One_Gateway_Three_Estates_Blog_without_copies@2x.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/One_Gateway_Three_Estates_Blog_without_copies@2x.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/One_Gateway_Three_Estates_Blog_without_copies@2x.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/One_Gateway_Three_Estates_Blog_without_copies@2x.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The infrastructure world is in the middle of a tectonic shift, and it&apos;s not a single earthquake. It&apos;s three hitting at once.&lt;/p&gt;&lt;p&gt;Enterprise IT teams are navigating a &lt;strong&gt;VMware displacement&lt;/strong&gt; wave triggered by the Broadcom acquisition. They&apos;re managing the &lt;strong&gt;coexistence&lt;/strong&gt; of legacy applications on virtual machines alongside modern microservices running in Kubernetes. And they&apos;re under pressure to &lt;strong&gt;operationalize AI&lt;/strong&gt;, embedding inference directly into production applications, not as a science experiment but as a business-critical capability.&lt;/p&gt;&lt;p&gt;Each of these shifts alone would be a multi-year transformation. Together, they&apos;re redefining what enterprise infrastructure must look like.&lt;/p&gt;&lt;p&gt;Add to this the rise of sovereign computing. Financial services firms bound by data residency mandates. Healthcare organizations navigating patient data regulations across geographies. Government agencies requiring air-gapped deployments. These organizations can&apos;t simply lift and shift to hyperscalers. They need infrastructure that keeps data, models, and governance under their control, on their terms, in their locations.&lt;/p&gt;&lt;p&gt;Here&apos;s what makes this moment unique: AI is not a separate workload category. It&apos;s becoming embedded inside every application. A single user action, logging into a banking app, checking an account balance, initiating a transfer, can touch a containerized frontend, a VM-hosted core system, and an AI inference endpoint within the same request flow. The user doesn&apos;t know. The user doesn&apos;t care. They just expect it to work.&lt;/p&gt;&lt;p&gt;The question isn&apos;t whether enterprises will run workloads across VMs, containers, and AI infrastructure simultaneously. They already do. The question is whether they have a unified way to route, observe, secure, and govern traffic across all three.&lt;strong&gt;&amp;nbsp;&lt;/strong&gt;&lt;/p&gt;&lt;h2 id=&quot;the-real-challenges-behind-the-buzzwords&quot;&gt;&lt;strong&gt;The Real Challenges Behind the Buzzwords&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;When we talk to enterprise infrastructure teams, the conversation quickly moves past technology preferences and into operational reality.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;VMs and containers must coexist for years.&lt;/strong&gt; The notion that every organization will &quot;just move to Kubernetes&quot; ignores the reality of core banking platforms, ERP systems, mainframe-adjacent workloads, and thousands of VM-based applications that will run for another decade. These aren&apos;t candidates for re-architecture. They&apos;re candidates for better management. At the same time, every new application, every new capability, is being built cloud-native. Infrastructure teams don&apos;t get to choose one world. They have to operate in both.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Complexity is the real enemy, not any single vendor.&lt;/strong&gt; The skills gap in enterprise IT is well documented. Kubernetes expertise remains scarce. Networking teams trained on traditional load balancers are being asked to manage service meshes. Security teams need policy enforcement that spans environments they barely understand. Every additional tool, console, or abstraction layer compounds this problem. Organizations need fewer moving parts, not more.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Escaping one lock-in shouldn&apos;t create another.&lt;/strong&gt; The VMware migration conversation is often framed as &quot;pick a new hypervisor.&quot; But the smarter organizations are thinking beyond that. They want strategic decoupling: the ability to move workloads between infrastructure providers without rearchitecting their application delivery, security policies, or observability pipelines. The governance layer must be portable, even if the compute layer changes.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Day 0 preparation is more important than Day 1 migration.&lt;/strong&gt; Most migration solutions focus on Day 1: getting workloads moved. But the riskiest moment in any migration is the cutover itself, when application traffic must shift from old infrastructure to new without disruption. Organizations that couple application identity directly to infrastructure identity (hardcoded IPs, DNS-dependent routing, infrastructure-specific load balancers) face downtime windows, DNS propagation delays, and split-brain risks every time a workload moves. The smarter approach is to decouple the application layer from the compute layer &lt;em&gt;before&lt;/em&gt; migration begins, so the underlying infrastructure becomes interchangeable. And then comes Day 2 and beyond: who handles traffic management across a heterogeneous environment? How do you enforce consistent rate limiting, authentication, and access policies when workloads span VMs and Kubernetes? What happens when you need to add an AI inference call into an existing application flow without redesigning the entire pipeline?&lt;/p&gt;&lt;p&gt;&lt;strong&gt;AI insertion demands infrastructure readiness.&lt;/strong&gt; The organizations best positioned to operationalize AI are not the ones with the most GPUs. They&apos;re the ones that already have unified ingress and governance across their infrastructure. If you can&apos;t consistently route, observe, and policy-govern traffic across VMs and containers today, you can&apos;t add AI inference as a third estate tomorrow. AI readiness is a side effect of good infrastructure, not a separate initiative.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-209462438701&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;209462438701&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLsK%2BPjml8pLJMI9oMgY6%2BDeGkqNSB1jELHMY%2Bq6uYTcnN%2BaoNdr%2Fv2S2ft5THyaItGV12qsq1QCtU%2Fc4N4WLlf6wbt5GBwxJg%2Bl0twk5rWPRpERaNqbu5407f6uYnzxtjoTuQCKQx7tO1xZKc%2BUZ5GuxQ4%2Btr%2BAXNG4jeuPm%2BF6Q7n%2FJz5xxH%2BIOrpNo0m6fsLRjxEX0gtEkMRBMrg9g%3D%3D&amp;webInteractiveContentId=209462438701&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;7cs-ai-governance-ebook-promo-square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-209462438701.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;unified-application-intelligence-the-nutanix-and-traefik-labs-joint-solution&quot;&gt;&lt;strong&gt;Unified Application Intelligence: The Nutanix and Traefik Labs Joint Solution&lt;/strong&gt;&lt;br&gt;&lt;/h2&gt;&lt;p&gt;Nutanix and Traefik Labs have built a joint solution designed around a simple but powerful principle: &lt;strong&gt;one application intelligence layer that follows your workloads, regardless of where they run.&lt;/strong&gt;&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/Unified_Ingress_Architecture.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1090&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/Unified_Ingress_Architecture.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/Unified_Ingress_Architecture.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/Unified_Ingress_Architecture.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2026/04/Unified_Ingress_Architecture.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Nutanix provides the foundational compute, storage, and Kubernetes platform. Traefik provides the unified Layer 7 ingress, routing, and governance that spans across it all. Together, they deliver something neither can offer alone: a consistent application delivery experience across VMs, containers, and AI workloads, managed from a single operational plane.&lt;/p&gt;&lt;p&gt;Here&apos;s what this looks like in practice.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Unified ingress across three estates.&lt;/strong&gt; Traefik provides a single entry point for all application traffic, whether it&apos;s destined for a virtual machine on Nutanix AHV, a containerized service on Nutanix Kubernetes Platform (NKP), or an AI inference endpoint running on GPU-accelerated infrastructure. One gateway. One set of policies. One place to observe and troubleshoot. No stitching together separate load balancers, API gateways, and AI-specific proxies.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;A lightweight footprint from edge to cloud.&lt;/strong&gt; Traefik&apos;s single binary architecture means it runs everywhere: on a Nutanix cluster in a data center, on a small edge appliance at a retail location, or on a GPU node processing inference requests. There&apos;s no heavyweight sidecar tax or complex dependency chain. This matters enormously for organizations running Nutanix at the edge for use cases like manufacturing, retail, and healthcare imaging.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Default ingress in NKP.&lt;/strong&gt; Traefik ships as the default ingress controller in Nutanix Kubernetes Platform. This isn&apos;t a marketplace listing or a &quot;works with&quot; certification. It&apos;s an engineering decision by Nutanix to make Traefik the native traffic management layer for every NKP deployment. Customers get enterprise-grade ingress out of the box, with a seamless upgrade path to advanced capabilities.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;A clear upgrade path without rip-and-replace.&lt;/strong&gt; Organizations can start with the open-source Traefik Proxy, which already powers millions of deployments worldwide with over 3.4 billion Docker Hub downloads, and upgrade to enterprise-grade capabilities as needs evolve: API gateway functionality, AI gateway with model routing and token-level governance, MCP gateway for agentic AI frameworks, and full API lifecycle management. The same ingress layer grows with the organization.&lt;/p&gt;&lt;h2 id=&quot;under-the-hood-how-the-integration-works&quot;&gt;&lt;strong&gt;Under the Hood: How the Integration Works&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;The Nutanix and Traefik Labs integration goes deeper than simple co-deployment. It&apos;s a set of native integrations that make the unified ingress story operational.&lt;/p&gt;&lt;h3 id=&quot;auto-discovery-across-ahv-virtual-machines&quot;&gt;&lt;strong&gt;Auto-Discovery Across AHV Virtual Machines&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Traefik integrates directly with Nutanix Prism Central to auto-discover virtual machines and their associated services. When a new VM spins up or an existing service changes, Traefik detects it automatically and attaches the appropriate routing rules, security policies, and traffic management configurations. No manual reconfiguration. No configuration drift between what&apos;s running and what&apos;s being managed. This is critical for organizations managing hundreds or thousands of VMs as part of a VMware migration. As workloads land on AHV, they&apos;re immediately visible to and governed by Traefik.&lt;/p&gt;&lt;h3 id=&quot;native-kubernetes-integration-on-nkp&quot;&gt;&lt;strong&gt;Native Kubernetes Integration on NKP&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;On the Kubernetes side, Traefik integrates natively with NKP using standard Kubernetes Ingress resources and Traefik&apos;s own IngressRoute CRDs. Container workloads are auto-discovered as pods scale up and down, services are registered dynamically, and routing policies are applied consistently. Because Traefik is the default ingress in NKP, there&apos;s no separate installation or configuration step. It&apos;s ready from the first cluster deployment.&lt;/p&gt;&lt;h3 id=&quot;complementing-flow-networking-at-layer-7&quot;&gt;&lt;strong&gt;Complementing Flow Networking at Layer 7&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Nutanix Flow Virtual Networking and the newly released Flow CNI provide robust Layer 4 network segmentation, microsegmentation, and connectivity across the Nutanix stack. Traefik complements this with Layer 7 application intelligence: content-based routing, header inspection, path-based policies, rate limiting, authentication, and API-level governance. Think of it as two layers working in concert. Flow handles the network plumbing and segmentation. Traefik handles the application-aware traffic decisions. Together, they provide &lt;strong&gt;defense in depth&lt;/strong&gt; without requiring organizations to choose between network-level and application-level controls.&lt;/p&gt;&lt;h3 id=&quot;ai-workload-routing-and-governance&quot;&gt;&lt;strong&gt;AI Workload Routing and Governance&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;For AI inference workloads, whether running on GPU-accelerated clusters on-premises, at the edge, or across hybrid environments, Traefik provides the same Layer 7 governance it applies to VMs and containers. This includes intelligent model routing (directing requests to the right model version or endpoint based on content, headers, or load), token-level rate limiting to manage expensive GPU resources, and security guardrails that ensure AI endpoints are subject to the same authentication and access policies as every other service. The key architectural insight: AI inference is just another endpoint behind Traefik&apos;s unified ingress. It doesn&apos;t need a separate gateway, a separate policy framework, or a separate observability pipeline.&lt;/p&gt;&lt;h2 id=&quot;what-this-looks-like-a-real-application-flow&quot;&gt;&lt;strong&gt;What This Looks Like: A Real Application Flow&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Consider a banking application, a pattern representative of what we see across financial services, healthcare, and other regulated industries.&lt;/p&gt;&lt;p&gt;A customer opens their mobile banking app. That initial request hits Traefik and is routed to the React frontend running as a containerized service on NKP. The user logs in, and Traefik routes the authentication request through middleware enforcement to identity services, also on NKP. Once authenticated, the dashboard loads account data. Traefik routes that request to the core banking platform, a VM-based system running on Nutanix AHV that has served the institution reliably for years. The user initiates a funds transfer. Before the transaction is processed, Traefik routes a fraud detection request to an AI inference endpoint for real-time scoring. The check passes, and Traefik routes the final transaction request back to the core banking system on AHV to complete the transfer.&lt;/p&gt;&lt;p&gt;Five steps. Three infrastructure types. One gateway managing the entire flow.&lt;/p&gt;&lt;p&gt;The user experienced a seamless interaction. The infrastructure team manages one ingress layer with one set of policies. The security team has one audit trail. The compliance team has one governance framework. And when the next capability gets added, whether it&apos;s a new AI model for personalized recommendations or a containerized notification service, it plugs into the same architecture without re-plumbing.&lt;/p&gt;&lt;h2 id=&quot;the-time-to-act-is-now&quot;&gt;&lt;strong&gt;The Time to Act Is Now&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;For organizations evaluating their infrastructure strategy, three use cases make the Nutanix and Traefik Labs joint solution immediately actionable.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Migrate: Start with Day 0, not Day 1.&lt;/strong&gt; Most migration strategies focus on Day 1: the moment a VM moves from one hypervisor to another. But the smartest organizations start at Day 0, before a single workload moves, by deploying Traefik as the unified ingress layer in front of their existing VMware environment.&lt;/p&gt;&lt;p&gt;Why? Because the riskiest part of any migration isn&apos;t moving the VM. It&apos;s maintaining application availability during and after the move. When application traffic is coupled directly to the infrastructure, a VM migration means DNS changes, propagation delays, potential downtime windows, and user-visible disruption. But when Traefik sits in front as the application&apos;s ingress layer, the VM becomes a backend detail. You move it from ESXi to Nutanix AHV. Traefik auto-discovers the new location via Prism Central integration. Traffic keeps flowing. The user never knows the underlying substrate changed.&lt;/p&gt;&lt;p&gt;This is the architectural principle that makes migration resilient by design: decouple the application identity from the infrastructure identity. Traefik owns the routing, the policies, and the traffic management. The hypervisor becomes interchangeable. No split-brain risk during cutover. No &quot;please allow 24-48 hours for DNS propagation.&quot; No gap between migration and governance. The same ingress layer that manages your VMs on ESXi today manages them on AHV tomorrow and manages your containers and AI workloads the day after that.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Modernize: Decompose monoliths at your own pace.&lt;/strong&gt; As applications evolve from monolithic VMs to containerized microservices on NKP, Traefik provides seamless traffic shifting between the old and new. Route 90% of traffic to the legacy VM. Shift 10% to the new container-based service. Validate. Adjust. No big-bang cutover. No separate tooling for each environment. The migration from VM to container happens behind the same gateway, with the same policies, at whatever pace the business requires.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;AI-Enable: Insert intelligence without re-architecture.&lt;/strong&gt; When the time comes to add AI capabilities, whether fraud detection, recommendation engines, document processing, or predictive analytics, Traefik&apos;s AI and MCP Gateway provides the same routing, governance, and observability for inference and MCP endpoints that it already provides for VMs and containers. There&apos;s no new gateway to deploy, no new policy framework to learn, and no new blind spot in your observability pipeline.&lt;/p&gt;&lt;p&gt;These aren&apos;t three separate journeys. They&apos;re stages of a single infrastructure evolution: prepare at Day 0, migrate at Day 1, modernize at your own pace, and AI-enable when the business demands it. The organizations that put the right application intelligence layer in place &lt;em&gt;before&lt;/em&gt; the first VM moves will navigate each stage faster, with less risk, and with fewer late-night fire drills.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The infrastructure world has shifted. VMs, containers, and AI workloads aren&apos;t converging someday. They&apos;ve already converged, inside your applications, inside your request flows, right now.&lt;/strong&gt; The only question is whether you have one gateway managing all of it, or three separate tools creating three separate problems.&lt;/p&gt;&lt;p&gt;Nutanix and Traefik Labs joint solution chose one gateway. We think you should too.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;em&gt;To learn more about the Nutanix and Traefik Labs joint solution, visit &lt;/em&gt;&lt;a href=&quot;https://traefik.io/solutions/nutanix-and-traefik?ref=containous.ghost.io&quot;&gt;&lt;em&gt;https://traefik.io/solutions/nutanix-and-traefik&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. &lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;To see the integration in action, join us at .NEXT 2026 in Chicago April 7&lt;sup&gt;th&lt;/sup&gt;- 9&lt;sup&gt;th&lt;/sup&gt;.&lt;/em&gt;&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Breaking the Monolith: How an API Gateway Turns a Risky Migration into a Controlled Journey]]></title>
            <description><![CDATA[Traffic control is migration control. Learn how an API gateway turns a risky monolith rewrite into a series of small, reversible, low-risk moves.]]></description>
            <link>https://traefik.io/breaking-the-monolith-controlled-api-gateway-journey</link>
            <guid isPermaLink="true">https://traefik.io/breaking-the-monolith-controlled-api-gateway-journey</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Gateway]]></category>
            <dc:creator><![CDATA[Zaid Albirawi]]></dc:creator>
            <pubDate>Wed, 01 Apr 2026 20:01:19 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/Breaking-the-Monolith-Blog_without_copy@2x.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/Breaking-the-Monolith-Blog_without_copy@2x.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/Breaking-the-Monolith-Blog_without_copy@2x.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/Breaking-the-Monolith-Blog_without_copy@2x.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/Breaking-the-Monolith-Blog_without_copy@2x.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The monolith isn&apos;t the villain. It got you to production, handled your first million users, and shipped features when the team was small enough to fit in one room. But somewhere between the third deploy queue of the day and the incident where a payment change broke the notification system, the conversation starts: &quot;We need to break this thing apart.&quot;&lt;/p&gt;&lt;p&gt;The instinct is to plan a big rewrite. Spin up a Kubernetes cluster, redesign the domain model, rebuild from scratch. Eighteen months later, the new system handles 30% of the old one&apos;s functionality, and the monolith is still running in production.&lt;/p&gt;&lt;p&gt;There&apos;s a better way. Instead of a big-bang rewrite, you migrate incrementally, routing traffic, testing in production, and shifting workloads one piece at a time. The key ingredient is an API gateway that gives you fine-grained control over where every request goes. That&apos;s the thesis of this post: &lt;strong&gt;traffic control is migration control&lt;/strong&gt;, and the right gateway turns a risky migration into a series of small, reversible, low-risk moves.&lt;/p&gt;&lt;p&gt;We&apos;ll walk through the journey using &lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/intro?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;u&gt;Traefik Hub&lt;/u&gt;&lt;/a&gt; as the gateway, but the patterns apply broadly. What makes Traefik particularly well-suited is that it combines routing, load balancing, identity-aware traffic splitting, and multi-platform connectivity into a single platform. Which means the same gateway that handles your Day 1 pass-through can handle your Day 3 or Day 100 canary deployment across VMs and Kubernetes. And as your architecture evolves beyond traditional microservices, the same gateway extends into Kubernetes Gateway API, AI model routing, and MCP, but more on that at the end.&lt;/p&gt;&lt;h2 id=&quot;the-gateway-as-the-starting-point&quot;&gt;&lt;strong&gt;The Gateway as the Starting Point&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Before you break anything, you need a control plane for your traffic. If you don&apos;t have an API gateway in front of your monolith, that&apos;s step zero. If you have a basic load balancer, put Traefik in front of it or replace it entirely.&lt;/p&gt;&lt;p&gt;The setup is deliberately boring: point DNS at Traefik, configure a catch-all route that forwards everything to the monolith. Nothing changes for users. But now every request flows through a layer you own, and that layer is programmable.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-654fa68c-81e5-46b9-947b-b08b1ba6f978.png&quot; class=&quot;kg-image&quot; alt=&quot;Mermaid diagram 0&quot; loading=&quot;lazy&quot; title=&quot;Diagram 0&quot; width=&quot;1600&quot; height=&quot;171&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/data-src-image-654fa68c-81e5-46b9-947b-b08b1ba6f978.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/data-src-image-654fa68c-81e5-46b9-947b-b08b1ba6f978.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-654fa68c-81e5-46b9-947b-b08b1ba6f978.png 1600w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;This is the foundation. Every pattern that follows, strangler fig routing, canary deployments, and identity-based traffic splitting, depends on having this control point in place. It costs almost nothing to set up, it gives you options you didn&apos;t have before, and it works whether your monolith runs on Kubernetes, VMs, or bare metal.&lt;/p&gt;&lt;h2 id=&quot;observability-see-before-you-cut&quot;&gt;&lt;strong&gt;Observability: See Before You Cut&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Here&apos;s something teams often overlook: before you break anything apart, you need to &lt;em&gt;understand&lt;/em&gt; what you have. The moment all traffic flows through the gateway, you gain a single observation point for your entire application, and that&apos;s worth pausing on before you start extracting services.&lt;/p&gt;&lt;p&gt;Traefik Hub emits OpenTelemetry metrics, traces, and logs natively. That means the same gateway you just stood up as a pass-through is already producing data you can pipe into Dash0, Datadog, Splunk, Grafana, Dynatrace, or whatever your observability stack looks like. You don&apos;t need to instrument the monolith. You don&apos;t need to retrofit tracing into a codebase that was never designed for it. The gateway sees every request, every response code, every latency spike, and it tells you about all of it.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-e09b7b00-a6b2-4d5d-81af-797995a6ad65.png&quot; class=&quot;kg-image&quot; alt=&quot;Mermaid diagram 1&quot; loading=&quot;lazy&quot; title=&quot;Diagram 1&quot; width=&quot;1600&quot; height=&quot;382&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/data-src-image-e09b7b00-a6b2-4d5d-81af-797995a6ad65.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/data-src-image-e09b7b00-a6b2-4d5d-81af-797995a6ad65.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-e09b7b00-a6b2-4d5d-81af-797995a6ad65.png 1600w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;This matters for the migration because it gives you a baseline. Before you extract a single service, you know: which endpoints get the most traffic, what the latency distribution looks like, where errors cluster, and which paths are candidates for extraction. You&apos;re building the dashboards and alerts &lt;em&gt;before&lt;/em&gt; the migration, not scrambling to add them after something breaks.&lt;/p&gt;&lt;p&gt;It also pays off at every subsequent stage. When you start canary deployments, you&apos;re comparing the canary&apos;s error rate and latency against a baseline you already have. When you do A/B testing, you&apos;re measuring real business metrics through the same pipeline. When you shift traffic with identity-aware routing, you can see exactly how internal users experience the new service versus how everyone else experiences the monolith. Observability turns every migration decision from a guess into a data point.That visibility at the gateway is the foundation, but it’s not the finish line. As you start extracting services, tracing needs to extend with the architecture. Instrumenting your microservices as they’re built lets you carry that context forward, turning edge visibility into true end-to-end distributed tracing. Requests no longer stop at the gateway; they can be followed across every service boundary, every downstream dependency, and every internal interaction. That’s when observability stops being a perimeter view and becomes a full system understanding.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Additional Reference:&lt;/strong&gt; &lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/observability/metrics-tracing-logs?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Metrics, Tracing &amp;amp; Logs&lt;/u&gt;&lt;/a&gt; configuring OpenTelemetry export in Traefik Hub.&lt;/p&gt;&lt;h2 id=&quot;centralizing-auth-your-first-win&quot;&gt;&lt;strong&gt;Centralizing Auth: Your First Win&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;With traffic flowing through the gateway, you get an immediate win that has nothing to do with microservices: centralized authentication.&lt;/p&gt;&lt;p&gt;Move auth to the edge. Traefik Hub supports OIDC and JWT middleware natively, so you can authenticate requests at the gateway before they ever reach the monolith. This means new services you extract later don&apos;t need to implement their own auth; the gateway handles it.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-a79f57cc-65c3-4e46-a358-47828f4ece61.png&quot; class=&quot;kg-image&quot; alt=&quot;Mermaid diagram 2&quot; loading=&quot;lazy&quot; title=&quot;Diagram 2&quot; width=&quot;1600&quot; height=&quot;1006&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/data-src-image-a79f57cc-65c3-4e46-a358-47828f4ece61.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/data-src-image-a79f57cc-65c3-4e46-a358-47828f4ece61.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-a79f57cc-65c3-4e46-a358-47828f4ece61.png 1600w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;How you handle tokens downstream depends on your architecture. In a high-trust internal network, you might strip the token entirely and forward only the claim headers. In a zero-trust model, you forward the verified JWT to the backend so it can also make its own authorization decisions. Either way, the gateway becomes the centralized authentication point for all API traffic, ensuring that every request is consistently authenticated before reaching your services.&lt;/p&gt;&lt;p&gt;This matters for the migration story because the identity information flowing through the gateway is exactly what you&apos;ll use later to route specific users to new services. Setting up auth now pays dividends down the road.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Additional References:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/secure/middleware/oidc?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OIDC Authentication&lt;/u&gt;&lt;/a&gt; setting up OpenID Connect middleware in Traefik Hub&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/secure/middleware/jwt?ref=containous.ghost.io&quot;&gt;&lt;u&gt;JWT Authentication&lt;/u&gt;&lt;/a&gt; setting up JWT middleware in Traefik Hub&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;bridging-the-infrastructure-gap-no-re-platforming-required&quot;&gt;&lt;strong&gt;Bridging the Infrastructure Gap: No Re-Platforming Required&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Before you start extracting services, there&apos;s a common blocker worth addressing: &quot;Our monolith runs on VMs. We can&apos;t do any of this until we re-platform onto Kubernetes.&quot; That&apos;s wrong, and getting this piece in place now means every pattern that follows works regardless of where your monolith lives.&lt;/p&gt;&lt;p&gt;Traefik Hub&apos;s multi-cluster capability bridges VMs and Kubernetes natively. The architecture is straightforward:&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-74e03775-4555-440e-92a4-e9dfb42a13cc.png&quot; class=&quot;kg-image&quot; alt=&quot;Mermaid diagram 3&quot; loading=&quot;lazy&quot; title=&quot;Diagram 3&quot; width=&quot;1359&quot; height=&quot;1600&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/data-src-image-74e03775-4555-440e-92a4-e9dfb42a13cc.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/data-src-image-74e03775-4555-440e-92a4-e9dfb42a13cc.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-74e03775-4555-440e-92a4-e9dfb42a13cc.png 1359w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;A Traefik instance in Kubernetes acts as the &lt;strong&gt;parent cluster &lt;/strong&gt;and the entry point for all traffic. A Traefik instance on the VMs (in the same network as the monolith) acts as a &lt;strong&gt;child cluster&lt;/strong&gt;, advertising the monolith&apos;s workloads via uplinks. The parent discovers these workloads automatically and routes traffic to them. The connection between parent and child is secured with mutual TLS, and both sides verify each other against a trusted CA.&lt;/p&gt;&lt;p&gt;With this bridge in place, every pattern that follows, strangler fig routing, mirroring, canary deployments, and identity-aware routing, works across the VM-to-Kubernetes boundary. You can route specific paths to a new microservice in Kubernetes while everything else stays on the VM monolith. You can canary between the two, split traffic by identity, or mirror requests across the infrastructure divide. The gateway abstracts the boundary, and you migrate workloads at whatever pace makes sense for your team.&lt;/p&gt;&lt;p&gt;As confidence grows and services move to Kubernetes, you adjust the uplink weights. The VM cluster handles less and less traffic. Eventually, the monolith&apos;s uplink weight drops to zero. The fig has fully grown.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Additional Reference:&lt;/strong&gt; &lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/expose/multi-cluster?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Multi-Cluster Traffic Distribution&lt;/u&gt;&lt;/a&gt; setup guide for parent/child clusters, uplinks, mTLS, and cross-cluster routing patterns.&lt;/p&gt;&lt;h2 id=&quot;the-strangler-fig-carving-out-your-first-service&quot;&gt;&lt;strong&gt;The Strangler Fig: Carving Out Your First Service&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Now the actual decomposition begins. The pattern is called the strangler fig, after the tropical plant that grows around a tree and gradually replaces it. You don&apos;t rewrite the monolith, you intercept specific routes at the gateway and redirect them to new services, one endpoint at a time.&lt;/p&gt;&lt;p&gt;Say your monolith handles everything at example.com. You&apos;ve extracted the orders domain into a new microservice. At the gateway, you add a route: requests to /api/orders go to the new service; all other requests go to the monolith. Clients don&apos;t know anything has changed.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-93cb9346-2f1e-4dd8-a81a-54ea89121949.png&quot; class=&quot;kg-image&quot; alt=&quot;Mermaid diagram 4&quot; loading=&quot;lazy&quot; title=&quot;Diagram 4&quot; width=&quot;1556&quot; height=&quot;1208&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/data-src-image-93cb9346-2f1e-4dd8-a81a-54ea89121949.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/data-src-image-93cb9346-2f1e-4dd8-a81a-54ea89121949.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-93cb9346-2f1e-4dd8-a81a-54ea89121949.png 1556w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The beauty of this approach is that it&apos;s incremental and reversible. If the new orders service has a problem, you revert to the monolith. No redeployment, no rollback, just a routing change. Over time, you extract more domains: payments, notifications, and user profiles. The monolith shrinks. The fig grows.&lt;/p&gt;&lt;p&gt;But there&apos;s a question lurking here: how do you know the new service actually works correctly under real traffic? You don&apos;t want to route 100% of order requests to an untested service and hope for the best. That&apos;s where traffic splitting comes in.&lt;/p&gt;&lt;h2 id=&quot;testing-in-production-safely&quot;&gt;&lt;strong&gt;Testing in Production Safely&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;The strangler fig tells you &lt;em&gt;where&lt;/em&gt; to route traffic. But how do you know the new service actually works before you commit? You don&apos;t flip a switch, you build confidence in stages: first, you observe, then you compare, then you roll out. Traefik gives you a different mechanism for each stage.&lt;/p&gt;&lt;h3 id=&quot;mirroring-zero-risk-shadow-testing&quot;&gt;&lt;strong&gt;Mirroring: Zero-Risk Shadow Testing&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;The safest way to test a new service is to send it real traffic without affecting users. That&apos;s mirroring. Traefik copies a percentage of production requests to the new service but discards its responses; users only ever see the monolith&apos;s response. The new service processes real requests, real payloads, real edge cases, and you watch its logs and metrics for anything unexpected.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-1852651f-4aad-41cb-a6ae-9944651f5837.png&quot; class=&quot;kg-image&quot; alt=&quot;Mermaid diagram 5&quot; loading=&quot;lazy&quot; title=&quot;Diagram 5&quot; width=&quot;1438&quot; height=&quot;1600&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/data-src-image-1852651f-4aad-41cb-a6ae-9944651f5837.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/data-src-image-1852651f-4aad-41cb-a6ae-9944651f5837.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-1852651f-4aad-41cb-a6ae-9944651f5837.png 1438w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Since responses from the mirror are discarded, you won&apos;t see failures in your client-facing metrics. You need to watch the microservice directly, its logs, its traces, its error rates, and its latency. This is where the observability foundation you set up earlier pays off: the gateway&apos;s OpenTelemetry data gives you the monolith&apos;s baseline, and the microservice&apos;s instrumentation shows how it handles the same traffic. Compare the two. If the microservice is throwing errors on 2% of mirrored requests, you know exactly what to fix before any real user sees that service.&lt;/p&gt;&lt;p&gt;This is also where you catch the problems you&apos;d never find in a staging environment: the malformed request from that one legacy client, the query parameter nobody documented, the header your integration partner sends at 3 am. Mirroring lets you discover it all without risking users. Start at 10%, ramp to 100% as the new service stabilizes.&lt;/p&gt;&lt;h3 id=&quot;ab-testing-comparing-old-and-new&quot;&gt;&lt;strong&gt;A/B Testing: Comparing Old and New&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Once the new service handles mirrored traffic cleanly, you&apos;re ready to send it to real users. A/B testing splits live traffic between the monolith and the microservice using weighted round robin (WRR), so you can compare their behavior side by side.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-7d632a0c-4c7f-46fc-aa6d-dbde423eb400.png&quot; class=&quot;kg-image&quot; alt=&quot;Mermaid diagram 6&quot; loading=&quot;lazy&quot; title=&quot;Diagram 6&quot; width=&quot;1117&quot; height=&quot;1600&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/data-src-image-7d632a0c-4c7f-46fc-aa6d-dbde423eb400.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/data-src-image-7d632a0c-4c7f-46fc-aa6d-dbde423eb400.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-7d632a0c-4c7f-46fc-aa6d-dbde423eb400.png 1117w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Sticky sessions matter here. If a user&apos;s first request goes to the new service, their subsequent requests should too; otherwise, they&apos;ll get inconsistent behavior mid-session.&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Traefik supports cookie-based stickiness at the service level, so each user gets a consistent experience even during the split.&amp;nbsp;&lt;/li&gt;&lt;li&gt;For situations where cookies aren&apos;t an option, API clients, mobile apps, or sessionless connections, Traefik also supports Highest Random Weight (HRW) hashing, which deterministically routes requests to the same backend based on attributes like the client&apos;s IP address. Same consistency guarantee, no cookies required.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The intent of A/B testing is comparison: which implementation is better? You&apos;re gathering data to make a decision.&lt;/p&gt;&lt;h3 id=&quot;failover-the-monolith-as-your-safety-net&quot;&gt;&lt;strong&gt;Failover: The Monolith as Your Safety Net&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;All the patterns above assume you&apos;re actively watching and making decisions. But what about 3 am on a Saturday? Failover gives you an automatic safety net: set the new microservice as the primary and the monolith as the fallback. If the microservice goes down or fails health checks, Traefik automatically routes all traffic back to the monolith. No human intervention required.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-7d3ac983-e47e-4c91-b8aa-8173ab165f8c.png&quot; class=&quot;kg-image&quot; alt=&quot;Mermaid diagram 7&quot; loading=&quot;lazy&quot; title=&quot;Diagram 7&quot; width=&quot;1455&quot; height=&quot;1600&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/data-src-image-7d3ac983-e47e-4c91-b8aa-8173ab165f8c.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/data-src-image-7d3ac983-e47e-4c91-b8aa-8173ab165f8c.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-7d3ac983-e47e-4c91-b8aa-8173ab165f8c.png 1455w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;This is different from weighted round robin. WRR splits traffic intentionally; you&apos;re choosing to send some percentage to each service. Failover is binary: use the new thing, but if it breaks, the old thing is still there. During a migration, this means you can go to 100% on the microservice while keeping the monolith warm as a fallback. It&apos;s the confidence boost that lets you make the final cutover without holding your breath.&lt;/p&gt;&lt;h3 id=&quot;circuit-breaker-automatic-damage-control&quot;&gt;&lt;strong&gt;Circuit Breaker: Automatic Damage Control&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Failover handles the case where the microservice is completely down. But what about degraded performance, the service is technically responding, but 40% of requests are returning 500s? That&apos;s where the circuit breaker comes in.&lt;/p&gt;&lt;p&gt;Traefik&apos;s circuit breaker middleware monitors the service&apos;s error rate. When errors exceed a threshold you define (say, 50% of requests over a rolling window), the circuit &quot;trips&quot; and stops sending traffic to the failing service entirely. It periodically lets a few requests through to check if the service has recovered, and automatically closes the circuit once it has.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-a30609c2-3630-468f-9c70-8fbef3dd2f94.png&quot; class=&quot;kg-image&quot; alt=&quot;Mermaid diagram 8&quot; loading=&quot;lazy&quot; title=&quot;Diagram 8&quot; width=&quot;1600&quot; height=&quot;270&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/data-src-image-a30609c2-3630-468f-9c70-8fbef3dd2f94.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/data-src-image-a30609c2-3630-468f-9c70-8fbef3dd2f94.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-a30609c2-3630-468f-9c70-8fbef3dd2f94.png 1600w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Pair this with failover, and you have a complete safety story: the circuit breaker detects degradation before it becomes an outage, and failover ensures traffic lands on a healthy node. During the migration, this combination means you can be aggressive about shifting traffic to new services, knowing that the system will self-heal if something goes wrong.&lt;/p&gt;&lt;h3 id=&quot;canary-deployments-shipping-new-features-safely&quot;&gt;&lt;strong&gt;Canary Deployments: Shipping New Features Safely&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;It&apos;s worth noting that canary deployments aren&apos;t really a migration pattern; they&apos;re what you adopt &lt;em&gt;after&lt;/em&gt; the migration. Once the orders microservice owns 100% of its traffic, every future release of that service uses canary: roll out v1.1 to 5% of users, watch the metrics, increase to 50%, then cut over. The same WRR mechanism that helped you compare monolith vs. microservice now helps you ship new features safely.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-c7b45e31-22cd-4fc1-a98e-f547e3265c10.png&quot; class=&quot;kg-image&quot; alt=&quot;Mermaid diagram 9&quot; loading=&quot;lazy&quot; title=&quot;Diagram 9&quot; width=&quot;1600&quot; height=&quot;296&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/data-src-image-c7b45e31-22cd-4fc1-a98e-f547e3265c10.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/data-src-image-c7b45e31-22cd-4fc1-a98e-f547e3265c10.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-c7b45e31-22cd-4fc1-a98e-f547e3265c10.png 1600w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Health checks on the canary version gate each step automatically: if the canary fails its health check, Traefik stops sending traffic to it. No rollback deployment, just a weight shift back to 100% stable.&lt;/p&gt;&lt;p&gt;This is one of the compounding benefits of the gateway-first migration approach. The weighted routing infrastructure you built for the migration doesn&apos;t go away; it becomes your standard deployment strategy for every service you extract.&lt;/p&gt;&lt;p&gt;The full toolkit looks like: a mirror to validate with zero risk, an A/B test to compare monolith vs. microservice and decide which wins, a failover and a circuit breaker to catch problems automatically. Once the microservice owns its traffic, the same weighted routing mechanism becomes your canary strategy, same percentage splits, different purpose: now you&apos;re shipping new features safely, not choosing between old and new. Each pattern builds on the same gateway foundation, and every step is reversible.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Additional References:&lt;/strong&gt; &lt;br&gt;&lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/expose/services/api-gateway-mirroring?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traffic Mirroring&lt;/u&gt;&lt;/a&gt; | &lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/expose/services/api-gateway-ab-testing?ref=containous.ghost.io&quot;&gt;&lt;u&gt;A/B Testing&lt;/u&gt;&lt;/a&gt; | &lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/expose/services/api-gateway-canary?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Canary Deployments&lt;/u&gt;&lt;/a&gt; configuration guides.&lt;/p&gt;&lt;h2 id=&quot;identity-aware-routing-migrating-by-who-not-just-what&quot;&gt;&lt;strong&gt;Identity-Aware Routing: Migrating by Who, Not Just What&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Weighted round robin splits traffic randomly. But sometimes you don&apos;t want random, you want surgical. Instead of sending 10% of all users to the new service, you want to send &lt;em&gt;specific&lt;/em&gt; users: your internal team, your beta testers, your most adventurous enterprise customers.&lt;/p&gt;&lt;p&gt;This is where Traefik Hub&apos;s multi-layer routing and identity integration come together. The idea is straightforward: the gateway already authenticates requests (remember the OIDC setup from earlier). The JWT claims contain information about who the user is, their role, their organization, and their tier. You use those claims to make routing decisions.&lt;/p&gt;&lt;p&gt;The mechanism is multi-layer routing. A parent router authenticates the request and extracts claims into headers. A child router matches on those headers and routes accordingly:&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-ba094b08-5890-4c26-9009-b7c0653875ac.png&quot; class=&quot;kg-image&quot; alt=&quot;Mermaid diagram 10&quot; loading=&quot;lazy&quot; title=&quot;Diagram 10&quot; width=&quot;1142&quot; height=&quot;1600&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/data-src-image-ba094b08-5890-4c26-9009-b7c0653875ac.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/data-src-image-ba094b08-5890-4c26-9009-b7c0653875ac.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-ba094b08-5890-4c26-9009-b7c0653875ac.png 1142w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;This gives you a migration strategy based on user segments. Internal team first, they&apos;re forgiving, and they file better bug reports. Then, beta users who opted in. Then a broader cohort. Enterprise customers on the monolith until you&apos;re absolutely confident. You control exactly who sees the new code, and you can change the targeting at any time without a deployment.&lt;/p&gt;&lt;p&gt;You can even combine this with a weighted round-robin: route 50% of beta users to the new service and 50% to the monolith. Identity routing for the &lt;em&gt;who&lt;/em&gt;, weighted splitting for the &lt;em&gt;how much&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Additional References:&lt;/strong&gt; &lt;br&gt;&lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/reference/routing/http/routers/ref-multi-layer-routing?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Multi-Layer Routing&lt;/u&gt;&lt;/a&gt; | &lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/expose/services/identity-based-routing?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Identity-Based Routing&lt;/u&gt;&lt;/a&gt; identity-aware routing configuration and patterns.&lt;/p&gt;&lt;h2 id=&quot;the-triple-gate-api-ai-and-mcp&quot;&gt;&lt;strong&gt;The Triple Gate: API, AI, and MCP&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;The migration from monolith to microservices isn&apos;t the end of the journey; it&apos;s the first gate. The gateway you built to control your migration is the same gateway that controls what comes next, and what comes next is a three-gate architecture where a single platform governs all your traffic: services, AI models, and AI agents.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Gate 1: API Gateway.&lt;/strong&gt; This is where you are now. This layer handles everything you&apos;ve discussed throughout this post. Routing, authentication, observability, traffic splitting, and identity-aware decisions. Traefik Hub also supports the Kubernetes Gateway API standard, so as the ecosystem moves toward it, you have a native path to adopt it without re-architecting. This gate handles every request from users to services.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Gate 2: AI Gateway.&lt;/strong&gt; Your newly extracted microservices will start calling LLMs. When they do, the gateway becomes the control plane for AI traffic too. Traefik Hub&apos;s &lt;a href=&quot;https://traefik.io/traefik-hub/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;AI Gateway&lt;/u&gt;&lt;/a&gt; routes requests to different model providers, enforces token-based rate limiting, applies content guardrails, and caches responses, all at the gateway layer. The same infrastructure that canary-tested your orders microservice now canary-tests your switch from GPT-4 to Claude. This gate handles every request from services to models.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Gate 3: MCP Gateway.&lt;/strong&gt; The &lt;a href=&quot;https://modelcontextprotocol.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Model Context Protocol (MCP)&lt;/u&gt;&lt;/a&gt; is the emerging standard for connecting AI agents to tools and data sources. As your microservices become the tools that agents call, the gateway needs to understand MCP&apos;s stateful, session-based communication patterns. Traefik Hub&apos;s MCP Gateway routes agent-to-tool traffic, enforces tool-based access control, and maintains session affinity across requests. The services you extracted from the monolith become first-class tools in the agent ecosystem, and the gateway governs access to all of them. This gate handles every request from agents to tools.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-dcf0d354-2051-4da6-9c54-16e576ae2ffd.png&quot; class=&quot;kg-image&quot; alt=&quot;Mermaid diagram 11&quot; loading=&quot;lazy&quot; title=&quot;Diagram 11&quot; width=&quot;1600&quot; height=&quot;247&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/04/data-src-image-dcf0d354-2051-4da6-9c54-16e576ae2ffd.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/data-src-image-dcf0d354-2051-4da6-9c54-16e576ae2ffd.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/data-src-image-dcf0d354-2051-4da6-9c54-16e576ae2ffd.png 1600w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The thread connecting all three gates is the one we started with: &lt;strong&gt;traffic control is migration control&lt;/strong&gt; — and it doesn&apos;t stop at microservices. The same gateway that manages your monolith decomposition manages your AI model routing and your agent tool access. One platform, three gates, every request.&lt;/p&gt;&lt;h2 id=&quot;the-migration-is-a-journey&quot;&gt;&lt;strong&gt;The Migration Is a Journey&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;The monolith doesn&apos;t die overnight, and it doesn&apos;t have to. The worst thing you can do is treat the migration as a binary event, old system off, new system on. The best thing you can do is build the infrastructure that lets you migrate incrementally, test continuously, and roll back instantly.&lt;/p&gt;&lt;p&gt;The API gateway is that infrastructure. It&apos;s the control plane for your migration, and for what comes after. Start with a simple pass-through. Set up observability to understand what you have. Centralize auth. Bridge your VMs and Kubernetes so the infrastructure is ready. Extract your first service behind a strangler fig route. Split traffic to test it. Use identity-aware routing to target specific user segments. And when you&apos;re ready, extend that same gateway through the triple gate, API, AI, MCP, into whatever your architecture becomes next. At every step, you&apos;re in control, and at every step, you can stop and come back to it later.&lt;/p&gt;&lt;p&gt;The monolith took years to build. Give yourself permission to take time to break it apart safely.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;em&gt;Every pattern in this guide, weighted routing, mirroring, canary releases, and load-balancing strategies, is available in Traefik Hub today. To try them on your own cluster, &lt;/em&gt;&lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/getting-started?ref=containous.ghost.io&quot;&gt;&lt;em&gt;&lt;u&gt;get started with Traefik Hub&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;br&gt;&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Implementing Forrester's AEGIS Framework at the Infrastructure Layer]]></title>
            <description><![CDATA[Explore how Forrester AEGIS's six domains & three core principles map to Traefik Hub's Triple Gate architecture (API Gateway, AI Gateway, MCP Gateway).]]></description>
            <link>https://traefik.io/implementing-forresters-aegis-framework</link>
            <guid isPermaLink="true">https://traefik.io/implementing-forresters-aegis-framework</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <category><![CDATA[MCP Gateway]]></category>
            <category><![CDATA[API Gateway]]></category>
            <dc:creator><![CDATA[Immánuel Fodor, Zaid Albirawi]]></dc:creator>
            <pubDate>Fri, 27 Mar 2026 13:50:51 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/03/forrester-aegis-blog-image_no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;forrester-aegis-with-traefik-hub&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/03/forrester-aegis-blog-image_no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/03/forrester-aegis-blog-image_no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/03/forrester-aegis-blog-image_no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/03/forrester-aegis-blog-image_no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;&lt;a href=&quot;https://www.forrester.com/blogs/introducing-aegis-the-guardrails-cisos-need-for-the-agentic-enterprise/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Forrester&apos;s AEGIS framework&lt;/u&gt;&lt;/a&gt; (Agentic AI Enterprise Guardrails For Information Security) defines 39 controls across six domains for securing AI agents in the enterprise. It is the most comprehensive analyst framework for agentic AI security to date, with regulatory cross-mapping to &lt;a href=&quot;https://www.nist.gov/itl/ai-risk-management-framework?ref=containous.ghost.io&quot;&gt;&lt;u&gt;NIST AI RMF&lt;/u&gt;&lt;/a&gt;, &lt;a href=&quot;https://www.iso.org/standard/42001?ref=containous.ghost.io&quot;&gt;&lt;u&gt;ISO/IEC 42001:2023&lt;/u&gt;&lt;/a&gt;, &lt;a href=&quot;https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OWASP Top 10 for LLMs&lt;/u&gt;&lt;/a&gt;, the &lt;a href=&quot;https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=OJ:L_202401689&amp;ref=containous.ghost.io&quot;&gt;&lt;u&gt;EU AI Act&lt;/u&gt;&lt;/a&gt;, and &lt;a href=&quot;https://atlas.mitre.org/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;MITRE ATLAS&lt;/u&gt;&lt;/a&gt;. CISOs are adopting it as the evaluation standard for agent governance.&lt;/p&gt;&lt;p&gt;The framework is strong on what organizations need. It is intentionally silent on how to implement it. That&apos;s by design: AEGIS is vendor-neutral and architecture-agnostic. But it leaves platform engineers and security architects with a practical question: where do these 39 controls actually get enforced?&lt;/p&gt;&lt;p&gt;This post maps AEGIS&apos;s six domains and three core principles to Traefik Hub&apos;s Triple Gate architecture (API Gateway, AI Gateway, MCP Gateway), with configuration examples showing how specific AEGIS controls translate to Kubernetes CRDs that enforce at the infrastructure layer.&lt;/p&gt;&lt;h2 id=&quot;key-takeaways&quot;&gt;Key Takeaways&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Forrester&apos;s AEGIS framework defines 39 controls across 6 domains. Its Zero Trust domain explicitly calls for &quot;policy gateways&quot; that all agent traffic must flow through.&lt;/li&gt;&lt;li&gt;Traefik Hub&apos;s Triple Gate architecture maps to 4 of 6 AEGIS domains (IAM, Data Security, Application Security, Zero Trust) with strong, product-native implementation from a single platform.&lt;/li&gt;&lt;li&gt;AEGIS&apos;s core principle, &quot;least agency,&quot; is the design philosophy behind TBAC (Tools/Tasks/Transactions-Based Access Control): infrastructure-layer enforcement of what agents can do, independent of the agent runtime.&lt;/li&gt;&lt;li&gt;The remaining 2 domains (GRC and Threat Management) require organizational processes and complementary solutions, as expected for any infrastructure product.&lt;/li&gt;&lt;li&gt;We also published a companion post mapping infrastructure-layer enforcement to the &lt;a href=&quot;about:blank&quot;&gt;&lt;u&gt;OWASP Top 10 for Agentic Applications&lt;/u&gt;&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-209462438701&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;209462438701&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLsK%2BPjml8pLJMI9oMgY6%2BDeGkqNSB1jELHMY%2Bq6uYTcnN%2BaoNdr%2Fv2S2ft5THyaItGV12qsq1QCtU%2Fc4N4WLlf6wbt5GBwxJg%2Bl0twk5rWPRpERaNqbu5407f6uYnzxtjoTuQCKQx7tO1xZKc%2BUZ5GuxQ4%2Btr%2BAXNG4jeuPm%2BF6Q7n%2FJz5xxH%2BIOrpNo0m6fsLRjxEX0gtEkMRBMrg9g%3D%3D&amp;webInteractiveContentId=209462438701&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;7cs-ai-governance-ebook-promo-square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-209462438701.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;why-infrastructure-layer-enforcement-matters-for-aegis&quot;&gt;Why Infrastructure-Layer Enforcement Matters for AEGIS&lt;/h2&gt;&lt;p&gt;Before mapping individual domains, it&apos;s worth understanding why AEGIS repeatedly calls for enforcement at the infrastructure layer rather than inside the agent runtime.&lt;/p&gt;&lt;p&gt;AEGIS&apos;s Zero Trust domain is explicit: &quot;all access to APIs or data [must] flow through Zero Trust enforcement layers such as policy gateways or conditional access controls.&quot; The Application Security domain requires &quot;channeling agent interactions through secure gateways with runtime policy enforcement and input sanitization.&quot;&lt;/p&gt;&lt;p&gt;The reason is architectural. Agent platforms are adding application-level controls: RBAC, audit logging, policy SDKs, signed skills. These operate inside the agent runtime. If the runtime is compromised through prompt injection, jailbreak, or privilege escalation, the governance is compromised with it. Application-layer controls and infrastructure-layer enforcement serve different purposes. Application-layer tools govern the agent&apos;s logic: what it should do. Infrastructure-layer enforcement governs the traffic: what it&apos;s allowed to do, regardless of what the runtime thinks is appropriate.&lt;/p&gt;&lt;p&gt;AEGIS treats both as necessary. This post focuses on the infrastructure layer. For a deeper look at how infrastructure-layer enforcement maps to specific agentic risks, see our companion post on the &lt;a href=&quot;about:blank&quot;&gt;&lt;u&gt;OWASP Agentic Top 10&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;h2 id=&quot;aegis-core-principles-least-agency-continuous-assurance-and-securing-intent&quot;&gt;AEGIS Core Principles: Least Agency, Continuous Assurance, and Securing Intent&lt;/h2&gt;&lt;p&gt;Before mapping individual domains, AEGIS is built on three core principles. Each maps to a Traefik Hub architectural decision.&lt;/p&gt;&lt;h3 id=&quot;principle-1-least-agency&quot;&gt;Principle 1: Least Agency&lt;/h3&gt;&lt;p&gt;AEGIS introduces &quot;least agency&quot; as its foundational principle. It extends the concept of least privilege beyond access control to cover decisions and actions. Agents should receive only the minimum permissions, capabilities, tools, and decision-making authority necessary for a specific task.&lt;/p&gt;&lt;p&gt;Traefik Hub implements least agency through TBAC (Tools/Tasks/Transactions-Based Access Control) in the MCP Gateway. TBAC enforces actions an agent identity is authorized to commit at the infrastructure layer: which tools it can invoke, which tasks it can perform, which transaction parameters are permitted, and under what conditions.&lt;/p&gt;&lt;p&gt;The enforcement is scoped to the agent&apos;s JWT identity. The same identity context that authenticates an API call (Gate 1), governs token budgets (Gate 2), and authorizes tool invocations (Gate 3). There&apos;s no gap where an agent can authenticate as one identity and act with the permissions of another.&lt;/p&gt;&lt;p&gt;Here&apos;s what least agency looks like in practice. Consider an inventory management agent that should be able to look up stock levels and create alerts, but should never be able to approve purchase orders:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Request flow for agent identity &quot;inventory-agent-prod-01&quot;:

Gate 1 (API Gateway):
  → JWT validated: agent=inventory-agent-prod-01, team=warehouse, role=inventory-reader
  → Rate limit checked: 1,000 requests/hour for this identity based on the agent scope

Gate 2 (AI Gateway):
  → Token budget checked: 50,000 tokens/day remaining
  → Safety pipeline: all configured tiers execute in parallel
  → Token consumption recorded against this identity

Gate 3 (MCP Gateway):
  → TBAC evaluated:
    - Tool: inventory-lookup (authorized, read-only)
    - Tool: stock-alert (authorized, max 10 creates/hour)
    - Tool: purchase-order (DENIED, requires manager-agent role)
  → Agent tool call budget checked: 10,000 calls/day remaining
  → Invocation executed and logged with full parameter capture
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The agent can look up inventory. It can create stock alerts, up to 10 per hour. It cannot approve purchases. These constraints are enforced at the traffic layer, below the agent runtime. If the agent is prompt-injected into believing it has purchase authority, TBAC still blocks the tool invocation because the authorization check happens in the gateway process, not in the agent process.&lt;/p&gt;&lt;p&gt;This is what AEGIS means by least agency: not just controlling access to systems, but controlling what an agent can do within those systems, enforced independently of the agent&apos;s own understanding of its permissions.&lt;/p&gt;&lt;h3 id=&quot;principle-2-continuous-risk-management&quot;&gt;Principle 2: Continuous Risk Management&lt;/h3&gt;&lt;p&gt;AEGIS&apos;s second principle replaces periodic audits with continuous evaluation of data, model, and agent integrity. Continuous assurance, not point-in-time compliance.&lt;/p&gt;&lt;p&gt;In Traefik Hub, this translates to per-request enforcement. The composable safety pipeline runs on every request and every response. TBAC evaluates every tool invocation. Token budgets are checked before every LLM interaction. There is no sampling, no periodic scan, no batch evaluation.&lt;/p&gt;&lt;p&gt;JWT validation happens on every request, not once per session. If a token expires, the next request is denied. If a TBAC policy is updated via a Kubernetes CRD change, the updated policy is enforced on the next request, with no redeployment required.&lt;/p&gt;&lt;p&gt;Deployment via Kubernetes CRDs enables GitOps-driven policy management. TBAC policies and safety pipeline configurations are version-controlled, auditable, and continuously reconciled by the Kubernetes controller. Drift from the declared state is automatically corrected. This means governance policies are not just continuously enforced; they&apos;re continuously reconciled to the desired state.&lt;/p&gt;&lt;h3 id=&quot;principle-3-securing-intent&quot;&gt;Principle 3: Securing Intent&lt;/h3&gt;&lt;p&gt;AEGIS&apos;s third principle shifts the focus from infrastructure-centric controls to intent-centric controls. Organizations need to understand whether an agent&apos;s actions are malicious or benign, intentional or unintentional.&lt;/p&gt;&lt;p&gt;The Triple Gate architecture provides intent visibility across the full AI workflow:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Gate 1 (API Gateway):&lt;/strong&gt; Who is this user or agent, and are they authorized to access this API?&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Gate 2 (AI Gateway):&lt;/strong&gt; What is the user asking the LLM? Is the content safe? Is the LLM&apos;s response factually grounded and free of harmful content?&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Gate 3 (MCP Gateway):&lt;/strong&gt; What tool is the agent invoking, with what parameters? Is this action authorized for this agent identity?&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The same JWT identity is tracked across all three gates. When an incident occurs, the audit trail shows the full chain: who authenticated, what they asked, what the model responded, what tool the agent invoked, with what parameters, and what the governance decision was at every step. This is the evidence chain AEGIS requires for securing intent.&lt;/p&gt;&lt;h2 id=&quot;mapping-the-six-aegis-domains&quot;&gt;Mapping the Six AEGIS Domains&lt;/h2&gt;&lt;p&gt;With the principles established, here&apos;s how each AEGIS domain maps to infrastructure-layer enforcement. Domains are covered in order. Coverage depth varies: four domains map strongly to product-native capabilities, two require organizational processes where we provide the enforcement layer but not the full domain.&lt;/p&gt;&lt;h3 id=&quot;domain-1-governance-risk-and-compliance&quot;&gt;Domain 1: Governance, Risk, and Compliance&lt;/h3&gt;&lt;p&gt;AEGIS&apos;s GRC domain covers organizational governance: oversight functions, AI system inventories, risk classification, acceptable use policies, and cross-functional governance groups.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Coverage: Partial (enforcement layer).&lt;/strong&gt; This is primarily an organizational domain, not a product-layer domain. No gateway product provides governance committees or risk classification taxonomies. What Traefik Hub provides is the enforcement infrastructure that makes GRC decisions machine-executable.&lt;/p&gt;&lt;p&gt;GRC policies that exist only in documents don&apos;t enforce themselves. A policy that says &quot;agents must not access customer PII without explicit authorization&quot; is only as strong as the system that enforces it. In Traefik Hub, that policy becomes a TBAC CRD that blocks unauthorized access at the traffic layer, plus a safety pipeline rule that masks PII in transit. The GRC team defines what should be allowed; the infrastructure enforces it.&lt;/p&gt;&lt;p&gt;For AI system inventory and risk classification, integration with an existing CMDB or governance platform is required. Traefik Hub&apos;s telemetry (which agents exist, what they access, how much they consume, what governance decisions were made) provides the operational evidence that feeds inventory and risk processes.&lt;/p&gt;&lt;h3 id=&quot;domain-2-identity-and-access-management&quot;&gt;Domain 2: Identity and Access Management&lt;/h3&gt;&lt;p&gt;AEGIS&apos;s IAM domain treats agents as a new identity class (neither fully human nor fully machine) that requires unique identification, just-in-time privileges, human oversight, and contextual authentication.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Coverage: Strong.&lt;/strong&gt; Traefik Hub&apos;s implementation centers on JWT-based identity continuity. Every agent interacting with the Triple Gate is identified by its JWT claims. Token rate limiting, safety pipeline logging, TBAC authorization, and observability telemetry all track against this unique identity. This enables:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Per-agent token consumption tracking and budget enforcement&lt;/li&gt;&lt;li&gt;Per-agent distributed traces across all three gates, capturing authentication decisions, guard results, and tool invocations per call via OpenTelemetry&lt;/li&gt;&lt;li&gt;Per-agent safety pipeline results&lt;/li&gt;&lt;li&gt;Per-agent tool invocation history with full parameter capture&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;For just-in-time privileges, TBAC supports conditional, scoped authorization. High-risk tool invocations can require human approval. Time-windowed permissions can restrict agent capabilities to specific operational hours. Parameter-level constraints can limit the scope of approved actions.&lt;/p&gt;&lt;p&gt;Authentication is continuous. JWT validation occurs on every request at Gate 1. The validated identity propagates through Gates 2 and 3, where it is re-evaluated against the relevant TBAC policies and token budgets. There is no session-based trust. Every interaction is independently validated.&lt;/p&gt;&lt;h3 id=&quot;domain-3-data-security-and-privacy&quot;&gt;Domain 3: Data Security and Privacy&lt;/h3&gt;&lt;p&gt;AEGIS&apos;s Data Security domain covers data classification for agent contexts, controls for agent memory, data enclaves, anonymization, privacy-preserving AI operations, and data provenance.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Coverage: Strong.&lt;/strong&gt; The composable safety pipeline is Traefik Hub&apos;s implementation of these controls. It operates bidirectionally (on both requests and responses) across four tiers, each with different detection capabilities.&lt;/p&gt;&lt;p&gt;Here&apos;s a configuration that implements multiple AEGIS data security controls in a single middleware:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: aegis-data-protection
  namespace: ai-services
spec:
  plugin:
    content-guard:
      engine:
        regex: {}

      request:
        # Prevent data extraction via prompt manipulation
        - jsonQueries:
            - &quot;.messages[].content&quot;
          block: true
          reason: &quot;data_extraction_detected&quot;
          entities:
            - &quot;(?i)repeat.*(training|system|original).*(data|prompt|instructions)&quot;
            - &quot;(?i)output.*(everything|all).*(you know|in your|you were)&quot;

        # Mask Social Security numbers before they reach the LLM
        - jsonQueries:
            - &quot;.messages[].content&quot;
            - &quot;.context&quot;
          mask:
            char: &quot;*&quot;
            unmaskFromLeft: 0
            unmaskFromRight: 4
          entities:
            - &quot;\\d{3}-\\d{2}-\\d{4}&quot;

        # Mask credit card numbers
        - jsonQueries:
            - &quot;.messages[].content&quot;
            - &quot;.customer.payment&quot;
          mask:
            char: &quot;*&quot;
            unmaskFromLeft: 0
            unmaskFromRight: 4
          entities:
            - &quot;\\d{4}[-\\s]?\\d{4}[-\\s]?\\d{4}[-\\s]?\\d{4}&quot;

      response:
        # Prevent infrastructure data leakage in LLM responses
        - jsonQueries:
            - &quot;.choices[].message.content&quot;
          mask:
            char: &quot;X&quot;
            unmaskFromLeft: 0
            unmaskFromRight: 0
          entities:
            - &quot;192\\.168\\.[0-9]{1,3}\\.[0-9]{1,3}&quot;
            - &quot;10\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}&quot;
            - &quot;(?i)(postgres|mysql|redis)://[^\\s]+&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This configuration covers three AEGIS data security requirements:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Data loss prevention (request-side):&lt;/strong&gt; The first rule blocks prompts that attempt to extract training data or system instructions. This is deterministic, sub-millisecond, and catches the most common data extraction patterns.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;PII anonymization (request-side)&lt;/strong&gt;: The second and third rules mask SSNs and credit card numbers before they reach the LLM. The data is redacted in-place: the request continues with &lt;code&gt;***-**-1234&lt;/code&gt; instead of the full SSN. The LLM never sees the original value.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Infrastructure data protection (response-side):&lt;/strong&gt; The fourth rule prevents the LLM from leaking internal IP addresses and database connection strings in its responses. This catches a common failure mode where models trained on internal documentation inadvertently expose infrastructure details.&lt;/p&gt;&lt;p&gt;This is Tier 1 (Regex Guard) only. For PII that doesn&apos;t follow strict patterns (misspelled names, partial phone numbers, context-dependent personal data), add Tier 2 (Microsoft Presidio). For semantic threats (prompt injection attempts that don&apos;t use obvious keywords, off-topic drift, harmful content), add Tier 3 (NVIDIA NIMs) and Tier 4 (IBM Granite Guardian). All tiers run in parallel. For a detailed walkthrough of the full four-tier pipeline, see &lt;a href=&quot;about:blank&quot;&gt;&lt;u&gt;From Regex to GPU: Building a Multi-Vendor AI Safety Pipeline&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;A note on deployment model: Traefik Hub is self-hosted. All safety pipeline processing runs on the customer&apos;s infrastructure. No data leaves the customer&apos;s environment for governance evaluation. For organizations subject to data residency requirements (&lt;a href=&quot;https://eur-lex.europa.eu/legal-content/EN/TXT/?uri=OJ:L_202401689&amp;ref=containous.ghost.io&quot;&gt;&lt;u&gt;EU AI Act&lt;/u&gt;&lt;/a&gt;, GDPR, NIS2), this is not a feature but a requirement. Air-gapped deployment is fully supported.&lt;/p&gt;&lt;h3 id=&quot;domain-4-application-security-and-devsecops&quot;&gt;Domain 4: Application Security and DevSecOps&lt;/h3&gt;&lt;p&gt;AEGIS&apos;s Application Security domain covers the agent software lifecycle: risk evaluation, DevSecOps practices, supply chain assessment, adversarial testing, embedded telemetry, sandbox interactions, input sanitization, and runtime policy enforcement.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Coverage: Strong.&lt;/strong&gt; Two aspects of this domain are particularly relevant at the infrastructure layer: runtime policy enforcement and supply chain security.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Runtime policy enforcement:&lt;/strong&gt; TBAC policies are expressed as Kubernetes CRDs and enforced on every MCP tool invocation. This is runtime enforcement that operates independently of the agent&apos;s application code. The agent framework does not evaluate TBAC policies, cannot modify them, and has no mechanism to bypass them.&lt;/p&gt;&lt;p&gt;AEGIS also requires that governance controls work with agent architectures, not against them. Traditional gateways return an HTTP 403 Forbidden when a policy blocks a request. For autonomous agents executing multi-step workflows, a 403 breaks the agent&apos;s control flow. The agent can&apos;t distinguish between &quot;the guardrail blocked this specific request&quot; and &quot;something is fundamentally wrong with the system.&quot; Most agent frameworks treat non-2xx responses as system errors.&lt;/p&gt;&lt;p&gt;Traefik Hub&apos;s &lt;code&gt;onDenyResponse&lt;/code&gt; feature addresses this. When a guard blocks a request, the response can be configured to return a structured, schema-compliant refusal (HTTP 200 with a conversational message) instead of a raw 403:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;blockConditions:
  - reason: harmful_content
    condition: Contains(&quot;yes&quot;)
    onDenyResponse:
      statusCode: 200
      message: &amp;gt;
        This request was blocked by organizational security policy.
        Please reformulate your request within acceptable use guidelines.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;An agent receiving this structured refusal can parse it as a valid conversational turn, understand that the request was refused (not that the system failed), and decide what to do next. The middleware chain downstream continues to function normally. This is what makes infrastructure-layer governance agent-aware: enforcement that works with autonomous workflows rather than breaking them.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Supply chain security for agent tools:&lt;/strong&gt; AEGIS calls for software supply chain assessment, which in the agentic AI context means securing the MCP tool supply chain. The risk is real: malicious MCP servers have already been documented in the wild (the Postmark MCP backdoor in September 2025 shipped 15 clean versions before injecting a backdoor in v1.0.16, affecting approximately 500 organizations).&lt;/p&gt;&lt;p&gt;The MCP Gateway addresses this at the infrastructure layer:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Server allowlisting:&lt;/strong&gt; TBAC policies explicitly define which MCP servers each agent identity can connect to. Connections to unlisted servers are denied at the gateway.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Tool-level authorization:&lt;/strong&gt; Even within an allowed MCP server, TBAC controls which specific tools the agent can invoke.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Parameter constraints:&lt;/strong&gt; TBAC can limit the parameters an agent passes to authorized tools (read-only database queries, restricted file paths, capped transaction values).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Outbound inspection:&lt;/strong&gt; The MCP Gateway can inspect outgoing API calls from agent tool invocations, preventing data exfiltration through tool parameters.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;An agent that gets prompt-injected into connecting to a malicious MCP server is blocked by the TBAC allowlist. These are infrastructure-layer controls that the agent runtime cannot override.&lt;/p&gt;&lt;h3 id=&quot;domain-5-threat-management-and-security-operations&quot;&gt;Domain 5: Threat Management and Security Operations&lt;/h3&gt;&lt;p&gt;AEGIS&apos;s Threat Management domain covers real-time monitoring, anomaly detection, comprehensive logging, rapid containment, hallucination detection, and incident response readiness.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Coverage: Partial (detection and containment).&lt;/strong&gt; Traefik Hub covers the detection and containment aspects of this domain through the composable safety pipeline and operational controls.&lt;/p&gt;&lt;p&gt;Hallucination detection deserves specific attention because AEGIS calls it out as a required capability and because it is architecturally distinct from other threat types. IBM Granite Guardian provides hallucination detection and RAG quality assessment through the LLM Guard middleware. The &lt;code&gt;useRequestHistory: true&lt;/code&gt; parameter provides the request context so the model can evaluate whether the response is factually supported. Regex patterns and NLP-based entity detection cannot detect hallucinations because they match surface patterns, not factual accuracy. This requires a semantic model.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Parallel threat detection&lt;/strong&gt; across multiple guard providers (NVIDIA NIMs for 22+ harm categories and jailbreak detection, IBM Granite Guardian for hallucination and harm) runs concurrently. Total enforcement time equals the slowest guard, not the sum.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Rapid containment&lt;/strong&gt; via the Failover Router implements circuit-breaker chains. When a provider returns error status codes (429, 500-504), traffic is automatically rerouted to fallback providers. All safety policies remain enforced regardless of which provider is serving the request. The governance doesn&apos;t degrade when the model does.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Comprehensive logging&lt;/strong&gt; across every gate emits structured telemetry: API authentication results (Gate 1), safety pipeline guard decisions with reasons (Gate 2), and TBAC authorization decisions with tool and parameter details (Gate 3). All telemetry includes the agent identity for cross-gate correlation and is exported via OpenTelemetry to the observability platform of your choice.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Request mirroring&lt;/strong&gt; provides a distinct and complementary capability worth calling out specifically. Traefik Hub can forward a live copy of every request and response to an external destination in parallel with the primary traffic flow, with no impact on latency for the agent workload. For SIEM and UEBA integration, this means security tooling receives the actual payloads in real time, not just metadata after the fact. Threat detection models can analyze live traffic, identify anomalous patterns, and feed updated policy signals back to the gateway. This is the integration point where infrastructure-layer enforcement connects to SOC workflows.&lt;/p&gt;&lt;p&gt;A note on scope: Traefik Hub provides detection and containment at the traffic layer. Behavioral anomaly detection (establishing baseline invocation patterns and alerting on deviation) and incident response workflows are organizational capabilities that require SIEM/UEBA integration and SOC processes. AEGIS expects both. The gateway provides the telemetry and the live traffic mirror that those processes require; the analytical and response layers sit above it.&lt;/p&gt;&lt;h3 id=&quot;domain-6-zero-trust-architecture&quot;&gt;Domain 6: Zero Trust Architecture&lt;/h3&gt;&lt;p&gt;AEGIS&apos;s Zero Trust domain is the most direct validation of infrastructure-layer enforcement. The &lt;a href=&quot;https://www.forrester.com/blogs/forrester-aegis-the-new-standard-for-ai-governance/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;AEGIS framework&lt;/u&gt;&lt;/a&gt; requirements read as a description of a policy gateway architecture:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&quot;All access to APIs or data [must] flow through Zero Trust enforcement layers such as policy gateways or conditional access controls.&quot;&lt;/li&gt;&lt;li&gt;Network access layer controls for agent workloads.&lt;/li&gt;&lt;li&gt;Continuous validation of agent runtime environment.&lt;/li&gt;&lt;li&gt;Agent-to-agent communication monitoring.&lt;/li&gt;&lt;li&gt;Ephemeral identities for autonomous systems.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Coverage: Strong.&lt;/strong&gt; The Triple Gate architecture is a policy gateway. Every API call (Gate 1), every LLM interaction (Gate 2), and every MCP tool invocation (Gate 3) flows through the gateway with policy enforcement. There is no bypass path.&lt;/p&gt;&lt;p&gt;TBAC enforces least agency at the infrastructure layer. Agents receive only the tools, tasks, and transaction authority explicitly granted by their TBAC policy. No implicit permissions. No inheritance of elevated privileges from the agent runtime.&lt;/p&gt;&lt;p&gt;When agents communicate via API calls or MCP tool invocations, both sides of the interaction pass through the Triple Gate. The initiating agent&apos;s request is authenticated and authorized via TBAC. The receiving agent&apos;s response passes through the safety pipeline. The full interaction is logged with both agent identities.&lt;/p&gt;&lt;p&gt;JWT-based identity supports scoped tokens with configurable expiration. Agents can be issued tokens that are task-scoped, with a short time-to-live set at issuance time. Expired tokens and tokens with incorrect scopes are rejected.&lt;/p&gt;&lt;p&gt;For organizations in regulated industries where SaaS governance tools are not permitted, Traefik Hub is self-hosted on the customer&apos;s infrastructure. Air-gapped deployment is fully supported. Traefik Hub is FIPS 140-2 validated and FIPS 140-3 ready (native Go BoringCrypto). No governance data, telemetry, or policy configurations leave the customer&apos;s environment.&lt;/p&gt;&lt;h2 id=&quot;putting-it-together-one-request-five-domains&quot;&gt;Putting It Together: One Request, Five Domains&lt;/h2&gt;&lt;p&gt;Here&apos;s how AEGIS domains intersect in a single request through the Triple Gate:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Request arrives.&lt;/strong&gt; Gate 1 validates the agent&apos;s JWT and enforces API rate limits. → &lt;em&gt;Domain 2 (IAM), Domain 6 (ZTA)&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Token budget check.&lt;/strong&gt; If the estimated input tokens would exceed the agent&apos;s remaining budget, the request is blocked before any guard runs. → &lt;em&gt;Domain 6 (ZTA: least agency applied to resource consumption)&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Safety pipeline executes.&lt;/strong&gt; Regex Guard masks SSNs and credit cards. Presidio catches context-dependent PII. NVIDIA NIMs scan for prompt injection and harmful content. All tiers run in parallel. → &lt;em&gt;Domain 3 (Data Security), Domain 5 (Threat Management)&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;LLM responds.&lt;/strong&gt; The response passes back through the pipeline. Granite Guardian checks for hallucination against the request context. Regex Guard masks any internal IP addresses in the output. → &lt;em&gt;Domain 3 (Data Security), Domain 5 (Threat Management)&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Agent invokes an MCP tool.&lt;/strong&gt; TBAC validates the tool invocation against the agent&apos;s authorized tools, permitted parameters, and usage limits. → &lt;em&gt;Domain 4 (Application Security), Domain 6 (ZTA: least agency)&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Telemetry emitted.&lt;/strong&gt; Every gate logs the agent identity, governance decisions, guard results, tool invocations, and token consumption. → &lt;em&gt;Domain 1 (GRC: evidence for governance reporting), Domain 5 (Threat Management: SOC monitoring)&lt;/em&gt;&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Five of six AEGIS domains are enforced in a single request, through one platform, with one identity context.&lt;/p&gt;&lt;h2 id=&quot;coverage-summary&quot;&gt;Coverage Summary&lt;/h2&gt;&lt;p&gt;Not every AEGIS domain is a product-layer control. AEGIS is a comprehensive organizational framework, and some domains require processes, teams, and governance structures that no infrastructure product can provide. Here&apos;s our assessment of where Traefik Hub&apos;s Triple Gate provides strong coverage and where complementary solutions are required:&lt;/p&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;AEGIS Domain&lt;/th&gt;
&lt;th&gt;Triple Gate Coverage&lt;/th&gt;
&lt;th&gt;What&apos;s Covered&lt;/th&gt;
&lt;th&gt;What Requires Complement&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Domain 1: GRC&lt;/td&gt;
&lt;td&gt;Partial (enforcement)&lt;/td&gt;
&lt;td&gt;Machine-executable policy enforcement, governance evidence via telemetry&lt;/td&gt;
&lt;td&gt;Governance oversight function, AI system inventory, risk classification&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Domain 2: IAM&lt;/td&gt;
&lt;td&gt;Strong&lt;/td&gt;
&lt;td&gt;JWT identity continuity, per-agent tracking, TBAC-scoped authorization, continuous authentication&lt;/td&gt;
&lt;td&gt;Agent onboarding/offboarding workflows (requires IdP integration)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Domain 3: Data Security&lt;/td&gt;
&lt;td&gt;Strong&lt;/td&gt;
&lt;td&gt;4-tier PII detection and masking, bidirectional enforcement, DLP, self-hosted data processing&lt;/td&gt;
&lt;td&gt;Data classification taxonomy, agent memory controls&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Domain 4: Application Security&lt;/td&gt;
&lt;td&gt;Strong&lt;/td&gt;
&lt;td&gt;TBAC runtime policy enforcement, MCP supply chain security, agent-aware error handling, input sanitization&lt;/td&gt;
&lt;td&gt;SDLC integration, adversarial red teaming&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Domain 5: Threat Management&lt;/td&gt;
&lt;td&gt;Partial (detection + containment)&lt;/td&gt;
&lt;td&gt;Hallucination detection, content threat detection, prompt injection defense, circuit breakers, comprehensive logging&lt;/td&gt;
&lt;td&gt;Behavioral anomaly detection, forensic investigation workflows, incident response playbooks&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Domain 6: Zero Trust&lt;/td&gt;
&lt;td&gt;Strong&lt;/td&gt;
&lt;td&gt;Policy gateway enforcement, least agency via TBAC, continuous validation, agent-to-agent monitoring, air-gapped deployment&lt;/td&gt;
&lt;td&gt;Network segmentation (requires CNI integration)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Four of six domains with strong, product-native implementation. Two domains with partial coverage that requires organizational processes or complementary solutions. This is an expected distribution for an infrastructure product: GRC and SecOps are organizational capabilities, while IAM, Data Security, Application Security, and Zero Trust are enforceable at the infrastructure layer.&lt;/p&gt;&lt;h2 id=&quot;whats-next&quot;&gt;What&apos;s Next&lt;/h2&gt;&lt;p&gt;AEGIS is gaining traction as the evaluation standard for agentic AI governance. As CISOs adopt it, the question shifts from &quot;do we need agent governance?&quot; to &quot;how do we implement these 39 controls?&quot; For the infrastructure-layer controls, the answer is a policy gateway that enforces identity, data security, application security, and zero trust on every request, every response, and every tool invocation.&lt;/p&gt;&lt;p&gt;For a complementary perspective on infrastructure-layer enforcement, see our mapping of the &lt;a href=&quot;about:blank&quot;&gt;&lt;u&gt;OWASP Top 10 for Agentic Applications to the gateway layer&lt;/u&gt;&lt;/a&gt;. And for a deep technical walkthrough of the composable safety pipeline referenced throughout this post, see &lt;a href=&quot;about:blank&quot;&gt;&lt;u&gt;From Regex to GPU: Building a Multi-Vendor AI Safety Pipeline&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Traefik Hub v3.20 is now available as an Early Access release, with general availability planned for late April 2026. To try the capabilities described in this post, &lt;a href=&quot;https://info.traefik.io/request-early-access?ref=containous.ghost.io&quot;&gt;&lt;u&gt;sign up for Early Access&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;frequently-asked-questions&quot;&gt;Frequently Asked Questions&lt;/h2&gt;&lt;h3 id=&quot;what-is-forresters-aegis-framework&quot;&gt;What is Forrester&apos;s AEGIS framework? &lt;/h3&gt;&lt;p&gt;AEGIS (Agentic AI Enterprise Guardrails For Information Security) is a security framework published by &lt;a href=&quot;https://www.forrester.com/blogs/introducing-aegis-the-guardrails-cisos-need-for-the-agentic-enterprise/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Forrester Research&lt;/u&gt;&lt;/a&gt; that defines 39 controls across six domains for securing AI agents in the enterprise. The six domains are: Governance, Risk, and Compliance (GRC); Identity and Access Management (IAM); Data Security and Privacy; Application Security and DevSecOps; Threat Management and Security Operations; and Zero Trust Architecture. The framework includes regulatory cross-mapping to NIST AI RMF, ISO/IEC 42001, OWASP Top 10 for LLMs, the EU AI Act, and MITRE ATLAS.&lt;/p&gt;&lt;h3 id=&quot;what-is-least-agency-in-the-aegis-framework&quot;&gt;What is &quot;least agency&quot; in the AEGIS framework?&lt;/h3&gt;&lt;p&gt;Least agency is AEGIS&apos;s foundational security principle. It extends the concept of least privilege beyond access control to cover decisions and actions. Under least agency, AI agents should receive only the minimum permissions, capabilities, tools, and decision-making authority necessary for a specific task. It is the agentic equivalent of the principle of least privilege, applied to autonomous systems that make decisions, not just access resources.&lt;/p&gt;&lt;h3 id=&quot;how-do-you-implement-aegis-controls-at-the-infrastructure-layer&quot;&gt;How do you implement AEGIS controls at the infrastructure layer?&lt;/h3&gt;&lt;p&gt;AEGIS controls can be implemented at the infrastructure layer through a policy gateway that sits between agent workloads and the services they consume. Traefik Hub&apos;s Triple Gate architecture (API Gateway, AI Gateway, MCP Gateway) enforces AEGIS controls on every API call, LLM interaction, and MCP tool invocation. Identity controls are enforced via JWT-based authentication. Data security controls are enforced via a composable safety pipeline. Application security controls are enforced via TBAC (Tools/Tasks/Transactions-Based Access Control). Zero trust controls are enforced through continuous per-request validation.&lt;/p&gt;&lt;h3 id=&quot;how-many-aegis-domains-can-be-enforced-at-the-infrastructure-layer&quot;&gt;&lt;strong&gt;How many AEGIS domains can be enforced at the infrastructure layer?&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Four of six AEGIS domains (IAM, Data Security, Application Security, Zero Trust) can be strongly enforced at the infrastructure layer through a policy gateway. The remaining two domains (GRC and Threat Management/SecOps) are primarily organizational capabilities that require governance processes, SIEM integration, and SOC operations, though infrastructure-layer telemetry provides the evidence these processes need.&lt;/p&gt;&lt;h3 id=&quot;what-is-the-difference-between-aegis-and-the-owasp-top-10-for-agentic-applications&quot;&gt;What is the difference between AEGIS and the OWASP Top 10 for Agentic Applications? &lt;/h3&gt;&lt;p&gt;AEGIS is a comprehensive organizational security framework with 39 controls across six governance domains, focused on how enterprises should structure their AI agent security programs. The &lt;a href=&quot;https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OWASP Top 10 for Agentic Applications&lt;/u&gt;&lt;/a&gt; is a risk taxonomy that identifies the ten most critical security risks for autonomous AI agents (such as goal hijacking, tool misuse, and identity abuse). AEGIS tells you what controls to implement; OWASP tells you what risks to prioritize. Both are complementary and map to infrastructure-layer enforcement. See our &lt;a href=&quot;about:blank&quot;&gt;&lt;u&gt;OWASP Agentic Top 10 mapping&lt;/u&gt;&lt;/a&gt; for the risk-level view.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-209462438701&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;209462438701&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLsK%2BPjml8pLJMI9oMgY6%2BDeGkqNSB1jELHMY%2Bq6uYTcnN%2BaoNdr%2Fv2S2ft5THyaItGV12qsq1QCtU%2Fc4N4WLlf6wbt5GBwxJg%2Bl0twk5rWPRpERaNqbu5407f6uYnzxtjoTuQCKQx7tO1xZKc%2BUZ5GuxQ4%2Btr%2BAXNG4jeuPm%2BF6Q7n%2FJz5xxH%2BIOrpNo0m6fsLRjxEX0gtEkMRBMrg9g%3D%3D&amp;webInteractiveContentId=209462438701&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;7cs-ai-governance-ebook-promo-square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-209462438701.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[The Ingress NGINX Retirement Created Three Risks. Most Teams Are Only Managing One.]]></title>
            <description><![CDATA[Ingress NGINX retired March 24, 2026. Before you migrate, understand the risks most teams are ignoring—and why your controller choice today will compound for years.]]></description>
            <link>https://traefik.io/the-three-risks-created-by-ingress-nginx</link>
            <guid isPermaLink="true">https://traefik.io/the-three-risks-created-by-ingress-nginx</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[ingress nginx]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <dc:creator><![CDATA[Sudeep Goswami]]></dc:creator>
            <pubDate>Thu, 26 Mar 2026 12:59:48 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/03/ingress-nginx-triple-threat-blog-image_no-copy.png&quot; class=&quot;kg-image&quot; alt=&quot;Ingress NGINX risks represented as an iceberg&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/03/ingress-nginx-triple-threat-blog-image_no-copy.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/03/ingress-nginx-triple-threat-blog-image_no-copy.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/03/ingress-nginx-triple-threat-blog-image_no-copy.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/03/ingress-nginx-triple-threat-blog-image_no-copy.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;The retirement of Ingress NGINX is official.&lt;/strong&gt; As of March 24, 2026, there are no more releases, no more bug fixes, and no more security patches. &lt;a href=&quot;https://kubernetes.io/blog/2026/01/29/ingress-nginx-statement/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Roughly half of all cloud-native environments&lt;/u&gt;&lt;/a&gt; are running a controller that will never be updated again. The urgency of the situation is not in question.&lt;/p&gt;&lt;p&gt;What is in question is whether the response to that urgency is complete.&lt;/p&gt;&lt;p&gt;The Ingress NGINX retirement did not create one risk; it created three. The first is &lt;strong&gt;&lt;em&gt;migration risk&lt;/em&gt;&lt;/strong&gt;: the operational challenge of moving hundreds of clusters off a retired controller without breaking production. The second is &lt;strong&gt;&lt;em&gt;security risk&lt;/em&gt;&lt;/strong&gt;: the architectural question of whether the new controller eliminates the vulnerability class that made Ingress NGINX untenable, or inherits it. The third is &lt;strong&gt;&lt;em&gt;stagnation risk&lt;/em&gt;&lt;/strong&gt;: the strategic question of whether the foundation being laid today can support the governance layers every organization will need to build on top of it over the next several years.&lt;/p&gt;&lt;p&gt;The migration conversation happening across the Kubernetes community right now is almost entirely focused on the first risk. The other two deserve equal attention. The decisions being made now will compound, for better or worse, across all three.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-202811305109&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:256.4375px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;202811305109&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLKAm8xJGAkMomgYaKZluN7QRDPC01mGzQimET7S3tC7LPyvBjYGgzapOsNz1gKcvSwp8xPNjFx41yV8oAzf35dceO4Rp6ogur2hp7BpHIIbYxEWoGtj4q8sdeqh7ubpVMylWnUkqdJH2HiKqyRf6lKgPfvboku75hmiSIRHI%2BWHLvj0g9HqdYjYmIqmgjCmSw%3D%3D&amp;webInteractiveContentId=202811305109&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;nginx-fade-v2&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-202811305109.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;migration-risk&quot;&gt;Migration Risk&lt;/h2&gt;&lt;p&gt;Migration risk is the risk most teams understand best, because it is the most immediately visible. Clusters running Ingress NGINX today are running unmaintained software. Every day that passes is a day closer to an unpatched CVE landing in a production environment with no fix available. The operational pressure to move is real and justified.&lt;/p&gt;&lt;p&gt;But migration risk is not just about urgency. It is about what the migration actually requires in practice, and that is where most of the market response has fallen short.&lt;/p&gt;&lt;p&gt;When the Ingress NGINX retirement was announced, vendors responded by positioning their controllers as the destination. Compatibility tables appeared. Blog posts explained why each vendor&apos;s product was the natural landing spot. The conversation became: which controller should we migrate to?&lt;/p&gt;&lt;p&gt;That framing misses the harder problem. Ingress NGINX users have built configurations over years using a specific annotation vocabulary. Some of those annotations have direct equivalents in other controllers. Some require behavioral substitutes. Some require rethinking routing logic entirely. For a team running a handful of clusters, that is a manageable audit. For a team running hundreds, it is a multi-quarter engineering project, unless someone has already built the bridge.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Traefik built the bridge&lt;/strong&gt;. The open-source Ingress NGINX migration tool, available at &lt;a href=&quot;https://github.com/traefik/ingress-nginx-migration?ref=containous.ghost.io&quot;&gt;&lt;u&gt;github.com/traefik/ingress-nginx-migration&lt;/u&gt;&lt;/a&gt;, analyzes existing cluster configurations, maps annotations against Traefik&apos;s Ingress NGINX Provider, identifies gaps, and generates a migration report before any commitment is made. Traefik&apos;s Ingress NGINX Provider covers over 90% of Ingress NGINX annotations, meaning the vast majority of existing configurations migrate without manual rewriting.&lt;/p&gt;&lt;p&gt;That covers the immediate operational problem. But migration risk also has a longer dimension that most teams are not factoring in: the configuration model chosen today becomes the configuration model maintained for years.&lt;/p&gt;&lt;p&gt;The Kubernetes community has been clear on the direction. The Ingress spec is feature-frozen. Kubernetes &lt;strong&gt;Gateway API&lt;/strong&gt; is the designated successor, now a CNCF-standard specification with broad ecosystem backing, and the routing model that future tooling, documentation, and community investment will be built around. Teams treating this migration purely as a like-for-like swap are solving the urgency problem without capturing the modernization opportunity.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Traefik supports both paths simultaneously.&lt;/strong&gt; The same binary, the same Helm chart, the same Go-native data plane handles Ingress resources, Kubernetes Gateway API, and Traefik&apos;s native IngressRoute CRD concurrently. A team that needs to move fast can drop in Traefik against existing Ingress configurations today, validate the migration, and plan the Gateway API transition on its own schedule, without a future re-architecture. The migration decision and the modernization decision can be made independently. No second migration. No second vendor.&lt;/p&gt;&lt;p&gt;This reflects a long-view approach to winning in this market: solve the actual engineering problem teams are facing, and earn the adoption that follows. Not a destination to land on. A bridge to get there without operational disruption.&lt;/p&gt;&lt;p&gt;Migration risk is real and solvable. It is also the least consequential of the three risks if the other two go unaddressed.&lt;/p&gt;&lt;h2 id=&quot;security-risk&quot;&gt;Security Risk&lt;/h2&gt;&lt;p&gt;Security risk is the risk the migration conversation has most conspicuously skipped. It is also the one with the most structural teeth.&lt;/p&gt;&lt;p&gt;Ingress controller migrations do not happen often. For most organizations, this is the first one in years and will likely be the last one for years to come. The operational cost of replacing a controller at scale is high enough that once the decision is made, it stays made. Which means the question being answered right now is not just &quot;which controller do we migrate to.&quot; It is &quot;which security architecture do we commit to for the next several years.&quot;&lt;/p&gt;&lt;p&gt;Most of the migration conversation has been focused on whether the destination controller is actively maintained. That is a necessary condition but not a sufficient one. A controller can be actively maintained and still carry a vulnerability class that no amount of maintenance can eliminate. The question worth asking is what the controller is built from, not just who is building it.&lt;/p&gt;&lt;p&gt;C and C++ put memory management responsibility on the developer. When that responsibility is handled imperfectly, the result can be a buffer overflow, a use-after-free, or a heap corruption bug. The critical word is &quot;when,&quot; not &quot;if.&quot; Two-thirds of reported vulnerabilities in memory-unsafe programming languages still relate to memory issues &lt;a href=&quot;https://www.cisa.gov/case-memory-safe-roadmaps?ref=containous.ghost.io&quot;&gt;(&lt;u&gt;CISA&lt;/u&gt;&lt;/a&gt;), despite decades of investment in tooling, training, and coding standards. Google Project Zero&apos;s review of real-world exploits found that 75% of CVEs used in active attacks were memory safety flaws (&lt;a href=&quot;https://industrialcyber.co/secure-by-design/nsa-cisa-guidance-push-for-adoption-of-memory-safe-languages-in-software-development-to-boost-resilience/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Industrial Cyber&lt;/u&gt;&lt;/a&gt;).  &lt;/p&gt;&lt;p&gt;The pattern is consistent enough that the conclusion is unavoidable: this is not a discipline problem. It is a structural one. These vulnerabilities can be found and patched in any given version. They cannot be designed out of a C or C++ codebase.&lt;/p&gt;&lt;p&gt;The NSA, CISA, the FBI, and allied cybersecurity agencies across the UK, Australia, Canada, and New Zealand looked at that evidence and reached a formal position: the only durable fix is a language-level one. In October 2024,&lt;a href=&quot;https://www.ic3.gov/CSA/2024/241016-2.pdf?ref=containous.ghost.io&quot;&gt; &lt;u&gt;CISA and the FBI attached a deadline&lt;/u&gt;&lt;/a&gt;: publish a memory safety roadmap by the end of 2025 or be in a position described as &quot;dangerous and significantly elevating risk to national security.&quot; &lt;/p&gt;&lt;p&gt;The deadline has since passed. &lt;/p&gt;&lt;p&gt;Among every C and C++ ingress controller on the official Kubernetes documentation page, not one published a roadmap.&lt;/p&gt;&lt;blockquote&gt;Alarmingly, 77% of the self-hosted ingress controllers listed on the official&lt;a href=&quot;https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/?ref=containous.ghost.io&quot;&gt; &lt;u&gt;Kubernetes documentation page&lt;/u&gt;&lt;/a&gt; currently carry C or C++ memory safety exposure with no published remediation roadmap.&lt;/blockquote&gt;&lt;p&gt;Traefik Proxy is written in Go, which is on the&lt;a href=&quot;https://www.cisa.gov/resources-tools/resources/memory-safe-languages-reducing-vulnerabilities-modern-software-development?ref=containous.ghost.io&quot;&gt; &lt;u&gt;NSA and CISA approved memory-safe language list&lt;/u&gt;&lt;/a&gt;. Go&apos;s garbage collector makes use-after-free structurally impossible. Go&apos;s bounds checking makes buffer overflow structurally impossible. These are not mitigations. They are language-level guarantees that remove the vulnerability class from the possibility space entirely. Traefik Proxy has no memory safety debt, and therefore no roadmap to publish.&lt;/p&gt;&lt;p&gt;A migration that lands on a Go-native controller addresses migration risk and security risk in a single motion. A migration that lands on a C or C++ controller defers the memory safety question to the next CVE cycle.&lt;/p&gt;&lt;h2 id=&quot;stagnation-risk&quot;&gt;Stagnation Risk&lt;/h2&gt;&lt;p&gt;Stagnation risk is the risk almost nobody is talking about. It is also the one with the longest tail.&lt;/p&gt;&lt;p&gt;Ingress NGINX retirement is forcing a migration decision today. But the ingress controller is not the destination. It is the first step. &lt;/p&gt;&lt;blockquote&gt;Every organization running Kubernetes at production scale follows a predictable architectural evolution, and the controller chosen today will either support that evolution or constrain it.&lt;/blockquote&gt;&lt;p&gt;Traffic enters through the ingress layer. As application complexity grows, an &lt;strong&gt;API gateway&lt;/strong&gt; becomes necessary to centralize authentication, rate limiting, routing policy, and API lifecycle management. As security requirements mature, &lt;strong&gt;WAF&lt;/strong&gt; capability provides protection against application-layer attacks. As AI workloads arrive, an &lt;strong&gt;AI gateway&lt;/strong&gt; governs token costs, content policy, model routing, and inference guardrails. As agents and agentic systems move into production, an &lt;strong&gt;MCP gateway&lt;/strong&gt; governs which tools agents can call, under what permissions, and according to what policy constraints.&lt;/p&gt;&lt;p&gt;Each of these is a layer of runtime governance. Each one needs to be deployed, configured, and maintained. And here is where stagnation risk becomes concrete: if each layer requires a separate product from a separate vendor on a separate control plane, the operational overhead compounds with every gateway added. If adding WAF capability means ripping out the ingress layer and replacing it with something else, the organization paid the migration cost twice. If the AI gateway requires a different data plane than the API gateway, the security posture of the two layers cannot be governed consistently.&lt;/p&gt;&lt;p&gt;Stagnation risk is the risk of building the governance architecture on a foundation that cannot grow with it.&lt;/p&gt;&lt;p&gt;Traefik addresses stagnation risk through an architecture built specifically for this evolution. Traefik Proxy is the ingress layer. Traefik Hub extends it, through Helm chart upgrades, to &lt;a href=&quot;https://traefik.io/traefik-hub-api-gateway?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;API gateway&lt;/a&gt; with integrated Coraza WAF, to &lt;a href=&quot;https://traefik.io/solutions/ai-gateway?ref=containous.ghost.io&quot;&gt;AI gateway&lt;/a&gt; with NVIDIA safety guardrails and token governance, to &lt;a href=&quot;https://traefik.io/solutions/mcp-gateway?ref=containous.ghost.io&quot;&gt;MCP gateway&lt;/a&gt; with TBAC-based agent access control, and to &lt;a href=&quot;https://traefik.io/solutions/api-management?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;full API management&lt;/a&gt; with GitOps-driven lifecycle management. A single binary. A unified control plane. The Triple Gate Pattern: API Gateway as Gate 1, AI Gateway as Gate 2, MCP Gateway as Gate 3, each adding a layer of runtime governance on the same Go-native, memory-safe foundation.&lt;/p&gt;&lt;p&gt;This means the organization that migrates to Traefik today does not pay a migration cost again when it adds WAF. It does not adopt a new vendor when it needs AI governance. It does not rearchitect the data plane when agents arrive. Each capability is a Helm upgrade on the same foundation. The stagnation risk collapses to near zero because the journey was planned for from the beginning.&lt;/p&gt;&lt;p&gt;The controller chosen today is not just an answer to the migration question. It is the foundation every subsequent decision gets built on. Choosing wrong means paying twice.&lt;/p&gt;&lt;h2 id=&quot;a-further-dimension-for-european-organizations&quot;&gt;A Further Dimension for European Organizations&lt;/h2&gt;&lt;p&gt;For organizations operating in European markets, all three risks carry an additional regulatory layer with hard dates. The &lt;a href=&quot;https://digital-strategy.ec.europa.eu/en/policies/cyber-resilience-act?ref=containous.ghost.io&quot;&gt;&lt;u&gt;EU Cyber Resilience Act&lt;/u&gt;&lt;/a&gt;, which entered into force in December 2024, requires that products with digital elements be designed with security from the outset, with secure practices as a design-phase requirement. Vulnerability reporting obligations become mandatory on &lt;strong&gt;September 11, 2026&lt;/strong&gt;. Full compliance, including the requirement that non-compliant products cannot be sold in the EU market, takes effect on &lt;strong&gt;December 11, 2027&lt;/strong&gt;. An ingress controller sits directly in the path of traffic to products subject to CRA compliance. The language-level security posture of that controller is inside the compliance perimeter. The end of 2025 CISA deadline has passed. The September 2026 CRA reporting deadline is six months away.&lt;/p&gt;&lt;h2 id=&quot;all-three-risks-are-addressable-now-is-the-time&quot;&gt;All Three Risks Are Addressable. Now Is the Time.&lt;/h2&gt;&lt;p&gt;The Ingress NGINX retirement created a forcing function. Teams are doing the work regardless: auditing clusters, mapping configurations, planning cutovers. The operational investment is already in motion.&lt;/p&gt;&lt;p&gt;That investment is the reason now is exactly the right time to address all three risks, not just one. The incremental cost of choosing a Go-native, journey-ready controller over a C or C++ alternative is close to zero at the point where the migration is already running. The long-term cost of not making that choice accumulates with every security advisory, every compliance review, and every governance layer that has to be rebuilt on a foundation that was not designed for it.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Migration risk:&lt;/strong&gt; addressed by the Traefik Ingress NGINX migration tool, the 90%+ annotation coverage of the Ingress NGINX Provider, and the step-by-step migration guide at &lt;a href=&quot;https://ingressnginxmigration.org/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;ingressnginxmigration.org&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Security risk:&lt;/strong&gt; addressed by Traefik Proxy&apos;s Go-native architecture, which eliminates the memory safety vulnerability class by design, with no debt and no roadmap required.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Stagnation risk:&lt;/strong&gt; addressed by Traefik Hub&apos;s unified platform, which extends from ingress to API gateway, WAF, AI gateway, MCP governance, and API management through Helm upgrades on a single binary and a single control plane.&lt;/p&gt;&lt;p&gt;Three risks. One foundation. Now is the right time to address all of them.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Ready to start? Run the open-source migration tool at &lt;/em&gt;&lt;a href=&quot;https://github.com/traefik/ingress-nginx-migration?ref=containous.ghost.io&quot;&gt;&lt;em&gt;&lt;u&gt;github.com/traefik/ingress-nginx-migration&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt; and generate your compatibility report in minutes. For enterprise migrations at scale, Traefik Labs provides dedicated migration support at&lt;/em&gt;&lt;a href=&quot;https://traefik.io/solutions/oss-support?ref=containous.ghost.io&quot;&gt;&lt;em&gt; &lt;u&gt;traefik.io/solutions/oss-support&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-202811305109&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:256.4375px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;202811305109&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLKAm8xJGAkMomgYaKZluN7QRDPC01mGzQimET7S3tC7LPyvBjYGgzapOsNz1gKcvSwp8xPNjFx41yV8oAzf35dceO4Rp6ogur2hp7BpHIIbYxEWoGtj4q8sdeqh7ubpVMylWnUkqdJH2HiKqyRf6lKgPfvboku75hmiSIRHI%2BWHLvj0g9HqdYjYmIqmgjCmSw%3D%3D&amp;webInteractiveContentId=202811305109&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;nginx-fade-v2&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-202811305109.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[OWASP Agentic Top 10: Where Should These Controls Be Enforced?]]></title>
            <description><![CDATA[See our honest overview of how Traefik Hub protects against the OWASP Top 10 for Agentic Applications. ]]></description>
            <link>https://traefik.io/owasp-agentic-top-10-and-traefik-hub</link>
            <guid isPermaLink="true">https://traefik.io/owasp-agentic-top-10-and-traefik-hub</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <category><![CDATA[MCP Gateway]]></category>
            <category><![CDATA[API Gateway]]></category>
            <dc:creator><![CDATA[Zaid Albirawi, Immánuel Fodor]]></dc:creator>
            <pubDate>Wed, 25 Mar 2026 13:55:17 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/03/owasp-ai-top-10-blog-image---no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;protecting against the owasp ai top 10&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/03/owasp-ai-top-10-blog-image---no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/03/owasp-ai-top-10-blog-image---no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/03/owasp-ai-top-10-blog-image---no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/03/owasp-ai-top-10-blog-image---no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The &lt;a href=&quot;https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OWASP Top 10 for Agentic Applications&lt;/u&gt;&lt;/a&gt;, published in December 2025, defines the ten most critical security risks for autonomous AI agents. It is quickly becoming the standard framework enterprise security teams use to evaluate agent governance solutions, and multiple vendors are publishing their coverage maps.&lt;/p&gt;&lt;p&gt;This is useful. The agentic AI space needed a shared vocabulary for risk, and OWASP provided one.&lt;/p&gt;&lt;p&gt;But the framework raises an architectural question that most coverage announcements skip over: where should these controls actually be enforced?&lt;/p&gt;&lt;h3 id=&quot;key-takeaways&quot;&gt;Key Takeaways&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;8 of 10 OWASP Agentic risks describe scenarios where the agent itself is the compromised component. Governance running inside that same process is operating in a compromised environment.&lt;/li&gt;&lt;li&gt;Infrastructure-layer enforcement (at the gateway) works even when the application layer is compromised, because it sits outside the blast radius.&lt;/li&gt;&lt;li&gt;Traefik Hub&apos;s Triple Gate covers 6 of 10 risks with strong gateway-layer enforcement, 2 with moderate coverage, and 2 with partial coverage. We&apos;d rather publish an honest map than claim 10/10 coverage that doesn&apos;t survive architectural scrutiny.&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;the-enforcement-boundary-problem&quot;&gt;The Enforcement Boundary Problem&lt;/h2&gt;&lt;p&gt;Eight of the ten &lt;a href=&quot;https://github.com/OWASP/www-project-top-10-for-large-language-model-applications/tree/main/initiatives/agent_security_initiative?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OWASP Agentic risks&lt;/u&gt;&lt;/a&gt; describe scenarios where the agent itself is the compromised or malfunctioning component. The agent&apos;s goals get hijacked (&lt;a href=&quot;https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;ASI-01&lt;/u&gt;&lt;/a&gt;). The agent misuses its tools (ASI-02). The agent escalates its own privileges (ASI-03). The agent&apos;s memory gets poisoned (ASI-06). The agent goes rogue (ASI-10).&lt;/p&gt;&lt;p&gt;This creates a problem for governance solutions that run inside the agent process. If the agent is hijacked, the governance middleware running in that same process is operating in a compromised environment. If the agent is rogue, application-layer kill switches depend on the rogue process honoring them. A policy engine that runs as an SDK import in the agent&apos;s code can be bypassed by the same exploit that compromised the agent.&lt;/p&gt;&lt;p&gt;The pattern is familiar. It&apos;s the same reason network firewalls exist alongside host-based security. It&apos;s also the same reason API gateways enforce authentication rather than trusting every microservice to check its own tokens. Enforcement at the infrastructure layer works even when the application layer is compromised, because it sits outside the blast radius.&lt;/p&gt;&lt;p&gt;Traefik Hub&apos;s &lt;a href=&quot;https://traefik.io/blog/the-triple-ai-security-gap?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Triple Gate Architecture&lt;/a&gt; (API Gateway, AI Gateway, MCP Gateway with TBAC) operates at the gateway layer. Every agent request, model interaction, and tool invocation passes through these gates regardless of the agent framework, language, or deployment model. The agent cannot modify, disable, or bypass gateway enforcement because the gateway runs in a separate process, in a separate trust boundary, with separate credentials.&lt;/p&gt;&lt;p&gt;This post maps Traefik Hub&apos;s capabilities against each of the ten OWASP Agentic risks, with an honest assessment of where gateway-layer enforcement is strong, where it contributes but doesn&apos;t fully own the risk, and where other layers need to fill the gap.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-209462438701&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;209462438701&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLsK%2BPjml8pLJMI9oMgY6%2BDeGkqNSB1jELHMY%2Bq6uYTcnN%2BaoNdr%2Fv2S2ft5THyaItGV12qsq1QCtU%2Fc4N4WLlf6wbt5GBwxJg%2Bl0twk5rWPRpERaNqbu5407f6uYnzxtjoTuQCKQx7tO1xZKc%2BUZ5GuxQ4%2Btr%2BAXNG4jeuPm%2BF6Q7n%2FJz5xxH%2BIOrpNo0m6fsLRjxEX0gtEkMRBMrg9g%3D%3D&amp;webInteractiveContentId=209462438701&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;7cs-ai-governance-ebook-promo-square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-209462438701.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;asi-01-agent-goal-hijack&quot;&gt;ASI-01: Agent Goal Hijack&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Risk:&lt;/strong&gt; Adversary manipulates agent objectives through prompt injection, context manipulation, or goal drift.&lt;/p&gt;&lt;p&gt;This is where &lt;a href=&quot;https://traefik.io/blog/building-multi-vendor-ai-safety-pipelines?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;the composable safety pipeline&lt;/a&gt; earns its keep. The AI Gateway inspects every prompt on the wire, both inbound (user requests) and outbound (model responses), through four guard tiers running in parallel.&lt;/p&gt;&lt;p&gt;Tier 1 (Regex Guard) catches known prompt injection signatures deterministically:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;request:
  - jsonQueries:
      - &quot;.messages[].content&quot;
      - &quot;.prompt&quot;
    block: true
    reason: &quot;prompt_injection_detected&quot;
    entities:
      - &quot;(?i)ignore.*(previous|above|prior).*(instructions|prompt)&quot;
      - &quot;(?i)you are now.*(new|different|unrestricted)&quot;
      - &quot;(?i)disregard.*(all|any).*(rules|guidelines|policies)&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Sub-millisecond, zero external dependencies, deterministic. This catches the common patterns.&lt;/p&gt;&lt;p&gt;Tier 3 (NVIDIA Safety NIMs) catches the uncommon ones. Jailbreak Detection NIM identifies prompt manipulation attempts that don&apos;t use obvious keywords. Topic Control NIM enforces conversation boundaries based on guideline prompts. These run on GPU and take 30-200ms per NIM, but with parallel execution, the total time equals the slowest guard, not the sum. For the full four-tier pipeline architecture, see &lt;a href=&quot;https://traefik.io/blog/building-multi-vendor-ai-safety-pipelines?ref=containous.ghost.io&quot;&gt;&lt;u&gt;From Regex to GPU: Building a Multi-Vendor AI Safety Pipeline&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Why gateway-layer matters here:&lt;/strong&gt; A compromised agent cannot disable the gateway&apos;s prompt inspection. Application-layer policy checks run inside the same process the attacker is trying to hijack. The gateway inspects the actual payload on the wire, not a representation the agent chooses to expose.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Gap:&lt;/strong&gt; No behavioral drift detection over time (detecting gradual goal shift across a multi-turn conversation). Each request is inspected independently.&lt;/p&gt;&lt;h2 id=&quot;asi-02-tool-misuse-exploitation&quot;&gt;ASI-02: Tool Misuse &amp;amp; Exploitation&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Risk:&lt;/strong&gt; Agent invokes tools beyond intended scope, with unauthorized parameters, or for unintended purposes.&lt;/p&gt;&lt;p&gt;This is where TBAC (Tools/Tasks/Transactions-Based Access Control) operates. The &lt;a href=&quot;https://traefik.io/solutions/mcp-gateway?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;MCP Gateway&lt;/a&gt; enforces tool authorization before the request reaches the tool server.&lt;/p&gt;&lt;p&gt;TBAC provides three dimensions of control:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Tools:&lt;/strong&gt; Which specific MCP tools each agent can invoke based on their identity.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Tasks:&lt;/strong&gt; Which workflows or sequence of tool calls are allowed.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Transactions:&lt;/strong&gt; Parameter-level constraints and validation per tool call.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Rate limiting per tool prevents abuse through rapid repeated invocations. Human-in-the-loop approval flows gate high-risk tool calls on explicit human confirmation before execution. Every tool invocation is logged with full identity, parameters, outcome, and timestamp.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Why gateway-layer matters here:&lt;/strong&gt; TBAC enforces tool authorization at the infrastructure layer, not inside the agent&apos;s application code. A capability model defined in application code can be bypassed if the agent is compromised or if a developer misconfigures the SDK. TBAC cannot be bypassed because the MCP Gateway terminates the connection before the tool server receives it. The agent never talks directly to the tool; it talks to the gateway, which decides whether to forward the request.&lt;/p&gt;&lt;p&gt;This is the control we think matters most in the agentic era, and it only works at the infrastructure layer.&lt;/p&gt;&lt;h2 id=&quot;asi-03-identity-privilege-abuse&quot;&gt;ASI-03: Identity &amp;amp; Privilege Abuse&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Risk:&lt;/strong&gt; Agents operate with excessive permissions, impersonate users, or escalate privileges.&lt;/p&gt;&lt;p&gt;JWT identity propagation flows through all three gates. The same identity context that governs API authentication (Gate 1) also governs token budgets (Gate 2) and tool permissions (Gate 3). There are no identity gaps between layers.&lt;/p&gt;&lt;p&gt;Identity can be managed per-user, per-team, and per-API-key enforcement via JWT claims. For fine-grained per-user rate/token/tool limiting, a JWT middleware extracts claims into headers via &lt;code&gt;forwardHeaders&lt;/code&gt;, and Traefik middlewares will enforce limiting based on those headers.&lt;/p&gt;
&lt;p&gt;TBAC restricts each agent identity to only the tools required for its task. No ambient authority. An agent authorized for &lt;code&gt;read_database&lt;/code&gt; cannot invoke &lt;code&gt;write_database&lt;/code&gt; even if the MCP server exposes both tools.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why gateway-layer matters here:&lt;/strong&gt; Identity verification at the gateway happens before the agent processes the request. Application-layer identity checks depend on the agent framework correctly extracting and honoring identity, which means the agent must be trusted to enforce its own permissions. The gateway enforces identity regardless of whether the agent is trustworthy.&lt;/p&gt;&lt;h2 id=&quot;asi-04-supply-chain-vulnerabilities&quot;&gt;ASI-04: Supply Chain Vulnerabilities&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Risk:&lt;/strong&gt; Compromised agent components, untrusted plugins, tampered models or tool definitions.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Honest assessment: partial coverage.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;What the gateway provides today:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Air-gapped deployment.&lt;/strong&gt; The full Traefik Hub stack runs without external dependencies, eliminating runtime supply chain exposure.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;FIPS 140-2 validated, FIPS 140-3 ready.&lt;/strong&gt; Cryptographic supply chain validated via native Go BoringCrypto module. No external crypto libraries.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Multi-vendor safety pipeline.&lt;/strong&gt; Each guard tier comes from an independent vendor (custom regex, Microsoft Presidio, NVIDIA, IBM). Compromising one vendor&apos;s component doesn&apos;t compromise the pipeline.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;What the gateway does not provide today: MCP server integrity verification (hash validation of tool definitions), plugin signing, or tamper detection at the gateway layer.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Architectural note:&lt;/strong&gt; Supply chain integrity for agent internals (application modules, model weights) is inherently a build-pipeline concern, not a gateway concern. The gateway can verify what passes through it, but it cannot verify the internal integrity of components it doesn&apos;t serve. MCP server manifest verification (SHA-256 hashing of tool definitions at the gateway) is on our roadmap for Q2 2026. Build-pipeline integrity (Sigstore, SBOM generation, container image scanning) is complementary and should be addressed at the CI/CD layer.&lt;/p&gt;&lt;h2 id=&quot;asi-05-unexpected-code-execution&quot;&gt;ASI-05: Unexpected Code Execution&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Risk:&lt;/strong&gt; Agents generate and execute code without proper sandboxing or validation.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Assessment: partial coverage.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The gateway provides prevention, not containment. TBAC can prevent an agent from accessing code execution tools entirely. If an agent identity isn&apos;t authorized to invoke a &lt;code&gt;run_code&lt;/code&gt; tool, the MCP Gateway blocks the request before it reaches the tool server. Parameter validation can constrain what the agent passes to tools that do execute code.&lt;/p&gt;
&lt;p&gt;The gateway cannot sandbox execution that happens inside a tool&apos;s runtime. If an agent has authorized access to a code execution tool, the gateway doesn&apos;t inspect or contain what happens inside that tool after the request is forwarded.&lt;/p&gt;
&lt;p&gt;Prevention is the stronger control for most deployments: a tool that cannot be invoked cannot produce unexpected execution. But containment matters too, and it&apos;s better addressed by container security contexts, language-level sandboxes (like LangChain&apos;s sandboxed code execution), or Kubernetes security policies.&lt;/p&gt;
&lt;h2 id=&quot;asi-06-memory-context-poisoning&quot;&gt;ASI-06: Memory &amp;amp; Context Poisoning&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Risk:&lt;/strong&gt; Adversary corrupts agent memory, conversation history, or RAG context to influence behavior.&lt;/p&gt;&lt;p&gt;Tier 4 (IBM Granite Guardian) provides two capabilities that no other guard tier offers: hallucination detection and RAG quality assessment. The hallucination detection configuration inspects responses using the request history as context:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;response:
  systemPrompt: &quot;hallucination&quot;
  useRequestHistory: true
  blockConditions:
    - reason: hallucination_detected
      condition: Contains(&quot;yes&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When &lt;code&gt;useRequestHistory&lt;/code&gt; is set, the guard evaluates whether the model&apos;s response is grounded in the context that was provided. If the model generates claims not supported by the retrieved documents, the guard blocks the response before it enters the agent&apos;s memory.&lt;/p&gt;
&lt;p&gt;Regex Guard (Tier 1: deterministic pattern matching against known injection signatures) catches known poisoning patterns in both requests and responses. NVIDIA NIMs (Tier 3: GPU-based semantic analysis) catch semantically poisoned content that doesn&apos;t match pattern rules. For a full walkthrough of all four tiers and how they compose, see&lt;a href=&quot;https://traefik.io/blog/building-multi-vendor-ai-safety-pipelines?ref=containous.ghost.io&quot;&gt; &lt;u&gt;From Regex to GPU: Building a Multi-Vendor AI Safety Pipeline&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Why gateway-layer matters here:&lt;/strong&gt; The gateway inspects the model&apos;s actual response before the agent processes it. Application-layer memory integrity checks run after the potentially poisoned content has already entered the agent&apos;s context window. The gateway catches poisoning at the wire, not after ingestion.&lt;/p&gt;&lt;h2 id=&quot;asi-07-insecure-inter-agent-communication&quot;&gt;ASI-07: Insecure Inter-Agent Communication&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Risk:&lt;/strong&gt; Agent-to-agent messages lack authentication, encryption, or trust verification.&lt;/p&gt;&lt;p&gt;The MCP Gateway is the communication channel. Every agent-to-tool call passes through it. The gateway terminates the inbound connection, verifies the agent&apos;s identity via JWT, applies TBAC policies, and opens a new authenticated connection to the tool server. TLS secures both legs.&lt;/p&gt;&lt;p&gt;You cannot have insecure inter-agent communication when every message passes through an authenticated, encrypted, audited gateway. Application-layer encrypted channels between agents require each agent to correctly implement and maintain encryption, which is a much larger attack surface.&lt;/p&gt;&lt;p&gt;The complete audit trail captures every inter-agent interaction with full identity, tool, parameter, and outcome detail. Traefik also supports request mirroring, which forwards live traffic to an external tool or analysis service in parallel with the primary flow. This enables real-time threat detection and behavioral monitoring alongside the forensic record. Together, these address both prevention (authentication, encryption) and detection (live analysis and forensic audit).&lt;/p&gt;&lt;h2 id=&quot;asi-08-cascading-failures&quot;&gt;ASI-08: Cascading Failures&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Risk:&lt;/strong&gt; One agent&apos;s failure propagates through multi-agent systems causing systemic breakdown.&lt;/p&gt;&lt;p&gt;The gateway is the natural circuit breaker between systems. Three capabilities address this:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Failover Router&lt;/strong&gt; builds circuit breaker chains across LLM providers; When a primary backend responds with a configured error (429, 500-504), the request replays to a fallback with independent model selection, API keys, and metrics. All safety policies continue to apply on every fallback. Governance doesn&apos;t degrade when the model does.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Graceful error handling&lt;/strong&gt; via &lt;code&gt;onDenyResponse&lt;/code&gt; returns structured HTTP 200 refusals instead of HTTP 403 errors. Agents parse refusals as valid conversation turns and continue operating. Without this, a single guardrail block crashes an entire multi-step workflow.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Token rate limiting&lt;/strong&gt; with proactive estimation blocks over-budget requests before they reach the LLM. This prevents resource exhaustion cascades where one agent&apos;s runaway consumption starves others of capacity.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Why gateway-layer matters here&lt;/strong&gt;: Application-layer circuit breakers fail when the application itself is failing. An agent that is crashing cannot reliably execute its own failure handling logic. The gateway operates outside the failing system.&lt;/p&gt;
&lt;h2 id=&quot;asi-09-human-agent-trust-exploitation&quot;&gt;ASI-09: Human-Agent Trust Exploitation&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Risk:&lt;/strong&gt; Agent manipulates human operators through social engineering or trust exploitation.&lt;/p&gt;&lt;p&gt;Content safety filtering through NVIDIA NIMs (22+ safety categories) filters manipulative, deceptive, or harmful content in model responses before they reach users. IBM Granite Guardian catches factually incorrect claims (hallucinations) the agent might use to mislead operators. Human-in-the-loop approval flows via TBAC require explicit human confirmation for sensitive operations.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Assessment: moderate coverage.&lt;/strong&gt; The gateway filters manipulative content and gates sensitive actions, but it cannot fully prevent subtle social engineering within otherwise legitimate conversation. This risk also requires organizational controls (training, escalation procedures) and application-layer UX design (clear agent identity disclosure, confidence indicators).&lt;/p&gt;&lt;h2 id=&quot;asi-10-rogue-agents&quot;&gt;ASI-10: Rogue Agents&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Risk:&lt;/strong&gt; Agents behave in unintended, uncontrollable, or malicious ways outside governance.&lt;/p&gt;&lt;p&gt;Token rate limiting and quota enforcement set hard ceilings on agent resource consumption. Proactive estimation blocks over-budget requests before GPU cost is incurred. TBAC restricts the blast radius to authorized tools only, so even a rogue agent can only reach the tools it was explicitly granted access to. Per-agent rate limiting prevents runaway request loops.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Assessment: moderate coverage.&lt;/strong&gt; The gateway provides containment ceilings but not real-time behavioral detection. There is no behavioral anomaly detection today: no baseline modeling of normal invocation patterns, no deviation alerting, no agent kill switch. The data for anomaly detection is already being collected in the audit trail; the analysis layer is the gap. Whether that analysis belongs at the gateway layer or in a dedicated observability platform is an open architectural question. What the gateway provides today is the data collection infrastructure that either approach would require.&lt;/p&gt;&lt;h2 id=&quot;coverage-breadth-vs-enforcement-depth&quot;&gt;Coverage Breadth vs. Enforcement Depth&lt;/h2&gt;&lt;p&gt;The OWASP Agentic Top 10 is a useful framework. But evaluating governance solutions purely on how many of the ten risks they &quot;cover&quot; misses the more important question: how deeply and reliably is that coverage enforced?&lt;/p&gt;&lt;p&gt;A governance system that checks all ten boxes from inside the agent process provides broad coverage in a narrow trust boundary. A governance system that enforces eight of ten risks from outside the agent&apos;s trust boundary provides deep, bypass-resistant coverage on the risks that matter most.&lt;/p&gt;&lt;p&gt;The right architecture uses both layers:&lt;/p&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Layer&lt;/th&gt;
&lt;th&gt;What It Governs&lt;/th&gt;
&lt;th&gt;Examples&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Infrastructure (Gateway)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Identity, tool authorization, content safety, traffic resilience, audit&lt;/td&gt;
&lt;td&gt;Traefik Hub (API + AI + MCP Gateway)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Application (Agent Framework)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Agent logic, memory management, code sandboxing, behavioral policies&lt;/td&gt;
&lt;td&gt;LangChain, CrewAI, Semantic Kernel&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Platform (Kubernetes/OS)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Container isolation, network policies, resource limits&lt;/td&gt;
&lt;td&gt;Security contexts, gVisor, network policies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Pipeline (CI/CD)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Supply chain integrity, model provenance, image scanning&lt;/td&gt;
&lt;td&gt;Sigstore, SBOM, container scanning&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;No single layer covers all ten risks alone. But the infrastructure layer is the one that works even when the application layer is compromised. For organizations also adopting &lt;a href=&quot;https://www.forrester.com/blogs/introducing-aegis-the-guardrails-cisos-need-for-the-agentic-enterprise/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Forrester&apos;s AEGIS framework&lt;/u&gt;&lt;/a&gt;, we published a companion post mapping AEGIS&apos;s six domains to infrastructure-layer enforcement.&lt;/p&gt;&lt;h2 id=&quot;our-coverage-map&quot;&gt;Our Coverage Map&lt;/h2&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;OWASP Risk&lt;/th&gt;
&lt;th&gt;Gateway Coverage&lt;/th&gt;
&lt;th&gt;What Gateway Provides&lt;/th&gt;
&lt;th&gt;What Other Layers Add&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;ASI-01: Goal Hijack&lt;/td&gt;
&lt;td&gt;Strong&lt;/td&gt;
&lt;td&gt;4-tier safety pipeline, parallel execution&lt;/td&gt;
&lt;td&gt;Behavioral drift detection (app-layer)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ASI-02: Tool Misuse&lt;/td&gt;
&lt;td&gt;Best-in-class&lt;/td&gt;
&lt;td&gt;TBAC: tool auth, parameters, rate limits, human-in-loop&lt;/td&gt;
&lt;td&gt;Framework-level tool selection (app-layer)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ASI-03: Identity Abuse&lt;/td&gt;
&lt;td&gt;Strong&lt;/td&gt;
&lt;td&gt;JWT propagation, per-user/team enforcement, least-privilege&lt;/td&gt;
&lt;td&gt;IAM integration (platform-layer)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ASI-04: Supply Chain&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;Air-gapped deployment, FIPS crypto, multi-vendor guards&lt;/td&gt;
&lt;td&gt;SBOM, image scanning, model provenance (pipeline-layer)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ASI-05: Code Execution&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;td&gt;Tool access prevention via TBAC&lt;/td&gt;
&lt;td&gt;Execution sandboxing (platform-layer)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ASI-06: Memory Poisoning&lt;/td&gt;
&lt;td&gt;Strong&lt;/td&gt;
&lt;td&gt;Hallucination detection, RAG quality, bidirectional inspection&lt;/td&gt;
&lt;td&gt;Memory management policies (app-layer)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ASI-07: Inter-Agent Comms&lt;/td&gt;
&lt;td&gt;Strong&lt;/td&gt;
&lt;td&gt;MCP Gateway, mTLS, authenticated channels, audit&lt;/td&gt;
&lt;td&gt;N/A (gateway is the channel)&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ASI-08: Cascading Failures&lt;/td&gt;
&lt;td&gt;Strong&lt;/td&gt;
&lt;td&gt;Failover Router, circuit breakers, graceful errors, token limits&lt;/td&gt;
&lt;td&gt;Application-layer retry policies&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ASI-09: Trust Exploitation&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;Content safety filtering, human-in-loop, audit&lt;/td&gt;
&lt;td&gt;UX design, organizational controls&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;ASI-10: Rogue Agents&lt;/td&gt;
&lt;td&gt;Moderate&lt;/td&gt;
&lt;td&gt;Token ceilings, tool blast radius limits, rate limiting&lt;/td&gt;
&lt;td&gt;Behavioral anomaly detection (roadmap)&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Six strong, two moderate, two partial. We&apos;d rather publish an honest map than claim ten out of ten coverage that doesn&apos;t survive architectural scrutiny.&lt;/p&gt;&lt;h2 id=&quot;whats-next&quot;&gt;What&apos;s Next&lt;/h2&gt;&lt;p&gt;The OWASP Agentic Top 10 mapping detailed in this post reflects Traefik Hub v3.20 capabilities as of March 2026. The composable safety pipeline, TBAC, Failover Router, token rate limiting, and graceful error handling are all available in Early Access today, with general availability planned for late April 2026.&lt;/p&gt;&lt;p&gt;We encourage organizations evaluating agent governance to ask every vendor not just which risks they cover, but where their controls are enforced and what happens when the agent itself is the thing that&apos;s compromised.&lt;/p&gt;&lt;p&gt;For a complementary framework-level perspective, see our mapping of &lt;a href=&quot;about:blank&quot;&gt;&lt;u&gt;Forrester&apos;s AEGIS framework to infrastructure-layer enforcement&lt;/u&gt;&lt;/a&gt;. And for a deep technical walkthrough of the composable safety pipeline referenced throughout this post, see &lt;a href=&quot;about:blank&quot;&gt;&lt;u&gt;From Regex to GPU: Building a Multi-Vendor AI Safety Pipeline&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Traefik Hub v3.20 is available as an Early Access release. To try the composable safety pipeline and the other features covered in this post, &lt;a href=&quot;https://info.traefik.io/request-early-access?ref=containous.ghost.io&quot;&gt;&lt;u&gt;sign up for Early Access&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;h2 id=&quot;frequently-asked-questions&quot;&gt;Frequently Asked Questions&lt;/h2&gt;&lt;h3 id=&quot;what-is-the-owasp-top-10-for-agentic-applications&quot;&gt;What is the OWASP Top 10 for Agentic Applications? &lt;/h3&gt;&lt;p&gt;The &lt;a href=&quot;https://genai.owasp.org/resource/owasp-top-10-for-agentic-applications-for-2026/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OWASP Top 10 for Agentic Applications&lt;/u&gt;&lt;/a&gt; is a risk taxonomy published in December 2025 that identifies the ten most critical security risks for autonomous AI agents. The risks range from agent goal hijacking (ASI-01) and tool misuse (ASI-02) to cascading failures (ASI-08) and rogue agents (ASI-10). It is maintained by the &lt;a href=&quot;https://github.com/OWASP/www-project-top-10-for-large-language-model-applications/tree/main/initiatives/agent_security_initiative?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OWASP GenAI Security Project&lt;/u&gt;&lt;/a&gt; and is becoming the standard framework for evaluating AI agent governance solutions.&lt;/p&gt;&lt;h3 id=&quot;what-is-the-difference-between-application-layer-and-infrastructure-layer-ai-agent-governance&quot;&gt;What is the difference between application-layer and infrastructure-layer AI agent governance? &lt;/h3&gt;&lt;p&gt;Application-layer governance runs inside the agent process (as an SDK, middleware library, or framework plugin) and governs the agent&apos;s logic. Infrastructure-layer governance runs at the network gateway, outside the agent&apos;s trust boundary, and governs the traffic. The key distinction: if the agent is compromised through prompt injection, jailbreak, or privilege escalation, application-layer governance is compromised with it. Infrastructure-layer governance continues to enforce because it runs in a separate process with separate credentials.&lt;/p&gt;&lt;h3 id=&quot;what-is-tbac-toolstaskstransactions-based-access-control&quot;&gt;What is TBAC (Tools/Tasks/Transactions-Based Access Control)? &lt;/h3&gt;&lt;p&gt;TBAC is Traefik Hub&apos;s access control model for AI agents, enforced at the MCP Gateway. It provides three dimensions of control: which tools an agent can invoke, which tasks (workflows) it can perform, and what transaction parameters are permitted. TBAC operates at the infrastructure layer, meaning the agent runtime cannot modify, bypass, or disable these controls.&lt;/p&gt;&lt;h3 id=&quot;how-does-the-owasp-agentic-top-10-relate-to-forresters-aegis-framework&quot;&gt;How does the OWASP Agentic Top 10 relate to Forrester&apos;s AEGIS framework? &lt;/h3&gt;&lt;p&gt;The OWASP Agentic Top 10 is a risk taxonomy (what can go wrong). &lt;a href=&quot;https://www.forrester.com/blogs/introducing-aegis-the-guardrails-cisos-need-for-the-agentic-enterprise/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Forrester&apos;s AEGIS framework&lt;/u&gt;&lt;/a&gt; is a governance framework (what controls to implement). They are complementary: OWASP identifies the risks, AEGIS defines the organizational and technical controls to mitigate them. Both map to infrastructure-layer enforcement. See our &lt;a href=&quot;about:blank&quot;&gt;&lt;u&gt;AEGIS framework mapping&lt;/u&gt;&lt;/a&gt; for the governance-framework perspective.&lt;/p&gt;&lt;h3 id=&quot;can-any-single-product-cover-all-10-owasp-agentic-risks&quot;&gt;Can any single product cover all 10 OWASP Agentic risks? &lt;/h3&gt;&lt;p&gt;No. The ten risks span multiple enforcement layers: infrastructure (gateway), application (agent framework), platform (Kubernetes/OS), and pipeline (CI/CD). A governance system that claims 10/10 coverage from a single layer is either defining &quot;coverage&quot; loosely or operating within a narrow trust boundary. The right architecture uses defense-in-depth, with the infrastructure layer providing the controls that work even when the application layer is compromised.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-209462438701&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;209462438701&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLsK%2BPjml8pLJMI9oMgY6%2BDeGkqNSB1jELHMY%2Bq6uYTcnN%2BaoNdr%2Fv2S2ft5THyaItGV12qsq1QCtU%2Fc4N4WLlf6wbt5GBwxJg%2Bl0twk5rWPRpERaNqbu5407f6uYnzxtjoTuQCKQx7tO1xZKc%2BUZ5GuxQ4%2Btr%2BAXNG4jeuPm%2BF6Q7n%2FJz5xxH%2BIOrpNo0m6fsLRjxEX0gtEkMRBMrg9g%3D%3D&amp;webInteractiveContentId=209462438701&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;7cs-ai-governance-ebook-promo-square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-209462438701.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[When Every File is an Attack Vector: Why Agent Governance Must Live Outside the Runtime]]></title>
            <description><![CDATA[The LiteLLM supply chain compromise is a great example of what can happen when agent governance is implemented in the runtime layer. Here's how to solve that. ]]></description>
            <link>https://traefik.io/litellm-and-why-agent-governance-must-live-outside-the-runtime</link>
            <guid isPermaLink="true">https://traefik.io/litellm-and-why-agent-governance-must-live-outside-the-runtime</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[MCP Gateway]]></category>
            <dc:creator><![CDATA[Immánuel Fodor]]></dc:creator>
            <pubDate>Wed, 25 Mar 2026 12:25:09 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/03/litellm-blog-image-no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/03/litellm-blog-image-no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/03/litellm-blog-image-no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/03/litellm-blog-image-no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/03/litellm-blog-image-no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The &lt;a href=&quot;https://github.com/BerriAI/litellm/issues/24518?ref=containous.ghost.io&quot;&gt;&lt;u&gt;LiteLLM supply chain compromise&lt;/u&gt;&lt;/a&gt; on March 24 was a pip package that stole credentials, such as SSH keys, cloud provider credentials, Kubernetes configs, database passwords, and API keys. That is a serious incident, and the architectural lessons it exposed are significant. But the harder conversation is about what comes next.&lt;/p&gt;&lt;p&gt;AI agents in 2026 do not just call APIs. They read your filesystem. They process your documents, configs, and code. They maintain persistent memory across sessions. They spawn sub-agents. They act on your behalf at machine speed, often without a human reviewing each step.&lt;/p&gt;&lt;p&gt;The LiteLLM attack exploited the Python package supply chain. The next class of attacks will exploit something far larger: the entire input surface of the agent itself.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-209462438701&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;209462438701&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLsK%2BPjml8pLJMI9oMgY6%2BDeGkqNSB1jELHMY%2Bq6uYTcnN%2BaoNdr%2Fv2S2ft5THyaItGV12qsq1QCtU%2Fc4N4WLlf6wbt5GBwxJg%2Bl0twk5rWPRpERaNqbu5407f6uYnzxtjoTuQCKQx7tO1xZKc%2BUZ5GuxQ4%2Btr%2BAXNG4jeuPm%2BF6Q7n%2FJz5xxH%2BIOrpNo0m6fsLRjxEX0gtEkMRBMrg9g%3D%3D&amp;webInteractiveContentId=209462438701&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;7cs-ai-governance-ebook-promo-square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-209462438701.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;your-filesystem-is-the-new-codebase&quot;&gt;Your Filesystem Is the New Codebase&lt;/h2&gt;&lt;p&gt;When a coding agent operates with filesystem access, every file it reads becomes a potential instruction. A poisoned PDF in a shared folder can carry hidden prompt injections. A modified .env file can redirect agent behavior. A malicious markdown document in a project directory can instruct an agent to exfiltrate data, modify code, or propagate itself to other files the agent touches.&lt;/p&gt;&lt;p&gt;This is not theoretical. &lt;a href=&quot;https://techcommunity.microsoft.com/blog/marketplace-blog/securing-ai-agents-the-enterprise-security-playbook-for-the-agentic-era/4503627?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Microsoft&apos;s security team has documented&lt;/u&gt;&lt;/a&gt; how indirect prompt injection works in practice: an attacker never talks to the agent directly. Instead, they poison the data sources the agent reads. When the agent retrieves that content through tool calls (emails, documents, support tickets, web pages, database entries), the malicious instructions ride along, invisible to human reviewers, fully legible to the model.&lt;/p&gt;&lt;p&gt;The structural problem is that LLMs process instructions and data as tokens in the same context window. The agent cannot reliably distinguish between a system prompt from its operator and an instruction embedded in a document it just ingested. As researchers in the &lt;a href=&quot;https://www.kiteworks.com/cybersecurity-risk-management/ai-agent-security-data-layer-governance/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;&quot;Agents of Chaos&quot; study&lt;/u&gt;&lt;/a&gt; (MIT, Harvard, Stanford, CMU) put it: prompt injection is a structural feature, not a fixable bug.&lt;/p&gt;&lt;p&gt;In a vibe coding workflow, where developers describe intent in natural language and agents generate entire applications, this surface expands further. The agent reads project files, configs, dependencies, and documentation as context for its work. Every one of those files is now part of the instruction set. Every text file can carry a payload. The attack surface is not the chat interface. It is the entire data environment.&lt;/p&gt;&lt;h2 id=&quot;vibe-coding-accelerates-the-problem&quot;&gt;Vibe Coding Accelerates the Problem&lt;/h2&gt;&lt;p&gt;The rise of vibe coding has made this structural vulnerability operationally urgent.&lt;/p&gt;&lt;p&gt;A &lt;a href=&quot;https://en.wikipedia.org/wiki/Vibe_coding?ref=containous.ghost.io&quot;&gt;&lt;u&gt;CodeRabbit analysis&lt;/u&gt;&lt;/a&gt; of 470 open-source GitHub pull requests found that AI co-authored code contained 2.74x more security vulnerabilities than human-written code, along with 75% more misconfigurations. &lt;a href=&quot;https://checkmarx.com/blog/security-in-vibe-coding/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Veracode&apos;s GenAI Code Security Report&lt;/u&gt;&lt;/a&gt; found that 45% of AI-generated code introduces security vulnerabilities. These are not edge cases. They are base rates.&lt;/p&gt;&lt;p&gt;The Moltbook incident in February 2026 demonstrated the consequences. The AI-agent social network was built entirely through vibe coding, with no human-written code. &lt;a href=&quot;https://www.icaew.com/insights/viewpoints-on-the-news/2026/feb-2026/cyber-dangers-of-agents-and-vibe-coding?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Wiz discovered a misconfigured Supabase database&lt;/u&gt;&lt;/a&gt; exposing 1.5 million authentication tokens and 35,000 email addresses to the public internet. The root cause was not a sophisticated attack. It was the absence of a security review in a process optimized for speed.&lt;/p&gt;&lt;p&gt;There is a pattern here. Coding agents optimize for making code run, not making code safe. &lt;a href=&quot;https://towardsdatascience.com/the-reality-of-vibe-coding-ai-agents-and-the-security-debt-crisis/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Research from Columbia University&lt;/u&gt;&lt;/a&gt; documented how agents routinely remove validation checks, relax database policies, and disable authentication flows to resolve runtime errors. The constraint causing the error is sometimes the security guard, and the agent removes it to satisfy the prompt.&lt;/p&gt;&lt;p&gt;When agents generate code at this velocity and with these failure modes, treating the agent&apos;s runtime as a trusted environment becomes untenable. The code it writes may be insecure. The files it reads may be poisoned. The dependencies it pulls may be compromised (as &lt;a href=&quot;https://futuresearch.ai/blog/litellm-pypi-supply-chain-attack/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;LiteLLM demonstrated&lt;/u&gt;&lt;/a&gt;). Every layer of the agent&apos;s input and output is potentially adversarial.&lt;/p&gt;&lt;h2 id=&quot;the-impersonation-problem&quot;&gt;The Impersonation Problem&lt;/h2&gt;&lt;p&gt;There is a dimension to this that goes beyond credential theft.&lt;/p&gt;&lt;p&gt;An AI agent with access to your filesystem, communication history, code repositories, and working documents has enough context to impersonate you. Not in the crude phishing sense of faking an email header, but in the deeper sense of replicating your communication patterns, decision-making style, and domain knowledge across every platform you use.&lt;/p&gt;&lt;p&gt;A compromised agent does not just steal your credentials. It becomes a distorted version of your digital identity, capable of acting on your accounts, writing in your voice, and making decisions that appear to be yours. The persistent memory that makes agents useful (remembering your preferences, your projects, your colleagues) is the same memory that makes compromise catastrophic. The agent knows enough to be you, and it operates faster than you can intervene.&lt;/p&gt;&lt;p&gt;This is why agent authorization cannot be implemented in the agent&apos;s runtime. If the runtime is compromised, every control embedded in it, including identity verification, access policies, and behavioral guardrails, is compromised with it.&lt;/p&gt;&lt;h2 id=&quot;claws-need-shells&quot;&gt;Claws Need Shells&lt;/h2&gt;&lt;p&gt;The security community is converging on a principle that infrastructure engineers have understood for decades: enforcement must be independent of the thing being enforced.&lt;/p&gt;&lt;p&gt;A firewall does not run inside the application it protects. A network policy does not depend on the container it restricts. In the same way, agent governance cannot live inside the agent runtime. The runtime is what gets compromised, whether through supply-chain attacks (LiteLLM), poisoned context (indirect prompt injection), or insecure generated code (vibe coding failures). Controls that depend on the integrity of that runtime are not controls. They are assumptions.&lt;/p&gt;&lt;p&gt;Defense in depth for AI agents requires multiple independent enforcement layers, each operating in its own trust boundary:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;At the API layer:&lt;/strong&gt; Rate limiting, authentication, and data loss prevention detect anomalous behavior at the network edge. An agent suddenly exfiltrating credential files to an unfamiliar domain triggers enforcement that the agent itself cannot disable.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;At the AI interaction layer:&lt;/strong&gt; Content safety, prompt defense, and PII filtering govern what goes into and comes out of the LLM. These controls run at the infrastructure layer, outside the application process, so they remain intact even when the runtime is compromised.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;At the tool access layer:&lt;/strong&gt; Task-scoped, tool-level authorization ensures that a compromised agent cannot pivot laterally to systems beyond its permitted scope. Authorization is cryptographically attested by an identity provider and enforced at the gateway, not granted by application code that the agent controls.&lt;/p&gt;&lt;p&gt;The critical property is independence. Each layer operates in its own trust boundary. Compromising the agent&apos;s runtime (through a poisoned file, a malicious dependency, or a prompt injection) does not disable enforcement at the other layers. This is what separates architecture from aspiration.&lt;/p&gt;&lt;h2 id=&quot;the-governance-gap-will-not-close-itself&quot;&gt;The Governance Gap Will Not Close Itself&lt;/h2&gt;&lt;p&gt;The data on this is stark. According to &lt;a href=&quot;https://www.okta.com/newsroom/articles/ai-at-work-2025--securing-the-ai-powered-workforce/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Okta&apos;s AI at Work report&lt;/u&gt;&lt;/a&gt;, 91% of organizations are already deploying AI agents, yet only 10% have a well-developed strategy for managing non-human identities. The &lt;a href=&quot;https://www.crowdstrike.com/en-us/global-threat-report/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;CrowdStrike 2026 Global Threat Report&lt;/u&gt;&lt;/a&gt; documented an 89% year-over-year increase in AI-enabled adversary attacks, with average breakout time falling to just 29 minutes and the fastest observed breakout occurring in 27 seconds. In one intrusion, data exfiltration began within four minutes of initial access.&lt;/p&gt;&lt;p&gt;A &lt;a href=&quot;https://www.kiteworks.com/cybersecurity-risk-management/agentic-ai-attack-surface-enterprise-security-2026/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Dark Reading poll&lt;/u&gt;&lt;/a&gt; found that 48% of cybersecurity professionals now identify agentic AI as the top attack vector heading into 2026, outranking deepfakes, board-level cyber recognition, and passwordless adoption.&lt;/p&gt;&lt;p&gt;Application-level controls are necessary but insufficient. When the agent&apos;s runtime is the attack surface (not just the network or the endpoint, but the code, the context window, and the filesystem), governance must operate at a layer the agent cannot reach. That means infrastructure-layer enforcement: independent of the agent framework, below the application, governing every API call, LLM interaction, and tool invocation as it crosses the network.&lt;/p&gt;&lt;h2 id=&quot;three-questions-every-team-should-ask&quot;&gt;Three Questions Every Team Should Ask&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;If a poisoned file entered your agent&apos;s context window, which controls would survive?&lt;/strong&gt; If every guardrail runs inside the same runtime that processes the file, the answer may be none.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Can your agent disable its own governance?&lt;/strong&gt; If access control, content safety, and tool authorization are implemented as libraries in the agent&apos;s process, a prompt injection or compromised dependency can override them. Infrastructure-layer enforcement operates in a separate trust boundary that the agent cannot modify.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;How many independent enforcement layers exist between a compromised agent and your most sensitive systems?&lt;/strong&gt; The LiteLLM breach showed what happens when the answer is zero. The vibe coding era, where agents generate code, read untrusted files, and spawn sub-agents at machine speed, makes this question existential.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The LiteLLM attack compromised a library. The next wave of attacks will compromise the files agents read, the code agents write, and the memory agents accumulate. The question is not whether your agent will encounter adversarial input. It is whether your architecture survives when it does.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Traefik Hub&apos;s &lt;/em&gt;&lt;a href=&quot;https://traefik.io/blog/the-triple-ai-security-gap?ref=containous.ghost.io&quot;&gt;&lt;em&gt;&lt;u&gt;Triple Gate Pattern&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt; (API Gateway, AI Gateway, MCP Gateway with TBAC) implements the independent, infrastructure-layer enforcement described in this post. For a technical walkthrough of how the composable safety pipeline works across these layers, see &lt;/em&gt;&lt;a href=&quot;https://traefik.io/blog/building-multi-vendor-ai-safety-pipelines?ref=containous.ghost.io&quot;&gt;&lt;em&gt;&lt;u&gt;From Regex to GPU: Building a Multi-Vendor AI Safety Pipeline&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-209462438701&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;209462438701&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLsK%2BPjml8pLJMI9oMgY6%2BDeGkqNSB1jELHMY%2Bq6uYTcnN%2BaoNdr%2Fv2S2ft5THyaItGV12qsq1QCtU%2Fc4N4WLlf6wbt5GBwxJg%2Bl0twk5rWPRpERaNqbu5407f6uYnzxtjoTuQCKQx7tO1xZKc%2BUZ5GuxQ4%2Btr%2BAXNG4jeuPm%2BF6Q7n%2FJz5xxH%2BIOrpNo0m6fsLRjxEX0gtEkMRBMrg9g%3D%3D&amp;webInteractiveContentId=209462438701&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;7cs-ai-governance-ebook-promo-square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-209462438701.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[The Agent Framework Wars Are Over. Everyone Won. That's the Problem.]]></title>
            <description><![CDATA[Your org isn't picking one agent framework—it's already running five. Here's why application-layer governance breaks down in a multi-framework world, and why the only solution that scales lives at the infrastructure layer.]]></description>
            <link>https://traefik.io/the-agent-framework-wars-are-over-everyone-won-thats-the-problem</link>
            <guid isPermaLink="true">https://traefik.io/the-agent-framework-wars-are-over-everyone-won-thats-the-problem</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[MCP Gateway]]></category>
            <dc:creator><![CDATA[Sudeep Goswami]]></dc:creator>
            <pubDate>Tue, 24 Mar 2026 13:34:20 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/03/Blog_without_copies@2x--5-.jpg&quot; class=&quot;kg-image&quot; alt=&quot;All AI Frameworks Won :faceplam:&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/03/Blog_without_copies@2x--5-.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/03/Blog_without_copies@2x--5-.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/03/Blog_without_copies@2x--5-.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/03/Blog_without_copies@2x--5-.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Ask a platform architect how many cloud providers their organization runs. Watch their expressions. The answer is almost never one, and the reasons are always the same: different teams, different timing, different commitments made before the current strategy existed. The cloud was supposed to consolidate. It has been consolidating for 15 years, and most enterprises are still running more than one.&lt;/p&gt;&lt;p&gt;CI/CD was supposed to standardize. Jenkins still runs in the basement alongside GitHub Actions and whatever the platform team mandated two years ago. The service mesh question, Istio or Linkerd or Consul, was asked in 2019 and is still open at organizations that considered themselves decisive.&lt;/p&gt;&lt;p&gt;This is not a failure of enterprise decision-making. It is how enterprise infrastructure actually works. Commitments compound. Migration costs exceed the value of consistency. New teams make new bets. And the platforms themselves have no incentive to make switching easy, because lock-in is the business model.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-209462438701&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;209462438701&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLsK%2BPjml8pLJMI9oMgY6%2BDeGkqNSB1jELHMY%2Bq6uYTcnN%2BaoNdr%2Fv2S2ft5THyaItGV12qsq1QCtU%2Fc4N4WLlf6wbt5GBwxJg%2Bl0twk5rWPRpERaNqbu5407f6uYnzxtjoTuQCKQx7tO1xZKc%2BUZ5GuxQ4%2Btr%2BAXNG4jeuPm%2BF6Q7n%2FJz5xxH%2BIOrpNo0m6fsLRjxEX0gtEkMRBMrg9g%3D%3D&amp;webInteractiveContentId=209462438701&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;7cs-ai-governance-ebook-promo-square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-209462438701.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;Every major agent framework launched in the last twelve months is built on exactly this logic. Which means the governance problem coming at every CISO, Chief AI Officer, and platform architecture leader is not which framework to choose. It is what to do when the answer, inevitably, is all of them.&lt;/p&gt;&lt;h2 id=&quot;twelve-months-five-frameworks&quot;&gt;Twelve Months, Five Frameworks&lt;/h2&gt;&lt;p&gt;The agent framework landscape consolidated from &quot;many experiments&quot; to &quot;a few serious platforms&quot; in roughly one year. The platforms that emerged are not startups or community projects. They are flagship products from the five largest technology companies in the world.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;OpenAI Agents SDK&lt;/strong&gt;, released March 2025, is a lightweight Python and TypeScript framework built around a deliberately minimal set of primitives: Agents, Handoffs, Guardrails, and Tracing. Provider-agnostic, supporting over 100 LLMs. The spiritual successor to Swarm, optimized for simplicity over configurability.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Google ADK&lt;/strong&gt;, introduced at Google Cloud Next 2025, is an open-source framework designed for full-stack development of agents and multi-agent systems. Model-agnostic and deployment-agnostic in principle, optimized for Gemini and Vertex AI in practice. The same framework powering Google&apos;s own Agentspace and Customer Engagement Suite.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Microsoft Agent Framework&lt;/strong&gt;, announced in October 2025, is the convergence of Semantic Kernel and AutoGen into a single, unified runtime that combines Semantic Kernel&apos;s enterprise foundations with AutoGen&apos;s multi-agent orchestration patterns. Open standards across MCP, A2A, and OpenAPI. Python and .NET. Routes toward Azure AI Foundry.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;NVIDIA NemoClaw&lt;/strong&gt;, unveiled at GTC 2026 last week, is the enterprise extension of OpenClaw, a full agent runtime with hardware-optimized inference, enterprise RBAC, signed skill registries, and the Nemotron model stack underneath. Jensen Huang called it the operating system of agentic computers.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;LangChain ecosystem (LangGraph + LangSmith)&lt;/strong&gt; holds a deep enterprise install base, highly recommended framework for production agents, with over 70 million monthly downloads across the LangChain ecosystem and deployments in production at LinkedIn, Uber, Cisco, BlackRock, and JPMorgan. LangSmith provides observability.&lt;/p&gt;&lt;p&gt;And behind these five: CrewAI, PydanticAI, LlamaIndex, Amazon Bedrock Agents, IBM Watsonx Orchestrate, and a dozen more in active enterprise deployment.&lt;/p&gt;&lt;h2 id=&quot;the-consolidation-that-will-not-come&quot;&gt;The Consolidation That Will Not Come&lt;/h2&gt;&lt;p&gt;The reasonable expectation, looking at previous infrastructure categories, is that the market consolidates. Two or three frameworks win. Enterprises standardize. The governance story simplifies.&lt;/p&gt;&lt;p&gt;That is not what is happening here, and the reason is structural. These frameworks are not neutral tools. They are distribution mechanisms for model consumption, cloud compute, and inference revenue. No platform company has an incentive to make their framework interchangeable with a competitor&apos;s. The switching costs are a feature, not a bug.&lt;/p&gt;&lt;p&gt;Enterprises are not going to pick one. A financial services firm running on Azure will use Microsoft Agent Framework for its core workflows. Its data science team, hired from Google, will prototype with ADK. Its NVIDIA DGX cluster will run NemoClaw for latency-sensitive workloads. Its compliance team will insist on LangSmith observability because that is what they already have. Its newest engineering team will ship with OpenAI Agents SDK because it was the fastest to working prototype. The frameworks are too useful, the switching costs are too high, and the organizational inertia is too real. Multi-framework is the destination, not a temporary state.&lt;/p&gt;&lt;h2 id=&quot;the-governance-problem-nobody-has-solved&quot;&gt;&lt;strong&gt;The Governance Problem Nobody Has Solved&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Every one of these frameworks ships with application-layer governance. Guardrails, tracing, access controls, audit logs, safety checks. Each vendor has invested seriously in making their governance story credible.&lt;/p&gt;&lt;p&gt;And every one of those governance implementations is specific to that framework.&lt;/p&gt;&lt;p&gt;OpenAI&apos;s guardrails govern OpenAI Agents SDK workflows. They do not govern NemoClaw agents. Google ADK&apos;s safety patterns apply inside ADK runtimes. They do not apply to Microsoft Agent Framework deployments. NemoClaw&apos;s signed skill registry and RBAC operate inside the NemoClaw runtime. They are unaware of the LangChain agents running alongside them on the same Kubernetes cluster.&lt;/p&gt;&lt;p&gt;As the framework landscape fragments, application-layer governance fragments with it. Each new framework an enterprise adopts adds a new governance silo: new policies to configure, new audit logs to aggregate, new access control models to reconcile with enterprise identity, and new safety configurations to maintain. The governance overhead scales with the number of frameworks, and the coverage is always incomplete at the edges where frameworks interact.&lt;/p&gt;&lt;p&gt;There is a more serious problem underneath this. Application-layer governance, by definition, lives inside the process being governed. When a NemoClaw agent calls an OpenAI endpoint through a LangChain routing layer inside a Microsoft Agent Framework orchestration workflow, a configuration that will exist in production before this year is out, and none of the application-layer governance from any of those frameworks can see the full picture. Each sees only its own slice of the execution. The inference call crosses network boundaries that each framework&apos;s internal controls cannot follow.&lt;/p&gt;&lt;p&gt;This is not an edge case. It is the normal operating condition of enterprise multi-agent deployments at scale.&lt;/p&gt;&lt;h2 id=&quot;the-one-layer-that-does-not-fragment&quot;&gt;The One Layer That Does Not Fragment&lt;/h2&gt;&lt;p&gt;Infrastructure-layer governance does not know which framework built the agent. It governs the traffic.&lt;/p&gt;&lt;p&gt;An inference call from a NemoClaw agent and an inference call from a Google ADK agent are, at the network layer, identical: an HTTP request carrying a prompt to an LLM endpoint. The AI Gateway&apos;s safety pipeline, covering pattern matching, PII redaction, NVIDIA Safety NIMs, and hallucination detection, applies to both independently, without modifying either framework.&lt;/p&gt;&lt;p&gt;An MCP tool invocation from an OpenAI Agents SDK workflow and an MCP tool invocation from a Microsoft Agent Framework orchestration are, at the network layer, the same protocol: a tool call with an identity, a method, and parameters. Infrastructure-layer authorization validates both against the same policy, regardless of which runtime initiated the call.&lt;/p&gt;&lt;p&gt;A policy enforced at the network layer applies across the entire multi-framework agent estate. One set of policies. One audit log. One enforcement boundary. The governance overhead does not scale with the number of frameworks because it is not within any of them.&lt;/p&gt;&lt;p&gt;This is what Traefik Hub&apos;s Triple Gate architecture was designed to address. Three enforcement points, each targeting a distinct traffic pattern every agent generates regardless of runtime:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;The &lt;strong&gt;AI Gateway&lt;/strong&gt; intercepts every inference call: the safety pipeline, token rate limiting, semantic caching, and model failover, which apply universally to every LLM request, whether it originates from NemoClaw, ADK, OpenAI SDK, or LangGraph.&lt;/li&gt;&lt;li&gt;The &lt;strong&gt;MCP Gateway&lt;/strong&gt; intercepts every tool invocation: infrastructure-layer authorization on the specific parameters of each tool call, independent of the role-based controls inside any particular framework&apos;s runtime.&lt;/li&gt;&lt;li&gt;The &lt;strong&gt;API Gateway&lt;/strong&gt; governs the management plane: the configuration endpoints, monitoring interfaces, and orchestration APIs of the agent infrastructure itself, enforcing authentication, schema validation, and threat detection regardless of which framework generated the traffic.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Three patterns. Three enforcement points. Framework-agnostic, by design.&lt;/p&gt;&lt;h2 id=&quot;why-this-argument-gets-stronger-over-time&quot;&gt;Why This Argument Gets Stronger Over Time&lt;/h2&gt;&lt;p&gt;In a world with five competing frameworks running within the same enterprise, application-layer governance requires five separate configurations, five separate audit log streams, five separate safety policy maintenance cycles, and still provides no visibility at the boundaries where frameworks interact.&lt;/p&gt;&lt;p&gt;Infrastructure governance provides one. The multi-framework future makes that one more valuable, not less.&lt;/p&gt;&lt;p&gt;The pattern is already established in adjacent infrastructure categories. Enterprises do not maintain separate network security policies for each application stack. They do not run separate identity providers for each platform vendor&apos;s tooling. The governance lives at the layer that does not change when the application layer changes.&lt;/p&gt;&lt;p&gt;Agent infrastructure is arriving at the same conclusion. The application layer will continue to fragment: new frameworks, new runtimes, new vendor platforms, new enterprise bets. The infrastructure layer is where governance stabilizes.&lt;/p&gt;&lt;h2 id=&quot;the-strategic-question-for-every-platform-leader&quot;&gt;The Strategic Question for Every Platform Leader&lt;/h2&gt;&lt;p&gt;The question facing every CISO, Chief AI Officer, and platform architecture leader right now is not which agent framework to standardize on. That question has no good answer, because the organization is already running multiple frameworks and will continue to do so.&lt;/p&gt;&lt;p&gt;The question is: where does governance live in a multi-framework agent estate, and how does it scale as the number of frameworks grows?&lt;/p&gt;&lt;p&gt;If the answer is &quot;inside each framework,&quot; the honest follow-up is: who maintains five separate governance configurations, how are they kept consistent, and what happens at the boundaries where frameworks interact?&lt;/p&gt;&lt;p&gt;If the answer is &quot;at the infrastructure layer,&quot; the follow-up is: which traffic governance architecture covers all three patterns, inference calls, tool invocations, and management APIs, across every framework without requiring modification to any of them?&lt;/p&gt;&lt;p&gt;That second answer is the one that scales. It is also the answer that matches how enterprise security has worked in every infrastructure category that came before.&lt;/p&gt;&lt;p&gt;The agent framework wars are over. Everyone won. The governance story for a world where everyone won is an infrastructure-layer story, and that story is only beginning to be written.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-209462438701&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;209462438701&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLsK%2BPjml8pLJMI9oMgY6%2BDeGkqNSB1jELHMY%2Bq6uYTcnN%2BaoNdr%2Fv2S2ft5THyaItGV12qsq1QCtU%2Fc4N4WLlf6wbt5GBwxJg%2Bl0twk5rWPRpERaNqbu5407f6uYnzxtjoTuQCKQx7tO1xZKc%2BUZ5GuxQ4%2Btr%2BAXNG4jeuPm%2BF6Q7n%2FJz5xxH%2BIOrpNo0m6fsLRjxEX0gtEkMRBMrg9g%3D%3D&amp;webInteractiveContentId=209462438701&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;7cs-ai-governance-ebook-promo-square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-209462438701.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Ingress NGINX is Done. Here are Your Three Migration Options.]]></title>
            <description><![CDATA[Let's explore the recent developments to the migration path our team built & why Traefik is the only option that doesn't ask you to choose safety or disruption.]]></description>
            <link>https://traefik.io/ingress-nginx-is-out</link>
            <guid isPermaLink="true">https://traefik.io/ingress-nginx-is-out</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Traefik Proxy]]></category>
            <category><![CDATA[ingress nginx]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Tue, 24 Mar 2026 07:40:59 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/03/traefik-is-in-blog-no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/03/traefik-is-in-blog-no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/03/traefik-is-in-blog-no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/03/traefik-is-in-blog-no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/03/traefik-is-in-blog-no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h3 id=&quot;traefik-v37-brings-80-nginx-ingress-annotations-snippet-support-and-a-zero-downtime-migration-path&quot;&gt;&lt;em&gt;Traefik v3.7 brings 80+ NGINX Ingress annotations, snippet support, and a zero-downtime migration path.&lt;/em&gt;&lt;/h3&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Last July, when we first &lt;a href=&quot;https://traefik.io/blog/transition-from-ingress-nginx-to-traefik?ref=containous.ghost.io&quot;&gt;&lt;u&gt;introduced Ingress NGINX native support to Traefik&lt;/u&gt;&lt;/a&gt;, we knew something was happening, but we didn&apos;t yet know how soon the situation would escalate. Then came November: the Kubernetes SIG Network and Security Response Committee officially announced that the &lt;strong&gt;Ingress NGINX Controller would be retired in March 2026&lt;/strong&gt;. No new releases. No bug fixes. No security patches.&lt;/p&gt;&lt;p&gt;As of this month, that deadline has arrived. If you&apos;re running Ingress NGINX in production—and millions of clusters still are—you&apos;re now running unmaintained software with known architectural vulnerabilities.&lt;/p&gt;&lt;p&gt;Over the past months, we&apos;ve been on a singular mission: make the migration from Ingress NGINX a non-event. Not a multi-quarter project. Not a forced rearchitecture. A non-event. Today, I want to share where we&apos;ve arrived, what&apos;s new, and why we believe Traefik is the only path that doesn&apos;t ask you to choose between safety and disruption.&lt;/p&gt;&lt;p&gt;And the path we&apos;ve taken has been validated by the industry. This morning, we&apos;re &lt;a href=&quot;https://www.businesswire.com/news/home/20260324385872/en/Traefik-Becomes-the-De-Facto-Standard-for-Kubernetes-Networking-as-Major-Platform-Vendors-Migrate-from-Ingress-NGINX?_gl=1*is5e9m*_gcl_au*OTE4MjExMzM2LjE3NzAyMzgwODA.*_ga*NDE2Nzg5NDUxLjE3NjAyOTYyNzU.*_ga_ZQWF70T3FK*czE3NzQzMzc0NTUkbzMyJGcxJHQxNzc0MzM3OTI0JGoxMSRsMCRoMA..&amp;ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;proud to announce&lt;/a&gt; that IBM Cloud, Nutanix, OVHcloud, SUSE, TIBCO, and others have each independently chosen Traefik as their strategic ingress controller and Gateway API solution. These aren&apos;t experiments or evaluations. These are production commitments from organizations that evaluated every option on the table and concluded that Traefik&apos;s approach, native Ingress NGINX compatibility combined with full Gateway API support, is the right foundation for their Kubernetes networking stack going forward.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-202811305109&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:256.4375px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;202811305109&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLNAbTRYQhRdu%2BsMQLSFx6K1AB5JrLqSoRUp65p%2BIqhCRLiLTI87gXSgnbfegvCsL1a0pjTLpGoRFV5bo%2FnnuqKmPjCK%2FSnvA0IcD%2F4EQqjE3lzCQPnW1HtwYoCqFdOTW0ez8y0KjRk%2Bn1URDdyRDqdQ7SzV162C6TeYS2vlaIdpmfSFSYByXmbkEIH%2BNBENw%3D%3D&amp;webInteractiveContentId=202811305109&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;nginx-fade-v2&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-202811305109.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;laying-out-your-three-migration-options&quot;&gt;Laying Out Your Three Migration Options&lt;/h2&gt;&lt;p&gt;Since the retirement announcement, the ecosystem has responded along three lines. The first two simply don&apos;t solve the fundamental issue.&lt;/p&gt;&lt;h3 id=&quot;option-1-migrate-to-a-different-configuration-format&quot;&gt;Option 1: Migrate to a Different Configuration Format &lt;/h3&gt;&lt;p&gt;Every major proxy vendor (e.g., Kong, HAProxy, NGINX F5, cloud-native providers) has published migration guides. We&apos;ve read them all. They all share the same fundamental limitation: they require you to rewrite your configurations immediately. &lt;/p&gt;&lt;p&gt;Either you convert your NGINX annotations to a completely different set of vendor-specific annotations, or you jump straight to Gateway API resources. In both cases, every annotation, every routing rule, every customization must be manually converted to a different syntax, a different mental model, a different set of abstractions to land you on a new controller UX that you do not master yet. Under deadline pressure, this is a recipe for outages.&lt;/p&gt;&lt;h3 id=&quot;option-2-fork-ingress-nginx-and-keep-running-it&quot;&gt;Option 2: Fork Ingress NGINX and Keep Running It&lt;/h3&gt;&lt;p&gt;Following the retirement announcement, a maintenance fork emerged to keep the project alive by providing security patches. It&apos;s a tempting narrative; just switch the image and stay safe. But as we explained in detail in &lt;a href=&quot;https://traefik.io/blog/the-illusion-of-safety-why-the-ingress-nginx-fork-is-not-a-security-strategy?ref=containous.ghost.io&quot;&gt;&lt;u&gt;our analysis&lt;/u&gt;&lt;/a&gt;, a fork doesn&apos;t fix the fundamental architectural flaws. The configuration injection surface that enabled #IngressNightmare isn&apos;t a bug to patch. It&apos;s a consequence of how NGINX-based controllers work—template rendering, C/C++ memory safety risks, etc. &lt;/p&gt;&lt;p&gt;A fork inherits all of these structural vulnerabilities. And it anchors you to a legacy technology with no path forward. Finally, if the original maintainers gave up, how could a third-party vendor make this project safe to use?&lt;/p&gt;&lt;p&gt;Meanwhile, InGate, the proposed from-scratch successor, has also been announced as end-of-life in March as well. The official Kubernetes path forward for ingress is Gateway API, but &lt;em&gt;Do It Yourself&lt;/em&gt;.&lt;/p&gt;&lt;h3 id=&quot;option-3-use-traefik-the-only-drop-in-replacement&quot;&gt;Option 3: Use Traefik, the Only Drop-In Replacement&lt;/h3&gt;&lt;p&gt;We took a fundamentally different approach. Traefik&apos;s NGINX Ingress Provider reads your existing Ingress resources and their &lt;code&gt;nginx.ingress.kubernetes.io&lt;/code&gt; annotations natively. No conversion scripts. No YAML rewriting. No dual-maintenance period where you&apos;re running two sets of configurations side by side.&lt;/p&gt;
&lt;p&gt;This isn&apos;t a compatibility shim or a best-effort translation layer. It&apos;s a full provider that understands the Ingress NGINX annotation contract and translates it into Traefik&apos;s internal object model securely, without the configuration-injection vulnerabilities that plague template-based approaches.&lt;/p&gt;&lt;p&gt;This makes Traefik the only drop-in replacement for Ingress NGINX in the industry. And critically, &lt;strong&gt;Traefik is also the only solution that supports both Ingress NGINX annotations and Gateway API on the same cluster, on the same instance, at the same time.&lt;/strong&gt; This is what makes a truly seamless migration possible, and this is exactly why IBM Cloud, Nutanix, OVHcloud, SUSE, TIBCO, and others chose Traefik as their path forward.&lt;/p&gt;&lt;h2 id=&quot;a-data-driven-expansion-of-annotation-support&quot;&gt;A Data-Driven Expansion of Annotation Support&lt;/h2&gt;&lt;p&gt;From the beginning, we took a data-driven approach to deciding which annotations to support and in what order. Our open-source&lt;a href=&quot;https://github.com/traefik/ingress-nginx-migration?ref=containous.ghost.io&quot;&gt; &lt;u&gt;ingress-nginx-migration tool&lt;/u&gt;&lt;/a&gt; doesn&apos;t just analyze your cluster, when users opt in, it shares anonymized, aggregated statistics with us. No resource names, no namespaces, no configurations. Just annotation counts and usage patterns.&lt;/p&gt;&lt;p&gt;The result: we now have an excellent overview of real-world annotation usage across hundreds of diverse deployments, from small startups running a handful of Ingresses to large enterprises with thousands. This data has directly shaped our implementation priorities, ensuring that every annotation we add addresses actual production needs, not hypothetical edge cases.&lt;/p&gt;&lt;h2 id=&quot;introducing-traefik-v37-80-nginx-ingress-annotations-90-of-real-world-usage-available-now&quot;&gt;Introducing Traefik v3.7: 80+ NGINX Ingress Annotations, 90% of Real-World Usage, Available Now&lt;/h2&gt;&lt;p&gt;Today we are releasing&lt;a href=&quot;https://github.com/traefik/traefik/releases/tag/v3.7.0-ea.2?ref=containous.ghost.io&quot;&gt; &lt;strong&gt;&lt;u&gt;Traefik v3.7 early access&lt;/u&gt;&lt;/strong&gt;&lt;/a&gt;, and it&apos;s the biggest leap forward yet for Ingress NGINX migration. This release brings support for &lt;strong&gt;over 80 NGINX Ingress annotations&lt;/strong&gt; natively, covering more than &lt;strong&gt;90% of real-world usage&lt;/strong&gt; patterns we&apos;ve observed across hundreds of production clusters. Authentication, TLS, session affinity, CORS, routing, proxy settings, rate limiting, canary deployments, snippets, and more: they all work out of the box, with your existing Ingress manifests, unchanged.&lt;/p&gt;&lt;p&gt;This is the release that turns the Ingress NGINX sunset from a migration project into a configuration change.&lt;/p&gt;&lt;h3 id=&quot;snippets-a-pragmatic-solution-to-the-long-tail&quot;&gt;Snippets: A Pragmatic Solution to the Long Tail&lt;/h3&gt;&lt;p&gt;One of the most interesting findings from our migration tool data was the prevalence of configuration-snippet and server-snippet annotations. These are the escape hatches of the Ingress NGINX world (i.e., raw NGINX configuration directives injected directly into the generated config). They&apos;re also the primary vector behind the IngressNightmare vulnerabilities, and the reason a naive &quot;just support all annotations&quot; approach is a security non-starter.&lt;/p&gt;&lt;p&gt;But we can&apos;t ignore them either. Our data shows that snippets are heavily used in production, and a significant portion of &quot;unsupported&quot; Ingresses rely on them.&lt;/p&gt;&lt;p&gt;So we built something new: &lt;strong&gt;partial snippet support through a basic interpreter&lt;/strong&gt;. Rather than blindly injecting raw NGINX configuration, which would recreate the exact security vulnerabilities we&apos;re trying to avoid, Traefik now parses snippet content and interprets a curated set of the most commonly used NGINX directives.&lt;/p&gt;&lt;p&gt;This covers the most common snippet use cases without enabling arbitrary configuration injection. It&apos;s a pragmatic middle ground: broad enough to unblock real migrations but strict enough to maintain Traefik&apos;s security-by-design guarantees.&lt;/p&gt;&lt;h3 id=&quot;variable-interpolation&quot;&gt;Variable Interpolation&lt;/h3&gt;&lt;p&gt;Alongside snippet support, Traefik now supports &lt;strong&gt;variable interpolation&lt;/strong&gt;, initially focused on the headers manipulation use case. If your snippets use NGINX variables to set or modify request and response headers—referencing client IPs, URI components, or upstream information—Traefik maps them to their equivalent values in its own routing context.&lt;/p&gt;&lt;p&gt;This was another priority directly informed by our migration data. Header manipulation through snippets with variable interpolation is one of the most common patterns we observed, and without this support, even a well-parsed snippet would produce incorrect behavior. The architecture is designed to expand variable coverage to additional use cases based on community feedback.&lt;/p&gt;&lt;h2 id=&quot;annotation-support-the-full-picture&quot;&gt;Annotation Support: The Full Picture&lt;/h2&gt;&lt;p&gt;Here&apos;s a snapshot of the 80+ NGINX Ingress annotations now supported by Traefik&apos;s NGINXIngress Provider, as available in the&lt;a href=&quot;https://github.com/traefik/traefik/releases/tag/v3.7.0-ea.2?ref=containous.ghost.io&quot;&gt; &lt;u&gt;v3.7 early access&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;For the full technical reference with behavioral notes and limitations, see the&lt;a href=&quot;https://doc.traefik.io/traefik/v3.7/reference/routing-configuration/kubernetes/ingress-nginx/?ref=containous.ghost.io&quot;&gt; &lt;u&gt;NGINX Ingress Provider documentation&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;table border=&quot;1&quot; cellpadding=&quot;12&quot; cellspacing=&quot;0&quot; style=&quot;border-collapse: collapse; width: 100%;&quot;&gt;
  &lt;tbody&gt;

    &lt;!-- Row 1 --&gt;
    &lt;tr&gt;
      &lt;td&gt;
        &lt;div style=&quot;background:#f7f7f7; padding:12px; border-radius:6px;&quot;&gt;
          &lt;strong&gt;Authentication&lt;/strong&gt;&lt;/div&gt;
          &lt;ul style=&quot;margin:8px 0 0 0; padding-left:20px;&quot;&gt;
            &lt;li&gt;auth-type&lt;/li&gt;
            &lt;li&gt;auth-secret&lt;/li&gt;
            &lt;li&gt;auth-secret-type&lt;/li&gt;
            &lt;li&gt;auth-realm&lt;/li&gt;
            &lt;li&gt;auth-url&lt;/li&gt;
            &lt;li&gt;auth-method&lt;/li&gt;
            &lt;li&gt;auth-response-headers&lt;/li&gt;
            &lt;li&gt;auth-signin&lt;/li&gt;
            &lt;li&gt;auth-snippet&lt;/li&gt;
            &lt;li&gt;auth-tls-secret&lt;/li&gt;
            &lt;li&gt;auth-tls-verify-client&lt;/li&gt;
            &lt;li&gt;auth-tls-verify-depth&lt;/li&gt;
            &lt;li&gt;auth-tls-pass-certificate-to-upstream&lt;/li&gt;
          &lt;/ul&gt;
      &lt;/td&gt;

      &lt;td&gt;
        &lt;div style=&quot;background:#f7f7f7; padding:12px; border-radius:6px;&quot;&gt;
          &lt;strong&gt;SSL / TLS&lt;/strong&gt;&lt;/div&gt;
          &lt;ul style=&quot;margin:8px 0 0 0; padding-left:20px;&quot;&gt;
            &lt;li&gt;ssl-redirect&lt;/li&gt;
            &lt;li&gt;force-ssl-redirect&lt;/li&gt;
            &lt;li&gt;ssl-passthrough&lt;/li&gt;
            &lt;li&gt;proxy-ssl-secret&lt;/li&gt;
            &lt;li&gt;proxy-ssl-verify&lt;/li&gt;
            &lt;li&gt;proxy-ssl-name&lt;/li&gt;
            &lt;li&gt;proxy-ssl-server-name&lt;/li&gt;
          &lt;/ul&gt;
      &lt;/td&gt;

      &lt;td&gt;
        &lt;div style=&quot;background:#f7f7f7; padding:12px; border-radius:6px;&quot;&gt;
          &lt;strong&gt;Session Affinity&lt;/strong&gt;&lt;/div&gt;
          &lt;ul style=&quot;margin:8px 0 0 0; padding-left:20px;&quot;&gt;
            &lt;li&gt;affinity&lt;/li&gt;
            &lt;li&gt;affinity-mode&lt;/li&gt;
            &lt;li&gt;affinity-canary-behavior&lt;/li&gt;
            &lt;li&gt;session-cookie-name&lt;/li&gt;
            &lt;li&gt;session-cookie-path&lt;/li&gt;
            &lt;li&gt;session-cookie-domain&lt;/li&gt;
            &lt;li&gt;session-cookie-samesite&lt;/li&gt;
            &lt;li&gt;session-cookie-secure&lt;/li&gt;
            &lt;li&gt;session-cookie-max-age&lt;/li&gt;
            &lt;li&gt;session-cookie-expires&lt;/li&gt;
          &lt;/ul&gt;
      &lt;/td&gt;
    &lt;/tr&gt;

    &lt;!-- Row 2 --&gt;
    &lt;tr&gt;
      &lt;td&gt;
        &lt;div style=&quot;background:#f7f7f7; padding:12px; border-radius:6px;&quot;&gt;
          &lt;strong&gt;Proxy Settings&lt;/strong&gt;&lt;/div&gt;
          &lt;ul style=&quot;margin:8px 0 0 0; padding-left:20px;&quot;&gt;
            &lt;li&gt;proxy-body-size&lt;/li&gt;
            &lt;li&gt;client-body-buffer-size&lt;/li&gt;
            &lt;li&gt;proxy-buffer-size&lt;/li&gt;
            &lt;li&gt;proxy-buffers-number&lt;/li&gt;
            &lt;li&gt;proxy-buffering&lt;/li&gt;
            &lt;li&gt;proxy-max-temp-file-size&lt;/li&gt;
            &lt;li&gt;proxy-connect-timeout&lt;/li&gt;
            &lt;li&gt;proxy-read-timeout&lt;/li&gt;
            &lt;li&gt;proxy-send-timeout&lt;/li&gt;
            &lt;li&gt;proxy-request-buffering&lt;/li&gt;
            &lt;li&gt;proxy-http-version&lt;/li&gt;
            &lt;li&gt;proxy-redirect-from&lt;/li&gt;
            &lt;li&gt;proxy-next-upstream&lt;/li&gt;
            &lt;li&gt;proxy-next-upstream-timeout&lt;/li&gt;
            &lt;li&gt;proxy-next-upstream-tries&lt;/li&gt;
          &lt;/ul&gt;
      &lt;/td&gt;
      
      &lt;td&gt;
        &lt;div style=&quot;background:#f7f7f7; padding:12px; border-radius:6px;&quot;&gt;
          &lt;strong&gt;CORS&lt;/strong&gt;&lt;/div&gt;
          &lt;ul style=&quot;margin:8px 0 0 0; padding-left:20px;&quot;&gt;
            &lt;li&gt;enable-cors&lt;/li&gt;
            &lt;li&gt;cors-allow-credentials&lt;/li&gt;
            &lt;li&gt;cors-allow-headers&lt;/li&gt;
            &lt;li&gt;cors-allow-methods&lt;/li&gt;
            &lt;li&gt;cors-allow-origin&lt;/li&gt;
            &lt;li&gt;cors-max-age&lt;/li&gt;
            &lt;li&gt;cors-expose-headers&lt;/li&gt;
          &lt;/ul&gt;
      &lt;/td&gt;

      &lt;td&gt;
        &lt;div style=&quot;background:#f7f7f7; padding:12px; border-radius:6px;&quot;&gt;
          &lt;strong&gt;Routing &amp; Redirects&lt;/strong&gt;&lt;/div&gt;
          &lt;ul style=&quot;margin:8px 0 0 0; padding-left:20px;&quot;&gt;
            &lt;li&gt;use-regex&lt;/li&gt;
            &lt;li&gt;rewrite-target&lt;/li&gt;
            &lt;li&gt;app-root&lt;/li&gt;
            &lt;li&gt;permanent-redirect&lt;/li&gt;
            &lt;li&gt;permanent-redirect-code&lt;/li&gt;
            &lt;li&gt;temporal-redirect&lt;/li&gt;
            &lt;li&gt;temporal-redirect-code&lt;/li&gt;
            &lt;li&gt;from-to-www-redirect&lt;/li&gt;
            &lt;li&gt;server-alias&lt;/li&gt;
          &lt;/ul&gt;
      &lt;/td&gt;
    &lt;/tr&gt;

    &lt;!-- Row 3 --&gt;
    &lt;tr&gt;
      &lt;td&gt;
        &lt;div style=&quot;background:#f7f7f7; padding:12px; border-radius:6px;&quot;&gt;
          &lt;strong&gt;Load Balancing &amp; Backend&lt;/strong&gt;&lt;/div&gt;
          &lt;ul style=&quot;margin:8px 0 0 0; padding-left:20px;&quot;&gt;
            &lt;li&gt;load-balance&lt;/li&gt;
            &lt;li&gt;backend-protocol&lt;/li&gt;
            &lt;li&gt;service-upstream&lt;/li&gt;
            &lt;li&gt;upstream-vhost&lt;/li&gt;
            &lt;li&gt;upstream-hash-by&lt;/li&gt;
            &lt;li&gt;default-backend&lt;/li&gt;
          &lt;/ul&gt;
      &lt;/td&gt;

      &lt;td&gt;
        &lt;div style=&quot;background:#f7f7f7; padding:12px; border-radius:6px;&quot;&gt;
          &lt;strong&gt;Rate Limiting &amp; Access Control&lt;/strong&gt;&lt;/div&gt;
          &lt;ul style=&quot;margin:8px 0 0 0; padding-left:20px;&quot;&gt;
            &lt;li&gt;whitelist-source-range&lt;/li&gt;
            &lt;li&gt;allowlist-source-range&lt;/li&gt;
            &lt;li&gt;limit-rps&lt;/li&gt;
            &lt;li&gt;limit-rpm&lt;/li&gt;
          &lt;/ul&gt;
      &lt;/td&gt;

      &lt;td&gt;
        &lt;div style=&quot;background:#f7f7f7; padding:12px; border-radius:6px;&quot;&gt;
          &lt;strong&gt;Custom Headers&lt;/strong&gt;&lt;/div&gt;
          &lt;ul style=&quot;margin:8px 0 0 0; padding-left:20px;&quot;&gt;
            &lt;li&gt;custom-header&lt;/li&gt;
            &lt;li&gt;x-forwarded-prefix&lt;/li&gt;
          &lt;/ul&gt;
      &lt;/td&gt;
    &lt;/tr&gt;

    &lt;!-- Row 4 --&gt;
    &lt;tr&gt;
      &lt;td&gt;
        &lt;div style=&quot;background:#f7f7f7; padding:12px; border-radius:6px;&quot;&gt;
          &lt;strong&gt;Canary Deployments&lt;/strong&gt;&lt;/div&gt;
          &lt;ul style=&quot;margin:8px 0 0 0; padding-left:20px;&quot;&gt;
            &lt;li&gt;canary&lt;/li&gt;
            &lt;li&gt;canary-by-header&lt;/li&gt;
            &lt;li&gt;canary-by-header-value&lt;/li&gt;
            &lt;li&gt;canary-by-header-pattern&lt;/li&gt;
            &lt;li&gt;canary-by-cookie&lt;/li&gt;
            &lt;li&gt;canary-weight&lt;/li&gt;
            &lt;li&gt;canary-weight-total&lt;/li&gt;
          &lt;/ul&gt;
      &lt;/td&gt;

      &lt;td&gt;
        &lt;div style=&quot;background:#f7f7f7; padding:12px; border-radius:6px;&quot;&gt;
          &lt;strong&gt;Error Handling&lt;/strong&gt;&lt;/div&gt;
          &lt;ul style=&quot;margin:8px 0 0 0; padding-left:20px;&quot;&gt;
            &lt;li&gt;custom-http-errors&lt;/li&gt;
          &lt;/ul&gt;
      &lt;/td&gt;

      &lt;td&gt;
        &lt;div style=&quot;background:#f7f7f7; padding:12px; border-radius:6px;&quot;&gt;
          &lt;strong&gt;Security / WAF&lt;/strong&gt;&lt;/div&gt;
          &lt;ul style=&quot;margin:8px 0 0 0; padding-left:20px;&quot;&gt;
            &lt;li&gt;enable-modsecurity&lt;/li&gt;
            &lt;li&gt;modsecurity-snippet&lt;/li&gt;
          &lt;/ul&gt;
        &lt;/td&gt;
    &lt;/tr&gt;

      &lt;tr&gt;
        &lt;td&gt;
      &lt;div style=&quot;background:#f7f7f7; padding:12px; border-radius:6px;&quot;&gt;  
          &lt;strong style=&quot;display:block; margin-top:12px;&quot;&gt;Observability&lt;/strong&gt;&lt;/div&gt;
          &lt;ul style=&quot;margin:8px 0 0 0; padding-left:20px;&quot;&gt;
            &lt;li&gt;enable-access-log&lt;/li&gt;
          &lt;/ul&gt;
      &lt;/td&gt;
  &lt;td&gt;
  &lt;div style=&quot;background:#f7f7f7; padding:12px; border-radius:6px;&quot;&gt;&lt;strong style=&quot;display:block; margin-top:12px;&quot;&gt;Snippets&lt;/strong&gt;&lt;/div&gt;
          &lt;ul style=&quot;margin:8px 0 0 0; padding-left:20px;&quot;&gt;
            &lt;li&gt;configuration-snippet&lt;/li&gt;
            &lt;li&gt;server-snippet&lt;/li&gt;
          &lt;/ul&gt;
  &lt;/td&gt;
    &lt;/tr&gt;

  &lt;/tbody&gt;
&lt;/table&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;Many of these annotations were implemented by community contributors, and that momentum continues to grow. If you need support for annotations not listed here, or want to help expand coverage further, head to&lt;a href=&quot;https://github.com/traefik/traefik/issues/12631?ref=containous.ghost.io&quot;&gt; &lt;u&gt;traefik/traefik#12631&lt;/u&gt;&lt;/a&gt;. Annotations are categorized by complexity (Basic, Medium, Complex), making it easy to find a contribution that matches your experience level.&lt;/p&gt;&lt;p&gt;More than half of Traefik&apos;s merged pull requests have historically come from external contributors. The Ingress NGINX Provider is proving to be no exception.&lt;/p&gt;&lt;h2 id=&quot;the-migration-three-phases-zero-downtime-zero-risk&quot;&gt;The Migration: Three Phases, Zero Downtime, Zero Risk&lt;/h2&gt;&lt;p&gt;We designed the migration from Ingress NGINX to be a simple, three-phase process. All three phases uphold our core principles: zero downtime, progressive transition, and a smooth experience that lets you move at your own pace.&lt;/p&gt;&lt;h3 id=&quot;phase-1-assess-your-situation&quot;&gt;Phase 1: Assess Your Situation &lt;/h3&gt;&lt;p&gt;Run the &lt;a href=&quot;https://github.com/traefik/ingress-nginx-migration?ref=containous.ghost.io&quot;&gt;&lt;u&gt;ingress-nginx-migration tool&lt;/u&gt;&lt;/a&gt; against your cluster. In minutes, you&apos;ll get a clear picture of your annotation usage and compatibility status: which Ingresses will migrate seamlessly, and which ones need attention. No manual audits are required.&lt;/p&gt;&lt;h3 id=&quot;phase-2-ingress-nginx-decommissioning&quot;&gt;Phase 2: Ingress NGINX Decommissioning&lt;/h3&gt;&lt;p&gt;Deploy Traefik alongside your existing NGINX controller. Both will serve the same Ingress resources simultaneously. Progressively shift traffic to Traefik, one Ingress at a time, validating behavior with each step. Once you&apos;re confident, remove Ingress NGINX. There is no big-bang cutover, no downtime, and your production traffic remains secure while you eliminate the unmaintained software from your stack.&lt;/p&gt;&lt;h3 id=&quot;phase-3-progressive-transition-to-gateway-api&quot;&gt;Phase 3: Progressive Transition to Gateway API&lt;/h3&gt;&lt;p&gt;With Traefik handling your existing Ingress resources and their NGINX annotations, you&apos;re no longer under a deadline. When you&apos;re ready (not when a crisis forces you), you can begin converting individual Ingress resources to Gateway API. &lt;strong&gt;Traefik supports both simultaneously&lt;/strong&gt;, allowing you to migrate one route at a time, validate behavior, and roll back if needed. This is a seamless, progressive modernization with zero downtime.&lt;/p&gt;&lt;p&gt;This three-phase approach is unique to Traefik. No other solution provides both a drop-in replacement for Ingress NGINX and a production-grade Gateway API implementation that runs side by side, enabling a fully progressive migration from legacy to modern at your own pace.&lt;/p&gt;&lt;p&gt;The retirement of Ingress NGINX doesn&apos;t have to be a crisis. We built a migration path for you because we believe no one should be forced to rearchitect under pressure. The Kubernetes ecosystem deserves better than that.&amp;nbsp;&lt;/p&gt;&lt;p&gt;None of this would have been possible without the incredible contributions from the community. Developers from around the world have submitted pull requests adding new annotations, reporting edge cases, improving documentation, and testing the provider against their own production configurations. This effort is as much yours as it is ours, and we&apos;re deeply grateful for it.&lt;/p&gt;&lt;p&gt;If you haven&apos;t already, we invite you to try the&lt;a href=&quot;https://github.com/traefik/traefik/releases/tag/v3.7.0-ea.2?ref=containous.ghost.io&quot;&gt; &lt;u&gt;Traefik v3.7 early access release&lt;/u&gt;&lt;/a&gt; against your own cluster. Run the migration tool, deploy Traefik alongside NGINX, and see for yourself how many of your Ingresses just work. Your feedback on this release will directly shape the final v3.7 GA.&lt;/p&gt;&lt;p&gt;The deadline is here. But for Traefik users, it&apos;s just another Tuesday.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Resources:&lt;/em&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;Migration tool:&lt;/em&gt;&lt;a href=&quot;https://github.com/traefik/ingress-nginx-migration?ref=containous.ghost.io&quot;&gt;&lt;em&gt; &lt;u&gt;github.com/traefik/ingress-nginx-migration&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Migration guide:&lt;/em&gt;&lt;a href=&quot;https://doc.traefik.io/traefik/migrate/nginx-to-traefik/?ref=containous.ghost.io&quot;&gt;&lt;em&gt; &lt;u&gt;doc.traefik.io/traefik/migrate/nginx-to-traefik&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Early Access: &lt;/em&gt;&lt;a href=&quot;https://github.com/traefik/traefik/releases/tag/v3.7.0-ea.2?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;em&gt;&lt;u&gt;Traefik v3.7 Early Access: v3.7.0-ea.2&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Contribute annotations:&lt;/em&gt;&lt;a href=&quot;https://github.com/traefik/traefik/issues/12631?ref=containous.ghost.io&quot;&gt;&lt;em&gt; &lt;u&gt;traefik/traefik#12631&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Full annotation reference:&lt;/em&gt;&lt;a href=&quot;https://doc.traefik.io/traefik/reference/routing-configuration/kubernetes/ingress-nginx/?ref=containous.ghost.io&quot;&gt;&lt;em&gt; &lt;u&gt;doc.traefik.io/.../ingress-nginx&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Migration website:&lt;/em&gt;&lt;a href=&quot;http://ingressnginxmigration.org/?ref=containous.ghost.io&quot;&gt;&lt;em&gt; &lt;u&gt;ingressnginxmigration.org&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Why a fork won&apos;t save you:&lt;/em&gt;&lt;a href=&quot;https://traefik.io/blog/the-illusion-of-safety-why-the-ingress-nginx-fork-is-not-a-security-strategy?ref=containous.ghost.io&quot;&gt;&lt;em&gt; &lt;u&gt;The Illusion of Safety&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-202811305109&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:256.4375px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;202811305109&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLNAbTRYQhRdu%2BsMQLSFx6K1AB5JrLqSoRUp65p%2BIqhCRLiLTI87gXSgnbfegvCsL1a0pjTLpGoRFV5bo%2FnnuqKmPjCK%2FSnvA0IcD%2F4EQqjE3lzCQPnW1HtwYoCqFdOTW0ez8y0KjRk%2Bn1URDdyRDqdQ7SzV162C6TeYS2vlaIdpmfSFSYByXmbkEIH%2BNBENw%3D%3D&amp;webInteractiveContentId=202811305109&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;nginx-fade-v2&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-202811305109.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Hardware Has Never Cost More. Is Your Architecture Built for That Reality?]]></title>
            <description><![CDATA[VMware exit. Ingress NGINX EOL. Wafer shortages. Three reasons to rethink app delivery now. See how a software-defined gateway solves all three in this article.]]></description>
            <link>https://traefik.io/skyrocketing-hardware-costs-and-the-case-for-virtualization</link>
            <guid isPermaLink="true">https://traefik.io/skyrocketing-hardware-costs-and-the-case-for-virtualization</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Strategy]]></category>
            <category><![CDATA[Virtual Machines]]></category>
            <dc:creator><![CDATA[Sudeep Goswami]]></dc:creator>
            <pubDate>Thu, 19 Mar 2026 15:55:44 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/03/hardware-cost-blog-image-no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;graphic showing servers as a bar graph going up as cost goes up&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/03/hardware-cost-blog-image-no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/03/hardware-cost-blog-image-no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/03/hardware-cost-blog-image-no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/03/hardware-cost-blog-image-no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;At NVIDIA GTC this week, the chairman of &lt;a href=&quot;https://eng.sk.com/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;SK Group&lt;/a&gt;, which controls the world&apos;s largest supplier of high-bandwidth memory, told reporters that the global chip wafer shortage will likely persist until 2030. Not this year. Not next year. 2030.&lt;/p&gt;&lt;p&gt;The wafer supply deficit is running above 20% industry-wide. New fabrication capacity takes four to five years to come online. The root cause is not a temporary demand spike but a structural reallocation: AI infrastructure requires high-bandwidth memory at a scale that is pulling cleanroom capacity away from the standard DRAM and NAND that conventional enterprise servers depend on.&lt;/p&gt;&lt;p&gt;This is the environment in which enterprise IT leaders are operating for the foreseeable future. Hardware costs more. Hardware takes longer to arrive. And the old economics of traditional procurement, buying more capacity when you need more performance, no longer hold.&lt;/p&gt;&lt;p&gt;None of that changes the fact that compute, storage, and networking remain the foundation of every system. You cannot run workloads without them. But when that foundation costs more and takes longer to arrive, every layer of the stack that consumes hardware inefficiently becomes a liability.&lt;/p&gt;&lt;p&gt;Which raises the question every CIO should be asking: where in your architecture are you still consuming hardware for something software can do better?&lt;/p&gt;&lt;h2 id=&quot;the-case-for-virtualization-has-never-been-stronger&quot;&gt;The Case for Virtualization Has Never Been Stronger&lt;/h2&gt;&lt;p&gt;Virtualization has been extending the life and efficiency of hardware for over two decades. What is new is the urgency. When DRAM prices surge nearly 95% in a single year and wafer supply is projected to stay constrained through the end of the decade, the cost of inefficiency at every layer of the stack compounds rapidly.&lt;/p&gt;&lt;p&gt;The question is no longer whether or not to virtualize. It is whether or not you have pushed virtualization far enough up the stack.&lt;/p&gt;&lt;p&gt;Most enterprises have virtualized compute. Many have virtualized storage. A growing number have virtualized networking at the infrastructure layer. But one layer consistently lags: application delivery.&lt;/p&gt;&lt;p&gt;Load balancers. Web application firewalls. API gateways. These functions still run on dedicated hardware appliances or on virtual appliances that behave like hardware and carry hardware-level cost, in the majority of enterprise environments. In a world where every rack unit needs to justify itself, that gap is no longer defensible.&lt;/p&gt;&lt;h2 id=&quot;what-a-software-defined-gateway-actually-delivers&quot;&gt;What a Software-Defined Gateway Actually Delivers&lt;/h2&gt;&lt;p&gt;A traditional application delivery architecture places purpose-built appliances at fixed points in the traffic path. One device handles external load balancing. Another manages internal routing. A third handles API authentication. A fourth inspects traffic for threats. Each is a capital expense, a configuration boundary, a failure domain, and a refresh cycle.&lt;/p&gt;&lt;p&gt;A software-defined gateway collapses all of those discrete points into a single programmable control plane. Whether running inside a VM on an existing virtualization platform or natively within a container environment, traffic is handled end-to-end by software: routing, TLS termination, authentication, rate limiting, circuit breaking, and observability. Policy is expressed as code. It is version-controlled, reproducible, and auditable. No firmware update or vendor support call required.&lt;/p&gt;&lt;p&gt;The performance argument for dedicated hardware has been closed for years. Modern software-defined gateways running on standard infrastructure handle enterprise traffic at scale with the observability and programmability that hardware appliances were never designed to provide.&lt;/p&gt;&lt;p&gt;The remaining argument for hardware appliances is inertia, not capability.&lt;/p&gt;&lt;h2 id=&quot;portable-vs-proprietary&quot;&gt;Portable vs Proprietary&lt;/h2&gt;&lt;p&gt;Not all software-defined gateway solutions are equal, and the distinction matters more today than ever.&lt;/p&gt;&lt;p&gt;Some virtual appliances are software in name only. They run inside a specific hypervisor, require a particular vendor&apos;s control plane, or are licensed as part of a broader virtualization platform. These tools reduce hardware costs at the margin, but they substitute one form of lock-in for another. The procurement burden shifts; the architectural constraint does not.&lt;/p&gt;&lt;p&gt;The value of a truly software-defined gateway comes from its portability. A gateway that is environment-agnostic, hypervisor-agnostic, and location-agnostic runs identically whether deployed as a VM on an existing virtualization platform, as a workload inside a container environment, in a private data center, in a colocation facility, or in an air-gapped deployment with no external connectivity. Configuration is portable. Policy is portable. Observability is portable. The platform beneath you can change, and in 2026, platforms do change, without requiring you to re-architect the application delivery layer on top.&lt;/p&gt;&lt;p&gt;The right frame is not hardware versus software. It is portable versus proprietary.&lt;/p&gt;&lt;h2 id=&quot;two-forcing-functions-arriving-at-the-same-time&quot;&gt;Two Forcing Functions Arriving at the Same Time&lt;/h2&gt;&lt;p&gt;The hardware economics argument is compelling on its own. But for much of the enterprise market, it is arriving alongside two platform-level disruptions that make the application delivery decision not just strategic but immediate.&lt;/p&gt;&lt;h3 id=&quot;vmware-migrations&quot;&gt;VMware Migrations&lt;/h3&gt;&lt;p&gt;The Broadcom acquisition of VMware has triggered one of the most consequential infrastructure re-evaluation cycles in a generation. Enterprises that built their virtualization strategy around vSphere and NSX are now reassessing licensing costs, platform dependencies, and long-term roadmaps. Many are moving workloads to alternative virtualization platforms. Some are accelerating their shift to containerized environments. All of them are asking the same question: which components of our stack do we carry forward, and which do we replace with something better?&lt;/p&gt;&lt;p&gt;VMware-bundled load balancing and gateway capabilities are, by definition, VMware-dependent. An enterprise migrating off VMware cannot lift those components and drop them into a new environment. It needs an application gateway that is platform-independent from the ground up. That is an architectural requirement, not a preference.&lt;/p&gt;&lt;h3 id=&quot;ingress-nginx-end-of-life&quot;&gt;Ingress NGINX End-of-Life&lt;/h3&gt;&lt;p&gt;For enterprises running containerized workloads, a parallel forcing function is already underway. Ingress NGINX, the most widely deployed Kubernetes ingress controller in production, &lt;a href=&quot;https://traefik.io/blog/the-ultimate-ingress-nginx-migration-kit?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;announced end-of-life&lt;/a&gt;. This is not a minor dependency update, it is an architectural decision point.&lt;/p&gt;&lt;p&gt;The ingress layer is where external traffic enters, TLS terminates, routing decisions are made, and API governance begins. Replacing it isn’t a migration task, it means deciding what the next architecture looks like. Organizations that take the opportunity to rearchitect will&amp;nbsp; come out with a gateway layer that is more capable, more portable, and substantially less expensive than what they are replacing.&lt;/p&gt;&lt;p&gt;Both forcing functions are active simultaneously. Each, on its own, is a sufficient reason to revisit the application delivery layer. Together, they represent a generational consolidation opportunity.&lt;/p&gt;&lt;h2 id=&quot;migrate-modernize-transform&quot;&gt;Migrate. Modernize. Transform.&lt;/h2&gt;&lt;p&gt;Enterprises are currently in all three phases of infrastructure evolution simultaneously:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;They are &lt;strong&gt;migrating&lt;/strong&gt;: off VMware, off Ingress NGINX, off legacy appliances that cannot follow workloads to new environments.&lt;/li&gt;&lt;li&gt;They are &lt;strong&gt;modernizing&lt;/strong&gt;: replacing hardware-dependent components with software-defined alternatives that are portable, programmable, and environment-agnostic.&lt;/li&gt;&lt;li&gt;They are &lt;strong&gt;transforming&lt;/strong&gt;: deploying AI-powered applications, agent workflows, and model inference infrastructure that require governance capabilities hardware appliances were never designed to provide.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The risk in navigating all three individually is fragmentation. Each transition, approached in isolation, produces a new policy boundary, a new configuration silo, and a new governance gap. Audit risk compounds. Policy drift accumulates. Operational drag becomes structural.&lt;/p&gt;&lt;p&gt;The answer is a single software-defined gateway that follows workloads through migration, enforces consistent policy through modernization, and extends to govern AI traffic through transformation. One control plane. Consistent policy. No hardware in the critical path.&lt;/p&gt;&lt;p&gt;That control plane also serves as the enforcement point for AI governance: inspecting model requests before they reach an endpoint, enforcing authentication on agent calls, rate-limiting inference traffic by identity, and routing to different model versions based on policy. None of this requires a new appliance. It is a configuration change on the same gateway already managing the rest of your application traffic.&lt;/p&gt;&lt;h2 id=&quot;see-it-in-production&quot;&gt;See It in Production&lt;/h2&gt;&lt;p&gt;At KubeCon EU in Amsterdam next week, the Traefik Labs team will demonstrate exactly how this architecture operates in practice: software-defined ingress, API governance, and AI traffic management running on a single,&amp;nbsp;environment-agnostic, hypervisor-agnostic, and location-agnostic control plane, with no hardware appliances in the critical path.&lt;/p&gt;&lt;p&gt;If you are working through a VMware migration, an ingress modernization, or the infrastructure layer for AI applications, we would welcome the conversation. &lt;strong&gt;Our team will be at Booth #981&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;The hardware constraint is not going away before 2030. The enterprises that use this moment to unify their migration, modernization, and transformation onto a single portable gateway will carry a structural advantage that outlasts the current supply cycle.&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[OpenClaw is Having Its Enterprise Moment, But Application-Layer Governance with NemoClaw Isn't Enough]]></title>
            <description><![CDATA[NemoClaw adds application-layer security to OpenClaw, but that's not enough. See why you also need AI, MCP, and API security at the gateway-layer.]]></description>
            <link>https://traefik.io/openclaw-nemoclaw-and-application-layer-security</link>
            <guid isPermaLink="true">https://traefik.io/openclaw-nemoclaw-and-application-layer-security</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[News]]></category>
            <category><![CDATA[Strategy]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <category><![CDATA[MCP Gateway]]></category>
            <category><![CDATA[Security]]></category>
            <dc:creator><![CDATA[Sudeep Goswami]]></dc:creator>
            <pubDate>Wed, 18 Mar 2026 16:33:31 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/03/nemoclaw-blog-image-no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/03/nemoclaw-blog-image-no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/03/nemoclaw-blog-image-no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/03/nemoclaw-blog-image-no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/03/nemoclaw-blog-image-no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;There is a specific kind of moment in enterprise technology that repeats itself with uncomfortable regularity. Something built for individuals gets handed to organizations, and nobody has figured out the governance story yet.&lt;/p&gt;&lt;p&gt;It happened with the cloud. The moment Amazon launched EC2, developers started spinning up servers on personal credit cards. It took years for the enterprise to catch up on IAM policies, cost governance, and audit trails. The capability arrived long before the controls did.&lt;/p&gt;&lt;p&gt;It happened again with SaaS. By the time IT leaders understood what Dropbox was doing on their networks, half the organization had already stored sensitive documents on personal accounts. Shadow IT emerged as a category because the tools moved faster than the institutions.&lt;/p&gt;&lt;p&gt;That moment is here again with AI agents. And the signal worth watching most closely right now is what just happened to OpenClaw.&lt;/p&gt;&lt;h2 id=&quot;from-developer-favorite-to-enterprise-infrastructure&quot;&gt;From Developer Favorite to Enterprise Infrastructure&lt;/h2&gt;&lt;p&gt;OpenClaw started as an open-source personal AI agent gateway, a tool that lets individual developers connect chat applications to AI models and local tools. It caught fire. 247k+ GitHub stars. 47k+ forks. The kind of organic adoption that does not happen because of marketing, it happens because engineers found something genuinely useful and started sharing it.&lt;/p&gt;&lt;p&gt;The creator, Peter Steinberger, joined OpenAI in early 2026. And then NVIDIA did something that tells you everything about where agentic AI is headed.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-209462438701&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;209462438701&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLKvoouN50h5anhDN8DT%2F1%2Bpt3i%2BJTGstBHQ%2FZrz94d9F0%2Fzb2r2VZr63asOyP5R9sQJI6oIBFZTm1Fn9lNBhUn9z%2FUHsyecDuuj%2FRpWWhkZDpauc993cbXuBqF6Ft8wpLOyMhIdhl3RrpGbwK8Zmtd9zXsRSkQPGJAzGoutKoh0yUlNzNo9ofSEeJerBvW1qYaVsOpDizs49QzyUR5%2BjQ%3D%3D&amp;webInteractiveContentId=209462438701&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;7cs-ai-governance-ebook-promo-square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-209462438701.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;At GTC 2026, &lt;a href=&quot;https://nvidianews.nvidia.com/news/nvidia-announces-nemoclaw?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Jensen Huang unveiled NemoClaw&lt;/u&gt;&lt;/a&gt;, describing it as &quot;30 years of NVIDIA computing, distilled into an agent platform.&quot; NemoClaw builds on what OpenClaw built for individuals and adds enterprise-grade architecture on top: multi-agent orchestration, hierarchical task delegation, signed skill registries, role-based access controls, audit logging, and deterministic logic for verifiable tool call sequences. It supports the Model Context Protocol natively, connects to the Agent-to-Agent protocol, runs on Nemotron models at 30B, 120B, and 500B parameter scale, and integrates with Salesforce, Cisco, Adobe, Google Cloud, and CrowdStrike out of the box.&lt;/p&gt;&lt;p&gt;This is not a library. Not a framework. It is the operating system of agentic computers — open-source under Apache 2.0, with a paid tier for managed infrastructure and compliance tooling.&lt;/p&gt;&lt;blockquote&gt;&lt;em&gt;This is the enterprise moment. And it changes what every CISO, Chief AI Officer, and platform architecture leader needs to be thinking about right now.&lt;/em&gt;&lt;/blockquote&gt;&lt;h2 id=&quot;what-nvidia-got-right&quot;&gt;What NVIDIA Got Right&lt;/h2&gt;&lt;p&gt;The governance capabilities built into NemoClaw are real and meaningful.&lt;/p&gt;&lt;p&gt;Enterprise role-based access controls on agent identities, so the finance agent and the customer support agent do not share credentials or capability sets. Signed skills, so the tools available to agents cannot be silently modified by a supply chain compromise. Step-level policy checks before every tool invocation, so an agent cannot take an action the platform has not explicitly authorized. Comprehensive audit logging at the orchestration layer.&lt;/p&gt;&lt;p&gt;These are not checkbox compliance features. They represent serious architectural thinking about what makes agentic AI deployable inside organizations with actual security programs.&lt;/p&gt;&lt;p&gt;NemoClaw&apos;s launch confirms what practitioners have been arguing for two years: enterprise agent governance is a mainstream requirement, not a niche concern. NVIDIA, with all its platform credibility and hardware distribution power, is now building it into a flagship product. That is a meaningful signal.&lt;/p&gt;&lt;p&gt;But the existence of application-layer governance does not imply complete governance. That distinction is where the real architectural question begins.&lt;/p&gt;&lt;h2 id=&quot;one-governance-layer-is-never-enough&quot;&gt;One Governance Layer Is Never Enough&lt;/h2&gt;&lt;p&gt;The foundational principle of enterprise security is Defense-in-depth: no single control is trusted to stand alone. Every meaningful security architecture deploys independent enforcement at multiple layers, so that a failure, bypass, or compromise at one layer does not collapse the entire posture.&lt;/p&gt;&lt;p&gt;This principle predates AI agents by decades. It is why organizations run both endpoint detection and network monitoring. It is why zero-trust architectures do not simply trust identity at login and then grant full access. It is why the firewall analogy holds so cleanly: application firewalls understand business logic and enforce policy with context, but network firewalls enforce at a layer the application cannot reach. The answer has never been one or the other. It has always been both.&lt;/p&gt;&lt;p&gt;NemoClaw&apos;s governance is application-layer governance. Its guards operate inside the agent runtime, coupled with the agent itself. The access control policies, the signed skill checks, the deterministic logic engine, the audit logs, all of these run within the same process that is being governed. &lt;strong&gt;A compromise to the agent also compromises the guards that are governing it.&lt;/strong&gt; This is not a design flaw. It is the nature and limitation of tightly coupled application-layer controls, and it is exactly what Defense-in-depth says is necessary but not sufficient.&lt;/p&gt;&lt;p&gt;Consider what happens when a NemoClaw agent makes an inference call to a Nemotron model. The request leaves the agent runtime and travels across the network to an endpoint. At that moment, one cannot be sure whether NemoClaw&apos;s governance allowed it because it&apos;s a legitimate request or because its governance was also compromised along with the agent. Its governance might allow the payload to contain PII from a customer database. It might be a prompt injection payload embedded in a tool response. Also, application-layer controls cannot enforce a token budget at the network layer before GPU cycles are consumed. It cannot verify that the specific parameters in an MCP tool call, not just the tool class, but the actual values, conform to the organization&apos;s security policy.&lt;/p&gt;&lt;blockquote&gt;&lt;em&gt;This is not a gap unique to NemoClaw. It is inherent to any system that governs from the inside out. And it is precisely the gap that the defense-in-depth principle exists to close.&lt;/em&gt;&lt;/blockquote&gt;&lt;h2 id=&quot;the-triple-gate-defense-in-depth-made-concrete&quot;&gt;The Triple Gate: Defense-in-Depth Made Concrete&lt;/h2&gt;&lt;p&gt;Applying Defense-in-depth to NemoClaw deployments means identifying the distinct traffic vectors generated by agents and placing independent enforcement at each.&lt;/p&gt;&lt;p&gt;NemoClaw agents generate three kinds. Every inference call to a language model. Every MCP tool invocation. Every request to the agent management and orchestration APIs. Three vectors, each carrying different risks, each requiring its own enforcement point.&lt;/p&gt;&lt;p&gt;This is the architecture Traefik Hub&apos;s Triple Gate Pattern addresses directly.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The AI Gateway&lt;/strong&gt; sits in front of every inference call a NemoClaw agent makes, to Nemotron, to OpenAI, to Anthropic, to any model endpoint. It runs a four-tier safety pipeline: pattern-matching for injection signatures and PII formats, real-time PII redaction, NVIDIA Safety NIMs for topic control and jailbreak detection, and response-side hallucination scoring. This pipeline runs at the traffic layer, independently of NemoClaw&apos;s internal guardrails. If the agent runtime is compromised, the AI Gateway continues to run. It also enforces token rate limits per agent, per team, and per API key, a hard network-layer stop that operates before GPU resources are allocated.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The MCP Gateway&lt;/strong&gt; sits in front of every tool invocation. NemoClaw&apos;s role-based controls determine which tools an agent role is permitted to use. The MCP Gateway enforces at the parameter level, the specific values being passed, the specific data being accessed, the specific operations being requested, against infrastructure-layer policy that exists independently of the agent runtime. This is the enforcement layer that catches tool-call escalations even when the tool call itself is legitimately authorized. Refusals are returned as structured responses that NemoClaw agents handle gracefully, without crashing workflows.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The API Gateway&lt;/strong&gt; governs the NemoClaw management plane itself, the agent configuration endpoints, monitoring interfaces, and orchestration APIs that constitute the control surface of any NemoClaw deployment. These endpoints are attack surfaces in their own right. The API Gateway enforces authentication, rate limiting, schema validation, and WAF rules against the OWASP threat model, independent of anything running inside the NemoClaw runtime.&lt;/p&gt;&lt;p&gt;Three gateways. Three enforcement points. Each layer is independent. Each layer covers attack surfaces that the others do not reach. This is Defense-in-depth applied to the specific topology of enterprise agent deployments.&lt;/p&gt;&lt;h2 id=&quot;four-scenarios-that-illustrate-the-need-for-defense-in-depth&quot;&gt;Four Scenarios That Illustrate the Need for Defense-in-Depth&lt;/h2&gt;&lt;p&gt;Defense-in-depth only has value if it addresses real attack vectors. These four scenarios are representative of what enterprise deployments will face.&lt;/p&gt;&lt;h3 id=&quot;1-prompt-injection-via-tool-response&quot;&gt;1. Prompt Injection via Tool Response&lt;/h3&gt;&lt;p&gt;An agent calls an external tool and receives a response. Embedded in that response is a carefully crafted instruction designed to redirect the agent&apos;s next action. NemoClaw processes this at the application layer after it has already been ingested by the runtime. The AI Gateway intercepts the tool response before the agent sees it, running it through the safety pipeline at the traffic layer. The injection never reaches the runtime.&lt;/p&gt;&lt;h3 id=&quot;2-token-drain-via-recursive-calls&quot;&gt;2. Token Drain via Recursive Calls&lt;/h3&gt;&lt;p&gt;A misbehaving agent triggers recursive inference loops. NemoClaw&apos;s resource budgets are soft limits enforced inside the runtime. If the runtime is in a problematic state, those budgets may not hold. The AI Gateway&apos;s token rate limiting is a hard stop at the network layer, applied before inference requests reach the GPU cluster. No compute is consumed, regardless of the runtime&apos;s state.&lt;/p&gt;&lt;h3 id=&quot;3-mcp-tool-escalation-via-parameter-crafting&quot;&gt;3. MCP Tool Escalation via Parameter Crafting &lt;/h3&gt;&lt;p&gt;An agent constructs a tool call in which the tool itself is authorized under its role, but the parameters are crafted to exceed the intended scope. NemoClaw&apos;s role-based controls authorize the tool class. The MCP Gateway validates the specific parameters against infrastructure-layer policy at the network layer, independently of the runtime. The escalation attempt fails at the enforcement point closest to the tool.&lt;/p&gt;&lt;h3 id=&quot;4-pii-leakage-in-inference-responses&quot;&gt;4. PII Leakage in Inference Responses &lt;/h3&gt;&lt;p&gt;A model response contains customer personally identifiable information that was present in the context window but was not intentionally requested. NemoClaw logs the interaction after the fact. The AI Gateway operates bidirectionally on the traffic itself, redacting PII in both requests and responses before they move further in the chain. Whether the agent requested the data or received it incidentally, anything that crosses the network gets inspected and sanitized before it travels further.&lt;/p&gt;&lt;p&gt;In each scenario, the enforcement point that stops the incident is independent of the agent runtime. That independence is exactly what Defense-in-depth requires.&lt;/p&gt;&lt;h2 id=&quot;the-architecture-choice-that-only-gets-made-once&quot;&gt;The Architecture Choice That Only Gets Made Once&lt;/h2&gt;&lt;p&gt;When enterprise leaders evaluate NemoClaw deployments, the real decision is not which agent platform to use. NemoClaw is genuinely compelling and will see serious adoption. The decision is whether to deploy it with only application-layer governance or with the full defense-in-depth posture demanded by the threat landscape.&lt;/p&gt;&lt;p&gt;That choice compounds over time. Teams that build governed agent infrastructure now, with the agent runtime owning application-layer governance and the Triple Gate owning traffic governance, will move faster as the agent landscape expands. Their security posture does not depend on any single component being uncompromised. Their compliance story holds up to auditors who understand Defense-in-depth. Their cost controls operate at the network layer, where they cannot be bypassed by a misbehaving agent.&lt;/p&gt;&lt;p&gt;Teams that deploy with only application-layer governance will eventually encounter an incident that exposes the gap. Retrofitting infrastructure controls into a production system under pressure is the most expensive way to build them.&lt;/p&gt;&lt;h2 id=&quot;what-this-means-for-platform-decisions&quot;&gt;What This Means for Platform Decisions&lt;/h2&gt;&lt;p&gt;For security leaders evaluating agent deployments, the question to put to architecture teams is direct: does our governance posture reflect Defense-in-depth, or does it rely on a single enforcement layer inside the agent runtime? If the runtime is degraded or compromised, what remains?&lt;/p&gt;&lt;p&gt;For Chief AI Officers enabling agentic workflows at scale, the infrastructure layer is what enables scalable governance without becoming a bottleneck. A policy enforced at the network layer applies to every agent, regardless of which framework built it, which runtime runs it, or which vendor&apos;s model it calls. That universality is the difference between governance that scales and governance that requires a new exception for every new deployment.&lt;/p&gt;&lt;p&gt;For platform architecture leaders, the Triple Gate model maps cleanly to a separation of concerns that infrastructure teams already understand. The agent platform team owns the runtime governance. The platform infrastructure team owns the traffic governance. Neither depends on the other to do its job, and a compromise of one does not take down both.&lt;/p&gt;&lt;h2 id=&quot;the-broader-signal&quot;&gt;The Broader Signal&lt;/h2&gt;&lt;p&gt;NVIDIA building enterprise governance into NemoClaw confirms that the demand for governed agents is now mainstream enough to justify a platform-level investment from one of the most capital-efficient organizations in technology history. Jensen Huang does not build products for markets that do not exist.&lt;/p&gt;&lt;p&gt;What NemoClaw does not include, the API gateway in front of agent endpoints, the safety pipeline on inference traffic, the infrastructure-level MCP authorization, the token rate limiting at the network layer, is not an oversight. It is a scope decision. NVIDIA&apos;s business is silicon and model infrastructure. Agent governance at the traffic layer is a different problem, one that requires deep integration with Kubernetes ingress, API gateway protocols, and network-layer traffic management.&lt;/p&gt;&lt;blockquote&gt;&lt;em&gt;That scope decision is not a gap NVIDIA needs to fill. It is the natural boundary where the agent runtime ends and the infrastructure governance layer begins — the boundary where defense-in-depth becomes operational.&lt;/em&gt;&lt;/blockquote&gt;&lt;p&gt;The organizations that understand this, that see NemoClaw&apos;s application-layer governance and Traefik&apos;s Triple Gate as two halves of a complete defense-in-depth posture, are the ones that will deploy AI agents at enterprise scale without discovering their assumptions were wrong after the fact.&lt;/p&gt;&lt;p&gt;OpenClaw had its enterprise moment at GTC 2026. Defense-in-depth is what turns that moment into a durable foundation.&lt;/p&gt;&lt;p&gt;&lt;em&gt;To see how Traefik Hub&apos;s Triple Gate architecture provides infrastructure-level governance for NemoClaw deployments, see &lt;/em&gt;&lt;a href=&quot;https://traefik.io/blog/the-triple-ai-security-gap?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;em&gt;this blog post&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-209462438701&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;209462438701&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLKvoouN50h5anhDN8DT%2F1%2Bpt3i%2BJTGstBHQ%2FZrz94d9F0%2Fzb2r2VZr63asOyP5R9sQJI6oIBFZTm1Fn9lNBhUn9z%2FUHsyecDuuj%2FRpWWhkZDpauc993cbXuBqF6Ft8wpLOyMhIdhl3RrpGbwK8Zmtd9zXsRSkQPGJAzGoutKoh0yUlNzNo9ofSEeJerBvW1qYaVsOpDizs49QzyUR5%2BjQ%3D%3D&amp;webInteractiveContentId=209462438701&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;7cs-ai-governance-ebook-promo-square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-209462438701.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[The McKinsey Breach Was SQL Injection. The Real Threat Was 95 Writable System Prompts.]]></title>
            <description><![CDATA[CodeWall's breach of McKinsey is less about SQLi attacks & more about AI governance. API & AI security at the gateway-layer would have stopped it all.]]></description>
            <link>https://traefik.io/mckinsey-breach-is-about-ai-governance</link>
            <guid isPermaLink="true">https://traefik.io/mckinsey-breach-is-about-ai-governance</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[News]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <category><![CDATA[MCP Gateway]]></category>
            <dc:creator><![CDATA[Zaid Albirawi, Immánuel Fodor]]></dc:creator>
            <pubDate>Tue, 17 Mar 2026 17:47:53 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/03/mckinsey-blog-image-no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;image of mckinsey breach&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/03/mckinsey-blog-image-no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/03/mckinsey-blog-image-no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/03/mckinsey-blog-image-no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/03/mckinsey-blog-image-no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;&lt;em&gt;An autonomous AI agent breached one of the world&apos;s most prestigious consulting firms in two hours. The vulnerability was 20 years old. The implications are brand new.&lt;/em&gt;&lt;/p&gt;&lt;h2 id=&quot;the-attack-chain&quot;&gt;The Attack Chain&lt;/h2&gt;&lt;p&gt;On March 9, 2026, security startup CodeWall &lt;a href=&quot;https://codewall.ai/blog/how-we-hacked-mckinseys-ai-platform?ref=containous.ghost.io&quot;&gt;&lt;u&gt;disclosed&lt;/u&gt;&lt;/a&gt; that its autonomous offensive AI agent had achieved full read-write access to McKinsey&apos;s internal AI platform, Lilli, in under two hours. The agent operated with no credentials, no insider access, and no human in the loop.&lt;/p&gt;&lt;p&gt;The attack chain was startlingly simple. Of Lilli&apos;s 200+ API endpoints, 22 required no authentication whatsoever. The agent discovered that while user input values were properly parameterized in SQL queries (the standard defense against injection), the JSON field names were concatenated directly into SQL without sanitization. When database error messages began reflecting live production data, the agent recognized a classic error-based SQL injection vector and began extracting data iteratively.&lt;/p&gt;&lt;p&gt;The result: access to 46.5 million plaintext chat messages covering strategy, M&amp;amp;A, and client engagements. 728,000 files, including PDFs, Excel spreadsheets, and PowerPoint decks. 57,000 user accounts. 266,000+ OpenAI vector stores. 3.68 million RAG document chunks. And 95 system prompts across 12 model types.&lt;/p&gt;&lt;p&gt;All writable.&lt;/p&gt;&lt;p&gt;McKinsey patched the vulnerabilities within hours of disclosure, engaged a third-party forensics firm, and stated that no evidence of unauthorized client data access was found. CodeWall operated under McKinsey&apos;s public HackerOne responsible disclosure program. The response was swift and professional.&lt;/p&gt;&lt;p&gt;But the structural lessons are too important to let pass quietly.&lt;/p&gt;&lt;h2 id=&quot;this-is-not-a-data-breach-story&quot;&gt;This Is Not a Data Breach Story&lt;/h2&gt;&lt;p&gt;Every headline focused on the data: 46.5 million messages, 728,000 files, the sheer volume of sensitive information exposed. Those numbers are staggering, and they deserve attention. But they are not the most important part of this story.&lt;/p&gt;&lt;p&gt;The most important detail is that 95 system prompts were writable.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-209462438701&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.5500030517578px; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;209462438701&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJVeKgHPxWFwDl4%2BJ5KoDcPh2njQc5%2BSAaV%2FCrV1g%2FNKS8rCqG2JO9rno5gnRGhV%2FnV47Gb6gd2E0USqD88pFHstBb1Bme4toFeqMPrdNU4bnY8MoMcD3B7oCCXcoCTOgW2C9DNHnoZR%2BbBA9%2F07AA9mdOR0YB1pTkcDtD0T88a81VQ0bjY5cUcvxaabW1Zv0lsQDQP%2FkzwgC5tga6dOQ%3D%3D&amp;webInteractiveContentId=209462438701&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;7cs-ai-governance-ebook-promo-square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-209462438701.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;Lilli is used by over 40,000 McKinsey consultants, and processes more than 500,000 prompts per month. Consultants rely on it for strategy research, competitive analysis, M&amp;amp;A evaluation, and client recommendations. The system prompts define how Lilli thinks: what it recommends, what it refuses, how it cites sources, and what guardrails it follows.&lt;/p&gt;&lt;p&gt;As CodeWall put it in their report: &quot;No deployment needed. No code change. Just a single UPDATE statement wrapped in a single HTTP call.&quot;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;A threat actor with write access to those prompts could have silently rewritten how Lilli frames competitive landscapes, evaluates acquisition targets, or assesses risk. The poisoned output would flow directly into deliverables for Fortune 500 clients. No one receiving the advice would know it had been tampered with.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;This is not a data breach. It is a supply chain attack vector for corporate decision-making itself.&lt;/p&gt;&lt;p&gt;And it gets worse. The same vulnerability exposed 266,000+ OpenAI vector stores and 3.68 million RAG document chunks. These are the knowledge bases that Lilli retrieves from and synthesizes when answering questions. An attacker with write access to both system prompts and RAG stores could manipulate not just how the AI reasons, but also the source material it draws from. The poisoning would be nearly undetectable.&lt;/p&gt;&lt;h2 id=&quot;the-root-cause-is-architectural&quot;&gt;The Root Cause Is Architectural&lt;/h2&gt;&lt;p&gt;It is tempting to reduce this breach to a single attack vector: SQL injection, one of the oldest vulnerability classes in web security. And yes, it is remarkable that a production AI platform serving 40,000 users in 2026 shipped with an OWASP Top 10 vulnerability. But blaming the developers misses the point.&lt;/p&gt;&lt;p&gt;McKinsey&apos;s team did the standard thing. They parameterized user input values in their SQL queries. They followed the textbook. What they missed was that JSON field names were also being concatenated into SQL, an unusual injection vector that standard scanners like OWASP ZAP do not typically test for.&lt;/p&gt;&lt;p&gt;The real failure is not that a developer missed an edge case. &lt;strong&gt;The real failure is that the architecture had no independent layers of defense between the internet and the production database.&lt;/strong&gt; No request inspection at the gateway. No authentication on 22 endpoints. No content safety checks on the AI pipeline. No access governance for agents or automated callers.&lt;/p&gt;&lt;p&gt;The application was the only line of defense. When it failed, everything behind it was exposed.&lt;/p&gt;&lt;p&gt;This is the architectural lesson: application-level security is necessary but never sufficient. You cannot rely on every developer getting every edge case right across every endpoint in every release. You need independent enforcement at the infrastructure layer, inspecting and governing traffic before it ever reaches application code.&lt;/p&gt;&lt;h2 id=&quot;defense-in-depth-for-the-ai-era-the-triple-gate-pattern&quot;&gt;Defense in Depth for the AI Era: The Triple Gate Pattern&lt;/h2&gt;&lt;p&gt;At Traefik Labs, we have been building toward this exact threat model. The &lt;a href=&quot;https://traefik.io/blog/the-triple-ai-security-gap?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Triple Gate Pattern&lt;/u&gt;&lt;/a&gt; is an architecture for defense in depth across the full AI execution path: from HTTP requests to LLM interactions to agent tool calls. Three independent gates, each operating on different principles, each enforcing policy at the infrastructure layer, independent of the application runtime.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/03/triple-gate-blog-diagram.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Diagram: The Triple Gate Pattern with API Gateway, AI Gateway, and MCP Gateway in one.&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;713&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/03/triple-gate-blog-diagram.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/03/triple-gate-blog-diagram.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/03/triple-gate-blog-diagram.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/03/triple-gate-blog-diagram.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Diagram: The Triple Gate Pattern&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;Let&apos;s walk through the McKinsey attack chain and show how each gate addresses a specific class of failure.&lt;/p&gt;&lt;h3 id=&quot;gate-1-api-gateway%E2%80%94authentication-waf-and-runtime-api-governance&quot;&gt;Gate 1: API Gateway—Authentication, WAF, and Runtime API Governance&lt;/h3&gt;&lt;p&gt;The first gate governs all HTTP traffic entering your infrastructure. It enforces authentication, authorization, rate limiting, schema validation, and web application firewall (WAF) protection.&lt;/p&gt;&lt;p&gt;This is where the McKinsey breach would have been stopped cold.&lt;/p&gt;&lt;p&gt;Traefik Hub&apos;s API Gateway natively integrates the &lt;a href=&quot;https://traefik.io/solutions/waf?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Coraza WAF&lt;/u&gt;&lt;/a&gt; with OWASP Core Rule Set (CRS) support. The CRS is a community-maintained, battle-tested collection of attack detection rules that has closed over 500 rule bypasses through its own bug bounty program. SQL injection detection is one of its most mature capabilities.&lt;/p&gt;&lt;p&gt;CRS inspects the entire HTTP request payload for SQL injection patterns. It does not care whether the injection point is in a query parameter, a JSON value, or a JSON key. It scans the full request. McKinsey&apos;s developers missed the JSON key vector because they were thinking about parameterization at the application layer. A WAF at the gateway layer does not make that distinction. It would have flagged the injection pattern and blocked the request before a single byte reached the application.&lt;/p&gt;&lt;p&gt;And this is not a theoretical claim. SQL injection &lt;a href=&quot;https://www.darkreading.com/cyberattacks-data-breaches/sql-injection-attacks-represent-two-third-of-all-web-app-attacks?ref=traefik.io&quot;&gt;&lt;u&gt;accounts for roughly 65%&lt;/u&gt;&lt;/a&gt; of all web application attacks. It is the single most common attack class on the internet. The OWASP CRS exists precisely because you cannot trust application code alone to catch every variant.&lt;/p&gt;&lt;p&gt;But WAF is only &lt;em&gt;one&lt;/em&gt; capability within Gate 1. Even if an exotic injection variant somehow bypassed the WAF rules, the API Gateway enforces authentication and authorization on every endpoint. McKinsey&apos;s 22 unauthenticated endpoints would never have existed in this architecture. No valid identity token, no access. Zero trust at the API layer means every request is scoped, every call is auditable, and every endpoint is protected regardless of what the application code does or does not validate.&lt;/p&gt;&lt;p&gt;Traefik Hub&apos;s native Coraza integration runs at high performance because it is compiled directly into the gateway binary. No sidecar container. No separate appliance. No additional network hop. For organizations currently running ModSecurity as a separate layer in front of their ingress controller, this is a consolidation story: the WAF, the API gateway, and the ingress controller converge into a single platform with a single control plane.&lt;/p&gt;&lt;p&gt;Gate 1 alone would have prevented the McKinsey breach entirely. But defense in depth means you never rely on a single gate.&lt;/p&gt;&lt;h3 id=&quot;gate-2-ai-gateway%E2%80%94content-safety-guardrails-and-cost-controls&quot;&gt;Gate 2: AI Gateway—Content Safety, Guardrails, and Cost Controls&lt;/h3&gt;&lt;p&gt;The second gate governs the AI-specific traffic: LLM prompts, model responses, and the content flowing through the inference pipeline.&lt;/p&gt;&lt;p&gt;Even if an attacker bypasses Gate 1 and reaches the AI layer, Gate 2 provides independent enforcement. The AI Gateway sits between callers and the LLM backend, inspecting both inbound prompts and outbound responses against configurable safety policies.&lt;/p&gt;&lt;p&gt;In the McKinsey scenario, the most dangerous outcome was not data exfiltration. It was the ability to rewrite system prompts. A poisoned system prompt would change how Lilli responds to every query from every user. But if an AI Gateway with content-safety guardrails is inspecting every response, the poisoned outputs would need to survive those checks on every single inference call. A prompt rewritten to inject biased analysis, suppress certain topics, or leak confidential data would trigger content safety, topic control, or jailbreak detection guardrails on the response path.&lt;/p&gt;&lt;p&gt;With Traefik Hub v3.20, &lt;a href=&quot;https://www.businesswire.com/news/home/20260316864823/en/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;announced yesterday at NVIDIA GTC&lt;/u&gt;&lt;/a&gt;, the AI Gateway introduces a composable, multi-vendor safety pipeline with parallel guard execution. This means organizations can chain multiple high-latency guardrail providers (NVIDIA Safety NIMs, IBM Granite Guardian) and execute them in parallel rather than sequentially. The architectural insight is that safety layers must be composable and multi-vendor. No single guardrail provider catches everything. Parallel execution means you get multi-vendor coverage without the latency penalty.&lt;/p&gt;&lt;p&gt;Token-level cost controls, also new in v3.20, address another dimension of the McKinsey exposure. An attacker with write access to system prompts could inflate token usage massively: longer prompts, more verbose responses, and chain-of-thought reasoning injected into every query. At 500,000+ prompts per month, this becomes a &lt;a href=&quot;https://www.sciencedirect.com/science/article/pii/S221421262100079X?ref=containous.ghost.io&quot;&gt;&lt;u&gt;denial-of-wallet attack&lt;/u&gt;&lt;/a&gt;. Infrastructure-layer token rate limiting and quota management prevent this class of abuse before requests reach the model.&lt;/p&gt;&lt;p&gt;Multi-provider failover routing adds operational resilience. McKinsey was deeply coupled to OpenAI (evidenced by the 266,000+ vector stores). If your primary model provider&apos;s integration is compromised, multi-provider failover lets you route traffic to a secondary provider while the primary is under investigation.&lt;/p&gt;&lt;p&gt;Gate 2 ensures that even if the perimeter is breached, the AI pipeline itself has independent safety enforcement that an attacker cannot bypass by modifying application-layer configuration.&lt;/p&gt;&lt;h3 id=&quot;gate-3-mcp-gateway%E2%80%94agent-governance-and-access-control&quot;&gt;Gate 3: MCP Gateway—Agent Governance and Access Control&lt;/h3&gt;&lt;p&gt;The third gate governs what AI agents can do: which tools they can invoke, which tasks they are authorized for, which data they can read or write, and which operations they can perform.&lt;/p&gt;&lt;p&gt;This is the gate that addresses the most forward-looking dimension of the McKinsey breach. CodeWall&apos;s agent autonomously selected McKinsey as a target, mapped its attack surface, and executed a multi-step attack chain at machine speed. This is precisely the kind of autonomous agent behavior that enterprises are now deploying internally for legitimate purposes and that threat actors will weaponize externally.&lt;/p&gt;&lt;p&gt;The MCP Gateway enforces Task-Based Access Control (TBAC), an authorization model designed specifically for AI agents. Traditional API security (RBAC, OAuth scopes) was not built for autonomous callers that probe, adapt, and chain actions iteratively. TBAC scopes permissions to the actual work being done: which business tasks the agent is authorized to perform, which MCP tools it can access, and which exact operations and data resources it can touch.&lt;/p&gt;&lt;p&gt;In the McKinsey context, even if an autonomous agent somehow bypassed Gate 1 (WAF + API authentication) and Gate 2 (AI content safety), Gate 3 would constrain what the agent could actually do with any access it obtained. A TBAC policy can enforce that no caller, human or autonomous, has write access to system prompt tables through the MCP layer. Tool invocations are scoped, transactions are auditable, and permissions are enforced at the infrastructure layer, below the application runtime.&lt;/p&gt;&lt;p&gt;This last point is critical. Agent platforms are increasingly adding application-level governance: RBAC, audit logging, and signed skills. These controls are valuable, but they operate inside the agent runtime. If the runtime is compromised, as McKinsey&apos;s effectively was, so are the guardrails. Infrastructure-layer enforcement through the MCP Gateway operates independently of the agent platform, so even a compromised runtime cannot override the access policies.&lt;/p&gt;&lt;p&gt;Traefik Hub v3.20 also introduces graceful error handling for agent-aware enforcement. When a guardrail blocks a request, traditional gateways return an HTTP 403 response, breaking agent control flow and crashing multi-step workflows. Traefik Hub can now return structured, schema-compliant refusal responses that agents and applications process gracefully. The agent continues operating within its authorized scope. Middleware chains stay intact. Users see conversational refusals instead of technical errors. This is what makes the runtime governance agent-aware: enforcement that works with autonomous workflows rather than breaking them.&lt;/p&gt;&lt;h2 id=&quot;the-uncomfortable-question&quot;&gt;The Uncomfortable Question&lt;/h2&gt;&lt;p&gt;McKinsey will strengthen its security posture. They responded quickly, they engaged forensics, and they patched within hours. That deserves acknowledgement.&lt;/p&gt;&lt;p&gt;The uncomfortable question is not about McKinsey. It is about the thousands of enterprises that are deploying internal AI platforms right now with the same architectural gaps. No WAF on the AI endpoints. No authentication on development or staging APIs that quietly became production. No content safety guardrails independent of the model provider. No agent governance at the infrastructure layer.&lt;/p&gt;&lt;p&gt;Gartner &lt;a href=&quot;https://www.gartner.com/en/newsroom/press-releases/2025-08-26-gartner-predicts-40-percent-of-enterprise-apps-will-feature-task-specific-ai-agents-by-2026-up-from-less-than-5-percent-in-2025?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;u&gt;estimates that 40% of enterprise applications&lt;/u&gt;&lt;/a&gt; will incorporate AI agents by the end of 2026, up from less than 5% in 2025. The MCP ecosystem has grown to over 10,000 published servers. NVIDIA just unveiled NemoClaw at GTC 2026, bringing enterprise-grade agent orchestration to the NVIDIA stack.&lt;/p&gt;&lt;p&gt;The agents are coming. The attack surface is expanding at machine speed. And the defenses, in most organizations, are still designed for a world where humans typed queries into web forms and waited for responses.&lt;/p&gt;&lt;p&gt;Defense in depth is not a new concept. But the AI era demands a new implementation: one that governs not just HTTP traffic, but LLM content, model interactions, and autonomous agent behavior, all at the infrastructure layer, all enforced independently of the application code that will inevitably have bugs.&lt;/p&gt;&lt;p&gt;That is what the Triple Gate Pattern is for. And it is what we built Traefik Hub to deliver. Organizations already running Traefik Proxy for ingress can add the full API Gateway (with native WAF), AI Gateway, and MCP Gateway capabilities through a single in-place upgrade. No re-architecture. No traffic migration. No additional proxies in the data path. Three gates, one platform, one control plane.&lt;/p&gt;&lt;p&gt;The McKinsey breach is the proof point that this architecture is no longer optional.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-209462438701&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.5500030517578px; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;209462438701&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJVeKgHPxWFwDl4%2BJ5KoDcPh2njQc5%2BSAaV%2FCrV1g%2FNKS8rCqG2JO9rno5gnRGhV%2FnV47Gb6gd2E0USqD88pFHstBb1Bme4toFeqMPrdNU4bnY8MoMcD3B7oCCXcoCTOgW2C9DNHnoZR%2BbBA9%2F07AA9mdOR0YB1pTkcDtD0T88a81VQ0bjY5cUcvxaabW1Zv0lsQDQP%2FkzwgC5tga6dOQ%3D%3D&amp;webInteractiveContentId=209462438701&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;7cs-ai-governance-ebook-promo-square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-209462438701.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;&lt;em&gt;Traefik Hub v3.20, including the composable safety pipeline, multi-vendor guardrails with parallel execution, token-level cost controls, graceful agent-aware error handling, IBM Granite Guardian integration, and custom Regex Guards. &lt;/em&gt;&lt;a href=&quot;https://info.traefik.io/request-early-access?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;em&gt;&lt;u&gt;Sign up for Early Access&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt; or read the technical deep dive: &lt;/em&gt;&lt;a href=&quot;https://traefik.io/blog/building-multi-vendor-ai-safety-pipelines?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;em&gt;&lt;u&gt;From Regex to GPU: Building a Multi-Vendor AI Safety Pipeline&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;For a detailed overview of the Triple Gate Pattern and Traefik Hub&apos;s AI and MCP Gateway capabilities, visit &lt;/em&gt;&lt;a href=&quot;https://traefik.io/solutions/ai-gateway?ref=containous.ghost.io&quot;&gt;&lt;em&gt;&lt;u&gt;traefik.io/solutions/ai-gateway&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[From Regex to GPU: Building a Multi-Vendor AI Safety Pipeline with NVIDIA, IBM, Microsoft, and Custom Pattern Matching]]></title>
            <description><![CDATA[Explore Traefik Hub's new composable, multi-vendor safety pipeline capabilities—combine guardrail providers & run them in parallel—in this technical guide.]]></description>
            <link>https://traefik.io/building-multi-vendor-ai-safety-pipelines</link>
            <guid isPermaLink="true">https://traefik.io/building-multi-vendor-ai-safety-pipelines</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[News]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <category><![CDATA[MCP Gateway]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[NVIDIA]]></category>
            <category><![CDATA[IBM]]></category>
            <category><![CDATA[Microsoft]]></category>
            <dc:creator><![CDATA[Immánuel Fodor, Zaid Albirawi]]></dc:creator>
            <pubDate>Mon, 16 Mar 2026 15:19:57 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/03/regex-to-gpu-blog-image-no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Diagram of Multi-Vendor AI Safety Pipeline&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/03/regex-to-gpu-blog-image-no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/03/regex-to-gpu-blog-image-no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/03/regex-to-gpu-blog-image-no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/03/regex-to-gpu-blog-image-no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;AI runtime safety has always been about layers. No single guard catches everything. Deterministic pattern matching is fast, but it can&apos;t understand context. NLP-based entity detection catches structured PII but misses semantic threats. GPU-accelerated models understand nuance but add latency and cost. The right approach has always been&amp;nbsp;defense-in-depth: multiple guards, different detection methods, complementary coverage.&lt;/p&gt;&lt;p&gt;The problem is that defense-in-depth has historically meant stacking latency. Three guards running in series can add several seconds of enforcement overhead per request. In production, that&apos;s a non-starter. Organizations end up choosing between thorough protection and acceptable performance, deploying one or two guards instead of the four or five they&apos;d actually want.&lt;/p&gt;&lt;p&gt;Traefik Hub v3.20 changes this. The AI Gateway now supports a composable, multi-vendor safety pipeline, where organizations can choose from multiple guardrail providers, combine them based on their requirements, and run them all in parallel. Total enforcement time equals the slowest guard, not the sum. And when a guard blocks a request, the response is structured so agents and middleware chains can handle it gracefully instead of crashing.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-209337688920&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:255.078125px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;209337688920&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLIPelmACsbLVi5fUgnkEmdF82ztfU4uSqWIWUsCKobMaN8oIdqzwoiVNqTC0cRPZr0Imze7B6B%2FhLd0BdbBalkri%2FacgfPb5ndu%2F1sxrkf3%2FcwdG5rR8HIRxnUB5du20E1lMS%2FkTww5O5LX%2Byy%2B5elgniMb6SFXX9Yju43Ep5vWoESY%2F3sBenIkz0PHis6DIBL9g70Yx89pCY4%3D&amp;webInteractiveContentId=209337688920&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;early-access-promo-v2&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-209337688920.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;This post walks through the architecture, configuration, and practical considerations for building a multi-vendor safety pipeline with &lt;a href=&quot;https://traefik.io/traefik-hub?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Traefik Hub&lt;/a&gt;.&lt;/p&gt;&lt;h2 id=&quot;the-pipeline-four-tiers-from-deterministic-speed-to-semantic-intelligence&quot;&gt;The Pipeline: Four Tiers from Deterministic Speed to Semantic Intelligence&lt;/h2&gt;&lt;p&gt;The composable safety pipeline spans four tiers. Each tier serves a different purpose, uses a different detection approach, and has different performance and infrastructure characteristics. Organizations deploy the tiers they need based on their threat model, latency budget, and infrastructure.&lt;/p&gt;&lt;h3 id=&quot;tier-1-regex-guard-custom-pattern-matching&quot;&gt;Tier 1: Regex Guard (Custom Pattern Matching)&lt;/h3&gt;&lt;p&gt;Regex Guard is a framework for organizations to write their own content guards. It&apos;s not a pre-built guard with fixed rules. Teams define the patterns they want to catch, the fields they want to scan, and whether to block or mask matched content.&lt;/p&gt;&lt;p&gt;Here&apos;s how it works: the Regex Guard implements a rule-based pattern matching engine integrated into the Content Guard middleware. Each rule specifies one or more JSONQuery expressions that locate target fields in structured payloads, one or more regex patterns to match against, and an action (block or mask) to take on match.&lt;/p&gt;&lt;p&gt;Here&apos;s a practical configuration that blocks prompt injection patterns in chat messages while masking credit card numbers in customer data:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: regex-guard
  namespace: apps
spec:
  plugin:
    content-guard:
      engine:
        regex: {}

      request:
        # Block prompt injection attempts in chat messages
          - jsonQueries:
              - &quot;.messages[].content&quot;
              - &quot;.prompt&quot;
            block: true
            reason: &quot;Potential prompt injection detected&quot;
            entities:
              - &quot;(?i)ignore.*(previous|above|prior).*(instructions|prompt)&quot;
              - &quot;(?i)you are now.*(new|different|unrestricted)&quot;

        # Mask credit card numbers in customer data
        - jsonQueries:
            - &quot;.customer.payment&quot;
            - &quot;.billing.card_number&quot;
          mask:
            char: &quot;*&quot;
            unmaskFromLeft: 0
            unmaskFromRight: 4
          entities:
            - &quot;\d{4}[-\s]?\d{4}[-\s]?\d{4}[-\s]?\d{4}&quot;

        # Mask US Social Security numbers
        - jsonQueries:
            - &quot;.user.ssn&quot;
            - &quot;.applicant.social_security&quot;
          mask:
            char: &quot;*&quot;
            unmaskFromLeft: 0
            unmaskFromRight: 4
          entities:
            - &quot;\\d{3}-\\d{2}-\\d{4}&quot;

      response:
        # Mask internal IP addresses in error responses
        - jsonQueries:
            - &quot;.error_detail&quot;
            - &quot;.debug_info&quot;
          mask:
            char: &quot;X&quot;
            unmaskFromLeft: 0
            unmaskFromRight: 0
          entities:
            - &quot;192\\.168\\.[0-9]{1,3}\\.[0-9]{1,3}&quot;
            - &quot;10\\.[0-9]{1,3}\\.[0-9]{1,3}\\.[0-9]{1,3}&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;A few things to note about the configuration:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;JSONQuery field targeting&lt;/strong&gt; lets you scope rules to specific fields rather than scanning entire payloads. &lt;code&gt;.messages[].content&lt;/code&gt; targets the content field in a chat completion request. &lt;code&gt;.customer.payment&lt;/code&gt; targets a specific nested field.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Block vs. mask&lt;/strong&gt; serves different purposes. Blocking rejects the request entirely. Masking redacts the matched content in-place and lets the request continue. Use blocking for threats (prompt injection, system prompt leakage). Use masking for PII (credit cards, SSNs, phone numbers) where you want the request to proceed with sensitive data redacted.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Bidirectional rules&lt;/strong&gt; apply to both requests and responses independently. Request-side rules catch threats before they reach the LLM. Response-side rules prevent information leakage (internal IPs, database connection strings, infrastructure identifiers) in the LLM&apos;s output.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Performance&lt;/strong&gt;: Regex Guard runs entirely in-process with zero external dependencies. Latency is sub-millisecond for typical payloads. There are no network round-trips, no GPU requirements, and no probabilistic variance. The same input always produces the same output.&lt;/p&gt;&lt;p&gt;The cost argument is straightforward. Catching a credit card number or Social Security number doesn&apos;t require semantic understanding. These are well-defined patterns with well-known formats. Running them through a GPU-accelerated AI model adds latency and cost with no improvement in detection accuracy for these patterns. Regex Guard handles them at a fraction of the cost and an order of magnitude faster.&lt;/p&gt;&lt;h3 id=&quot;tier-2-content-guard-microsoft-presidio&quot;&gt;Tier 2: Content Guard (Microsoft Presidio)&lt;/h3&gt;&lt;p&gt;Content Guard provides PII detection and masking powered by &lt;a href=&quot;https://microsoft.github.io/presidio/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Microsoft&apos;s Presidio analyzer&lt;/u&gt;&lt;/a&gt;. Where Regex Guard relies on patterns you define, Presidio uses statistical NLP-based entity recognition with a library of built-in entity types: email addresses, phone numbers, medical record IDs, credit card numbers, and more.&lt;/p&gt;&lt;p&gt;Presidio requires an external analyzer instance. You deploy the Presidio service and configure Content Guard to point at it. The middleware sends the content to Presidio for analysis, receives entity detection results, and applies blocking or masking based on the matches.&lt;/p&gt;&lt;p&gt;Content Guard supports custom entity patterns through Presidio&apos;s custom analyzer endpoints, allowing organizations to extend beyond the built-in entity types for formats specific to their business.&lt;/p&gt;&lt;p&gt;The tradeoff vs. Regex Guard: Presidio&apos;s NLP-based detection can catch entities that don&apos;t follow strict patterns (misspelled names, partial phone numbers, context-dependent PII). But it requires an external service, adds network latency, and introduces a dependency. For well-defined patterns, Regex Guard is faster. For fuzzy or context-dependent PII, Presidio is more thorough. In a composable pipeline, you can run both.&lt;/p&gt;&lt;h3 id=&quot;tier-3-llm-guard-with-nvidia-nims&quot;&gt;Tier 3: LLM Guard with NVIDIA NIMs&lt;/h3&gt;&lt;p&gt;NVIDIA NIM (NVIDIA Inference Microservices) integration &lt;a href=&quot;https://blogs.nvidia.com/blog/nemo-guardrails-nim-microservices/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;provides GPU-accelerated content safety&lt;/u&gt;&lt;/a&gt; through three specialized microservices:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Topic Control NIM&lt;/strong&gt; enforces conversation boundaries. It takes guideline-based prompts that define allowed and prohibited topics, and blocks requests that fall outside the defined scope.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Content Safety NIM&lt;/strong&gt; detects harmful content across 22+ safety categories, including violence, hate speech, and privacy violations. Analyzes both user requests and AI responses in real-time.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Jailbreak Detection NIM&lt;/strong&gt; identifies attempts to bypass AI system restrictions through prompt manipulation.&lt;/p&gt;&lt;p&gt;Each NIM requires a dedicated GPU with 24GB+ memory. Minimum processing latency per NIM ranges from 30ms (jailbreak detection) to 200ms (content safety). When running all three sequentially, total minimum latency is 180-350ms. With parallel execution, total latency equals only the slowest NIM.&lt;/p&gt;&lt;p&gt;This is where GPU-accelerated semantic intelligence earns its latency cost. NVIDIA NIMs catch threats that pattern matching and NLP-based detection cannot: nuanced prompt injection attempts that don&apos;t use obvious keywords, subtle harmful content that requires contextual understanding, and off-topic drift that a regex rule would need hundreds of patterns to approximate.&lt;/p&gt;&lt;h3 id=&quot;tier-4-llm-guard-with-ibm-granite-guardian&quot;&gt;Tier 4: LLM Guard with IBM Granite Guardian&lt;/h3&gt;&lt;p&gt;IBM&apos;s Granite Guardian 3.3 (8B parameter) is &lt;a href=&quot;https://huggingface.co/ibm-granite/granite-guardian-3.3-8b?ref=containous.ghost.io&quot;&gt;&lt;u&gt;an open-source safety model&lt;/u&gt;&lt;/a&gt; that provides capabilities other guard providers don&apos;t yet offer: hallucination detection and RAG quality assessment.&lt;/p&gt;&lt;p&gt;Granite Guardian uses a prompt-template approach. Each safety task (harm, jailbreak, topic control, hallucination) is triggered by a specific system prompt. The model responds with a structured &lt;code&gt;&amp;lt;score&amp;gt; yes &amp;lt;/score&amp;gt;&lt;/code&gt; or &lt;code&gt;&amp;lt;score&amp;gt; no &amp;lt;/score&amp;gt;&lt;/code&gt; evaluation, which the LLM Guard middleware evaluates with block conditions.&lt;/p&gt;
&lt;p&gt;Here&apos;s the hallucination detection configuration, which is response-only and uses request history for context:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: granite-hallucination-detection
  namespace: apps
spec:
  plugin:
    chat-completion-llm-guard:
      endpoint: http://granite-guardian.apps.svc.cluster.local:8000/v1/chat/completions
      model: ibm-granite/granite-guardian-3.3-8b
      params:
        temperature: 0
        maxTokens: 50
      response:
        systemPrompt: &quot;hallucination&quot;
        useRequestHistory: true
        blockConditions:
          - reason: hallucination_detected
            condition: Contains(&quot;yes&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And here&apos;s harm detection, which scans both requests and responses:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: granite-harm-detection
  namespace: apps
spec:
  plugin:
    chat-completion-llm-guard:
      endpoint: http://granite-guardian.apps.svc.cluster.local:8000/v1/chat/completions
      model: ibm-granite/granite-guardian-3.3-8b
      params:
        temperature: 0
        maxTokens: 50
      request:
        systemPrompt: &quot;harm&quot;
        blockConditions:
          - reason: harmful_content_detected
            condition: Contains(&quot;yes&quot;)
      response:
        systemPrompt: &quot;harm&quot;
        useRequestHistory: true
        blockConditions:
          - reason: harmful_response
            condition: Contains(&quot;yes&quot;)
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Granite Guardian is deployed via vLLM and requires one GPU with approximately 16GB memory (FP16) or 8GB (8-bit quantization). The &lt;code&gt;temperature: 0&lt;/code&gt; parameter is required for reliable classification.&lt;/p&gt;
&lt;p&gt;The unique value of Granite Guardian in the composable pipeline is hallucination detection and RAG quality assessment. NVIDIA NIMs don&apos;t yet offer hallucination detection. Presidio and Regex Guard are structurally unable to detect hallucinations (they match patterns, not factual accuracy). If your application uses retrieval-augmented generation and you need to verify that the model&apos;s response is grounded in the retrieved context, Granite Guardian is currently the only guard tier in the pipeline that addresses this.&lt;/p&gt;&lt;h2 id=&quot;parallel-guard-execution-defense-in-depth-without-the-latency-tax&quot;&gt;Parallel Guard Execution: Defense-in-Depth Without the Latency Tax&lt;/h2&gt;&lt;p&gt;With four tiers available, the question becomes: can you run them all without making every request unacceptably slow?&lt;/p&gt;&lt;p&gt;The answer is parallel guard execution. Instead of running guards in series (where total latency equals the sum), Traefik Hub runs all guards simultaneously. Total enforcement time equals only the slowest guard.&lt;/p&gt;&lt;p&gt;The &lt;code&gt;parallel-llm-guard&lt;/code&gt; middleware orchestrates this. It spawns all configured guards as concurrent Go routines, collects results as they complete, and makes a pass/fail decision. Every guard blocks equally; there is no critical/optional distinction. If any guard blocks, the request is rejected with a 403, and all other guards are immediately cancelled. If any guard errors, the request fails with a 500, and all others are cancelled.&lt;/p&gt;
&lt;p&gt;Each guard in the &lt;code&gt;guards&lt;/code&gt; array wraps one of four guard types:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;chat-completion-llm-guard&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;chat-completion-llm-guard-custom&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;llm-guard&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;llm-guard-custom&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: parallel-safety-pipeline
  namespace: ai-services
spec:
  plugin:
    parallel-llm-guard:
      guards:
        - chat-completion-llm-guard:
            endpoint: http://granite-guardian.apps.svc.cluster.local:8000/v1/chat/completions
            model: ibm-granite/granite-guardian-3.3-8b
            clientConfig:
              timeoutSeconds: 5
            params:
              temperature: 0
              maxTokens: 50
            request:
              systemPrompt: &quot;harm&quot;
              blockConditions:
                - reason: harmful_content
                  condition: Contains(&quot;yes&quot;)

        - chat-completion-llm-guard:
            endpoint: http://granite-guardian.apps.svc.cluster.local:8000/v1/chat/completions
            model: ibm-granite/granite-guardian-3.3-8b
            clientConfig:
              timeoutSeconds: 5
            params:
              temperature: 0
              maxTokens: 50
            request:
              systemPrompt: &quot;jailbreak&quot;
              blockConditions:
                - reason: jailbreak_attempt
                  condition: Contains(&quot;yes&quot;)

        - llm-guard:
            endpoint: http://nvidia-content-safety.apps.svc.cluster.local:8000
            clientConfig:
              timeoutSeconds: 5
            request:
              blockConditions:
                - reason: unsafe_content
                  condition: Contains(&quot;UNSAFE&quot;)&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In this configuration, all guards run concurrently. Total enforcement time equals the slowest guard, not the sum. If one guard completes and blocks the request, all other guards are immediately cancelled, as there is no need to spend tokens (and GPU cycles) on finishing processing guard executions on a request that&apos;s already been rejected by a faster check.&lt;/p&gt;&lt;h2 id=&quot;agent-aware-enforcement-graceful-error-handling&quot;&gt;Agent-Aware Enforcement: Graceful Error Handling&lt;/h2&gt;&lt;p&gt;A composable safety pipeline that catches threats is only half the story. The other half is what happens when a guard blocks a request.&lt;/p&gt;&lt;p&gt;Traditional gateways return an HTTP 403 Forbidden with a plain-text error message. This works for simple request-response APIs. It doesn&apos;t work for autonomous agents or agentic workflows.&lt;/p&gt;&lt;p&gt;When an agent executes a multi-step workflow and one step triggers a guardrail, an HTTP 403 breaks the agent&apos;s control flow. The agent can&apos;t distinguish between &quot;the guardrail blocked this specific request&quot; and &quot;something is fundamentally wrong with the system.&quot; Most agent frameworks treat non-2xx responses as errors that require human intervention or task failure. A single guardrail block can crash an entire multi-step workflow.&lt;/p&gt;&lt;p&gt;Traefik Hub v3.20 introduces the &lt;code&gt;onDenyResponse&lt;/code&gt; feature. When configured, guardrail blocks return a custom HTTP status code and message instead of the default 403. This is configured per block condition, so different denial reasons can return different responses:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: llm-guard-with-graceful-errors
spec:
  plugin:
    chat-completion-llm-guard:
      endpoint: http://granite-guardian.apps.svc.cluster.local:8000/v1/chat/completions
      model: ibm-granite/granite-guardian-3.3-8b
      params:
        temperature: 0
        maxTokens: 50
      request:
        systemPrompt: &quot;harm&quot;
        blockConditions:
          - reason: harmful_content
            condition: Contains(&quot;yes&quot;)
            onDenyResponse:
              statusCode: 200
              message: &apos;This request was blocked by security policies. Please reformulate your request.&apos;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;An agent receiving an HTTP 200 with a refusal message can parse it as a valid turn in the conversation, understand that the request was refused (not that the system failed), and decide what to do next: retry with modified input, skip this step, or escalate to a human.&lt;/p&gt;
&lt;p&gt;This also keeps middleware chains intact. Without &lt;code&gt;onDenyResponse&lt;/code&gt;, a 403 from an upstream guardrail could potentially break downstream custom plugins ( eg., custom response handlers, loggers) that expect structured JSON and were not created with graceful error handling in mind. With it, the entire chain processes normally.&lt;/p&gt;
&lt;p&gt;Existing deployments continue returning HTTP 403 by default. Each block condition can independently define its own &lt;code&gt;onDenyResponse&lt;/code&gt; with a custom status code and message template.&lt;/p&gt;
&lt;h2 id=&quot;operational-controls-resilience-and-cost&quot;&gt;Operational Controls: Resilience and Cost&lt;/h2&gt;&lt;p&gt;A safety pipeline, even one that&apos;s composable and parallel, isn&apos;t sufficient for production on its own. Organizations also need their AI to stay up when providers go down and stay within budget. Traefik Hub v3.20 adds both.&lt;/p&gt;&lt;h3 id=&quot;failover-router&quot;&gt;Failover Router&lt;/h3&gt;&lt;p&gt;The Failover Router uses nested &lt;code&gt;TraefikService&lt;/code&gt; resources to build a failover chain across LLM providers. When a primary backend responds with a configured error status code (e.g., 429 rate limit, 500-504 server errors), the request is automatically replayed to the fallback service. Each backend gets its own &lt;code&gt;chat-completion&lt;/code&gt; middleware for independent model selection, API keys, and metrics.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Primary backend: OpenAI GPT-4o
apiVersion: traefik.io/v1alpha1
kind: TraefikService
metadata:
  name: openai-primary
  namespace: ai-services
spec:
  failover:
    service:
      name: openai-gpt4o
      middlewares:
        - name: openai-chat-completion
    fallback:
      name: anthropic-fallback
    errors:
      status:
        - &quot;429&quot;
        - &quot;500-504&quot;
---
# Secondary backend: Anthropic Claude
apiVersion: traefik.io/v1alpha1
kind: TraefikService
metadata:
  name: anthropic-fallback
  namespace: ai-services
spec:
  failover:
    service:
      name: anthropic-claude
      middlewares:
        - name: anthropic-chat-completion
    fallback:
      name: openai-mini-budget
    errors:
      status:
        - &quot;429&quot;
        - &quot;500-504&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Each &lt;code&gt;chat-completion&lt;/code&gt; middleware configures the provider-specific details (model name, API key secret, parameters) independently. This means each backend in the failover chain can use a different provider, model, and set of credentials. The failover mechanism is status-code-based: when the primary responds with a status matching &lt;code&gt;errors.status&lt;/code&gt;, the request is replayed to the fallback. This enables cost-optimized degradation: when the premium model is rate-limited or down, fall back to a budget model from a different provider.&lt;/p&gt;
&lt;p&gt;Because the Failover Router operates within the Triple Gate architecture, all safety pipeline guards and cost controls continue to apply regardless of which provider is serving the request. The governance doesn&apos;t degrade when the model does.&lt;/p&gt;&lt;h3 id=&quot;token-rate-limiting-and-quota-management&quot;&gt;Token Rate Limiting and Quota Management&lt;/h3&gt;&lt;p&gt;LLM providers charge by token, not by request. A single request with a 100K-token prompt costs orders of magnitude more than one with a 100-token prompt. Request-count-based rate limiting doesn&apos;t capture this.&lt;/p&gt;&lt;p&gt;Token governance tracks input, output, and total tokens independently. It operates in two modes:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Rate limiting&lt;/strong&gt; handles traffic spikes with short windows (hourly, daily). Prevents burst overages without hard-capping long-term consumption.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Quota enforcement&lt;/strong&gt; sets hard budget caps over longer periods (monthly). When the quota is reached, requests are rejected entirely.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: ai-token-rate-limit
spec:
  plugin:
    ai-rate-limit:  # or ai-quota
      store:
        redis:
          endpoints:
            - redis.default.svc.cluster.local:6379
      inputTokenLimit:
        limit: 5000
        period: 1h
        jsonQuery: &quot;.usage.prompt_tokens&quot;
      outputTokenLimit:
        limit: 10000
        period: 1h
        jsonQuery: &quot;.usage.completion_tokens&quot;
      totalTokenLimit:
        limit: 15000
        period: 1h
        jsonQuery: &quot;.usage.total_tokens&quot;
      sourceCriterion:
        requestHeaderName: &quot;X-User-ID&quot;
      estimateStrategy:
        simple: {}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;sourceCriterion&lt;/code&gt; determines how requests are grouped for rate limiting. It supports three options: &lt;code&gt;requestHeaderName&lt;/code&gt; (a simple string identifying which header to use, e.g., &quot;&lt;code&gt;X-User-ID&lt;/code&gt;&quot;), &lt;code&gt;ipStrategy&lt;/code&gt; (with &lt;code&gt;depth&lt;/code&gt;, &lt;code&gt;excludedIPs&lt;/code&gt;, and &lt;code&gt;ipv6Subnet&lt;/code&gt; for IP-based tracking), and &lt;code&gt;requestHost&lt;/code&gt; (a boolean for host-based tracking). For JWT-based per-user limiting, the recommended pattern is to deploy a separate JWT middleware that extracts claims into headers via &lt;code&gt;forwardHeaders&lt;/code&gt;, then reference that header with &lt;code&gt;requestHeaderName&lt;/code&gt;. Composability enables many use cases, such as group/team-based buckets (using a &lt;code&gt;Group&lt;/code&gt; header with the &lt;code&gt;group&lt;/code&gt; claim extracted) or department/location-based bucketing.&lt;/p&gt;
&lt;p&gt;The key differentiator is proactive token estimation. Most solutions enforce limits reactively: they let the request through, wait for the LLM response, read the token count, and then enforce limits on the &lt;em&gt;next&lt;/em&gt; request. By that point, the cost has already been incurred.&lt;/p&gt;&lt;p&gt;Traefik Hub&apos;s token rate limiting estimates input tokens before the request reaches the LLM. If the estimated usage would exceed remaining capacity, the request is blocked immediately, before consuming any LLM resources or incurring any cost.&lt;/p&gt;&lt;p&gt;Token counts are stored in a distributed Redis backend, ensuring accurate tracking across multiple gateway instances.&lt;/p&gt;&lt;h2 id=&quot;the-full-ai-workflow-end-to-end&quot;&gt;The Full AI Workflow: End-to-End&lt;/h2&gt;&lt;p&gt;Here&apos;s how all of these pieces can work together in a single request:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Request arrives&lt;/strong&gt; at the API Gateway (&lt;strong&gt;Gate 1&lt;/strong&gt;). JWT is validated, identity is extracted, and rate limit headers are checked.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Token estimation&lt;/strong&gt; runs. If the estimated input tokens would exceed the user&apos;s remaining rate limit or quota, the request is blocked before anything else runs. No guard processing, no LLM invocation, no cost incurred.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Deterministic guards execute&lt;/strong&gt; (&lt;strong&gt;Gate 2&lt;/strong&gt;, first pass). Regex Guard scans for pattern-based threats (prompt injection, credential leaks) and masks PII with known formats (SSNs, credit cards). Content Guard (Presidio) performs NLP-based entity detection for fuzzy PII that regex patterns might miss. These are fast (sub-millisecond for regex, ~200ms for Presidio) and block early before heavier guards run.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Parallel LLM guard pipeline executes&lt;/strong&gt; (&lt;strong&gt;Gate 2&lt;/strong&gt;, second pass). NVIDIA NIMs and IBM Granite Guardian run simultaneously for semantic threat detection. If any guard blocks, all others are cancelled, and a structured refusal is returned (if &lt;code&gt;onDenyResponse&lt;/code&gt; is configured) or an HTTP 403 (if not).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Request reaches the LLM&lt;/strong&gt; via the Failover Router. If the primary provider responds with a configured error status (429, 500-504), the request is replayed to the fallback service. All safety policies continue to apply.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Response passes back through the guards&lt;/strong&gt;. Response-side rules in Regex Guard check for internal IP addresses and infrastructure identifiers. Granite Guardian checks for hallucinations using the request history as context.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Actual token counts&lt;/strong&gt; are captured from the LLM response and stored in Redis, updating the user&apos;s rate limit and quota tracking.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;If the LLM triggers an agent action&lt;/strong&gt;, the request hits the MCP Gateway (Gate 3). Tool-Based Access Control (TBAC) enforces what the agent is allowed to do: which tasks, which tools, which parameters. The same JWT identity that governed token budgets in Gate 2 now governs agent permissions in Gate 3.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Three gates, one identity context, and a composable safety pipeline that runs in parallel across the entire AI workflow.&lt;/p&gt;&lt;h2 id=&quot;choosing-your-guard-tiers-a-decision-framework&quot;&gt;Choosing Your Guard Tiers: A Decision Framework&lt;/h2&gt;&lt;p&gt;Not every deployment needs all four tiers. Here&apos;s a practical framework for choosing:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Start with Regex Guard&lt;/strong&gt; if you have well-defined patterns to catch. PII with known formats (SSNs, credit cards, phone numbers), prompt injection signatures, credential patterns, infrastructure identifiers. Zero infrastructure cost, sub-millisecond latency, 100% deterministic. This should be the baseline for any deployment.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Add Content Guard (Presidio)&lt;/strong&gt; if you need NLP-based entity detection that goes beyond fixed patterns. Presidio catches entity variations that a regex might miss (misspelled names, partial phone numbers, context-dependent PII). Requires deploying a Presidio analyzer instance.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Add NVIDIA NIMs&lt;/strong&gt; if you need semantic threat detection. Jailbreak attempts, subtle harmful content, topic drift, and prompt injection that doesn&apos;t use obvious keywords. Requires GPU infrastructure. This is where you catch threats that pattern matching fundamentally cannot.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Add IBM Granite Guardian&lt;/strong&gt; if you need hallucination detection or RAG quality assessment. No other tier in the pipeline offers this. It’s also valuable for organizations in the IBM ecosystem. Keep in mind, it requires a GPU.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Enable parallel execution&lt;/strong&gt; whenever you deploy LLM Guards. There&apos;s no reason to stack latency in series when the guards are independent.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Enable graceful error handling&lt;/strong&gt; if your consumers include autonomous agents or if you use middleware chains that expect structured JSON at every stage.&lt;/li&gt;&lt;/ol&gt;&lt;h2 id=&quot;whats-next&quot;&gt;What&apos;s Next&lt;/h2&gt;&lt;p&gt;The composable pipeline is designed for extension. Traefik has integrated guardrails from NVIDIA, IBM, and Microsoft, and will continue integrating third-party providers as the ecosystem matures. Organizations can combine these vendor integrations with their own custom Regex Guard rules, building a safety pipeline tailored to their specific threat model, compliance requirements, and infrastructure constraints.&lt;/p&gt;&lt;p&gt;Traefik Hub v3.20 is now available as an Early Access release, with general availability planned for late April 2026. To try the composable safety pipeline and the other features covered in this post, &lt;a href=&quot;https://info.traefik.io/request-early-access?ref=containous.ghost.io&quot;&gt;&lt;u&gt;sign up for Early Access&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-209337688920&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:255.078125px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;209337688920&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLIPelmACsbLVi5fUgnkEmdF82ztfU4uSqWIWUsCKobMaN8oIdqzwoiVNqTC0cRPZr0Imze7B6B%2FhLd0BdbBalkri%2FacgfPb5ndu%2F1sxrkf3%2FcwdG5rR8HIRxnUB5du20E1lMS%2FkTww5O5LX%2Byy%2B5elgniMb6SFXX9Yju43Ep5vWoESY%2F3sBenIkz0PHis6DIBL9g70Yx89pCY4%3D&amp;webInteractiveContentId=209337688920&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;early-access-promo-v2&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-209337688920.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Choose the Right Load Balancing Strategy for Your Use Case]]></title>
            <description><![CDATA[Learn how to choose between WRR, P2C, HRW, & Least-Time load balancing strategies to best serve your use case. Explore how each works & when to use which.]]></description>
            <link>https://traefik.io/choose-the-right-load-balancing-strategy</link>
            <guid isPermaLink="true">https://traefik.io/choose-the-right-load-balancing-strategy</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[Engineering]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <category><![CDATA[Load Balancing]]></category>
            <dc:creator><![CDATA[Simon Delicata]]></dc:creator>
            <pubDate>Thu, 05 Feb 2026 17:11:06 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/02/how-to-choose-load-balancing-blog-no-copy-1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/02/how-to-choose-load-balancing-blog-no-copy-1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/02/how-to-choose-load-balancing-blog-no-copy-1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/02/how-to-choose-load-balancing-blog-no-copy-1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/02/how-to-choose-load-balancing-blog-no-copy-1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;In a &lt;a href=&quot;https://traefik.io/blog/exploring-advanced-load-balancing-in-kubernetes-with-traefik-proxy?ref=containous.ghost.io&quot;&gt;&lt;u&gt;previous article on advanced load balancing&lt;/u&gt;&lt;/a&gt;, we explored features like sticky sessions, health checks, and traffic mirroring. Those are the tools. This article covers the strategy.&lt;/p&gt;&lt;p&gt;Your application runs smoothly with round-robin load balancing. Traffic distributes evenly, everything works. Then you notice some requests take 50ms, others 500ms. Monitoring shows all servers are healthy, but user experience is inconsistent. The problem isn&apos;t &lt;em&gt;if&lt;/em&gt; you&apos;re load balancing—it&apos;s &lt;em&gt;how&lt;/em&gt;.&lt;/p&gt;&lt;p&gt;Load balancing strategies determine &lt;strong&gt;which server handles which request&lt;/strong&gt;, and this decision has a direct impact on performance, cost, and user experience. Choosing the wrong strategy is like taking the highway when you need to navigate city streets—you might eventually get there, but you&apos;re not adapting to the terrain.&lt;/p&gt;&lt;p&gt;Traefik&apos;s load balancing strategies map to specific technical requirements. Weighted Round Robin (WRR) works for uniform backends. Power of Two Choices (P2C) handles variable connection lifetimes. Highest Random Weight (HRW) optimizes caching. Least-Time adapts to heterogeneous performance.&lt;/p&gt;&lt;h2 id=&quot;understanding-the-landscape-features-vs-strategies&quot;&gt;Understanding the Landscape: Features vs. Strategies&lt;/h2&gt;&lt;p&gt;First, an important distinction:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Load balancing features&lt;/strong&gt; (sticky sessions, health checks, mirroring) define &lt;em&gt;capabilities&lt;/em&gt;—what your load balancer can do.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Load balancing strategies&lt;/strong&gt; define &lt;em&gt;decision-making&lt;/em&gt;—which server gets the next request.&lt;/p&gt;&lt;p&gt;In other words, features are your car&apos;s options: heated seats, navigation, backup camera. Strategies are your driving style: highway cruising, city maneuvering, off-road driving.&lt;/p&gt;&lt;p&gt;Both matter, but serve different purposes. This article focuses on strategies—the algorithms that route your traffic.&lt;/p&gt;&lt;h2 id=&quot;the-four-core-strategies-overview&quot;&gt;The Four Core Strategies: Overview&lt;/h2&gt;&lt;p&gt;Traefik supports four primary load balancing strategies at the server level:&lt;/p&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Strategy&lt;/th&gt;
&lt;th&gt;How It Works&lt;/th&gt;
&lt;th&gt;Why Choose It&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;WRR (Weighted Round Robin)&lt;/td&gt;
&lt;td&gt;Fair rotation with optional weights&lt;/td&gt;
&lt;td&gt;General-purpose, predictable workloads&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;P2C (Power of Two Choices)&lt;/td&gt;
&lt;td&gt;Pick 2 random servers, choose the one with fewer connections&lt;/td&gt;
&lt;td&gt;Dynamic scaling, variable connection lifetimes&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;HRW (Highest Random Weight)&lt;/td&gt;
&lt;td&gt;Consistent hashing per client&lt;/td&gt;
&lt;td&gt;Cache optimization, client affinity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Least-Time&lt;/td&gt;
&lt;td&gt;Lowest response time + active connections&lt;/td&gt;
&lt;td&gt;Heterogeneous backends, performance optimization&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Each strategy maps to specific business scenarios.&lt;/p&gt;&lt;h2 id=&quot;matching-strategy-to-your-use-case&quot;&gt;Matching Strategy to Your Use Case&lt;/h2&gt;&lt;p&gt;These scenarios are presented in order of increasing complexity, but &lt;strong&gt;choose based on your technical requirements, not your company size or stage&lt;/strong&gt;. A caching-heavy product should use HRW from day one, while a large-scale service with uniform workloads might use WRR forever.&lt;/p&gt;&lt;h3 id=&quot;scenario-1-simple-and-predictable%E2%80%94wrr&quot;&gt;Scenario 1: Simple and Predictable—WRR&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Great for: &lt;/strong&gt;Internal tools, stable production services&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Use When&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Homogeneous backends (all servers are similar)&lt;/li&gt;&lt;li&gt;Predictable traffic patterns&lt;/li&gt;&lt;li&gt;Simplicity and reliability are priorities&lt;/li&gt;&lt;li&gt;You don&apos;t need advanced optimization&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;The Problem You&apos;re Solving&lt;/strong&gt; &lt;br&gt;You&apos;ve deployed three identical application servers and need to distribute traffic. Your focus is on uptime and simplicity—not premature optimization.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The Solution: Weighted Round Robin (WRR)&lt;/strong&gt;&lt;br&gt;WRR is Traefik&apos;s default strategy. It distributes requests in a predictable, fair rotation:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;http:
 services:
   my-api:
     loadBalancer:
       servers:
         - url: &quot;http://server-1:8080&quot;
         - url: &quot;http://server-2:8080&quot;
         - url: &quot;http://server-3:8080&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;With WRR, if you send 300 requests, each server handles approximately 100 over time. Simple, predictable, reliable.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;When to Add Weights&lt;/strong&gt;&lt;br&gt;When you have servers with different capabilities, WRR&apos;s weight system lets you send proportionally more traffic to more powerful machines. The higher the weight, the more traffic the server gets.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;http:
 services:
   my-api:
     loadBalancer:
       servers:
         - url: &quot;http://small-server:8080&quot;
           weight: 1
         - url: &quot;http://medium-server:8080&quot;
           weight: 2
         - url: &quot;http://large-server:8080&quot;
           weight: 4  # Gets 4x traffic over time of small server&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Benefits and Trade-Offs&lt;/strong&gt;&lt;br&gt;WRR delivers predictable costs and straightforward capacity planning. Troubleshooting is simple since you always know which server handled a request.&lt;/p&gt;&lt;p&gt;The trade-off: WRR doesn&apos;t adapt to real-time conditions. All requests are treated equally, regardless of complexity or current server load.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Consider Other Strategies When&lt;/strong&gt;&lt;br&gt;Your infrastructure becomes heterogeneous, connection lifetimes vary significantly, or you need caching/performance optimization.&lt;/p&gt;&lt;h3 id=&quot;scenario-2-variable-connection-lifetimes%E2%80%94p2c&quot;&gt;Scenario 2: Variable Connection Lifetimes—P2C&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Great for:&lt;/strong&gt; Real-time applications, auto-scaling environments&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Use When&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Variable connection lifetimes (WebSockets, long-polling, streaming mixed with short requests)&lt;/li&gt;&lt;li&gt;Auto-scaling infrastructure (servers frequently added/removed)&lt;/li&gt;&lt;li&gt;Connection count imbalance is causing performance issues&lt;/li&gt;&lt;li&gt;You need automatic load distribution without manual tuning&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;The Problem You&apos;re Solving&lt;/strong&gt;&lt;br&gt;You&apos;ve implemented auto-scaling, but you notice uneven load distribution. Some servers are overloaded while others are idle. Your monitoring shows:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Server A: 150 active connections, CPU at 80%&lt;/li&gt;&lt;li&gt;Server B: 30 active connections, CPU at 20%&lt;/li&gt;&lt;li&gt;Server C: 200 active connections, CPU at 95%&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Your Weighted Round Robin (WRR) strategy keeps sending traffic to Server C even though it&apos;s struggling.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The Solution: Power of Two Choices (P2C)&lt;/strong&gt;&lt;br&gt;P2C uses a simple algorithm (hence the name): randomly pick two servers, then choose the one with fewer active connections.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;http:
 services:
   my-api:
     loadBalancer:
       strategy: &quot;p2c&quot;
       servers:
         - url: &quot;http://server-1:8080&quot;
         - url: &quot;http://server-2:8080&quot;
         - url: &quot;http://server-3:8080&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;How It Works&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Request arrives&lt;/li&gt;&lt;li&gt;Traefik randomly selects two servers (say, A and C)&lt;/li&gt;&lt;li&gt;Compares their active connection counts&lt;/li&gt;&lt;li&gt;Routes to the less loaded server (A has 150, C has 200 → choose A)&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;This simple algorithm balances connections effectively with minimal overhead.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Real-World Scenario: Real-Time Collaboration Platform&lt;/strong&gt;&lt;br&gt;You run a SaaS collaboration platform (think Figma, or Google Docs) that combines real-time editing with standard API operations.&lt;/p&gt;&lt;p&gt;Your infrastructure handles:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Quick API calls:&lt;/strong&gt; Loading documents, saving comments (50-200ms, connection closes immediately)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Live editing sessions:&lt;/strong&gt; WebSocket connections for real-time collaboration (users stay connected for 30-60 minutes while editing)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;File operations:&lt;/strong&gt; Document exports, image uploads (30-90 second connections)&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;With WRR&lt;/strong&gt;, all servers initially get equal requests, but connection lifetimes vary dramatically. Server A has 8 active editing sessions and 8 WebSockets open for the next hour. Server B has 150 quick API calls that all completed, and the server is now idle. Server C has 5 file uploads and the connections are held for 60 seconds.&lt;/p&gt;&lt;p&gt;WRR keeps distributing requests evenly, regardless of active connections. Once a new editing session starts, it&apos;s sent to the already-loaded Server A.&lt;/p&gt;&lt;p&gt;Now Server A is overloaded, Server B is underutilized, and users wonder why their editing sessions is so laggy.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;With P2C&lt;/strong&gt;, however, Traefik randomly picks two servers, compares active connection counts. It recognizes that Server A has 8 connections and Server B has 0, so Traefik routes to Server B.&lt;/p&gt;&lt;p&gt;Long-lived editing sessions naturally spread across available capacity, while quick API calls fill gaps on less-loaded servers.&lt;strong&gt; &lt;/strong&gt;The result is smooth real-time collaboration for all users with optimal resource usage.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Benefits and Trade-Offs&lt;/strong&gt;&lt;br&gt;P2C automatically distributes load without manual tuning, handling mixed workloads gracefully. It reduces hot spots and improves resource utilization, which translates to lower cloud costs.&lt;/p&gt;&lt;p&gt;The trade-off: P2C only considers connection count, not processing time. A server handling 10 lightweight requests looks the same as one handling 10 heavy requests. The random selection also makes debugging slightly less predictable than WRR.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Consider Other Strategies When&lt;/strong&gt;&lt;br&gt;You need client affinity for caching (HRW), or backend performance varies significantly (Least-Time).&lt;/p&gt;&lt;h3 id=&quot;scenario-3-cache-optimization%E2%80%94client-affinity-with-hrw&quot;&gt;Scenario 3: Cache Optimization—Client Affinity with HRW&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Great for:&lt;/strong&gt; Any stage with caching requirements (CDNs, personalization platforms, session-heavy apps)&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Use When&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Stateful backends or caching layers&lt;/li&gt;&lt;li&gt;Users benefit from hitting the same server repeatedly&lt;/li&gt;&lt;li&gt;Cache hit rate is more important than perfect load distribution&lt;/li&gt;&lt;li&gt;You have session data, user-specific caches, or personalized content&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;The Problem You&apos;re Solving&lt;/strong&gt;&lt;br&gt;You have multiple backend servers, each building up its own cache (Redis, in-memory, CDN edge). With P2C or WRR, a single user&apos;s requests bounce between different servers, resulting in:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Cache misses (user&apos;s data isn&apos;t on the selected server)&lt;/li&gt;&lt;li&gt;Repeated cache warming for the same user across servers&lt;/li&gt;&lt;li&gt;Wasted memory and processing power&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;The Solution: Highest Random Weight (HRW)&lt;/strong&gt;&lt;br&gt;HRW (also called Rendezvous hashing) uses consistent hashing to map clients to servers deterministically.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;http:
 services:
   cached-api:
     loadBalancer:
       strategy: &quot;hrw&quot;
       servers:
         - url: &quot;http://cache-server-1:8080&quot;
         - url: &quot;http://cache-server-2:8080&quot;
         - url: &quot;http://cache-server-3:8080&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Traefik hashes the client&apos;s IP address&lt;/li&gt;&lt;li&gt;Calculates a score for each server using the hash&lt;/li&gt;&lt;li&gt;Consistently routes that client to the highest-scoring server&lt;/li&gt;&lt;li&gt;Same client routes to same server unless servers are added/removed&lt;/li&gt;&lt;li&gt;When servers change, only ~1/N clients get remapped (vs. 100% with simple hash % server_count)&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Real-World Scenario: User-Specific Content Caching&lt;/strong&gt;&lt;br&gt;You run a personalized recommendation platform. Each server builds in-memory caches of user preferences, browsing history, and ML model outputs.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;With WRR/P2C&lt;/strong&gt;, a user requests a recommendation, which is routed to Server A→ cache miss → compute (100ms). The same user makes a second request, which is then routed to Server B → cache miss → compute (100ms). The result is frequent cache misses (users randomly distributed across servers) and high CPU usage across all servers.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;With HRW&lt;/strong&gt;, a user requests a recommendation, which is routed to Server A (based on client hash) → cache miss → compute and cache (100ms). The user&apos;s second request, however, is also routed to Server A (same hash) → cache hit (5ms). With HRW, cache hit rates climb since users consistently hit the same server, which significantly reduces CPU usage from cache efficiency.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Benefits and Trade-offs&lt;/strong&gt;&lt;br&gt;HRW maximizes cache efficiency by ensuring the same client consistently hits the same server. This reduces origin load and makes debugging straightforward since routing is deterministic.&lt;/p&gt;&lt;p&gt;The trade-off is that HRW prioritizes consistency over load distribution. If one client generates disproportionate traffic, its assigned server becomes a hotspot. Adding or removing servers also requires careful planning since it triggers client remapping.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Consider Other Strategies When&lt;/strong&gt;&lt;br&gt;Load imbalance becomes problematic, or backend performance varies significantly and you need adaptive routing (Least-Time).&lt;/p&gt;&lt;h3 id=&quot;scenario-4-performance-optimization%E2%80%94adaptive-routing-with-least-time&quot;&gt;Scenario 4: Performance Optimization—Adaptive Routing with Least-Time&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Great for:&lt;/strong&gt; High-traffic applications, performance-critical services, and heterogeneous infrastructure&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Use When&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Backend performance varies (mixed instance types, different hardware)&lt;/li&gt;&lt;li&gt;Every millisecond of latency matters&lt;/li&gt;&lt;li&gt;You want automatic adaptation to performance changes&lt;/li&gt;&lt;li&gt;Backends have different processing speeds&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;The Problem You&apos;re Solving&lt;/strong&gt;&lt;br&gt;Your infrastructure uses mixed instance types:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Server A:&lt;/strong&gt; High-performance dedicated server (5ms average response)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Server B:&lt;/strong&gt; Standard cloud instance (15ms average response)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Server C:&lt;/strong&gt; Cheaper instance with variable performance (10-50ms)&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;With previous strategies, you face impossible trade-offs:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;WRR:&lt;/strong&gt; Treats all servers equally, users randomly get slow responses&lt;/li&gt;&lt;li&gt;&lt;strong&gt;P2C:&lt;/strong&gt; Balances connections but ignores that Server A is 3x faster&lt;/li&gt;&lt;li&gt;&lt;strong&gt;HRW:&lt;/strong&gt; Sticks users to potentially slow servers&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;The Solution: Least-Time Strategy&lt;/strong&gt;&lt;br&gt;Least-Time combines &lt;em&gt;response time measurement&lt;/em&gt; with &lt;em&gt;active connection tracking&lt;/em&gt; to route intelligently&lt;/p&gt;&lt;pre&gt;&lt;code&gt;http:
 services:
   backend:
     loadBalancer:
       strategy: &quot;leasttime&quot;
       servers:
         - url: &quot;http://fast-server:8080&quot;
         - url: &quot;http://standard-server:8080&quot;
         - url: &quot;http://variable-server:8080&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;How It Works&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;For each server, Traefik calculates a score based on recent response times (Time To First Byte) and active connections. Requests are routed to the server with the lowest score. Fast servers with few active connections automatically get more traffic, while degrading servers are deprioritized.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Real-World Scenario: Mixed Instance Types with Weighted Least-Time&lt;/strong&gt;&lt;br&gt;Your application runs on heterogeneous infrastructure:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Server A:&lt;/strong&gt; High-performance dedicated instance (5ms average API response)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Server B:&lt;/strong&gt; Standard cloud instance (15ms average API response)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Server C:&lt;/strong&gt; Burstable instance with variable performance (10-50ms depending on CPU credits)&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;With WRR&lt;/strong&gt;, all servers receive equal traffic. Users randomly experience 5ms, 15ms, or 50ms responses, which creates an inconsistent user experience. Fast Server A is underutilized while slow Server C gets equal load.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;With Least-Time&lt;/strong&gt;, however, Traefik measures each backend&apos;s actual response time (TTFB). Server A (fastest) automatically receives more traffic, while Server C receives less traffic when its CPU credits are depleted. Then, when Server C performance improves, traffic naturally increases. The user experience is consistent, and resource utilization is optimal.&lt;/p&gt;&lt;p&gt;Using weights for capacity-aware routing:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;http:
 services:
   backend:
     loadBalancer:
       strategy: &quot;leasttime&quot;
       servers:
         - url: &quot;http://high-perf-server:8080&quot;
           weight: 3  # Premium instance, can handle more
         - url: &quot;http://standard-server-1:8080&quot;
           weight: 1
         - url: &quot;http://burstable-server:8080&quot;
           weight: 1&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Weights indicate capacity. A server with weight=3 can handle 3x the traffic before its score becomes unfavorable, allowing you to maximize value from premium infrastructure.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Benefits and Trade-Offs&lt;/strong&gt;&lt;br&gt;Least-Time delivers near-optimal performance by routing to the fastest available backend. It adapts automatically when servers degrade—no manual intervention required. This leads to better resource utilization and graceful degradation without hard failovers. It&apos;s particularly effective for mixed infrastructure where backend performance varies.&lt;/p&gt;&lt;p&gt;The trade-off is: accurate routing depends on stable network conditions for reliable measurements. There&apos;s also slight computational overhead from tracking response times, though this is negligible in practice.&lt;/p&gt;&lt;h2 id=&quot;beyond-server-strategies-service-level-load-balancing&quot;&gt;Beyond Server Strategies: Service-Level Load Balancing&lt;/h2&gt;&lt;p&gt;So far, we&apos;ve discussed &lt;strong&gt;server-level strategies&lt;/strong&gt;—how to distribute traffic among backend instances. Traefik also offers &lt;strong&gt;service-level strategies&lt;/strong&gt; for advanced patterns:&lt;/p&gt;&lt;h3 id=&quot;weighted-round-robin-service-level&quot;&gt;Weighted Round Robin (Service Level)&lt;/h3&gt;&lt;p&gt;Distribute traffic between different services (not just servers). This is perfect for:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Canary deployments:&lt;/strong&gt; 95% to stable version, 5% to new version&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Blue-green deployments:&lt;/strong&gt; Gradual traffic shifting&lt;/li&gt;&lt;li&gt;&lt;strong&gt;A/B testing:&lt;/strong&gt; Route percentage of users to experiment variants&lt;/li&gt;&lt;/ol&gt;&lt;pre&gt;&lt;code&gt;http:
 services:
   app:
     weighted:
       services:
         - name: stable-v1
           weight: 95
         - name: canary-v2
           weight: 5&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;mirroring&quot;&gt;Mirroring&lt;/h3&gt;&lt;p&gt;Duplicate traffic to multiple services, which is essential for:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Testing new versions&lt;/strong&gt; with real traffic (without risking production)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Performance comparisons&lt;/strong&gt; between implementations&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Data pipeline validation&lt;/strong&gt;&lt;/li&gt;&lt;/ol&gt;&lt;pre&gt;&lt;code&gt;http:
 services:
   api-with-mirror:
     mirroring:
       service: production-api
       mirrors:
         - name: new-api-version
           percent: 10  # Mirror 10% of traffic&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;failover&quot;&gt;Failover&lt;/h3&gt;&lt;p&gt;Automatic fallback when primary service fails:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;http:
 services:
   resilient-api:
     failover:
       service: primary-cluster
       fallback: backup-cluster&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;combining-server-and-service-level-strategies&quot;&gt;Combining Server and Service-Level Strategies&lt;/h3&gt;&lt;p&gt;You can combine strategies at multiple levels. For example, you can use Least-Time at the server level for each service, and weighted service-level balancing for canary deployments:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;http:
 services:
   # Service-level: Weighted between versions
   app:
     weighted:
       services:
         - name: v1-backend
           weight: 90
         - name: v2-backend
           weight: 10

   # Server-level: Least-Time within each version
   v1-backend:
     loadBalancer:
       strategy: &quot;leasttime&quot;
       servers:
         - url: &quot;http://v1-server-1:8080&quot;
         - url: &quot;http://v1-server-2:8080&quot;

   v2-backend:
     loadBalancer:
       strategy: &quot;leasttime&quot;
       servers:
         - url: &quot;http://v2-server-1:8080&quot;
         - url: &quot;http://v2-server-2:8080&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;conclusion-choosing-your-strategy&quot;&gt;Conclusion: Choosing Your Strategy&lt;/h2&gt;&lt;p&gt;Use this decision tree to select the best strategy for your use case:&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/02/choose-load-balancing-strategy-decision-tree.png&quot; class=&quot;kg-image&quot; alt=&quot;How to Choose the Right Load Balancing Strategy Decision Tree&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1913&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/02/choose-load-balancing-strategy-decision-tree.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/02/choose-load-balancing-strategy-decision-tree.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/02/choose-load-balancing-strategy-decision-tree.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/02/choose-load-balancing-strategy-decision-tree.png 2164w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h3 id=&quot;quick-reference-table&quot;&gt;Quick Reference Table&lt;/h3&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Your Scenario&lt;/th&gt;
&lt;th&gt;Recommended Strategy&lt;/th&gt;
&lt;th&gt;Why It&apos;s Best&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;Identical servers, uniform requests&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;WRR&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Simple, predictable, no overhead&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Auto-scaling, variable connection lifetimes&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;P2C&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Balances connection count dynamically&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Client affinity for caching, stateful backends&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;HRW&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Consistent client→server mapping&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Different server types/performance&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;WRR with weights&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Proportional to capacity&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Heterogeneous backends, latency-sensitive&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Least-Time&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Optimizes for actual performance&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Canary/blue-green deployments&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Weighted (service-level)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Control traffic percentage&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;Testing with production traffic&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Mirroring&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Safe real-world validation&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Load balancing isn&apos;t one-size-fits-all—but it doesn&apos;t have to be complicated either. Start with WRR, measure your system&apos;s behavior, and evolve deliberately.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Traefik lets you change strategies without downtime, so you can adapt as your requirements change.&lt;/p&gt;&lt;h2 id=&quot;further-reading&quot;&gt;Further Reading&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik/routing/services/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik Load Balancing Documentation&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/blog/exploring-advanced-load-balancing-in-kubernetes-with-traefik-proxy?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Our previous article on advanced load balancing features&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://community.traefik.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik Community Forum&lt;/u&gt;&lt;/a&gt; for real-world advice and support&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Have questions or success stories? Share them in the comments below or join the conversation in our&lt;a href=&quot;https://community.traefik.io/?ref=containous.ghost.io&quot;&gt; &lt;u&gt;community forum&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;script id=&quot;tocOverrides&quot; type=&quot;application/json&quot;&gt;
  {
    &quot;1&quot;: &quot;Features vs Strategies&quot;,
    &quot;2&quot;: &quot;The Four Core Strategies&quot;,
    &quot;3&quot;: &quot;Matching Strategy to Your Use Case&quot;,
    &quot;4&quot;: &quot;Service-Level Load Balancing&quot;,
    &quot;5&quot;: &quot;Choosing Your Strategy&quot;,
    &quot;6&quot;: &quot;Further Reading&quot;
  }
&lt;/script&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[The Infrastructure Reality Behind AI Hype: What the 2026 CNCF Survey Reveals (And What It Doesn't)]]></title>
            <description><![CDATA[The 2026 CNCF Annual Cloud Native Survey just landed and it shows a comprehensive map of where enterprise infrastructure investment is going and where it's not.]]></description>
            <link>https://traefik.io/the-infrastructure-reality-behind-ai-hype</link>
            <guid isPermaLink="true">https://traefik.io/the-infrastructure-reality-behind-ai-hype</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Strategy]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <category><![CDATA[MCP Gateway]]></category>
            <category><![CDATA[API Gateway]]></category>
            <dc:creator><![CDATA[Sudeep Goswami]]></dc:creator>
            <pubDate>Mon, 02 Feb 2026 23:41:47 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/02/ai-infrastructure-blog-no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/02/ai-infrastructure-blog-no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/02/ai-infrastructure-blog-no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/02/ai-infrastructure-blog-no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/02/ai-infrastructure-blog-no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The January &lt;a href=&quot;https://www.cncf.io/wp-content/uploads/2026/01/CNCF_Annual_Survey_Report_final.pdf?ref=containous.ghost.io&quot;&gt;&lt;u&gt;2026 CNCF Annual Cloud Native Survey&lt;/u&gt;&lt;/a&gt; landed this month. Buried beneath the expected headlines about Kubernetes dominance is something far more interesting: a comprehensive map of where enterprise infrastructure investment is actually going, and where it&apos;s not.&lt;/p&gt;&lt;p&gt;The survey, based on 628 respondents across multiple industries and geographies, confirms what many of us building infrastructure have observed. The AI conversation has fundamentally shifted from &quot;who can train the best model&quot; to &quot;who can operationalize inference at scale.&quot; This shift has profound implications for where value will be created and captured over the next several years.&lt;/p&gt;&lt;h2 id=&quot;the-inference-economy-is-here&quot;&gt;The Inference Economy Is Here&lt;/h2&gt;&lt;p&gt;Let&apos;s start with the most striking finding: &lt;strong&gt;52% of organizations don&apos;t build or train their own AI models&lt;/strong&gt;. They&apos;re consumers. The remaining organizations that do &quot;train&quot; are predominantly fine-tuning existing models rather than building from scratch.&lt;/p&gt;&lt;p&gt;This shouldn&apos;t surprise anyone who&apos;s been paying attention, but it should reframe how we think about AI infrastructure investment. The report&apos;s authors put it well: &quot;If we cut through the hype of chatbots and agents, we can clearly see that we will need to greatly decrease the difficulty of serving AI workloads while massively increasing the amount of inference capacity available across the industry.&quot;&lt;/p&gt;&lt;p&gt;Take a moment and let that sink in. The infrastructure challenge isn&apos;t about building bigger GPU clusters for training. It&apos;s about the unglamorous work of routing, caching, rate limiting, and managing inference traffic at production scale.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-193615038981&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;193615038981&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLKm0lUqnbUlmdC11tpCZ6KheSO4KyTzhgVAk%2BnmHWF03%2B68uwfMfbBpDucbTOR6def2kZLkxI2CPg%2FPttyhezp3DQbjP50y%2B6kRH%2F%2FhGiQENxXg2Ys4JGTcXMLA%2F2pP9BkIPODZliNUGVordZyAb%2FxFNYMC8IXRyj2%2BPFrxUJXPsnteGa%2FaVI6jnZAzBZ7tY6KQLS3o&amp;webInteractiveContentId=193615038981&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Blog_without_copies@2x-2&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-193615038981.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;!--kg-card-end: html--&gt;
&lt;p&gt;Consider the deployment frequency data: 47% of organizations deploy AI models only occasionally (a few times per year), and just 7% manage daily deployments. The gap between &quot;we have a model&quot; and &quot;we have a production AI system&quot; remains enormous. That gap is an infrastructure problem, not an algorithm problem.&lt;/p&gt;&lt;p&gt;There&apos;s also a question the survey doesn&apos;t ask. 37% of organizations using managed generative AI APIs are sending inference traffic somewhere. Where? Under what data residency constraints? With what model governance guarantees? As the &lt;a href=&quot;https://artificialintelligenceact.eu/high-level-summary/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;EU AI Act&lt;/u&gt;&lt;/a&gt; takes effect and regulated industries face increasing scrutiny over AI decision-making, the sovereignty dimension of inference infrastructure will become harder to ignore.&lt;/p&gt;&lt;h2 id=&quot;kubernetes-won-now-what&quot;&gt;Kubernetes Won. Now What?&lt;/h2&gt;&lt;p&gt;The survey confirms what we&apos;ve observed in our customer base: &lt;strong&gt;82% of container users now run Kubernetes in production&lt;/strong&gt;, up from 66% in 2023. The report aptly describes Kubernetes as &quot;boring,&quot; and correctly notes that boring is the highest compliment in infrastructure.&lt;/p&gt;&lt;p&gt;But here&apos;s the more interesting number: &lt;strong&gt;66% of organizations are using Kubernetes specifically to host their generative AI workloads&lt;/strong&gt;. Kubernetes has evolved from &quot;container orchestrator&quot; to &quot;AI infrastructure platform.&quot; The report notes that projects like Kubeflow provide end-to-end ML workflows while KServe handles model serving at scale.&lt;/p&gt;&lt;p&gt;This convergence creates a clear market reality: whatever you build for AI workloads needs to be Kubernetes-native. Not Kubernetes-compatible. Not Kubernetes-adjacent. Native. The organizations that have achieved &quot;true MLOps maturity&quot; (the 23% running all inference workloads on Kubernetes) have done so by integrating AI into their existing CI/CD pipelines, GitOps workflows, and observability stacks.&lt;/p&gt;&lt;h2 id=&quot;security-hasnt-gone-away-complexity-has-caught-up&quot;&gt;Security Hasn&apos;t Gone Away. Complexity Has Caught Up.&lt;/h2&gt;&lt;p&gt;The survey asked respondents about their top challenges in deploying containers. &lt;strong&gt;&quot;Cultural changes with the development team&quot; came in at #1 with 47%&lt;/strong&gt;, followed by &quot;lack of training&quot; (36%) and &quot;security&quot; (36%).&lt;/p&gt;&lt;p&gt;That security figure deserves attention. In 2023, security was the top challenge. It hasn&apos;t become less important. If anything, it&apos;s become more critical as AI workloads introduce new attack surfaces. What&apos;s changed is that platform engineering complexity has risen to match it as an operational bottleneck.&lt;/p&gt;&lt;p&gt;The report&apos;s authors frame the cultural challenge as evidence for Platform Engineering: building standardized platforms with &quot;paved roads, sensible defaults, and clear guardrails.&quot; That framing is correct, but incomplete. The cultural resistance the survey identifies isn&apos;t irrational. Developers express skepticism that containers add unnecessary complexity for simple applications. Operations teams worry about troubleshooting containerized systems. Management questions whether investments are distracting from feature delivery.&lt;/p&gt;&lt;p&gt;Now, layer AI agents on top of this. The MCP revolution is enabling AI systems to call external tools, access databases, and take autonomous actions. Each of those capabilities is a new permission surface. Each is a &lt;a href=&quot;https://traefik.io/blog/the-triple-ai-security-gap?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;new governance challenge&lt;/a&gt;. Organizations struggling with basic container deployment complexity aren&apos;t ready for agent-to-agent communication patterns where security and access control become exponentially harder to reason about.&lt;/p&gt;&lt;p&gt;The security challenge hasn&apos;t diminished. It&apos;s compounding. And it&apos;s compounding on top of platform engineering foundations that many organizations haven&apos;t solidified.&lt;/p&gt;&lt;h2 id=&quot;gitops-as-the-maturity-marker&quot;&gt;GitOps as the Maturity Marker&lt;/h2&gt;&lt;p&gt;The survey segments organizations into four maturity profiles: explorers (8%), adopters (32%), practitioners (34%), and innovators (25%). The progression between these stages correlates strongly with specific technology and practice adoption.&lt;/p&gt;&lt;p&gt;The most telling correlation is GitOps adoption: &lt;strong&gt;0% of explorers have implemented GitOps, while 58% of innovators run GitOps-compliant deployments&lt;/strong&gt;. CI/CD shows a similar pattern. 42% of explorers use it versus 91% of innovators.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/02/GitOps-Principles@2x.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Figure 17, 2026 CNCF Annual Cloud Native Survey&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;920&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/02/GitOps-Principles@2x.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/02/GitOps-Principles@2x.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/02/GitOps-Principles@2x.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/02/GitOps-Principles@2x.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Figure 17, &lt;/span&gt;&lt;a href=&quot;https://www.cncf.io/wp-content/uploads/2026/01/CNCF_Annual_Survey_Report_final.pdf?ref=containous.ghost.io&quot;&gt;&lt;u&gt;&lt;span class=&quot;underline&quot; style=&quot;white-space: pre-wrap;&quot;&gt;2026 CNCF Annual Cloud Native Survey&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/02/CI-CD-Tools@2x.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Figure 18, 2026 CNCF Annual Cloud Native Survey&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;920&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/02/CI-CD-Tools@2x.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/02/CI-CD-Tools@2x.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/02/CI-CD-Tools@2x.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/02/CI-CD-Tools@2x.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Figure 18, &lt;/span&gt;&lt;a href=&quot;https://www.cncf.io/wp-content/uploads/2026/01/CNCF_Annual_Survey_Report_final.pdf?ref=containous.ghost.io&quot;&gt;&lt;u&gt;&lt;span class=&quot;underline&quot; style=&quot;white-space: pre-wrap;&quot;&gt;2026 CNCF Annual Cloud Native Survey&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;This isn&apos;t just correlation. GitOps requires, and forces, a level of operational discipline that defines mature cloud native organizations: declarative configurations, version control for infrastructure, automated synchronization, and clear audit trails. That last point matters enormously for security. You can&apos;t secure what you can&apos;t audit. You can&apos;t audit what isn&apos;t versioned. Organizations that can&apos;t achieve this discipline will struggle with AI workloads, which require even more rigorous deployment practices and access controls.&lt;/p&gt;&lt;p&gt;The survey also reveals that innovators operate at a fundamentally different velocity. 74% check in code multiple times daily (versus 35% of explorers). 41% run daily releases (versus 12% of explorers). And 59% automate more than 60% of their deployments (versus 6% of explorers).&lt;/p&gt;&lt;p&gt;If your infrastructure layer requires ClickOps, you&apos;re building for yesterday&apos;s market. And if your security model depends on manual reviews that can&apos;t keep pace with automated deployments, you&apos;re building a compliance gap that will only widen.&lt;/p&gt;&lt;h2 id=&quot;the-sustainability-warning&quot;&gt;The Sustainability Warning&lt;/h2&gt;&lt;p&gt;Buried in the report is a warning that deserves more attention. A September 2025 open letter from open source infrastructure stewards warned that critical systems operate under &quot;a dangerously fragile premise,&quot; relying on goodwill rather than sustainable funding models.&lt;/p&gt;&lt;p&gt;The letter specifically calls out AI/ML workloads as drivers of &quot;machine-driven, often wasteful automated usage&quot; that strains open source infrastructure. The report notes that &quot;commercial-scale workloads often run without caching, throttling, or even awareness of the strain they impose.&quot;&lt;/p&gt;&lt;p&gt;This should concern anyone building AI infrastructure. The naive approach (more API calls, more requests, more brute-force retry logic) is technically simple and operationally catastrophic. Organizations that build efficiency into their AI infrastructure from day one will have both cost and sustainability advantages.&lt;/p&gt;&lt;h2 id=&quot;what-this-means-for-infrastructure-strategy&quot;&gt;What This Means for Infrastructure Strategy&lt;/h2&gt;&lt;p&gt;The CNCF survey paints a clear picture of where infrastructure investment should flow:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Inference over training.&lt;/strong&gt; The majority of organizations are consumers of models, not producers. Infrastructure that optimizes inference through &lt;a href=&quot;https://doc.traefik.io/traefik-hub/ai-gateway/middlewares/semantic-cache?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;intelligent caching&lt;/a&gt;, efficient routing, and scale-to-zero capabilities will capture more value than training-focused solutions.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Kubernetes-native is table stakes.&lt;/strong&gt; With 66% of organizations running AI workloads on Kubernetes, solutions that require separate orchestration or bolt-on integrations will face adoption friction.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Security and simplicity aren&apos;t trade-offs.&lt;/strong&gt; When &quot;cultural changes&quot; and &quot;security&quot; are both top-three challenges, infrastructure that reduces cognitive complexity while strengthening access controls has a real moat. This becomes even more critical as MCP-enabled agents expand the permission surface.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;GitOps compatibility is non-negotiable.&lt;/strong&gt; The correlation between GitOps adoption and organizational maturity is too strong to ignore. Any infrastructure that requires manual configuration or UI-driven workflows is building for a shrinking market segment. More importantly, GitOps provides the audit trail that security and compliance teams increasingly demand.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Efficiency matters more than we admit.&lt;/strong&gt; The sustainability concerns raised in the report aren&apos;t just ethical considerations. They&apos;re operational realities. Inefficient AI infrastructure is expensive AI infrastructure.&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;questions-for-the-road-ahead&quot;&gt;Questions for the Road Ahead&lt;/h2&gt;&lt;p&gt;The survey opens as many questions as it answers.&amp;nbsp;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;As organizations move from occasional AI deployments to production-scale inference, how are they governing &lt;strong&gt;agentic workflows&lt;/strong&gt;? The MCP ecosystem is evolving rapidly, but we have no baseline data on adoption patterns or access control approaches.&lt;/li&gt;&lt;li&gt;Similarly, the Kubernetes-centric view is appropriate for CNCF, but enterprises increasingly manage traffic across &lt;strong&gt;VMs, containers, and serverless&lt;/strong&gt; simultaneously. How are organizations handling that complexity? &lt;/li&gt;&lt;li&gt;And at the most fundamental level: how is traffic actually flowing through these systems? The survey covers orchestration and observability well, but the &lt;strong&gt;routing and governance layer&lt;/strong&gt; between services remains unexplored.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;These aren&apos;t criticisms. They&apos;re signs of a maturing ecosystem where the interesting questions keep evolving.&lt;/p&gt;&lt;h2 id=&quot;the-bottom-line&quot;&gt;The Bottom Line&lt;/h2&gt;&lt;p&gt;The CNCF survey confirms that we&apos;re past the &quot;&lt;em&gt;should we do AI&lt;/em&gt;&quot; phase and deep into the &quot;&lt;em&gt;how do we operationalize AI&lt;/em&gt;&quot; phase. The winners won&apos;t be determined by who has the best model. Foundation model providers have commoditized that race. The winners will be determined by who can move inference workloads from demo to production at scale, with the governance, security, and reliability that enterprises require.&lt;/p&gt;&lt;p&gt;That&apos;s an infrastructure problem. And infrastructure problems are what &lt;a href=&quot;https://traefik.io/pricing?ref=containous.ghost.io&quot;&gt;&lt;u&gt;we solve&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-193615038981&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;193615038981&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLKm0lUqnbUlmdC11tpCZ6KheSO4KyTzhgVAk%2BnmHWF03%2B68uwfMfbBpDucbTOR6def2kZLkxI2CPg%2FPttyhezp3DQbjP50y%2B6kRH%2F%2FhGiQENxXg2Ys4JGTcXMLA%2F2pP9BkIPODZliNUGVordZyAb%2FxFNYMC8IXRyj2%2BPFrxUJXPsnteGa%2FaVI6jnZAzBZ7tY6KQLS3o&amp;webInteractiveContentId=193615038981&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Blog_without_copies@2x-2&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-193615038981.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[From Zero to Production-Grade WAF (Without the Appliance Pain)]]></title>
            <description><![CDATA[Learn why WAF matters now, why cloud native WAF beats legacy solutions, how Traefik Hub does it differently, and how to test drive Traefik's WAF for free.]]></description>
            <link>https://traefik.io/zero-to-production-grade-waf</link>
            <guid isPermaLink="true">https://traefik.io/zero-to-production-grade-waf</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[WAF]]></category>
            <dc:creator><![CDATA[Carlos Villanúa Fernández, Immánuel Fodor]]></dc:creator>
            <pubDate>Thu, 29 Jan 2026 20:55:46 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/01/waf-blog-no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/01/waf-blog-no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/01/waf-blog-no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/01/waf-blog-no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/01/waf-blog-no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;&lt;em&gt;Traefik Hub + Coraza + OWASP CRS give developers a practical, high-powered WAF that fits cloud-native workflows.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Let us start with the uncomfortable truth: your app is getting hammered long before it hits prod.&lt;/p&gt;&lt;p&gt;As of January 2026, &lt;a href=&quot;https://www.imperva.com/resources/resource-library/reports/2025-bad-bot-report/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Imperva reports&lt;/u&gt;&lt;/a&gt; that almost 51% of internet traffic is non-human, and bad bots alone make up nearly one-third of all traffic. &lt;a href=&quot;https://www.verizon.com/business/resources/reports/dbir/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Data Breach Investigations Report 2025&lt;/u&gt;&lt;/a&gt; adds a second punch: a 34% increase in attackers exploiting vulnerabilities to gain initial access. These are the turbulent waters your APIs are shipping into.&lt;/p&gt;&lt;p&gt;And it gets worse. &lt;a href=&quot;https://www.darkreading.com/cyberattacks-data-breaches/sql-injection-attacks-represent-two-third-of-all-web-app-attacks?ref=containous.ghost.io&quot;&gt;&lt;u&gt;SQL injection alone accounts for 65% of all web application attacks&lt;/u&gt;&lt;/a&gt;. A 20+ year-old vulnerability class that still dominates. When breaches happen, &lt;a href=&quot;https://www.ibm.com/reports/data-breach?ref=containous.ghost.io&quot;&gt;&lt;u&gt;IBM&apos;s 2025 report&lt;/u&gt;&lt;/a&gt; shows U.S. costs average $10.22 million, while global costs average at $4.44 million.&lt;/p&gt;&lt;p&gt;This is why Web Application Firewalls (WAFs) still matter. Not because they replace secure coding, but because they buy you time and block obvious exploitation while you patch, tune, and ship.&lt;/p&gt;&lt;p&gt;The other truth: WAFs used to mean expensive appliances and slow integrations. That is no longer the case. Traefik Hub API Gateway integrates &lt;a href=&quot;https://coraza.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Coraza WAF&lt;/u&gt;&lt;/a&gt; as a native feature, providing high-performance protection with an implementation flow that fits developer workflows. Coraza and OWASP CRS are both well-maintained, standalone open-source projects, and now Traefik Hub packages them into a production-ready gateway.&lt;/p&gt;&lt;p&gt;Before we dive into how to deploy and test Traefik Hub&apos;s native WAF integration, let&apos;s quickly explore why they matter and the technologies behind them.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-206326407446&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:255.078125px; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;206326407446&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLWGSKSaVod8ZcLeUxEPsHgUwl2FR9INxNkJsXiYDyRqsyKXwqhr6%2By9BLOWjIkSGlor1%2FzY3SjjNG08eRNUIYfakpV3AnhgFaOujDQ%2Fg8%2FqII%3D&amp;webInteractiveContentId=206326407446&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;waf kit promo&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-206326407446.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;why-wafs-matter-right-now&quot;&gt;Why WAFs Matter (Right Now)&lt;/h2&gt;&lt;p&gt;A WAF is a shield in front of your app. It inspects HTTP traffic and blocks known malicious patterns before requests hit your code. You still need secure coding, auth, and rate limiting. But WAFs are your safety net when:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;You cannot patch instantly&lt;/li&gt;&lt;li&gt;Attackers are automated and relentless&lt;/li&gt;&lt;li&gt;A single vulnerable endpoint could open the door to [insert your most valuable information sources here]&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The dataset behind the &lt;a href=&quot;https://owasp.org/Top10/2025/0x00_2025-Introduction/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OWASP Top 10:2025&lt;/u&gt;&lt;/a&gt; document includes over 2.8 million applications. In that data, common risk categories remain pervasive: Broken Access Control, Security Misconfiguration, and Cryptographic Failures show up in production apps at scale. Those are not edge cases. They are everyday issues.&lt;/p&gt;&lt;p&gt;Here&apos;s how WAF coverage maps to the OWASP Top 10:&lt;/p&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Rank&lt;/th&gt;
&lt;th&gt;Category&lt;/th&gt;
&lt;th&gt;WAF Coverage&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;A01&lt;/td&gt;
&lt;td&gt;Broken Access Control&lt;/td&gt;
&lt;td&gt;Custom rules&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A03&lt;/td&gt;
&lt;td&gt;Software Supply Chain Failures&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A04&lt;/td&gt;
&lt;td&gt;Cryptographic Failures&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A05&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Injection (SQLi, XSS)&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;&lt;strong&gt;Full CRS coverage&lt;/strong&gt;&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A06&lt;/td&gt;
&lt;td&gt;Insecure Design&lt;/td&gt;
&lt;td&gt;Limited&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A07&lt;/td&gt;
&lt;td&gt;Authentication Failures&lt;/td&gt;
&lt;td&gt;Custom rules&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;A10&lt;/td&gt;
&lt;td&gt;Mishandling of Exceptions&lt;/td&gt;
&lt;td&gt;Partial&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;Notice that injection attacks (the category that includes SQL injection and XSS) get full CRS coverage out of the box. Given that SQLi represents 65% of web app attacks, that is significant protection for minimal effort.&lt;/p&gt;&lt;h2 id=&quot;your-defense-stack-in-plain-english&quot;&gt;Your Defense Stack... In Plain English&lt;/h2&gt;&lt;p&gt;Here is what each piece does:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;ModSecurity&lt;/strong&gt;: the original open-source WAF engine. The project calls it the &quot;Swiss Army Knife&quot; of WAFs. It defined the standard for rule-based web application firewalls.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;SecLang&lt;/strong&gt;: the ModSecurity rules language. Rules look like &lt;code&gt;SecRule VARIABLES &quot;@OPERATOR ...&quot; &quot;ACTIONS&quot;&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Coraza&lt;/strong&gt;: a modern, high-performance WAF engine that speaks the same language as ModSecurity (SecLang). Written in Go, memory-safe, actively maintained. Think of it as the next-generation engine that runs the same rules.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;OWASP CRS&lt;/strong&gt;: the rule set. A community-maintained collection of generic attack detection rules designed to cover the OWASP Top Ten with minimal false alerts. Over 500 rule bypasses closed through their bug bounty program.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Traefik Hub API Gateway&lt;/strong&gt;: a commercial gateway that integrates Coraza WAF and makes deployment and tuning practical for teams.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Coraza gives you the WAF engine, CRS gives you the rules, and Traefik Hub turns it into a clean, deployable, version-controlled middleware.&lt;/p&gt;&lt;h2 id=&quot;the-waf-landscape-why-cloud-native-wins&quot;&gt;The WAF Landscape: Why Cloud-Native Wins&lt;/h2&gt;&lt;h3 id=&quot;the-problem-with-legacy-enterprise-wafs&quot;&gt;The Problem with Legacy Enterprise WAFs&lt;/h3&gt;&lt;p&gt;Traditional enterprise WAFs come with enterprise pricing: $50,000 to $100,000+ annually. They require dedicated security teams, complex deployment processes, and were not designed for Kubernetes or microservices architectures. Hidden costs abound: throughput limits, overage charges, and mandatory professional services.&lt;/p&gt;&lt;h3 id=&quot;cloud-provider-wafs-death-by-a-thousand-cuts&quot;&gt;Cloud Provider WAFs: Death by a Thousand Cuts&lt;/h3&gt;&lt;p&gt;AWS WAF looks affordable at first: $5/month plus $1/rule plus $0.60/million requests. But add Shield Advanced for DDoS protection, and you are looking at ~$3,000/month. Costs scale unpredictably with traffic, and you are locked into a single cloud provider.&lt;/p&gt;&lt;p&gt;The real problem is not just cost. It is opacity. Cloud provider WAFs are black boxes. You cannot see exactly what rules are doing, you cannot customize the detection logic, and you cannot audit the security decisions being made. When a false positive blocks legitimate traffic, debugging is guesswork.&lt;/p&gt;&lt;h3 id=&quot;the-traefik-hub-gateway-backed-approach&quot;&gt;The Traefik Hub Gateway-Backed Approach&lt;/h3&gt;&lt;p&gt;Traefik Hub takes a different path:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Affordable pricing&lt;/strong&gt;: Enterprise-grade WAF without the enterprise “big-vendor” pricing&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Cloud-native architecture&lt;/strong&gt;: Built for Kubernetes and microservices from day one&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Native Coraza integration&lt;/strong&gt;: No sidecars, no WASM overhead, no complex setup&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Open-source foundations&lt;/strong&gt;: Battle-tested Coraza engine &amp;amp; OWASP CRS rules&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Transparent rules&lt;/strong&gt;: You can see exactly what is being blocked, no black box&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;You get the best of both worlds: an open-source WAF engine with community-hardened rules, commercial support, and native integration through Traefik Hub.&lt;/p&gt;&lt;h2 id=&quot;architecture-at-a-glance&quot;&gt;Architecture at a Glance&lt;/h2&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/01/traefik-waf-middleware-flow.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1272&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/01/traefik-waf-middleware-flow.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/01/traefik-waf-middleware-flow.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/01/traefik-waf-middleware-flow.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2026/01/traefik-waf-middleware-flow.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;WAF protection is applied as middleware. That design matters because you can:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Enable it per route or per service&lt;/li&gt;&lt;li&gt;Start in detection-only mode&lt;/li&gt;&lt;li&gt;Layer it with OIDC, JWT, or rate limiting&lt;/li&gt;&lt;li&gt;Tune rules without touching application code&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This is the developer workflow we want: security becomes a YAML configuration change, reviewed in Git, shipped with the same pipeline as your app.&lt;/p&gt;&lt;h2 id=&quot;hands-on-from-zero-to-protected&quot;&gt;Hands-On: From Zero to Protected&lt;/h2&gt;&lt;p&gt;Here is a minimal middleware that enables CRS and turns the engine on:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: waf
  namespace: apps
spec:
  plugin:
    coraza:
      crsEnabled: true
      directives:
        - Include @coraza.conf-recommended
        - Include @crs-setup.conf.example
        - Include @owasp_crs/*.conf
        - SecRuleEngine On
        - SecRequestBodyAccess On
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Attach that middleware to an IngressRoute, and your service is protected.&lt;/p&gt;&lt;h3 id=&quot;quick-start-a-local-demo-you-can-actually-run&quot;&gt;Quick Start: A Local Demo You Can Actually Run&lt;/h3&gt;&lt;p&gt;This kit uses k3d + Traefik Hub + Coraza + CRS, then runs Bruno (or Postman) tests to validate 200 (OK) vs 403 (Forbidden) behavior.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# 0) Unzip the the Workshop Repository
cd traefik-waf-test-kit

# 1) Create a local cluster
k3d cluster create traefik-waf \
  --port 80:80@loadbalancer \
  --port 443:443@loadbalancer \
  --port 8000:8000@loadbalancer \
  --k3s-arg &quot;--disable=traefik@server:0&quot;

# 2) Add Traefik Helm Repository
helm repo add --force-update traefik https://traefik.github.io/charts

# 3) Create Traefik Namespace and License
kubectl create namespace traefik

# Note: Generate your Traefik Hub token from https://hub.traefik.io  
# Replace &amp;lt;TRAEFIK_HUB_TOKEN&amp;gt; with the token from hub.traefik.io
kubectl create secret generic traefik-hub-license --namespace traefik --from-literal=token=&amp;lt;TRAEFIK_HUB_TOKEN&amp;gt;

# 4) Install Traefik Hub
helm upgrade --install --namespace traefik traefik traefik/traefik \
  --set hub.token=traefik-hub-license \
  --set ingressRoute.dashboard.enabled=true \
  --set ingressRoute.dashboard.matchRule=&apos;Host(`dashboard.docker.localhost`)&apos; \
  --set ingressRoute.dashboard.entryPoints={web} \
  --set image.registry=ghcr.io --set image.repository=traefik/traefik-hub --set image.tag=v3.19.0

# 5) Create Application Namespace
kubectl create namespace apps

# 6) Deploy the httpbin app + WAF middlewares
kubectl apply -f httpbin-waf/&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now validate with a normal request and a SQL injection attempt:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# normal request -&amp;gt; 200 OK
curl -i &quot;http://httpbin.traefik.localhost/waf/anything?test=hello&quot;

# SQLi attempt -&amp;gt; 403 Forbidden
curl -i &quot;http://httpbin.traefik.localhost/waf/anything?user=admin&amp;amp;password=test%27%20OR%20%271%27%3D%271&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can also run the Bruno collection in &lt;code&gt;bruno-waf-tests/&lt;/code&gt; for full coverage across SQLi, XSS, bots, traversal, command injection, and sensitive files examples.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Want to see the full test suite in action?&lt;/strong&gt; Try Traefik Hub with a complete WAF test kit, which includes 19 pre-built attack scenarios across 8 categories, plus the full middleware config with 50+ custom rules. &lt;a href=&quot;https://info.traefik.io/waf-testing-kit?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Request your trial here&lt;/a&gt;.&lt;/p&gt;&lt;h2 id=&quot;how-the-rules-work-so-you-can-tune-them&quot;&gt;How the Rules Work (So You Can Tune Them)&lt;/h2&gt;&lt;p&gt;CRS is not just regex. It is a structured ruleset that targets specific attack classes and uses anomaly scoring to decide when to block. That is why tuning is possible without turning protection into guesswork.&lt;/p&gt;&lt;p&gt;SecLang rules are readable and direct. The syntax is:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;SecRule VARIABLES &quot;@OPERATOR OPERATOR_ARGUMENTS&quot; &quot;ACTIONS&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For example:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;SecRule ARGS &quot;@detectSQLi&quot; &quot;id:302,phase:2,deny,msg:&apos;SQL Injection detected&apos;&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This rule checks all request arguments (ARGS) for SQL injection patterns (@detectSQLi), runs during phase 2 of request processing, denies matching requests, and logs a message. The syntax is powerful enough to express complex conditions, yet readable enough for security teams to audit.&lt;/p&gt;&lt;p&gt;You can use CRS for baseline protection and then add tight custom rules for your app&apos;s specific needs:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# Admin path protection
- SecRule REQUEST_URI &quot;@rx /admin&quot; &quot;id:102,phase:1,log,deny,status:403,msg:&apos;Admin path blocked&apos;&quot;

# Bot and scanner detection
- SecRule REQUEST_HEADERS:User-Agent &quot;@pm sqlmap nmap nikto&quot; &quot;id:501,phase:1,deny,msg:&apos;Scanner detected&apos;&quot;

# Sensitive file protection
- SecRule REQUEST_URI &quot;@pm .git .env .conf&quot; &quot;id:505,phase:1,deny,msg:&apos;Sensitive file access&apos;&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;rollout-strategy-that-wont-break-prod&quot;&gt;Rollout Strategy That Won&apos;t Break Prod&lt;/h2&gt;&lt;p&gt;A safe rollout looks like this:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;1. Detection-only&lt;/strong&gt;: Deploy with &lt;code&gt;SecRuleEngine DetectionOnly&lt;/code&gt; to see what would be blocked without impacting production. Let it run for at least a week to capture normal traffic patterns.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;- SecRuleEngine DetectionOnly&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;2. Review&lt;/strong&gt;: Analyze the logs. Group blocked requests by rule ID. Look for false positives (legitimate requests that triggered rules). Common culprits include rich text editors, JSON payloads with code snippets, and query strings that resemble attacks.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3. Tune&lt;/strong&gt;: Create exclusion rules for legitimate patterns. Be surgical. Do not disable entire rule categories when a narrow exclusion will suffice. CRS uses anomaly scoring, so you can also tune the &lt;code&gt;tx.inbound_anomaly_score_threshold&lt;/code&gt; variable.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;4. Enforce&lt;/strong&gt;: Switch to blocking mode once you are confident.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;- SecRuleEngine On&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;5. Expand progressively&lt;/strong&gt;: Start with your lowest-risk endpoints, verify everything works, then expand coverage. This reduces the blast radius if you missed something during testing.&lt;/p&gt;&lt;p&gt;This is the difference between &quot;WAF as a checkbox&quot; and &quot;WAF that actually helps.&quot; It should block real attacks, not your legitimate users.&lt;/p&gt;&lt;h2 id=&quot;production-considerations&quot;&gt;Production Considerations&lt;/h2&gt;&lt;h3 id=&quot;defense-in-depth&quot;&gt;Defense in Depth&lt;/h3&gt;&lt;p&gt;WAF is one layer among many you can add. Combine it with:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Rate limiting&lt;/strong&gt;: Prevent brute force and volumetric attacks&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Authentication&lt;/strong&gt;: OIDC, JWT, or OAuth2 for identity verification&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Security headers&lt;/strong&gt;: CSP, HSTS, X-Frame-Options for browser-side protection&lt;/li&gt;&lt;li&gt;&lt;strong&gt;mTLS&lt;/strong&gt;: Certificate-based service-to-service authentication&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Traefik Hub supports all of these as composable middleware. Your security configuration lives in Kubernetes manifests: version-controlled, reviewable in pull requests, and deployed alongside your applications through the same GitOps pipelines.&lt;/p&gt;&lt;h3 id=&quot;monitoring-and-observability&quot;&gt;Monitoring and Observability&lt;/h3&gt;&lt;p&gt;A WAF that silently blocks attacks is not giving you the security posture improvement you need. Enable structured JSON audit logging and forward to your centralized logging platform (ELK, Loki, Splunk). Set up alerts for:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Blocked request spikes&lt;/strong&gt;: Often indicates an active attack. Correlate with source IPs.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;New attack patterns&lt;/strong&gt;: Watch for rule IDs you have not seen before.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;False positive patterns&lt;/strong&gt;: Track when legitimate users report issues.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Anomaly score distributions&lt;/strong&gt;: Monitor how close legitimate traffic gets to your blocking threshold.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Treat WAF logs as a security data source, not just application logs. They tell you what attackers are trying to do, which can inform broader security improvements.&lt;/p&gt;&lt;h2 id=&quot;enterprise-protection-with-developer-workflows&quot;&gt;Enterprise Protection with Developer Workflows&lt;/h2&gt;&lt;p&gt;The payoff is not just security. It is developer time and operational sanity.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;No heavyweight appliance or weeks-long integration&lt;/li&gt;&lt;li&gt;Proven rules mapped to the OWASP Top 10 risks&lt;/li&gt;&lt;li&gt;Local demo and validation in minutes&lt;/li&gt;&lt;li&gt;Configuration lives in Git and deploys with your app&lt;/li&gt;&lt;li&gt;Transparent, auditable rules you can read and customize&lt;/li&gt;&lt;li&gt;Crowdsourced intelligence with constant ruleset updates&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;WAFs no longer require massive security budgets. With Traefik Hub API Gateway integrating Coraza &amp;amp; OWASP CRS, you deploy a modern WAF in a way that fits developer workflows while still delivering production-grade performance.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Ready to experience cloud-native WAF protection?&lt;/strong&gt; Click below to request your free trial of Traefik Hub and get our complete WAF Test Kit. It includes the full middleware config with 50+ security rules, Bruno test suite with 19 attack scenarios across 8 categories, Kubernetes deployment manifests, and a step-by-step deployment guide.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-206326407446&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:255.078125px; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;206326407446&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLWGSKSaVod8ZcLeUxEPsHgUwl2FR9INxNkJsXiYDyRqsyKXwqhr6%2By9BLOWjIkSGlor1%2FzY3SjjNG08eRNUIYfakpV3AnhgFaOujDQ%2Fg8%2FqII%3D&amp;webInteractiveContentId=206326407446&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;waf kit promo&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-206326407446.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;sources&quot;&gt;Sources&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://www.imperva.com/resources/resource-library/reports/2025-bad-bot-report/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Imperva 2025 Bad Bot Report&lt;/u&gt;&lt;/a&gt; - 51% non-human traffic&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.verizon.com/business/resources/reports/dbir/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Data Breach Investigation Report 2025&lt;/u&gt;&lt;/a&gt; - 34% increase in vulnerability exploitation&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.darkreading.com/cyberattacks-data-breaches/sql-injection-attacks-represent-two-third-of-all-web-app-attacks?ref=containous.ghost.io&quot;&gt;&lt;u&gt;SQL Injection = 65% of Web App Attacks&lt;/u&gt;&lt;/a&gt; - Dark Reading&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.ibm.com/reports/data-breach?ref=containous.ghost.io&quot;&gt;&lt;u&gt;IBM Cost of Data Breach Report 2025&lt;/u&gt;&lt;/a&gt; - $4.44M global avg, $10.22M U.S.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://owasp.org/Top10/2025/0x00_2025-Introduction/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OWASP Top 10:2025&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://coreruleset.org/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OWASP Core Rule Set&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://coraza.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Coraza WAF&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://coraza.io/docs/seclang/syntax/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Coraza SecLang Syntax&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/solutions/waf?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik WAF Solution&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;script id=&quot;tocOverrides&quot; type=&quot;application/json&quot;&gt;
  {
    &quot;1&quot;: &quot;Why WAFs Matter&quot;,
    &quot;2&quot;: &quot;Your Defense Stack&quot;,
    &quot;3&quot;: &quot;Why Cloud-Native Wins&quot;,
    &quot;4&quot;: &quot;Architecture at a Glance&quot;,
    &quot;5&quot;: &quot;From Zero to Protected&quot;,
    &quot;6&quot;: &quot;How the Rules Work&quot;,
    &quot;7&quot;: &quot;Your Rollout Strategy&quot;,
    &quot;8&quot;: &quot;Production Considerations&quot;
  }
&lt;/script&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[The Illusion of Safety: Why the Ingress NGINX Fork is Not a Security Strategy]]></title>
            <description><![CDATA[Forking ingress-nginx creates an illusion of safety; it still contains the #IngressNightmare vulnerabilities. See how to easily switch to Traefik instead.]]></description>
            <link>https://traefik.io/the-illusion-of-safety-why-the-ingress-nginx-fork-is-not-a-security-strategy</link>
            <guid isPermaLink="true">https://traefik.io/the-illusion-of-safety-why-the-ingress-nginx-fork-is-not-a-security-strategy</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Strategy]]></category>
            <category><![CDATA[ingress nginx]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Tue, 27 Jan 2026 19:57:22 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/01/dont-fork-ingress-nginx-blog-no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;There&apos;s risk in forking ingress nginx&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2026/01/dont-fork-ingress-nginx-blog-no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/01/dont-fork-ingress-nginx-blog-no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/01/dont-fork-ingress-nginx-blog-no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/01/dont-fork-ingress-nginx-blog-no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h3 id=&quot;when-a-building%E2%80%99s-foundation-cracks-you-don%E2%80%99t-repaint-the-walls-you-move&quot;&gt;&lt;strong&gt;When a building’s foundation cracks, you don’t repaint the walls. You move.&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;On November 11, 2025, the Kubernetes SIG Network and Security Response Committee &lt;a href=&quot;https://kubernetes.io/blog/2025/11/11/ingress-nginx-retirement/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;announced&lt;/u&gt;&lt;/a&gt; the upcoming retirement of the Ingress NGINX Controller. The project is now in a &quot;best-effort&quot; maintenance phase until &lt;strong&gt;March 2026&lt;/strong&gt;. After this date, there will be no further releases, bug fixes, or security updates.&lt;/p&gt;&lt;p&gt;On December 22, 2025, &lt;a href=&quot;https://www.chainguard.dev/unchained/keeping-ingress-nginx-alive?ref=containous.ghost.io&quot;&gt;Chainguard announced&lt;/a&gt; a maintenance fork of &lt;code&gt;ingress-nginx&lt;/code&gt; via its &quot;EmeritOSS&quot; program.&lt;/p&gt;
&lt;p&gt;For platform engineers and CTOs, this creates a tempting narrative: &lt;em&gt;&quot;We don&apos;t have to migrate. We can just switch the image and stay safe.&quot;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;Here is the problem: that conclusion confuses Extended Support with Artificial Life Support.&lt;/p&gt;&lt;p&gt;In software, extended support is standard practice for stable, mature platforms (like Ubuntu ESM or Traefik’s own LTS versions). But &lt;code&gt;ingress-nginx&lt;/code&gt; isn’t retiring because it is old. It is retiring because its creators deemed its architecture &lt;strong&gt;fundamentally unsafe&lt;/strong&gt; to maintain.&lt;/p&gt;

&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-202811305109&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:256.4375px; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;202811305109&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJVIV8oWlABm0OqGOkvR4L1ncYX7Jyf8enPpYkAHxmpYh6m0ak%2FE1ETExvzpwBBQbi%2FEoa87xJ0VHIctMdrQFIca%2BN87hIAcBvi0GQ%2FWi0qbp3FlenCwEnnQm3PYVHWcBDAuuTneNqojIyRa78N%2Ff8SV6IXsMxZhnoG27RtTBMf50bDx2SFiIlEIoLh7zWp3A%3D%3D&amp;webInteractiveContentId=202811305109&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;nginx-fade-v2&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-202811305109.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;Supporting a solid architecture is stability. Supporting a broken architecture is a liability.&lt;/p&gt;&lt;p&gt;Even Chainguard is explicit about the intent. They are &lt;em&gt;not&lt;/em&gt; continuing development. They are maintaining a working version to buy users time to move to a different solution, with CVEs addressed on a &quot;best-effort&quot; basis.&lt;/p&gt;&lt;h2 id=&quot;the-hard-truth-why-the-experts-walked-away&quot;&gt;The Hard Truth: Why the Experts Walked Away&lt;/h2&gt;&lt;p&gt;To understand why the fork is a strategic error, we have to look at why the project ended. The Kubernetes SIG Network and Security Response Committee didn&apos;t retire &lt;code&gt;ingress-nginx&lt;/code&gt; solely due to a lack of resources. They retired it because the project suffered from what they officially termed &quot;&lt;strong&gt;insurmountable technical debt&lt;/strong&gt;.&quot;&lt;/p&gt;
&lt;p&gt;According to the official retirement announcement, the project’s flexibility—once its greatest asset—had become its greatest vulnerability. The maintainers were explicit:&lt;/p&gt;&lt;blockquote&gt;&lt;em&gt;&quot;What were once considered helpful options have sometimes come to be considered serious security flaws, such as the ability to add arbitrary NGINX configuration directives via the &apos;snippets&apos; annotations.&quot;&lt;/em&gt;&lt;/blockquote&gt;&lt;p&gt;If the original maintainers—the world&apos;s foremost experts on this codebase—could not secure this architecture without a total rewrite, it is improbable that a third-party vendor can do so with a &quot;maintenance-only&quot; approach.&lt;/p&gt;&lt;h2 id=&quot;the-fork-fallacy-you-might-patch-cves-but-you-can%E2%80%99t-patch-a-fundamentally-broken-architecture&quot;&gt;The Fork Fallacy: You Might Patch CVEs, But You Can’t Patch a Fundamentally Broken Architecture&lt;/h2&gt;&lt;p&gt;Chainguard is a leader in supply chain security, and their ability to package software is undisputed. However, the corruption in &lt;code&gt;ingress-nginx&lt;/code&gt; isn&apos;t in the packaging; it&apos;s in the fundamental logic.&lt;/p&gt;
&lt;p&gt;The fork promises to &quot;keep the lights on&quot; by updating dependencies and patching known CVEs. But this ignores the structural reality that makes the project insecure:&lt;/p&gt;
&lt;h3 id=&quot;the-templating-trap-the-root-cause&quot;&gt;The Templating Trap (The Root Cause)&lt;/h3&gt;
&lt;p&gt;The core flaw of &lt;code&gt;ingress-nginx&lt;/code&gt; is its reliance on text-based templating. It functions by reading Kubernetes resources and mashing them into a single, massive &lt;code&gt;nginx.conf&lt;/code&gt; file using templates.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;The Risk&lt;/strong&gt;: Features like &quot;configuration snippets&quot; allow users to inject raw NGINX directives and arbitrary commands directly into this template. This architecture effectively means the controller is continuously compiling untrusted user input into its root configuration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The Reality&lt;/strong&gt;: Securing this model against injection attacks without removing the flexibility users rely on is nearly impossible. A maintenance fork cannot fix this without rewriting the controller entirely.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;the-memory-safety-gap&quot;&gt;The Memory Safety Gap&lt;/h3&gt;
&lt;p&gt;&lt;code&gt;ingress-nginx&lt;/code&gt; is built on NGINX, which is written in C. It is inherently vulnerable to memory-safety issues like buffer overflows. Modern infrastructure demands memory-safe languages. Traefik is built in Go, which eliminates entire classes of memory vulnerabilities by default. A fork cannot &quot;patch&quot; C into Go.&lt;/p&gt;
&lt;h3 id=&quot;the-%E2%80%9Ccold-restart%E2%80%9D-model&quot;&gt;The “Cold Restart” Model&lt;/h3&gt;
&lt;p&gt;Because of the templating model, many configuration changes require regenerating the file and reloading the worker processes. At scale, this can cause latency spikes and dropped connections. Traefik was born in the cloud-native era; it is purely dynamic, updating routing tables instantly via the Kubernetes API without ever restarting.&lt;/p&gt;
&lt;h2 id=&quot;the-many-eyes-myth&quot;&gt;The &quot;Many Eyes&quot; Myth&lt;/h2&gt;&lt;p&gt;Open-source security relies on community scrutiny—the concept that &quot;given enough eyeballs, all bugs are shallow.&quot; Since the fork, the project has seen minimal traction. Crucially, &lt;strong&gt;issues and PRs are turned off&lt;/strong&gt; in the repository. This is not a thriving community revival; it is a quiet, vendor-specific repository. By switching to the fork, you trade a community-supported standard for a niche, proprietary patch set with significantly fewer eyes on the code.&lt;/p&gt;&lt;h2 id=&quot;the-strategic-pivot-evolution-not-stagnation&quot;&gt;The Strategic Pivot: Evolution, Not Stagnation&lt;/h2&gt;&lt;p&gt;Sticking with &lt;code&gt;ingress-nginx&lt;/code&gt; is a decision to invest in the past. The industry is moving toward the &lt;strong&gt;Gateway API&lt;/strong&gt;, a standard that solves many of the original Ingress limitations.&lt;/p&gt;
&lt;p&gt;Your strategy for 2026 should focus on adopting these modern standards, not propping up a 2015 architecture. However, we understand that &quot;rewriting everything&quot; is a non-starter for most teams.&lt;/p&gt;&lt;h2 id=&quot;the-solution-an-on-ramp-not-a-cliff&quot;&gt;The Solution: An On-Ramp, Not a Cliff&lt;/h2&gt;&lt;p&gt;The reality is that the new Gateway API standard, though excellent, doesn&apos;t yet offer perfect feature parity with the complex annotations many users rely on in Ingress NGINX. Furthermore, moving dozens or even hundreds of existing ingress resources to a completely new configuration format presents a significant and complex re-platforming challenge for any team.&lt;/p&gt;&lt;p&gt;That is why we built the &lt;a href=&quot;https://traefik.io/blog/the-ultimate-ingress-nginx-migration-kit?ref=containous.ghost.io&quot;&gt;&lt;strong&gt;&lt;u&gt;Ultimate Ingress NGINX Migration Kit&lt;/u&gt;&lt;/strong&gt;&lt;/a&gt;. It is a comprehensive tool designed to assist you in planning a progressive migration strategy, bridging the gap between where you are (Legacy Ingress) and where you need to be (Traefik &amp;amp; Gateway API).&lt;/p&gt;&lt;p&gt;Our approach includes three primary steps:&lt;/p&gt;&lt;h3 id=&quot;1-the-automated-analysis-audit-your-risk&quot;&gt;1. The Automated Analysis (Audit Your Risk)&lt;/h3&gt;&lt;p&gt;Don&apos;t guess how complex your migration will be; know for sure. Use our open-source &lt;a href=&quot;https://github.com/traefik/ingress-nginx-migration?ref=containous.ghost.io&quot;&gt;&lt;strong&gt;&lt;u&gt;Ingress NGINX Migration Tool&lt;/u&gt;&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;What it does:&lt;/strong&gt; Connects to your cluster, analyzes every Ingress resource, and generates a detailed report.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;The value:&lt;/strong&gt; It tells you exactly which annotations you are using and maps them to Traefik features, flagging any edge cases before you change a single line of code.&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;2-the-drop-in-replacement-the-buy-time-feature&quot;&gt;2. The Drop-In Replacement (The &quot;Buy Time&quot; Feature)&lt;/h3&gt;&lt;p&gt;The biggest blocker to migration is rewriting thousands of lines of YAML. We solved this with the &lt;strong&gt;Traefik Ingress NGINX Provider&lt;/strong&gt;.&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;What it does&lt;/strong&gt;: Traefik natively reads, understands, and translates your existing &lt;code&gt;ingress-nginx&lt;/code&gt; annotations into Traefik configuration.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;The value&lt;/strong&gt;: You can swap the controller binary today without rewriting your application manifests. This eliminates the &quot;Big Bang&quot; migration risk, lands you on a well-maintained controller, and allows you to modernize your config at your own pace.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;3-the-bridge-to-gateway-api-the-%E2%80%9Cfuture-proofed%E2%80%9D-path&quot;&gt;3. The Bridge to Gateway API (The “Future-Proofed” Path)&lt;/h3&gt;&lt;p&gt;Traefik offers full, production-ready support for the Gateway API &lt;strong&gt;today&lt;/strong&gt;. By moving to Traefik via the Migration Kit, you gain the power of coexistence.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;What it does:&lt;/strong&gt; You can run your legacy Ingress resources (using NGINX annotations) side-by-side with modern Gateway API routes on the same controller.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;The value:&lt;/strong&gt; This allows for a truly gradual migration. You don&apos;t need to modernize everything at once—you can reconfigure your services to use the new standard piece-by-piece, while Traefik handles traffic for both simultaneously.&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;dont-wait-for-the-next-ingressnightmare&quot;&gt;Don&apos;t Wait for the Next &quot;&lt;a href=&quot;https://www.wiz.io/blog/ingress-nginx-kubernetes-vulnerabilities?ref=containous.ghost.io&quot;&gt;IngressNightmare&lt;/a&gt;&quot;&lt;/h2&gt;
&lt;p&gt;The retirement of &lt;code&gt;ingress-nginx&lt;/code&gt; marks the end of an era. The current Chainguard fork, or any future one, may keep the lights on for a few more months, but it cannot fix the crumbling foundation that led the Kubernetes team to walk away.&lt;/p&gt;
&lt;h3 id=&quot;your-action-plan&quot;&gt;Your Action Plan&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;1. Assess your exposure:&lt;/strong&gt; Visit &lt;a href=&quot;https://ingressnginxmigration.org/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;ingressnginxmigration.org&lt;/u&gt;&lt;/a&gt; to understand the timeline and risks.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;2.&lt;/strong&gt; &lt;strong&gt;Audit now and help shape the future:&lt;/strong&gt; Run the migration tool to get your custom report:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ curl -sSL https://raw.githubusercontent.com/traefik/ingress-nginx-migration/main/scripts/install.sh | bash
$ ingress-nginx-migration
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;💡 &lt;strong&gt;Pro Tip&lt;/strong&gt;: Share your migration report with us (anonymized by design). We are actively adding support for more annotations based on community feedback. Your report helps us prioritize the features that matter most to your setup.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;3. Decommission NGINX Securely:&lt;/strong&gt; Use the Traefik Ingress NGINX Provider to switch controllers and decommission Ingress NGINX without the headaches.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;4. Migrate to Gateway API Progressively&lt;/strong&gt;: Take control of your Gateway API adoption by planning it on your own schedule. Use regular sprint cycles to assess readiness, and deploy only when you are ready.&lt;/p&gt;&lt;p&gt;Don&apos;t let your infrastructure rely on life support. Move to a platform that is active, modern, and secure by design.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-202811305109&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:256.4375px; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;202811305109&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJVIV8oWlABm0OqGOkvR4L1ncYX7Jyf8enPpYkAHxmpYh6m0ak%2FE1ETExvzpwBBQbi%2FEoa87xJ0VHIctMdrQFIca%2BN87hIAcBvi0GQ%2FWi0qbp3FlenCwEnnQm3PYVHWcBDAuuTneNqojIyRa78N%2Ff8SV6IXsMxZhnoG27RtTBMf50bDx2SFiIlEIoLh7zWp3A%3D%3D&amp;webInteractiveContentId=202811305109&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;nginx-fade-v2&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-202811305109.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Ingress NGINX Retirement: The Ultimate Migration Kit]]></title>
            <description><![CDATA[Explore our ingress-NGINX migration guide and the OSS tool we built to identify which annotations you're using and map out your path forward.]]></description>
            <link>https://traefik.io/the-ultimate-ingress-nginx-migration-kit</link>
            <guid isPermaLink="true">https://traefik.io/the-ultimate-ingress-nginx-migration-kit</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[News]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Tue, 09 Dec 2025 01:54:39 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/12/ingress-nginx-blog-no-copies.jpg&quot; class=&quot;kg-image&quot; alt=&quot;ingress-nginx logo disappearing&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/12/ingress-nginx-blog-no-copies.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/12/ingress-nginx-blog-no-copies.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/12/ingress-nginx-blog-no-copies.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/12/ingress-nginx-blog-no-copies.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;The ticking clock for Kubernetes networking has a date: March 2026.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;For years, &lt;a href=&quot;https://github.com/kubernetes/ingress-nginx?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Ingress NGINX&lt;/u&gt;&lt;/a&gt; has been the default choice for routing traffic in Kubernetes clusters. It has served the community well, but recent announcements from the Kubernetes project confirm what we anticipated: &lt;strong&gt;Ingress NGINX is retiring, in less than 120 days.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;We previously covered the urgency of this move in our articles on &lt;a href=&quot;https://traefik.io/blog/migrate-from-ingress-nginx-to-traefik-now?ref=containous.ghost.io&quot;&gt;&lt;u&gt;migrating from Ingress NGINX to Traefik now&lt;/u&gt;&lt;/a&gt; and &lt;a href=&quot;https://traefik.io/blog/transition-from-ingress-nginx-to-traefik?ref=containous.ghost.io&quot;&gt;&lt;u&gt;strategies for the transition&lt;/u&gt;&lt;/a&gt;. Today, we are taking the next step to support the community with dedicated tools and resources.&lt;/p&gt;&lt;h2 id=&quot;the-hard-deadline&quot;&gt;The Hard Deadline&lt;/h2&gt;&lt;p&gt;The official deprecation timeline is set. By &lt;strong&gt;March 2026&lt;/strong&gt;, the project will cease all support. &lt;strong&gt;No patches. No updates. No security fixes.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;If you are running Kubernetes in production, this is a critical risk. Running an unmaintained ingress controller exposes your infrastructure to future vulnerabilities that will simply go unpatched.&amp;nbsp;&lt;/p&gt;&lt;h2 id=&quot;you-need-a-plan&quot;&gt;You Need a Plan&lt;/h2&gt;&lt;p&gt;Panic is not a strategy, but preparation is. The move to the new &lt;a href=&quot;https://traefik.io/blog/how-traefik-labs-is-pioneering-the-kubernetes-gateway-api-revolution?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Gateway API&lt;/u&gt;&lt;/a&gt; standard is the ultimate destination for the ecosystem, but rewriting every ingress route and reconfiguration every load balancer overnight is rarely feasible.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-202811305109&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:256.4375px; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;202811305109&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLp%2B0Ykunrgdd3snjkzuBiwwCVa6%2FRh8mJfmLPytySfaRf8JfTfuuXPg3aED1yqYQ5KZbOTQxu5yJwuX%2BW1uh0rcnbXZ9mZI1XyfVfPK05DNN4%3D&amp;webInteractiveContentId=202811305109&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;nginx-fade-v2&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-202811305109.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;!--kg-card-end: html--&gt;
&lt;p&gt;You need a strategy that covers both immediate security and future modernization:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Short Term (The Safety Net):&lt;/strong&gt; Traefik with its &lt;a href=&quot;https://doc.traefik.io/traefik/reference/install-configuration/providers/kubernetes/kubernetes-ingress-nginx/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;NGINX provider&lt;/u&gt;&lt;/a&gt; is currently the only available solution on the market to provide native support for Ingress NGINX custom annotations. This &lt;strong&gt;makes Traefik the only true drop-in replacement&lt;/strong&gt;, allowing you to migrate from Ingress NGINX with no changes required to your existing Ingress resources. You stay secure and supported without the need for a massive rewrite.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Long Term (The Modernization):&lt;/strong&gt; Once you are on a stable, supported platform, you can gradually migrate to the Gateway API at your own pace, future-proofing your stack.&lt;/li&gt;&lt;/ol&gt;&lt;h2 id=&quot;we-built-the-ultimate-migration-kit&quot;&gt;We Built The Ultimate Migration Kit&lt;/h2&gt;&lt;p&gt;To help the community navigate this transition, we have consolidated all relevant information into a comprehensive project. We launched a dedicated website to guide you through every step of the process.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;👉 The Migration Guide: &lt;/strong&gt;&lt;a href=&quot;http://ingressnginxmigration.org/?ref=containous.ghost.io&quot;&gt;&lt;strong&gt;&lt;u&gt;ingressnginxmigration.org&lt;/u&gt;&lt;/strong&gt;&lt;/a&gt; This website is your central resource. It breaks down the timeline, the risks, and provides a clear decision tree for your migration strategy.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;a href=&quot;https://ingressnginxmigration.org/?ref=containous.ghost.io&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/12/Screenshot-2025-12-08-at-4.28.25---PM.png&quot; class=&quot;kg-image&quot; alt=&quot;image of the migration guide&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1305&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/12/Screenshot-2025-12-08-at-4.28.25---PM.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/12/Screenshot-2025-12-08-at-4.28.25---PM.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/12/Screenshot-2025-12-08-at-4.28.25---PM.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2025/12/Screenshot-2025-12-08-at-4.28.25---PM.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Screenshot of ingressnginxmigration.org&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;👉 The Migration Tool:&lt;/strong&gt;&lt;a href=&quot;https://github.com/traefik/ingress-nginx-migration?ref=containous.ghost.io&quot;&gt;&lt;strong&gt; &lt;u&gt;traefik/ingress-nginx-migration&lt;/u&gt;&lt;/strong&gt;&lt;/a&gt; We didn&apos;t just write a guide; we built a powerful CLI tool to automate the pain away.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;a href=&quot;https://github.com/traefik/ingress-nginx-migration?ref=containous.ghost.io&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/12/ingress-nginx-migration-tool.png&quot; class=&quot;kg-image&quot; alt=&quot;image of the migration tool&quot; loading=&quot;lazy&quot; width=&quot;1600&quot; height=&quot;1370&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/12/ingress-nginx-migration-tool.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/12/ingress-nginx-migration-tool.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/12/ingress-nginx-migration-tool.png 1600w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Screenshot of Migration Tool&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;Right now, the tool connects to your cluster, analyzes all your existing Ingress resources, and &lt;strong&gt;generates a comprehensive&lt;/strong&gt; &lt;strong&gt;migration report&lt;/strong&gt;. It identifies exactly which annotations you are using and maps out your path to Traefik’s NGINX-compatible provider.&lt;/p&gt;&lt;p&gt;We are actively developing this tool, with upcoming updates focused on Gateway API. Soon, it will not only help you migrate to a secure Ingress controller but also assist in migrating to the new Gateway API standard.&lt;/p&gt;&lt;h2 id=&quot;making-migration-a-non-event&quot;&gt;Making Migration a Non-Event&lt;/h2&gt;&lt;p&gt;At Traefik Labs, we are dedicated to helping the community navigate this shift smoothly. Our goal is to turn this deprecation into a non-event for your infrastructure.&lt;/p&gt;&lt;p&gt;If you want to dive deeper into the migration process, join us at the webinar &lt;a href=&quot;https://info.traefik.io/replace-ingress-nginx?ref=containous.ghost.io&quot;&gt;&lt;strong&gt;&lt;u&gt;100 Days to Migrate: Why Traefik is the Only Drop-in Replacement for Ingress NGINX&lt;/u&gt;&lt;/strong&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Both the migration tool and the Traefik NGINX provider are fully Open Source. We built them for the community, and we believe in the power of collaboration. We invite you to try them, examine the code, and contribute. Whether it’s adding support for a specific annotation or improving the analysis logic, your contributions help make the path easier for everyone.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Don&apos;t wait for the deadline.&lt;/strong&gt; Start planning your migration today.&lt;/p&gt;&lt;h2 id=&quot;essential-resources&quot;&gt;Essential Resources&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;http://ingressnginxmigration.org/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Check out the Guide&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/traefik/ingress-nginx-migration?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Ingress NGINX Migration Tool&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik/reference/install-configuration/providers/kubernetes/kubernetes-ingress-nginx/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik NGINX Provider Documentation&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Community&lt;/strong&gt;:&lt;a href=&quot;https://github.com/traefik/traefik?ref=containous.ghost.io&quot;&gt; &lt;u&gt;GitHub Repository&lt;/u&gt;&lt;/a&gt; |&lt;a href=&quot;https://community.traefik.io/?ref=containous.ghost.io&quot;&gt; &lt;u&gt;Community Forum&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Learn More&lt;/strong&gt;:&lt;a href=&quot;https://traefik.io/traefik/?ref=containous.ghost.io&quot;&gt; &lt;u&gt;Official Website&lt;/u&gt;&lt;/a&gt; |&lt;a href=&quot;https://traefik.io/blog/?ref=containous.ghost.io&quot;&gt; &lt;u&gt;Blog&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-202811305109&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:256.4375px; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;202811305109&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLp%2B0Ykunrgdd3snjkzuBiwwCVa6%2FRh8mJfmLPytySfaRf8JfTfuuXPg3aED1yqYQ5KZbOTQxu5yJwuX%2BW1uh0rcnbXZ9mZI1XyfVfPK05DNN4%3D&amp;webInteractiveContentId=202811305109&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;nginx-fade-v2&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-202811305109.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[The Traefik Labs Manifesto: The Case for a Unified Runtime Layer]]></title>
            <description><![CDATA[Enterprises need a unified runtime layer. Learn why this is an critical issue, how Traefik Labs approaches it, & what platform brings it all together.]]></description>
            <link>https://traefik.io/why-choose-traefik</link>
            <guid isPermaLink="true">https://traefik.io/why-choose-traefik</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Strategy]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <category><![CDATA[MCP Gateway]]></category>
            <category><![CDATA[API Management]]></category>
            <dc:creator><![CDATA[Sudeep Goswami]]></dc:creator>
            <pubDate>Thu, 04 Dec 2025 22:47:19 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/12/manifesto-blog-image_no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/12/manifesto-blog-image_no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/12/manifesto-blog-image_no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/12/manifesto-blog-image_no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/12/manifesto-blog-image_no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Modern infrastructure has built itself into a corner.&lt;/p&gt;&lt;p&gt;Over two decades of rational technology choices have produced an irrational result: a fractured architecture that slows development, complicates security, and prevents organizations from operating at the speed their business demands. This is not a problem we can optimize our way out of. It requires a fundamental shift in how we think about application infrastructure.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;We believe the enterprise needs a unified runtime layer, not as a future luxury, but as an immediate necessity.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;This is Traefik Labs&apos; position. We have built our entire platform around this belief, and the industry is starting to recognize why it matters.&lt;/p&gt;&lt;h2 id=&quot;the-problem-fragmentation-has-become-the-default&quot;&gt;The Problem: Fragmentation Has Become the Default&lt;/h2&gt;&lt;p&gt;Modern organizations run on a mosaic of execution environments: virtual machines, Kubernetes clusters, serverless platforms, public clouds, private clouds, sovereign regions, and edge locations. Each environment comes with its own governance model, networking assumptions, security policies, and operational culture. Each choice made sense in isolation. Collectively, they created chaos.&lt;/p&gt;&lt;p&gt;Every environment has its own ingress pattern, every system its own access rules, every team its own API conventions. Every workflow must navigate inconsistent connectivity, and every security model must be re-implemented. We have normalized dysfunction.&lt;/p&gt;&lt;p&gt;Developers spend more time wiring systems together than building features. Security teams struggle to enforce policies across incompatible platforms, while operations teams manage overlapping tools that don&apos;t talk to each other. We tell ourselves this is the cost of innovation, but in reality, it is the cost of fragmentation. It is holding the enterprise back.&lt;/p&gt;&lt;h2 id=&quot;the-tipping-point-ai-cannot-tolerate-what-humans-have-learned-to-ignore&quot;&gt;The Tipping Point: AI Cannot Tolerate What Humans Have Learned to Ignore&lt;/h2&gt;&lt;p&gt;Humans have learned to socially engineer solutions to these roadblocks; we open tickets, manually bridge gaps, and route around broken systems. AI cannot do this.&lt;/p&gt;&lt;p&gt;While an LLM can instantly adapt to a changing API schema or logic flow, it cannot bypass the hard physics of the network. When an AI agent hits a firewall, a missing route, or an ambiguous identity policy, it cannot &quot;negotiate&quot; access. It simply fails.&lt;/p&gt;&lt;p&gt;Agentic systems require stable APIs, trustworthy identity, predictable governance, end-to-end visibility, context-aware access, and consistency across environments. They need what the enterprise has historically struggled to provide: a coherent runtime.&lt;/p&gt;&lt;p&gt;AI is no longer confined to specialized projects; inference is becoming ubiquitous. Every application will soon make calls to language models, vision models, embedding models, and specialized AI services. These inference workloads will sit alongside traditional API traffic, demanding the same reliability, security, and observability as mission-critical services require today.&lt;/p&gt;&lt;p&gt;Agentic infrastructure is not creating a new problem. It is exposing the problem we have been tolerating for years, serving as the stress test that proves the current model is broken and forcing the conversation we should have had long ago.&lt;/p&gt;&lt;p&gt;The infrastructure that served the last era cannot serve the next one.&lt;/p&gt;&lt;h2 id=&quot;the-solution-a-unified-runtime-layer-for-all-workloads&quot;&gt;The Solution: A Unified Runtime Layer for All Workloads&lt;/h2&gt;&lt;p&gt;A unified runtime layer sits above the execution environments but below the application logic. It standardizes how traffic flows, how identity is enforced, how APIs are exposed, how workloads are protected, and how intelligence is applied. Rather than replacing infrastructure, this approach brings coherence to it.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/12/manifesto-blog-diagram-v2.png&quot; class=&quot;kg-image&quot; alt=&quot;Unified Ingress Diagram&quot; loading=&quot;lazy&quot; width=&quot;1195&quot; height=&quot;847&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/12/manifesto-blog-diagram-v2.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/12/manifesto-blog-diagram-v2.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/12/manifesto-blog-diagram-v2.png 1195w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Unified Ingress Diagram&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;h3 id=&quot;our-principles&quot;&gt;&lt;strong&gt;Our Principles&lt;/strong&gt;&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Consistent governance everywhere.&lt;/strong&gt; Policies must be defined once and applied universally across Kubernetes, VMs, and edge nodes. By enforcing standards like OAS (OpenAPI Specification) at the definition level, we transform loose integrations into strict, governable contracts.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Universal connectivity.&lt;/strong&gt; VMs, containers, functions, and legacy systems must behave like a single addressable estate. Connectivity is not negotiable. It is the baseline requirement for everything that follows.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Intelligent routing by default.&lt;/strong&gt; Modern workloads need more than Layer 7 routing. They need context-aware decisions, semantic caching, and policy enforcement that understands intent rather than just packets.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Security as a standard, not an add-on.&lt;/strong&gt; Security policies are agnostic to the underlying infrastructure. No exceptions, no workarounds, no environment-specific compromises.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Complete observability across all traffic.&lt;/strong&gt; Every request, response, and failure must be traceable. Without observability, there is no understanding. And without understanding, there is no control.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Sovereignty and edge readiness.&lt;/strong&gt; The runtime must function wherever the enterprise operates: global cloud regions, regulated environments, private clusters, and air-gapped infrastructures. Geography cannot break the model.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Developer experience is not cosmetic.&lt;/strong&gt; If it is hard to use, it will not be used. Simplicity is a requirement for adoption, never a compromise on capability.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;These principles define the application fabric enterprises need. They make applications more reliable, security more robust, and create the foundation AI requires to function.&lt;/p&gt;&lt;h2 id=&quot;the-traefik-vision-application-intelligence-as-the-connective-layer&quot;&gt;The Traefik Vision: Application Intelligence as the Connective Layer&lt;/h2&gt;&lt;p&gt;At Traefik Labs, we’ve spent years building the Application Intelligence Platform: a unified runtime solution that acts as the connective, governed, and intelligent layer for all application and AI traffic across an enterprise.&lt;/p&gt;&lt;p&gt;Our product suite embodies this vision:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Traefik Proxy&lt;/strong&gt; unifies ingress, routing, and traffic management across containers (Kubernetes, ECS, Swarm, Nomad, etc.), VMs, and hybrid architectures.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Traefik API Gateway&lt;/strong&gt; brings consistent identity, policy enforcement, and visibility to every environment.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Traefik AI Gateway&lt;/strong&gt; manages AI inference traffic as a first-class workload, handling guardrails, cost controls, and semantic caching.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Traefik MCP Gateway&lt;/strong&gt; ensures agentic AI systems interact with enterprise infrastructure safely and predictably.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Traefik API Management&lt;/strong&gt; provides comprehensive governance, from developer portals to GitOps-driven operations at scale.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Together, they form a coherent architecture. Organizations can start with any Traefik Labs product and add capabilities seamlessly, in seconds, as requirements change. This makes our entire suite less a collection of tools and more a platform with a clear point of view.&lt;/p&gt;&lt;h2 id=&quot;why-this-matters&quot;&gt;Why This Matters&lt;/h2&gt;&lt;p&gt;The organization that unifies its runtime layer will move faster, operate more securely, and adopt AI more confidently than those still managing fragmented infrastructure. This is a present requirement, not a distant future state.&lt;/p&gt;&lt;p&gt;Organizations are realizing that the runtime is the control plane for modern applications. Governance is the foundation, not a feature. Connectivity must be consistent everywhere, and APIs have become the enterprise&apos;s most critical interface. AI inference workloads will flow through the same infrastructure as every other service, requiring unified observability.&lt;/p&gt;&lt;p&gt;The question is no longer &lt;em&gt;whether&lt;/em&gt; to unify, but &lt;em&gt;when&lt;/em&gt;.&lt;/p&gt;&lt;h2 id=&quot;our-commitment&quot;&gt;Our Commitment&lt;/h2&gt;&lt;p&gt;Traefik Labs has always believed that connectivity should never be the limiting factor for innovation. As the enterprise enters the age of AI, this belief matters more than ever.&lt;/p&gt;&lt;p&gt;We have built the unified runtime layer that addresses the fragmentation enterprises face today while enabling the intelligent workloads they are deploying now. This architecture spans clouds, data centers, VMs, and edge, with a foundation in open standards and enterprise-grade reliability.&lt;/p&gt;&lt;p&gt;This is the foundation the industry needs. This is the architecture we have built. This is the future we are committed to advancing.&lt;/p&gt;&lt;p&gt;The unified runtime layer is no longer optional; it is the foundation that makes everything else possible.&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[AI Sovereignty: Why Control Is Your Ultimate Operating Leverage]]></title>
            <description><![CDATA[Learn how enterprises are navigating the shift from AI adoption to AI control and what true infrastructure sovereignty actually means.]]></description>
            <link>https://traefik.io/ai-sovereignty</link>
            <guid isPermaLink="true">https://traefik.io/ai-sovereignty</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Strategy]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <category><![CDATA[MCP Gateway]]></category>
            <category><![CDATA[API Gateway]]></category>
            <dc:creator><![CDATA[Sudeep Goswami]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 23:43:28 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/12/sovereign-ai-blog-image---no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;sovereign AI graphic&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/12/sovereign-ai-blog-image---no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/12/sovereign-ai-blog-image---no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/12/sovereign-ai-blog-image---no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/12/sovereign-ai-blog-image---no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Six months ago, the conversations happening in boardrooms across regulated industries were remarkably consistent. CIOs and CTOs were all fielding the same urgent question: &quot;How do we adopt AI?&quot;&lt;/p&gt;&lt;p&gt;Today, the conversation has flipped. The pressure to adopt hasn&apos;t gone away, but a new, more critical question has taken over: &quot;How do we &lt;em&gt;control&lt;/em&gt; AI?&quot;.&lt;/p&gt;&lt;p&gt;We are living through one of the most significant inflection points in enterprise technology. Artificial intelligence has moved from &quot;science project&quot; status to full-scale production at a rate faster than any technology in history. But this speed has come at a cost. It has created a crisis of &lt;strong&gt;AI Sprawl&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;Developers started with personal ChatGPT accounts, then moved to corporate accounts, and finally to embedded APIs. Now, API keys are scattered across repositories, &quot;shadow agents&quot; are running in production, and billing statements are arriving with numbers that no one can fully explain.&lt;/p&gt;&lt;p&gt;For most companies, this is a governance headache. For regulated industries—Defense, Healthcare, Financial Services, and the Public Sector—it is an existential risk. The answer to this crisis lies in a concept that is frequently discussed but rarely defined correctly: &lt;strong&gt;AI Sovereignty&lt;/strong&gt;.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-201464153180&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.546875px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;201464153180&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLIUg0TWcM%2FzQvN%2FBjzDpY%2FRAPbOkdfPU1Jj9NVadbofr6rUvwIRJ0DApQKobEW0sPYTWBmraXTYKCYlcyWOX6FA0I88qxls3mL3poUq%2FONNEUuP%2BEjG3%2F1RWZXHAa8v8E77d8yg1sj2lZK9JkFvQmg5qjCHM%2F8%2BYeXRaiU21rMKq5toT7%2BcJg%2F0Eb8yGMZ5xcPIrZD3sXp4a7dsuSOBf4Csf44%3D&amp;webInteractiveContentId=201464153180&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;ai sovereignty cta image - square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-201464153180.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;the-illusion-of-control-what-sovereignty-isnt&quot;&gt;The Illusion of Control: What Sovereignty Isn&apos;t&lt;/h2&gt;&lt;p&gt;The term &quot;sovereignty&quot; is often thrown around loosely in technology discussions. Before we can understand what it requires, we need to be precise about what it is not. There are three common myths that lull organizations into a false sense of security.&lt;/p&gt;&lt;h3 id=&quot;1-the-data-residency-myth&quot;&gt;1. The Data Residency Myth&lt;/h3&gt;&lt;p&gt;Many organizations believe that if they store their data in a specific geography—say, a data center in Frankfurt or a specific US region—they are sovereign. But data residency is not sovereignty. If your data sits in Germany but the control plane managing it lives in Virginia, or if the AI model processes that data via an API call to a US-based hyperscaler, you do not have control. If the &quot;brain&quot; of the operation is elsewhere, the &quot;body&quot; is not sovereign.&lt;/p&gt;&lt;h3 id=&quot;2-the-hybrid-cloud-trap&quot;&gt;2. The Hybrid Cloud Trap&lt;/h3&gt;&lt;p&gt;&quot;Hybrid cloud&quot; is often sold as the solution to sovereignty, but it frequently masks deep dependencies. If your on-premise AI workload relies on public cloud services for authentication, billing, or management, you have created a fragility point. If your internet connection goes down, or if the cloud provider suffers an outage, your &quot;sovereign&quot; AI stops working. That isn&apos;t sovereignty; it is dependency.&lt;/p&gt;&lt;h3 id=&quot;3-vendor-managed-sovereignty&quot;&gt;3. Vendor-Managed Sovereignty&lt;/h3&gt;&lt;p&gt;Perhaps the most dangerous myth is that you can buy sovereignty as a managed service. If you are operating on someone else’s infrastructure, under their terms, with their ability to change the rules, pricing, or availability at any moment, you are not in control. You are simply a tenant. True sovereignty means you are not operating on someone else&apos;s terms.&lt;/p&gt;&lt;h2 id=&quot;defining-true-sovereignty&quot;&gt;Defining True Sovereignty&lt;/h2&gt;&lt;p&gt;If those are the illusions, what is the reality? In our new eBook, &lt;a href=&quot;https://info.traefik.io/ai-infrastructure-sovereignty?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;em&gt;The Sovereign AI Infrastructure Imperative&lt;/em&gt;&lt;/a&gt;, we define true sovereignty through three non-negotiable capabilities.&lt;/p&gt;&lt;h3 id=&quot;first-you-need-architectural-control&quot;&gt;First, You Need Architectural Control.&lt;/h3&gt;&lt;p&gt;This means you can run your entire AI stack—gateway, models, safety systems, and governance—in your own environment. There are no required connections to external services. There is no &quot;phone home&quot; telemetry. If you pull the network cable, the system keeps working. For defense and intelligence sectors, this isn&apos;t a &quot;nice to have&quot;—it is an operational requirement.&lt;/p&gt;&lt;h3 id=&quot;second-you-need-portable-governance&quot;&gt;Second, You Need Portable Governance.&lt;/h3&gt;&lt;p&gt;Your policies, security controls, and audit trails must follow your workload. The same governance rules should apply whether you are running in the public cloud, on-premises, or in an air-gapped bunker. Your governance should be defined as code, not by clicking buttons in a proprietary cloud console that you can&apos;t export.&lt;/p&gt;&lt;h3 id=&quot;third-you-need-escape-velocity&quot;&gt;Third, You Need Escape Velocity.&lt;/h3&gt;&lt;p&gt;This is the litmus test for sovereignty: Can you leave? True sovereignty means you are not locked into proprietary APIs or opaque platforms. You own the architecture. If a vendor changes their terms or a geopolitical event makes your current setup risky, you can migrate your entire stack without rewriting it.&lt;/p&gt;&lt;p&gt;Simply put: &lt;strong&gt;You own it, you control it, and you can move it&lt;/strong&gt;.&lt;/p&gt;&lt;h2 id=&quot;the-new-threat-the-agent-governance-crisis&quot;&gt;The New Threat: The Agent Governance Crisis&lt;/h2&gt;&lt;p&gt;Why is this definition becoming so critical right now? Because the nature of AI is changing. We are moving from &quot;Chat&quot; to &quot;Action.&quot;&lt;/p&gt;&lt;p&gt;Six months ago, the risk was mostly about a user pasting sensitive data into a chatbot. Today, we are seeing the rise of &lt;strong&gt;Agentic AI&lt;/strong&gt;—systems that use tools like the Model Context Protocol (MCP) to take actions. These agents read databases, call internal APIs, modify records, send emails, and execute code.&lt;/p&gt;&lt;p&gt;This breaks the traditional security model. In the past, you gave a human employee, let&apos;s call her Sarah, access to the database. If Sarah did something wrong, she was accountable. But agents are different. You cannot simply &quot;authenticate once and trust forever.&quot; An agent might be doing exactly what it was prompted to do, but that prompt might be adversarial. Or the agent might be hallucinating. Or it might be exploring a solution path you didn&apos;t anticipate.&lt;/p&gt;&lt;p&gt;If you rely on a cloud provider for your governance, you are asking an external entity to police your internal agents. That introduces latency, metadata leakage, and security risks that regulated industries cannot accept. You need a security model that assumes agents are unprivileged actors requiring continuous authorization—and that authorization must happen on your infrastructure.&lt;/p&gt;&lt;h2 id=&quot;the-architecture-of-control&quot;&gt;The Architecture of Control&lt;/h2&gt;&lt;p&gt;To solve this, organizations need to move beyond simple &quot;perimeter security.&quot; You cannot just put a firewall around your AI and hope for the best. You need defense in depth.&lt;/p&gt;&lt;p&gt;We have previously detailed the technical implementation of this approach, which we call the &lt;strong&gt;Triple Gate Pattern&lt;/strong&gt;. It involves three distinct layers of defense:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;The AI Gateway&lt;/strong&gt; to secure the conversation (handling topic control and jailbreak detection).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;The MCP Gateway&lt;/strong&gt; to govern the tools (controlling what agents can actually &lt;em&gt;do&lt;/em&gt;).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;The API Gateway&lt;/strong&gt; to protect the backend systems.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;em&gt;For a technical deep dive on how to implement these defensive layers, read our post:&lt;/em&gt;&lt;a href=&quot;https://traefik.io/blog/the-triple-ai-security-gap?ref=containous.ghost.io&quot;&gt;&lt;em&gt; &lt;u&gt;The Triple AI Security Gap&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;The connection to sovereignty here is vital: &lt;strong&gt;You cannot effectively implement the Triple Gate Pattern if you are dependent on the cloud.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Traditional AI safety architectures rely on calling an external API to check if a prompt is safe. This creates three problems. First, Network Dependency: if you are in a defense installation without internet, you can&apos;t make that call. Second, Fragility: if the safety API goes down, your operations halt. Third, Metadata Leakage: even if you aren&apos;t sending the full data, you are revealing operational patterns to a third party.&lt;/p&gt;&lt;p&gt;True sovereignty requires that these safety checks—the NVIDIA NIMs, the policy enforcement, the agent governance—run locally on your hardware. The architecture must be offline-capable by default.&lt;/p&gt;&lt;h2 id=&quot;sovereignty-as-operating-leverage&quot;&gt;Sovereignty as Operating Leverage&lt;/h2&gt;&lt;p&gt;We often hear sovereignty described as an insurance policy—something you buy to avoid fines from the EU AI Act or to comply with HIPAA. While that is true, it misses the bigger picture.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;True sovereignty is offensive operating leverage.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;When you build on truly portable, self-hosted infrastructure from day one, you gain strategic advantages that cloud-dependent competitors lack.&lt;/p&gt;&lt;h3 id=&quot;1-negotiating-power&quot;&gt;1. Negotiating Power&lt;/h3&gt;&lt;p&gt;When you have &quot;escape velocity&quot;—the proven ability to move your stack without rewriting it—your relationship with vendors changes. You are no longer a captive customer who has to accept every price hike or term change. You are a partner with options. That optionality has real monetary value.&lt;/p&gt;&lt;h3 id=&quot;2-deployment-agility&quot;&gt;2. Deployment Agility&lt;/h3&gt;&lt;p&gt;This is particularly valuable for Financial Services. These organizations often want to develop in the cloud to move fast but must deploy on-premises for compliance. If your governance is tied to a specific cloud, you have to rewrite everything when you move to production. With sovereign infrastructure, you develop once and deploy anywhere. Your governance code looks the same in AWS as it does in your private data center.&lt;/p&gt;&lt;h3 id=&quot;3-uncompromised-trust&quot;&gt;3. Uncompromised Trust&lt;/h3&gt;&lt;p&gt;In industries like healthcare and defense, trust is the product. Patients and citizens are asking, &quot;Where does the AI run? Who can see my data?&quot; If your answer is, &quot;It&apos;s in the cloud and we trust the vendor,&quot; that is no longer acceptable. Being able to prove—architecturally—that no telemetry leaves your environment is a massive competitive differentiator.&lt;/p&gt;&lt;h2 id=&quot;the-strategic-choice&quot;&gt;The Strategic Choice&lt;/h2&gt;&lt;p&gt;We are early in this market. Most enterprises are still in the &quot;Cloud-First&quot; mindset, prioritizing convenience over control. But the organizations that are thinking ahead are asking a different question: &lt;strong&gt;&quot;Are we building on infrastructure that gives us options, or are we making decisions now that eliminate sovereignty as a possibility later?&quot;&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;The narrative has long been that you have to choose. You can have cutting-edge AI in the cloud, or you can have control on-premises. That is a false choice. With the right infrastructure—portable, declarative, and self-hosted—you can have both.&lt;/p&gt;&lt;p&gt;You can innovate fast &lt;em&gt;and&lt;/em&gt; maintain control. But you have to architect for it now.&lt;/p&gt;&lt;h3 id=&quot;go-deeper&quot;&gt;Go Deeper&lt;/h3&gt;&lt;p&gt;How do you build an AI stack that creates this kind of leverage? We explore the architectural principles, the agent governance crisis, and the future of regulated AI in our latest guide.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-201464153180&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:235.546875px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;201464153180&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLIUg0TWcM%2FzQvN%2FBjzDpY%2FRAPbOkdfPU1Jj9NVadbofr6rUvwIRJ0DApQKobEW0sPYTWBmraXTYKCYlcyWOX6FA0I88qxls3mL3poUq%2FONNEUuP%2BEjG3%2F1RWZXHAa8v8E77d8yg1sj2lZK9JkFvQmg5qjCHM%2F8%2BYeXRaiU21rMKq5toT7%2BcJg%2F0Eb8yGMZ5xcPIrZD3sXp4a7dsuSOBf4Csf44%3D&amp;webInteractiveContentId=201464153180&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;ai sovereignty cta image - square&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-201464153180.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Cilium + Traefik: The Superhighway and Traffic Cop Pattern for Multi-Cloud Networking]]></title>
            <description><![CDATA[Learn how Cilium & Traefik together can solve multi-cloud networking challenges—e.g., cloud-specific debugging, configuration drift, & inconsistent performance.]]></description>
            <link>https://traefik.io/cilium-and-traefik-together</link>
            <guid isPermaLink="true">https://traefik.io/cilium-and-traefik-together</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <dc:creator><![CDATA[Immánuel Fodor]]></dc:creator>
            <pubDate>Tue, 02 Dec 2025 22:57:48 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/12/cilium-and-traefik-blog---no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Cilium and Traefik Work Together&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/12/cilium-and-traefik-blog---no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/12/cilium-and-traefik-blog---no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/12/cilium-and-traefik-blog---no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/12/cilium-and-traefik-blog---no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;It&apos;s 3 AM. You&apos;re the on-call engineer, and your globally distributed payment API is timing out on AWS, but running fine on Azure. The API is spread across multiple clouds for high availability and low latency. You pull up three different dashboards—AWS CloudWatch, Azure Monitor, and your homegrown Grafana—trying to correlate logs across environments.&lt;/p&gt;&lt;p&gt;After an hour of intense archaeology, bug hunting, documentation review, and support forum reading, you discover the culprit: AWS ALB&apos;s default timeout of 60 seconds versus Azure App Gateway&apos;s 90-second default is causing long-running transactions to time out. It&apos;s the same application code, different cloud plumbing, and production is still down.&lt;/p&gt;&lt;p&gt;Different provider settings are the hidden tax of multi-cloud architecture.&lt;/p&gt;&lt;p&gt;We tell ourselves, &quot;Kubernetes abstracts the infrastructure.&quot; That&apos;s true for compute. But for networking? Kubernetes gives you portability at Layer 7 while leaving you stranded in the quicksand of Layers 3 and 4. The networking rules in EKS differ from those in AKS. Load balancers speak different dialects. At scale, your networking configuration compounds with every new service until troubleshooting feels like defusing a bomb in the dark.&lt;/p&gt;&lt;p&gt;It&apos;s like driving across Europe in the 1970s. Every border crossing means new road signs, new traffic laws, and a new currency to fumble with.&lt;/p&gt;&lt;p&gt;But there&apos;s a better way. A new architectural pattern is emerging that actually delivers on Kubernetes&apos; portability promise. It combines the kernel-level performance of &lt;strong&gt;Cilium (the Superhighway)&lt;/strong&gt; with the application-layer intelligence of &lt;strong&gt;Traefik&lt;/strong&gt; &lt;strong&gt;(the Traffic Cop)&lt;/strong&gt;.&amp;nbsp;&lt;/p&gt;&lt;p&gt;For platform engineers tired of maintaining three different networking stacks, here&apos;s why this combo is becoming the new standard.&lt;/p&gt;&lt;h2 id=&quot;the-legacy-bottleneck-when-every-packet-hits-a-red-light&quot;&gt;The Legacy Bottleneck: When Every Packet Hits a Red Light&lt;/h2&gt;&lt;p&gt;Let&apos;s be honest about what we&apos;re replacing.&lt;/p&gt;&lt;p&gt;Traditional Kubernetes networking routes traffic through Linux firewall tools like &lt;code&gt;iptables&lt;/code&gt;. This technology, designed in the 1990s, was built for firewalls, not for orchestrating thousands of microservices. Every packet that enters a node triggers a linear scan through potentially thousands of rules. The more services and rules you add, the slower every packet gets processed, and the more difficult it becomes to debug.&lt;/p&gt;
&lt;p&gt;Picture a city where every intersection has a stop sign and a traffic cop manually checking every car&apos;s paperwork. That&apos;s &lt;code&gt;iptables&lt;/code&gt;. It works fine for 10 cars (services). It becomes complex at 100 rules, and a maintenance headache at 1,000+.&lt;/p&gt;
&lt;p&gt;The symptoms are familiar:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;CPU spikes during deployment rollouts as firewall chains rebuild due to the rapid creation and destruction of containers.&lt;/li&gt;&lt;li&gt;Unpredictable latency as rule chains grow longer.&lt;/li&gt;&lt;li&gt;Debugging that requires deep Linux kernel knowledge.&lt;/li&gt;&lt;li&gt;Connection tracking tables that overflow under load.&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;the-superhighway-how-cilium-rewrites-the-rules&quot;&gt;The Superhighway: How Cilium Rewrites the Rules&lt;/h2&gt;&lt;p&gt;The breakthrough came from eBPF (Extended Berkeley Packet Filter). &lt;a href=&quot;https://cilium.io/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Cilium&lt;/a&gt; is its best implementation for Kubernetes networking.&lt;/p&gt;&lt;p&gt;Instead of sequential rule checking, Cilium uses hash maps for instant lookups. Crucially, instead of context-switching between user space and kernel space, eBPF programs run directly in the kernel. It&apos;s the difference between stopping at every intersection versus taking a grade-separated freeway at constant speed.&lt;/p&gt;&lt;h3 id=&quot;the-real-shift-cloud-providers-are-standardizing-on-cilium&quot;&gt;The Real Shift: Cloud Providers Are Standardizing on Cilium&lt;/h3&gt;&lt;p&gt;This is what changes the game for multi-cloud architecture: for the first time, the networking data plane is becoming identical across clouds.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Azure&lt;/strong&gt;: &quot;Azure CNI Powered by Cilium&quot; is now the recommended option for AKS&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Google Cloud&lt;/strong&gt;: &quot;GKE Dataplane V2&quot; is Cilium under the hood&lt;/li&gt;&lt;li&gt;&lt;strong&gt;AWS&lt;/strong&gt;: Cilium is the&lt;em&gt; de facto&lt;/em&gt; choice for performance-conscious EKS deployments&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The road surface is the same whether you&apos;re running in Virginia, Dublin, or Singapore. This means:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Predictable latency&lt;/strong&gt;: Sub-millisecond service mesh overhead regardless of cloud&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Consistent observability&lt;/strong&gt;: Hubble flow logs look the same everywhere&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Portable NetworkPolicies&lt;/strong&gt;: Your security rules work identically across environments&lt;/li&gt;&lt;li&gt;&lt;strong&gt;No more cloud-specific tuning&lt;/strong&gt;: The kernel-level plumbing just works&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;the-traffic-cop-why-speed-alone-isnt-enough&quot;&gt;The Traffic Cop: Why Speed Alone Isn&apos;t Enough&lt;/h2&gt;&lt;p&gt;A frictionless highway is powerful, but speed without direction is just a fast way to crash. You need intelligent control at the application layer. You need someone at the exit ramp deciding which requests go where, enforcing speed limits, and blocking bad actors.&lt;/p&gt;&lt;p&gt;You need &lt;a href=&quot;https://traefik.io/traefik?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Traefik&lt;/a&gt;.&lt;/p&gt;&lt;h3 id=&quot;the-multi-cloud-load-balancer-problem&quot;&gt;The Multi-Cloud Load Balancer Problem&lt;/h3&gt;&lt;p&gt;Most teams hit multi-cloud and immediately face this choice:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Use each cloud&apos;s native load balancer (AWS ALB, Azure App Gateway, GCP Load Balancer, etc.)&lt;/li&gt;&lt;li&gt;Deploy and maintain your own Ingress Controller&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Option 1 seems easier until you realize you&apos;re hiring a different traffic cop for every city ... and they don&apos;t speak the same language or follow the same rules:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;AWS ALB&lt;/strong&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;annotations:
  alb.ingress.kubernetes.io/scheme: internet-facing
  alb.ingress.kubernetes.io/target-type: ip
  alb.ingress.kubernetes.io/healthcheck-path: /health&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Azure App Gateway&lt;/strong&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;annotations:
  appgw.ingress.kubernetes.io/health-probe-path: /health
  appgw.ingress.kubernetes.io/request-timeout: &quot;90&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;GCP Load Balancer&lt;/strong&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;annotations:
  cloud.google.com/neg: &apos;{&quot;ingress&quot;: true}&apos;
  cloud.google.com/backend-config: &apos;{&quot;default&quot;: &quot;backend-config&quot;}&apos;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Same intention. Three different languages. Three different configuration systems. Three different failure modes to debug at 3 AM.&lt;/p&gt;&lt;h3 id=&quot;traefik-bring-your-own-traffic-cop&quot;&gt;Traefik: Bring Your Own Traffic Cop&lt;/h3&gt;&lt;p&gt;When you deploy Traefik as your Ingress Controller across all clouds, you establish universal laws:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;One Configuration Language&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: payment-api
spec:
  routes:
  - match: Host(`api.example.com`) &amp;amp;&amp;amp; PathPrefix(`/payments`)
    kind: Rule
    services:
    - name: payment-svc
      port: 8080
    middlewares:
    - name: rate-limit
    - name: auth-oidc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This YAML works identically on AWS, Azure, and GCP. Change it once, deploy everywhere.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Portable Intelligence&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Rate-limiting rules that follow your app across clouds&lt;/li&gt;&lt;li&gt;OIDC/OAuth flows that don&apos;t require cloud-specific IAM translation when using a central Identity Provider (IdP)&lt;/li&gt;&lt;li&gt;Circuit breakers that understand your application&apos;s failure modes&lt;/li&gt;&lt;li&gt;A/B testing and canary deployments with consistent behavior&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Developer Velocity&lt;/strong&gt;&lt;br&gt;Your developers define routing via standard Kubernetes resources. They don&apos;t need to know whether they&apos;re deploying to EKS or AKS. The platform team maintains a single Traefik configuration, rather than three cloud-specific load balancer setups.&lt;/p&gt;&lt;h3 id=&quot;why-not-cilium-ingress&quot;&gt;Why Not Cilium Ingress?&lt;/h3&gt;&lt;p&gt;Cilium does offer a basic Ingress controller built on the eBPF data plane. However, ingress is not its primary focus, and it typically offers the bare minimum necessary for Layer 7 entry. &lt;/p&gt;&lt;p&gt;For complex, multi-cloud environments, Traefik is better suited as the Traffic Cop because it provides an application-centric control plane. Traefik delivers advanced Layer 7 features—like portable middleware, integrated OIDC/OAuth, A/B testing, and comprehensive circuit breakers—that are central to managing a complex application portfolio at scale.&lt;/p&gt;&lt;h2 id=&quot;the-better-together-synergy&quot;&gt;The &quot;Better Together&quot; Synergy&lt;/h2&gt;&lt;p&gt;The architecture gets elegant when you look at how these two layers interact.&lt;/p&gt;&lt;p&gt;Traefik operates at Layer 7 (HTTP/gRPC), making intelligent routing decisions based on headers, paths, and application-level logic. Cilium operates at Layer 3 and 4, handling the actual packet forwarding with kernel-level efficiency.&lt;/p&gt;&lt;p&gt;The handoff is seamless:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;External request hits your LoadBalancer Service (backed by a simple cloud LB)&lt;/li&gt;
&lt;li&gt;Traefik receives the request, processes middleware, terminates TLS, and selects a backend&lt;/li&gt;
&lt;li&gt;Traefik hands off to a Kubernetes Service (just an IP:port)&lt;/li&gt;
&lt;li&gt;Cilium bypasses &lt;code&gt;iptables&lt;/code&gt; entirely, using eBPF to route directly to the pod&lt;/li&gt;
&lt;li&gt;Response follows the same optimized path back&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The result: You get Layer 7 intelligence without Layer 3/4 bottlenecks. No tradeoffs.&lt;/p&gt;&lt;h3 id=&quot;full-stack-observability-the-x-ray-effect&quot;&gt;Full-Stack Observability: The &quot;X-Ray&quot; Effect&lt;/h3&gt;&lt;p&gt;This multi-layer observability is the key to platform team sanity.&lt;/p&gt;&lt;p&gt;If you&apos;ve ever debugged a 502 Bad Gateway error, you know the frustration:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Traefik logs: &quot;Request sent to backend, connection refused&quot;.&lt;/li&gt;&lt;li&gt;Application logs: &quot;I never received a request&quot;.&lt;/li&gt;&lt;li&gt;Network monitoring: &quot;I see packets moving, but no idea what they contain&quot;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Three different monitoring systems, three different stories, zero root cause. This is the observability air gap that kills productivity.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The breakthrough: Distributed tracing stitched across network layers.&lt;/strong&gt; Traefik and Cilium solve multi-layer observability together through a deceptively simple mechanism:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;Traefik mints (or reuses) the trace ID: When a request hits your edge, Traefik generates a unique &lt;code&gt;TraceParent&lt;/code&gt; header (OpenTelemetry W3C standard), or reuses one if it already exists. Think of this as stamping a license plate on the car before it enters the highway.&lt;/li&gt;
&lt;li&gt;Cilium carries the context: As the request flows through the network, Cilium&apos;s Hubble observability engine reads HTTP headers at the kernel level, without slowing the packet down. It sees the same trace ID and logs the network path, latency, and any TCP-level failures.&lt;/li&gt;
&lt;li&gt;One timeline, complete picture: In your observability backend (Grafana Tempo, Jaeger, Datadog), you search for that trace ID and get:&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;&lt;ul&gt;&lt;li&gt;Edge ingress at Traefik (Layer 7)&lt;/li&gt;&lt;li&gt;Network path through Cilium with exact latency and packet drops (Layer 3/4)&lt;/li&gt;&lt;li&gt;Application processing time (Layer 7)&lt;/li&gt;&lt;/ul&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Real-World Example&lt;/strong&gt;&lt;br&gt;A developer reports &quot;users in Tokyo are seeing 2-second response times&quot;. You pull up the trace ID:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Traefik reports: Request took 2100ms total, 2000ms waiting for backend.&lt;/li&gt;&lt;li&gt;Hubble reports: TCP connection from Tokyo pod exists to both Tokyo database AND us-east database.&lt;/li&gt;&lt;li&gt;Application reports: Query took 50ms locally, 1950ms on cross-region query.&lt;/li&gt;&lt;li&gt;Root cause: Misconfigured service selector routing 10% of Tokyo traffic across continents.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Same debugging workflow whether you&apos;re troubleshooting EKS, AKS, or GKE.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The Technical Detail (Read This Before Deploying)&lt;/strong&gt;&lt;br&gt;By default, Cilium prioritizes maximum speed, so it acts like a courier who reads the address on the box (IP/Port) without opening it. This makes it incredibly fast, but it means it can&apos;t see the specific &quot;Trace ID&quot; stamped inside the package headers.&lt;/p&gt;&lt;p&gt;To connect the dots between Traefik and the network, you must explicitly enable &quot;Deep Packet Inspection&quot; for your specific services. This is done using a &lt;code&gt;CiliumNetworkPolicy&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Think of this as flipping a switch that says, &quot;For &lt;em&gt;this&lt;/em&gt; specific application, it&apos;s okay to peek inside the envelope to read the tracking number.&quot; It is a simple, one-time configuration per namespace, but without it, your observability layers won&apos;t communicate.&lt;/p&gt;&lt;h2 id=&quot;the-honest-complexity-tradeoff&quot;&gt;The Honest Complexity Tradeoff&lt;/h2&gt;&lt;p&gt;Let&apos;s be clear: This isn&apos;t the right stack for everyone.&lt;/p&gt;&lt;p&gt;You probably don&apos;t need this if:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;You&apos;re running on a single cloud with no plans to expand.&lt;/li&gt;&lt;li&gt;You have &lt;strong&gt;10 microservices&lt;/strong&gt; and 3 engineers.&lt;/li&gt;&lt;li&gt;Your cloud provider&apos;s defaults work fine for your scale.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This stack pays off when:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;You&apos;re running production workloads across 2+ clouds.&lt;/li&gt;&lt;li&gt;You&apos;re managing &lt;strong&gt;50+ microservices&lt;/strong&gt; with complex routing needs.&lt;/li&gt;&lt;li&gt;You need consistent security policies and observability across environments.&lt;/li&gt;&lt;li&gt;Your platform team is tired of maintaining cloud-specific configurations.&lt;/li&gt;&lt;li&gt;Developer velocity matters more than &quot;using cloud-native defaults&quot;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The upfront complexity is real. You&apos;re deploying and managing Cilium and Traefik instead of clicking &quot;enable&quot; in a cloud console. But the payoff is a platform that your team masters once and runs everywhere.&lt;/p&gt;&lt;h2 id=&quot;the-bottom-line-platform-team-sanity-as-a-service&quot;&gt;The Bottom Line: Platform Team Sanity as a Service&lt;/h2&gt;&lt;p&gt;Multi-cloud isn&apos;t going away. Whether you&apos;re pursuing vendor negotiation leverage, data sovereignty requirements, or genuinely distributed architecture, you need networking that works the same everywhere.&lt;/p&gt;&lt;p&gt;The old approach (maintaining separate networking configurations per cloud) doesn&apos;t scale. Your platform team becomes translators, converting concepts between AWS-speak, Azure-speak, and GCP-speak. Your developers slow down, waiting for platform teams to implement the same feature three different ways.&lt;/p&gt;&lt;p&gt;The Cilium + Traefik stack inverts this:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Cilium&lt;/strong&gt;: Universal, high-performance data plane (the cloud providers are standardizing on it anyway)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Traefik&lt;/strong&gt;: Portable, developer-friendly control plane (you own it, not the cloud vendor)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;You get predictable performance, consistent debugging, and configurations that travel with your applications. Your platform team maintains one networking stack, not three. Your developers deploy with confidence, knowing the rules are the same everywhere.&lt;/p&gt;&lt;p&gt;The roads are open. The traffic is moving. And for the first time, the highway and the traffic cop speak the same language. No matter which cloud you&apos;re driving through.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Ready to build a truly portable Kubernetes platform?&lt;/strong&gt; &lt;br&gt;Start with Cilium for your CNI and Traefik for your Ingress Controller. You&apos;ll thank yourself the next time production spikes.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-158028398339&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:232px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;158028398339&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJNo22n0%2BFow9NGhf7numyPvNm4qg8jZ5xBlq9Uo0o1nQ2NNXsrjXFxgrl9nO2LRkrZiGedtGO5lm%2F8FYoV%2Fkt5nPcXUQzBV%2FWkvOZkKIFt223oNDF2CZXHkeIADwwqm2YbfQk7dP7Snh2cSXhQ34oVtdz5cZDnuexa46%2BDe27wKUysjj3U2yYoUoi4JBKWfj4UKomMsiOLRa%2BIlsT6p9w%3D&amp;webInteractiveContentId=158028398339&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Proxy_Ad_02@2x&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-158028398339.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[The Hub-and-Spoke Ingress Pattern: Unifying EKS, ECS, and EC2 at Scale]]></title>
            <description><![CDATA[Use Traefik's AWS Elastic Provider to manage routing, auth, load balancing, & more for all your EKS, ECS, & EC2 environments from one centralized control hub.]]></description>
            <link>https://traefik.io/unifying-eks-ecs-and-ec2-at-scale</link>
            <guid isPermaLink="true">https://traefik.io/unifying-eks-ecs-and-ec2-at-scale</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Strategy]]></category>
            <category><![CDATA[News]]></category>
            <category><![CDATA[Ingress]]></category>
            <category><![CDATA[API Gateway]]></category>
            <dc:creator><![CDATA[Zaid Albirawi]]></dc:creator>
            <pubDate>Sun, 30 Nov 2025 18:27:52 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/11/unifying-ingress-blog-promo---no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Diagram of Traefik Hub unifying ingress operations across EC2, ECS, and EKS environments.&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/11/unifying-ingress-blog-promo---no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/11/unifying-ingress-blog-promo---no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/11/unifying-ingress-blog-promo---no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/11/unifying-ingress-blog-promo---no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Large-scale AWS architectures rarely maintain homogeneity over time. They evolve through eras.&lt;/p&gt;&lt;p&gt;A service might begin life on Amazon EC2 because the team needed full control over the OS kernel. Years later, a new initiative embraces Amazon EKS for microservices. Meanwhile, other teams deploy onto Amazon ECS or AWS Fargate because the bursty, event-driven nature of their workloads demands it.&lt;/p&gt;&lt;p&gt;Individually, these are sound technical decisions. EC2 offers stability; EKS offers orchestration; ECS offers simplicity. The problem does not lie with the platforms themselves, but with how they are exposed to the outside world.&lt;/p&gt;&lt;p&gt;As these compute &quot;islands&quot; grow, they create a fractured edge. EKS uses Ingress controllers; EC2 relies on ALBs/NLBs with custom proxy logic; ECS uses ALBs mapped 1-to-1 with services. The result is operational incoherence: inconsistent authentication, fragmented routing rules, and a nightmare for anyone trying to debug a request that spans multiple environments.&lt;/p&gt;&lt;p&gt;In our latest technical AWS builders-style ebook, &lt;a href=&quot;https://info.traefik.io/unified-ingress-across-aws-environments?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;em&gt;Unifying Ingress Across Distributed AWS Compute Environments&lt;/em&gt;&lt;/a&gt;, we detail an architectural pattern that solves this: the &lt;strong&gt;Hub-and-Spoke Ingress Model&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;Here is a deep dive into how it works and how to implement it using the &lt;strong&gt;Traefik AWS Elastic Provider&lt;/strong&gt;.&lt;/p&gt;&lt;h2 id=&quot;the-anatomy-of-fragmentation&quot;&gt;The Anatomy of Fragmentation&lt;/h2&gt;&lt;p&gt;Organizations do not set out to build fragmented systems; fragmentation is a side effect of growth.&lt;/p&gt;&lt;p&gt;When you view these platforms from the inside, they make sense. But from the &lt;em&gt;application edge&lt;/em&gt;—where users and clients interact with your system—the cracks begin to show.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Identity Fragmentation:&lt;/strong&gt; EKS might validate JWTs via middleware, while EC2 relies on a totally different auth proxy.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Routing Complexity:&lt;/strong&gt; Migrating a service from EC2 to ECS often requires DNS cutovers because there is no single routing plane that spans both.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Security Risk:&lt;/strong&gt; To let a central ingress talk to backend services across VPCs, teams often widen Security Group rules or create permissive IAM roles, expanding the blast radius.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;To solve this, we need an architecture that can see the entire system from the outside while interacting with each environment from the inside—without breaking isolation boundaries.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-201286297502&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.546875px; margin-top:60px; margin-bottom:60px;&quot; data-hubspot-wrapper-cta-id=&quot;201286297502&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLLe3KhQWiHbhz5d%2BmAc9HCR6To18PZgdLDR7zh4BZk8KZr9yxAWwjRrU9lt7TbMLB4thjzrzg3sEkR6f05a4eBJMJd2ZP3JErOdHUgX2QErBtuDDKqtq9ieAnDfOIMarVPvVB35hT4BGweF3ra2u44rXYKb%2BsvVLC1aQp47XfmTmEdBysEcsB%2BEg%2FZSulXrgTFMI6I635RLzAjjReRxg%3D%3D&amp;webInteractiveContentId=201286297502&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;unified ingress aws ebook - sqaure&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-201286297502.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;the-hub-and-spoke-architecture&quot;&gt;The Hub-and-Spoke Architecture&lt;/h2&gt;&lt;p&gt;The solution is to decouple the &lt;em&gt;global entry point&lt;/em&gt; from the &lt;em&gt;local service discovery&lt;/em&gt;. We call this the Hub-and-Spoke model.&lt;/p&gt;&lt;h3 id=&quot;the-unified-ingress-as-the-hub&quot;&gt;The Unified Ingress as the Hub&lt;/h3&gt;&lt;p&gt;For the hub, you need a &quot;Unified Ingress,&quot; a Traefik instance running on your primary compute platform (often EKS). It is responsible for high-level concerns: terminating TLS, validating identity (OIDC/JWT), applying global rate limits, and handling the routing logic.&lt;/p&gt;&lt;h3 id=&quot;the-compute-spokes&quot;&gt;The Compute Spokes&lt;/h3&gt;&lt;p&gt;The spokes in our Hub-and-Spoke Model are lightweight Traefik instances deployed in remote environments—on EC2 instances, in ECS clusters, or in other EKS clusters.&lt;/p&gt;&lt;p&gt;Crucially, the Unified Ingress does not query the AWS API to find services. Instead, it &lt;strong&gt;polls the spokes&lt;/strong&gt;. Each spoke inspects its local environment (via a Docker socket, the ECS API, or local tags) and exposes a sanitized list of available services via an internal API endpoint.&lt;/p&gt;&lt;p&gt;This separation of concerns yields a modular ingress fabric:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;The spokes are authoritative for their own environments.&lt;/li&gt;&lt;li&gt;The Unified Ingress hub is authoritative for routing.&lt;/li&gt;&lt;li&gt;Neither requires deep knowledge of the other&apos;s internal workings.&lt;/li&gt;&lt;/ol&gt;&lt;h2 id=&quot;why-polling-the-security-argument&quot;&gt;Why Polling? (The Security Argument)&lt;/h2&gt;&lt;p&gt;In modern cloud-native development, &quot;polling&quot; is often considered a dirty word compared to event-driven architectures. However, in a multi-account, multi-VPC AWS environment, polling is actually the superior architectural choice for three reasons.&lt;/p&gt;&lt;h3 id=&quot;1-eliminating-cross-account-iam-complexity&quot;&gt;1. Eliminating Cross-Account IAM Complexity&lt;/h3&gt;&lt;p&gt;If you use a centralized ingress controller that discovers services by querying the AWS API directly, that controller needs &quot;God Mode&quot; permissions. It needs to AssumeRole into every other AWS account to list instances and tasks. This creates a massive security risk—if the Ingress is compromised, the attacker can map your entire cloud estate.&lt;/p&gt;&lt;p&gt;With the Hub-and-Spoke Model, the Unified Ingress never touches AWS APIs outside its own account. It simply sends an HTTP request to the Spoke. The Spoke needs local permissions, but the Unified Ingress needs none. This aligns strictly with least-privilege principles.&lt;/p&gt;&lt;h3 id=&quot;2-predictable-failure-modes&quot;&gt;2. Predictable Failure Modes&lt;/h3&gt;&lt;p&gt;In distributed systems, simple failure modes are valuable. If a spoke goes down, the Unified Ingress stops polling it, times out, and removes those routes. When the spoke recovers, the routes return on the next interval. There is no &quot;stale state&quot; hidden in an event queue or a stream processor that stopped silently.&lt;/p&gt;&lt;h3 id=&quot;3-tight-network-boundaries&quot;&gt;3. Tight Network Boundaries&lt;/h3&gt;&lt;p&gt;Event-driven push models often require bidirectional connectivity. Polling is unidirectional. The Unified Ingress calls the spoke. The spoke requires no inbound rules beyond a single HTTPS listener on a specific port, accessible only from the Unified Ingress’s Security Group.&lt;/p&gt;&lt;h2 id=&quot;solving-the-identity-crisis&quot;&gt;&lt;strong&gt;Solving the Identity Crisis&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;One of the most painful aspects of heterogeneous infrastructure is unifying authentication.&lt;/p&gt;&lt;p&gt;In a fragmented system, EKS might handle auth via an Ingress Controller, while legacy EC2 apps handle it in code. This makes it nearly impossible to enforce policies like &quot;Only users with the admin claim in their JWT can access the /admin path on &lt;em&gt;any&lt;/em&gt; service.&quot;&lt;/p&gt;&lt;p&gt;Because all external traffic flows through the Ingress, authentication becomes centralized by design.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;The Unified Ingress receives the request.&lt;/li&gt;&lt;li&gt;The &lt;strong&gt;Identity Middleware&lt;/strong&gt; validates the JWT against your OIDC provider (Cognito, Okta, etc.).&lt;/li&gt;&lt;li&gt;The Unified Ingress extracts claims (Group, Tenant, Role).&lt;/li&gt;&lt;li&gt;The Unified Ingress uses those claims to make routing decisions &lt;em&gt;before&lt;/em&gt; forwarding the packet to the EKS, EC2, or ECS instances.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;This transforms identity from a platform-specific headache into a consistent network primitive.&lt;/p&gt;&lt;h2 id=&quot;cross-vpc-isolation&quot;&gt;Cross-VPC Isolation&lt;/h2&gt;&lt;p&gt;Many AWS environments segment workloads across multiple VPCs for compliance or to reduce the blast radius. Without a unified ingress, teams often resort to complex VPC Peering meshes or Transit Gateways with overly permissive security groups to allow east-west traffic.&lt;/p&gt;&lt;p&gt;The Hub-and-Spoke Model respects AWS’ &quot;segmentation first&quot; philosophy.&lt;/p&gt;&lt;p&gt;The Unified Ingress acts as the &lt;em&gt;only&lt;/em&gt; cross-VPC touchpoint. Workloads in VPC A (ECS) never talk directly to Workloads in VPC B (EC2). They don&apos;t even need to know that the others exist. Security groups open only a narrow set of ports from the Unified Ingress’ CIDR range to the spoke’s Traefik instance.&lt;/p&gt;&lt;p&gt;This allows you to maintain strict network isolation while presenting a unified API surface to the internet.&lt;/p&gt;&lt;h2 id=&quot;the-traefik-aws-elastic-provider&quot;&gt;The Traefik AWS Elastic Provider&lt;/h2&gt;&lt;p&gt;While the Hub-and-Spoke is an architectural &lt;em&gt;pattern&lt;/em&gt;, implementing it from scratch requires significant engineering. You need to build the spokes, standardize the metadata format, and build the reconciliation logic in the Unified Ingress.&lt;/p&gt;&lt;p&gt;This is why we built the &lt;strong&gt;Traefik AWS Elastic Provider&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;It acts as the concrete realization of this architecture. It operationalizes the model by providing:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Unified Discovery Fabric:&lt;/strong&gt; Spokes automatically enumerate local services (EC2 tags, ECS tasks, Kubernetes services) and normalize the data.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Resilience Logic:&lt;/strong&gt; The provider handles the polling intervals, timeouts, and route eviction logic automatically.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Incremental Adoption:&lt;/strong&gt; You can add a spoke to one ECS cluster today without touching your EKS or EC2 environments. The architecture evolves as you do.&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;when-to-use-this-pattern&quot;&gt;When to Use This Pattern&lt;/h2&gt;&lt;p&gt;This approach is not for everyone. If you are running a single EKS cluster in a single VPC, the AWS Load Balancer Controller is likely sufficient.&lt;/p&gt;&lt;p&gt;However, the Hub-and-Spoke Model offers substantial operational leverage for environments that exhibit:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Multiple Compute Platforms:&lt;/strong&gt; A mix of EC2, ECS, and EKS.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Multi-VPC/Multi-Account:&lt;/strong&gt; Strict segmentation requirements.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Migration Projects:&lt;/strong&gt; Moving monoliths to microservices where traffic must be shifted gradually between platforms based on identity or weights.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;High Governance:&lt;/strong&gt; Environments requiring centralized audit trails for ingress traffic.&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;conclusion-consistency-at-the-edge&quot;&gt;Conclusion: Consistency at the Edge&lt;/h2&gt;&lt;p&gt;AWS will continue to evolve. New compute services will launch; existing ones will change. If your ingress strategy is tightly coupled to the underlying compute platform (e.g., &quot;We use ALBs because we use ECS&quot;), you will always be playing catch-up.&lt;/p&gt;&lt;p&gt;The Hub-and-Spoke architecture offers a principled path forward: a consistent edge atop an inherently diverse landscape. It allows you to choose the right compute tool for the job—EC2 for stateful legacy apps, ECS for batch jobs, EKS for microservices—without fragmenting the user experience.&lt;/p&gt;&lt;p&gt;It enables organizations to retain the advantages of heterogeneity while presenting a unified, reliable, and secure face to the world.&lt;/p&gt;&lt;h3 id=&quot;read-the-builders-guide&quot;&gt;Read the Builders Guide&lt;/h3&gt;&lt;p&gt;We have compiled a detailed AWS builders-style architectural guide including sequence diagrams for authentication flows, cross-VPC security group configurations, and failure recovery scenarios. Click the promo below to get your free copy.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-201286297502&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.546875px; margin-top:40px; margin-bottom:40px;&quot; data-hubspot-wrapper-cta-id=&quot;201286297502&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLLe3KhQWiHbhz5d%2BmAc9HCR6To18PZgdLDR7zh4BZk8KZr9yxAWwjRrU9lt7TbMLB4thjzrzg3sEkR6f05a4eBJMJd2ZP3JErOdHUgX2QErBtuDDKqtq9ieAnDfOIMarVPvVB35hT4BGweF3ra2u44rXYKb%2BsvVLC1aQp47XfmTmEdBysEcsB%2BEg%2FZSulXrgTFMI6I635RLzAjjReRxg%3D%3D&amp;webInteractiveContentId=201286297502&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;unified ingress aws ebook - sqaure&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-201286297502.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[120 Days Until Ingress NGINX Dies: Traefik is the Only True Drop-in Replacement]]></title>
            <description><![CDATA[There's only 120 days until Ingress NGINX dies. Traefik is the only true drop-in replacement. See why it's is the best choice and how to migrate.]]></description>
            <link>https://traefik.io/migrate-from-ingress-nginx-to-traefik-now</link>
            <guid isPermaLink="true">https://traefik.io/migrate-from-ingress-nginx-to-traefik-now</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <category><![CDATA[DevOps]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Wed, 19 Nov 2025 00:35:24 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/11/nginx-blog-image-no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;migrate to traefik from nginx&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/11/nginx-blog-image-no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/11/nginx-blog-image-no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/11/nginx-blog-image-no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/11/nginx-blog-image-no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The Kubernetes community was shaken on November 12, 2025, when maintainers of the Ingress NGINX project announced: &lt;a href=&quot;https://kubernetes.io/blog/2025/11/11/ingress-nginx-retirement/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Ingress NGINX Controller will be retired in March 2026&lt;/u&gt;&lt;/a&gt;. After March 2026, there will be no releases, no bug fixes, and critically, &lt;strong&gt;no security updates&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;Organizations now have just 4 months to migrate away from one of the most widely deployed ingress controllers in the ecosystem. This isn&apos;t theoretical—if you&apos;re running production workloads on Ingress NGINX after March 2026, you&apos;re running unmaintained software with potential security vulnerabilities. Historically, there have been critical vulnerabilities discovered in this project, including the &lt;a href=&quot;https://www.wiz.io/blog/ingress-nginx-kubernetes-vulnerabilities?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#IngressNightmare vulnerabilities&lt;/u&gt;&lt;/a&gt; that demonstrated how attackers could compromise entire clusters through malicious configuration injection.&lt;/p&gt;&lt;p&gt;The timeline is brutal and many organizations are already behind schedule before they&apos;ve started.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/11/traefik-and-nginx.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;500&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;why-traefik-is-your-only-realistic-option&quot;&gt;Why Traefik is Your Only Realistic Option&lt;/h2&gt;&lt;p&gt;Earlier this year, we published a deep-dive into the #IngressNightmare situation and how to &lt;a href=&quot;https://traefik.io/blog/transition-from-ingress-nginx-to-traefik/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;transition from Ingress NGINX to Traefik&lt;/u&gt;&lt;/a&gt;. In short, we added an Ingress NGINX compatibility layer to Traefik, introducing native support for many custom annotations and creating the only drop-in replacement for Ingress NGINX in the industry.&lt;/p&gt;&lt;p&gt;Here&apos;s the reality: every other ingress controller requires you to rewrite your configurations. &lt;a href=&quot;https://docs.nginx.com/nginx-ingress-controller/install/migrate-ingress-nginx/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;F5 NGINX Ingress&lt;/u&gt;&lt;/a&gt;, &lt;a href=&quot;https://www.haproxy.com/blog/ingress-nginx-is-retiring?ref=containous.ghost.io&quot;&gt;&lt;u&gt;HAProxy Ingress&lt;/u&gt;&lt;/a&gt;, cloud provider solutions—e.g., &lt;a href=&quot;https://blog.aks.azure.com/2025/11/13/ingress-nginx-update?ref=containous.ghost.io&quot;&gt;&lt;u&gt;AKS&lt;/u&gt;&lt;/a&gt;, &lt;a href=&quot;https://kubernetes-sigs.github.io/aws-load-balancer-controller/v2.15/guide/ingress/annotations/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;AWS&lt;/u&gt;&lt;/a&gt;, etc.—they all provide migration &lt;em&gt;guides, annotation mappings&lt;/em&gt;, or promote a Gateway API transition, &lt;strong&gt;not migration &lt;em&gt;compatibility&lt;/em&gt;&lt;/strong&gt;. You&apos;ll need to manually convert every custom annotation, test every configuration, and essentially rebuild your ingress layer from scratch.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-202811305109&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:256.4375px; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;202811305109&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLn7FOlXhw2T3t6CVHgxW7o05349QwDm4OGcnSVGniYIKVggDH8CTEzRNRkYG5cXQe5Y0r3d3zWOD0QwABtNgg2cZnSBaNr3l3MuIjlra4%2BcVxD3Y0%2FoS68HP3jv4HzX6ZyO2aAIj%2FybSIzdYBU9WWTJ%2BxTFGyEiG%2BX51ga55g4VrIcDJ22YT4ymc6W7HqG%2BQ%3D%3D&amp;webInteractiveContentId=202811305109&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;nginx-fade-v2&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-202811305109.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;Traefik&apos;s NGINX Provider works differently. Most used &lt;code&gt;nginx.ingress.kubernetes.io&lt;/code&gt; annotations are handled natively by Traefik. Your Ingress objects work unchanged. This is a huge differentiator compared to other solutions.&lt;/p&gt;
&lt;p&gt;But compatibility alone isn&apos;t enough in this crisis. Traefik offers three critical advantages that make it the only realistic choice:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Security by Design&lt;/strong&gt;: The #IngressNightmare vulnerabilities revealed fundamental architectural flaws in NGINX-based solutions. Traefik&apos;s architectural choices—Go over C/C++, static linking, structured parsing over templating—prevent the memory safety and configuration injection attacks that plague NGINX controllers.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Broad Ecosystem Adoption&lt;/strong&gt;: With 3.4+ billion downloads, 58,000+ GitHub stars, and 900+ contributors, Traefik isn&apos;t experimental—it&apos;s battle-tested across startups and enterprises. Unlike solutions adapted for Kubernetes, Traefik was designed specifically for dynamic, cloud-native environments.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Gateway API Leadership&lt;/strong&gt;: As a key contributor to Gateway API specification with full v1.4 support in Traefik v3.6, you&apos;re positioning for the future of Kubernetes networking, not just solving today&apos;s crisis. While others treat Gateway API as experimental, Traefik has made it core.&lt;/p&gt;&lt;p&gt;When you&apos;re facing a 120-day deadline with no margin for error, Traefik emerges as the obvious choice—seamlessly compatible with your existing deployments while positioning you for the future of cloud-native networking.&lt;/p&gt;&lt;h2 id=&quot;stop-the-bleeding-first-then-modernize&quot;&gt;Stop the Bleeding First, Then Modernize&lt;/h2&gt;&lt;p&gt;The retirement of Ingress NGINX is an urgent, time-sensitive problem demanding a structured migration strategy. It can be tempting to directly think of Gateway API as the obvious solution. Indeed, this new Kubernetes specification handles much more than the Ingress specification, and we are not only a big fan at Traefik Labs, but &lt;a href=&quot;https://traefik.io/solutions/gateway-api?ref=containous.ghost.io&quot;&gt;&lt;u&gt;we are leading this standard&lt;/u&gt;&lt;/a&gt; as the future of Kubernetes networking. &lt;/p&gt;&lt;p&gt;However, Gateway API requires a complete migration of all your ingress resources to a new set of resources: &lt;code&gt;Gateway&lt;/code&gt;, &lt;code&gt;GatewayClass&lt;/code&gt;, &lt;code&gt;HTTPRoute&lt;/code&gt;, &lt;code&gt;TLSRoute&lt;/code&gt;, etc. And this is clearly not something you can (or should) do in a short period of time.&lt;/p&gt;
&lt;p&gt;Trying to simultaneously solve the immediate crisis of a looming deprecation deadline and the long-term goal of ingress modernization is a mistake. The prudent, risk-averse approach separates these concerns into distinct, manageable phases.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Phase 1: Ingress NGINX Decommissioning.&lt;/strong&gt; Get off Ingress NGINX before security updates stop. Migrate to Traefik with the NGINX Provider for drop-in compatibility. Maintain existing workflows and ensure production stability through the deadline.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Phase 2: Gateway API Modernization. &lt;/strong&gt;Plan Gateway API adoption on your timeline, not under deadline pressure. Assess readiness during normal sprint cycles, test thoroughly, implement when business conditions are optimal.&lt;/p&gt;&lt;p&gt;Your immediate problem is Ingress NGINX retirement, not Ingress API modernization. Solve one crisis at a time.&lt;/p&gt;&lt;h2 id=&quot;how-to-decommission-ingress-nginx-in-a-nutshell&quot;&gt;How to Decommission Ingress NGINX, in a Nutshell&lt;/h2&gt;&lt;p&gt;First, let’s dig deeper into the basics with a nominal use case. Let’s say:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You operate a Kubernetes cluster&lt;/li&gt;
&lt;li&gt;There is a running &lt;code&gt;ingress-nginx&lt;/code&gt; controller instance&lt;/li&gt;
&lt;li&gt;A Kubernetes &lt;code&gt;IngressClass&lt;/code&gt; named &lt;code&gt;nginx&lt;/code&gt; with the controller value set to &lt;code&gt;k8s.io/ingress-nginx&lt;/code&gt; and Kubernetes Ingresses have an &lt;code&gt;ingressClassName&lt;/code&gt; set to &lt;code&gt;nginx&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;And a Kubernetes service of type &lt;code&gt;LoadBalancer&lt;/code&gt; exists exposing the &lt;code&gt;ingress-nginx&lt;/code&gt; controller instance on port &lt;code&gt;80&lt;/code&gt; and &lt;code&gt;443&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You have this ingress with TLS and basic authentication deployed:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kind: Ingress
apiVersion: networking.k8s.io/v1
metadata:
  name: ingress-with-basicauth
  namespace: default
  annotations:
    # Configure basic authentication for the Ingress
    nginx.ingress.kubernetes.io/auth-type: &quot;basic&quot;
    nginx.ingress.kubernetes.io/auth-secret-type: &quot;auth-file&quot;
    nginx.ingress.kubernetes.io/auth-secret: &quot;default/basic-auth&quot;
    nginx.ingress.kubernetes.io/auth-realm: &quot;Authentication Required&quot;
    # SSL Redirect
    nginx.ingress.kubernetes.io/ssl-redirect: &quot;true&quot;

spec:
  ingressClassName: nginx
  rules:
    - host: myappdomain
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: whoami
                port:
                  number: 80
  tls:
    - hosts:
        - myappdomain
      secretName: external-certs

---
kind: Secret
apiVersion: v1
metadata:
  name: basic-auth
  namespace: default
type: Opaque
data:
  # user:password
  auth: dXNlcjp7U0hBfVc2cGg1TW01UHo4R2dpVUxiUGd6RzM3bWo5Zz0=
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Deploy Traefik alongside your existing Ingress NGINX setup. Traefik is installed in `ClusterIP` mode to be able to test the routing.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ helm repo add traefik https://traefik.github.io/charts
$ helm repo update
$ helm upgrade --install traefik traefik/traefik --namespace traefik \
  --create-namespace \
  --set=&quot;image.tag=v3.6.2&quot; \
  --set=&quot;logs.general.level=DEBUG&quot; \
  --set=&quot;service.type=ClusterIP&quot; \
  --set=&quot;additionalArguments={--providers.kubernetesIngressNGINX}&quot;&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Check that the routing is working with a port-forward&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ kubectl port-forward -n traefik services/traefik 9000:80 9443:443
Forwarding from 127.0.0.1:9000 -&amp;gt; 8000
Forwarding from [::1]:9000 -&amp;gt; 8000
Forwarding from 127.0.0.1:9443 -&amp;gt; 8443
Forwarding from [::1]:9443 -&amp;gt; 8443

$ curl https://myappdomain:9443
401 Unauthorized

$ curl -u user:password https://myappdomain:9443
Hostname: whoami-b85fc56b4-5pvcv
...&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Depending on how your Ingress NGINX controller has been deployed, you might also need to recreate the &lt;code&gt;nginx IngressClass&lt;/code&gt;, if it’s removed when Nginx is uninstalled.&lt;/p&gt;
&lt;p&gt;Then, you can remove the Ingress NGINX deployment, update the Traefik deployment to change the &lt;code&gt;Service&lt;/code&gt; type to &lt;code&gt;LoadBalancer&lt;/code&gt;, update the DNS record, and check that Traefik serves your untouched ingress resources 🙂&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ helm upgrade --install traefik traefik/traefik --namespace traefik \
  --create-namespace \
  --set=&quot;image.tag=v3.6.2&quot; \
  --set=&quot;logs.general.level=DEBUG&quot; \
  --set=&quot;service.type=LoadBalancer&quot; \
  --set=&quot;additionalArguments={--providers.kubernetesIngressNGINX}&quot;

$ curl -u user:password https://myappdomain              
Hostname: whoami-b85fc56b4-q6427
...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It’s as simple as that. &lt;code&gt;nginx.ingress.kubernetes.io&lt;/code&gt; annotations are handled natively by Traefik and your ingresses stay unchanged.&lt;/p&gt;
&lt;p&gt;For large Kubernetes deployments with numerous workloads and Ingress resources, we recommend a progressive migration. Deploy new clusters with Traefik, and then gradually transition your existing workloads and associated Ingress configurations to these new clusters. This approach allows for thorough validation, provides an easy rollback mechanism if necessary, and ensures the entire migration process remains manageable.&lt;/p&gt;&lt;p&gt;The Traefik Labs team possesses extensive experience with various Kubernetes deployments and is well-equipped to provide commercial assistance, helping you plan and execute your migration efficiently and seamlessly. Feel free &lt;a href=&quot;https://traefik.io/choose-traefik-oss?ref=containous.ghost.io#watch-demo&quot;&gt;&lt;u&gt;to reach out to us&lt;/u&gt;&lt;/a&gt; if you need help.&lt;/p&gt;&lt;h2 id=&quot;time-to-execute&quot;&gt;Time to Execute&lt;/h2&gt;&lt;p&gt;The retirement of Ingress NGINX is serious, but it&apos;s not the Kubernetes apocalypse. With 120 days remaining and Traefik&apos;s proven compatibility layer, you have enough time to migrate safely if you act now.&lt;/p&gt;&lt;p&gt;Don&apos;t let deadline pressure force you into premature Gateway API adoption or manual configuration rewrites. Traefik&apos;s NGINX Provider offers the most realistic path forward with immediate compatibility, proven track record, and clear upgrade path to Gateway API when you&apos;re ready.&lt;/p&gt;&lt;p&gt;Our current implementation focuses on supporting the most commonly used Ingress NGINX custom annotations, covering 80% of real-world usage patterns. If you need additional annotation support, we can implement it. Feel free to open GitHub issues in &lt;a href=&quot;https://github.com/traefik/traefik?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik&apos;s repository&lt;/u&gt;&lt;/a&gt; to tell us your needs. Better yet, contribute directly—adding new annotation support is straightforward and helps the entire community.&lt;/p&gt;&lt;p&gt;Our goal is simple: &lt;strong&gt;make this crisis a non-event&lt;/strong&gt;. Every organization should be able to migrate off Ingress NGINX safely and quickly, without disrupting their operations or forcing architectural decisions under pressure.&lt;/p&gt;&lt;h2 id=&quot;essential-resources&quot;&gt;Essential Resources&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik/reference/install-configuration/providers/kubernetes/kubernetes-ingress-nginx/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik NGINX Provider Documentation&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Download Traefik 3.6&lt;/strong&gt;:&lt;a href=&quot;https://github.com/traefik/traefik/releases/tag/v3.6.0?ref=containous.ghost.io&quot;&gt; &lt;/a&gt;&lt;a href=&quot;https://hub.docker.com/_/traefik?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Docker Hub&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Documentation&lt;/strong&gt;:&lt;a href=&quot;https://doc.traefik.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt; Complete Documentation&lt;/u&gt;&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Community&lt;/strong&gt;:&lt;a href=&quot;https://github.com/traefik/traefik?ref=containous.ghost.io&quot;&gt; &lt;u&gt;GitHub Repository&lt;/u&gt;&lt;/a&gt; |&lt;a href=&quot;https://community.traefik.io/?ref=containous.ghost.io&quot;&gt; &lt;u&gt;Community Forum&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Learn More&lt;/strong&gt;:&lt;a href=&quot;https://traefik.io/traefik/?ref=containous.ghost.io&quot;&gt; &lt;u&gt;Official Website&lt;/u&gt;&lt;/a&gt; |&lt;a href=&quot;https://traefik.io/blog/?ref=containous.ghost.io&quot;&gt; &lt;u&gt;Blog&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-202811305109&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:256.4375px; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;202811305109&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLn7FOlXhw2T3t6CVHgxW7o05349QwDm4OGcnSVGniYIKVggDH8CTEzRNRkYG5cXQe5Y0r3d3zWOD0QwABtNgg2cZnSBaNr3l3MuIjlra4%2BcVxD3Y0%2FoS68HP3jv4HzX6ZyO2aAIj%2FybSIzdYBU9WWTJ%2BxTFGyEiG%2BX51ga55g4VrIcDJ22YT4ymc6W7HqG%2BQ%3D%3D&amp;webInteractiveContentId=202811305109&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;nginx-fade-v2&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-202811305109.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[The Feature You Didn't Know You Needed: Multi-Layer Routing in Traefik]]></title>
            <description><![CDATA[Traefik's new multi-layer routing introduces hierarchical relationships between routers to process requests with attached middleware and add context. See how.]]></description>
            <link>https://traefik.io/multi-layer-routing-in-traefik</link>
            <guid isPermaLink="true">https://traefik.io/multi-layer-routing-in-traefik</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <dc:creator><![CDATA[Immánuel Fodor]]></dc:creator>
            <pubDate>Mon, 10 Nov 2025 22:15:41 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/11/multi-layer-routing-promo-no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Traefik multi-layer routing&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/11/multi-layer-routing-promo-no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/11/multi-layer-routing-promo-no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/11/multi-layer-routing-promo-no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/11/multi-layer-routing-promo-no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Here&apos;s a question: how do you route traffic when the routing decision depends on information that doesn&apos;t exist in the original request?&lt;/p&gt;&lt;p&gt;Maybe you need to authenticate first, then route based on the user&apos;s role. Or check a feature flag service to decide whether someone gets the new microservices or the old monolith. Or look up a customer&apos;s subscription tier to route enterprise users to stable infrastructure while free users are directed to your canary.&lt;/p&gt;&lt;p&gt;The problem is that routing decisions are typically based on the information present in the request when it arrives—the path, the headers, the host, or other similar information. Even with Traefik’s flexible routing expression system, if the information you need for routing resides elsewhere (an auth service, a feature flag system, a database), you&apos;re stuck with workarounds.&lt;/p&gt;&lt;p&gt;Most teams end up doing one of these things:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Duplicating logic&lt;/strong&gt;—Every microservice calls the auth service, parses JWTs, or checks feature flags independently&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Building a routing proxy&lt;/strong&gt;—A separate service sits in front of your main routing logic, makes the decision, adds routing headers (and adds latency)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Complex configuration&lt;/strong&gt;—Giant routing files that try to handle every edge case and break when requirements change&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Giving up&lt;/strong&gt;—Route everyone to the same backend and handle the logic in application code&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;None of these are great. They&apos;re slow, brittle, or just push the problem somewhere else.&lt;/p&gt;&lt;p&gt;Traefik has just released &lt;strong&gt;multi-layer routing&lt;/strong&gt;, and it solves this entire class of problems. Let me show you how.&lt;/p&gt;&lt;h2 id=&quot;the-problem-risk-management-meets-routing-logic&quot;&gt;The Problem: Risk Management Meets Routing Logic&lt;/h2&gt;&lt;p&gt;Let&apos;s focus on one scenario that nearly every engineering team faces: safely deploying a new backend version.&lt;/p&gt;&lt;p&gt;You&apos;ve built a new version of your API service. It&apos;s faster, cleaner, better—but it&apos;s also risky. Your enterprise customers have stricter SLAs. Breaking their production workflows would be catastrophic. But your free-tier users? They&apos;re well-suited for a canary-based deployment workflow, as free tiers typically have lesser SLA commitments and a lower risk of immediate business impact.&lt;/p&gt;&lt;p&gt;You need to route requests to &lt;code&gt;https://api.example.com/users&lt;/code&gt; to different backends based on customer tier. Enterprise goes to stable, free tier goes to canary.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Your current options are all flawed.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The &quot;naive&quot; approach: Parse subscription level in every microservice. Now every service needs to be aware of customer tiers, call your billing system, handle caching, and deal with failures. You&apos;ve just coupled your entire architecture to your billing logic.&lt;/p&gt;&lt;p&gt;The &quot;proxy&quot; approach: Build an external &quot;customer routing service&quot; that sits in front of your main routing logic. It checks the customer tier and adds custom headers to give hints to routing. Congratulations, you&apos;ve added 30-500ms latency to every request and created a critical single point of failure. The added latency may even vary depending on your custom logic, database lookup speeds, distributed infrastructure, and many other factors.&lt;/p&gt;&lt;p&gt;The &quot;manual config&quot; approach: Update your routing configuration every time a customer upgrades or downgrades. This doesn&apos;t scale, it&apos;s error-prone, and you&apos;ll eventually route an enterprise customer to your canary at 2 AM by mistake.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The fundamental problem:&lt;/strong&gt; Routing decisions are based on the original request. If your auth service knows the customer tier, even Traefik’s intelligent routing system can&apos;t use that information for routing—it&apos;s trapped in your auth system&apos;s response.&lt;/p&gt;&lt;h2 id=&quot;how-multi-layer-routing-solves-the-problem&quot;&gt;How Multi-Layer Routing Solves the Problem&lt;/h2&gt;&lt;p&gt;Traefik&apos;s new multi-layer routing introduces hierarchical relationships between routers. Parent routers process requests with attached middleware, enriching them with additional context. Child routers then make routing decisions based on that enriched request.&lt;/p&gt;&lt;p&gt;Here’s the request flow:&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/11/multi-layer-routing-diagram.png&quot; class=&quot;kg-image&quot; alt=&quot;Diagram of Multi-Layer Routing in Traefik&quot; loading=&quot;lazy&quot; width=&quot;1718&quot; height=&quot;1970&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/11/multi-layer-routing-diagram.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/11/multi-layer-routing-diagram.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/11/multi-layer-routing-diagram.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/11/multi-layer-routing-diagram.png 1718w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Diagram of Multi-Layer Routing in Traefik&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;The router hierarchy has three types:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Root routers&lt;/strong&gt; sit at the top with no parents, attached to &lt;code&gt;entryPoints&lt;/code&gt;. They define &lt;code&gt;tls&lt;/code&gt; and &lt;code&gt;observability&lt;/code&gt; configuration. They can either have children (making them parent routers) or directly route to a service (standalone routers). Middleware is a key piece in request enrichment—root routers typically apply shared middleware that modifies requests for downstream routing decisions.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Intermediate routers&lt;/strong&gt; reference their parents via &lt;code&gt;parentRefs&lt;/code&gt; and can have their own children. They also cannot define a &lt;code&gt;service&lt;/code&gt; and inherit &lt;code&gt;entryPoints&lt;/code&gt;, &lt;code&gt;tls&lt;/code&gt;, and &lt;code&gt;observability&lt;/code&gt; from their root. Both intermediate and leaf routers can define additional middleware beyond what the parent applies. Importantly, they can&apos;t be called directly—requests must flow through their parent router, ensuring you can&apos;t circumvent authentication or other parent-level logic.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Leaf routers&lt;/strong&gt; reference their parents via &lt;code&gt;parentRefs&lt;/code&gt; and must define a &lt;code&gt;service&lt;/code&gt;. They also inherit configuration from their root router and can apply their own middleware.&lt;/p&gt;
&lt;p&gt;The magic is progressive request enrichment: each layer adds context that subsequent layers use for increasingly specific routing decisions. A key benefit is that you don&apos;t have to repeat the previous layers&apos; matchers—they all add up as you traverse the routing tree. Authentication happens once at the parent, and routing happens at the child based on the enriched result.&lt;/p&gt;&lt;h2 id=&quot;show-dont-tell-progressive-rollout-configuration&quot;&gt;Show, Don&apos;t Tell: Progressive Rollout Configuration&lt;/h2&gt;&lt;p&gt;Let&apos;s solve that customer tier routing problem. Here&apos;s the complete configuration:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;## Routing configuration
http:
  routers:
    # Root router - matches all API requests and applies auth
    api-parent:
      rule: &quot;Host(`api.example.com`) &amp;amp;&amp;amp; PathPrefix(`/`)&quot;
      middlewares:
        - auth-with-tier
      entryPoints:
        - websecure
      tls: {}
      # No service defined - this is a parent router

    # Leaf router - routes enterprise customers to stable
    api-enterprise:
      rule: &quot;HeaderRegexp(`X-Customer-Tier`, `(enterprise\|business)`)&quot;
      service: stable-backend
      parentRefs:
        - api-parent

    # Leaf router - routes free tier to canary
    api-free:
      rule: &quot;Header(`X-Customer-Tier`, `free`)&quot;
      service: new-version
      parentRefs:
        - api-parent

  middlewares:
    # ForwardAuth validates request and enriches it with customer tier
    auth-with-tier:
      forwardAuth:
        address: &quot;http://auth-service:8080/validate&quot;
        authResponseHeaders:
          - X-Customer-Tier
          - X-Customer-Id
          - X-User-Email

  services:
    stable-backend:
      loadBalancer:
        servers:
          - url: &quot;http://api-v1-stable:8080&quot;

    new-version:
      loadBalancer:
        servers:
          - url: &quot;http://api-v2-canary:8080&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;What happens when a request arrives:&lt;/strong&gt;&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Request to &lt;code&gt;https://api.example.com/users&lt;/code&gt; hits the &lt;code&gt;websecure&lt;/code&gt; entrypoint&lt;/li&gt;
&lt;li&gt;&lt;code&gt;api-parent&lt;/code&gt; router matches based on &lt;code&gt;Host&lt;/code&gt; and &lt;code&gt;PathPrefix&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;auth-with-tier&lt;/code&gt; middleware executes, forwarding the request to &lt;code&gt;http://auth-service:8080/validate&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Auth service validates the JWT, looks up the customer’s subscription, and returns headers:
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;X-Customer-Tier: enterprise&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;X-Customer-Id: cust_abc123&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;X-User-Email: admin@bigcorp.com&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Traefik adds these headers to the request and evaluates child routers&lt;/li&gt;
&lt;li&gt;&lt;code&gt;api-enterprise&lt;/code&gt; router matches because &lt;code&gt;X-Customer-Tier&lt;/code&gt; matches &lt;code&gt;enterprise&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Request is forwarded to &lt;code&gt;stable-backend&lt;/code&gt; at &lt;code&gt;http://api-v1-stable:8080&lt;/code&gt;&lt;br&gt;
When a free-tier user makes the same request:&lt;/li&gt;
&lt;li&gt;Steps 1-4 are identical, but the auth service returns &lt;code&gt;X-Customer-Tier: free&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;api-free&lt;/code&gt; router matches instead&lt;/li&gt;
&lt;li&gt;Request is forwarded to the &lt;code&gt;new-version&lt;/code&gt; service at &lt;code&gt;http://api-v2-canary:8080&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;strong&gt;The contrast:&lt;/strong&gt; Without multi-layer routing, you&apos;d need to either check customer tier in every microservice (slow, duplicated), build an external routing proxy (latency, complexity), or somehow encode customer tier in URLs or domains (terrible UX). Now it&apos;s declarative: authenticate once, enrich the request, and route based on the enriched context.&lt;/p&gt;&lt;h2 id=&quot;what-else-is-possible&quot;&gt;What Else Is Possible&lt;/h2&gt;&lt;p&gt;Multi-layer routing unlocks patterns that were previously painful or impossible to implement cleanly. We show two additional examples below.&lt;/p&gt;&lt;h3 id=&quot;authentication-based-routing&quot;&gt;Authentication-Based Routing&lt;/h3&gt;&lt;p&gt;The problem: You have admin endpoints and user endpoints, but you don&apos;t want separate URL paths. Admins calling &lt;code&gt;/api/reports&lt;/code&gt; should see all reports. Regular users calling the same endpoint should only see their own reports. The user&apos;s role only exists after authentication.&lt;/p&gt;
&lt;p&gt;The solution: The parent router authenticates all &lt;code&gt;/api&lt;/code&gt; requests using the ForwardAuth middleware. The auth service validates credentials and returns &lt;code&gt;X-User-Role&lt;/code&gt; header (either &lt;code&gt;admin&lt;/code&gt; or &lt;code&gt;user&lt;/code&gt;). Child routers match on that header: one routes admin requests to the admin-backend with full data access, another routes user requests to the user-backend with restricted access.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Key config pattern:&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# Parent applies auth, no service
api-parent:
  rule: &quot;PathPrefix(`/api`)&quot;
  middlewares: [auth-middleware]

# Children route based on enriched headers
api-admin:
  rule: &quot;Header(`X-User-Role`, `admin`)&quot;
  service: admin-service
  parentRefs: [api-parent]

api-user:
  rule: &quot;Header(`X-User-Role`, `user`)&quot;  
  service: user-service
  parentRefs: [api-parent]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Use case:&lt;/strong&gt; Multi-tenant SaaS platforms, admin panels with role-based access, internal tools with permission-based routing.&lt;/p&gt;&lt;h3 id=&quot;feature-flag-based-migration&quot;&gt;Feature Flag-Based Migration&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;The problem:&lt;/strong&gt; You&apos;re migrating from a monolith to microservices. Some customers are on the new architecture, others on the old. Feature flag decisions reside in an external service (LaunchDarkly, Unleash, custom system). You need Traefik to route based on those flags without calling the feature flag service from every microservice.&lt;/p&gt;&lt;p&gt;The solution: Parent router calls your feature flag service via ForwardAuth or a custom plugin. The service evaluates flags for the user and returns &lt;code&gt;X-Feature-Microservices: enabled&lt;/code&gt; or &lt;code&gt;X-Feature-Microservices: disabled&lt;/code&gt;. Child routers match on that header and route to either the new microservices or the legacy monolith. One feature flag check, unlimited routing decisions downstream.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Key config pattern:&lt;/strong&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# Parent checks feature flags
migration-parent:
  rule: &quot;Host(`app.example.com`)&quot;
  middlewares: [feature-flag-checker]

# Route to microservices if enabled
microservices-route:
  rule: &quot;Header(`X-Feature-Microservices`, `enabled`)&quot;
  service: new-microservices
  parentRefs: [migration-parent]

# Route to monolith otherwise
monolith-route:
  rule: &quot;Header(`X-Feature-Microservices`, `disabled`)&quot;
  service: legacy-monolith
  parentRefs: [migration-parent]
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Use case:&lt;/strong&gt; Progressive monolith decomposition, gradual infrastructure migrations, per-customer feature rollouts, A/B testing at the gateway level without application changes.&lt;/p&gt;&lt;h2 id=&quot;when-to-use-this&quot;&gt;When to Use This&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Use multi-layer routing when:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;✅ You&apos;re enriching requests (authentication, feature flags, customer context, or you name it) and need to route based on that enriched data&lt;/p&gt;&lt;p&gt;✅ You have shared middleware that applies broadly, but different routing logic after that middleware executes&lt;/p&gt;&lt;p&gt;✅ Your routing rules are becoming unmaintainable—complex combinations of conditions that would be clearer as hierarchical layers&lt;/p&gt;&lt;p&gt;✅ You&apos;re making the same external call (auth service, feature flags) across multiple routes and want to do it once&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Skip multi-layer routing when:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&amp;nbsp;⏩ You have simple routing needs—basic path or host matching doesn&apos;t need this complexity&lt;/p&gt;&lt;p&gt;&amp;nbsp;⏩ You need Docker labels or standard Kubernetes Ingress—multi-layer routing at the time of writing only works with Kubernetes IngressRoute CRD, File providers (YAML/TOML), and KV stores (Consul, etcd, Redis, ZooKeeper).&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Important consideration:&lt;/em&gt;&lt;/strong&gt; Multi-layer routing changes your debugging model. You&apos;re now tracing requests through a hierarchy, rather than a single router. Enable Traefik&apos;s OpenTelemetry-based observability and distributed tracing—you need visibility into which routers match at each layer and why. Think of it like debugging microservices instead of a monolith: a little more moving parts, but clearer separation of concerns.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Performance note:&lt;/em&gt;&lt;/strong&gt; Each layer adds minimal overhead (microseconds for rule evaluation). The middleware execution (ForwardAuth calls, etc.) is where latency happens, but you&apos;d be doing those calls anyway—multi-layer routing just lets you do them once instead of repeatedly, and without any hacks that could bite back in the long run.&lt;/p&gt;&lt;h2 id=&quot;get-started&quot;&gt;Get Started&lt;/h2&gt;&lt;p&gt;The fastest way to understand multi-layer routing is to try it. The &quot;aha moment&quot; occurs when you realize how naturally complex routing logic can be decomposed into simple layers. Authentication, then routing. Context extraction, then decisions. One job per layer, rather than cramming everything into brittle, single-line rules or scattering it across multiple services.&lt;/p&gt;&lt;p&gt;Take inspiration from the examples above, make adjustments to match your environment, and deploy it to a test infrastructure. Make requests with different authentication credentials and observe Traefik routing them to different backends based on enriched request properties.&amp;nbsp;&lt;/p&gt;&lt;p&gt;For complete documentation, additional examples, and provider-specific configuration formats, see the&lt;a href=&quot;https://doc.traefik.io/traefik/master/reference/routing-configuration/http/routing/multi-layer-routing/?ref=containous.ghost.io&quot;&gt; &lt;u&gt;official Traefik multi-layer routing reference&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;If you&apos;re still duplicating auth middleware across routes, building external routing services just to make decisions, parsing customer data in every microservice, or maintaining complex single-line routing rules with multiple conditions, there&apos;s a better way now.&lt;/p&gt;&lt;p&gt;The feature has just launched. The patterns are still emerging. What will you build with hierarchical routing layers?&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Do you have a multi-layer use case in mind that you think is even more interesting than the ones shared above? I’d love to hear it at &lt;/em&gt;&lt;a href=&quot;mailto:product@traefik.io&quot;&gt;&lt;em&gt;&lt;u&gt;product@traefik.io&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;!&lt;/em&gt;&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Scale Serverless Workloads with Traefik & Knative]]></title>
            <description><![CDATA[Scale your serverless workloads with Knative and Traefik, the only proxy that can manage VM, containerized, and serverless workloads across any environment.]]></description>
            <link>https://traefik.io/scale-serverless-workloads-with-traefik-and-knative</link>
            <guid isPermaLink="true">https://traefik.io/scale-serverless-workloads-with-traefik-and-knative</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <dc:creator><![CDATA[Shedrack Akintayo]]></dc:creator>
            <pubDate>Mon, 10 Nov 2025 22:02:14 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/11/knative-blog-promo-no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Traefik&apos;s Knative Serving&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/11/knative-blog-promo-no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/11/knative-blog-promo-no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/11/knative-blog-promo-no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/11/knative-blog-promo-no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Modern infrastructure spans diverse workload types—from traditional VMs to cloud-native containers and serverless functions. Managing networking across these environments has traditionally required multiple specialized proxies, increasing complexity and operational overhead.&lt;/p&gt;&lt;p&gt;With &lt;a href=&quot;http://traefik.io/blog/traefik-proxy-3-6-ramequin?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Traefik 3.6&lt;/a&gt;, we&apos;re changing that. The introduction of Knative provider support marks a key milestone: &lt;strong&gt;Traefik is now the only proxy that can seamlessly operate at the edge of Cloud Native workloads (containers), traditional workloads (Virtual Machines), and serverless workloads&lt;/strong&gt;. This unprecedented versatility makes Traefik a truly unique platform capable of handling any kind of workload your infrastructure demands.&lt;/p&gt;&lt;p&gt;Knative, the leading platform for serverless workloads on Kubernetes, provides scale-to-zero capabilities, automatic scaling based on traffic, and sophisticated revision management. The Knative provider in Traefik automatically handles service discovery, scaling events, and traffic routing for these serverless workloads, providing a unified experience across your entire application landscape.&lt;/p&gt;&lt;p&gt;Teams can now use a single proxy solution for their complete infrastructure, dramatically simplifying operations while maintaining the specialized optimizations each workload type requires.&lt;/p&gt;&lt;h2 id=&quot;prerequisites&quot;&gt;Prerequisites&lt;/h2&gt;&lt;p&gt;Before we begin, make sure you have:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://helm.sh/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Helm&lt;/u&gt;&lt;/a&gt; 3.x installed&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://k3d.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;k3d&lt;/u&gt;&lt;/a&gt; installed for local testing&lt;/li&gt;&lt;li&gt;kubectl configured to access your cluster&lt;/li&gt;&lt;li&gt;Basic familiarity with Kubernetes concepts&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;create-a-k3d-cluster&quot;&gt;Create a k3d Cluster&lt;/h2&gt;&lt;p&gt;For this guide, we&apos;ll use k3d to create a local Kubernetes cluster with port mappings that allow direct access to services without port-forwarding:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;k3d cluster create traefik \
  --port 80:80@loadbalancer \
  --port 443:443@loadbalancer \
  --k3s-arg &quot;--disable=traefik@server:0&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This command creates a cluster with:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Port 80 and 443 mapped to your localhost&lt;/li&gt;&lt;li&gt;The default k3s Traefik installation disabled (we&apos;ll install our own)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If you&apos;re using a cloud provider instead, you can skip this step and use your existing cluster.&lt;/p&gt;&lt;h2 id=&quot;install-knative-serving&quot;&gt;Install Knative Serving&lt;/h2&gt;&lt;p&gt;Let&apos;s start by installing Knative Serving. We&apos;ll be using version 1.19.0, which has been tested with Traefik&apos;s Knative provider.&lt;/p&gt;&lt;p&gt;Install the Knative Custom Resource Definitions (CRDs):&lt;/p&gt;&lt;pre&gt;&lt;code&gt;kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.19.0/serving-crds.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then install the Knative Serving core components:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;kubectl apply -f https://github.com/knative/serving/releases/download/knative-v1.19.0/serving-core.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Wait for all Knative pods to be ready:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;kubectl get pods -n knative-serving
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You should see the activator, autoscaler, controller, and webhook pods all in a &apos;Running&apos; state.&lt;/p&gt;&lt;p&gt;Now configure Knative to use Traefik as its networking layer:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;kubectl patch configmap/config-network \
  -n knative-serving \
  --type merge \
  -p &apos;{&quot;data&quot;:{&quot;ingress.class&quot;:&quot;traefik.ingress.networking.knative.dev&quot;}}&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;install-traefik-as-knative-networking-controller&quot;&gt;Install Traefik as Knative Networking Controller&lt;/h2&gt;&lt;p&gt;Now let&apos;s deploy Traefik with Knative support enabled using Helm.&lt;/p&gt;&lt;p&gt;Create a &lt;strong&gt;&lt;em&gt;values.yaml &lt;/em&gt;&lt;/strong&gt;file that enables the Knative provider:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;experimental:
  knative: true

providers:
  knative:
    enabled: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The configuration enables both the experimental Knative feature flag and activates the Knative provider.&lt;/p&gt;&lt;p&gt;Next, execute the following commands to deploy Traefik in the traefik namespace using the previously described configuration:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;helm repo add traefik https://traefik.github.io/charts
helm repo update
kubectl create namespace traefik
helm upgrade --install --version 33.2.0 --namespace traefik \
  traefik traefik/traefik -f values.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Verify that Traefik is running:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;kubectl get pods -n traefik
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You should see the Traefik pod in a &apos;Running&apos; state. And voilà! Your Traefik instance is now ready to handle Knative workloads.&lt;/p&gt;&lt;h2 id=&quot;deploy-your-first-knative-service&quot;&gt;Deploy your first Knative Service&lt;/h2&gt;&lt;p&gt;Now that our infrastructure is ready, let&apos;s deploy a serverless application. We&apos;ll use Traefik&apos;s whoami service, which provides useful debugging information about the request.&lt;/p&gt;&lt;p&gt;Create a file called &lt;strong&gt;&lt;em&gt;whoami.yml&lt;/em&gt;&lt;/strong&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: whoami
  namespace: default
spec:
  template:
    spec:
      containers:
        - image: traefik/whoami
          env:
            - name: WHOAMI_NAME
              value: &quot;Serverless with Traefik&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Deploy the service:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;kubectl apply -f whoami.yml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Watch as Knative creates the necessary resources:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;kubectl get ksvc whoami
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After a moment, you should see output indicating the service is ready:&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/11/Screenshot-2025-11-07-at-5.48.48---PM.png&quot; class=&quot;kg-image&quot; alt=&quot;output indicating the service is ready&quot; loading=&quot;lazy&quot; width=&quot;1564&quot; height=&quot;124&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/11/Screenshot-2025-11-07-at-5.48.48---PM.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/11/Screenshot-2025-11-07-at-5.48.48---PM.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/11/Screenshot-2025-11-07-at-5.48.48---PM.png 1564w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h3 id=&quot;test-your-deployment&quot;&gt;Test Your Deployment&lt;/h3&gt;&lt;p&gt;Test your application by sending a request with the appropriate Host header:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;curl -H &quot;Host: whoami.default.example.com&quot; http://localhost
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You should see output showing request details, including the service name and headers that Knative automatically adds.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;Name: Serverless with Traefik
Hostname: whoami-00001-deployment-86654cdc46-xvkcc
IP: 127.0.0.1
RemoteAddr: 127.0.0.1:36324
GET / HTTP/1.1
Host: whoami.default.example.com
User-Agent: curl/8.7.1
Accept: */*
Accept-Encoding: gzip
Forwarded: for=10.42.0.1;host=whoami.default.example.com;proto=http, for=10.42.0.6
K-Proxy-Request: activator
X-Forwarded-Host: whoami.default.example.com
X-Forwarded-Port: 80
X-Forwarded-Proto: http
X-Forwarded-Server: traefik-784b46c9ff-l8ckj
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Congratulations! You&apos;ve just deployed your first serverless application with Knative and Traefik.&lt;/p&gt;&lt;h2 id=&quot;observe-scale-to-zero&quot;&gt;Observe Scale-to-Zero&lt;/h2&gt;&lt;p&gt;One of Knative&apos;s standout features is scale-to-zero. Watch this behavior in real-time by running the following command to watch the Knative pods scale up and down:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;kubectl get pods -w
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After about 30 seconds of no traffic, you&apos;ll see the application pod terminate. When you make another request, Knative will automatically spin up a new pod.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/11/Screenshot-2025-11-07-at-6.03.19---PM.png&quot; class=&quot;kg-image&quot; alt=&quot;new pod spun up&quot; loading=&quot;lazy&quot; width=&quot;1618&quot; height=&quot;630&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/11/Screenshot-2025-11-07-at-6.03.19---PM.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/11/Screenshot-2025-11-07-at-6.03.19---PM.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/11/Screenshot-2025-11-07-at-6.03.19---PM.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/11/Screenshot-2025-11-07-at-6.03.19---PM.png 1618w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;go-beyond-with-traffic-splitting&quot;&gt;Go Beyond with Traffic Splitting&lt;/h2&gt;&lt;p&gt;One of Knative&apos;s most powerful features is traffic splitting, which allows you to route a percentage of traffic to different revisions. This is perfect for canary deployments, A/B testing, or gradual rollouts.&lt;/p&gt;&lt;p&gt;Modify &lt;strong&gt;&lt;em&gt;whoami.yml&lt;/em&gt;&lt;/strong&gt; to include a traffic splitting configuration:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: whoami
  namespace: default
spec:
  template:
    spec:
      containers:
        - image: traefik/whoami
          ports:
            - containerPort: 80
          env:
            - name: WHOAMI_NAME
              value: &quot;Version 2&quot;
  traffic:
    - tag: v1
      revisionName: whoami-00001
      percent: 75
    - tag: v2
      revisionName: whoami-00002
      percent: 25
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Apply the updated configuration:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;kubectl apply -f whoami.yml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This configuration implements two routing strategies:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Percentage-based routing&lt;/strong&gt;: 75% of traffic goes to revision 1, while 25% goes to revision 2&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Tag-based routing&lt;/strong&gt;: Each revision gets its own dedicated URL using tags&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Test the percentage-based routing by making 10 requests and observe the distribution&lt;/p&gt;&lt;pre&gt;&lt;code&gt;for i in {1..10}; do
  curl -H &quot;Host: whoami.default.example.com&quot; http://localhost
done
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You&apos;ll notice that approximately 75% of responses show &quot;&lt;strong&gt;Serverless with Traefi&lt;/strong&gt;k&quot; (v1) as the service name and 25% show &quot;&lt;strong&gt;Version 2&lt;/strong&gt;&quot; (v2).&lt;/p&gt;&lt;p&gt;You can also access specific revisions directly:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# Access version 1 directly
curl -H &quot;Host: v1-whoami.default.example.com&quot; http://localhost

# Access version 2 directly
curl -H &quot;Host: whoami.default.example.com&quot; http://localhost
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;more-advanced-features&quot;&gt;More Advanced Features&lt;/h2&gt;&lt;p&gt;One of the most powerful aspects of Knative is its automatic revision management. Every time you update your service, Knative creates a new revision, and Traefik seamlessly updates its routing configuration.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Check your revisions:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;kubectl get revisions
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You&apos;ll see the following output:&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/11/Screenshot-2025-11-07-at-6.54.18---PM.png&quot; class=&quot;kg-image&quot; alt=&quot;Knavite revisions output&quot; loading=&quot;lazy&quot; width=&quot;1248&quot; height=&quot;159&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/11/Screenshot-2025-11-07-at-6.54.18---PM.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/11/Screenshot-2025-11-07-at-6.54.18---PM.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/11/Screenshot-2025-11-07-at-6.54.18---PM.png 1248w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Each revision represents a snapshot of your service at a particular point in time. Traefik automatically routes traffic according to the traffic splitting rules you define, handling all the complexity of load balancing and service discovery.&lt;/p&gt;&lt;p&gt;You can also fine-tune Traefik&apos;s Knative provider with additional options:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;experimental:
  knative: true

providers:
  knative:
    enabled: true
    # Watch specific namespaces only
    namespaces:
      - default
      - production
    # Filter by labels
    labelselector: &quot;environment=production&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;See the &lt;a href=&quot;https://doc.traefik.io/traefik/v3.6/reference/install-configuration/providers/kubernetes/knative/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik Knative provider documentation&lt;/u&gt;&lt;/a&gt; for all available configuration options.&lt;/p&gt;&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;&lt;p&gt;With Traefik 3.6&apos;s Knative provider support, we&apos;ve achieved a significant milestone in proxy technology: &lt;strong&gt;a single solution capable of managing traditional workloads, cloud-native containers, and serverless functions&lt;/strong&gt;. This unprecedented versatility eliminates the need for multiple specialized proxies, dramatically simplifying your infrastructure while maintaining the performance and features each workload type demands.&lt;/p&gt;&lt;p&gt;You now have a unified proxy solution that automatically handles service discovery, scaling events, and traffic routing across your entire application landscape. Whether you&apos;re running VMs, Kubernetes deployments, or Knative serverless workloads, Traefik provides consistent, enterprise-grade networking with advanced routing, middleware, and observability features.&lt;/p&gt;&lt;p&gt;Traefik is committed to the Knative ecosystem, and we&apos;re actively working on improving the integration based on community feedback. The Knative provider is currently experimental in Traefik 3.6, with plans to enhance features like additional middleware support and deeper integration with Knative&apos;s advanced routing capabilities.&lt;/p&gt;&lt;h2 id=&quot;useful-links&quot;&gt;Useful Links&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik/v3.6/reference/install-configuration/providers/kubernetes/knative/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik Knative provider documentation&lt;/u&gt;&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik/v3.6/reference/routing-configuration/kubernetes/knative/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik Knative reference documentation&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://knative.dev/docs/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Knative documentation&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://community.traefik.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Join our community forum&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/traefik/traefik?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Contribute on GitHub&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Traefik Proxy 3.6 "Ramequin": Where Every Layer Counts]]></title>
            <description><![CDATA[Traefik Proxy v3.6 adds Knative Serving, multi-layer routing, Gateway API v1.4 support, and much more. See all the new capabilities in this blog post.]]></description>
            <link>https://traefik.io/traefik-proxy-3-6-ramequin</link>
            <guid isPermaLink="true">https://traefik.io/traefik-proxy-3-6-ramequin</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[News]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Mon, 10 Nov 2025 22:01:39 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/11/traefik-3.6-1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Traefik v3.6&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/11/traefik-3.6-1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/11/traefik-3.6-1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/11/traefik-3.6-1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/11/traefik-3.6-1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Traefik Proxy 3.6 has arrived, and like the exquisite &lt;a href=&quot;https://fr.wikipedia.org/wiki/Ramequin_(fromage)?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Ramequin&lt;/u&gt;&lt;/a&gt; cheese 🧀—a rare specialty from France&apos;s Bugey region—this release achieves something unique. With native Knative integration completing the trilogy, Traefik becomes the only proxy capable of seamlessly handling Cloud Native workloads (containers), Traditional workloads (VMs), and Serverless workloads in one unified platform. Revolutionary multi-layer routing solves complex traffic decisions by enriching requests through hierarchical layers, eliminating the painful workarounds teams have endured for years. Combined with the fresh new Gateway API 1.4 support, this makes v3.6 a significant milestone in Traefik’s journey. Let’s taste it!&lt;/p&gt;&lt;h2 id=&quot;unique-features-that-set-new-standards&quot;&gt;Unique Features That Set New Standards&lt;/h2&gt;&lt;h3 id=&quot;multi-layer-routing-the-end-of-workarounds&quot;&gt;Multi-Layer Routing: The End of Workarounds&lt;/h3&gt;&lt;p&gt;The most anticipated feature of this release solves a fundamental challenge in modern cloud-native routing: making routing decisions based on information that doesn&apos;t exist in the original request. Whether you need to authenticate first, then route based on user roles, check feature flags to decide between microservices and monoliths, or route enterprise customers to stable infrastructure while directing free users to staging infrastructure, multi-layer routing transforms complex workarounds into elegant, declarative configuration.&lt;/p&gt;&lt;p&gt;Traditional routing approaches force teams into painful compromises: duplicating authentication logic across every microservice, building separate routing proxies that add latency and complexity, or maintaining giant configuration files that break when requirements change.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Multi-layer routing introduces hierarchical relationships between routers, where parent routers enrich requests with additional context, and child routers make routing decisions based on that enriched information.&lt;/p&gt;&lt;p&gt;The magic lies in progressive request enrichment. Each layer adds context that subsequent layers use for increasingly specific routing decisions. Authentication happens once at the parent level, while routing decisions are made at the child level based on the enriched result—no duplication, no external proxies, no compromises.&lt;/p&gt;&lt;p&gt;Here&apos;s a real-world example: routing API requests to different backends based on customer subscription tier:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;http:
  routers:
    # Root router - matches all API requests and applies auth
    api-parent:
      rule: &quot;Host(`api.example.com`) &amp;amp;&amp;amp; PathPrefix(`/`)&quot;
      middlewares:
        - auth-with-tier
      entryPoints:
        - websecure
      tls: {}
      # No service defined - this is a parent router
    
    # Leaf router - routes enterprise customers to stable
    api-enterprise:
      rule: &quot;HeaderRegexp(`X-Customer-Tier`, `(enterprise|business)`)&quot;
      service: stable-backend
      parentRefs:
        - api-parent
    
    # Leaf router - routes free tier to canary
    api-free:
      rule: &quot;Header(`X-Customer-Tier`, `free`)&quot;
      service: new-version
      parentRefs:
        - api-parent

  middlewares:
    auth-with-tier:
      forwardAuth:
        address: &quot;http://auth-service:8080/validate&quot;
        authResponseHeaders:
          - X-Customer-Tier
          - X-Customer-Id
          - X-User-Email

  services:
    stable-backend:
      loadBalancer:
        servers:
          - url: &quot;http://api-v1-stable:8080&quot;
    new-version:
      loadBalancer:
        servers:
          - url: &quot;http://api-v2-canary:8080&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The hierarchy supports three router types: &lt;strong&gt;Root Routers&lt;/strong&gt; attached to entryPoints that apply shared middleware and define TLS configuration, &lt;strong&gt;Intermediate Routers&lt;/strong&gt; that can have children while inheriting configuration from their root, and &lt;strong&gt;Leaf Routers&lt;/strong&gt; that must define a service and handle the final routing decision. Child routers cannot be called directly—requests must flow through their parent, ensuring you can&apos;t circumvent authentication or other parent-level logic.&lt;/p&gt;&lt;p&gt;This unlocks previously complex patterns like authentication-based routing (where admin and user requests to the same endpoint route to different backends based on role), feature flag-based migrations (routing users to microservices or monoliths based on feature flag evaluation), and sophisticated progressive rollouts where routing decisions depend on customer context, subscription tiers, or experimental configurations. &lt;a href=&quot;https://doc.traefik.io/traefik/master/reference/routing-configuration/http/routing/multi-layer-routing/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Learn more in the documentation&lt;/u&gt;&lt;/a&gt; and in the &lt;a href=&quot;https://traefik.io/blog/multi-layer-routing-in-traefik?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;dedicated blog post&lt;/a&gt;.&lt;/p&gt;&lt;h3 id=&quot;knative-integration-the-universal-proxy-for-any-workload&quot;&gt;Knative Integration: The Universal Proxy for Any Workload&lt;/h3&gt;&lt;p&gt;Traefik v3.6 introduces Knative provider support, achieving a key milestone: Traefik is now the only proxy that can seamlessly operate across Cloud Native workloads (containers), traditional workloads (Virtual Machines), and serverless workloads. This unprecedented versatility makes Traefik a truly unique platform capable of handling any kind of workload your infrastructure demands.&lt;/p&gt;&lt;p&gt;The Knative provider automatically handles service discovery, scaling events, and traffic routing for Knative workloads, providing a unified experience across your entire application landscape. Teams can now use a single proxy solution for their complete infrastructure, dramatically simplifying operations while maintaining the specialized optimizations each workload type requires.&lt;/p&gt;&lt;p&gt;Let’s enable the KNative provider in Traefik first:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;experimental:
  knative: true
providers:
  knative:
    namespaces:
      - &quot;serverless-apps&quot;
      - &quot;production&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The following Service manifest configures the running Traefik controller to handle the incoming traffic.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;---
apiVersion: serving.knative.dev/v1
kind: Service
metadata:
  name: whoami
  namespace: default
spec:
  template:
    spec:
      containers:
        - image: traefik/whoami
          ports:
            - containerPort: 80
          env:
            - name: WHOAMI_NAME
              value: &quot;Knative Test Service&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Once everything is deployed, sending a GET request to the HTTP endpoint should return the following response:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ curl http://whoami.default.example.com

Name: Knative Test Service
...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Special recognition goes to&lt;a href=&quot;https://github.com/idurgakalyan?ref=containous.ghost.io&quot;&gt; &lt;u&gt;idurgakalyan&lt;/u&gt;&lt;/a&gt; for spearheading this innovative integration that completes Traefik&apos;s transformation into the universal proxy for modern infrastructure (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11448?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11448&lt;/u&gt;&lt;/a&gt;). &lt;a href=&quot;https://doc.traefik.io/traefik/v3.6/reference/install-configuration/providers/kubernetes/knative/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Learn more in the documentation&lt;/u&gt;&lt;/a&gt; and in the &lt;a href=&quot;https://traefik.io/blog/scale-serverless-workloads-with-traefik-and-knative?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;dedicated blog post&lt;/a&gt;.&lt;/p&gt;&lt;h3 id=&quot;gateway-api-14-support-leading-the-standards-evolution&quot;&gt;Gateway API 1.4 Support: Leading the Standards Evolution&lt;/h3&gt;&lt;p&gt;Traefik v3.6 embraces the future with full &lt;a href=&quot;https://github.com/kubernetes-sigs/gateway-api/releases/tag/v1.4.0?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Gateway API v1.4&lt;/u&gt;&lt;/a&gt; support, incorporating significant advancements that solidify Kubernetes networking standards. This release brings two major features from the Experimental to the Standard channel, making them production-ready for enterprise deployments.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://gateway-api.sigs.k8s.io/api-types/backendtlspolicy/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;BackendTLSPolicy&lt;/u&gt;&lt;/a&gt; graduates to Standard, enabling secure TLS configuration from Gateway to backend services with production-grade reliability. This critical security feature allows you to enforce end-to-end encryption, ensuring that traffic remains protected even between internal services.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://gateway-api.sigs.k8s.io/geps/gep-2162/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;SupportedFeatures&lt;/u&gt;&lt;/a&gt; status reporting also reaches Standard, providing clear visibility into which Gateway API features your implementation supports. This eliminates guesswork and enables better operational planning by exposing feature compatibility directly through Kubernetes status fields.&lt;/p&gt;&lt;h2 id=&quot;additional-enhancements-that-make-a-difference&quot;&gt;Additional Enhancements That Make a Difference&lt;/h2&gt;&lt;h3 id=&quot;health-checking-evolution&quot;&gt;Health Checking Evolution&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;TCP Health Checks&lt;/strong&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11238?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11238&lt;/u&gt;&lt;/a&gt; by&lt;a href=&quot;https://github.com/ddtmachado?ref=containous.ghost.io&quot;&gt; &lt;u&gt;ddtmachado&lt;/u&gt;&lt;/a&gt;)—Native TCP health checking capabilities for non-HTTP services.&lt;a href=&quot;https://docs.traefik.io/v3.6/routing/services/?ref=containous.ghost.io#health-check&quot;&gt; &lt;u&gt;Learn more&lt;/u&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Passive Health Checks&lt;/strong&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11351?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11351&lt;/u&gt;&lt;/a&gt; by&lt;a href=&quot;https://github.com/Nelwhix?ref=containous.ghost.io&quot;&gt; &lt;u&gt;Nelwhix&lt;/u&gt;&lt;/a&gt;)—Intelligent health monitoring that observes actual traffic patterns to determine service health.&lt;a href=&quot;https://docs.traefik.io/v3.6/routing/services/?ref=containous.ghost.io#passive-health-check&quot;&gt; Here’s the &lt;u&gt;documentation&lt;/u&gt;&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;new-load-balancing-strategies&quot;&gt;New Load Balancing Strategies&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Least Time Strategy&lt;/strong&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12167?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#12167&lt;/u&gt;&lt;/a&gt;)—Route requests to servers with the lowest response times for optimal performance. Learn more in our&lt;a href=&quot;https://docs.traefik.io/v3.6/routing/services/?ref=containous.ghost.io#load-balancing&quot;&gt; &lt;u&gt;configuration guide&lt;/u&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Highest Random Weight Algorithm&lt;/strong&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/9946?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#9946&lt;/u&gt;&lt;/a&gt; by&lt;a href=&quot;https://github.com/mathieuHa?ref=containous.ghost.io&quot;&gt; &lt;u&gt;mathieuHa&lt;/u&gt;&lt;/a&gt;)—Advanced probabilistic load balancing for enhanced traffic distribution. Check out &lt;a href=&quot;https://traefik.io/solutions/mcp-gateway?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik MCP Gateway&lt;/u&gt;&lt;/a&gt;, which already leverages it to handle agent requests more efficiently.&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;provider-enhancements&quot;&gt;Provider Enhancements&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;AWS ECS IPv6 Support&lt;/strong&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12179?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#12179&lt;/u&gt;&lt;/a&gt; by&lt;a href=&quot;https://github.com/wizbit?ref=containous.ghost.io&quot;&gt; &lt;u&gt;wizbit&lt;/u&gt;&lt;/a&gt;)—Full IPv6 compatibility for Amazon ECS deployments.&lt;a href=&quot;https://docs.traefik.io/v3.6/providers/ecs/?ref=containous.ghost.io&quot;&gt; &lt;u&gt;ECS provider docs&lt;/u&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Docker Non-Running Container Discovery&lt;/strong&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/10645?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#10645&lt;/u&gt;&lt;/a&gt; by&lt;a href=&quot;https://github.com/acouvreur?ref=containous.ghost.io&quot;&gt; &lt;u&gt;acouvreur&lt;/u&gt;&lt;/a&gt;)—Enhanced container discovery capabilities for development workflows.&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;kubernetes-integration&quot;&gt;Kubernetes Integration&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;ExternalName Service Support&lt;/strong&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12065?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#12065&lt;/u&gt;&lt;/a&gt; by&lt;a href=&quot;https://github.com/james-callahan?ref=containous.ghost.io&quot;&gt; &lt;u&gt;james-callahan&lt;/u&gt;&lt;/a&gt;)—Publish Kubernetes ExternalName services through Traefik for external service integration.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Highest Random Weight in CRD&lt;/strong&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12061?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#12061&lt;/u&gt;&lt;/a&gt;)—Advanced load balancing options in Kubernetes Custom Resources.&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;security-and-performance&quot;&gt;Security and Performance&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;ACME Certificate Resolver Options&lt;/strong&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11977?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11977&lt;/u&gt;&lt;/a&gt; by&lt;a href=&quot;https://github.com/ldez?ref=containous.ghost.io&quot;&gt; &lt;u&gt;ldez&lt;/u&gt;&lt;/a&gt;)—Enhanced certificate management capabilities with new resolver configurations.&lt;a href=&quot;https://docs.traefik.io/v3.6/https/acme/?ref=containous.ghost.io&quot;&gt; See our &lt;u&gt;ACME documentation&lt;/u&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;HTTP/2 HPACK Table Size Configuration&lt;/strong&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12050?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#12050&lt;/u&gt;&lt;/a&gt; by&lt;a href=&quot;https://github.com/GCHQDeveloper548?ref=containous.ghost.io&quot;&gt; &lt;u&gt;GCHQDeveloper548&lt;/u&gt;&lt;/a&gt;)—Fine-tune HTTP/2 performance with configurable HPACK table sizes.&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;developer-and-user-experience&quot;&gt;Developer and User Experience&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Plugin Syscall Support&lt;/strong&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11939?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11939&lt;/u&gt;&lt;/a&gt; by&lt;a href=&quot;https://github.com/david-garcia-garcia?ref=containous.ghost.io&quot;&gt; &lt;u&gt;david-garcia-garcia&lt;/u&gt;&lt;/a&gt;)—Extended plugin capabilities with syscall support for advanced integrations.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Dashboard Improvements&lt;/strong&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12145?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#12145&lt;/u&gt;&lt;/a&gt; by&lt;a href=&quot;https://github.com/leccelecce?ref=containous.ghost.io&quot;&gt; &lt;u&gt;leccelecce&lt;/u&gt;&lt;/a&gt;)—More compact table layouts for improved dashboard usability.&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;observability&quot;&gt;Observability&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Provider Namespace Logging&lt;/strong&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12002?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#12002&lt;/u&gt;&lt;/a&gt; by&lt;a href=&quot;https://github.com/shreealt?ref=containous.ghost.io&quot;&gt; &lt;u&gt;shreealt&lt;/u&gt;&lt;/a&gt;)—Enhanced visibility during startup for Consul, Consul Catalog, and Nomad providers.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Authentication Middleware Warnings&lt;/strong&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/12085?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#12085&lt;/u&gt;&lt;/a&gt; by&lt;a href=&quot;https://github.com/kianelbo?ref=containous.ghost.io&quot;&gt; &lt;u&gt;kianelbo&lt;/u&gt;&lt;/a&gt;)—Improved security awareness with maxBodySize configuration warnings.&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;the-artisans-behind-every-layer&quot;&gt;The Artisans Behind Every Layer&lt;/h2&gt;&lt;p&gt;Like the careful aging process that creates Ramequin&apos;s distinctive character, Traefik v3.6 is the result of months of dedication from our incredible community. To every developer who opened an issue, every contributor who submitted a pull request, every user who provided feedback—you are the artisans behind Traefik&apos;s continued excellence. Your passion and expertise continue to drive innovation in cloud-native networking and contribute to routing requests to millions of applications and APIs worldwide.&lt;/p&gt;&lt;p&gt;Ready to taste the fresh new Traefik 3.6 &quot;Ramequin&quot;?&lt;/p&gt;&lt;h2 id=&quot;essential-resources-and-next-steps&quot;&gt;Essential Resources and Next Steps&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Download Traefik 3.6&lt;/strong&gt;:&lt;a href=&quot;https://github.com/traefik/traefik/releases/tag/v3.6.0?ref=containous.ghost.io&quot;&gt; &lt;u&gt;GitHub Releases&lt;/u&gt;&lt;/a&gt; |&lt;a href=&quot;https://hub.docker.com/_/traefik?ref=containous.ghost.io&quot;&gt; &lt;u&gt;Docker Hub&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Documentation&lt;/strong&gt;:&lt;a href=&quot;https://docs.traefik.io/?ref=containous.ghost.io&quot;&gt; &lt;u&gt;Complete Documentation&lt;/u&gt;&lt;/a&gt; |&lt;a href=&quot;https://docs.traefik.io/migration/v3/?ref=containous.ghost.io#v360&quot;&gt; &lt;u&gt;Migration Guide&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Community&lt;/strong&gt;:&lt;a href=&quot;https://github.com/traefik/traefik?ref=containous.ghost.io&quot;&gt; &lt;u&gt;GitHub Repository&lt;/u&gt;&lt;/a&gt; |&lt;a href=&quot;https://community.traefik.io/?ref=containous.ghost.io&quot;&gt; &lt;u&gt;Community Forum&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Learn More&lt;/strong&gt;:&lt;a href=&quot;https://traefik.io/traefik/?ref=containous.ghost.io&quot;&gt; &lt;u&gt;Official Website&lt;/u&gt;&lt;/a&gt; |&lt;a href=&quot;https://traefik.io/blog/?ref=containous.ghost.io&quot;&gt; &lt;u&gt;Blog&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[The AI Triple Security Gap: Why Your Gateway Strategy is Already Obsolete]]></title>
            <description><![CDATA[If your security relies solely on API gateways, it's not enough. See why you need a triple layered defense with an AI gateway, MCP gateway, and API gateway.]]></description>
            <link>https://traefik.io/the-triple-ai-security-gap</link>
            <guid isPermaLink="true">https://traefik.io/the-triple-ai-security-gap</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Strategy]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <category><![CDATA[MCP Gateway]]></category>
            <category><![CDATA[API Gateway]]></category>
            <dc:creator><![CDATA[Immánuel Fodor]]></dc:creator>
            <pubDate>Tue, 14 Oct 2025 15:02:02 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/10/Blog_without_copies@2x.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/10/Blog_without_copies@2x.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/10/Blog_without_copies@2x.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/10/Blog_without_copies@2x.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/10/Blog_without_copies@2x.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;mcp-changes-everything-and-most-security-teams-dont-know-it-yet&quot;&gt;&lt;strong&gt;MCP Changes Everything, and Most Security Teams Don&apos;t Know It Yet&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;The enterprise AI landscape just experienced a seismic shift. Anthropic&apos;s Model Context Protocol (MCP) has rapidly become the de facto standard for how AI agents interact with enterprise tools, data sources, and APIs. Within months of its release, MCP achieved what typically takes years: widespread adoption across major agent frameworks and AI development platforms, with thousands of MCP servers now deployed across the ecosystem.&lt;/p&gt;&lt;p&gt;But here&apos;s the problem: &lt;strong&gt;MCP introduces attack surfaces that traditional API security was never designed to handle.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;While security teams focused on securing their APIs, a new threat vector emerged. Malicious instructions hide in prompts, legitimate tools transform into data exfiltration mechanisms overnight, and AI agents can be manipulated into bypassing every security control you&apos;ve carefully implemented.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The uncomfortable truth:&lt;/strong&gt; If your security strategy relies solely on API gateways, you&apos;re protecting the wrong layer.&lt;/p&gt;&lt;h2 id=&quot;your-critical-data-is-now-agent-accessible&quot;&gt;&lt;strong&gt;Your Critical Data is Now Agent-Accessible&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;The MCP ecosystem is expanding at an unprecedented pace across enterprise infrastructure. Within months of release, hundreds of MCP servers have been deployed, with new implementations appearing weekly. Here&apos;s what&apos;s already agent-accessible through verified MCP server implementations:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Databases &amp;amp; Data Stores:&lt;/strong&gt; Oracle DB23ai (official SQLcl MCP server), PostgreSQL, MySQL, MongoDB, SQLite, Redis, InfluxDB, CockroachDB, and other popular database systems&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Data Warehouses &amp;amp; Analytics Platforms:&lt;/strong&gt; Snowflake (official Cortex AI integration from Snowflake-Labs), BigQuery, Databricks, Apache Druid, and modern data platforms&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Cloud &amp;amp; Developer Platforms:&lt;/strong&gt; Salesforce (official DX MCP Server and community implementations), AWS services (CloudTrail, Bedrock, CDK), Supabase, Heroku, Firebase, and Cloudflare Workers&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Collaboration &amp;amp; Communication:&lt;/strong&gt; Google Drive, Slack, GitHub, Linear, Notion, Intercom, and productivity platforms&lt;/p&gt;&lt;p&gt;&lt;strong&gt;File Systems &amp;amp; Storage:&lt;/strong&gt; Local filesystems with configurable access controls, cloud storage services, and document repositories&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Development &amp;amp; DevOps Tools:&lt;/strong&gt; Git repositories, CI/CD pipelines, container platforms, observability systems, and infrastructure-as-code tools&lt;/p&gt;&lt;p&gt;This isn&apos;t some distant future. It&apos;s happening &lt;strong&gt;right now&lt;/strong&gt;. The MCP ecosystem is growing exponentially, with community and official implementations appearing across every category of enterprise software. &lt;strong&gt;Your perimeter security remains essential, but it&apos;s no longer sufficient&lt;/strong&gt; once autonomous agents can chain multiple tools together across different systems before any single control point can see the complete attack.&lt;/p&gt;&lt;h2 id=&quot;the-critical-gap&quot;&gt;&lt;strong&gt;The Critical Gap&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Take database MCP servers as an example: they typically run with their own static database connection credentials, exposing tools that let AI assistants execute queries. The pattern is consistent across implementations. Authorization operates at the database connection level, and whatever the MCP server&apos;s authenticated user can do determines what the agent can do.&lt;/p&gt;&lt;p&gt;That&apos;s true, and it perfectly crystallizes the gap. &lt;strong&gt;Once connected, authorization collapses to the authenticated principal.&lt;/strong&gt; There&apos;s no agent-aware control over specific tools, methods, or parameters before execution, nor any governance over the non-database tools the agent might chain together in the same session.&lt;/p&gt;&lt;p&gt;This pattern repeats across every MCP server type. Database MCP servers inherit database user permissions. Salesforce MCP servers inherit the user&apos;s CRM role and permissions. Cloud platform MCP servers inherit the authenticated user&apos;s access scope. File system MCP servers inherit filesystem permissions. GitHub MCP servers use the personal access token&apos;s full permissions. Slack MCP servers can access any channel the token allows.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-197598720365&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.546875px; margin-top:60px; margin-bottom:60px;&quot; data-hubspot-wrapper-cta-id=&quot;197598720365&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLKYZRMV%2BSGQeA%2BXMwsdMvmM%2BvljE0i6ev3KgE6lFIETyqpB6UUa74GrGBalIsM9UtRXI1E9Z7anJtyxliZI2SrGg4AnkJ8mLEhxRI%2BGgNCNW3bwc49T2Q0Vggr4YFxhZeDEyo%2FB5SuV3ml2Cbe84huKSKiM%2Bm4BgKiJxhrGorCqQ9kBjh%2BWDhPM%2FH0y7o%2BNzgH9BRI4sQ%3D%3D&amp;webInteractiveContentId=197598720365&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;ai promo image&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-197598720365.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;the-attack-scenario-cross-system-data-exfiltration&quot;&gt;&lt;strong&gt;The Attack Scenario: Cross-System Data Exfiltration&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Consider this realistic attack: &lt;strong&gt;&quot;Summarize sensitive customer data and share it externally&quot;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Without proper controls, the attack unfolds across multiple systems. First, the Slack MCP Server reads confidential customer discussions from private channels. Next, the Salesforce MCP Server queries opportunity data with revenue projections. Then the Google Drive MCP Server accesses strategic planning documents. Finally, an HTTP tool posts the consolidated summary to an external webhook. Your competitive intelligence is gone.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Why traditional security fails here:&lt;/strong&gt; The attack chain spans multiple systems (Slack, Salesforce, Google Drive, and external HTTP) that your individual system security controls can&apos;t govern holistically. Each individual access looks legitimate. The &lt;em&gt;combination&lt;/em&gt; is malicious.&lt;/p&gt;&lt;h2 id=&quot;the-triple-gate-pattern-defense-in-depth-for-ai&quot;&gt;&lt;strong&gt;The Triple Gate Pattern: Defense in Depth for AI&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;The cloud-native community learned this lesson with containers: &lt;strong&gt;layered defense beats perimeter security.&lt;/strong&gt; We didn&apos;t secure Kubernetes with a single firewall. We built defense in depth with network policies, pod security standards, RBAC, and admission controllers.&lt;/p&gt;&lt;p&gt;AI agent security demands the same architectural rigor.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/10/Diagram@2x.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Figure: Traefik&apos;s Unified Triple Gate Pattern&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1892&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/10/Diagram@2x.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/10/Diagram@2x.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/10/Diagram@2x.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/10/Diagram@2x.jpg 2104w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Figure: Traefik&apos;s Unified Triple Gate Pattern&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;Each gate enforces policies appropriate to its layer. Unlike single-gateway approaches, attacks must defeat &lt;em&gt;all three gates&lt;/em&gt; simultaneously to succeed, dramatically reducing your attack surface.&lt;/p&gt;&lt;h2 id=&quot;gate-1-ai-gateway-securing-the-conversation&quot;&gt;&lt;strong&gt;Gate 1: AI Gateway (Securing the Conversation)&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;The problem starts at the conversation layer. Attackers don&apos;t need to break your encryption or steal credentials anymore. They just need to convince your AI agent to do their bidding. Traditional security tools can&apos;t help here because they were built for APIs, not conversations with language models.&lt;/p&gt;&lt;p&gt;This is where Traefik fundamentally changes the game. Instead of relying on a single AI security model or vendor, Traefik orchestrates multiple specialized AI models into a unified policy enforcement pipeline. Think of it as having multiple security analysts, each trained to spot different attack patterns, all working in concert.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://doc.traefik.io/traefik-hub/ai-gateway/guides/nvidia-nims-integration?ref=containous.ghost.io#topic-control-nim&quot; rel=&quot;noreferrer&quot;&gt;Topic control models&lt;/a&gt; detect when someone&apos;s trying to extract data or integrate with external systems. &lt;a href=&quot;https://doc.traefik.io/traefik-hub/ai-gateway/guides/nvidia-nims-integration?ref=containous.ghost.io#content-safety-nim&quot; rel=&quot;noreferrer&quot;&gt;Content safety models&lt;/a&gt; identify privacy violations across more than 22 categories of sensitive information. And &lt;a href=&quot;https://doc.traefik.io/traefik-hub/ai-gateway/guides/nvidia-nims-integration?ref=containous.ghost.io#jailbreak-detection-nim&quot; rel=&quot;noreferrer&quot;&gt;jailbreak detection models&lt;/a&gt; catch the sophisticated attempts to bypass your AI&apos;s restrictions, the digital equivalent of social engineering.&lt;/p&gt;&lt;p&gt;The key advantage? Unlike point solutions or cloud-based AI services that force you to send your data elsewhere, Traefik&apos;s entire security pipeline runs in your infrastructure. Deploy GPU-accelerated models like NVIDIA NIMs for maximum performance, integrate your custom classifiers trained on your specific threats, or combine multiple vendors&apos; models. All without changing your architecture. No external API calls putting your data at risk. No vendor lock-in constraining your choices. Just one unified policy layer that adapts to your needs.&lt;/p&gt;&lt;p&gt;This gate blocks prompt injection attacks, jailbreak attempts, PII extraction requests, off-policy conversations, and inappropriate interactions before they ever reach your AI systems.&lt;/p&gt;&lt;h2 id=&quot;gate-2-mcp-gateway-governing-tool-access&quot;&gt;&lt;strong&gt;Gate 2: MCP Gateway (Governing Tool Access)&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;The MCP protocol presents a unique challenge. By design, it delegates all access control to implementers, creating what amounts to a protocol-level security vacuum. The specification is refreshingly honest about this, explicitly stating that &quot;the core protocol lacks standardized permission or sandbox mechanisms.&quot;&lt;/p&gt;&lt;p&gt;This deliberate gap demands a new approach to authorization. Traditional access control models fail spectacularly when applied to AI agents.&lt;/p&gt;&lt;h3 id=&quot;why-traditional-access-control-fails-for-ai-agents&quot;&gt;&lt;strong&gt;Why Traditional Access Control Fails for AI Agents&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Consider RBAC: agents don&apos;t have job titles or departments. When an agent inherits a &quot;sales manager&quot; role in Salesforce, it suddenly has access to all opportunities, all forecasts, and all customer data across the entire organization. That&apos;s absurd when all it needs to do is send follow-up emails to customers who haven&apos;t responded in 30 days.&lt;/p&gt;&lt;p&gt;ABAC seems better at first, since you can add context like time and location. But as you add more attributes, the complexity explodes exponentially. Try managing attribute combinations for hundreds of autonomous agents accessing dozens of different systems, each with their own attribute schemas. It quickly becomes an opaque mess that no one can audit or understand.&lt;/p&gt;&lt;p&gt;Delegation and impersonation make things even worse. When an agent impersonates a user across Salesforce, Google Drive, and Slack simultaneously, tracking who&apos;s responsible for what becomes nearly impossible. The audit trail &lt;/p&gt;&lt;p&gt;turns into fiction, and agents routinely gain access far beyond what any single task requires.&lt;/p&gt;&lt;p&gt;The fundamental issue is that these models were designed for human users with relatively stable, role-based permissions. They assume someone clocks in at 9 AM with a fixed set of responsibilities. AI agents need different access across different systems for different workflows, often changing by the minute.&lt;/p&gt;&lt;h3 id=&quot;how-tbac-works-three-dimensions-of-control&quot;&gt;&lt;strong&gt;How TBAC Works: Three Dimensions of Control&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;This is why we developed Task-Based Access Control (TBAC), a new authorization paradigm that focuses on the work being done rather than the identity doing it. TBAC creates a progressive permission funnel through three dimensions:&lt;/p&gt;&lt;ol&gt;
&lt;li&gt;
&lt;p&gt;📋 &lt;strong&gt;Tasks&lt;/strong&gt; (High-level business objectives): Tasks represent business-level goals and intent like &lt;code&gt;customer_followup, generate_sales_report, or resolve_support_ticket&lt;/code&gt;. This is the coarsest filter and your first gate. Before considering which systems the agent can access, you validate that the agent is authorized to perform this type of business work at all. An agent without the &lt;code&gt;financial_reporting&lt;/code&gt; task can&apos;t even begin to access financial systems, regardless of what specific tools it might need.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;🔧 &lt;strong&gt;Tools&lt;/strong&gt; (System and resource access): Tools control which specific MCP servers and their exposed resources the agent can access. Even if an agent is authorized for the &lt;code&gt;customer_followup&lt;/code&gt; task, it doesn&apos;t get blanket access to all systems. Instead, it receives precisely scoped access to specific MCP servers (&lt;code&gt;salesforce_crm&lt;/code&gt;, &lt;code&gt;email_service&lt;/code&gt;) and their individual tools/methods (&lt;code&gt;query_opportunities&lt;/code&gt;, &lt;code&gt;send_email&lt;/code&gt;). Your customer follow-up agent might need Salesforce&apos;s opportunity queries and email capabilities, but has no business accessing the &lt;code&gt;export_all_data&lt;/code&gt; tool or your &lt;code&gt;google_drive&lt;/code&gt; server with financial documents.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;
&lt;p&gt;💰 &lt;strong&gt;Transactions&lt;/strong&gt; (Granular runtime controls): This finest-grained layer validates the specific parameters and context of each operation. It&apos;s not just &quot;can this agent query Salesforce opportunities&quot; but &quot;can it query opportunities &lt;em&gt;with these specific filters at this time from this location?&lt;/em&gt;&quot; Transactions act as runtime guardrails, preventing dangerous operations even when the agent has legitimate access to the tool. They block queries without filters, updates to protected fields, or operations that could exfiltrate large datasets.&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;# An example JWT schema
{
  &quot;sub&quot;: &quot;&amp;lt;target agent&amp;gt;&quot;,
  &quot;tasks&quot;: [&quot;&amp;lt;list of tasks&amp;gt;&quot;],
  &quot;tools&quot;: {
    &quot;&amp;lt;mcp server&amp;gt;&quot;: {
      &quot;actions&quot;: [&quot;&amp;lt;action names&amp;gt;&quot;],
      &quot;filters&quot;: { &amp;lt;additional transaction filters&amp;gt; }
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;These three dimensions work as a progressive permission funnel. First, validate the business objective (task). If authorized, validate which systems and specific tools can be accessed (tools). Finally, validate the specific operation parameters and context (transactions). Each layer further constrains what the agent can do, ensuring minimum necessary permissions across all enterprise systems.&lt;/p&gt;&lt;h3 id=&quot;the-innovation-dynamic-variable-substitution&quot;&gt;&lt;strong&gt;The Innovation: Dynamic Variable Substitution&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Here&apos;s where traditional policy systems break down completely. Want to give agent-123 access to Salesforce? You write a policy. Does it also need Google Drive? Another policy. Add agent-456 with different permissions? More policies. Scale this to hundreds of agents accessing dozens of systems, and you&apos;re drowning in thousands of policy rules that become impossible to maintain or audit.&lt;/p&gt;&lt;p&gt;Traefik flips this entire model through &lt;a href=&quot;https://doc.traefik.io/traefik-hub/mcp-gateway/guides/understanding-tbac?ref=containous.ghost.io#variable-substitution-making-tbac-scalable&quot;&gt;JWT claim and MCP parameter substitution&lt;/a&gt;: &lt;code&gt;${jwt.claim_name}&lt;/code&gt; and &lt;code&gt;${mcp.parameter_name}&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Now one policy works for every agent:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;policies:
  # Task-level authorization
  - match: &quot;Contains(`jwt.tasks`, `${mcp.params.task}`)&quot;
    action: allow
  
  # Tool-level authorization
  - match: &quot;Contains(`jwt.allowed_tools`, `${mcp.params.name}`)&quot;
    action: allow
  
  # Transaction-level constraints
  - match: |
      Equals(`mcp.params.name`, `query_opportunities`) &amp;amp;&amp;amp;
      Contains(`jwt.tools.salesforce_crm.allowed_fields`,         `${mcp.params.field}`)
    action: allow
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The same policy line works for every agent. Their specific permissions come from their JWT token issued by your existing identity provider or any OAuth compliant provider like Okta, Azure AD, Auth0, Keycloak, etc. No more policy explosion. No more maintenance nightmare.&lt;/p&gt;&lt;h3 id=&quot;real-world-example-customer-follow-up-campaign&quot;&gt;&lt;strong&gt;Real-World Example: Customer Follow-Up Campaign&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Let&apos;s see how this works in practice. A sales agent needs to query recent opportunities in Salesforce, draft follow-up emails based on templates in Google Drive, and log activities back to Salesforce. Nothing else.&lt;/p&gt;&lt;p&gt;The JWT token structure defines exactly what this agent can do:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;{
  &quot;sub&quot;: &quot;agent:sales-followup-bot&quot;,
  &quot;tasks&quot;: [&quot;customer_followup&quot;],
  &quot;tools&quot;: {
    &quot;salesforce_crm&quot;: {
      &quot;actions&quot;: [&quot;query_opportunities&quot;, &quot;create_activity&quot;],
      &quot;filters&quot;: {&quot;status&quot;: &quot;Open&quot;, &quot;days_since_contact&quot;: &quot;&amp;gt;30&quot;}
    },
    &quot;google_drive&quot;: {
      &quot;actions&quot;: [&quot;read_file&quot;],
      &quot;allowed_folders&quot;: [&quot;email_templates&quot;]
    },
    &quot;email_service&quot;: {
      &quot;actions&quot;: [&quot;send&quot;],
      &quot;allowed_domains&quot;: [&quot;customer.com&quot;, &quot;prospect.com&quot;]
    }
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The JWT token acts like a security badge that precisely defines what the sales agent can do. The tasks field authorizes only customer follow-up work (not financial reporting or other business functions). The tools section grants access to specific systems and their methods: Salesforce access is limited to querying open opportunities inactive for 30+ days and logging activities. Google Drive access is restricted to reading only the email templates folder, not financial documents. Email capabilities are constrained to sending messages only to customer domains, not internal addresses. Each nested level further restricts permissions, creating an airtight scope for this specific workflow.&lt;/p&gt;&lt;p&gt;The result? The agent completes its workflow with precisely scoped permissions across all three systems. If compromised, it cannot access closed deals or sensitive forecast data in Salesforce. It cannot read financial planning documents in Google Drive. It cannot send emails to internal company addresses. And it cannot access Slack, databases, or any other MCP servers.&lt;/p&gt;&lt;h3 id=&quot;gitops-governance-layer&quot;&gt;&lt;strong&gt;GitOps Governance Layer&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Beyond runtime enforcement, every MCP server undergoes human validation before deployment. Tool definitions are stored in Git, requiring approval before reaching production. Change detection alerts trigger when tool behavior deviates from the approved baseline. And a complete audit trail tracks who approved what, when.&lt;/p&gt;&lt;p&gt;This blocks tool poisoning attacks (malicious instructions in descriptions), rug pull attacks (tools that transform after approval), tool shadowing (malicious tools with identical names), privilege escalation, cross-system data aggregation attacks, and configuration drift.&lt;/p&gt;&lt;h2 id=&quot;gate-3-api-gateway-protecting-the-backend&quot;&gt;&lt;strong&gt;Gate 3: API Gateway (Protecting the Backend)&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Even with Gates 1 and 2 in place, MCP servers eventually call your backend APIs, databases, cloud services, and enterprise systems. These underlying services need their own layer of protection.&lt;/p&gt;&lt;p&gt;Traefik&apos;s battle-tested API management capabilities provide this final defensive layer. Centralized credentials management automatically injects service credentials, rotates tokens, and manages authentication to backend APIs without exposing secrets to MCP servers. Fine-grained API authorization ensures agents can only invoke authorized endpoints. Distributed rate limiting protects backend services from overwhelming request volumes with intelligent throttling across your infrastructure.&lt;/p&gt;&lt;p&gt;API plans and subscriptions define consumption quotas and access tiers for different agent types, preventing resource exhaustion. Operation filtering exposes only specific API operations to agents, hiding sensitive or administrative endpoints. TLS/mTLS prevents man-in-the-middle attacks with encrypted transport and mutual authentication. Input validation sanitizes requests before they reach vulnerable servers. And DLP-style inspection detects sensitive data patterns in responses before they leave your infrastructure.&lt;/p&gt;&lt;p&gt;This comprehensive protection blocks network-level attacks, API abuse and resource exhaustion, unauthorized endpoint access, command injection attempts, SSRF attacks, credential theft and token leakage, and traditional API vulnerabilities.&lt;/p&gt;&lt;h2 id=&quot;how-the-triple-gate-stops-the-attack&quot;&gt;&lt;strong&gt;How the Triple Gate Stops the Attack&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Let&apos;s return to our cross-system exfiltration scenario and trace exactly how each gate responds to the threat: &quot;Summarize sensitive customer data and share it externally.&quot;&lt;/p&gt;&lt;p&gt;The first line of defense activates at the AI Gateway. The topic control model immediately recognizes the dangerous pattern: data extraction combined with external sharing targeting sensitive information. Before the request even reaches your AI model, it&apos;s blocked with a 403 Forbidden response.&lt;/p&gt;&lt;p&gt;But sophisticated attackers don&apos;t give up that easily. They&apos;ll try to obfuscate their intent, perhaps breaking the request into seemingly innocent pieces. That&apos;s when the content safety model steps in, trained to identify privacy violations even when they&apos;re cleverly disguised. And if that fails? The jailbreak detection model catches the manipulation attempt, recognizing the linguistic patterns that indicate someone&apos;s trying to bypass restrictions.&lt;/p&gt;&lt;p&gt;Even if an attacker somehow slips past all three AI-level defenses (perhaps through a zero-day prompt injection technique), they hit the MCP Gateway&apos;s TBAC enforcement. Now they face a completely different challenge. The agent&apos;s token only authorizes customer_followup tasks, not data aggregation. Its tool allowlist explicitly excludes access to Google Drive&apos;s strategic documents. The Salesforce query filters prevent any access to sensitive forecast data. HTTP tool calls to external domains are blocked entirely. And cross-system data correlation? Impossible with the scoped permissions.&lt;/p&gt;&lt;p&gt;Should the impossible happen and the attack penetrates both previous layers, the API Gateway provides the final line of defense. Rate limiting algorithms detect the unusual data access patterns. Why is this agent suddenly reading hundreds of customer records? DLP inspection identifies sensitive data patterns in the aggregated responses, blocking them before they can leave your infrastructure. And egress controls ensure that even if everything else fails, that external webhook destination remains unreachable.&lt;/p&gt;&lt;p&gt;Five independent security layers, each operating on different principles, each capable of stopping the attack on its own. That&apos;s defense in depth.&lt;/p&gt;&lt;h2 id=&quot;threat-coverage-at-a-glance&quot;&gt;Threat Coverage at a Glance&lt;/h2&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;table&gt;
&lt;thead&gt;
  &lt;tr&gt;
    &lt;th style=&quot;text-align:left; width:25%;&quot;&gt;Attack Vector&lt;/th&gt;
    &lt;th style=&quot;text-align:left&quot;&gt;Without Triple Gate&lt;/th&gt;
    &lt;th style=&quot;text-align:left&quot;&gt;With Triple Gate&lt;/th&gt;
  &lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
  &lt;tr&gt;
    &lt;td style=&quot;text-align:left; width:25%;&quot;&gt;&lt;strong&gt;Prompt Injection&lt;/strong&gt;&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;❌ Undetected&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;✅ Blocked (AI Gateway)&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td style=&quot;text-align:left; width:25%;&quot;&gt;&lt;strong&gt;Tool Poisoning&lt;/strong&gt;&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;❌ Executes&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;✅ Blocked (AI Gateway + GitOps)&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td style=&quot;text-align:left; width:25%;&quot;&gt;&lt;strong&gt;Cross-System Data Exfiltration&lt;/strong&gt;&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;❌ Succeeds&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;✅ Blocked (All Three Gates)&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td style=&quot;text-align:left; width:25%;&quot;&gt;&lt;strong&gt;Rug Pull Attacks&lt;/strong&gt;&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;❌ Transforms unnoticed&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;✅ Detected (Change Alerts)&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td style=&quot;text-align:left; width:25%;&quot;&gt;&lt;strong&gt;Tool Shadowing&lt;/strong&gt;&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;❌ Hijacks requests&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;✅ Prevented (Namespacing)&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td style=&quot;text-align:left; width:25%;&quot;&gt;&lt;strong&gt;Privilege Escalation&lt;/strong&gt;&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;❌ Full access&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;✅ Blocked (TBAC)&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td style=&quot;text-align:left; width:25%;&quot;&gt;&lt;strong&gt;External Data Sharing&lt;/strong&gt;&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;❌ Posts externally&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;✅ Blocked (MCP Gateway)&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td style=&quot;text-align:left; width:25%;&quot;&gt;&lt;strong&gt;API Abuse &amp; Resource Exhaustion&lt;/strong&gt;&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;❌ Overwhelms backends&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;✅ Blocked (Rate Limiting + Quotas)&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td style=&quot;text-align:left; width:25%;&quot;&gt;&lt;strong&gt;Unauthorized Endpoint Access&lt;/strong&gt;&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;❌ Accesses admin APIs&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;✅ Blocked (Operation Filtering)&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td style=&quot;text-align:left; width:25%;&quot;&gt;&lt;strong&gt;Credential Theft&lt;/strong&gt;&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;❌ Exposes secrets&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;✅ Prevented (Upstream Auth)&lt;/td&gt;
  &lt;/tr&gt;
    &lt;tr&gt;
    &lt;td style=&quot;text-align:left; width:25%;&quot;&gt;&lt;strong&gt;MITM Attacks&lt;/strong&gt;&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;❌ Intercepts traffic&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;✅ Blocked (TLS/mTLS)&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;why-one-unified-platform-matters&quot;&gt;&lt;strong&gt;Why One Unified Platform Matters&lt;/strong&gt;&lt;/h2&gt;&lt;h3 id=&quot;the-problem-with-fragmented-tools&quot;&gt;&lt;strong&gt;The Problem with Fragmented Tools&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Deploying standalone AI security, MCP governance, and API gateway tools creates operational nightmares that compound over time.&lt;/p&gt;&lt;p&gt;Attack chains span multiple systems. When an attack moves from Salesforce to Google Drive to Slack to an external webhook, you&apos;re correlating logs from three different security products across different formats and timelines. By the time you piece together what happened, the damage is done.&lt;/p&gt;&lt;p&gt;Policy conflicts become inevitable. The AI gateway allows a request, the MCP gateway blocks it, but the API gateway allows it again. Who wins? How do you debug this? Which team owns the resolution?&lt;/p&gt;&lt;p&gt;Configuration drift accelerates with every product you add. Three products mean three configuration languages, three deployment pipelines, and three teams managing different policies. What starts as minor inconsistencies becomes major security gaps.&lt;/p&gt;&lt;p&gt;The blind spots between products become unmonitored attack surfaces. Each vendor assumes the others are handling certain threats. Attackers exploit these assumptions.&lt;/p&gt;&lt;p&gt;And the cost explosion is real: three vendors, three contracts, three support organizations, three renewal cycles, three sets of professional services. Your security budget triples while your actual security posture deteriorates.&lt;/p&gt;&lt;h3 id=&quot;the-traefik-advantage-one-platform-one-binary-three-gates&quot;&gt;&lt;strong&gt;The Traefik Advantage: One Platform. One Binary. Three Gates.&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Traefik delivers protocol-level MCP protection that addresses the security gap inherent in MCP&apos;s design with native TBAC enforcement across all MCP server types. True AI sovereignty means NVIDIA NIMs run entirely in your infrastructure. No external API calls. No vendor lock-in.&lt;/p&gt;&lt;p&gt;The platform works with your existing infrastructure, integrating seamlessly with your OAuth-compliant IdP (Okta, Azure AD, Auth0, Keycloak, etc), deployment patterns (Kubernetes, Docker, VMs), and monitoring tools. Production performance is guaranteed through sub-millisecond authorization using stateless JWT validation. No database queries, no external calls.&lt;/p&gt;&lt;p&gt;Unified observability lets you correlate attack chains across databases, file systems, CRMs, and communication platforms in a single platform. And this isn&apos;t theoretical. Traefik is battle-tested at scale, trusted by millions of deployments worldwide, proven in production environments.&lt;/p&gt;&lt;p&gt;Of course, no security solution is perfect. Traefik cannot fix vulnerable server code or prevent command injection vulnerabilities in poorly written MCP server implementations, though it provides comprehensive logging and behavioral monitoring to mitigate risks. It cannot secure vulnerable clients or fix security flaws in client-side implementations, but enforces policies regardless of client behavior. It cannot prevent sandbox escapes or stop runtime containment breakouts in underlying infrastructure, though TBAC limits the blast radius. And it cannot replace secure coding practices. Developers must still write secure MCP servers following security best practices.&lt;/p&gt;&lt;p&gt;What this means is that Traefik provides comprehensive protection for protocol-level and infrastructure-level threats across your entire MCP ecosystem. This covers the vast majority of real-world attack vectors. The remaining gaps require secure development practices and infrastructure hardening that no gateway can replace.&lt;/p&gt;&lt;h2 id=&quot;the-bottom-line&quot;&gt;&lt;strong&gt;The Bottom Line&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;MCP adoption is accelerating faster than security teams can respond. Developers are deploying AI agents with access to Salesforce, Google Drive, Slack, databases, and dozens of other critical systems, often without security review.&lt;/p&gt;&lt;p&gt;The question isn&apos;t whether your organization will adopt MCP-based agents. &lt;strong&gt;The question is whether you&apos;ll secure them before or after a breach.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The cloud-native community learned security lessons through painful incidents. Apply those lessons to AI agents before your organization becomes the cautionary tale.&lt;/p&gt;&lt;h2 id=&quot;next-steps&quot;&gt;&lt;strong&gt;Next Steps&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Traefik Labs has pioneered the Triple Gate Pattern, the industry&apos;s most unified and declarative runtime platform that delivers enterprise-grade AI security without operational fragmentation.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Ready to Secure Your Agentic Enterprise?&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Download the Complete Implementation Guide&lt;/strong&gt; - Detailed technical documentation with code examples, configuration samples, deployment patterns, and testing procedures&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Schedule a Technical Briefing&lt;/strong&gt; - See the Triple Gate Pattern in action with your MCP architecture and threat scenarios&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Request a Security Assessment&lt;/strong&gt; - We&apos;ll analyze your MCP exposure and map TBAC policies to your agent workflows&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;&lt;strong&gt;Secure your agentic enterprise with Traefik&apos;s Triple Gate Pattern—available today, proven in production, ready to scale.&lt;/strong&gt;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-197598720365&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.546875px; margin-top:60px; margin-bottom:60px;&quot; data-hubspot-wrapper-cta-id=&quot;197598720365&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLKYZRMV%2BSGQeA%2BXMwsdMvmM%2BvljE0i6ev3KgE6lFIETyqpB6UUa74GrGBalIsM9UtRXI1E9Z7anJtyxliZI2SrGg4AnkJ8mLEhxRI%2BGgNCNW3bwc49T2Q0Vggr4YFxhZeDEyo%2FB5SuV3ml2Cbe84huKSKiM%2Bm4BgKiJxhrGorCqQ9kBjh%2BWDhPM%2FH0y7o%2BNzgH9BRI4sQ%3D%3D&amp;webInteractiveContentId=197598720365&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;ai promo image&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-197598720365.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Nutanix + Traefik Labs: Modern Application Intelligence for Distributed Hybrid Infrastructure]]></title>
            <description><![CDATA[Migrating from VMware to Nutanix? Don't rebuild your app delivery stack. Our validated Traefik integration extends Nutanix simplicity to L7 services like WAF and API gateways, completing your modern infrastructure.
]]></description>
            <link>https://traefik.io/nutanix-traefik-labs-modern-application-intelligence-for-distributed-hybrid-infrastructure</link>
            <guid isPermaLink="true">https://traefik.io/nutanix-traefik-labs-modern-application-intelligence-for-distributed-hybrid-infrastructure</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[News]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[Kubernetes]]></category>
            <dc:creator><![CDATA[Sudeep Goswami]]></dc:creator>
            <pubDate>Tue, 30 Sep 2025 15:33:29 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/09/Blog_without_copies@2x.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Traefik and Nutanix Application Intelligence Layer&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/09/Blog_without_copies@2x.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/09/Blog_without_copies@2x.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/09/Blog_without_copies@2x.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/09/Blog_without_copies@2x.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;enterprise-infrastructure-has-evolved-application-delivery-must-follow&quot;&gt;&lt;br&gt;Enterprise Infrastructure Has Evolved, Application Delivery Must Follow&lt;/h2&gt;&lt;p&gt;Recent analyst reports from Gartner and Forrester reveal a fundamental shift in enterprise infrastructure: container orchestration has matured, multicloud adoption is accelerating, and distributed hybrid infrastructure (DHI) is exploding from 15% to 55% of enterprises by 2028. &lt;a href=&quot;https://www.nutanix.com/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Nutanix&lt;/a&gt; has led this transformation and been named a Leader in Gartner&apos;s Magic Quadrant for Distributed Hybrid Infrastructure (DHI), delivering unified infrastructure that works consistently across any environment.&lt;/p&gt;&lt;p&gt;Yet even as Nutanix customers achieve infrastructure excellence, they face a broader industry challenge: fragmented Layer 7 application delivery capabilities. While Nutanix Flow Virtual Networking (FVN) provides robust L2-L4 capabilities and network security, enterprises also require advanced L7 services. These include  identity-aware routing and load balancing, API gateways, WAF protection, and AI governance. Traditionally, these capabilities required separate, expensive point solutions from multiple vendors.&lt;/p&gt;&lt;p&gt;The VMware licensing disruption has accelerated migration to Nutanix AHV, and these customers bring established application delivery requirements. Rather than force customers to assemble disparate tools, Nutanix partnered with Traefik Labs to deliver a validated, integrated solution that extends Nutanix&apos;s infrastructure excellence into comprehensive application intelligence. This partnership reflects Nutanix&apos;s strategic approach: provide best-of-breed capabilities through validated integrations rather than forcing customers into monolithic stacks.&lt;/p&gt;&lt;p&gt;The hybrid reality persists: virtual machines and containers will coexist for years, AI workloads demand enterprise sovereignty and governance, and edge deployments require consistent policies without constant connectivity. Organizations need unified application delivery that spans compute substrates, eliminates tool sprawl, and enables safe modernization. All of this must be delivered through the operational simplicity that Nutanix customers expect.&lt;/p&gt;&lt;h2 id=&quot;modern-application-intelligence-layer-extending-nutanix-infrastructure-excellence&quot;&gt;Modern Application Intelligence Layer: Extending Nutanix Infrastructure Excellence&lt;/h2&gt;&lt;p&gt;The &lt;a href=&quot;https://traefik.io/blog/the-application-intelligence-layer-beyond-infrastructure-to-intelligent-applications-everywhere?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Application Intelligence Layer (AIL)&lt;/a&gt; transforms fragmented application delivery into a unified, portable control fabric that works consistently across any infrastructure. Unlike point solutions that solve individual problems, AIL provides comprehensive application-aware capabilities that travel with workloads regardless of where they run or how they&apos;re packaged.&lt;/p&gt;&lt;p&gt;Through native integration with Nutanix AHV and NKP, Traefik Labs extends infrastructure capabilities into modern intelligent application delivery. The cloud-native platform combines identity-aware routing, comprehensive security, policy-driven governance, end-to-end observability, and AI runtime policy management—while leveraging the power of familiar Nutanix constructs like Prism Central, Flow networking, and category-based policies.&lt;/p&gt;&lt;p&gt;This Nutanix Ready validated integration eliminates the complexity of managing separate tools for different compute substrates while providing the enterprise-grade Layer 7 services that modern applications demand. Organizations can safely modernize legacy VM-based applications alongside new containerized services, leveraging Nutanix&apos;s unified management approach with Traefik providing seamless application-layer intelligence on top.&lt;/p&gt;&lt;p&gt;The result is infrastructure that doesn&apos;t just run applications. It makes them intelligent, resilient, and governed across every environment, from edge deployments to sovereign clouds, all while maintaining the operational simplicity that defines the Nutanix experience.&lt;/p&gt;&lt;h2 id=&quot;business-value&quot;&gt;Business Value&lt;/h2&gt;&lt;p&gt;For organizations migrating from VMware to Nutanix, the Traefik integration completes the infrastructure story. Rather than assembling separate tools for application delivery, customers gain enterprise-grade Layer 7 services as a natural extension of Nutanix&apos;s unified platform approach. This eliminates the tool proliferation that VMware customers historically managed through separate products and vendors.&lt;/p&gt;&lt;p&gt;The integration strengthens Nutanix&apos;s value proposition by providing:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Complete stack consistency:&lt;/strong&gt; Customers manage application delivery through familiar Nutanix constructs (Prism Central, Flow networking, categories)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Faster time-to-value:&lt;/strong&gt; Pre-validated Nutanix Ready integration reduces deployment risk and accelerates production readiness&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Unified operations:&lt;/strong&gt; Same infrastructure-as-code approach (&lt;a href=&quot;https://www.hashicorp.com/en/products/terraform?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Terraform&lt;/a&gt;, Ansible) across compute and application layers&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Future-proof architecture:&lt;/strong&gt; Built-in AI governance capabilities position customers for emerging requirements&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Engineering productivity increases dramatically as teams leverage Nutanix&apos;s unified management while gaining advanced application services. Rather than managing separate tools from different vendors, organizations extend their existing Nutanix investment to cover comprehensive application delivery requirements. AI sovereignty becomes achievable through complete governance pipelines deployed entirely within Nutanix infrastructure. This includes content safety, agent control, and more, without external dependencies that compromise data security or regulatory compliance.&lt;/p&gt;&lt;h2 id=&quot;key-use-cases&quot;&gt;Key Use Cases&lt;/h2&gt;&lt;p&gt;The integration addresses five critical scenarios where Nutanix infrastructure excellence extends naturally into application delivery:&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;table&gt;
&lt;thead&gt;
  &lt;tr&gt;
    &lt;th style=&quot;text-align:left; width:25%;&quot;&gt;Use Case&lt;/th&gt;
    &lt;th style=&quot;text-align:left&quot;&gt;Solution&lt;/th&gt;
    &lt;th style=&quot;text-align:left&quot;&gt;Benefits&lt;/th&gt;
  &lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
  &lt;tr&gt;
    &lt;td style=&quot;text-align:left; width:25%;&quot;&gt;&lt;strong&gt;VMware Migration&lt;/strong&gt;&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;Nutanix Ready validated AHV integration with enterprise Layer 7 services&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;Complete infrastructure and application delivery story. Validated, supported solution reduces deployment risk. Faster migration with proven integration patterns.&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td style=&quot;text-align:left; width:25%;&quot;&gt;&lt;strong&gt;Hybrid Modernization&lt;/strong&gt;&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;Unified policies across VM and container workloads on Nutanix&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;Safe incremental modernization without business disruption. Consistent security across all Nutanix compute substrates. Bridge legacy and modern apps seamlessly.&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td style=&quot;text-align:left; width:25%;&quot;&gt;&lt;strong&gt;Tool Consolidation&lt;/strong&gt;&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;Single integrated platform for WAF, load balancing, API gateway, AI gateway, observability&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;Eliminate expensive vendor sprawl and licensing costs. Reduce operational complexity and training overhead. Extend Nutanix simplicity to application layer.&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td style=&quot;text-align:left; width:25%;&quot;&gt;&lt;strong&gt;AI Sovereignty&lt;/strong&gt;&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;Safe and Responsible AI governance pipelines with NVIDIA NIMs &lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;Deploy AI safely in regulated industries and air-gapped environments. Maintain complete data sovereignty on Nutanix platforms. Enterprise-controlled AI without external cloud dependencies.&lt;/td&gt;
  &lt;/tr&gt;
  &lt;tr&gt;
    &lt;td style=&quot;text-align:left; width:25%;&quot;&gt;&lt;strong&gt;Deploy Anywhere&lt;/strong&gt;&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;Consistent operation across all Nutanix deployment models&lt;/td&gt;
    &lt;td style=&quot;text-align:left&quot;&gt;Works across edge, Nutanix Cloud Clusters, private cloud, air-gapped environments. Complete operational independence from external systems. Compliance-ready evidence for regulatory audits.&lt;/td&gt;
  &lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h3 id=&quot;vmware-migrations&quot;&gt;VMware Migrations&lt;/h3&gt;&lt;p&gt;Organizations moving to Nutanix AHV gain not just infrastructure replacement, but infrastructure advancement. The Nutanix Ready validated integration with Traefik delivers enterprise Layer 7 services that integrate seamlessly with Flow Virtual Networking. This provides capabilities that match or exceed what VMware customers assembled from multiple vendors, but with Nutanix operational simplicity.&lt;/p&gt;&lt;h3 id=&quot;nutanix-customer-modernization&quot;&gt;Nutanix Customer Modernization&lt;/h3&gt;&lt;p&gt;Nutanix has always excelled at hybrid infrastructure. This integration extends that excellence into application delivery, providing unified policies across AHV virtual machines and NKP containers. Organizations modernize safely using the same Nutanix management constructs they trust: Prism Central, Flow networking, and category-based policy. They gain sophisticated application-layer intelligence in the process.&lt;/p&gt;&lt;h3 id=&quot;strategic-infrastructure&quot;&gt;Strategic Infrastructure&lt;/h3&gt;&lt;p&gt;Nutanix customers who standardized on Nutanix for its operational simplicity and vendor-neutral approach now have a matching application delivery solution. Nutanix infrastructure excellence combines with best-of-breed application intelligence, without vendor lock-in or operational complexity.&lt;/p&gt;&lt;h3 id=&quot;regulated-industries&quot;&gt;Regulated Industries&lt;/h3&gt;&lt;p&gt;Nutanix&apos;s strength in sovereign cloud deployments extends to application delivery. The Traefik integration operates entirely within customer-controlled Nutanix infrastructure. This supports the air-gapped and compliance-focused deployments where Nutanix excels: defense, healthcare, financial services, and government organizations that cannot accept external dependencies.&lt;/p&gt;&lt;h3 id=&quot;global-operations&quot;&gt;Global Operations&lt;/h3&gt;&lt;p&gt;Nutanix infrastructure spans edge to cloud. This includes retail locations, data centers, and Nutanix Cloud Clusters on AWS and Azure. The Traefik integration extends consistently across this entire footprint, providing the same application intelligence whether workloads run in the core data center, at remote edge sites, or in public cloud extensions of Nutanix infrastructure.&lt;/p&gt;&lt;h2 id=&quot;technical-solution&quot;&gt;Technical Solution&lt;/h2&gt;&lt;h3 id=&quot;technical-architecture-and-implementation&quot;&gt;&lt;br&gt;Technical Architecture and Implementation&lt;/h3&gt;&lt;p&gt;The Traefik-Nutanix integration delivers a comprehensive Application Intelligence Layer across both Nutanix AHV virtual machines and Nutanix Kubernetes Platform (NKP), creating a unified control plane that extends Nutanix&apos;s infrastructure management philosophy to the application layer.&lt;br&gt;&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/09/Nutanix-AHV-and-Traefik-1.png&quot; class=&quot;kg-image&quot; alt=&quot;High-Level Architecture Diagram: Modern Application Intelligence for AHV and NKP&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;884&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/09/Nutanix-AHV-and-Traefik-1.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/09/Nutanix-AHV-and-Traefik-1.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/09/Nutanix-AHV-and-Traefik-1.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2025/09/Nutanix-AHV-and-Traefik-1.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;b&gt;&lt;strong style=&quot;white-space: pre-wrap;&quot;&gt;High-Level Architecture: Modern Application Intelligence for AHV and NKP&lt;/strong&gt;&lt;/b&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;h3 id=&quot;native-integration-with-nutanix-infrastructure&quot;&gt;Native Integration with Nutanix Infrastructure&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Flow Virtual Networking (FVN) Integration:&lt;/strong&gt; The platform provides proven integration across Flow Virtual Networking for both Tenant and Transit VPCs. This enables sophisticated multi-tenant architectures that leverage Nutanix&apos;s native networking capabilities. Traefik integrates directly with Prism Central using v4.1 APIs for automatic VM discovery and category-based grouping. This enables zero-touch service provisioning with configurable polling intervals as low as 2 seconds. The lightweight integration extends Nutanix&apos;s policy-driven management approach to application delivery.&lt;/p&gt;&lt;p&gt;The auto-discovery mechanism leverages Nutanix&apos;s native category system. Infrastructure teams define application groupings using familiar Prism constructs. As VMs are created, modified, or destroyed within Nutanix environments, Traefik automatically updates its routing configuration without manual intervention. This maintains the operational simplicity that Nutanix customers expect while adding sophisticated application-layer capabilities.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;High Availability Architecture:&lt;/strong&gt; Enterprise resilience is achieved through Nutanix NLB VIP load balancing across multiple Traefik instances. In validated tenant VPC configurations, two Traefik instances provide redundancy. Transit VPC deployments typically run three instances for higher availability requirements. This distributed architecture leverages Nutanix&apos;s proven HA mechanisms to ensure that application delivery continues uninterrupted even during maintenance windows or infrastructure failures.&lt;/p&gt;&lt;h3 id=&quot;unified-application-delivery-capabilities&quot;&gt;Unified Application Delivery Capabilities&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Identity-Aware Routing and Security:&lt;/strong&gt; The platform leverages OIDC, mTLS, and JWT processing to enforce authentication and authorization policies that span VM and container boundaries across Nutanix infrastructure. Organizations can define routing rules based on user groups or organizational identity. For example, administrators can be directed to different application endpoints than developers, or region-specific content can be served based on authenticated attributes. All of this leverages Nutanix&apos;s security constructs.&lt;/p&gt;&lt;p&gt;Built-in WAF protection blocks common attacks like SQL injection and cross-site scripting using Traefik&apos;s high-performance Coraza engine. Policies apply uniformly whether traffic targets a legacy VM-based application on AHV or a modern containerized microservice on NKP.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Intelligent Traffic Management:&lt;/strong&gt; The integration provides circuit-breaking, retry logic, and canary deployment capabilities for resilient application delivery across Nutanix environments. Distributed rate limiting operates across all Traefik instances, preventing any single instance from becoming a policy enforcement bottleneck. Traffic shaping policies can be defined once and enforced consistently across the entire Nutanix hybrid infrastructure. This is critical for organizations managing thousands of application endpoints across distributed deployments.&lt;/p&gt;&lt;h3 id=&quot;enterprise-networking-patterns-on-nutanix&quot;&gt;Enterprise Networking Patterns on Nutanix&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Multi-Tenant VPC Architectures:&lt;/strong&gt; The validated reference architecture demonstrates a Transit VPC pattern with multiple Tenant VPCs, each containing isolated application workloads, and leveraging Flow Virtual Networking&apos;s advanced capabilities. Traefik instances in the Transit VPC provide a centralized entry point for external traffic. They route requests to the appropriate Tenant VPC based on path, host, or identity attributes. This architecture supports:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Path-based routing&lt;/strong&gt; across VPC boundaries leveraging Flow networking&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Unified L7 load balancing&lt;/strong&gt; across application instances in multiple VPCs&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Consistent security policies&lt;/strong&gt; integrated with Nutanix security constructs&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Centralized observability&lt;/strong&gt; through Prism while maintaining tenant isolation&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Infrastructure-as-Code Automation:&lt;/strong&gt; Full deployment and management automation is achieved through Ansible and Terraform integrations. These are the same tools Nutanix customers use for infrastructure provisioning. Infrastructure teams can also define Traefik configurations, routing policies, and security rules as code. This enables repeatable deployments across development, staging, and production environments. GitOps workflows support version control and rollback capabilities, treating infrastructure configuration with the same rigor as application code. This is consistent with Nutanix&apos;s infrastructure-as-code philosophy.&lt;/p&gt;&lt;h3 id=&quot;sovereign-cloud-and-edge-deployment&quot;&gt;Sovereign Cloud and Edge Deployment&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;Zero-Dependency Architecture:&lt;/strong&gt; The platform supports both connected and air-gapped deployments through signed policy bundles that enable sovereign cloud operations. This is critical for the defense, healthcare, financial services, and government organizations where Nutanix excels. Traefik operates entirely within Nutanix infrastructure. All routing logic, security enforcement, and policy decisions execute locally without requiring connectivity to external control planes or policy servers. This maintains the data sovereignty and operational independence that Nutanix customers require.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Comprehensive Observability:&lt;/strong&gt; OpenTelemetry integration provides distributed tracing, metrics, and audit-grade logging that feeds existing SIEM systems. Unlike proprietary observability solutions that create vendor lock-in, Traefik&apos;s standards-based approach aligns with Nutanix&apos;s vendor-neutral philosophy. Organizations can use their existing monitoring investments. Traces span VM and container boundaries across Nutanix infrastructure, providing end-to-end visibility into request flows regardless of where application components execute.&lt;/p&gt;&lt;h3 id=&quot;ai-workload-governance-on-nutanix&quot;&gt;AI Workload Governance on Nutanix&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;NVIDIA Safety NIMs Integration:&lt;/strong&gt; For AI workloads running on Nutanix infrastructure, the integration brings complete sovereignty through NVIDIA Safety NIMs integration. This enables enterprise-controlled AI deployment without external cloud dependencies. Content safety, agent control, and governance pipelines operate entirely within Nutanix private infrastructure. This makes AI adoption viable for organizations with strict data sovereignty requirements who have chosen Nutanix for exactly this reason.&lt;/p&gt;&lt;p&gt;The Traefik AI Gateway capability supports model routing governance. Organizations can direct inference requests to appropriate models based on request characteristics, user identity, or compliance requirements. This becomes critical as enterprises deploy multiple large language models on Nutanix infrastructure with different cost, performance, and privacy characteristics.&lt;/p&gt;&lt;h3 id=&quot;performance-and-scale-characteristics&quot;&gt;Performance and Scale Characteristics&lt;/h3&gt;&lt;p&gt;The lightweight Traefik binary delivers enterprise-grade performance without compromising the efficiency that makes Nutanix infrastructure attractive. Key characteristics include:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Sub-millisecond routing decisions&lt;/strong&gt; for typical HTTP requests&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Horizontal scalability&lt;/strong&gt; across dozens of instances without coordination overhead&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Minimal memory footprint&lt;/strong&gt; enabling deployment even on resource-constrained edge nodes running Nutanix&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Near-zero configuration drift&lt;/strong&gt; through automated reconciliation loops integrated into CI/CD pipelines&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This efficiency profile enables deployment patterns across the full range of Nutanix infrastructure. Application delivery logic can run on edge devices or in highly multi-tenant Nutanix environments, all without sacrificing the operational simplicity that defines the Nutanix experience.&lt;/p&gt;&lt;hr&gt;&lt;h2 id=&quot;infrastructure-and-application-intelligence-unified&quot;&gt;Infrastructure and Application Intelligence, Unified&lt;/h2&gt;&lt;p&gt;Nutanix transformed infrastructure by eliminating the complexity of managing separate compute, storage, and virtualization layers. The Traefik integration brings the same philosophy to application delivery: unified management, consistent operations, and freedom from vendor lock-in.&lt;/p&gt;&lt;p&gt;Organizations choosing Nutanix gain:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Infrastructure excellence&lt;/strong&gt; recognized by Gartner as market-leading in Distributed Hybrid Infrastructure&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Application intelligence&lt;/strong&gt; that extends naturally from that foundation through this validated integration with Traefik &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Operational consistency&lt;/strong&gt; across the entire stack, from infrastructure to application delivery&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Strategic flexibility&lt;/strong&gt; to modernize at their own pace without disruption&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Future readiness&lt;/strong&gt; for AI, edge, and emerging workload requirements&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The Traefik-Nutanix integration strengthens what Nutanix customers value most: operational simplicity without sacrificing capability, vendor-neutral architecture without sacrificing integration quality, and the freedom to deploy anywhere without sacrificing functionality. It extends Nutanix&apos;s infrastructure leadership into intelligent application delivery, transforming infrastructure from a platform that runs applications into one that makes them intelligent, resilient, and governed across every environment.&lt;/p&gt;&lt;p&gt;Ready to evolve from &quot;&lt;strong&gt;infrastructure anywhere&lt;/strong&gt;&quot; to &quot;&lt;strong&gt;intelligent applications everywhere&quot;&lt;/strong&gt;?&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://info.traefik.io/en/request-demo?ref=containous.ghost.io&quot;&gt;&lt;strong&gt;&lt;u&gt;Request your pilot&lt;/u&gt;&lt;/strong&gt;&lt;/a&gt; and start building your application intelligence foundation.&lt;/p&gt;&lt;hr&gt;&lt;p&gt;&lt;em&gt;Learn more about the Traefik-Nutanix integration at &lt;/em&gt;&lt;a href=&quot;https://traefik.io/solutions/nutanix-and-traefik?ref=containous.ghost.io&quot;&gt;&lt;em&gt;traefik.io&lt;/em&gt;&lt;/a&gt;&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[The Application Intelligence Layer: Beyond Infrastructure to Intelligent Applications Everywhere]]></title>
            <description><![CDATA[VMware disruption, AI governance, and multicloud complexity are forcing rapid change. New analyst reports confirm the biggest challenge is fragmented application delivery. Discover the unified layer that transforms infrastructure into intelligent, secure, and resilient applications everywhere.]]></description>
            <link>https://traefik.io/the-application-intelligence-layer-beyond-infrastructure-to-intelligent-applications-everywhere</link>
            <guid isPermaLink="true">https://traefik.io/the-application-intelligence-layer-beyond-infrastructure-to-intelligent-applications-everywhere</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Strategy]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[API Management]]></category>
            <dc:creator><![CDATA[Sudeep Goswami]]></dc:creator>
            <pubDate>Tue, 30 Sep 2025 14:57:18 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/09/application-intelligence-layer-Blog_without_copies@2x.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Application Intelligence Layer&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/09/application-intelligence-layer-Blog_without_copies@2x.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/09/application-intelligence-layer-Blog_without_copies@2x.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/09/application-intelligence-layer-Blog_without_copies@2x.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/09/application-intelligence-layer-Blog_without_copies@2x.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;three-landmark-reports-paint-a-clear-picture-of-infrastructures-future&quot;&gt;&lt;br&gt;Three Landmark Reports Paint a Clear Picture of Infrastructure&apos;s Future&lt;/h2&gt;&lt;p&gt;In recent months, three pivotal analyst reports have defined the trajectory of enterprise infrastructure:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Gartner&apos;s &lt;em&gt;Magic Quadrant for Container Management (2025)&lt;/em&gt;&lt;/strong&gt; reveals that container platforms are reaching maturity, but application-layer capabilities remain fragmented&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Forrester&apos;s &lt;em&gt;Wave™: Multicloud Container Platforms, Q3 2025&lt;/em&gt;&lt;/strong&gt; demonstrates that multicloud complexity demands unified governance and policy management&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Gartner&apos;s &lt;em&gt;Distributed Hybrid Infrastructure (DHI), 2025&lt;/em&gt;&lt;/strong&gt; projects that 55% of enterprises will initiate DHI proofs of concept by 2028, driven by VMware disruption and sovereignty requirements&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Together, these reports establish an undeniable consensus: the future is &lt;strong&gt;hybrid, multicloud, distributed, and demands application intelligence.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The catalysts driving this transformation are seismic. VMware licensing changes have created urgent migration pressures across enterprises. Sovereign cloud mandates are rewriting compliance playbooks. AI inferencing is pushing workloads closer to users and data. And the enduring reality highlighted across all three reports is that &lt;strong&gt;VMs and containers will coexist for years to come&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;Infrastructure &amp;amp; Operations (I&amp;amp;O) leaders have already proven their capability—mastering Kubernetes adoption, driving modernization initiatives, and maintaining uptime in increasingly complex environments.&amp;nbsp;&lt;/p&gt;&lt;p&gt;But as these reports make clear, the next critical challenge is emerging: How do we ensure that all this distributed infrastructure actually delivers resilient, secure, and intelligent applications everywhere?&lt;/p&gt;&lt;h2 id=&quot;what-the-analysts-reveal-the-infrastructure-revolution-is-here&quot;&gt;What the Analysts Reveal: The Infrastructure Revolution Is Here&lt;/h2&gt;&lt;p&gt;Reading these three reports together reveals a fundamental shift happening right now in enterprise infrastructure:&lt;/p&gt;&lt;h3 id=&quot;container-orchestration-has-matured-but-application-delivery-hasnt&quot;&gt;&lt;strong&gt;Container Orchestration Has Matured, But Application Delivery Hasn&apos;t&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Gartner&apos;s Container Management Magic Quadrant shows that while Kubernetes and container platforms have achieved enterprise readiness, Layer 7 capabilities remain fragmented across vendors. Organizations are left stitching together ingress controllers, API gateways, and security tools.&lt;/p&gt;&lt;h3 id=&quot;multicloud-success-requires-unified-application-governance&quot;&gt;Multicloud Success Requires Unified Application Governance&lt;/h3&gt;&lt;p&gt;Forrester&apos;s multicloud analysis proves that the winners achieve policy consistency without vendor lock-in. But most organizations struggle with different authentication systems, inconsistent security policies, and fragmented observability across AWS, Azure, GCP, and sovereign clouds.&lt;/p&gt;&lt;h3 id=&quot;distributed-hybrid-infrastructure-dhi-adoption-is-exploding-due-to-vmware-disruption&quot;&gt;Distributed Hybrid Infrastructure (DHI) Adoption Is Exploding Due to VMware Disruption&lt;/h3&gt;&lt;p&gt;Gartner&apos;s DHI research shows adoption expected to jump from 15% to 55% of enterprises by 2028—a once-in-a-decade transformation window. Organizations need cloud-native capabilities everywhere, but existing solutions force them to choose between infrastructure flexibility and application intelligence.&lt;/p&gt;&lt;h3 id=&quot;edge-and-sovereignty-are-strategic-imperatives&quot;&gt;&lt;strong&gt;Edge and Sovereignty Are Strategic Imperatives&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;All three reports emphasize that latency-sensitive workloads, disconnected operations, and national sovereignty mandates are pushing infrastructure closer to users and under stricter jurisdictional control. Cloud-native principles must work without constant cloud connectivity and with complete data sovereignty.&lt;/p&gt;&lt;h3 id=&quot;the-hybrid-reality-demands-bridge-building&quot;&gt;The Hybrid Reality Demands Bridge-Building&lt;/h3&gt;&lt;p&gt;All three reports acknowledge that virtual machines and containers will coexist for years. Yet most application delivery solutions work for one compute substrate or the other—not both seamlessly.&lt;/p&gt;&lt;h3 id=&quot;ai-workloads-need-immediate-governance&quot;&gt;AI Workloads Need Immediate Governance&lt;/h3&gt;&lt;p&gt;While not explicitly covered in these infrastructure reports, the elephant in the room is clear: &lt;a href=&quot;https://traefik.io/blog/the-triple-ai-security-gap?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;AI inferencing is scaling faster than governance&lt;/a&gt;. Organizations deploying AI models across distributed infrastructure need consistent quotas, cost controls, and safety guardrails—not another complex tool to manage.&lt;/p&gt;&lt;p&gt;This convergence of analysis points to an undeniable conclusion: infrastructure has evolved, but application delivery is the bottleneck&lt;/p&gt;&lt;h2 id=&quot;the-solution-modern-application-intelligence-as-a-unified-layer&quot;&gt;The Solution: Modern Application Intelligence as a Unified Layer&lt;/h2&gt;&lt;p&gt;The Application Intelligence Layer (AIL) is the missing infrastructure component that transforms fragmented application delivery into a unified, portable control fabric. Unlike point solutions that solve individual problems, modern AIL provides comprehensive application-aware capabilities that work consistently across any infrastructure.&lt;/p&gt;&lt;p&gt;This isn&apos;t just another tool—it&apos;s the connective tissue that transforms infrastructure investments into intelligent application delivery, regardless of where workloads run or how they&apos;re packaged.&lt;/p&gt;&lt;p&gt;For I&amp;amp;O leaders, AIL represents the natural evolution of infrastructure mastery, extending hard-won orchestration capabilities into the application layer where competitive advantage is ultimately determined.&lt;/p&gt;&lt;h2 id=&quot;the-five-pillars-of-modern-application-intelligence&quot;&gt;The Five Pillars of Modern Application Intelligence&lt;/h2&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/09/data-src-image-47e1e42c-80d7-4e0f-9fbd-42a240e67d81.png&quot; class=&quot;kg-image&quot; alt=&quot;5 Pillars of Modern Application Intelligence&quot; loading=&quot;lazy&quot; width=&quot;1600&quot; height=&quot;666&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/09/data-src-image-47e1e42c-80d7-4e0f-9fbd-42a240e67d81.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/09/data-src-image-47e1e42c-80d7-4e0f-9fbd-42a240e67d81.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/09/data-src-image-47e1e42c-80d7-4e0f-9fbd-42a240e67d81.png 1600w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;b&gt;&lt;strong style=&quot;white-space: pre-wrap;&quot;&gt;5 Key Pillars of Modern Application Intelligence&lt;/strong&gt;&lt;/b&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;Traefik Labs has defined the essential capabilities that comprise a complete Application Intelligence Layer:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;API-First &amp;amp; AI Readiness:&lt;/strong&gt; moves beyond basic load balancing to offer comprehensive API management, API Gateway, and AI Gateway capabilities like model routing, semantic caching, and safety guardrails.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Security &amp;amp; Traffic Intelligence:&lt;/strong&gt; delivers identity-aware routing (OIDC, mTLS), built-in WAF protection, intelligent traffic management, and end-to-end observability through OpenTelemetry.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Hybrid Orchestration:&lt;/strong&gt; provides unified policy management across both virtual machines and containers, with auto-discovery and support for gradual modernization patterns.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Sovereign Cloud Enablement:&lt;/strong&gt; ensures complete operational independence through zero external dependencies, offline policy bundles, and comprehensive audit-grade logging.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Edge-to-Cloud Continuity:&lt;/strong&gt; guarantees consistent behavior across distributed deployments with local gateway enforcement during connectivity failures and central policy management.&lt;/li&gt;&lt;/ol&gt;&lt;h2 id=&quot;application-intelligence-in-action-real-world-impact&quot;&gt;Application Intelligence in Action: Real-World Impact&lt;/h2&gt;&lt;h3 id=&quot;financial-services-safe-hybrid-modernization&quot;&gt;Financial Services: Safe Hybrid Modernization&lt;/h3&gt;&lt;p&gt;A global bank routes /v1/payments to VM-based core banking systems while /v2/payments serves containerized microservices—all with unified OIDC authentication and WAF protection. This enables safe, incremental modernization without the downtime risks that could cost millions per hour.&lt;/p&gt;&lt;h3 id=&quot;healthcare-sovereign-phi-protection&quot;&gt;Healthcare: Sovereign PHI Protection&lt;/h3&gt;&lt;p&gt;Hospitals manage patient data in air-gapped environments using offline policy bundles and signed attestation. Exportable audit evidence streamlines HIPAA compliance while maintaining complete operational independence from external systems.&lt;/p&gt;&lt;h3 id=&quot;government-multi-jurisdiction-services&quot;&gt;Government: Multi-Jurisdiction Services&lt;/h3&gt;&lt;p&gt;Agencies deliver citizen services with per-jurisdiction policy packs and complete data sovereignty. Zero external dependencies ensure compliance while tenant isolation maintains security across different government departments.&lt;/p&gt;&lt;h3 id=&quot;manufacturing-resilient-edge-operations&quot;&gt;Manufacturing: Resilient Edge Operations&lt;/h3&gt;&lt;p&gt;Factories rely on local Traefik gateways to enforce policies during WAN outages. Intelligent back-pressure prevents equipment failures while maintaining operational continuity during network disruptions.&lt;/p&gt;&lt;h3 id=&quot;ai-teams-governed-model-deployment&quot;&gt;AI Teams: Governed Model Deployment&lt;/h3&gt;&lt;p&gt;Enterprises route inference traffic based on cost, latency, and data sensitivity. Semantic caching reduces redundant API calls by 25%, usage quotas control GPU spending, and safety filters ensure responsible AI deployment across all endpoints.&lt;/p&gt;&lt;p&gt;Each scenario demonstrates the same fundamental truth: application intelligence is what transforms infrastructure investments into competitive advantage.&lt;/p&gt;&lt;h2 id=&quot;the-business-case-measurable-roi-through-risk-reduction&quot;&gt;The Business Case: Measurable ROI Through Risk Reduction&lt;/h2&gt;&lt;p&gt;Application Intelligence Layer implementation delivers immediate, measurable returns through risk mitigation and operational efficiency:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Downtime Prevention&lt;/strong&gt;: Even conservative estimates place enterprise downtime costs at $300K per hour. Preventing just a few hours of outages annually pays for AIL implementation many times over.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Compliance Assurance&lt;/strong&gt;: Regulatory fines under GDPR, HIPAA, and other frameworks routinely exceed millions of dollars. Audit-grade evidence packs and consistent policy enforcement significantly reduce compliance risk.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;AI Cost Control&lt;/strong&gt;: GPU and LLM costs are escalating rapidly. Semantic caching and intelligent quota management can reduce AI infrastructure spending by 15-25%, often saving six figures annually.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Engineering Productivity&lt;/strong&gt;: Teams spend 20-30% of their time managing configuration drift, static IP assignments, and firewall exceptions. Unified policy management reclaims this time for innovation.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Vendor Consolidation&lt;/strong&gt;: By unifying WAF, ingress, API gateway, and observability functions, organizations reduce vendor sprawl and eliminate redundant licensing costs.&lt;/p&gt;&lt;p&gt;For I&amp;amp;O leaders, this isn&apos;t speculative ROI—it&apos;s embedded in avoided costs and operational efficiencies that every CFO immediately understands.&lt;/p&gt;&lt;h2 id=&quot;the-transformation-window-is-closing-fast&quot;&gt;The Transformation Window Is Closing Fast&lt;/h2&gt;&lt;p&gt;The convergence of analyst insights and market forces creates an urgent, limited-time opportunity:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;VMware Migration Momentum&lt;/strong&gt;: Gartner&apos;s DHI research directly links VMware disruption to accelerated infrastructure transformation. Organizations are already re-platforming—this strategic migration window won&apos;t reopen for years. Companies that integrate application intelligence now will avoid costly retrofitting later.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;AI Governance Crisis Looming&lt;/strong&gt;: While container and DHI platforms focus on infrastructure, AI workloads are scaling into production without proper governance. GPU costs are exploding, compliance risks are mounting, and the organizations that implement AI guardrails now will avoid the financial and regulatory crises facing late adopters.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Multicloud Complexity Compounding&lt;/strong&gt;: Forrester&apos;s analysis shows that multicloud complexity increases exponentially without unified governance. Every month of delay makes consistent policy management exponentially harder to achieve.&lt;/p&gt;&lt;p&gt;The future-ready organizations identified across all three reports share one characteristic: they don&apos;t just migrate or orchestrate infrastructure—they transform it with application-aware intelligence from day one.&lt;/p&gt;&lt;h2 id=&quot;the-traefik-advantage-completing-the-stack&quot;&gt;The Traefik Advantage: Completing the Stack&lt;/h2&gt;&lt;p&gt;Traefik Labs uniquely positions enterprises for this transformation:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Proven Integration&lt;/strong&gt;: Native embedding in Rancher K3s, Nutanix NKP, and Nutanix AHV provides validated deployment paths&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Open Source Foundation&lt;/strong&gt;: Millions of developers trust Traefik&apos;s core technology, with clear upgrade paths to enterprise governance features&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Platform Agnostic&lt;/strong&gt;: Traefik enhances rather than replaces DHI and container platforms, extending their orchestration capabilities with application-layer intelligence&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Traefik don&apos;t compete with your infrastructure investments—&lt;strong&gt;it completes them&lt;/strong&gt;.&lt;/p&gt;&lt;h2 id=&quot;act-now-your-application-intelligence-foundation&quot;&gt;Act Now: Your Application Intelligence Foundation&lt;/h2&gt;&lt;p&gt;The analyst consensus is clear, the market forces are aligned, and the technology is proven. The question isn&apos;t whether to add application intelligence to your infrastructure strategy—it&apos;s how quickly you can implement it to transform current investments into lasting competitive advantages.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Start with immediate validation. Choose the approach that fits your most pressing need:&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;5-Day Infrastructure Bridge Pilot: &lt;/strong&gt;Deploy unified WAF protection, identity-aware routing, and observability across both VM and container workloads. Prove policy consistency and validate rollback procedures in a controlled environment.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;AI Governance Quick Win: &lt;/strong&gt;Add usage quotas, safety guardrails, and cost tracking to existing AI inference endpoints. Demonstrate immediate ROI while establishing governance patterns for enterprise scale.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Multicloud Policy Unification: &lt;/strong&gt;Implement consistent authentication and security policies across two cloud environments. Validate the portable governance model that Forrester identifies as critical for multicloud success.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Sovereign Cloud Readiness Test: &lt;/strong&gt;Deploy signed policy bundles in a disconnected environment and generate audit evidence packs. Prove operational independence capabilities for compliance requirements.&lt;/p&gt;&lt;p&gt;The transformation window identified by Gartner and Forrester is closing. Organizations that act decisively will establish application intelligence capabilities that become increasingly difficult for competitors to replicate.&lt;/p&gt;&lt;p&gt;Ready to evolve from &quot;infrastructure anywhere&quot; to &quot;intelligent applications everywhere&quot;?&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://info.traefik.io/try-traefik-hub-platform?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;strong&gt;&lt;u&gt;Request your pilot&lt;/u&gt;&lt;/strong&gt;&lt;/a&gt; and start build your application intelligence foundation now.&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Aged to Perfection: Traefik's 10-Year Journey from Zero to Standard]]></title>
            <description><![CDATA[10 years ago, I made a small reverse proxy project public. Fast forward to today and Traefik has 3.4B downloads and 56k GitHub stars. See how it unfolded.]]></description>
            <link>https://traefik.io/celebrating-10-years-of-traefik</link>
            <guid isPermaLink="true">https://traefik.io/celebrating-10-years-of-traefik</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Mon, 22 Sep 2025 13:42:32 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/09/10-years-of-traefik-blog-thumbnail.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1568&quot; height=&quot;928&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/09/10-years-of-traefik-blog-thumbnail.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/09/10-years-of-traefik-blog-thumbnail.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/09/10-years-of-traefik-blog-thumbnail.jpg 1568w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;10 years ago on September 22nd, 2015, after months of research and hacking, I posted a link on &lt;a href=&quot;https://news.ycombinator.com/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Hacker News&lt;/a&gt; about this small project I&apos;d been working on called Traefik. Honestly, I was just hoping a few fellow developers might find it useful for their own container routing headaches.&lt;/p&gt;&lt;p&gt;Well, things escalated quickly…&lt;/p&gt;&lt;h2 id=&quot;early-days-the-microservices-wild-west&quot;&gt;&lt;strong&gt;Early Days: The Microservices Wild West&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Let&apos;s be honest—2015 was a bit of a mess for anyone trying to manage microservices. Docker containers were getting some hype, Kubernetes was still this intimidating thing that required a PhD to set up, and everyone was manually editing NGINX configs like it was 2005.&lt;/p&gt;&lt;p&gt;The problem was simple: traditional load balancers didn&apos;t understand the dynamic infrastructure of modern platforms. Your services were constantly coming and going, scaling up and down, and your poor reverse proxy was sitting there completely oblivious to what was happening behind it.&lt;/p&gt;&lt;p&gt;My idea was equally simple: what if the reverse proxy could just... figure it out automatically? What if it could watch your containers, understand your services, and configure itself? Or to put it differently, what if we could delegate the routing configuration to the application level. In a world where there are now hundreds or thousands of services, each should come with its own ingress properties attached to it.&lt;/p&gt;&lt;p&gt;The response surprised me, to put it mildly. Within a week of the public announcement, Traefik was in the top trending projects on GitHub, and I found myself frantically responding to issues and pull requests from developers around the world.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/09/aged-to-perfection-1.png&quot; class=&quot;kg-image&quot; alt=&quot;#1 on github trends&quot; loading=&quot;lazy&quot; width=&quot;1024&quot; height=&quot;832&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/09/aged-to-perfection-1.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/09/aged-to-perfection-1.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/09/aged-to-perfection-1.png 1024w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Looking back, I have to admit I had no idea this would become what it is today. I set out to solve a real life problem I was experiencing, maybe thinking that a few other microservice nerds might be facing the same issue. The idea that Traefik would eventually become such a critical piece of today’s platforms? That seemed pretty unlikely at the time.&lt;/p&gt;&lt;p&gt;But here we are, 10 years later, with some numbers that still make me do a double-take:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;3.4 billion downloads on Docker Hub&lt;/li&gt;&lt;li&gt;56,000+ GitHub stars&lt;/li&gt;&lt;li&gt;5,000+ merged pull requests&lt;/li&gt;&lt;li&gt;6,000+ issues (we&apos;ve accidentally created the world&apos;s most persistent TODO list)&lt;/li&gt;&lt;li&gt;Nearly 900 contributors from around the world&lt;/li&gt;&lt;li&gt;500+ releases (we&apos;ve been... productive)&lt;/li&gt;&lt;li&gt;26 cheeses for codenames (in fact the most important metric)&lt;/li&gt;&lt;li&gt;16 maintainers&lt;/li&gt;&lt;li&gt;1 company founded&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;the-maturing-process&quot;&gt;&lt;strong&gt;The Maturing Process&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Over the past decade, Traefik has evolved through fundamental milestones that each marked a critical innovation in the cloud-native revolution. Every major release wasn&apos;t just an upgrade—it was a response to where the industry was heading, often arriving just as developers realized they needed exactly those capabilities.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Traefik v1&lt;/strong&gt; started with the fundamentals that felt revolutionary at the time:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Automatic service discovery (no more manual config updates)&lt;/li&gt;&lt;li&gt;Let&apos;s Encrypt integration (because HTTPS should be easy)&lt;/li&gt;&lt;li&gt;Support for Docker, Kubernetes, Marathon, and other orchestrators&lt;/li&gt;&lt;li&gt;Live configuration reloading (remember when you had to restart everything?)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Traefik v2&lt;/strong&gt; was a major effort at future proofing the architecture:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Complete redesign with routers, middlewares, and services&lt;/li&gt;&lt;li&gt;TCP and UDP support (not just HTTP)&lt;/li&gt;&lt;li&gt;Proper Kubernetes CRDs&lt;/li&gt;&lt;li&gt;Middleware chaining for complex traffic handling&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We&apos;ll be honest—the v1 to v2 migration wasn&apos;t our smoothest moment. We learned a lot about backward compatibility the hard way.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Traefik v3&lt;/strong&gt; focused on modern standards and smoother upgrades:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Gateway API support (the future of Kubernetes ingress)&lt;/li&gt;&lt;li&gt;OpenTelemetry integration (the future of observability)&lt;/li&gt;&lt;li&gt;Much gentler migration experience (we learned our lesson)&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Looking back, it&apos;s clear that the cloud-native industry itself underwent a fundamental shift during these 10 years. What started as a pure innovation and creativity stage—where everyone was experimenting with containers, orchestrators, and new architectural patterns—has matured into a productivity era. The wild experimentation phase is largely over; now it&apos;s about making these technologies reliable, secure, and easy to operate at scale.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Traefik&apos;s evolution mirrors this industry transformation, moving from solving bleeding-edge problems to providing stable, production-ready infrastructure that teams can actually depend on. Traefik has consistently helped define what cloud-native infrastructure should look like. We didn&apos;t just adapt to the productivity era; we helped create the tools and patterns that made it possible.&lt;/p&gt;&lt;h2 id=&quot;whats-next&quot;&gt;&lt;strong&gt;What&apos;s Next&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;After a decade of helping shape the cloud-native revolution, we&apos;re not slowing down. The industry has moved into its productivity era, but that doesn&apos;t mean the innovation stops—it just becomes more focused on solving the real operational challenges that platform teams face every day.&lt;/p&gt;&lt;p&gt;The community has been pretty clear about where they want us to go next, and honestly, the next steps feel like natural evolutions of what we&apos;ve been building all along.&lt;/p&gt;&lt;h3 id=&quot;v35-the-nginx-compatibility-layer&quot;&gt;&lt;strong&gt;v3.5: The NGINX Compatibility Layer&lt;/strong&gt;&lt;/h3&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/09/aged-to-perfection-2-1.png&quot; class=&quot;kg-image&quot; alt=&quot;traefik and ingress-nginx working together&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;500&quot;&gt;&lt;/figure&gt;&lt;p&gt;Let&apos;s talk about the elephant in the Kubernetes room: &lt;a href=&quot;https://traefik.io/blog/transition-from-ingress-nginx-to-traefik?ref=containous.ghost.io&quot;&gt;&lt;u&gt;ingress-nginx is in maintenance mode&lt;/u&gt;&lt;/a&gt;. No new features, only critical fixes, and a growing list of security concerns that keep platform teams up at night.&lt;/p&gt;&lt;p&gt;This isn&apos;t just another deprecation announcement—it&apos;s a fundamental shift that will impact every team running Kubernetes in production. The controller that powers many clusters is entering its endgame, and platform teams everywhere are asking the same question: &quot;What now?&quot;&lt;/p&gt;&lt;p&gt;We saw this coming and decided to do something practical about it. Traefik 3.5 includes a &lt;a href=&quot;https://doc.traefik.io/traefik/reference/routing-configuration/kubernetes/ingress-nginx/?ref=containous.ghost.io#routing-configuration&quot; rel=&quot;noreferrer&quot;&gt;brand new NGINX provider&lt;/a&gt; that understands NGINX Ingress annotations. That means you can migrate from ingress-nginx to Traefik without rewriting a single manifest.&lt;/p&gt;&lt;p&gt;No massive refactoring projects. No weekend migrations that keep everyone on edge.&lt;/p&gt;&lt;p&gt;You keep your existing annotations, your existing workflows, and your existing sleep schedule. You just get a more actively maintained ingress controller that&apos;s designed for the cloud-native world we&apos;re actually living in. Bonus: you can also plan a later Gateway API migration using the same controller thanks to Traefik’s flexibility.&lt;/p&gt;&lt;p&gt;We&apos;d love contributions from the community to make it even better. If you&apos;re migrating from NGINX Ingress and hit edge cases we haven&apos;t covered, or if you have ideas for improving the compatibility layer, we&apos;re all ears.&lt;/p&gt;&lt;p&gt;The migration path is straightforward, the security posture is solid, and the future roadmap is clear. Sometimes the best innovation is just making the obvious choice easier to make.&lt;/p&gt;&lt;h3 id=&quot;v36-more-power-more-features&quot;&gt;&lt;strong&gt;v3.6: More Power, More Features&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Version 3.6 is shaping up to address some complex routing scenarios that our community has been requesting.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Multi-layer routing &lt;/strong&gt;is probably the most significant architectural addition. Right now, Traefik follows a simple path: entrypoint → router → service → server. Version 3.6 will let routers forward requests to other routers instead of just services, creating routing trees for complex use cases.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/09/Screenshot-2025-09-21-at-11.12.57---AM.png&quot; class=&quot;kg-image&quot; alt=&quot;multi-layer routing&quot; loading=&quot;lazy&quot; width=&quot;1598&quot; height=&quot;980&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/09/Screenshot-2025-09-21-at-11.12.57---AM.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/09/Screenshot-2025-09-21-at-11.12.57---AM.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/09/Screenshot-2025-09-21-at-11.12.57---AM.png 1598w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Think about it this way: you could have a first layer of routers dedicated entirely to authentication and authorization, then forward authenticated requests to a second layer that routes based on the user&apos;s permissions or role. No more cramming everything into a single routing decision, or weird loopback hacks—you can build sophisticated traffic management that actually matches how your applications work.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/09/10-year-blog-3-1.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;323&quot;&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;KNative&lt;/strong&gt; integration (thanks to our &lt;a href=&quot;https://github.com/traefik/traefik/pull/11448?ref=containous.ghost.io&quot;&gt;&lt;u&gt;community contributors&lt;/u&gt;&lt;/a&gt;) will enable Traefik to be a first-class citizen in serverless Kubernetes environments, making it easier to route traffic to both traditional microservices and serverless functions from a single ingress controller.&lt;/p&gt;&lt;h3 id=&quot;v4-perfectly-aged&quot;&gt;&lt;strong&gt;v4: Perfectly Aged&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;We&apos;re taking a different approach with Traefik v4. Instead of the traditional &quot;big bang&quot; major release with tons of new features and breaking changes, we&apos;re trying something smarter.&lt;/p&gt;&lt;p&gt;All the new features destined for v4 will actually land in v3.x minor releases first. NGINX support, multi-layer routing, KNative, enhanced Gateway API support—you&apos;ll get to use them while they&apos;re fresh, not after waiting years for a major release.&lt;/p&gt;&lt;p&gt;At the same time, we&apos;ll be deprecating legacy features well in advance, giving everyone plenty of time to migrate gradually. By the time v4 arrives, it will essentially be a cleaned-up version of the latest v3.x—all the modern features you&apos;re already using, minus the deprecated baggage you&apos;ve hopefully already migrated away from.&lt;/p&gt;&lt;p&gt;You&apos;ll be able to adopt new features as they become available, migrate away from deprecated ones at your own pace, and when v4 finally ships, the upgrade should feel more like a routine update than a major undertaking.&lt;/p&gt;&lt;p&gt;This approach should make the v4 migration much smoother than previous major releases. Sometimes the best way to move fast is to move incrementally.&lt;/p&gt;&lt;h2 id=&quot;open-source-at-its-best&quot;&gt;&lt;strong&gt;Open Source at its Best&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Here&apos;s what really amazes me: more than half of all pull requests merged into Traefik come from contributors who aren&apos;t on the core team. The community doesn&apos;t just use Traefik—they improve it, extend it, and take it in directions we never imagined.&lt;/p&gt;&lt;p&gt;We&apos;ve seen contributions from developers in dozens of countries, solving problems we didn&apos;t even know existed. Someone in Japan fixes a bug that someone in Brazil discovers. A developer in Germany adds support for a protocol that a team in California needs. A technical writer in France improves documentation that helps a team in Australia get started faster. A security researcher in India reports a vulnerability that protects users worldwide. Even feature requests and bug reports from users who never write a line of code help us understand what&apos;s needed. Every type of contribution—code, documentation, testing, reporting issues, suggesting improvements—makes the whole user experience better. It&apos;s open source at its best.&lt;/p&gt;&lt;p&gt;The community has written crazy providers (hello &lt;a href=&quot;https://github.com/traefik/traefik/pull/11448?ref=containous.ghost.io&quot;&gt;&lt;u&gt;KNative&lt;/u&gt;&lt;/a&gt; 🫡), created awesome plugins for use cases we never considered (👋 &lt;a href=&quot;https://plugins.traefik.io/plugins/6715d1d37dd5a6c3095befd4/sablier?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Sablier&lt;/u&gt;&lt;/a&gt;), made the forum such a welcoming space (❤️ &lt;a href=&quot;https://community.traefik.io/u/bluepuma77?ref=containous.ghost.io&quot;&gt;&lt;u&gt;bluepuma77&lt;/u&gt;&lt;/a&gt;), and generally made Traefik far more useful than it would have been with just the core team.&lt;/p&gt;&lt;h2 id=&quot;anniversary-contest&quot;&gt;&lt;strong&gt;Anniversary Contest&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;To celebrate this incredible milestone, we&apos;re doing something special. The &lt;strong&gt;next 50 contributors&lt;/strong&gt; who get a pull request merged into the &lt;a href=&quot;https://github.com/traefik/traefik/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik repository&lt;/u&gt;&lt;/a&gt; will receive a limited-edition 10th Anniversary Traefik t-shirt. These aren&apos;t just any t-shirts—we&apos;re talking exclusive anniversary design and enough geek cred to make your coworkers jealous.&lt;/p&gt;&lt;p&gt;The design itself is pretty special (see below). Since every Traefik release comes with a cheese codename, we&apos;ve created a shirt featuring all the cheeses that have graced our releases over the past decade. &lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/09/Traefik.versions-2-1.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;700&quot; height=&quot;1109&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/09/Traefik.versions-2-1.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/09/Traefik.versions-2-1.png 700w&quot;&gt;&lt;/figure&gt;&lt;p&gt;From Reblochon to Mimolette, from Roquefort to Saint-Nectaire – it&apos;s a delicious timeline of Traefik&apos;s journey. We have to give huge thanks to Pierre Keersbulik, who has been creating these awesome designs for us throughout the past 10 years. His creativity has given Traefik its distinctive visual identity, and this anniversary design is no exception.&lt;/p&gt;&lt;p&gt;Whether you&apos;re fixing a typo in the documentation, adding a feature to a plugin, or contributing to the core codebase, your contribution counts.&lt;/p&gt;&lt;p&gt;These will probably become collector&apos;s items, so don&apos;t say we didn&apos;t warn you 😉.&lt;/p&gt;&lt;h2 id=&quot;a-vintage-worth-celebrating&quot;&gt;&lt;strong&gt;A Vintage Worth Celebrating&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;10 years ago, I had a simple idea about making reverse proxies smarter. Today, Traefik is part of the infrastructure that powers modern applications used by millions of people. Today, an entire team and community of developers continues to improve what has become a major open source project.&lt;/p&gt;&lt;p&gt;The cloud-native ecosystem will keep evolving, the AI revolution is reshaping our infrastructure, new challenges and possibilities will emerge, and developers will keep building amazing things. As long as there&apos;s traffic to route and services to connect, we&apos;ll be here—probably with some new feature you didn&apos;t know you needed.&lt;/p&gt;&lt;p&gt;Thank you for 10 incredible years. Thank you for the contributions, the feedback, the bug reports, and the debugging sessions. Thank you for the thoughtful feature requests, the patient explanations in forum threads, and the conference talks that help spread the word. Thank you to the maintainers who keep the community welcoming, the documentation writers who make complex concepts accessible, and yes, even the trolls who keep us on our toes and remind us that the internet is still the internet. Thank you for making this little project into something we&apos;re all proud of.&lt;/p&gt;&lt;p&gt;Here&apos;s to the next decade of making infrastructure just a bit more automatic.&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Spring Cloud Gateway vs. Traefik Hub: When to Choose a Purpose-Built Gateway]]></title>
            <description><![CDATA[After years of working with organizations navigating the microservices evolution, we want to set the record straight. The API gateway you choose today could save your teams' sanity or haunt your architecture for years to come. As teams break apart monoliths into distributed services, the need for reliable API gateway strategies has become critical.

Yet many organizations find themselves in gateway chaos as different teams implement routing, authentication, and rate limiting in entirely differen]]></description>
            <link>https://traefik.io/spring-cloud-gateway-vs-traefik</link>
            <guid isPermaLink="true">https://traefik.io/spring-cloud-gateway-vs-traefik</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[API Gateway]]></category>
            <dc:creator><![CDATA[Immánuel Fodor]]></dc:creator>
            <pubDate>Mon, 04 Aug 2025 22:46:22 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/08/spring-cloud-gateway-vs-traefik-blog-no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/08/spring-cloud-gateway-vs-traefik-blog-no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/08/spring-cloud-gateway-vs-traefik-blog-no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/08/spring-cloud-gateway-vs-traefik-blog-no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/08/spring-cloud-gateway-vs-traefik-blog-no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;After years of working with organizations navigating the microservices evolution, we want to set the record straight. The API gateway you choose today could save your teams&apos; sanity or haunt your architecture for years to come. As teams break apart monoliths into distributed services, the need for reliable API gateway strategies has become critical.&lt;/p&gt;&lt;p&gt;Yet many organizations find themselves in gateway chaos as different teams implement routing, authentication, and rate limiting in entirely different ways. We&apos;ve seen too many teams make the same mistake with Spring Cloud Gateway. We don’t want you to look back six months later, drowning in custom Java code scattered across a dozen microservices, wondering how you got there.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-169083275181&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;169083275181&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLKXiLBJdgSjJjJGc1ag47avJHCqZmSIqQKPjaL3fhorewC7i72SBzhLsiz3bOsnaxNsyDPEXvYuDyU7ZVE5afewgp71oshSWa9BkOOaMbnBwRkV0Ku6G0Lrtv%2FfztIJOX%2BoR4Bfy%2Fnr7w9POCu5LzTmuJVZShVMIuOwjEzJWUKZ12SY2l4oD%2BRfcGY7VkdVlGyHDfW2YkfjLy89juJb&amp;webInteractiveContentId=169083275181&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Square Image - 1200 x 1200(7)&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-169083275181.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;So let&apos;s talk about what Spring Cloud Gateway is, why purpose-built alternatives like &lt;a href=&quot;https://traefik.io/traefik-hub-api-gateway?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Traefik Hub&lt;/a&gt; exist, and—most importantly—when each one makes sense for your specific situation. We want to help you understand when embedded gateway logic makes sense, and when it&apos;s time to centralize, because if you&apos;ve been considering Spring Cloud Gateway for your API gateway needs, you might discover that what seemed like the obvious choice could become a significant maintenance burden as your organization scales.&lt;/p&gt;&lt;h2 id=&quot;what-spring-cloud-gateway-really-is-hint-its-not-what-you-think&quot;&gt;What Spring Cloud Gateway Really Is (Hint: It&apos;s Not What You Think)&lt;/h2&gt;&lt;p&gt;Let&apos;s clear up the biggest misconception first: despite its name, Spring Cloud Gateway is not a cloud-hosted service or managed gateway solution. It&apos;s a Java-based framework that you embed directly into your Spring Boot applications.&lt;/p&gt;&lt;p&gt;When you add it to your project via Spring Initializr, you&apos;re essentially embedding gateway functionality within your application code. This means your microservice becomes responsible for both its business logic AND gateway concerns like routing, filtering, and request transformation.&lt;/p&gt;&lt;p&gt;Here&apos;s what that looks like in practice:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;// Code from the Spring Cloud Gateway getting-started guide:
// https://spring.io/guides/gs/gateway

@SpringBootApplication
@EnableConfigurationProperties(UriConfiguration.class)
@RestController
public class Application {

  public static void main(String[] args) {
    SpringApplication.run(Application.class, args);
  }

  // Gateway logic
  @Bean
  public RouteLocator myRoutes(RouteLocatorBuilder builder, UriConfiguration uriConfiguration) {
    String httpUri = uriConfiguration.getHttpbin();
    return builder.routes()
      .route(p -&amp;gt; p
        .path(&quot;/get&quot;)
        .filters(f -&amp;gt; f.addRequestHeader(&quot;Hello&quot;, &quot;World&quot;))
        .uri(httpUri)) // Upstream service
      .route(p -&amp;gt; p
        .host(&quot;*.circuitbreaker.com&quot;)
        .filters(f -&amp;gt; f
          .circuitBreaker(config -&amp;gt; config
            .setName(&quot;mycmd&quot;)
            .setFallbackUri(&quot;forward:/fallback&quot;))) // Local path serving
        .uri(httpUri))
      .build();
  }

  // Business application logic mixed with gateway code
  @RequestMapping(&quot;/fallback&quot;)
  public Mono&amp;lt;String&amp;gt; fallback() {
    // Write your custom handler logic here
    return Mono.just(&quot;fallback&quot;);
  }
}

@ConfigurationProperties
class UriConfiguration {
  private String httpbin = &quot;http://httpbin.org:80&quot;;
  public String getHttpbin() {
    return httpbin;
  }
  public void setHttpbin(String httpbin) {
    this.httpbin = httpbin;
  }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The above simple example shows the gateway code living inside your Spring Boot app, making your service a gateway and application rolled into one. While this technique offers tremendous flexibility, it also means that gateway logic becomes tightly coupled with your business logic. Every time you need to change, for example, a simple routing logic, you’ll be deploying application code. Fun times during incident response, right?&lt;/p&gt;&lt;h2 id=&quot;when-spring-cloud-gateway-makes-sense&quot;&gt;When Spring Cloud Gateway Makes Sense&lt;/h2&gt;&lt;p&gt;Don&apos;t get us wrong, we&apos;re not here to bash Spring Cloud Gateway. Spring Cloud Gateway has legitimate use cases and impressive strengths.&lt;/p&gt;&lt;p&gt;If your organization has a small engineering team (think 5-10 developers) who are already neck-deep in the Spring ecosystem, and your API gateway needs are straightforward, it can be perfect. With a minimal learning curve, you can leverage familiar Spring patterns, integrate seamlessly with other Spring packages, and use existing tooling around Spring Boot. For teams that think in Java, implementing gateway logic as program code can be faster than learning new configuration formats or deployment patterns.&lt;/p&gt;&lt;p&gt;Because you&apos;re writing everything in Java, you can implement virtually any custom logic you need. Want to perform complex request transformations based on database lookups? No problem. Need to implement custom authentication flows that integrate with your existing Java libraries? Spring Cloud Gateway gives you complete control.&lt;/p&gt;&lt;p&gt;However, these strengths come with significant caveats that become more apparent as organizations scale.&lt;/p&gt;&lt;h2 id=&quot;the-hidden-costs-of-embedded-gateway-logic&quot;&gt;The Hidden Costs of Embedded Gateway Logic&lt;/h2&gt;&lt;p&gt;We met a fintech startup that said the Spring-only approach worked for them beautifully at first. They had three microservices, all Java-based, and needed some custom auth logic that integrated with their existing setup. Spring Cloud Gateway let them move fast without introducing new infrastructure complexity.&lt;/p&gt;&lt;p&gt;But the company reached out to us 18 months later when they had grown to 15 services across four product teams. Different teams were implementing policies differently, making API versioning and security requirements inconsistent. Debugging routing issues meant digging through application logs across multiple services. What started as a simple, pragmatic choice had become a coordination nightmare.&lt;/p&gt;&lt;p&gt;As your microservices architecture grows, embedding gateway logic in your applications creates several challenges, as Spring Cloud Gateway makes it so easy to customize everything:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Governance nightmares&lt;/strong&gt;: Every team implements gateway logic differently. Your user service might handle rate limiting one way, while your payment service does it completely differently. Auditing security policies across dozens of services becomes nearly impossible.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Deployment complexity&lt;/strong&gt;: Gateway changes require full application deployments. Need to update a rate-limiting rule? You&apos;re deploying an entire application, not just a tiny configuration change.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Knowledge silos&lt;/strong&gt;: Gateway logic becomes tribal knowledge within each team. Onboarding new developers means they need to understand both business logic and gateway patterns specific to each service.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Performance overhead&lt;/strong&gt;: The JVM startup time and memory footprint affect every service, even those that might not need complex gateway features.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;And we could continue with different error handling patterns, no central visibility into your API surface, multi-service dependencies for routing changes, and so on. &lt;/p&gt;&lt;p&gt;We&apos;ve seen it first-hand. It&apos;s not fun.&lt;/p&gt;&lt;h2 id=&quot;introducing-traefik-hub-the-purpose-built-alternative&quot;&gt;Introducing Traefik Hub: The Purpose-Built Alternative&lt;/h2&gt;&lt;p&gt;Traefik Hub represents a fundamentally different approach. Built on the high-performance Go language and optimized for cloud-native environments, it operates as a dedicated, standalone gateway service that sits in front of your applications—completely decoupled from your business logic.&lt;/p&gt;&lt;p&gt;Instead of embedding code representing gateway logic in your business applications, you define routing and policies as declarative configurations. For example, in Kubernetes environments, using Kubernetes-native Custom Resource Definitions (CRDs):&lt;/p&gt;&lt;pre&gt;&lt;code&gt;apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: user-api-route
spec:
  entryPoints:
    - websecure
  tls:
    certResolver: letsencrypt
  routes:
    - match: Host(`api.example.com`) &amp;amp;&amp;amp; PathPrefix(`/users`)
      kind: Rule
      services:
        - name: user-service
          port: 8080
      middlewares:
        - name: rate-limit
        - name: oidc-auth-check
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This configuration lives outside your application code, making it easier to audit, version control, and modify without touching your business logic.&lt;/p&gt;&lt;p&gt;What&apos;s great about this approach is that your gateway policies become infrastructure as code. Want to update rate limiting? You&apos;re not deploying Java applications; you&apos;re updating simple YAML files that can be reviewed, automatically tested, and rolled back independently.&lt;/p&gt;&lt;h2 id=&quot;technical-head-to-head-comparison&quot;&gt;Technical Head-to-Head Comparison&lt;/h2&gt;&lt;p&gt;Let&apos;s break down the technical differences that actually matter in production:&lt;/p&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Aspect&lt;/th&gt;
&lt;th&gt;Spring Cloud Gateway&lt;/th&gt;
&lt;th&gt;Traefik Hub&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Technology Stack&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Java (JVM)&lt;br&gt;- Spring Framework&lt;br&gt;- Project Reactor&lt;br&gt;- Spring Boot&lt;/td&gt;
&lt;td&gt;- Go-based&lt;br&gt;- Built on Traefik Proxy&lt;br&gt; - Kubernetes-native&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Environment Support&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Spring Boot microservices&lt;br&gt; - JVM environments&lt;/td&gt;
&lt;td&gt;Infrastructure-agnostic:&lt;br&gt; - Cloud&lt;br&gt; - Multi-cloud&lt;br&gt; - Hybrid&lt;br&gt; - On-premises&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Configuration&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Imperative&lt;br&gt; - Java program code-driven&lt;/td&gt;
&lt;td&gt;- Fully declarative&lt;br&gt; - GitOps-native&lt;br&gt; - YAML/TOML/text labels&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Protocols Supported&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- HTTP/1&lt;br&gt; - HTTP/2 (only when using Reactor Netty, Tomcat, Jetty, or Undertow as web servers)&lt;br&gt; - Other protocols are either experimental, or require further dependencies, or are not supported&lt;/td&gt;
&lt;td&gt;- HTTP/1/2/3&lt;br&gt; - TCP&lt;br&gt; - UDP&lt;br&gt; - WebSockets&lt;br&gt; - gRPC&lt;br&gt; -All of them are production-ready&lt;br&gt; and out of the box&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Traffic Management&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Predicate/filter-based routing&lt;br&gt; - Path rewriting&lt;/td&gt;
&lt;td&gt;- Dynamic expression-based routing&lt;br&gt; - Automatic service discovery through various providers&lt;br&gt; - Load balancing&lt;br&gt; - Traffic mirroring&lt;br&gt; - Blue/green&lt;br&gt; - Canary deployments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Governance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Decentralized, per-team&lt;br&gt; - Rate limiting&lt;br&gt; - Circuit breakers&lt;br&gt; - Relies on Spring Security extensions&lt;/td&gt;
&lt;td&gt;- Centralized policies&lt;br&gt; - Built-in distributed rate limiting&lt;br&gt; - OPA integration&lt;br&gt; - Multi-cluster dashboard&lt;br&gt; - Audit trails&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Security&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;OAuth2, JWT, mTLS, RBAC via Spring Security integration&lt;/td&gt;
&lt;td&gt;OIDC, LDAP, JWT, HMAC, OAuth2, API keys, OPA policy enforcement, Coraza WAF&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Deployment&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Embedded in various sprawling Spring Boot microservices, JVM runtime required&lt;/td&gt;
&lt;td&gt;Standalone gateway service, native Kubernetes and other container orchestration integration, and optimized for cloud-native environments&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Performance&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;- Intermediate byte code&lt;br&gt; - JVM startup + runtime overhead&lt;/td&gt;
&lt;td&gt;- Native binary&lt;br&gt; - High throughput&lt;br&gt; - Low latency&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Observability&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Per-service monitoring, usually requiring additional tools such as Micrometer and Spring Boot Actuator&lt;/td&gt;
&lt;td&gt;Unified real-time dataflow metrics with first-class OpenTelemetry metrics, distributed tracing, and logs; pre-built Grafana dashboards, traffic debugger&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Learning Curve&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Familiar with Java teams&lt;/td&gt;
&lt;td&gt;New concepts to Java folks, but standardized, shared by 3.4+ billion Traefik downloads worldwide&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;&lt;strong&gt;Extension Model&lt;/strong&gt;&lt;/td&gt;
&lt;td&gt;Spring-based filters/predicates; custom Java plugins and packages&lt;/td&gt;
&lt;td&gt;Go and WebAssembly (WASM) plugins; language-independent middleware&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;p&gt;With Spring Cloud Gateway, as you can see, most of the time you&apos;re either writing custom code or hoping someone else has solved your problem.&lt;/p&gt;&lt;h2 id=&quot;migrating-custom-logic-from-java-filters-to-go-plugins&quot;&gt;Migrating Custom Logic: From Java Filters to Go Plugins&lt;/h2&gt;&lt;p&gt;One common concern about moving from Spring Cloud Gateway to Traefik Hub is: &quot;What about our custom logic? We&apos;re a Java shop!&quot; The good news is that most custom gateway logic can be translated into Traefik&apos;s built-in middleware or plugins.&lt;/p&gt;&lt;p&gt;Here&apos;s an example of implementing API Key authentication:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Spring Cloud Gateway (Java)&lt;/strong&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;// Custom-built API Key auth since it&apos;s not available out of the box
@Component
public class ApiKeyAuthFilter implements GatewayFilter {

    private static final String API_KEY_HEADER = &quot;X-API-Key&quot;;
    private static final String VALID_API_KEY = &quot;your-api-key&quot;; // Ideally fetched from a configuration file with additional file handling logic polluting the gateway

    @Override
    public Mono&amp;lt;Void&amp;gt; filter(ServerWebExchange exchange, GatewayFilterChain chain) {
        List&amp;lt;String&amp;gt; apiKeyHeaders = exchange.getRequest().getHeaders().get(API_KEY_HEADER);
        if (apiKeyHeaders == null || apiKeyHeaders.isEmpty() || !VALID_API_KEY.equals(apiKeyHeaders.get(0))) {
            exchange.getResponse().setStatusCode(HttpStatus.UNAUTHORIZED);
            return exchange.getResponse().setComplete();
        }
        return chain.filter(exchange);
    }
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Traefik Plugin (Go)&lt;/strong&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;// You don&apos;t need a custom plugin for API Keys, it&apos;s already built-in! :)
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code&gt;# Use this YAML config instead:
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: apikey-auth
spec:
  plugin:
    apiKey:
      keySource:
        header: X-API-Key
      secretValues:
        - &quot;urn:k8s:secret:apikey:secret&quot; # your-api-key
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And as you can see, most of the time, for the usual, standard auth and API traffic management use cases, it’s not even needed to write custom code, just a couple of configuration lines.&amp;nbsp;&lt;/p&gt;&lt;p&gt;While there&apos;s a learning curve for Java teams adopting Go, even writing a custom plugin often results in simpler, more maintainable code that&apos;s easier to test and deploy independently. And here&apos;s the kicker: you can also write plugins in WebAssembly, which means you could technically write them in Java if you really wanted to (though we wouldn&apos;t recommend it).&lt;/p&gt;&lt;h2 id=&quot;the-strategic-shift-centralized-gateway-governance&quot;&gt;The Strategic Shift: Centralized Gateway Governance&lt;/h2&gt;&lt;p&gt;The real decision isn&apos;t just about technology: it&apos;s about organizational strategy. Embedding gateway logic in applications might seem a simpler effort initially, but it often creates long-term governance challenges:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;With Spring Cloud Gateway, auditing authentication and authorization policies requires examining code across dozens of repositories. With centralized gateways, your security policies are defined in one place, version-controlled, and auditable by anyone with basic YAML knowledge.&lt;/li&gt;&lt;li&gt;When you need to &lt;strong&gt;optimize performance, routing, or implement new caching strategies&lt;/strong&gt;, embedded gateways require coordinated updates across multiple teams. Centralized gateways allow instant, organization-wide improvements.&lt;/li&gt;&lt;li&gt;New &lt;strong&gt;regulatory requirements&lt;/strong&gt; often demand changes to logging, rate limiting, or data handling. Centralized gateways make these compliance updates trivial; embedded gateways turn them into massive coordination efforts.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;And the hidden costs nobody talks about: debugging time when issues span multiple services with different gateway implementations. Lost revenue during the extended time to recover from failures. Coordination overhead when you need to make changes across teams. Infrastructural cost overhead from running JVM instances under every service. Knowledge transfer costs when developers move between teams.&lt;/p&gt;&lt;p&gt;With centralized gateways, you&apos;re trading some initial investment for long-term operational simplicity. Most teams find the break-even point somewhere around 6-12 months.&lt;/p&gt;&lt;h2 id=&quot;planning-for-api-growth-the-developer-portal-advantage&quot;&gt;Planning for API Growth: The Developer Portal Advantage&lt;/h2&gt;&lt;p&gt;One often-overlooked benefit of centralized gateways like Traefik Hub is their integration with &lt;a href=&quot;https://traefik.io/traefik-hub?ref=containous.ghost.io&quot;&gt;&lt;u&gt;API management&lt;/u&gt;&lt;/a&gt; platforms. As your API ecosystem grows, you&apos;ll likely need:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;API documentation&lt;/strong&gt;: Centralized gateways can automatically generate OpenAPI specifications even for legacy services&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Developer onboarding&lt;/strong&gt;: Self-service API access with automated provisioning on a developer portal&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Usage analytics&lt;/strong&gt;: Understanding which APIs are used, by whom, and how&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Lifecycle management&lt;/strong&gt;: Versioning, deprecation, and migration strategies&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;These capabilities are much harder to implement when gateway logic is scattered across individual services.&lt;/p&gt;&lt;h2 id=&quot;a-decision-framework-that-actually-works&quot;&gt;A Decision Framework That Actually Works&lt;/h2&gt;&lt;p&gt;Stick with Spring Cloud Gateway if:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You&apos;re a small, cohesive team (under 10 developers), and don’t plan to grow&lt;/li&gt;
&lt;li&gt;You&apos;re deeply invested in Spring and don&apos;t plan to introduce new frameworks or languages&lt;/li&gt;
&lt;li&gt;Your gateway needs are simple and unlikely to evolve significantly&lt;/li&gt;
&lt;li&gt;You value development speed over operational consistency&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Move to Traefik Hub if:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;You&apos;re scaling beyond a single team&lt;/li&gt;
&lt;li&gt;Governance and standardization are becoming pain points&lt;/li&gt;
&lt;li&gt;You want to separate infrastructure concerns from application logic&lt;/li&gt;
&lt;li&gt;Performance and resource efficiency matter&lt;/li&gt;
&lt;li&gt;You&apos;re adopting cloud/Kubernetes/GitOps-native practices and want infrastructure as code&lt;/li&gt;
&lt;li&gt;You need unified observability across all your APIs&lt;/li&gt;
&lt;li&gt;You find beauty in configuring existing middlewares and plugins without writing too much custom code&lt;/li&gt;
&lt;li&gt;You want to future-proof your infrastructure&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;the-migration-its-doable&quot;&gt;The Migration? It&apos;s Doable!&lt;/h2&gt;&lt;p&gt;If you&apos;re considering a migration, here&apos;s a timeline that&apos;s worked for several organizations we&apos;ve helped.&lt;/p&gt;&lt;h3 id=&quot;months-1-2-assessment-phase&quot;&gt;&lt;strong&gt;Months 1-2: Assessment Phase&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Start by cataloging what you actually have. Most teams are surprised by how much custom logic they&apos;ve accumulated. Document the patterns, identify the truly custom stuff versus the boilerplate.&lt;/p&gt;&lt;h3 id=&quot;months-3-4-proof-of-concept&quot;&gt;&lt;strong&gt;Months 3-4: Proof of Concept&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Pick your simplest service and migrate it first. This gives you experience with Traefik Hub without risking your most critical flows. Translate any custom logic to built-in middleware or plugins during this phase.&lt;/p&gt;&lt;h3 id=&quot;months-5-8-gradual-rollout&quot;&gt;&lt;strong&gt;Months 5-8: Gradual Rollout&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;New services use the centralized gateway first. Then migrate existing services in complexity order: simple routing rules first, complex custom logic last. Or the most painful first and the easiest ones last.&lt;/p&gt;&lt;h3 id=&quot;months-9-12-optimization&quot;&gt;&lt;strong&gt;Months 9-12: Optimization&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;This is where you get the payoff. Implement organization-wide policies, set up proper monitoring, and start seeing the operational benefits.&lt;/p&gt;&lt;p&gt;The key is not to rush it. We&apos;ve seen teams try to migrate everything in a month and create more problems than they solved.&lt;/p&gt;&lt;h2 id=&quot;why-this-should-matter-for-you&quot;&gt;Why This Should Matter for You&lt;/h2&gt;&lt;p&gt;The technology choices you make today affect your team&apos;s growth and flexibility tomorrow. Teams locked into Spring Cloud Gateway are essentially committed to Java-centric environments for the foreseeable future. Teams that understand and embrace modern gateway patterns can work across different technology stacks more easily. From a hiring perspective, it&apos;s easier to find developers who can work with YAML than it is to find experienced Spring specialists. The talent pool is just broader.&lt;/p&gt;&lt;p&gt;The question isn&apos;t really &quot;&lt;em&gt;Spring Cloud Gateway vs. Traefik Hub&lt;/em&gt;.&quot; It&apos;s &quot;&lt;em&gt;embedded gateway logic vs. centralized gateway architecture&lt;/em&gt;.&quot; The technology choices flow from that strategic decision. And the best technology decision is the one that lets your team ship features instead of debugging infrastructure. Choose accordingly.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-169083275181&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;169083275181&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLKXiLBJdgSjJjJGc1ag47avJHCqZmSIqQKPjaL3fhorewC7i72SBzhLsiz3bOsnaxNsyDPEXvYuDyU7ZVE5afewgp71oshSWa9BkOOaMbnBwRkV0Ku6G0Lrtv%2FfztIJOX%2BoR4Bfy%2Fnr7w9POCu5LzTmuJVZShVMIuOwjEzJWUKZ12SY2l4oD%2BRfcGY7VkdVlGyHDfW2YkfjLy89juJb&amp;webInteractiveContentId=169083275181&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Square Image - 1200 x 1200(7)&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-169083275181.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Beyond the Models: Operationalizing Enterprise AI]]></title>
            <description><![CDATA[The success and scalability of your AI initiative is less about the model you choose and much more about your infrastructure for operationalizing it. Here's what you need.]]></description>
            <link>https://traefik.io/how-to-scale-enterprise-ai</link>
            <guid isPermaLink="true">https://traefik.io/how-to-scale-enterprise-ai</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Strategy]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <dc:creator><![CDATA[Sudeep Goswami]]></dc:creator>
            <pubDate>Wed, 30 Jul 2025 14:53:13 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/beyond-the-models-blog---no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;image conveying scaling of AI&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/07/beyond-the-models-blog---no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/07/beyond-the-models-blog---no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/07/beyond-the-models-blog---no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/beyond-the-models-blog---no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Today’s AI landscape moves at a breakneck speed. &lt;a href=&quot;https://huggingface.co/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Hugging Face&lt;/a&gt; alone now hosts nearly two million AI models—hundreds of thousands added each month, exemplifying the astounding pace of innovation. While remarkable, this proliferation creates an often-overlooked challenge: the true difficulty in enterprise AI isn&apos;t picking the perfect model; it’s building a flexible, scalable architecture around it.&lt;/p&gt;&lt;h2 id=&quot;the-real-challenge-operationalizing-ai&quot;&gt;The Real Challenge: Operationalizing AI&lt;/h2&gt;&lt;p&gt;Choosing a model (e.g., GPT-4, Claude, Grok, or Llama) is just the start. The deeper, more pressing issue for enterprises is operationalizing these models effectively. Organizations must navigate complex decisions:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Model Selection&lt;/strong&gt;: Should your organization use open-source models for flexibility, proprietary models for advanced capabilities, or custom-trained models tailored to specialized applications?&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Deployment Environment&lt;/strong&gt;: Is the public cloud the right choice for its scalability, or does your enterprise require the enhanced security of a private cloud? Or maybe the best option is a carefully managed hybrid solution.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Implementation Approach&lt;/strong&gt;: Will your teams benefit more from assembling best-of-breed components internally, choosing vendor-provided turnkey solutions for rapid deployment, or adopting a balanced hybrid approach?&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Most enterprises land somewhere in between—heterogeneous environments are the norm, not the exception. Successfully managing this complexity becomes the defining factor for scalable AI operations.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-193666972579&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:218.63333129882812px; margin-top:60px; margin-bottom:60px;&quot; data-hubspot-wrapper-cta-id=&quot;193666972579&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLvzCORtC7xvSpJUd3HFOZWCkOT%2F9StQbKjsRtkBEz5IZ9%2BdilpbEMV9Lmh2lWqE3x8ZXBnUS%2BDTbsU8QE3xkUkHGLDSK0aNT%2F4lUenhbt%2Bi0Lqb9EHoG7F3%2FfRCHdIo80HG%2BQyKTD7p8P6pTww%2FUl1fJRlT5oQHqdItdf6iU7wYxhKvyAlAYzJ%2FlznAY43o8vtYkZAdWPT1j7A6YoyeN4oa6p3EORr8AVKOmFhyjjMdDWeSzT3P4Rr08xx27mDseN1oWlhDSM%3D&amp;webInteractiveContentId=193666972579&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;AI webinar image&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-193666972579.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;no-ai-without-apis-and-no-apis-without-api-management&quot;&gt;No AI Without APIs. And No APIs Without API Management.&lt;/h2&gt;&lt;p&gt;AI endpoints and APIs are deeply intertwined. APIs have become the lifeblood of &lt;a href=&quot;https://en.wikipedia.org/wiki/Agentic_AI?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;agentic AI&lt;/a&gt; systems, acting as secure bridges for agent workflows, enabling dynamic endpoints for tools, data access, and maximizing operational efficiency. This explosion of APIs necessitates robust API management, turning APIs into the vital control plane for your entire AI infrastructure. They manage secure access, enforce governance, and facilitate dynamic behavior, which is crucial for agentic AI workflows.&lt;/p&gt;&lt;p&gt;APIs also enable enterprises to implement consistent policy enforcement, streamlined developer experience, and comprehensive audit capabilities across their entire AI ecosystem. The rise of agentic AI further underscores the importance of APIs as essential bridges connecting diverse models and applications securely and efficiently.&lt;/p&gt;&lt;h2 id=&quot;avoiding-the-biggest-anti-pattern-in-ai-architecture&quot;&gt;Avoiding the Biggest Anti-Pattern in AI Architecture&lt;/h2&gt;&lt;p&gt;One common yet detrimental practice is embedding API runtime capabilities directly within the model runtime environment. This creates substantial problems that limit scalability and agility:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Vendor Lock-in&lt;/strong&gt;: Ties your organization to specific model providers, reducing flexibility and increasing costs.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Limited Enterprise Capabilities&lt;/strong&gt;: Embedded APIs frequently lack advanced features needed for large-scale, mission-critical operations.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Non-Standard Compliance&lt;/strong&gt;: Frequently breaks compatibility with widely accepted standards, such as OpenAI’s API specifications, complicating integration and maintenance.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;You might already face these issues if:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Your organization struggles to integrate API token generation seamlessly with existing identity management systems.&lt;/li&gt;&lt;li&gt;You lack standardized, vendor-neutral observability tools for effective monitoring.&lt;/li&gt;&lt;li&gt;Your AI endpoints aren&apos;t easily shareable through centralized developer portals.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Recognizing and addressing these indicators early can significantly enhance your ability to scale AI responsibly.&lt;/p&gt;&lt;h2 id=&quot;strategic-decoupling-through-ai-gateways&quot;&gt;Strategic Decoupling Through AI Gateways&lt;/h2&gt;&lt;p&gt;A superior architectural choice involves strategically decoupling your &lt;strong&gt;model runtime&lt;/strong&gt; from your &lt;strong&gt;API runtime&lt;/strong&gt;, connecting them via an AI gateway such as &lt;a href=&quot;https://traefik.io/solutions/ai-gateway?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Traefik Hub&lt;/a&gt;. Here’s why it matters:&lt;/p&gt;&lt;h3 id=&quot;1-future-proof-flexibility&quot;&gt;1. &lt;strong&gt;Future-Proof Flexibility&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Models constantly evolve. Decoupling ensures seamless integration of new models, allowing your enterprise to adopt emerging technologies quickly without disrupting existing operations.&lt;/p&gt;&lt;h3 id=&quot;2-centralized-scalable-security&quot;&gt;2. &lt;strong&gt;Centralized, Scalable Security&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Manage authentication, authorization, and access control across diverse models centrally, maintaining consistent, enterprise-grade security and guardrail policies regardless of which model your applications consume.&lt;/p&gt;&lt;h3 id=&quot;3-infrastructure-and-policy-as-code&quot;&gt;3. &lt;strong&gt;Infrastructure and Policy-as-Code&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Use Kubernetes-native, cloud-native, and infrastructure-as-code (IaC) approaches to automate deployments, significantly reducing operational overhead. Implement and enforce policy standards like semantic caching, guardrails, and content filtering in a structured and version-controlled manner.&lt;/p&gt;&lt;h3 id=&quot;4-vendor-neutral-observability&quot;&gt;4. &lt;strong&gt;Vendor-Neutral Observability&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Leverage OpenTelemetry to achieve consistent, vendor-neutral monitoring of metrics, logs, and traces across your entire infrastructure, ensuring deep visibility and efficient troubleshooting capabilities.&lt;/p&gt;&lt;h2 id=&quot;practical-deployment-scenarios&quot;&gt;Practical Deployment Scenarios&lt;/h2&gt;&lt;p&gt;Let’s look at how strategic decoupling works practically:&lt;/p&gt;&lt;h3 id=&quot;private-cloud-with-containerized-models&quot;&gt;&lt;strong&gt;Private Cloud with Containerized Models&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Deploy GPU-accelerated, containerized models using platforms like NVIDIA NIMs or KServe:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Centralized API gateways handle developer portals, JWT authentication, rate limiting, and PII masking.&lt;/li&gt;&lt;li&gt;Semantic caching via &lt;a href=&quot;https://redis.io/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Redis&lt;/a&gt;, &lt;a href=&quot;https://milvus.io/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Milvus&lt;/a&gt;, or &lt;a href=&quot;https://weaviate.io/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Weaviate&lt;/a&gt; improves efficiency and cost management.&lt;/li&gt;&lt;li&gt;Advanced routing and canary deployments enable the safe and dynamic introduction of new models, reducing risk and accelerating innovation.&lt;/li&gt;&lt;li&gt;Observability metrics allow for custom scaling flows based on AI specific metrics like token count, latency per model, and more.&lt;/li&gt;&lt;/ul&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/-1-Private-Cloud-NIMs.png&quot; class=&quot;kg-image&quot; alt=&quot;AI gateway diagram in public cloud with NIMs&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1368&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/07/-1-Private-Cloud-NIMs.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/07/-1-Private-Cloud-NIMs.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/07/-1-Private-Cloud-NIMs.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2025/07/-1-Private-Cloud-NIMs.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h3 id=&quot;public-cloud-managed-services&quot;&gt;&lt;strong&gt;Public Cloud Managed Services&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Using managed services like AWS Bedrock, Azure AI Foundry, Google Vertex AI, or OCI GenAI:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Standardize API interactions via AI gateways integrated with OpenAI-compatible proxies.&lt;/li&gt;&lt;li&gt;Maintain governance through centralized policy controls and cloud identity providers.&lt;/li&gt;&lt;li&gt;Enable model switching and updates without any client-side disruptions.&lt;/li&gt;&lt;li&gt;Provide unified developer experiences across different managed services.&lt;/li&gt;&lt;/ul&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/08/Public-Cloud-Azure.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1368&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/08/Public-Cloud-Azure.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/08/Public-Cloud-Azure.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/08/Public-Cloud-Azure.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2025/08/Public-Cloud-Azure.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;&lt;/p&gt;&lt;h2 id=&quot;scaling-responsibly-guardrails-and-cost-efficiency&quot;&gt;Scaling Responsibly: Guardrails and Cost Efficiency&lt;/h2&gt;&lt;p&gt;To scale AI responsibly and economically, you’ll need the following capabilities:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Content Guardrails&lt;/strong&gt;: Use gateways to enforce responsible AI practices by masking, blocking, or simply flagging sensitive data, inappropriate data, or off-topic content.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Semantic Caching&lt;/strong&gt;: Implement semantic caching to reduce redundant inferencing, significantly cutting costs and enhancing performance.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Dynamic Routing and Experimentation&lt;/strong&gt;: Avoid hard-coding models to applications; dynamically route traffic to test and optimize model performance seamlessly, ensuring flexibility and robustness.&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;start-small-build-for-scale&quot;&gt;Start Small, Build for Scale&lt;/h2&gt;&lt;p&gt;Enterprises often face complexity paralysis. The solution is incremental yet strategic:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Begin with an AI Gateway&lt;/strong&gt;: Establish this crucial decoupling foundation to enable flexibility from the outset.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Incorporate API Management&lt;/strong&gt;: Layer in robust governance, comprehensive observability, and efficient developer experience.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Progressively Add Policies&lt;/strong&gt;: Gradually expand with semantic caching, content filters, and detailed usage policies to enhance security and efficiency.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Prepare for Agentic AI&lt;/strong&gt;: Build readiness for autonomous workflows and multi-model dynamic interactions, positioning your enterprise as a leader in next-generation AI.&lt;/li&gt;&lt;/ol&gt;&lt;h2 id=&quot;the-bottom-line&quot;&gt;The Bottom Line&lt;/h2&gt;&lt;p&gt;True scalability in enterprise AI isn’t about betting on today&apos;s &quot;best&quot; model—it’s about building an adaptable, resilient architecture. By decoupling runtimes, implementing robust API management, and adhering to open standards, enterprises can confidently face the challenges that lie ahead in AI advancements.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Remember:&lt;/strong&gt; &lt;em&gt;Models are commodities&lt;/em&gt;. Architecture is your strategic advantage. Build wisely, and you’ll not just scale AI, you&apos;ll scale your enterprise&apos;s agentic future.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-193666972579&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:218.63333129882812px; margin-top:60px; margin-bottom:60px;&quot; data-hubspot-wrapper-cta-id=&quot;193666972579&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLvzCORtC7xvSpJUd3HFOZWCkOT%2F9StQbKjsRtkBEz5IZ9%2BdilpbEMV9Lmh2lWqE3x8ZXBnUS%2BDTbsU8QE3xkUkHGLDSK0aNT%2F4lUenhbt%2Bi0Lqb9EHoG7F3%2FfRCHdIo80HG%2BQyKTD7p8P6pTww%2FUl1fJRlT5oQHqdItdf6iU7wYxhKvyAlAYzJ%2FlznAY43o8vtYkZAdWPT1j7A6YoyeN4oa6p3EORr8AVKOmFhyjjMdDWeSzT3P4Rr08xx27mDseN1oWlhDSM%3D&amp;webInteractiveContentId=193666972579&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;AI webinar image&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-193666972579.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[The Great Kubernetes Ingress Transition: From ingress-nginx EoL to Modern Cloud-Native]]></title>
            <description><![CDATA[Traefik v3.5 now supports ingress-nginx configurations and annotations, allowing organizations to migrate to a trusted, cloud- and Kubernetes-native ingress solution.]]></description>
            <link>https://traefik.io/transition-from-ingress-nginx-to-traefik</link>
            <guid isPermaLink="true">https://traefik.io/transition-from-ingress-nginx-to-traefik</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Announcements]]></category>
            <category><![CDATA[Kubernetes]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Thu, 24 Jul 2025 15:01:13 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/ingress-transition-blog-no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Migrating from ingress-nginx to Traefik is easy&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/07/ingress-transition-blog-no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/07/ingress-transition-blog-no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/07/ingress-transition-blog-no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/ingress-transition-blog-no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;the-uncomfortable-reality-of-maintenance-mode&quot;&gt;&lt;strong&gt;The Uncomfortable Reality of Maintenance Mode&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;The Kubernetes ingress landscape faces an unprecedented crisis. With ingress-nginx &lt;a href=&quot;https://github.com/kubernetes/ingress-nginx/issues/13002?ref=containous.ghost.io&quot;&gt;&lt;u&gt;officially projected to enter maintenance mode&lt;/u&gt;&lt;/a&gt;, thousands of organizations running critical production workloads suddenly find themselves at a crossroads. No new features. No major improvements. Just maintenance patches for a controller that powers much of the internet&apos;s Kubernetes traffic.&lt;/p&gt;&lt;p&gt;This isn&apos;t just another project lifecycle transition—it&apos;s an infrastructure emergency waiting to happen. The &lt;a href=&quot;https://traefik.io/blog/traefik-vs-ingressnightmare-security-by-design-in-the-age-of-critical-vulnerabilities?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#IngressNightmare vulnerabilities&lt;/u&gt;&lt;/a&gt; revealed fundamental architectural flaws that go beyond patchable bugs. When your ingress controller can be compromised through malicious configuration injection, you&apos;re dealing with systemic design problems, not isolated incidents.&lt;/p&gt;&lt;p&gt;The proposed solution? &lt;a href=&quot;https://github.com/kubernetes-sigs/ingate?ref=containous.ghost.io&quot;&gt;&lt;u&gt;InGate&lt;/u&gt;&lt;/a&gt;—a complete rewrite that exists today as little more than an ambitious roadmap with a handful of commits. The timeline? Years of development before reaching production readiness. The reality is organizations can&apos;t wait years to address critical security vulnerabilities that exist now.&lt;/p&gt;&lt;p&gt;Meanwhile, platform teams face an impossible choice: continue running outdated and vulnerable infrastructure or embark on disruptive migrations to entirely different ingress solutions, losing years of operational knowledge and configuration investments in the process.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-200447400265&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:255.078125px; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;200447400265&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJCe9KSti2fIjAGN00QLv%2BhveKyX01rQK3P%2BApZUPbgXkDiAPKHi6VA2kwZhYdhk5dHmM2ZFUjorr%2FHYOAvEE1cBtKqN6S0fCanbAjhu96jEpqzyojzScMRVfs%2Fb%2BRInWxcJbQgCqZF3qZXuhvdvL82kfJcPT4oS95%2BT9hVVnoERwqsrSriuCTk9MAETrkhdT9T%2FRn9uNTfJVeP&amp;webInteractiveContentId=200447400265&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;replace-ingress-nginx-lp-header-1&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-200447400265.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;key-requirements-for-a-new-ingress-controller&quot;&gt;&lt;strong&gt;Key Requirements for a New Ingress Controller&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;With ingress-nginx entering maintenance mode and InGate still years from production readiness, a gap has emerged in the ingress controller world. The Kubernetes community faces an immediate and critical challenge: the need for a new ingress controller. The stakes are incredibly high, given that ingress-nginx currently powers millions of these workloads. Therefore, any viable solution must meet four non-negotiable requirements.&lt;/p&gt;&lt;h3 id=&quot;1-security-by-design&quot;&gt;1. Security by Design&lt;/h3&gt;&lt;p&gt;The controller must be architecturally immune to the template injection vulnerabilities that plague NGINX-based solutions. This means no raw configuration templating, no dynamic library loading, and no string interpolation of user inputs into configuration files.&lt;/p&gt;&lt;h3 id=&quot;2-broad-ecosystem-adoption&quot;&gt;2. Broad Ecosystem Adoption&lt;/h3&gt;&lt;p&gt;Any replacement must have proven production scalability and a thriving community. Organizations can&apos;t afford to bet their infrastructure on experimental or niche solutions during a critical transition period.&lt;/p&gt;&lt;h3 id=&quot;3-gateway-api-leadership&quot;&gt;3. Gateway API Leadership&lt;/h3&gt;&lt;p&gt;The future of Kubernetes networking lies in Gateway API, not “legacy” Ingress resources. The ideal controller should be a leader in Gateway API implementation, providing a clear migration path toward modern standards.&lt;/p&gt;&lt;h3 id=&quot;4-ingress-nginx-compatibility&quot;&gt;4. ingress-nginx Compatibility&lt;/h3&gt;&lt;p&gt;Most critically, there must be a practical migration path that respects existing investments. Organizations have spent years building expertise around ingress-nginx annotations and configurations—this knowledge shouldn&apos;t become obsolete overnight.&lt;/p&gt;&lt;h2 id=&quot;can-traefik-be-the-one&quot;&gt;&lt;strong&gt;Can Traefik be the One?&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Given Traefik&apos;s wide adoption across the cloud-native ecosystem, it&apos;s worth exploring whether it could satisfy these four critical requirements and serve as a practical bridge during this transition period. Here&apos;s how Traefik aligns to the four requirements we just discussed:&lt;/p&gt;&lt;h3 id=&quot;security-a-decade-of-secure-by-design-architecture&quot;&gt;&lt;strong&gt;Security: A Decade of Secure-by-Design Architecture&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Traefik&apos;s security advantages aren&apos;t accidental—they&apos;re the result of fundamental architectural decisions made a decade ago. When I designed Traefik ten years ago, I made some critical architecture decisions:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Go over C/C++&lt;/strong&gt;: Choosing Go eliminated entire classes of memory safety vulnerabilities and optimized for interoperability with the cloud-native ecosystem&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Static linking over dynamic libraries&lt;/strong&gt;: It is impossible to execute code not already part of the binary and the code base&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Structured parsing over templating&lt;/strong&gt;: Configuration inputs are parsed into strongly typed Go structs, not interpolated into template strings&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Minimal attack surface&lt;/strong&gt;: No external component, like admission controllers, have elevated cluster privileges&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;These weren&apos;t performance optimizations—they were security-first decisions that have proven prescient in light of today&apos;s threats.&lt;/p&gt;&lt;h3 id=&quot;adoption-battle-tested-at-scale&quot;&gt;&lt;strong&gt;Adoption: Battle-Tested at Scale&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Traefik isn&apos;t an experimental solution—it&apos;s a proven platform trusted by organizations worldwide:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;3.4+ billion downloads&lt;/strong&gt; across its lifetime&lt;/li&gt;&lt;li&gt;&lt;strong&gt;55,000+ GitHub stars &lt;/strong&gt;and growing showcasing a strong preference&lt;/li&gt;&lt;li&gt;&lt;strong&gt;800+ contributors&lt;/strong&gt; actively developing and maintaining the codebase&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Production deployments&lt;/strong&gt; in a wide range of startups and enterprises&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Cloud-native DNA&lt;/strong&gt; built specifically for dynamic, containerized environments&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Unlike solutions built for traditional infrastructure and later adapted for Kubernetes, Traefik was designed from the ground up for cloud-native environments where services appear and disappear dynamically. For a decade, Traefik&apos;s modern and flexible architecture has been proven extremely reliable at scale across a wide range of enterprise deployments.&lt;/p&gt;&lt;h3 id=&quot;gateway-api-leading-the-standard&quot;&gt;&lt;strong&gt;Gateway API: Leading the Standard&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Traefik leads Gateway API development and ensures seamless compatibility. As a key contributor to the Gateway API specification, Traefik Labs makes compatibility a fundamental design principle from day one.&lt;/p&gt;&lt;p&gt;With Gateway API now &lt;strong&gt;production-ready&lt;/strong&gt; and positioned to become the new standard for exposing workloads in Kubernetes over the coming years, early adoption becomes a strategic advantage rather than a risky experiment. Organizations investing in Gateway API today are building toward the inevitable future of Kubernetes networking.&lt;/p&gt;&lt;p&gt;With &lt;strong&gt;full Gateway API v1.3 support&lt;/strong&gt; &lt;a href=&quot;https://traefik.io/blog/traefik-proxy-v3-5?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;in Traefik v3.5&lt;/a&gt;, organizations gain access to the most advanced Kubernetes networking capabilities available.&lt;/p&gt;&lt;p&gt;This represents true leadership in the future of Kubernetes networking. While other solutions treat Gateway API as an experimental add-on, Traefik has made it a core competency, positioning organizations for the networking standards that will define the next decade of cloud-native infrastructure.&lt;/p&gt;&lt;h3 id=&quot;ingress-nginx-compatibility-the-missing-piece&quot;&gt;&lt;strong&gt;Ingress NGINX Compatibility: The Missing Piece&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;The final requirement—practical migration support—has been the missing piece ... until now.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/traefik-nginx-together-1.png&quot; class=&quot;kg-image&quot; alt=&quot;Traefik and NGINX Working Together&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;500&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;making-traefik-nginx-compatible&quot;&gt;&lt;strong&gt;Making Traefik NGINX Compatible&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Rather than building yet another ingress controller from scratch, we focused on three core objectives that would provide immediate value to the community:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Support the most common use cases&lt;/strong&gt;: We analyzed real-world ingress-nginx deployments and prioritized the annotations that represent 80% of actual usage.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Preserve existing investments&lt;/strong&gt;: We wanted organizations to use their existing ingress-nginx resources without modification. Teams shouldn&apos;t need to rewrite manifests, retrain engineers, or disrupt operational workflows in this transition.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Eliminate injection vulnerabilities&lt;/strong&gt;: Most critically, we wanted to securely parse NGINX ingress resources and transform them into Traefik&apos;s internal object configuration.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This approach offers compelling advantages:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Leverage existing strengths&lt;/strong&gt;: Security, performance, and Gateway API leadership&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Respect user investments&lt;/strong&gt;: Preserve years of ingress-nginx expertise and configurations&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Accelerate migration&lt;/strong&gt;: Provide immediate relief rather than years-long development cycles&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Enable gradual transition&lt;/strong&gt;: Bridge from Ingress to modern Gateway API resources.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Here&apos;s a quick look at how it works:&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;iframe width=&quot;660&quot; height=&quot;371&quot; src=&quot;https://www.youtube.com/embed/jTipDMVV8VY?si=25XJ6boarZsDPLg_?rel=0&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h3 id=&quot;how-to-replace-ingress-nginx-with-traefik-step-by-step&quot;&gt;&lt;strong&gt;How to Replace ingress-nginx with Traefik, Step-By-Step&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Let’s say you have an ingress resource deployed on your cluster with ingress-nginx as an ingress controller:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-#&quot;&gt;---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: ingress-with-nginx-annotation
  namespace: default
  annotations:
    # BASIC Authentication
    nginx.ingress.kubernetes.io/auth-type: &quot;basic&quot;
    nginx.ingress.kubernetes.io/auth-secret-type: &quot;auth-file&quot;
    nginx.ingress.kubernetes.io/auth-secret: &quot;default/basic-auth&quot;
    nginx.ingress.kubernetes.io/auth-realm: &quot;Authentication Required&quot;
    # SSL Redirect
    nginx.ingress.kubernetes.io/ssl-redirect: &quot;true&quot;
spec:
  ingressClassName: nginx
  rules:
    - host: whoami.localhost
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: whoami
                port:
                  number: 80
  tls:
    - hosts:
        - whoami.localhost
      secretName: external-certs
---
kind: Secret
apiVersion: v1
metadata:
  name: basic-auth
  namespace: default
type: Opaque
data:
  # user:password
  auth: dXNlcjp7U0hBfVc2cGg1TW01UHo4R2dpVUxiUGd6RzM3bWo5Zz0=
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This snippet exposes a web server with basic authentication and http to https redirection, that can be accessed with the following `curl` command:&lt;/p&gt;&lt;p&gt;&lt;code&gt;curl http://whoami.localhost -L  -u &quot;user:password&quot; --location-trusted&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;If you want to expose with Traefik Proxy, you only need to deploy Traefik and enable the NGINX Provider:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language----&quot;&gt;kind: Deployment
apiVersion: apps/v1
metadata:
  name: traefik
  namespace: default

spec:
  replicas: 1
  selector:
    matchLabels:
      app: traefik

  template:
    metadata:
      labels:
        app: traefik

    spec:
      serviceAccountName: traefik-ingress-controller
      containers:
        - name: traefik
          image: traefik:v3.5.0
          imagePullPolicy: IfNotPresent
          args:
            - --log.level=DEBUG
            - --api.insecure
            - --api.debug
            - --entrypoints.web.address=:80
            - --entrypoints.websecure.address=:443
            - --experimental.kubernetesIngressNGINX
            - --providers.kubernetesIngressNGINX
          ports:
            - name: web
              containerPort: 80
            - name: admin
              containerPort: 8080
            - name: websecure
              containerPort: 443

---
apiVersion: v1
kind: Service
metadata:
  name: traefik
  namespace: default
spec:
  type: LoadBalancer
  selector:
    app: traefik
  ports:
    - protocol: TCP
      port: 80
      name: web
    - protocol: TCP
      port: 443
      name: websecure
    - protocol: TCP
      port: 8080
      name: admin
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;--providers.kubernetesIngressNGINX&lt;/code&gt; will enable Traefik to discover and parse ingress-nginx ingress resources.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Et voilà! &lt;/strong&gt;The web server is exposed by Traefik using the same ingress resource:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-curl&quot;&gt;Hostname: whoami-6f57d5d6b5-19ncq
IP: 127.0.0.1
IP: ::1
IP: 10.42.0.34
IP: fe80:: c498:5aff: fef7:be99
RemoteAddr: 10.42.0.38:47476
GET / HTTP/1.1
Host: whoami.localhost
User-Agent: curl/8.7.1
Accept: */*
Accept-Encoding: gzip
Authorization: Basic dXNlcjpwYXNzd29yZA==
X-Forwarded-For: 10.42.0.1
X-Forwarded-Host: whoami.localhost
X-Forwarded-Port: 443
X-Forwarded-Proto: https
X-Forwarded-Server: traefik-7578bc64c5-pdjqm
X-Real-Ip: 10.42.0.1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As you can see, the migration path from ingress-nginx to Traefik could not be simpler! Bring your existing NGINX ingress resources, Traefik will do the rest.&lt;/p&gt;&lt;p&gt;As a cherry on top, &lt;a href=&quot;https://traefik.io/traefik-hub?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik Hub&lt;/u&gt;&lt;/a&gt; extends the open-source foundation with advanced API &amp;amp; AI Gateway &amp;amp; Management capabilities. This allows teams to start with secure ingress migration and evolve toward full API management capabilities without architectural disruption.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/traefik-hub-api-management.png&quot; class=&quot;kg-image&quot; alt=&quot;Traefik Hub API management capabilities diagram&quot; loading=&quot;lazy&quot; width=&quot;1600&quot; height=&quot;1132&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/07/traefik-hub-api-management.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/07/traefik-hub-api-management.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/traefik-hub-api-management.png 1600w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Traefik API Runtime Platform Core Capabilities&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;h3 id=&quot;full-support-for-high-usage-annotations&quot;&gt;&lt;strong&gt;Full Support for High-Usage Annotations&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;The NGINX Provider doesn&apos;t attempt to support every possible ingress-nginx annotation—instead, we applied a data-driven approach to annotation selection based on real-world usage patterns and migration priorities.&lt;/p&gt;&lt;p&gt;The resulting annotation support spans the most critical operational requirements:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Authentication and authorization mechanisms&lt;/li&gt;&lt;li&gt;SSL/TLS configuration and backend communication&lt;/li&gt;&lt;li&gt;Session management and load balancing preferences&lt;/li&gt;&lt;li&gt;CORS policies for modern web applications&lt;/li&gt;&lt;li&gt;Advanced routing capabilities&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This curated approach means most organizations can migrate their core ingress configurations immediately while gradually adopting Traefik-native features for advanced use cases.&lt;/p&gt;&lt;p&gt;For the complete list of supported annotations, behavioral differences, and configuration examples, see the comprehensive &lt;a href=&quot;https://doc.traefik.io/traefik/master/reference/routing-configuration/kubernetes/ingress-nginx/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;NGINX Ingress Provider routing documentation&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;h2 id=&quot;the-path-forward-community-driven-evolution&quot;&gt;&lt;strong&gt;The Path Forward: Community-Driven Evolution&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;The NGINX Provider isn&apos;t a finished product—it&apos;s a foundation designed for community-driven evolution toward becoming a true drop-in replacement for ingress-nginx.&lt;strong&gt; &lt;/strong&gt;As mentioned, our current implementation focuses on 80% of use cases.&amp;nbsp;&lt;/p&gt;&lt;p&gt;The provider&apos;s architecture makes community contributions straightforward. Adding support for a new annotation typically involves:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Mapping the annotation&lt;/strong&gt; to an equivalent Traefik middleware or option&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Adding tests and documentation&lt;/strong&gt; for the new functionality&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;This isn&apos;t just about building software—it&apos;s about building a sustainable community effort around practical migration needs. Each contribution makes the provider more useful for everyone facing the ingress-nginx transition.&lt;/p&gt;&lt;p&gt;Our long-term vision is clear: build a true drop-in replacement for ingress-nginx that provides both compatibility and modern capabilities.&lt;/p&gt;&lt;h2 id=&quot;solutions-not-promises%E2%80%A6&quot;&gt;&lt;strong&gt;Solutions, Not Promises…&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;The Kubernetes ingress crisis is happening now. ingress-nginx is about to be in maintenance mode. Many critical vulnerabilities have been discovered recently. Organizations need practical solutions today, not promises about tomorrow.&lt;/p&gt;&lt;p&gt;The Traefik NGINX Provider represents a pragmatic approach to an urgent problem. Instead of waiting years for InGate to mature or forcing disruptive migrations to completely different solutions, we&apos;re providing a secure bridge that respects existing investments while enabling future innovation. This isn&apos;t about perfect compatibility yet—it&apos;s about practical migration paths.&amp;nbsp;&lt;/p&gt;&lt;p&gt;The great Kubernetes ingress transition is happening whether we&apos;re ready or not. The question isn&apos;t whether you&apos;ll need to migrate from ingress-nginx—it&apos;s whether you&apos;ll choose a practical bridge that&apos;s available today or wait years for a solution that might never fully materialize.&lt;/p&gt;&lt;p&gt;Be pragmatic, not idealistic. Your production workloads depend on it.&lt;/p&gt;&lt;p&gt;&lt;em&gt;The NGINX Ingress Provider is available as an experimental feature in Traefik 3.5. For complete setup instructions, visit the&lt;/em&gt;&lt;a href=&quot;https://doc.traefik.io/traefik/v3.5/reference/install-configuration/providers/kubernetes/kubernetes-ingress-nginx/?ref=containous.ghost.io&quot;&gt;&lt;em&gt;&lt;u&gt; setup guide&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. For configuration examples and the full list of supported annotations, consult the&lt;/em&gt;&lt;a href=&quot;https://doc.traefik.io/traefik/v3.5/reference/routing-configuration/kubernetes/ingress-nginx/?ref=containous.ghost.io&quot;&gt;&lt;em&gt;&lt;u&gt; routing configuration documentation&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;&lt;em&gt;. Join the conversation and contribute to the future of practical Kubernetes ingress migration.&lt;/em&gt;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-200447400265&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:255.078125px; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;200447400265&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJCe9KSti2fIjAGN00QLv%2BhveKyX01rQK3P%2BApZUPbgXkDiAPKHi6VA2kwZhYdhk5dHmM2ZFUjorr%2FHYOAvEE1cBtKqN6S0fCanbAjhu96jEpqzyojzScMRVfs%2Fb%2BRInWxcJbQgCqZF3qZXuhvdvL82kfJcPT4oS95%2BT9hVVnoERwqsrSriuCTk9MAETrkhdT9T%2FRn9uNTfJVeP&amp;webInteractiveContentId=200447400265&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;replace-ingress-nginx-lp-header-1&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-200447400265.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Traefik Proxy 3.5 "Chabichou": A Delicate Masterpiece]]></title>
            <description><![CDATA[Traefik Proxy 3.5 introduces the NGINX Ingress Provider for seamless ingress-nginx migration, a completely rebuilt React-based dashboard, and more. ]]></description>
            <link>https://traefik.io/traefik-proxy-v3-5</link>
            <guid isPermaLink="true">https://traefik.io/traefik-proxy-v3-5</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Announcements]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <category><![CDATA[Kubernetes]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Thu, 24 Jul 2025 14:55:20 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/traefik-v3.5-ga-no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Traefik Proxy v3.5 GA announcement&quot; loading=&quot;lazy&quot; width=&quot;1568&quot; height=&quot;928&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/07/traefik-v3.5-ga-no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/07/traefik-v3.5-ga-no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/traefik-v3.5-ga-no-copy.jpg 1568w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Traefik Proxy 3.5 has arrived! Codenamed &quot;Chabichou&quot; (the elegant goat cheese from Poitou, France, with its distinctive conical shape and creamy, tangy flavor that develops beautifully with age), this release introduces an exciting Ingress NGINX Provider for seamless &lt;code&gt;ingress-nginx&lt;/code&gt; migration, a completely rebuilt React-based dashboard, and full Gateway API v1.3 support, alongside post-quantum cryptography and enhanced ACME capabilities.&lt;/p&gt;
&lt;p&gt;Let&apos;s unwrap this delicate masterpiece!&lt;/p&gt;
&lt;h2 id=&quot;key-features-of-traefik-proxy-v35&quot;&gt;Key Features of Traefik Proxy v3.5&lt;/h2&gt;&lt;h3 id=&quot;ingress-nginx-provider-your-migration-path-forward&quot;&gt;Ingress NGINX Provider: Your Migration Path Forward&lt;/h3&gt;&lt;p&gt;With ingress-nginx &lt;a href=&quot;https://github.com/kubernetes/ingress-nginx/issues/13002?ref=containous.ghost.io&quot;&gt;entering maintenance mode&lt;/a&gt; and the &lt;code&gt;ingate&lt;/code&gt; project still in early stages, the Kubernetes community needed a clear migration path. That&apos;s where Traefik 3.5 steps in! We&apos;re introducing an experimental Ingress NGINX Provider (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11844?ref=containous.ghost.io&quot;&gt;#11844&lt;/a&gt;) designed to enable ingress-nginx users to migrate seamlessly to Traefik. With it, organizations can continue to use their existing ingress-nginx resources, without modification, directly in Traefik. This transition shouldn&apos;t require teams to rewrite manifests, retrain engineers, or disrupt operational workflows.&lt;/p&gt;
&lt;p&gt;This isn&apos;t about building 100% compatibility with every NGINX annotation—instead, we&apos;re focused on providing a practical migration foundation that covers the most common use cases. Our goal is simple: offer you a drop-in replacement for the majority of scenarios, then enable you to progressively migrate to modern standards like Gateway API at your own pace.&lt;/p&gt;&lt;p&gt;This experimental feature represents our commitment to the community&apos;s needs during this transition period. It supports essential annotations and core functionality, with the potential for rapid evolution based on community feedback and contributions.&lt;/p&gt;&lt;p&gt;We&apos;re excited to see how the community embraces and enhances this foundation! Read more about this in &lt;a href=&quot;https://traefik.io/blog/transition-from-ingress-nginx-to-traefik?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;this deep dive article&lt;/a&gt;.&lt;/p&gt;&lt;h3 id=&quot;dashboard-renaissance-modern-interface-enhanced-dev-experience&quot;&gt;Dashboard Renaissance: Modern Interface, Enhanced Dev Experience&lt;/h3&gt;&lt;p&gt;Say hello to the future of Traefik management! The dashboard has been completely rebuilt using React (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11674?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11674&lt;/u&gt;&lt;/a&gt;), delivering a sleek, responsive, and intuitive interface that makes managing your proxy configuration a pleasure. Additionally, this provides a better development experience with the ability to use mocks in development mode.&lt;/p&gt;&lt;p&gt;The new React-based dashboard provides enhanced performance, better accessibility, and lays the foundation for exciting features in future releases.&lt;/p&gt;&lt;h3 id=&quot;gateway-api-v13-leading-the-kubernetes-evolution&quot;&gt;Gateway API v1.3: Leading the Kubernetes Evolution&lt;/h3&gt;&lt;p&gt;Traefik continues its leadership in Kubernetes networking with complete support for Gateway API v1.3 (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11719?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11719&lt;/u&gt;&lt;/a&gt;). This &lt;a href=&quot;https://kubernetes.io/blog/2025/06/02/gateway-api-v1-3/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;latest specification&lt;/u&gt;&lt;/a&gt; keeps improving this new standard and Traefik remains at the forefront of Kubernetes networking, keeping your infrastructure ahead of the rapidly evolving cloud-native landscape.&lt;/p&gt;&lt;h2 id=&quot;additional-enhancements-that-make-a-difference&quot;&gt;Additional Enhancements That Make a Difference&lt;/h2&gt;&lt;h3 id=&quot;future-ready-security-with-post-quantum-cryptography&quot;&gt;Future-Ready Security with Post-Quantum Cryptography&lt;/h3&gt;&lt;p&gt;Prepare your applications for tomorrow&apos;s security challenges with the introduction of X25519MLKEM768 for Post-Quantum-Secure TLS (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11731?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11731&lt;/u&gt;&lt;/a&gt;). This cutting-edge cryptographic approach ensures your communications remain secure against future quantum computing threats.&lt;/p&gt;&lt;p&gt;Our sincere appreciation goes to &lt;a href=&quot;https://github.com/fzoli?ref=containous.ghost.io&quot;&gt;&lt;u&gt;fzoli&lt;/u&gt;&lt;/a&gt; for implementing this forward-thinking security enhancement that positions Traefik at the front line of cryptographic innovation.&lt;/p&gt;&lt;h3 id=&quot;acme-excellence-enhanced-certificate-management&quot;&gt;ACME Excellence: Enhanced Certificate Management&lt;/h3&gt;&lt;p&gt;Certificate management becomes even more powerful with several key improvements:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;OCSP Stapling Support (&lt;a href=&quot;https://github.com/traefik/traefik/pull/8393?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#8393&lt;/u&gt;&lt;/a&gt;)—Thanks to &lt;a href=&quot;https://github.com/alekitto?ref=containous.ghost.io&quot;&gt;&lt;u&gt;alekitto&lt;/u&gt;&lt;/a&gt; for implementing this performance and security enhancement&lt;/li&gt;&lt;li&gt;HTTP Challenge Delay Configuration (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11643?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11643&lt;/u&gt;&lt;/a&gt;)—Kudos to &lt;a href=&quot;https://github.com/ldez?ref=containous.ghost.io&quot;&gt;&lt;u&gt;ldez&lt;/u&gt;&lt;/a&gt; for adding fine-grained challenge control&lt;/li&gt;&lt;li&gt;ACME Provider HTTP Timeout (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11637?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11637&lt;/u&gt;&lt;/a&gt;)—Appreciation to &lt;a href=&quot;https://github.com/tkw1536?ref=containous.ghost.io&quot;&gt;&lt;u&gt;tkw1536&lt;/u&gt;&lt;/a&gt; for improving reliability and customization&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;advanced-health-check-capabilities&quot;&gt;Advanced Health Check Capabilities&lt;/h3&gt;&lt;p&gt;Health monitoring gets more sophisticated and flexible with unhealthy Interval Configuration (&lt;a href=&quot;https://github.com/traefik/traefik/pull/10610?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#10610&lt;/u&gt;&lt;/a&gt;)—Gratitude to &lt;a href=&quot;https://github.com/sswastik02?ref=containous.ghost.io&quot;&gt;&lt;u&gt;sswastik02&lt;/u&gt;&lt;/a&gt; for more granular health monitoring control&lt;/p&gt;&lt;h3 id=&quot;kubernetes-integration-improvements&quot;&gt;Kubernetes Integration Improvements&lt;/h3&gt;&lt;p&gt;Kubernetes users benefit from enhanced compatibility and consistency: consistent Prefix Matching (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11203?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11203&lt;/u&gt;&lt;/a&gt;)—Our thanks to &lt;a href=&quot;https://github.com/charlie0129?ref=containous.ghost.io&quot;&gt;&lt;u&gt;charlie0129&lt;/u&gt;&lt;/a&gt; for aligning Ingress behavior with Kubernetes documentation standards&lt;/p&gt;&lt;h3 id=&quot;middleware-and-authentication-enhancements&quot;&gt;Middleware and Authentication Enhancements&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Improved ForwardAuth Context Handling (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11817?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11817&lt;/u&gt;&lt;/a&gt;)—Special recognition to &lt;a href=&quot;https://github.com/bengentree?ref=containous.ghost.io&quot;&gt;&lt;u&gt;bengentree&lt;/u&gt;&lt;/a&gt; for better context cancellation handling&lt;/li&gt;&lt;li&gt;Enhanced Error Middleware Visualization (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11806?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11806&lt;/u&gt;&lt;/a&gt;)—Appreciation to &lt;a href=&quot;https://github.com/sevensolutions?ref=containous.ghost.io&quot;&gt;&lt;u&gt;sevensolutions&lt;/u&gt;&lt;/a&gt; for improved StatusRewrites option display&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;plugin-development-evolution&quot;&gt;Plugin Development Evolution&lt;/h3&gt;&lt;p&gt;Plugin developers gain more control and safety with the ability to enable unsafe operations through plugin manifests (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11589?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11589&lt;/u&gt;&lt;/a&gt;). Thanks to &lt;a href=&quot;https://github.com/Rydez?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Rydez&lt;/u&gt;&lt;/a&gt; for expanding the plugin ecosystem&apos;s capabilities.&lt;/p&gt;&lt;h2 id=&quot;a-toast-to-our-exceptional-community&quot;&gt;A Toast to Our Exceptional Community&lt;/h2&gt;&lt;p&gt;Like the careful aging process that creates Chabichou&apos;s distinctive character, Traefik v3.5 is the result of months of dedication from our incredible community. Every bug report, feature request, code contribution, and documentation improvement has shaped this release into something truly special.&lt;/p&gt;&lt;p&gt;To every developer who opened an issue, every contributor who submitted a pull request, every user who provided feedback, and every community member who helped others—you are the artisans behind Traefik&apos;s continued excellence. Your passion and expertise continue to drive innovation in cloud-native networking.&lt;/p&gt;&lt;p&gt;Want to be a part of this awesome community? Join the discussions on our &lt;a href=&quot;https://community.traefik.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Community Forum&lt;/u&gt;&lt;/a&gt; or on &lt;a href=&quot;https://github.com/traefik/traefik?ref=containous.ghost.io&quot;&gt;&lt;u&gt;GitHub&lt;/u&gt;&lt;/a&gt; where ideas flow as freely as conversations in a French café!&lt;/p&gt;&lt;h2 id=&quot;essential-resources-and-next-steps&quot;&gt;Essential Resources and Next Steps&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Download Traefik 3.5: &lt;a href=&quot;https://github.com/traefik/traefik/releases/tag/v3.5.0?ref=containous.ghost.io&quot;&gt;&lt;u&gt;GitHub Releases&lt;/u&gt;&lt;/a&gt; | &lt;a href=&quot;https://hub.docker.com/_/traefik?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Docker Hub&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Documentation: &lt;a href=&quot;https://docs.traefik.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Complete Documentation&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/traefik/traefik?ref=containous.ghost.io&quot;&gt;&lt;u&gt;GitHub Repository&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://community.traefik.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Community Forum&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Learn More: &lt;a href=&quot;https://traefik.io/traefik/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Official Website&lt;/u&gt;&lt;/a&gt; | &lt;a href=&quot;https://traefik.io/blog/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Blog&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Simplifying Enterprise Connectivity: Traefik Labs Expands Microsoft Partnership with Azure Arc and AKS]]></title>
            <description><![CDATA[We're delivering a Kubernetes-native platform that unifies API and AI connectivity via Azure Arc, Azure Kubernetes Service (AKS), and the Azure Marketplace.]]></description>
            <link>https://traefik.io/simplifying-enterprise-connectivity-traefik-labs-expands-microsoft-partnership-with-azure-arc-and-aks</link>
            <guid isPermaLink="true">https://traefik.io/simplifying-enterprise-connectivity-traefik-labs-expands-microsoft-partnership-with-azure-arc-and-aks</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[AI Strategy]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <category><![CDATA[Partners]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Sudeep Goswami]]></dc:creator>
            <pubDate>Wed, 14 May 2025 12:32:48 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/05/Blog@2x-29-1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/05/Blog@2x-29-1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/05/Blog@2x-29-1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/05/Blog@2x-29-1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/05/Blog@2x-29-1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;If you’re steering an enterprise through today’s hybrid and multi-cloud landscape, you’re likely grappling with a paradox: the flexibility of distributed systems fuels innovation, but it also breeds complexity that can stall progress. APIs and AI workloads are the engines of modern business, yet managing them across on-premises data centers, public clouds, and edge locations often feels like navigating a maze.&amp;nbsp;&lt;/p&gt;&lt;p&gt;At Traefik Labs, we’re partnering with Microsoft to transform this challenge into an opportunity, delivering a Kubernetes-native platform that unifies API and AI connectivity via Azure Arc, Azure Kubernetes Service (AKS), and the Azure Marketplace.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Our mission? To simplify your infrastructure, secure your workloads, and accelerate your future.&lt;/p&gt;&lt;h2 id=&quot;the-distributed-enterprise-dilemma&quot;&gt;The Distributed Enterprise Dilemma&lt;/h2&gt;&lt;p&gt;The shift to distributed architectures has unlocked unprecedented agility, but it’s also exposed critical pain points that enterprises can’t ignore. Fragmented API management forces teams to wrestle with manual and UI-centric configurations, leading to security blind spots and operational inefficiencies. AI workloads, with their unique demands for specialized routing, caching, and security, strain legacy platforms, causing performance bottlenecks and architectural conflicts. Inconsistent authentication and policy enforcement create compliance risks, while disruptive migrations to modern API management drain resources and impact customer experiences.&lt;/p&gt;&lt;p&gt;These aren’t just technical hurdles—they’re strategic barriers to innovation and growth. As AI becomes a cornerstone of business transformation, enterprises need a connectivity platform that scales responsibly, governs effectively, and evolves without disruption. That’s where our expanded partnership with Microsoft comes in, offering a unified approach to conquer complexity and empower your teams.&lt;/p&gt;&lt;h2 id=&quot;traefik-and-microsoft-a-vision-for-unified-connectivity&quot;&gt;Traefik and Microsoft: A Vision for Unified Connectivity&lt;/h2&gt;&lt;p&gt;With over 3.3 billion downloads, Traefik Proxy is a cornerstone of cloud-native connectivity. Our collaboration with Microsoft, strengthened through the Azure Arc ISV Partner Program, integrates this expertise with Azure’s ecosystem to deliver seamless API and AI management across any infrastructure. By combining Traefik’s Kubernetes-native simplicity with Azure Arc and AKS, we’re redefining enterprise connectivity.&lt;/p&gt;&lt;p&gt;Let’s explore how.&lt;/p&gt;&lt;h2 id=&quot;azure-arc-seamless-connectivity-across-any-environment&quot;&gt;Azure Arc: Seamless Connectivity Across Any Environment&lt;/h2&gt;&lt;p&gt;Azure Arc enables you to manage Kubernetes clusters anywhere—on-premises, in multiple clouds, or at the edge—through a single control plane. Traefik builds on this foundation, providing a cloud-native application proxy that ensures consistent traffic management and governance across all Arc-enabled environments.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Imagine deploying zero-config API routing that eliminates manual setup, reducing operational overhead from day one. Your security policies are centralized and powered by TLS and AI-specific content guard, ensuring compliance without complexity. You’re even able to optimize AI workloads with semantic caching, slashing latency and computational costs.&lt;/p&gt;&lt;p&gt;This isn’t just about connectivity—it’s about freeing your teams to innovate. With Traefik for Azure Arc, you gain a platform that adapts to your infrastructure, whether you’re running Kubernetes in a data center or scaling AI models at the edge. Our declarative, GitOps-driven approach integrates seamlessly with your CI/CD pipelines, making infrastructure management as agile as your development processes.&lt;/p&gt;&lt;h2 id=&quot;azure-marketplace-streamlined-aks-deployment&quot;&gt;Azure Marketplace: Streamlined AKS Deployment&lt;/h2&gt;&lt;p&gt;Since joining the Azure Marketplace in 2023, Traefik Proxy has empowered AKS users with one-click deployment, integrated billing, and instant scalability. As Microsoft’s recommended ingress controller for AKS baseline architecture, Traefik delivers unmatched compatibility and performance. You can set up advanced traffic management—supporting modern protocols like HTTP/3 and gRPC—in minutes, not hours. GitOps automation ensures your operations are declarative and scalable, while real-time traffic routing based on service health keeps your applications resilient.&lt;/p&gt;&lt;p&gt;For DevOps teams, this means less time configuring infrastructure and more time delivering value. Whether you’re modernizing microservices or launching AI-driven APIs, Traefik on AKS provides a foundation that’s both powerful and intuitive, aligning your Kubernetes strategy with business goals.&lt;/p&gt;&lt;h2 id=&quot;a-progressive-journey-for-every-enterprise&quot;&gt;A Progressive Journey for Every Enterprise&lt;/h2&gt;&lt;p&gt;Whether you’re a retailer streamlining e-commerce APIs, a healthcare provider deploying AI diagnostics, or a SaaS company scaling customer-facing services, your enterprise has unique needs and timelines. That’s why Traefik, integrated with Azure Arc and AKS, offers a three-phase adoption journey that meets you where you are and scales strategically—without disruption or vendor lock-in. This approach ensures immediate wins and long-term success, aligning technology with your business goals.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Phase 1: Application Proxy—Lay the Foundation&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;For teams adopting Kubernetes or managing microservices, our Application Proxy delivers zero-config service discovery, eliminating manual traffic management. Azure Arc enables deployment across on-premises and cloud clusters, while AKS users benefit from one-click setup via the Azure Marketplace. Real-time traffic routing ensures resilience, and Kubernetes CRDs simplify configuration. This phase slashes setup time, letting you launch new services with minimal resources.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Phase 2: API &amp;amp; AI Gateway—Secure and Optimize&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;As complexity grows, our API &amp;amp; AI Gateway unifies security and performance. Azure AD integration secures APIs and AI workloads, while semantic caching and content guard optimize AI traffic, cutting latency and ensuring compliance. Advanced traffic shaping—circuit breaking, retries—maintains stability. Azure Arc’s control plane enforces consistent policies across environments, delivering secure, high-performance connectivity for your distributed systems.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Phase 3: API Management—Drive Strategic Value&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;When APIs and AI are core to your business, our API Management phase empowers you with full lifecycle governance. Self-service developer portals accelerate innovation, unified observability provides actionable insights, and controlled versioning ensures smooth transitions. Azure Arc enables governance across all environments, transforming APIs into revenue-driving assets. This phase positions you to lead with data-driven services.&lt;/p&gt;&lt;p&gt;This journey is your path to agility and growth. By starting with simple routing, scaling to secure AI optimization, and achieving enterprise-grade governance, Traefik and Microsoft empower you to innovate without boundaries.&lt;/p&gt;&lt;h2 id=&quot;the-future-is-unified-and-ai-ready&quot;&gt;The Future Is Unified and AI-Ready&lt;/h2&gt;&lt;p&gt;AI is reshaping competition, but scaling it requires infrastructure that balances performance, cost, and compliance. Traefik’s AI Gateway, integrated with Azure Arc, delivers intelligent semantic caching, context-aware routing, and robust governance for responsible AI. These innovations position you as a leader in a data-driven world.&lt;/p&gt;&lt;p&gt;Our partnership with Microsoft eliminates silos, accelerates API delivery, and unlocks revenue streams. This is the future of connectivity: unified, scalable, and AI-ready.&lt;/p&gt;&lt;h2 id=&quot;take-the-next-step&quot;&gt;Take the Next Step&lt;/h2&gt;&lt;p&gt;Ready to simplify your API and AI connectivity? With Traefik and Microsoft, you have a partner to streamline, secure, and scale your workloads. Here’s how to start:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Deploy on AKS&lt;/strong&gt;: Launch &lt;a href=&quot;https://azuremarketplace.microsoft.com/en-us/marketplace/apps/containous.traefik-proxy?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik via the Azure Marketplace&lt;/u&gt;&lt;/a&gt; for a seamless deployment experience.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Deploy on Azure Arc: &lt;/strong&gt;Launch &lt;a href=&quot;https://azuremarketplace.microsoft.com/en-us/marketplace/apps/containous.traefik-on-arc?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik for Azure Arc&lt;/u&gt;&lt;/a&gt; via the Azure Marketplace and experience the “Any Infrastructure, Any Kubernetes” vision.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Explore Key Use Cases through &lt;/strong&gt;&lt;a href=&quot;https://jumpstart.azure.com/azure_jumpstart_drops?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Azure Jumpstart Drops&lt;/u&gt;&lt;/a&gt;: Discover how Traefik and Azure Arc redefine Kubernetes management, through bite-sized use-cases modules.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Dive Deep with a &lt;/strong&gt;&lt;a href=&quot;https://github.com/traefik-workshops/traefik-microsoft-workshop?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Self-guided Hands-on Lab&lt;/u&gt;&lt;/a&gt;&lt;strong&gt;:&lt;/strong&gt; Walk through the entire three-step journey through a series of self-guided hands-on lab tutorials&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;At Traefik Labs, we’re passionate about helping you build a future where connectivity is seamless and innovation knows no bounds. Let’s take this journey together.&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[5 Smart API Gateway Strategies to Unlock Developer Productivity]]></title>
            <description><![CDATA[How forward-thinking platform teams are transforming developer experience through modern API gateway practices]]></description>
            <link>https://traefik.io/5-smart-api-gateway-strategies-to-unlock-developer-productivity-2</link>
            <guid isPermaLink="true">https://traefik.io/5-smart-api-gateway-strategies-to-unlock-developer-productivity-2</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[Strategy]]></category>
            <dc:creator><![CDATA[Immánuel Fodor]]></dc:creator>
            <pubDate>Mon, 12 May 2025 11:09:19 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/05/Blog@2x-28-1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/05/Blog@2x-28-1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/05/Blog@2x-28-1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/05/Blog@2x-28-1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/05/Blog@2x-28-1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;How forward-thinking platform teams are transforming developer experience through modern API gateway practices&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Developers expect speed and autonomy—and organizations demand control and security. The API gateway sits at the heart of this balancing act. The most successful platform teams are rethinking traditional gateway models, using modern strategies to supercharge developer productivity while maintaining ironclad governance, observability, and performance. Here’s how they’re doing it.&lt;/p&gt;&lt;h2 id=&quot;the-hidden-cost-of-undocumented-infrastructure&quot;&gt;The Hidden Cost of Undocumented Infrastructure&lt;/h2&gt;&lt;p&gt;Before diving into our strategies, allow me to share a personal experience that many platform leaders can relate to. When taking over leadership roles at several organizations, I&apos;ve encountered the substantial challenge of undocumented infrastructure at scale.&lt;/p&gt;&lt;p&gt;The pain of uncovering what actually exists in data centers is like navigating through the &quot;fog of war&quot; in a strategy game like Age of Empires—spending significant time, effort, and money just to understand what you&apos;re working with. In the game, you start with a dark, foggy world, slowly revealing the map as you move forward. But for me, this wasn&apos;t a game—it was our production data centers. Every inch of fog essentially cost us time, money, and sometimes even sleep.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/5-Smart-API-Gateway-Strategies-to-Unlock-Developer-Productivity--1-.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Age of Empires screenshot&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/07/5-Smart-API-Gateway-Strategies-to-Unlock-Developer-Productivity--1-.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/5-Smart-API-Gateway-Strategies-to-Unlock-Developer-Productivity--1-.jpg 960w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;i&gt;&lt;em class=&quot;italic&quot; style=&quot;white-space: pre-wrap;&quot;&gt;Fog of War in Age of Empires: https://altarofgaming.com/age-of-empires-civilizations/&lt;/em&gt;&lt;/i&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;I&apos;ve even seen teams terrified of restarting their production gateway—not because of potential downtime, but because nobody knew what was configured there, what rules it was enforcing, or what custom configurations existed only in memory without any documentation or persistence. The entire setup was extremely fragile.&lt;/p&gt;&lt;p&gt;This painful experience taught me something important: we needed to stop firefighting and start thinking like a platform team. I had to build a team that could shift the mindset from reactive operations to proactive engineering.&lt;/p&gt;&lt;p&gt;When it comes to exposing APIs, frustration typically hits two key personas first: the API publisher who builds, owns, and exposes APIs, and the API consumer who uses these services. The gap between them requires governance that doesn&apos;t limit but empowers productivity. Here are five proven strategies that can transform your API gateway into a developer productivity powerhouse:&lt;/p&gt;&lt;h2 id=&quot;strategy-1-implement-zero-friction-api-onboarding&quot;&gt;Strategy #1: Implement Zero-Friction API Onboarding&lt;/h2&gt;&lt;p&gt;Reducing API integration time from days to minutes isn&apos;t just a dream—it&apos;s achievable with the right approaches. Here&apos;s a surprise, though: when we think about onboarding, we usually think about onboarding developers. But actually, the first persona to face onboarding challenges is the API publisher.&lt;/p&gt;&lt;p&gt;When new team members join or when onboarding a new API into API management, it often takes days, involves tickets, and relies on tribal knowledge. This is where the whole system can break down. By focusing on streamlining the publisher experience first, we create a foundation for developer productivity.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;How Traefik Labs makes this possible:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Declarative configuration&lt;/strong&gt; that allows for version-controlled API definitions&lt;/li&gt;&lt;li&gt;&lt;strong&gt;UI vs. Cluster ownership balance&lt;/strong&gt; - whatever you create from the UI becomes a Custom Resource Definition (CRD) that you can manage through GitOps, making onboarding APIs repeatable and protecting configurations from accidental modification&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Managed subscriptions&lt;/strong&gt; to automate consumer onboarding, potentially eliminating the need for consumers to log into developer portals&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;It&apos;s easy to focus solely on the developer experience—but the API consumer is just as critical. Whether it&apos;s a partner integrating your APIs or an internal team building on top of your services, they need instant clarity, autonomy, and confidence. Yet, too often, consumers are left waiting on documentation, meetings, or manual approvals. The real transformation happens when consumers can discover, evaluate, and subscribe to APIs without delays. By removing these bottlenecks, organizations can accelerate time-to-value for every new integration.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Self-service API portal&lt;/strong&gt; that includes:&lt;ul&gt;&lt;li&gt;Comprehensive API specifications&lt;/li&gt;&lt;li&gt;Self-service subscription options with flexible plans&lt;/li&gt;&lt;li&gt;Try-out features for testing&lt;/li&gt;&lt;li&gt;AI-assisted client code generation through the Alfred AI assistant&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The goal is to achieve onboarding without meetings and waiting times—reducing API integration from days to minutes. This combination dramatically reduces the friction that typically slows down API integration and adoption for both publishers and consumers.&lt;/p&gt;&lt;h2 id=&quot;strategy-2-create-intelligent-observability-feedback-loops&quot;&gt;Strategy #2: Create Intelligent Observability Feedback Loops&lt;/h2&gt;&lt;p&gt;Combining observability with your API gateway provides developers with contextual insights that dramatically reduce debugging time. Your API gateway serves as the gatekeeper of your infrastructure—securing, monitoring, and exposing APIs—making it essential to have visibility into what&apos;s happening at runtime.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Traefik Labs&apos; approach includes:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;OpenTelemetry integration&lt;/strong&gt; that provides metrics, traces, and logs in a unified format to the tools you&apos;re most familiar with, whether self-hosted or cloud-based SaaS offerings&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Observability-as-a-Service&lt;/strong&gt; capabilities through our partnership with Treblle—with a simple plugin installation, you get instant insights into API behavior, compliance issues, and security problems based on observed traffic&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Response debugging tools&lt;/strong&gt; that provide granular visibility into API behavior&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The real power comes from creating feedback loops that correlate deployment events with actual output metrics, traces, and logs. When you configure everything as code, put it in Git, and apply changes through GitOps pipelines, you can quickly identify the cause of unexpected issues. For example, if you suddenly see 500 errors, you can correlate them with recent PRs, which appear as annotations on your monitoring dashboard. This allows you to revert problematic changes quickly, mitigate incidents, and save the business from costly outages.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/05/image.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1298&quot; height=&quot;625&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/05/image.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/05/image.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/05/image.png 1298w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;These tools transform debugging from reactive to proactive, allowing developers to move faster while resolving incidents before they escalate. The result? Significant reductions in time to recover from outages and overall cost savings for the business.&lt;/p&gt;&lt;h2 id=&quot;strategy-3-deploy-runtime-governance-that-empowers-rather-than-restricts&quot;&gt;Strategy #3: Deploy Runtime Governance That Empowers Rather Than Restricts&lt;/h2&gt;&lt;p&gt;Runtime governance needs to shift left while still empowering developers. Although governance puts checks in place, these should provide safe guardrails within which teams can move quickly—not restrictive barriers that slow innovation.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Traefik Labs enables:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Static analysis&lt;/strong&gt; of your configuration in GitOps pipelines to catch configuration errors early and fix them before reaching production&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Impact analysis&lt;/strong&gt; that shows not just what changed but who will be affected by the change—for example, determining if a rate limit or quota configuration modification will impact more users than anticipated&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Pull request workflows&lt;/strong&gt; are enhanced with these semantic outputs that help reviewers understand both the change and its impact&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Open Policy Agent (OPA) policies&lt;/strong&gt; on CRDs for flexible, powerful governance without requiring a separate OPA installation—it&apos;s built directly into the gateway&lt;/li&gt;&lt;li&gt;&lt;strong&gt;OpenAPI Specification (OAS) validation&lt;/strong&gt; to eliminate shadow and zombie APIs, which according to &lt;a href=&quot;https://report.treblle.com/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Treblle&apos;s latest report&lt;/a&gt;, account for 35% of API traffic&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Traefik API Management allows you to set a flag to block every endpoint outside what&apos;s described in the OpenAPI specification. When enabled, all undocumented methods become inaccessible immediately. For legacy systems with undocumented APIs, our partnership with Treblle allows you to build OpenAPI specifications from observed traffic, transforming previously undocumented endpoints into documented ones.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# Also works with API Versions
---
apiVersion: hub.traefik.io/v1alpha1
kind: API
metadata:
  name: invoice-api
spec:
  openApiSpec:
    path: /openapi.yaml
    validateRequestMethodAndPath: true  # one simple setting, much less trouble
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This approach shifts governance left in the development cycle, preventing issues before they become problems while preserving developer autonomy. It&apos;s like having a Swiss army knife for governance—you&apos;re not limited to what the tool offers but have an engine you can fine-tune to create safeguards that enable developers to move faster.&lt;/p&gt;&lt;h2 id=&quot;strategy-4-tame-llms-and-ai-by-turning-them-into-managed-apis&quot;&gt;Strategy #4: Tame LLMs and AI by Turning Them Into Managed APIs&lt;/h2&gt;&lt;p&gt;As AI becomes central to development workflows, new challenges are emerging. The AI landscape is evolving at an unprecedented pace—according to Stanford University&apos;s &lt;a href=&quot;https://hai.stanford.edu/ai-index/2025-ai-index-report?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;latest study,&lt;/a&gt; AI is becoming more powerful each day and is being embedded into everyday life with exponential growth in areas like medical devices. Organizations are going all-in on AI, with various models available worldwide.&lt;/p&gt;&lt;p&gt;With AI endpoints proliferating (&lt;a href=&quot;https://huggingface.co/models?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Hugging Face alone hosts over 1.6 million models&lt;/a&gt;), companies and developer teams are experimenting extensively. This creates a fundamental need for API management and governance specifically tailored to AI workloads.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Traefik Labs&apos; AI Gateway solution includes:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Centralized secret management&lt;/strong&gt; that can turn any AI endpoint into a managed API—you no longer need to expose your OpenAI API key to all your mobile applications deployed to the public&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Semantic caching&lt;/strong&gt; that recognizes when prompts express the same meaning in different natural language sentences, freeing up costly GPU cycles while dramatically improving latency and reducing costs&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Content firewalls&lt;/strong&gt; that protect information flowing to and from AI models, with the ability to block requests/responses or mask sensitive data through a powerful rule-based system using Microsoft&apos;s open-source Presidio engine for natural language processing&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=sb7lPn4hX2A&amp;t=2026s&amp;ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Our demo&lt;/a&gt; shows this in action with a &quot;Traffic Airlines Feedback Service&quot; that uses JWT authentication, OPA middleware for authorization, and content guards to cleanse PII data flowing through the system. We also demonstrate semantic caching with our chat example, where semantically similar queries returned cached results with dramatically improved response times.&lt;/p&gt;&lt;p&gt;These capabilities allow organizations to harness the power of AI while maintaining control over how it&apos;s accessed and utilized—balancing innovation with responsible AI practices.&lt;/p&gt;&lt;h2 id=&quot;strategy-5-build-resilient-api-ecosystems&quot;&gt;Strategy #5: Build Resilient API Ecosystems&lt;/h2&gt;&lt;p&gt;Configuring API networks that reduce developer on-call burden and improve system reliability is essential for sustainable operations. With AI inferencing, additional challenges emerge around versioning, scalability, cost optimization, and handling sensitive data responsibly.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Traefik Labs focuses on:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;High availability configurations&lt;/strong&gt; to ensure consistent service&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Flexible API versioning&lt;/strong&gt; that decouples exposed API versions from model versions, allowing teams to experiment with different models without breaking client applications&lt;/li&gt;&lt;li&gt;&lt;strong&gt;The &lt;/strong&gt;&lt;a href=&quot;https://traefik.io/blog/whos-in-charge-the-shared-responsibility-model-for-api-and-ai-ml-model-versioning/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;strong&gt;shared responsibility model&lt;/strong&gt;&lt;/a&gt; for API and ML model versioning&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Traefik Hub API Management offers an exceptionally flexible versioning system that can match on host, HTTP method, query parameters, headers, IP, authenticated user, and many other request attributes. This puts power in your hands to manage the lifecycle of APIs and AI workloads with less chaos and fewer incidents.&lt;/p&gt;&lt;p&gt;For example, your API might expose a &quot;/v2&quot; endpoint while the model running behind it could be at version 2.2 or 2.3. This decoupling allows you to experiment with and improve models without disrupting clients. With contracts and versioning present as code, you provide a consistent view to clients while enabling experimentation within your organization.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/04/Shared-Responsibility-AI_ML-Diagram.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;706&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/04/Shared-Responsibility-AI_ML-Diagram.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/04/Shared-Responsibility-AI_ML-Diagram.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/04/Shared-Responsibility-AI_ML-Diagram.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2025/04/Shared-Responsibility-AI_ML-Diagram.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;This approach creates resilient systems that can evolve while maintaining compatibility and reducing maintenance overhead—essential for managing both traditional APIs and increasingly important AI workloads.&lt;/p&gt;&lt;h2 id=&quot;putting-it-all-together-from-theory-to-practice&quot;&gt;Putting It All Together: From Theory to Practice&lt;/h2&gt;&lt;p&gt;These strategies aren&apos;t just theoretical, they represent practical approaches that forward-thinking organizations can implement today. Traefik Labs demonstrates a complete infrastructure-as-code environment with Terraform, deploying a K3d cluster with Argo CD, Traefik, KServe for AI inferencing, and various other tools—all fully configurable through GitOps workflows.&lt;/p&gt;&lt;p&gt;We demo two key services:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;A Traefik Airlines Feedback Service that uses JWT middleware, OPA policies, and content guards to provide secure, compliant AI-powered sentiment analysis&lt;/li&gt;&lt;li&gt;A Chat Service that implemented semantic caching to dramatically improve performance and reduce costs when handling similar queries&lt;/li&gt;&lt;/ol&gt;&lt;figure class=&quot;kg-card kg-embed-card&quot;&gt;&lt;iframe width=&quot;200&quot; height=&quot;113&quot; src=&quot;https://www.youtube.com/embed/sb7lPn4hX2A?start=2026&amp;amp;feature=oembed&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen=&quot;&quot; title=&quot;5 Smart API Governance Strategies to Unlock Developer Productivity // Traefik Labs&quot;&gt;&lt;/iframe&gt;&lt;/figure&gt;&lt;h2 id=&quot;unlocking-what%E2%80%99s-next-developer-productivity-starts-at-the-gateway&quot;&gt;Unlocking What’s Next: Developer Productivity Starts at the Gateway&lt;/h2&gt;&lt;p&gt;By transforming your API gateway from a simple traffic management solution into a comprehensive platform for developer productivity, you can accelerate innovation while maintaining the control and visibility your organization needs.&lt;/p&gt;&lt;p&gt;Whether you&apos;re managing a handful of APIs or thousands, or working to integrate AI capabilities responsibly into your applications, these strategies can help you create a more productive, secure, and resilient API ecosystem that drives business value.&lt;/p&gt;&lt;p&gt;Ready to unlock developer productivity through your API gateway? &lt;a href=&quot;https://traefik.io/pricing/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Learn more&lt;/a&gt; about how Traefik Labs can help transform your approach to API management and developer experience in 2025 and beyond.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLIcc0D9FsSCHRnscg4ZnPEwmuo7GvIF8jeOLCA%2FfjU83MBSjzzUAwsND5VeLw8UBONkXl2cY%2FUMbuXWviKVGwv37hyYsESTQsZFx7r0JNrd4YWlJ4SOcmnAARAWrlYs5AZBcdaiLZ%2BdCmMIvGi4NhhiJusWga2rnKD6RRoz9AM%2FNb%2BMNl6%2BRNdmdjmSoJOtBkymRGZQnnmGWg%3D%3D&amp;webInteractiveContentId=184953773165&amp;portalId=5814022&amp;ref=containous.ghost.io&quot;&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Traefik Proxy 3.4 “Chaource” Is Ready to Serve]]></title>
            <description><![CDATA[Traefik Proxy 3.4 is here, and it’s greater than ever! Codenamed “Chaource” 🧀, this release is packed with zesty new features, smoother operations, and a sprinkle of magic to keep your infrastructure running like a well-oiled fondue pot. ]]></description>
            <link>https://traefik.io/traefik-proxy-3-4-chaource-is-ready-to-serve</link>
            <guid isPermaLink="true">https://traefik.io/traefik-proxy-3-4-chaource-is-ready-to-serve</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <category><![CDATA[Ingress]]></category>
            <category><![CDATA[Product News]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Tue, 06 May 2025 11:51:53 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/05/Blog@2x-27-1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/05/Blog@2x-27-1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/05/Blog@2x-27-1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/05/Blog@2x-27-1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/05/Blog@2x-27-1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Traefik Proxy 3.4 is here, and it’s greater than ever! Codenamed “Chaource” 🧀 (a creamy delight from Champagne, France, has been crafted since Roman times), this release is packed with zesty new features, smoother operations, and a sprinkle of magic to keep your infrastructure running like a well-oiled fondue pot. Let’s cut through the rind and dig into the goodness!&lt;/p&gt;&lt;h2 id=&quot;key-new-features&quot;&gt;Key New Features&lt;/h2&gt;&lt;h3 id=&quot;distributed-rate-limiting-with-redis&quot;&gt;Distributed Rate-Limiting with Redis&amp;nbsp;&lt;/h3&gt;&lt;p&gt;“Sharing is caring” just got a whole new meaning! Traefik’s new distributed rate-limiting (&lt;a href=&quot;https://github.com/traefik/traefik/pull/10211?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#10211&lt;/u&gt;&lt;/a&gt; by &lt;a href=&quot;https://github.com/longquan0104?ref=containous.ghost.io&quot;&gt;&lt;u&gt;longquan0104&lt;/u&gt;&lt;/a&gt;) lets you enforce traffic rules globally across instances using Redis. No more rogue services hogging bandwidth—this feature ensures fair play, even in a multi-node setup. Perfect for stopping API abuse or managing traffic spikes without breaking a sweat.&lt;/p&gt;&lt;p&gt;Here is an example to deploy a &lt;code&gt;rateLimit&lt;/code&gt; middleware in Kubernetes:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
   name: test-ratelimit
spec:
   rateLimit:
      # ...
      redis:
         secret: mysecret

---
apiVersion: v1
kind: Secret
metadata:
   name: mysecret
   namespace: default
data:
   username: dXNlcm5hbWU=
   password: cGFzc3dvcmQ=
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;p2c-power-of-two-choices-load-balancing&quot;&gt;P2C (Power of Two Choices) Load-Balancing&lt;/h3&gt;&lt;p&gt;Meet the Power of Two Choices (P2C) load balancer—your new traffic whisperer. Instead of blindly picking a backend, P2C intelligently selects two random candidates and routes requests to the least busy one (initiated by &lt;a href=&quot;https://github.com/ifross89?ref=containous.ghost.io&quot;&gt;&lt;u&gt;ifross89&lt;/u&gt;&lt;/a&gt; in &lt;a href=&quot;https://github.com/traefik/traefik/pull/10534?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#10534&lt;/u&gt;&lt;/a&gt;). Under heavy traffic, P2C avoids overloading a single server “by accident”. This results in fewer bottlenecks and a steadier, more predictable load distribution.&lt;/p&gt;&lt;p&gt;Enabling P2C is easy. In your service’s load-balancer config, set the method to &lt;code&gt;p2c&lt;/code&gt; instead of the default. For example:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;http:
  services:
    my-service:
      loadBalancer:
        servers:
          - url: &quot;http://10.0.0.1&quot;
          - url: &quot;http://10.0.0.2&quot;
          - url: &quot;http://10.0.0.3&quot;
          - url: &quot;http://10.0.0.4&quot;
        method: &quot;p2c&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;custom-server-url-with-labels&quot;&gt;Custom Server URL with Labels&amp;nbsp;&lt;/h3&gt;&lt;p&gt;A long awaited feature is part of this release, Chaource lets you define server URLs via labels on Docker, Swarm, ECS, Consul &amp;amp; Nomad (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11374?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11374&lt;/u&gt;&lt;/a&gt; by &lt;a href=&quot;https://github.com/yelvert?ref=containous.ghost.io&quot;&gt;&lt;u&gt;yelvert&lt;/u&gt;&lt;/a&gt;). This feature is needed in case you don’t want to use the container’s IP but a custom URL instead.&lt;/p&gt;&lt;p&gt;Here is a Docker compose example deploying an app and setting custom server urls:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;version: &apos;3.8&apos;
services:
  main:
    image: lorem/ipsum:latest
    deploy:
      replicas: 3
      labels:
        - &quot;traefik.enable=true&quot;

        - &quot;traefik.http.routers.service1.entrypoints=https&quot;
        - &quot;traefik.http.routers.service1.rule=Host(`foobar1.example.com`)&quot;
        - &quot;traefik.http.routers.service1.service=foobar1&quot;
        - &quot;traefik.http.routers.service1.tls=true&quot;
        - &quot;traefik.http.services.service1.loadbalancer.server.url=http://foobar1:80&quot;
        
        - &quot;traefik.http.routers.service2.entrypoints=https&quot;
        - &quot;traefik.http.routers.service2.rule=Host(`foobar2.example.com`)&quot;
        - &quot;traefik.http.routers.service2.service=foobar2&quot;
        - &quot;traefik.http.routers.service2.tls=true&quot;
        - &quot;traefik.http.services.service2.loadbalancer.server.url=http://foobar2:80&quot;

        - &quot;traefik.docker.network=traefik&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;more-delicacies&quot;&gt;More Delicacies&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;ACME Enhancements&lt;/strong&gt;: Introduced new options &lt;code&gt;acme.profile&lt;/code&gt; and &lt;code&gt;acme.emailAddresses&lt;/code&gt; to customize certificate requests (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11597?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11597&lt;/u&gt;&lt;/a&gt; by &lt;a href=&quot;https://github.com/ldez?ref=containous.ghost.io&quot;&gt;&lt;u&gt;ldez&lt;/u&gt;&lt;/a&gt;). See the&lt;a href=&quot;https://doc.traefik.io/traefik/v3.4/https/acme/?ref=containous.ghost.io&quot;&gt;&lt;u&gt; ACME documentation&lt;/u&gt;&lt;/a&gt; for details.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Kubernetes Improvements&lt;/strong&gt;: Improved CEL validation for CRDs (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11311?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11311&lt;/u&gt;&lt;/a&gt; by &lt;a href=&quot;https://github.com/mloiseleur?ref=containous.ghost.io&quot;&gt;&lt;u&gt;mloiseleur&lt;/u&gt;&lt;/a&gt;), ingress statuses were added for &lt;code&gt;ClusterIP&lt;/code&gt; and &lt;code&gt;NodePort&lt;/code&gt; Service Type (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11100?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11100&lt;/u&gt;&lt;/a&gt; by &lt;a href=&quot;https://github.com/mlec1?ref=containous.ghost.io&quot;&gt;&lt;u&gt;mlec1&lt;/u&gt;&lt;/a&gt;) and we can now get a root CA to be added through config maps (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11475?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11475&lt;/u&gt;&lt;/a&gt; by &lt;a href=&quot;https://github.com/Nelwhix?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Nelwhix&lt;/u&gt;&lt;/a&gt;). Refer to the&lt;a href=&quot;https://doc.traefik.io/traefik/v3.4/providers/kubernetes-ingress/?ref=containous.ghost.io&quot;&gt;&lt;u&gt; Kubernetes Ingress documentation&lt;/u&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Gateway API: &lt;/strong&gt;It’s now possible to set rule priority in Gateway API TLSRoute (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11443?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11443&lt;/u&gt;&lt;/a&gt; by &lt;a href=&quot;https://github.com/augustozanellato?ref=containous.ghost.io&quot;&gt;&lt;u&gt;augustozanellato&lt;/u&gt;&lt;/a&gt;)&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Middlewares&lt;/strong&gt;: An option &lt;code&gt;preserveRequestMethod&lt;/code&gt; has been added to the ForwardAuth middleware to preserve the original HTTP method and to send the request body to the authorization server (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11473?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11473&lt;/u&gt;&lt;/a&gt; by &lt;a href=&quot;https://github.com/an09mous?ref=containous.ghost.io&quot;&gt;&lt;u&gt;an09mous&lt;/u&gt;&lt;/a&gt;). See the&lt;a href=&quot;https://doc.traefik.io/traefik/v3.4/middlewares/http/forwardauth/?ref=containous.ghost.io#preserverequestmethod&quot;&gt;&lt;u&gt; ForwardAuth middleware documentation&lt;/u&gt;&lt;/a&gt;. The ErrorPage middleware now supports rewriting status codes dynamically (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11520?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11520&lt;/u&gt;&lt;/a&gt; by &lt;a href=&quot;https://github.com/sevensolutions?ref=containous.ghost.io&quot;&gt;&lt;u&gt;sevensolutions&lt;/u&gt;&lt;/a&gt;). Check out the&lt;a href=&quot;https://doc.traefik.io/traefik/v3.4/middlewares/http/errorpages/?ref=containous.ghost.io&quot;&gt;&lt;u&gt; ErrorPage middleware documentation&lt;/u&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Sticky Sessions&lt;/strong&gt;: You can now specify a cookie domain for sticky sessions (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11556?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11556&lt;/u&gt;&lt;/a&gt; by &lt;a href=&quot;https://github.com/jleal52?ref=containous.ghost.io&quot;&gt;&lt;u&gt;jleal52&lt;/u&gt;&lt;/a&gt;). Refer to the&lt;a href=&quot;https://doc.traefik.io/traefik/v3.4/routing/services/?ref=containous.ghost.io#sticky-sessions&quot;&gt;&lt;u&gt; Sticky Sessions documentation&lt;/u&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;TLS Enhancements&lt;/strong&gt;: Added options to disable TLS session tickets and to add extra CA certificates via Kubernetes ConfigMaps (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11609?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11609&lt;/u&gt;&lt;/a&gt; by &lt;a href=&quot;https://github.com/avdhoot?ref=containous.ghost.io&quot;&gt;&lt;u&gt;avdhoot&lt;/u&gt;&lt;/a&gt;). See the&lt;a href=&quot;https://doc.traefik.io/traefik/v3.4/https/tls/?ref=containous.ghost.io&quot;&gt;&lt;u&gt; TLS documentation&lt;/u&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;UDP Routing&lt;/strong&gt;: Traefik can now route UDP traffic with systemd socket activation (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11022?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11022&lt;/u&gt;&lt;/a&gt; by &lt;a href=&quot;https://github.com/tsiid?ref=containous.ghost.io&quot;&gt;&lt;u&gt;tsiid&lt;/u&gt;&lt;/a&gt;). Check out the&lt;a href=&quot;https://doc.traefik.io/traefik/v3.4/routing/entrypoints/?ref=containous.ghost.io#udp&quot;&gt;&lt;u&gt; UDP documentation&lt;/u&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Web UI&lt;/strong&gt;: The dashboard now supports an auto theme option, switching between light and dark modes based on your system settings (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11455?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11455&lt;/u&gt;&lt;/a&gt; by &lt;a href=&quot;https://github.com/zizzfizzix?ref=containous.ghost.io&quot;&gt;&lt;u&gt;zizzfizzix&lt;/u&gt;&lt;/a&gt;). Refer to the&lt;a href=&quot;https://doc.traefik.io/traefik/v3.4/operations/dashboard/?ref=containous.ghost.io&quot;&gt;&lt;u&gt; Dashboard documentation&lt;/u&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Under the hood: &lt;/strong&gt;experimental maps and slices have been replaced by stdlib (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11350?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11350&lt;/u&gt;&lt;/a&gt; by &lt;a href=&quot;https://github.com/Juneezee?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Juneezee&lt;/u&gt;&lt;/a&gt;)&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;a-big-slice-of-gratitude&quot;&gt;A Big Slice of Gratitude&lt;/h2&gt;&lt;p&gt;Chaource wouldn’t be the same without our amazing community! To everyone who filed bugs, brainstormed features, or geeked out with us on &lt;a href=&quot;https://github.com/traefik/traefik/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;GitHub&lt;/u&gt;&lt;/a&gt;—thank you! 🥂&lt;/p&gt;&lt;p&gt;Got questions? Compliments? Cheese puns? Share them in our &lt;a href=&quot;https://community.traefik.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Community Forum&lt;/u&gt;&lt;/a&gt;!&lt;/p&gt;&lt;h2 id=&quot;useful-links&quot;&gt;Useful Links&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Traefik 3.4 on &lt;a href=&quot;https://github.com/traefik/traefik/releases/tag/v3.4.0?ref=traefik.io&quot;&gt;&lt;u&gt;GitHub&lt;/u&gt;&lt;/a&gt; &amp;amp; on &lt;a href=&quot;https://hub.docker.com/_/traefik?ref=traefik.io&quot;&gt;&lt;u&gt;DockerHub&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Traefik &lt;a href=&quot;https://docs.traefik.io/?ref=traefik.io&quot;&gt;&lt;u&gt;Documentation&lt;/u&gt;&lt;/a&gt;, &lt;a href=&quot;https://traefik.io/traefik/?ref=traefik.io&quot;&gt;&lt;u&gt;Website&lt;/u&gt;&lt;/a&gt;, &amp;amp; &lt;a href=&quot;https://github.com/containous/traefik?ref=traefik.io&quot;&gt;&lt;u&gt;GitHub&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://community.traefik.io/?ref=traefik.io&quot;&gt;&lt;u&gt;Our Community Forum&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Who's in Charge? The Shared Responsibility Model for API and AI/ML Model Versioning]]></title>
            <description><![CDATA[Your ML model just broke in production. Was it the API? The model? Or the versioning gap between them? ]]></description>
            <link>https://traefik.io/whos-in-charge-the-shared-responsibility-model-for-api-and-ai-ml-model-versioning</link>
            <guid isPermaLink="true">https://traefik.io/whos-in-charge-the-shared-responsibility-model-for-api-and-ai-ml-model-versioning</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[AI Strategy]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <category><![CDATA[Strategy]]></category>
            <dc:creator><![CDATA[Sudeep Goswami]]></dc:creator>
            <pubDate>Thu, 17 Apr 2025 13:52:14 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/04/Blog@2x-26-1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/04/Blog@2x-26-1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/04/Blog@2x-26-1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/04/Blog@2x-26-1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/04/Blog@2x-26-1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;Your ML model just broke in production. Was it the API? The model? Or the versioning gap between them? &lt;/strong&gt;&lt;/p&gt;&lt;p&gt;As organizations scale their AI operations, the traditional approach of handling versioning at a single layer is breaking down. This limitation has led forward-thinking enterprises to adopt what we call the &quot;Shared Responsibility Model&quot; for versioning, distributing responsibilities between API management platforms and ML serving platforms.&lt;/p&gt;&lt;h2 id=&quot;the-growing-complexity-of-ai-at-scale&quot;&gt;The Growing Complexity of AI at Scale&lt;/h2&gt;&lt;p&gt;As machine learning transitions from experimental projects to business-critical applications, organizations face increasing complexity in managing both the APIs exposing AI capabilities and the underlying ML models themselves. Effectively deploying and managing these solutions isn&apos;t just a data science puzzle; it&apos;s a complex challenge involving engineering, IT operations, and business strategy, with Deloitte noting that getting AI into production remains difficult[¹]. This challenge stems from the unique dual nature of ML systems: they are both software services defined by API contracts and statistical models requiring frequent updates, each with distinct lifecycle requirements.&lt;/p&gt;&lt;p&gt;Getting this right extends far beyond technical elegance; it directly impacts customer experience, operational efficiency, and the ability to innovate rapidly in an increasingly AI-driven marketplace. &lt;/p&gt;&lt;blockquote&gt;With 78% of organizations reporting AI use in 2024, up significantly from 55% the previous year, the need for effective versioning strategies has never been more critical.&lt;/blockquote&gt;&lt;h2 id=&quot;the-scale-and-api-management-challenge&quot;&gt;The Scale and API Management Challenge&lt;/h2&gt;&lt;p&gt;One major factor amplifying this complexity is the sheer proliferation of AI models. Platforms like Hugging Face now host over 1.4 million model repositories (as of April 2025), reflecting an explosion of options available for teams to test and deploy. This rapid expansion underscores the versioning challenge.&lt;/p&gt;&lt;p&gt;It also leads directly to a critical related insight: The more AI you deploy at scale, the more APIs you have. And that creates an API management problem. We&apos;re witnessing a &quot;Cambrian explosion&quot; of AI APIs, as organizations increasingly expose AI capabilities as modular services. Managing this API sprawl, including shadow APIs created outside governance, is crucial; failing to do so can thwart AI initiatives due to data issues, security risks, and integration failures. Furthermore, AI APIs present unique management needs around aspects like token-based rate limiting, prompt handling, and multi-model routing.&lt;/p&gt;&lt;h2 id=&quot;the-shared-responsibility-model-explained&quot;&gt;The Shared Responsibility Model Explained&lt;/h2&gt;&lt;p&gt;The Shared Responsibility Model distinguishes between client-facing API contracts and underlying model implementations, creating a clear boundary of concerns that addresses the unique challenges of AI systems at scale.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;API Management Layer Responsibilities&lt;/strong&gt;:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Contract Stability&lt;/strong&gt;: Maintains consistent interfaces that clients can rely on regardless of backend changes&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Access Control &amp;amp; Security&lt;/strong&gt;: Implements authentication, authorization, and data protection at the API boundary&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Traffic Management&lt;/strong&gt;: Handles rate limiting, throttling, and request distribution&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Observability&lt;/strong&gt;: Provides API-level metrics, logging, and monitoring&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Documentation &amp;amp; Developer Experience&lt;/strong&gt;: Offers consistent, up-to-date API specifications and documentation&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Versioning Strategy&lt;/strong&gt;: Manages API versions and deprecation policies&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;ML Serving Layer Responsibilities&lt;/strong&gt;:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Model Lifecycle Management&lt;/strong&gt;: Handles model training, validation, deployment, and retirement&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Model-Specific Versioning&lt;/strong&gt;: Manages rapid iteration of model weights, architectures, and parameters&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Inferencing Infrastructure&lt;/strong&gt;: Optimizes compute resources for model serving&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Model Monitoring&lt;/strong&gt;: Tracks performance, accuracy, and cost metrics&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Canary Deployments&lt;/strong&gt;: Implements gradual rollout of new model versions with automated rollback&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Feature Management&lt;/strong&gt;: Maintains repositories of model input variables (features) and ensures consistent transformations across training and serving&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;By clearly delineating these responsibilities, organizations can achieve a balance between stability and innovation. The API layer provides a consistent contract that shields consumers from the complexity and frequent changes occurring in the ML layer, while the ML layer retains the flexibility needed for rapid experimentation and improvement. This separation of concerns allows each layer to follow its own appropriate versioning cadence and practices.&lt;/p&gt;&lt;h2 id=&quot;bridging-mlops-and-apiops-for-end-to-end-scalability&quot;&gt;Bridging MLOps and APIOps for End-to-End Scalability&lt;/h2&gt;&lt;p&gt;Effectively managing the ML layer requires robust MLOps practices. However, since most AI/ML capabilities are consumed via APIs, focusing only on model lifecycle management isn&apos;t enough for true scalability. This is where APIOps becomes essential – applying DevOps principles to the entire API lifecycle (design, development, testing, deployment, monitoring, retirement)[²].&lt;/p&gt;&lt;p&gt;The relationship between these two operational domains is crucial:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;MLOps&lt;/strong&gt; focuses on model development, training, and deployment&lt;/li&gt;&lt;li&gt;&lt;strong&gt;APIOps&lt;/strong&gt; manages how these models are exposed to consumers&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;These systems must work in harmony. Even the most efficient MLOps pipeline will create bottlenecks if your API management can&apos;t keep pace. When your data science team develops a new fraud detection model version, the API exposing that capability must be ready to handle the change without disrupting consumers.&lt;/p&gt;&lt;p&gt;As AI adoption accelerates, the number of AI-powered APIs within an organization multiplies rapidly. Without robust APIOps practices ensuring consistency and automation in API management, you won&apos;t realize the full agility benefits promised by your MLOps investments.&lt;/p&gt;&lt;h2 id=&quot;the-kubernetes-native-advantage-bridging-api-and-model-versioning&quot;&gt;The Kubernetes-Native Advantage: Bridging API and Model Versioning&lt;/h2&gt;&lt;p&gt;Kubernetes provides the ideal foundation for implementing the Shared Responsibility Model and coordinating MLOps and APIOps in practice. Its declarative nature, robust service discovery, and native resource definitions allow different specialized tools to manage their respective layers while integrating seamlessly. Here&apos;s how it bridges API and ML model versioning:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;API Versioning (The Contract)&lt;/strong&gt;: An API management platform like Traefik Hub leverages Kubernetes Gateway API or Ingress resources to define and manage the stable API contracts exposed to consumers. It can handle different API versions concurrently – for example, routing requests based on the URL path &lt;code&gt;(/v1/predict vs. /v2/predict)&lt;/code&gt;, headers &lt;code&gt;(API-Version: 1 vs. API-Version: 2)&lt;/code&gt;, or&lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-management/api-version?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt; &lt;u&gt;more&lt;/u&gt;&lt;/a&gt;. Each API version defined in the gateway routes to a specific, stable Kubernetes Service name. This ensures clients always interact with a consistent API contract, regardless of the underlying model changes, aligning with standard API versioning techniques documented for platforms like Traefik Hub.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;ML Model Versioning (The Implementation)&lt;/strong&gt;: Behind that stable Kubernetes Service endpoint managed by the API gateway, an ML serving platform like KServe manages the actual model deployments using its own Custom Resource Definitions (CRDs), such as the &lt;a href=&quot;https://kserve.github.io/website/latest/get_started/first_isvc/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;InferenceService&lt;/a&gt;. When a new ML model version needs to be rolled out (e.g., &lt;code&gt;fraud-detection-v2.1&lt;/code&gt; replacing v2.0), KServe can manage this transparently to the API consumer. Using its CRD, you can specify that only a small percentage of traffic (e.g., 10% via the canaryTrafficPercent field) should initially hit the new model version (v2.1), while the stable v2.0 handles the rest. KServe manages this traffic splitting internally through its integration with Kubernetes networking capabilities.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;The AI Gateway Advantage&lt;/strong&gt;: Between the API Management and ML Serving layers, a specialized AI Gateway addresses unique challenges of AI-specific workloads. Traefik&apos;s AI Gateway provides crucial capabilities that enhance security, performance, and governance—ranging from semantic caching that optimizes response times to content protection that ensures compliance. This middle layer bridges the gap between stable API contracts and dynamic model implementations, providing AI-specific optimizations that neither the API layer nor the ML layer can deliver alone.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Connecting Theory to Practice&lt;/strong&gt;: This demonstrates the Shared Responsibility Model in action on Kubernetes. Traefik Hub handles the external API contract and its versions (/v1, /v2), directing traffic to the appropriate stable backend service endpoint. The AI Gateway provides critical AI-specific optimizations and protections, while KServe manages the ML model versions served by that endpoint, handling canary rollouts (v2.0 vs. v2.1) without disrupting the API contract defined by the Traefik Hub API Management layer. Kubernetes acts as the orchestration layer, enabling these specialized tools to manage their respective responsibilities cohesively.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/04/Shared-Responsibility-AI_ML-Diagram.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;706&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/04/Shared-Responsibility-AI_ML-Diagram.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/04/Shared-Responsibility-AI_ML-Diagram.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/04/Shared-Responsibility-AI_ML-Diagram.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2025/04/Shared-Responsibility-AI_ML-Diagram.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;business-impact-why-this-matters&quot;&gt;Business Impact: Why This Matters&lt;/h2&gt;&lt;p&gt;Getting this layered, Kubernetes-native approach right directly impacts the bottom line:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Faster Time-to-Value&lt;/strong&gt;: By separating concerns and streamlining workflows across both MLOps and APIOps, businesses can significantly accelerate innovation. AI, managed effectively, can cut product development timelines by up to 50%, while MLOps practices can slash model deployment times by 30-50%[³], allowing faster response to market needs.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Enhanced Efficiency &amp;amp; Productivity&lt;/strong&gt;: CEOs are already seeing tangible results, with 56% reporting efficiency gains from GenAI. Organizations effectively leveraging AI can achieve significantly higher productivity growth.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Improved Stability &amp;amp; Trust&lt;/strong&gt;: The model allows underlying AI capabilities to be updated without breaking crucial client integrations or compromising backward compatibility. Robust management also helps mitigate risks associated with AI, such as inaccuracy and security vulnerabilities.&lt;/p&gt;&lt;h2 id=&quot;future-proofing-your-ai-strategy&quot;&gt;Future-Proofing Your AI Strategy&lt;/h2&gt;&lt;p&gt;The convergence of API management and AI delivery is fundamentally reshaping how organizations innovate and compete. Successfully scaling AI requires more than just adopting algorithms; it demands a strategic approach to managing the interplay between APIs and models. Adopting a clear strategy like the Shared Responsibility Model is essential for navigating this complexity and unlocking the full potential of your AI investments.&lt;/p&gt;&lt;p&gt;This is where Traefik Hub, as a Kubernetes-native API management solution, plays a pivotal role. Built for the modern stack, it provides the sophisticated routing, security, governance, and visibility needed to expertly manage the crucial API management layer – facilitating the robust APIOps practices required to govern the &quot;Cambrian explosion&quot; of AI APIs within your Kubernetes environment.&lt;/p&gt;&lt;p&gt;The inclusion of specialized AI Gateway capabilities extends this value proposition further:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Semantic Caching: Unlock Scalable, Cost-Effective AI&lt;/strong&gt;: When AI systems scale from experimentation to production, computational costs and latency can become major hurdles. Traditional caching methods often fall short, especially for resource-heavy large language models. Traefik&apos;s AI Gateway addresses these challenges with Semantic Caching, which uses advanced embedding techniques to understand the &lt;em&gt;meaning&lt;/em&gt; behind queries, enabling intelligent reuse of results for similar requests.&lt;/p&gt;&lt;p&gt;This approach delivers tangible benefits:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Dramatically reduces response times from seconds to milliseconds for semantically similar queries&lt;/li&gt;&lt;li&gt;Eliminates redundant, costly computations for common request patterns&lt;/li&gt;&lt;li&gt;Optimizes resource allocation by serving cached responses for similar queries while dedicating computing power to truly novel requests&lt;/li&gt;&lt;li&gt;Integrates seamlessly with popular vector databases in cloud-native environments&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Content Guard: Enabling Secure, Compliant AI:&lt;/strong&gt; As AI powers increasingly critical business functions, ensuring proper governance becomes essential. Content Guard provides superior protection by safeguarding sensitive data and ensuring both inputs and outputs meet ethical and regulatory standards. Unlike basic solutions, it leverages contextual natural language processing for highly accurate detection across data types.&lt;/p&gt;&lt;p&gt;With over 35 predefined PII recognizers and customizable rules, Content Guard ensures:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Comprehensive detection and de-identification of sensitive information&lt;/li&gt;&lt;li&gt;Consistent policy enforcement across distributed AI deployments&lt;/li&gt;&lt;li&gt;Compliance with evolving regulatory requirements&lt;/li&gt;&lt;li&gt;A foundation for responsible AI that builds user trust&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Together, these capabilities empower platform teams to provide stable, secure access while ML and application teams innovate rapidly behind the scenes using MLOps.&lt;/p&gt;&lt;h2 id=&quot;taking-action-next-steps-for-your-organization&quot;&gt;Taking Action: Next Steps for Your Organization&lt;/h2&gt;&lt;p&gt;How is your organization preparing for the operational realities of scaling AI? Here are three concrete steps you can take today:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Assess Your Current State&lt;/strong&gt;: Evaluate your existing API management and ML serving capabilities against the Shared Responsibility Model. Identify gaps in your versioning strategy that could impede AI scaling.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Build Cross-Functional Alignment&lt;/strong&gt;: Bring together your API platform teams and ML engineering teams to establish clear boundaries of responsibility and collaborative workflows.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Implement a Pilot Project&lt;/strong&gt;: Select a non-critical AI service and implement the Shared Responsibility Model using Kubernetes-native tools. Document learnings and establish patterns that can be scaled across your organization.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Ready to learn more? Contact the Traefik sales team for a&lt;a href=&quot;https://info.traefik.io/en/request-demo?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt; &lt;u&gt;personalized consultation&lt;/u&gt;&lt;/a&gt; on how the Shared Responsibility Model can be implemented in your organization using Traefik Hub.&lt;/p&gt;&lt;p&gt;Ultimately, embracing the Shared Responsibility Model, implemented through coordinated MLOps and APIOps practices, fosters better collaboration across diverse teams – engineering, operations, data science, and business – creating a scalable and resilient foundation for delivering AI-driven value. Investing in the right operational architecture today, with robust API management at its core, is investing in your organization&apos;s agility and innovation velocity for tomorrow.&lt;/p&gt;&lt;h2 id=&quot;references&quot;&gt;References&lt;/h2&gt;&lt;p&gt;[¹] Deloitte. &quot;AI in Enterprise Applications: Challenges and Opportunities.&quot; https://www2.deloitte.com/us/en/insights/focus/signals-for-strategists/ai-in-enterprise-applications.html&lt;/p&gt;&lt;p&gt;[²] Microsoft Learn. &quot;API Design Best Practices.&quot; https://learn.microsoft.com/en-us/azure/architecture/microservices/design/api-design&lt;/p&gt;&lt;p&gt;[³] Cogent Infotech. &quot;MLOps Benefits: Deployment Time.&quot; https://www.cogentinfo.com/blog/mlops-benefits-deployment-time/&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;script id=&quot;tocOverrides&quot; type=&quot;application/json&quot;&gt;
  {
    &quot;1&quot;: &quot;The Complexity of AI at Scale&quot;,
    &quot;2&quot;: &quot;The Scale &amp; APIM Challenge&quot;,
    &quot;3&quot;: &quot;The Shared Responsibility Model&quot;,
    &quot;4&quot;: &quot;Bridging MLOps and APIOps&quot;,
    &quot;5&quot;: &quot;Bridging API and Model Versioning&quot;,
    &quot;6&quot;: &quot;Business Impact: Why This Matters&quot;,
    &quot;7&quot;: &quot;Future-Proofing Your AI Strategy&quot;,
    &quot;8&quot;: &quot;Your Next Steps&quot;,
    &quot;9&quot;: &quot;References&quot;
  }
&lt;/script&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Traefik vs. #IngressNightmare: Security By Design in the Age of Critical Vulnerabilities]]></title>
            <description><![CDATA[When our security team first alerted us about the critical vulnerabilities disclosed in ingress-nginx on March 24th, 2025, we immediately understood the gravity of the situation.]]></description>
            <link>https://traefik.io/traefik-vs-ingressnightmare-security-by-design-in-the-age-of-critical-vulnerabilities</link>
            <guid isPermaLink="true">https://traefik.io/traefik-vs-ingressnightmare-security-by-design-in-the-age-of-critical-vulnerabilities</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Ingress]]></category>
            <category><![CDATA[News]]></category>
            <category><![CDATA[Strategy]]></category>
            <dc:creator><![CDATA[Sudeep Goswami]]></dc:creator>
            <pubDate>Thu, 10 Apr 2025 10:46:09 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/04/Blog@2x-25-1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/04/Blog@2x-25-1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/04/Blog@2x-25-1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/04/Blog@2x-25-1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/04/Blog@2x-25-1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;the-wake-up-call-our-industry-needed&quot;&gt;The Wake-Up Call Our Industry Needed&lt;/h2&gt;&lt;p&gt;When our security team first alerted us about the critical vulnerabilities disclosed in ingress-nginx on March 24th, 2025, we immediately understood the gravity of the situation. CVE-2025-1974, with its devastating 9.8 CVSS rating, represents one of the most significant Kubernetes security events in recent years.&lt;/p&gt;&lt;p&gt;The implications are sobering: &lt;strong&gt;any entity within the pod network could potentially seize control of your entire Kubernetes cluster—without credentials or administrative privileges&lt;/strong&gt;. Let that sink in for a moment.&lt;/p&gt;&lt;p&gt;While the ingress-nginx team deserves credit for rapidly releasing patches (v1.11.5 and v1.12.1), the discovery of more than 6,500 vulnerable clusters in production environments remains deeply concerning. This isn&apos;t just another vulnerability—it&apos;s a fundamental architectural flaw that demands our industry&apos;s immediate attention.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-188642352429&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:232px&quot; data-hubspot-wrapper-cta-id=&quot;188642352429&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLIE9PCMlSa%2Bu0hF08QaHEAy3gNQiR%2FUSvEHYGNRonarP1%2FaMCpjjTZ4zDQiQOJL1DGHEg2XPf4Qu5mi7tW%2BJXo6VcHWAA5VCJze2Z%2FmP4nkrvZnqB8cp0sCneqsQo5H9IWS9YYmq5Uvb3%2FfQZuYk%2F%2Fx1QDbQjXYEaFLekBgqgwTBOhhrQikYMiYRIZvjPOunjbCxA%3D%3D&amp;webInteractiveContentId=188642352429&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Proxy_Ad_02@2x&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-188642352429.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;understanding-ingressnightmare-beyond-the-headlines&quot;&gt;Understanding #IngressNightmare: Beyond the Headlines&lt;/h2&gt;&lt;p&gt;To truly appreciate the severity of these vulnerabilities, we need to examine the technical mechanics at play. The core issue stems from how ingress-nginx processes ingress objects through its admission controller.&lt;/p&gt;&lt;p&gt;When validating an ingress object, the controller constructs an NGINX configuration and validates it using the &lt;code&gt;nginx -t&lt;/code&gt; command. The Wiz Research team brilliantly uncovered multiple configuration injection vulnerabilities (CVE-2025-24514, CVE-2025-1097, CVE-2025-1098) that allow attackers to inject arbitrary NGINX configuration directives by sending malicious ingress objects to the admission controller.&lt;/p&gt;&lt;p&gt;While these injection points alone don&apos;t immediately grant code execution, the researchers discovered that the &lt;code&gt;ssl_engine&lt;/code&gt; directive could be exploited to load shared libraries at any point in the configuration. By combining this with a method to upload a shared library to the pod&apos;s filesystem, attackers can achieve remote code execution within the ingress-nginx controller&apos;s pod.&lt;/p&gt;&lt;p&gt;Most critically, because admission controllers typically run with elevated privileges and unrestricted network access, successful exploitation allows attackers to execute arbitrary code and access all cluster secrets across namespaces—potentially leading to complete cluster compromise.&lt;/p&gt;&lt;h2 id=&quot;why-traefik-remains-secure-architectural-decisions-matter&quot;&gt;Why Traefik Remains Secure: Architectural Decisions Matter&lt;/h2&gt;&lt;p&gt;As the founder and developer of Traefik, Emile Vauge made fundamental architectural decisions a decade ago that have proven critical for security. These weren&apos;t accidental choices—–they were deliberate design principles that we&apos;ve maintained throughout Traefik&apos;s evolution:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;No Raw Configuration Templating&lt;/strong&gt;: Unlike templated proxies, Traefik parses configuration inputs (Ingress, IngressRoute, Middlewares, Custom Resources, or Gateway API resources) into strongly typed Go structs. Without template mechanisms, there&apos;s simply no string injection path for attackers to exploit.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Minimal Network Surface Area&lt;/strong&gt;: Traefik doesn&apos;t implement an admission controller or any component with unrestricted network accessibility. It simply reads ingress resources and applies them if correct—if they can&apos;t be parsed correctly, they&apos;re ignored with minimal error logging. No configuration is ever executed or interpreted.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;No Dynamic Library Loading&lt;/strong&gt;: Traefik is written in Go, producing statically linked executables by default. We deliberately compile without CGO options, making it impossible to execute code not already part of the binary. Unlike NGINX&apos;s &lt;code&gt;ssl_engine&lt;/code&gt; directive, there&apos;s no mechanism to load external shared libraries.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;These architectural principles weren&apos;t arbitrary—they were security-first decisions that have stood the test of time.&lt;/p&gt;&lt;h2 id=&quot;the-industrys-crossroads-why-wait-years-for-a-solution&quot;&gt;The Industry&apos;s Crossroads: Why Wait Years for a Solution?&lt;/h2&gt;&lt;p&gt;It&apos;s telling that the ingress-nginx team recently announced plans to pivot toward developing InGate—a new Ingress/Gateway API controller written in Go. They&apos;ve wisely stated that no new features will be added to ingress-nginx during this transition, with the ultimate goal of deprecating it entirely once InGate reaches GA status.&lt;/p&gt;&lt;p&gt;While this represents a thoughtful long-term strategy, the stark reality is that reaching stability with a comparable feature set will likely take years. With only 18 commits to InGate at the time of writing, the journey has barely begun.&lt;/p&gt;&lt;h2 id=&quot;the-path-forward-security-cannot-wait&quot;&gt;The Path Forward: Security Cannot Wait&lt;/h2&gt;&lt;p&gt;For organizations running Kubernetes in production today, the message is clear: &lt;strong&gt;you shouldn&apos;t wait years to address a critical security vulnerability that exists now&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;The immediate priority is upgrading existing ingress-nginx deployments to patched versions (v1.11.5 or v1.12.1). However, this is merely a tactical response to a strategic problem.&lt;/p&gt;&lt;p&gt;The more prudent approach is migrating to an ingress controller that&apos;s secure by design. At Traefik Labs, we&apos;ve spent a decade building and refining Traefik Proxy with security as a foundational principle—not an afterthought. Our architectural decisions made ten years ago—choosing a statically linked toolchain, a strongly typed language, and eliminating templating—have proven prescient in light of today&apos;s threats.&lt;/p&gt;&lt;h2 id=&quot;conclusion-design-principles-matter&quot;&gt;Conclusion: Design Principles Matter&lt;/h2&gt;&lt;p&gt;As leaders in the cloud-native ecosystem, we believe #IngressNightmare offers a valuable lesson for our industry. Security cannot be bolted on—it must be built in from the ground up. The choices we make about programming languages, compilation methods, and configuration approaches have profound security implications that may not become apparent for years.&lt;/p&gt;&lt;p&gt;We&apos;re encouraged to see the ingress-nginx team recognizing these principles in their plans for InGate. By embracing Go, static linking, and strong typing, they&apos;re acknowledging the same architectural foundations that have kept Traefik secure for the past decade.&lt;/p&gt;&lt;p&gt;For organizations that can&apos;t afford to wait for InGate to mature, Traefik Proxy offers a battle-tested, secure-by-design alternative available today. Your security shouldn&apos;t be compromised while waiting for tomorrow&apos;s solutions.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-188642352429&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:232px&quot; data-hubspot-wrapper-cta-id=&quot;188642352429&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLIE9PCMlSa%2Bu0hF08QaHEAy3gNQiR%2FUSvEHYGNRonarP1%2FaMCpjjTZ4zDQiQOJL1DGHEg2XPf4Qu5mi7tW%2BJXo6VcHWAA5VCJze2Z%2FmP4nkrvZnqB8cp0sCneqsQo5H9IWS9YYmq5Uvb3%2FfQZuYk%2F%2Fx1QDbQjXYEaFLekBgqgwTBOhhrQikYMiYRIZvjPOunjbCxA%3D%3D&amp;webInteractiveContentId=188642352429&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Proxy_Ad_02@2x&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-188642352429.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;hr&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;Sudeep Goswami&lt;/strong&gt; is the &lt;strong&gt;CEO &lt;/strong&gt;of Traefik Labs, leading the company&apos;s global strategy and operations.&lt;/em&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;Emile Vauge&lt;/strong&gt; is the &lt;strong&gt;Founder and CTO &lt;/strong&gt;of Traefik Labs. He created Traefik, the popular open-source cloud-native application proxy, which has been downloaded over 3 billion times.&lt;/em&gt;&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Traefik Labs’ API Management Solution Now Available on Oracle Cloud Marketplace]]></title>
            <description><![CDATA[We’re excited to announce that Traefik Labs’ API management solution is now available on Oracle Cloud Infrastructure (OCI) Marketplace.]]></description>
            <link>https://traefik.io/traefik-labs-api-management-solution-now-available-on-oracle-cloud-marketplace</link>
            <guid isPermaLink="true">https://traefik.io/traefik-labs-api-management-solution-now-available-on-oracle-cloud-marketplace</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Traefik Labs]]></dc:creator>
            <pubDate>Thu, 03 Apr 2025 13:01:42 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/04/Blog@2x-24-1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/04/Blog@2x-24-1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/04/Blog@2x-24-1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/04/Blog@2x-24-1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/04/Blog@2x-24-1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Read the original post on Oracle: &lt;a href=&quot;https://blogs.oracle.com/developers/post/traefik-labs-api-management-solution-now-available-on-oracle-cloud-marketplace?ref=containous.ghost.io&quot;&gt;https://blogs.oracle.com/developers/post/traefik-labs-api-management-solution-now-available-on-oracle-cloud-marketplace&lt;/a&gt;&lt;/p&gt;&lt;p&gt;We’re excited to announce that Traefik Labs’ API management solution is now available on Oracle Cloud Infrastructure (OCI) Marketplace. This cloud-native, Kubernetes-native platform enables enterprises to manage APIs seamlessly across hybrid and multi-cloud environments while maintaining security and performance requirements of enterprise customers.&amp;nbsp;&lt;/p&gt;&lt;p&gt;With Traefik’s deploy-anywhere flexibility and OCI’s industry-leading security, performance, and cost efficiency, customers gain a comprehensive API management solution. Deployment is quick and seamless—Traefik’s solution can be launched directly from the OCI Marketplace in just a few clicks.&amp;nbsp;&lt;/p&gt;&lt;h2 id=&quot;powerful-oci-integrations-to-drive-business-value-for-oci-customers&quot;&gt;Powerful OCI Integrations to&amp;nbsp;drive business value for OCI customers&amp;nbsp;&lt;/h2&gt;&lt;p&gt;Managing APIs across distributed environments is often challenging due to manual configurations that can lead to security inconsistencies, limited visibility, and high costs. The Traefik-OCI integration addresses these issues by combining Traefik’s modern API management capabilities with OCI’s robust ecosystem, reducing complexity, enhancing security, and accelerating innovation.&amp;nbsp;&lt;/p&gt;&lt;h3 id=&quot;key-oci-integrations&quot;&gt;Key OCI Integrations:&amp;nbsp;&lt;/h3&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Oracle Cloud Infrastructure (OCI) Kubernetes Engine (OKE)&amp;nbsp;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Traefik seamlessly integrates with OKE, providing a Kubernetes-native API management experience designed for containerized applications.&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Deploy Kubernetes-native API management on OKE’s managed clusters&amp;nbsp;&lt;/li&gt;&lt;li&gt;Eliminate API silos with Traefik CRDs and OKE’s multi-cluster management&amp;nbsp;&lt;/li&gt;&lt;li&gt;Autoscale API gateways dynamically with OKE’s flexible node pool architecture&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;OCI DevOps&amp;nbsp;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;This integration enables GitOps-driven automation, ensuring seamless API deployment and management with OCI’s CI/CD pipeline.&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Automate API management with end-to-end GitOps-driven CI/CD&amp;nbsp;&lt;/li&gt;&lt;li&gt;Deploy and scale Traefik API Gateways via OCI build pipelines&amp;nbsp;&lt;/li&gt;&lt;li&gt;Sync Git-committed API configurations automatically to production environments&amp;nbsp;&lt;/li&gt;&lt;li&gt;Enhance OCI’s blue-green deployments with Traefik’s zero-downtime routing&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;OCI Application Performance Monitoring (APM)&amp;nbsp;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Gain deep observability into API traffic and performance with Traefik’s OpenTelemetry support combined with OCI APM.&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Gain full-stack observability with Traefik’s OpenTelemetry support integrated into OCI APM&amp;nbsp;&lt;/li&gt;&lt;li&gt;Monitor GenAI traffic patterns alongside traditional API metrics&amp;nbsp;&lt;/li&gt;&lt;li&gt;Troubleshoot faster with detailed OpenTelemetry instrumentation&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;OCI Logging Analytics&amp;nbsp;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Ensure optimal API security and performance by leveraging Traefik’s structured logs with OCI’s advanced analytics tools.&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Stream Traefik’s structured logs into OCI’s analytics platform&amp;nbsp;&lt;/li&gt;&lt;li&gt;Apply OCI’s ML-powered analytics to optimize API performance and security&amp;nbsp;&lt;/li&gt;&lt;li&gt;Gain unified insights across all environments with tool-agnostic log integration&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;key-benefits-for-oci-customers&quot;&gt;Key Benefits for OCI Customers&amp;nbsp;&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;End-to-End API Lifecycle Management:&amp;nbsp;&lt;/strong&gt;Includes a developer portal, interactive API documentation, testing, mocking, monetization, security, governance controls, and analytics&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;GitOps-Enabled Automation: V&lt;/strong&gt;ersion-controlled API definitions ensure consistency, zero-downtime updates, and automated scaling&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Seamless OCI Integrations:&amp;nbsp;&lt;/strong&gt;Works with OKE, OCI DevOps, APM, and Logging Analytics for a smooth developer experience and to maximize the value gained out of OCI platform&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Easy Deployment via OCI Marketplace:&lt;/strong&gt;&amp;nbsp;Deploy Traefik’s solutions easily using Terraform or Helm templates&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;more-choice-more-flexibility&quot;&gt;More Choice, More Flexibility&amp;nbsp;&lt;/h2&gt;&lt;p&gt;OCI is committed to providing enterprises with a broad ecosystem of innovative solutions. With Traefik Labs, OCI customers now have the freedom to choose the best API management approach suited for their needs:&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Oracle API Gateway:&lt;/strong&gt;&amp;nbsp;A fully managed, cost-effective API gateway ideal for services built on OCI.&amp;nbsp;&lt;a href=&quot;https://docs.oracle.com/en-us/iaas/Content/APIGateway/home.htm?ref=containous.ghost.io&quot;&gt;Link&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Traefik Labs:&amp;nbsp;&lt;/strong&gt;A deploy-anywhere API lifecycle management solution with deep OCI integrations. It also offers an easy upgrade path from a standard Ingress Controller to a full-featured API management solution.&amp;nbsp;&lt;a href=&quot;https://cloudmarketplace.oracle.com/marketplace/en_US/listing/181105209?ref=containous.ghost.io&quot;&gt;Link&lt;/a&gt;&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;how-to-get-started&quot;&gt;How to Get Started&amp;nbsp;&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Browse the OCI Marketplace&amp;nbsp;&lt;/strong&gt;– Search for &quot;Traefik&quot; and select your preferred option.&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Choose Your Deployment Method&amp;nbsp;&lt;/strong&gt;– Deploy using Terraform or Helm with pre-validated OCI integrations.&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Configure Your Environment&amp;nbsp;&lt;/strong&gt;– Connect to OCI services like OKE, DevOps, APM, and Logging Analytics.&amp;nbsp;&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Learn More&lt;/strong&gt;&amp;nbsp;– Visit&amp;nbsp;this&amp;nbsp;&lt;a href=&quot;https://traefik.io/solutions/oracle-and-traefik/?ref=containous.ghost.io&quot;&gt;link&lt;/a&gt;&amp;nbsp;to request a demo or to explore further.&lt;/li&gt;&lt;/ul&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://blogs.oracle.com/content/published/api/v1.1/assets/CONT7F298E3E3C284F13BEBD3C8A20D320A0/Medium?cb=_cache_83da&amp;amp;format=jpg&amp;amp;channelToken=f391c0a8c1314d7a85dd0e05bfac9ab0&quot; class=&quot;kg-image&quot; alt=&quot;Traefik API Management&quot; loading=&quot;lazy&quot; width=&quot;624&quot; height=&quot;478&quot;&gt;&lt;/figure&gt;&lt;p&gt;&lt;em&gt;This joint solution provides organizations with a comprehensive platform for building and managing cloud-native applications and APIs. By combining OCI&apos;s enterprise-grade infrastructure with Traefik&apos;s advanced API management capabilities, organizations can accelerate their digital transformation while ensuring security, compliance, and operational excellence whether in OCI, other clouds, or on-premises environments.&amp;nbsp;&lt;/em&gt;&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[AI Gateways: The Missing Piece in Scalable & Responsible AI Inferencing]]></title>
            <description><![CDATA[Truly scalable and responsible AI inference demands two advanced enhancements: semantic caching—intelligently storing and reusing responses for similar prompts—and content guard that filters data shared with AI models as well as AI-generated content against safety and compliance standards.]]></description>
            <link>https://traefik.io/ai-gateways-the-missing-piece-in-scalable-responsible-ai-inferencing</link>
            <guid isPermaLink="true">https://traefik.io/ai-gateways-the-missing-piece-in-scalable-responsible-ai-inferencing</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[Strategy]]></category>
            <dc:creator><![CDATA[Sudeep Goswami]]></dc:creator>
            <pubDate>Thu, 27 Mar 2025 11:42:57 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/03/Blog@2x-21-1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/03/Blog@2x-21-1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/03/Blog@2x-21-1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/03/Blog@2x-21-1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/03/Blog@2x-21-1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;As AI solutions evolve from experimental prototypes to enterprise-critical deployments, organizations face mounting challenges in scalability, performance, and responsible delivery. While standard AI gateways offer essential routing, load balancing, and API management, truly scalable and responsible AI inference demands two advanced enhancements: &lt;strong&gt;semantic caching&lt;/strong&gt;—intelligently storing and reusing responses for similar prompts—and &lt;strong&gt;content guard&lt;/strong&gt; that filters data shared with AI models as well as AI-generated content against safety and compliance standards.&lt;/p&gt;&lt;p&gt;Our exploration builds upon foundational gateway functionality to address the unique challenges of enterprise AI deployment, providing organizations with comprehensive solutions for both performance optimization and responsible content delivery—deployable anywhere from centralized data centers to global edge locations.&lt;/p&gt;&lt;h2 id=&quot;why-ai-gateways-form-essential-infrastructure&quot;&gt;Why AI Gateways Form Essential Infrastructure&lt;/h2&gt;&lt;p&gt;Organizations deploying AI at scale recognize the value of AI gateways as a unified infrastructure layer managing inference requests. Core gateways provide:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Intelligent Routing:&lt;/strong&gt; Directing requests to appropriate models and endpoints&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Load Balancing:&lt;/strong&gt; Distributing traffic efficiently across infrastructure&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Request Management:&lt;/strong&gt; Handling timeouts, retries, and concurrency control&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Observability:&lt;/strong&gt; Monitoring performance and operational health&lt;/li&gt;&lt;li&gt;&lt;strong&gt;API Standardization:&lt;/strong&gt; Ensuring consistent interfaces across models&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Governance Controls:&lt;/strong&gt; Enforcing organizational policies, access controls, and compliance requirements consistently across all AI interactions&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;While addressing fundamental challenges of infrastructure fragmentation and API inconsistency, AI deployments that scale to mission-critical status create additional challenges requiring specialized gateway enhancements: the computational overhead of redundant inference and the need for consistent content moderation.&lt;/p&gt;&lt;p&gt;An AI strategy remains incomplete without a robust gateway. Organizations lacking this critical infrastructure component build on fundamentally unstable foundations. Yet even with basic gateway functionality, enterprises still face significant challenges with performance economics and responsible scaling.&lt;/p&gt;&lt;h2 id=&quot;semantic-caching-unlocking-inference-scalability&quot;&gt;Semantic Caching: Unlocking Inference Scalability&lt;/h2&gt;&lt;p&gt;Computational costs quickly become a limiting factor when AI systems move from experimentation to production. Traditional horizontal scaling proves economically unsustainable for AI inference, particularly for large language models with significant computational requirements.&lt;/p&gt;&lt;p&gt;Semantic caching emerges as the critical solution to scalability challenges. Unlike traditional caching requiring exact matches, semantic caching leverages advanced embedding techniques to identify the underlying meaning of queries, enabling reuse of previously computed results for semantically similar requests. Semantic caching dramatically transforms the economics of AI deployment:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Reduced Computational Redundancy:&lt;/strong&gt; Identifying semantic similarity avoids repeating expensive computations for equivalent requests&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Dramatic Latency Improvements:&lt;/strong&gt; Cached responses resolve in milliseconds rather than seconds&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Cost-Effective Scaling:&lt;/strong&gt; Resources focus on novel prompts while common patterns leverage cached results&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;application-in-financial-services&quot;&gt;Application in Financial Services&lt;/h3&gt;&lt;p&gt;In financial services, semantic caching delivers exceptional value for customer-facing applications like chatbots and advisory tools. When implemented within AI gateways, organizations can expect:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Significant reduction in inference costs through intelligent response reuse&lt;/li&gt;&lt;li&gt;Response times improving from seconds to milliseconds&lt;/li&gt;&lt;li&gt;Increased capacity to handle peak loads without proportional infrastructure scaling&lt;/li&gt;&lt;li&gt;Consistent performance during high-traffic events like product launches or market volatility&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The impact multiplies in distributed edge deployments, allowing organizations to efficiently scale inference capacity without additional hardware costs.&lt;/p&gt;&lt;h2 id=&quot;content-guard-foundation-for-responsible-ai-delivery&quot;&gt;Content Guard: Foundation for Responsible AI Delivery&lt;/h2&gt;&lt;p&gt;While performance challenges merely impede AI adoption, governance concerns can terminate projects entirely. The need for governance becomes especially critical when organizations deploy generative AI in customer-facing and high-stakes environments where inappropriate handling of data or outputs creates significant reputational or compliance risks.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Content guard addresses governance concerns by establishing a sophisticated safety layer within AI gateways that protects sensitive information shared with models and evaluates generated content to ensure compliance with ethical guidelines, industry standards, and regulatory requirements. This bidirectional approach safeguards the entire AI interaction flow, from inputs to outputs, creating a robust governance framework for responsible AI deployment.&lt;/p&gt;&lt;p&gt;For organizations with distributed inferencing operations, content guard delivers consistent policy enforcement across every deployment location while adapting to local requirements when necessary.&lt;/p&gt;&lt;h3 id=&quot;application-in-healthcare&quot;&gt;Application in Healthcare&lt;/h3&gt;&lt;p&gt;In healthcare environments, content guard provides critical safeguards for both clinical and patient-facing AI applications. When implemented within AI gateways, healthcare organizations can:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Enforce HIPAA compliance through automated PII detection and redaction&lt;/li&gt;&lt;li&gt;Apply specialized medical safety filters to prevent potentially harmful recommendations&lt;/li&gt;&lt;li&gt;Maintain distinct policy sets for different user interfaces (clinician vs. patient)&lt;/li&gt;&lt;li&gt;Provide comprehensive audit trails documenting all content validations&lt;/li&gt;&lt;li&gt;Reduce manual compliance reviews, accelerating application deployment while improving safety&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;By providing consistent, documentable enforcement of organizational policies regardless of where inference occurs, content guard transforms AI from a compliance risk into a compliance-enhancing asset for enterprises in highly regulated sectors.&lt;/p&gt;&lt;h2 id=&quot;deployment-flexibility-from-core-to-edge&quot;&gt;Deployment Flexibility: From Core to Edge&lt;/h2&gt;&lt;p&gt;AI gateways represent a logically centralized control plane that excels across diverse deployment scenarios. The lightweight, high-performance architecture enables organizations to maintain consistent policies, interfaces, and behaviors regardless of where AI inference occurs—from centralized data centers to thousands of edge locations.&lt;/p&gt;&lt;p&gt;Deployment flexibility becomes increasingly valuable as AI inference requirements diversify. Organizations now deploy AI gateways to:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Optimize centralized data center operations for cost-efficiency at scale&lt;/li&gt;&lt;li&gt;Support hybrid architectures combining on-premises and cloud resources&lt;/li&gt;&lt;li&gt;Expand AI services to edge locations for reduced latency and data sovereignty&lt;/li&gt;&lt;li&gt;Enable consistent management across heterogeneous environments&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Managing these varied deployments demands a code-first approach. As highlighted in our previous &lt;a href=&quot;https://traefik.io/blog/beyond-the-ai-gateway-why-a-holistic-api-architecture-and-code-first-operating-model-are-essential/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;blog&lt;/u&gt;&lt;/a&gt; on a holistic API architecture, the complexity of distributed AI infrastructure makes traditional manual management fundamentally unsustainable.&lt;/p&gt;&lt;p&gt;The code-first operating model transforms AI infrastructure deployment and management through:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Infrastructure as Code:&lt;/strong&gt; Gateway configurations, routing rules, and policies defined in version-controlled files&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Declarative Management:&lt;/strong&gt; Explicit definition of desired states, eliminating configuration drift&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Automated Consistency:&lt;/strong&gt; Automatic propagation of changes across distributed instances&lt;/li&gt;&lt;li&gt;&lt;strong&gt;GitOps Workflows:&lt;/strong&gt; Changes reviewed, tested, and deployed through established pipelines&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Audit and Compliance:&lt;/strong&gt; Complete history of infrastructure changes and policy updates&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;For AI gateways operating at the edge, this approach must accommodate additional requirements:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Lightweight Deployment:&lt;/strong&gt; Efficient operation in resource-constrained edge environments&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Stateful Operations:&lt;/strong&gt; Maintaining critical functions like semantic caching with minimal overhead&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Consistent Policies:&lt;/strong&gt; Enforcing global standards with local adaptations where required&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Resilient Operations:&lt;/strong&gt; Continuing to function during network disruptions&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The code-first model maintains consistency across this distributed edge environment while adapting quickly to evolving requirements.&lt;/p&gt;&lt;h2 id=&quot;integrated-gateway-solutions-enhancing-performance-and-compliance-everywhere&quot;&gt;Integrated Gateway Solutions: Enhancing Performance and Compliance Everywhere&lt;/h2&gt;&lt;p&gt;The full potential of AI gateways emerges when semantic caching and content guard operate together within a unified framework managed through code. This integration creates an optimized workflow regardless of deployment location:&lt;/p&gt;&lt;h3 id=&quot;optimized-ai-inference-workflow-anywhere&quot;&gt;Optimized AI Inference Workflow Anywhere:&lt;/h3&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Request Processing:&lt;/strong&gt; Incoming queries reach the gateway, whether in centralized data centers or edge locations&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Intelligent Cache Utilization:&lt;/strong&gt; Gateway evaluates semantic similarity against contextually appropriate cached queries&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Efficient Response:&lt;/strong&gt; For matches, retrieve cached responses and perform rapid content guard validation&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Optimized Inferencing:&lt;/strong&gt; For novel queries, perform inference on appropriately sized models locally or route as needed&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Continuous Learning:&lt;/strong&gt; Cache validated responses for future similar queries in that environment&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Organizations can implement these AI functions across their entire infrastructure ecosystem—from massive centralized clusters to hundreds of distributed locations—creating a unified system that enables consistent management while maintaining operational flexibility.&lt;/p&gt;&lt;p&gt;The result is an integrated system delivering AI that is simultaneously faster, more cost-effective, more reliable, and demonstrably safer—regardless of where it operates in your infrastructure.&lt;/p&gt;&lt;h2 id=&quot;conclusion-building-future-proof-ai-infrastructure&quot;&gt;Conclusion: Building Future-Proof AI Infrastructure&lt;/h2&gt;&lt;p&gt;Organizations that thrive in AI&apos;s rapid evolution won&apos;t necessarily possess the most advanced models, but rather the most thoughtful infrastructure to deploy them effectively and responsibly—wherever inferencing needs to occur.&lt;/p&gt;&lt;p&gt;AI gateways equipped with semantic caching and content guard, managed through a code-first approach, provide everything enterprises need to scale AI responsibly across any environment. The combined solution ensures high performance, reduced costs, streamlined workflows, and robust compliance—whether deployed in centralized data centers, distributed edge locations, or hybrid architectures spanning both.&lt;/p&gt;&lt;h2 id=&quot;getting-started-with-advanced-ai-gateway-implementation&quot;&gt;Getting Started with Advanced AI Gateway Implementation&lt;/h2&gt;&lt;p&gt;Ready to enhance your AI infrastructure? Here are specific next steps:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Assessment:&lt;/strong&gt; Request our complimentary AI Gateway Readiness Assessment to identify your organization&apos;s specific needs&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Pilot Implementation:&lt;/strong&gt; Start with a focused pilot in a high-value use case to demonstrate ROI&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Solution Consultation:&lt;/strong&gt; Schedule a session with our technical team to discuss integration with your existing infrastructure&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Strategic Roadmap:&lt;/strong&gt; Develop a phased implementation plan tailored to your business priorities&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Explore our comprehensive &lt;a href=&quot;https://traefik.io/solutions/ai-gateway/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;AI Gateway solution&lt;/u&gt;&lt;/a&gt; or &lt;a href=&quot;https://info.traefik.io/contact-us?product_of_interest=AI%20Gateway&amp;ref=containous.ghost.io&quot;&gt;&lt;u&gt;contact our solution team&lt;/u&gt;&lt;/a&gt; to discuss how semantic caching and content guard can transform your enterprise AI deployment across your entire infrastructure.&lt;/p&gt;&lt;h2 id=&quot;related-articles&quot;&gt;Related Articles&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/blog/beyond-the-ai-gateway-why-a-holistic-api-architecture-and-code-first-operating-model-are-essential/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Beyond the AI Gateway: Why a Holistic API Architecture and Code-First Operating Model Are Essential&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/blog/the-ai-gateway-imperative-why-your-enterprise-ai-strategy-is-incomplete-without-it/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;The AI Gateway Imperative: Why Your Enterprise AI Strategy is Incomplete Without it&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/blog/taming-the-wild-west-of-llms-with-traefik-ai-gateway/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Taming The Wild West of LLMs with Traefik AI Gateway&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/glossary/ai-gateway/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;AI Gateway: What Is It and How Is It Different From API Gateway&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Security Alert: How Attackers Can Bypass Next.js Middleware With a Single HTTP Header]]></title>
            <description><![CDATA[Recently, a critical vulnerability (CVE-2025-29927) was disclosed in the popular Next.js framework, allowing attackers to circumvent middleware execution—including security checks—by leveraging an internal header.]]></description>
            <link>https://traefik.io/security-alert-how-attackers-can-bypass-next-js-middleware-with-a-single-http-header</link>
            <guid isPermaLink="true">https://traefik.io/security-alert-how-attackers-can-bypass-next-js-middleware-with-a-single-http-header</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[José Carlos Chávez]]></dc:creator>
            <pubDate>Tue, 25 Mar 2025 15:11:21 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/03/Blog@2x-20-1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/03/Blog@2x-20-1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/03/Blog@2x-20-1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/03/Blog@2x-20-1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/03/Blog@2x-20-1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;The Critical Vulnerability Every Next.js Developer Should Know About&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Did you know that a simple HTTP header manipulation could completely bypass your authentication and authorization systems in Next.js applications? Recently, a critical vulnerability (&lt;a href=&quot;https://nvd.nist.gov/vuln/detail/CVE-2025-29927?ref=containous.ghost.io&quot;&gt;&lt;u&gt;CVE-2025-29927&lt;/u&gt;&lt;/a&gt;) was disclosed in the popular Next.js framework, allowing attackers to circumvent middleware execution—including security checks—by leveraging an internal header.&lt;/p&gt;&lt;h2 id=&quot;understanding-nextjs-architecture-and-why-it-matters&quot;&gt;Understanding Next.js Architecture and Why It Matters&lt;/h2&gt;&lt;p&gt;According to Next.js documentation:&lt;/p&gt;&lt;p&gt;Middleware [in Next.js] allows you to run code before a request is completed. Then, based on the incoming request, you can modify the response by rewriting, redirecting, modifying the request or response headers, or responding directly.&lt;/p&gt;&lt;p&gt;In practical terms, middleware serves as the gatekeeper for your application, handling critical functions like:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Authentication &amp;amp; Authorization&lt;/li&gt;&lt;li&gt;Rate limiting&lt;/li&gt;&lt;li&gt;Request logging&lt;/li&gt;&lt;li&gt;Response manipulation&lt;/li&gt;&lt;li&gt;Routing&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;When middleware execution is bypassed, all of these security controls fail simultaneously.&lt;/p&gt;&lt;h2 id=&quot;how-the-attack-works&quot;&gt;How the Attack Works&lt;/h2&gt;&lt;p&gt;As detailed in research by security researchers Allam Rachid (zhero) and Allam Yasser (inzo_), the attack exploits the x-middleware-subrequest header—an internal implementation detail that was never meant to be exposed to users.&lt;/p&gt;&lt;h3 id=&quot;the-exploit-method&quot;&gt;The Exploit Method&lt;/h3&gt;&lt;p&gt;By supplying a specific value to this header—easily inferred from the target application&apos;s structure—attackers can completely bypass Next.js middleware execution. For example, accessing a protected admin section at dashboard/panel/admin would simply require trying requests with headers like:&lt;/p&gt;&lt;p&gt;For modern versions (14.x and 15.x):&lt;/p&gt;&lt;pre&gt;&lt;code&gt;x-middleware-subrequest: middleware:middleware:middleware:middleware:middleware
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;For older versions (11.1.4 through 12.1.x):&lt;/p&gt;&lt;pre&gt;&lt;code&gt;x-middleware-subrequest: pages/_middleware
x-middleware-subrequest: pages/dashboard/_middleware
x-middleware-subrequest: pages/dashboard/panel/_middleware
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can find more details about the vulnerability &lt;a href=&quot;https://zhero-web-sec.github.io/research-and-things/nextjs-and-the-corrupt-middleware?ref=containous.ghost.io&quot;&gt;&lt;u&gt;here&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;h2 id=&quot;real-world-impact&quot;&gt;Real-World Impact&lt;/h2&gt;&lt;p&gt;This vulnerability has severe implications:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Unauthorized access&lt;/li&gt;&lt;li&gt;Bypassing of authentication and authorization&lt;/li&gt;&lt;li&gt;Exposure of sensitive data&lt;/li&gt;&lt;li&gt;Circumvention of rate limiting and other protective measures&lt;/li&gt;&lt;li&gt;Potential access to internal APIs not meant for public consumption&lt;/li&gt;&lt;li&gt;Denial of Service through cache poisoning&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;the-response-from-nextjs&quot;&gt;The Response from Next.js&lt;/h2&gt;&lt;p&gt;The Next.js team addressed this issue with a combination of patches and workarounds that vary by version:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Next.js 15.x: Fixed in version 15.2.3&lt;/li&gt;&lt;li&gt;Next.js 14.x: Fixed in version 14.2.25&lt;/li&gt;&lt;li&gt;Next.js 11.1.4 through 13.5.6: No direct patches available; the official recommendation is to implement a workaround, though 13.x is a maintained version.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Importantly, the official workaround recommendation from Next.js is to prevent the x-middleware-subrequest header from reaching your application - which can be implemented through various means, including WAFs, API gateways, reverse proxies, or load balancers.&lt;/p&gt;&lt;p&gt;This version-specific approach creates notable challenges for organizations:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Teams face trade-offs between performing emergency upgrades or rapidly deploying header-filtering solutions, both of which can strain resources.&lt;/li&gt;&lt;li&gt;Organizations managing multiple Next.js apps across different versions must tailor their mitigation approach for each one. Organizations with multiple Next.js applications across different versions need different strategies&lt;/li&gt;&lt;li&gt;Older versions lack direct patches, requiring teams to rely on network-level filtering—and if that’s not feasible, they may need to refactor sensitive parts of their codebase to mitigate the risk.&lt;/li&gt;&lt;li&gt;For legacy versions, the responsibility shifts from developers to operations and network teams, as code-based fixes aren&apos;t an option.&lt;/li&gt;&lt;li&gt;Non-managed deployments require self-managed defenses, increasing the overhead for teams hosting Next.js independently.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;For many organizations, leveraging an API Gateway and a WAF—or similar network-level protection—is essential for ensuring consistent security across their entire application portfolio. Teams that already have these in place are in a stronger position to mitigate such attacks, reinforcing the importance of adopting the GW pattern as a proactive investment in security.&lt;/p&gt;&lt;h2 id=&quot;the-operational-advantage-api-gateway-layer-protection-vs-application-upgrades&quot;&gt;The Operational Advantage: API Gateway Layer Protection vs. Application Upgrades&lt;/h2&gt;&lt;p&gt;One of the most compelling yet often overlooked benefits of protection through an API Gateway is the dramatic operational advantage it provides compared to codebase and tooling upgrades. Consider the contrasting approaches:&lt;/p&gt;&lt;p&gt;Upgrades approach:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Upgrades may require product downtime&lt;/li&gt;&lt;li&gt;Requires end to end testing of the product&lt;/li&gt;&lt;li&gt;May be blocked by release freezes or change management policies&lt;/li&gt;&lt;li&gt;Demands coordination across multiple teams (development, QA, operations)&lt;/li&gt;&lt;li&gt;Requires upgrading to Next.js 14.2.25+ or 15.2.3+ depending on your current version&lt;/li&gt;&lt;li&gt;May introduce compatibility issues with other dependencies and a cascade of other dependency updates&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;API Gateway protection approach:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Allows for rapid response to the vulnerability&lt;/li&gt;&lt;li&gt;Can be deployed independently of the application&lt;/li&gt;&lt;li&gt;Can be tested in DetectOnly mode before enforcing&lt;/li&gt;&lt;li&gt;Is typically reversible with minimal consequences&lt;/li&gt;&lt;li&gt;Targets only the specific vulnerability without touching the application code&lt;/li&gt;&lt;li&gt;Can be managed by operations teams without developer involvement&lt;/li&gt;&lt;li&gt;And most importantly, will bring security governance to your platform&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The difference is stark for organizations managing dozens or hundreds of applications. Implementing API Gateway protection at the network edge can shield all vulnerable applications simultaneously—while application upgrades might require weeks of coordinated work across multiple teams and systems.&lt;/p&gt;&lt;p&gt;Patching remains essential for comprehensive security. However, the ability to deploy an immediate API Gateway-based solution creates a critical time buffer that allows for proper planning, testing, and deployment of application upgrades without leaving systems exposed in the interim. A good security strategy is the one that relies on multiple layers of protection.&lt;/p&gt;&lt;h2 id=&quot;immediate-mitigation-with-traefik-and-coraza-blocking-the-vulnerable-header&quot;&gt;Immediate Mitigation with Traefik and Coraza: Blocking the Vulnerable Header&lt;/h2&gt;&lt;p&gt;If you&apos;re unable to upgrade to the fixed versions mentioned above, the official Next.js guidance is to block the x-middleware-subrequest header from reaching your application. Traefik offers a streamlined and less invasive way to implement this protection—regardless of whether you are pursuing a temporary workaround or a long-term mitigation strategy.&amp;nbsp;&lt;/p&gt;&lt;p&gt;By leveraging Traefik with its &lt;a href=&quot;https://traefik.io/blog/exploring-traefiks-waf-integration-and-how-to-make-it-23x-faster/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Coraza WAF extension&lt;/u&gt;&lt;/a&gt;, teams can enforce this critical safeguard at the network edge, avoiding disruptive changes to application code or infrastructure. This approach allows for rapid, centralized protection that scales easily across multiple services and environments.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;http:
  middlewares:
    waf:
      plugin:
        coraza:
          directives:
            - Include @coraza.conf-recommended
            - SecRuleEngine On
            - SecRule &amp;amp;REQUEST_HEADERS:x-middleware-subrequest &quot;@gt 0&quot; &quot;id:1000001,phase:1,msg:&apos;Request contains x-middleware-subrequest header&apos;,deny,status:403&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The above configuration blocks any request containing the vulnerable header, providing immediate protection while you plan your patching strategy.&lt;/p&gt;&lt;p&gt;Even without &lt;a href=&quot;https://traefik.io/blog/exploring-traefiks-waf-integration-and-how-to-make-it-23x-faster/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Coraza WAF&lt;/u&gt;&lt;/a&gt;, Traefik&apos;s native header manipulation capabilities can implement this protection using the &lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/reference/routing/http/middlewares/ref-headers?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Headers middleware&lt;/u&gt;&lt;/a&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;http:
  middlewares:
    patch-nextjs-apps:
      headers:
        customRequestHeaders:
          x-middleware-subrequest: &quot;&quot; # Removes the header
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The key requirement is blocking this header before it reaches your Next.js application, and Traefik provides multiple flexible approaches to accomplish this critical security task.&lt;/p&gt;&lt;h2 id=&quot;broader-protection-mitigating-high-profile-attacks-with-traefik-coraza-waf&quot;&gt;Broader Protection: Mitigating High-Profile Attacks with Traefik Coraza WAF&lt;/h2&gt;&lt;p&gt;The power of Traefik&apos;s WAF extends far beyond mitigating specific vulnerabilities like the Next.js middleware bypass. It provides protection against many of the most common and devastating web application attacks, including:&lt;/p&gt;&lt;h3 id=&quot;sql-injection-sqli&quot;&gt;SQL Injection (SQLi)&lt;/h3&gt;&lt;p&gt;SQL injection attacks remain one of the OWASP Top 10 web application vulnerabilities year after year. These attacks can lead to:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Unauthorized access to sensitive database information&lt;/li&gt;&lt;li&gt;Data theft or manipulation&lt;/li&gt;&lt;li&gt;Complete system compromise&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Traefik&apos;s Coraza WAF can detect and block SQLi attempts with rules like:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;http:
  middlewares:
    xss-protection:
      plugin:
        coraza:
          directives:
            - Include @coraza.conf-recommended
            - SecRuleEngine On
            - Include @owasp_crs/REQUEST-942-APPLICATION-ATTACK-SQLI.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;cross-site-scripting-xss&quot;&gt;Cross-Site Scripting (XSS)&lt;/h3&gt;&lt;p&gt;XSS attacks allow attackers to inject malicious client-side scripts into web pages viewed by other users. These attacks can:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Steal session cookies and user credentials&lt;/li&gt;&lt;li&gt;Deface websites&lt;/li&gt;&lt;li&gt;Redirect users to malicious sites&lt;/li&gt;&lt;li&gt;Perform actions on behalf of authenticated users&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Traefik WAF can protect against XSS with rules like:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;http:
  middlewares:
    xss-protection:
      plugin:
        coraza:
          directives:
            - Include @coraza.conf-recommended
            - SecRuleEngine On
            - Include @owasp_crs/REQUEST-941-APPLICATION-ATTACK-XSS.conf
            - Include @owasp_crs/REQUEST-949-BLOCKING-EVALUATION.conf
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;defense-in-depth-beyond-patching&quot;&gt;Defense in Depth: Beyond Patching&lt;/h2&gt;&lt;p&gt;This vulnerability reminds us of the importance of defense in depth. Even with the Next.js patch, consider implementing these additional protections:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Use layered protection mechanisms rather than relying solely on Next.js middleware&lt;/li&gt;&lt;li&gt;Follow the principle of least privilege for all application components&lt;/li&gt;&lt;li&gt;Implement an API gateway architecture for additional security layers&lt;/li&gt;&lt;li&gt;Integrate WAF capabilities with the API gateway architecture&lt;/li&gt;&lt;li&gt;Regularly audit your dependencies for known vulnerabilities&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Traefik&apos;s flexibility allows it to act not just as a simple reverse proxy but as a comprehensive security gateway that can adapt to evolving threats without requiring application changes.&lt;/p&gt;&lt;h2 id=&quot;real-world-impact-1&quot;&gt;Real-World Impact&lt;/h2&gt;&lt;p&gt;Several recent reports such as the 2024 Verizon Data Breach Investigations Report, Kaspersky Incident Response Report 2024, and 2024 Unit 42 Incident Response Report, have found that web application attacks continue to be the most common attack vector in confirmed breaches. Implementing a WAF like Traefik Coraza provides a crucial defense layer against these prevalent threats.&lt;/p&gt;&lt;p&gt;A single deployment of Traefik with properly configured WAF rules can protect entire application ecosystems from a wide range of attacks, often without requiring changes to the underlying applications themselves.&lt;/p&gt;&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;&lt;p&gt;HTTP header-based attacks represent a sophisticated yet increasingly common attack vector. The Next.js vulnerability demonstrates how a single header manipulation can bypass critical security controls, but it&apos;s just one of many threats targeting modern web applications.&lt;/p&gt;&lt;p&gt;The &lt;a href=&quot;https://traefik.io/blog/exploring-traefiks-waf-integration-and-how-to-make-it-23x-faster/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;integration of Traefik with its Coraza WAF extension&lt;/u&gt;&lt;/a&gt; provides a powerful first line of defense against not only specialized attacks like the Next.js middleware bypass, but also persistent, high-impact threats like SQL injection and XSS attacks that continue to plague applications across industries.&lt;/p&gt;&lt;p&gt;This operational approach—implementing Traefik protection rather than rushing application changes—represents a fundamental shift in vulnerability response strategy. It allows organizations to implement immediate protection while planning thoughtful, well-tested application updates on normal release cycles. This balance of security and operational stability is increasingly critical as application complexity and the pace of discovered vulnerabilities both continue to accelerate.&lt;/p&gt;&lt;p&gt;For development teams, this serves as a reminder to:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Keep frameworks and libraries updated&lt;/li&gt;&lt;li&gt;Monitor security advisories from your dependencies&lt;/li&gt;&lt;li&gt;Have a clear incident response plan for vulnerabilities&lt;/li&gt;&lt;li&gt;Prioritize operational resilience through non-invasive security controls&lt;/li&gt;&lt;li&gt;Consider gateway-level protections that can shield multiple applications simultaneously&lt;/li&gt;&lt;li&gt;Implement multiple layers of security, with an API Gateway as a critical component&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;By understanding these risks and implementing proper mitigations with Traefik, you can significantly reduce your attack surface and better protect your applications from the ever-evolving threat landscape while maintaining operational stability.&lt;/p&gt;&lt;h2 id=&quot;related-articles-and-resources&quot;&gt;Related Articles and Resources&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/glossary/api-security/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Glossary Article: Understanding API Security and the Top 4 Methods to Implement It&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/blog/7-critical-api-protection-strategies-to-fortify-your-api-security/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;7 Critical API Protection Strategies to Fortify Your API Security&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/blog/exploring-traefiks-waf-integration-and-how-to-make-it-23x-faster/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Stop SQLi and XSS Attacks Easily with Traefik&apos;s WAF Integration&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/reference/routing/http/middlewares/ref-coraza-waf?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;u&gt;Traefik Coraza WAF Documentation&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;references&quot;&gt;References&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://github.com/vercel/next.js/security/advisories/GHSA-f82v-jwr5-mffw?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Official Next.js security advisory (GHSA-f82v-jwr5-mffw)&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://nextjs.org/docs/app/building-your-application/routing/middleware?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Next.js middleware documentation&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://nvd.nist.gov/vuln/detail/CVE-2025-29927?ref=containous.ghost.io&quot;&gt;&lt;u&gt;CVE-2025-29927 details&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://owasp.org/www-project-top-ten/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OWASP Top 10 Web Application Security Risks&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.verizon.com/business/resources/reports/dbir/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Verizon 2024 Data Breach Investigations Report&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.kaspersky.com/about/press-releases/valid-accounts-showed-significant-increase-as-initial-attack-vector-in-2024?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Kaspersky Incident Response Report 2024&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://unit42.paloaltonetworks.com/unit42-incident-response-report-2024-threat-guide/?ref=containous.ghost.io#:~:text=Threat%20actor%20tactics%20evolved%20noticeably,well%20as%20session%20token%20theft&quot;&gt;&lt;u&gt;2024 Unit 42 Incident Response Report&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/reference/routing/http/middlewares/ref-coraza-waf?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;u&gt;Traefik Coraza WAF Documentation&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://zhero-web-sec.github.io/research-and-things/nextjs-and-the-corrupt-middleware?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Next.js and the corrupt middleware: the authorizing artifact - zhero_web_security&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Credits: Vulnerability discovered by Allam Rachid (zhero) and Allam Yasser (inzo_).&lt;/li&gt;&lt;/ul&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[7 Critical API Protection Strategies to Fortify Your API Security]]></title>
            <description><![CDATA[API security isn't just good practice – it's a necessity. As businesses increasingly rely on APIs to power everything from mobile applications to cloud services and IoT devices, these digital interfaces have become the new perimeter – and the new target for sophisticated attackers.]]></description>
            <link>https://traefik.io/7-critical-api-protection-strategies-to-fortify-your-api-security</link>
            <guid isPermaLink="true">https://traefik.io/7-critical-api-protection-strategies-to-fortify-your-api-security</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[Strategy]]></category>
            <dc:creator><![CDATA[Immánuel Fodor]]></dc:creator>
            <pubDate>Thu, 20 Mar 2025 09:48:04 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/03/Blog@2x-19-1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/03/Blog@2x-19-1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/03/Blog@2x-19-1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/03/Blog@2x-19-1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/03/Blog@2x-19-1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;API security isn&apos;t just good practice – it&apos;s a necessity. As businesses increasingly rely on APIs to power everything from mobile applications to cloud services and IoT devices, these digital interfaces have become the new perimeter – and the new target for sophisticated attackers.&lt;/p&gt;&lt;p&gt;The question isn&apos;t &lt;em&gt;if&lt;/em&gt; an attack will happen, but &lt;em&gt;when&lt;/em&gt;. A recent analysis by &lt;a href=&quot;https://report.treblle.com/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Treblle&lt;/u&gt;&lt;/a&gt; (2024) reveals a startling reality: over half of API requests analyzed in 2023 used no encryption whatsoever, leaving sensitive data exposed to interception. Even more concerning, 52% had no authentication mechanisms in place – essentially leaving the digital front door wide open. Furthermore, 85% of APIs implemented no rate limiting, making them vulnerable to brute force attacks and service disruptions.&lt;/p&gt;&lt;p&gt;These vulnerabilities aren&apos;t just theoretical concerns. High-profile breaches like the one experienced by &lt;a href=&quot;https://www.cybersecuritydive.com/news/beyondtrust-customers-attacks/736203/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;BeyondTrust in late 2023&lt;/u&gt;&lt;/a&gt;, where API key exposure led to significant organizational damage, demonstrate the real-world consequences of inadequate security. As APIs continue to proliferate – with organizations deploying hundreds or even thousands across their ecosystem – the attack surface expands dramatically.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-190241936960&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;190241936960&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLL7QjdZ%2BE0aLDmqzFd9h6fZkzrDaNRuYEh0HCP95vWQBoGopm4sLX9zqx6fhFJV%2B9NuMKGHpQ3q2CmtysEpFCA1aTUbZzLJcPSXJf4QP%2Bp%2BbnRR3MX0dZ6d6wHcWMAqBugaMCZJSRi4X2lMSEXBigALtXwyb1%2FO06FMsM0HB0bdVFVdi11%2FQJLGPyJ9HbR4GVP9keUMaHvHhIG26yicpg%3D%3D&amp;webInteractiveContentId=190241936960&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Watch API Gateway Demo&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-190241936960.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;Compounding the problem is the rise of &quot;zombie&quot; APIs – those APIs that remain accessible but unmaintained. Treblle&apos;s analysis found that a staggering 35% of endpoints fell into this category, creating significant blind spots in security postures. Without proper documentation, oversight, or regular updates, these forgotten interfaces represent prime targets for attackers seeking the path of least resistance.&lt;/p&gt;&lt;p&gt;Against this backdrop of escalating threats and costly consequences, organizations need a comprehensive, multilayered approach to API security. Let&apos;s explore seven critical protection strategies that can help secure your APIs against emerging threats.&lt;/p&gt;&lt;h2 id=&quot;1-encrypt-your-api-traffic&quot;&gt;#1: Encrypt Your API Traffic&amp;nbsp;&lt;/h2&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;TLS certificates are free&lt;/strong&gt; – &lt;strong&gt;so use them!&lt;/strong&gt;&lt;/em&gt;&lt;/p&gt;&lt;p&gt;While HTTPS might seem basic, the data shows a shocking reality: 55% of API requests analyzed didn&apos;t use any encryption (&lt;a href=&quot;https://report.treblle.com/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Treblle&lt;/u&gt;&lt;/a&gt;, 2024). This means sensitive data is being transmitted in plaintext, vulnerable to interception.&lt;/p&gt;&lt;p&gt;Even if the topic feels a little arbitrary to mention, we should prioritize first and foremost to encrypt the traffic leaving or reaching the gateway.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Protection levels:&lt;/strong&gt;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Manual certificate management&lt;/strong&gt;: Suitable for organizations that purchase extended validity certificates from authorities&lt;/li&gt;&lt;/ol&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-1.png&quot; class=&quot;kg-image&quot; alt=&quot;certificate management diagram&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/07/num-1.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-1.png 960w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;ol start=&quot;2&quot;&gt;&lt;li&gt;&lt;strong&gt;Automated certificate management&lt;/strong&gt;: Using solutions like Let&apos;s Encrypt with the ACME protocol&lt;/li&gt;&lt;/ol&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-2.png&quot; class=&quot;kg-image&quot; alt=&quot;distributed tls diagram&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/07/num-2.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-2.png 960w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;ol start=&quot;3&quot;&gt;&lt;li&gt;&lt;strong&gt;Self-hosted private key infrastructure&lt;/strong&gt;: Managing your own PKI with ACME-compatible tools like HashiCorp Vault&lt;/li&gt;&lt;/ol&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-3.png&quot; class=&quot;kg-image&quot; alt=&quot;TLS with HashiCorp Vault Diagram&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/07/num-3.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-3.png 960w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Remember, even internal APIs deserve dataflow encryption. There is no excuse for internal APIs to be left unsecured. Leverage wildcard certificates to protect subdomains that are only resolvable through an internal DNS server.&lt;/p&gt;&lt;h2 id=&quot;2-enforce-strong-authentication-and-authorization&quot;&gt;#2: Enforce Strong Authentication and Authorization&amp;nbsp;&lt;/h2&gt;&lt;p&gt;The data from &lt;a href=&quot;https://report.treblle.com/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Treblle&lt;/u&gt;&lt;/a&gt; revealed that 52% of analyzed requests had no form of authentication in 2024. This amount represents a massive vulnerability surface. Even internal infrastructure isn&apos;t immune to threats. Recent breaches like the one experienced by BeyondTrust demonstrate that API keys can be compromised with devastating effects.&lt;/p&gt;&lt;p&gt;Unauthenticated API calls should be the exception, a deliberate choice that you don&apos;t put any kind of authentication in front of them. Apart from these choices, you should authenticate everything.&lt;/p&gt;&lt;p&gt;The best approach starts with an identity provider as the foundation layer for proper API governance, with related authentication methods like JWT, OIDC, or OAuth2 building on top of it.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-4.png&quot; class=&quot;kg-image&quot; alt=&quot;AuthN and AuthZ diagram&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/07/num-4.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-4.png 960w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;3-protect-apis-from-abuse-and-overuse&quot;&gt;#3: Protect APIs From Abuse and Overuse&amp;nbsp;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Avoid service disruptions, protect performance, user trust &amp;amp; SLAs&amp;nbsp;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Despite the fundamental role of rate limiting in API security, a surprising &lt;strong&gt;85% of analyzed APIs had no rate limits in place&lt;/strong&gt;, leaving them vulnerable to denial-of-service attacks and excessive usage (&lt;a href=&quot;https://report.treblle.com/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Treblle&lt;/u&gt;&lt;/a&gt;, 2024). This widespread oversight exposes systems to severe disruptions, impacting both operational stability and user experience.&lt;/p&gt;&lt;p&gt;There are several layers of protection available to prevent such vulnerabilities. To name a few:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;IP Address Filtering:&lt;/strong&gt; This method restricts access to specific IP ranges, ensuring that only trusted sources can make requests.&lt;/li&gt;&lt;/ul&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-5.png&quot; class=&quot;kg-image&quot; alt=&quot;IP restriction diagram&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/07/num-5.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-5.png 960w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Parallel Request Limitation:&lt;/strong&gt; By controlling the number of concurrent requests from a single client, systems can prevent overloads and maintain optimal performance. Especially useful to fight web crawlers or DoS attacks.&lt;/li&gt;&lt;/ul&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-6.png&quot; class=&quot;kg-image&quot; alt=&quot;limit parallel requests diagram&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/07/num-6.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-6.png 960w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Request Flow Control:&lt;/strong&gt; Implementing true rate limiting with token bucket algorithms helps manage request rates effectively, thereby preventing abuse.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Distributed Rate Limiting:&lt;/strong&gt; This approach shares rate limit counters across gateway replicas, ensuring consistent enforcement of limits even in distributed architectures. Every replica sees the same counters, enhancing security through coordinated rate limiting.&lt;/li&gt;&lt;/ul&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-7.png&quot; class=&quot;kg-image&quot; alt=&quot;distributed rate limiting diagram&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/07/num-7.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-7.png 960w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;By leveraging these layered protections, organizations can significantly level up their security game, reducing the risk of service disruptions and safeguarding user trust.&lt;/p&gt;&lt;h2 id=&quot;4-block-known-vulnerabilities&quot;&gt;#4: Block Known Vulnerabilities&amp;nbsp;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Configure a Web Application Firewall (WAF)&amp;nbsp;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;A &lt;strong&gt;Web Application Firewall (WAF)&lt;/strong&gt; is crucial for defending against known attack patterns, including SQL injection and cross-site scripting. Beyond protecting sensitive data, a WAF is also essential for maintaining regulatory compliance, such as &lt;strong&gt;PCI DSS requirements&lt;/strong&gt;.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://traefik.io/blog/exploring-traefiks-waf-integration-and-how-to-make-it-23x-faster/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik Labs utilizes an open-source core for its firewall&lt;/u&gt;&lt;/a&gt;, which has &lt;strong&gt;OWASP endorsement&lt;/strong&gt;, ensuring industry-standard protection against the latest threats. Deploying a WAF is relatively straightforward, often requiring just a few lines of configuration, making it an accessible yet powerful mechanism for enhancing security.&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-8.png&quot; class=&quot;kg-image&quot; alt=&quot;web application firewall file&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/07/num-8.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-8.png 960w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;5-apply-zero-trust-for-accessing-apis&quot;&gt;#5: Apply Zero-Trust for Accessing APIs&amp;nbsp;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Avoid data leaks with the least privilege principle&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Rather than providing unrestricted access to entire APs, a zero-trust approach restricts access to specific endpoints and methods, enhancing security by enforcing least-privilege access, significantly reducing APIs&apos; attack surface.&lt;/p&gt;&lt;p&gt;By defining &lt;strong&gt;granular access rules&lt;/strong&gt;, you can control exactly what clients can access, even as your APIs evolve. This ensures that newly deployed endpoints are not automatically exposed, minimizing the risk of unauthorized access.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-9.png&quot; class=&quot;kg-image&quot; alt=&quot;granular access control example&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/07/num-9.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-9.png 960w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;6-centralize-secret-and-key-management&quot;&gt;#6: Centralize Secret and Key Management&amp;nbsp;&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Protect API Keys for AI/LLM APIs&amp;nbsp;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;With the growing reliance on external services, particularly &lt;strong&gt;AI and LLM services&lt;/strong&gt; that require API keys for access, centralizing API key management has become crucial. These keys are powerful – if compromised, they can allow unauthorized users to exhaust tokens, deplete account credits, or even drain linked bank accounts.&lt;/p&gt;&lt;p&gt;The most effective solution is to store credentials centrally and issue &lt;strong&gt;short-lived tokens&lt;/strong&gt; to end users. These tokens can be easily revoked, minimizing the impact of compromised keys. By implementing this gateway pattern, organizations can prevent the direct exposure of valuable API keys, ensuring better security and control.&lt;/p&gt;&lt;p&gt;Centralized API key management not only safeguards sensitive data but also streamlines the administration of access credentials.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-10.png&quot; class=&quot;kg-image&quot; alt=&quot;Diagram of Traefik&apos;s AI gateway&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/07/num-10.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-10.png 960w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;7-avoid-zombie-and-shadow-apis&quot;&gt;#7: Avoid Zombie and Shadow APIs&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;&lt;em&gt;Only expose what’s documented in your OpenAPI specification&amp;nbsp;&lt;/em&gt;&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;One of the most alarming findings showed that 35% of API endpoints were &quot;zombie&quot; endpoints – accessible but unmaintained and potentially vulnerable (&lt;a href=&quot;https://report.treblle.com/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Treblle&lt;/u&gt;&lt;/a&gt;, 2024).&amp;nbsp;&lt;/p&gt;&lt;p&gt;These unmaintained APIs pose more and more threats to organizations these days. Use OpenAPI specifications to define legitimate endpoints and block everything else. Even for legacy systems without documentation, observability tools can help build specifications from observed traffic. You can block undocumented endpoints with flipping one single configuration value.&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-11.png&quot; class=&quot;kg-image&quot; alt=&quot;file showing setting for blocking unknown traffic&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/07/num-11.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-11.png 960w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;bonus-tip-implement-comprehensive-observability-and-reduce-downtime-dramatically&quot;&gt;Bonus Tip: Implement Comprehensive Observability and Reduce Downtime Dramatically&amp;nbsp;&lt;/h2&gt;&lt;p&gt;While not directly a security control, observability provides the visibility necessary to identify potential threats and respond quickly.&lt;/p&gt;&lt;p&gt;Without this, you will not see if request rates spike up, if error rates spike up, or if an IP address bombards your infrastructure. By implementing OpenTelemetry for metrics, tracing, and logs, organizations can identify potential security incidents and correlate them with changes to systems. This visibility is essential for effective incident response.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-12.png&quot; class=&quot;kg-image&quot; alt=&quot;grafana dashboard with opentelemetry data&quot; loading=&quot;lazy&quot; width=&quot;960&quot; height=&quot;540&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/07/num-12.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/num-12.png 960w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;taking-a-multilayered-approach&quot;&gt;Taking a Multilayered Approach&lt;/h2&gt;&lt;p&gt;No single security measure is sufficient on its own. To effectively safeguard APIs, organizations should adopt a &lt;strong&gt;multilayered security strategy&lt;/strong&gt;, integrating multiple protective mechanisms. Each layer – be it rate limiting, WAF, zero-trust, centralized key management, or observability – provides unique benefits that collectively enhance the security posture.&lt;/p&gt;&lt;p&gt;These measures are designed to work together, reinforcing each other to create a robust defense system. By implementing this comprehensive approach to API security, organizations can significantly reduce their risk profile, protecting their data and systems from emerging threats.&lt;/p&gt;&lt;p&gt;The multilayered strategy ensures a resilient and secure API environment, safeguarding business operations and maintaining user trust.&lt;/p&gt;&lt;p&gt;This article was contributed to &lt;a href=&quot;https://devops.com/7-critical-api-protection-strategies-to-fortify-your-api-security/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;DevOps.com&lt;/a&gt; by &lt;strong&gt;Traefik Labs &lt;/strong&gt;for &lt;strong&gt;KubeCon London 2025&lt;/strong&gt;.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Ready to see how Traefik Hub can elevate your security strategy? &lt;a href=&quot;https://info.traefik.io/en/request-demo?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Request a demo today&lt;/a&gt; and experience the benefits of a modern, high-performance API Gateway and Management solution.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-190241936960&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;190241936960&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLL7QjdZ%2BE0aLDmqzFd9h6fZkzrDaNRuYEh0HCP95vWQBoGopm4sLX9zqx6fhFJV%2B9NuMKGHpQ3q2CmtysEpFCA1aTUbZzLJcPSXJf4QP%2Bp%2BbnRR3MX0dZ6d6wHcWMAqBugaMCZJSRi4X2lMSEXBigALtXwyb1%2FO06FMsM0HB0bdVFVdi11%2FQJLGPyJ9HbR4GVP9keUMaHvHhIG26yicpg%3D%3D&amp;webInteractiveContentId=190241936960&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Watch API Gateway Demo&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-190241936960.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Beyond the AI Gateway: Why a Holistic API Architecture and Code-First Operating Model Are Essential]]></title>
            <description><![CDATA[We're diving deeper into why an AI Gateway alone isn't sufficient—organizations need a comprehensive API architecture supported by modern "API Management as Code" practices to handle the explosive growth of AI inference endpoints.
]]></description>
            <link>https://traefik.io/beyond-the-ai-gateway-why-a-holistic-api-architecture-and-code-first-operating-model-are-essential</link>
            <guid isPermaLink="true">https://traefik.io/beyond-the-ai-gateway-why-a-holistic-api-architecture-and-code-first-operating-model-are-essential</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <category><![CDATA[AI Strategy]]></category>
            <category><![CDATA[Strategy]]></category>
            <dc:creator><![CDATA[Sudeep Goswami]]></dc:creator>
            <pubDate>Wed, 19 Mar 2025 12:41:51 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/03/Blog@2x-18-1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/03/Blog@2x-18-1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/03/Blog@2x-18-1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/03/Blog@2x-18-1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/03/Blog@2x-18-1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;In our &lt;a href=&quot;https://traefik.io/blog/the-ai-gateway-imperative-why-your-enterprise-ai-strategy-is-incomplete-without-it/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;previous exploration&lt;/a&gt; of enterprise AI architecture, we examined how an AI Gateway serves as a critical component for managing AI operations.&lt;/p&gt;&lt;p&gt;Today, we&apos;re diving deeper into why an &lt;a href=&quot;https://traefik.io/solutions/ai-gateway/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;AI Gateway&lt;/u&gt;&lt;/a&gt; alone isn&apos;t sufficient—organizations need a comprehensive API architecture supported by modern &quot;API Management as Code&quot; practices to handle the explosive growth of AI inference endpoints.&lt;/p&gt;&lt;h2 id=&quot;ai-inference-everywhere-the-edge-computing-revolution&quot;&gt;&lt;strong&gt;AI Inference Everywhere: The Edge Computing Revolution&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;The AI landscape is experiencing a fundamental shift as inference workloads—the deployment of trained models to make real-time predictions—expand from centralized cloud environments to the network edge and everywhere in between. This expansion represents a strategic imperative for organizations seeking competitive advantage through faster, more efficient AI deployments.&lt;/p&gt;&lt;p&gt;Global spending on edge computing reached $228 billion in 2024, marking a 14% increase from 2023, according to IDC&apos;s Worldwide Edge Spending Guide.[1] Looking forward, IDC forecasts that edge spending will reach $378 billion by 2028, demonstrating a clear expansion of AI workloads across the entire computing spectrum.&lt;/p&gt;&lt;p&gt;This edge-ward expansion is driven by necessity. Millisecond response times—essential for latency-sensitive applications like computer vision, autonomous control systems, and voice interfaces—fundamentally cannot be met by cloud-based inference. As IDC&apos;s Dave McCarthy notes, edge computing is &quot;crucial for reducing latency,&quot;[2] enabling the split-second decisions required in modern systems. Consider a manufacturing robot analyzing visual input: waiting for data to travel to distant servers and back creates an unacceptable bottleneck for operations that demand immediate responses.&lt;/p&gt;&lt;p&gt;As we progress through 2025, this trend continues to accelerate as organizations discover that edge AI isn&apos;t merely about technical performance—it&apos;s about creating entirely new capabilities that weren&apos;t previously possible.&lt;/p&gt;&lt;h2 id=&quot;the-cambrian-explosion-of-ai-apis&quot;&gt;&lt;strong&gt;The Cambrian Explosion of AI APIs&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;As organizations operationalize AI models, they&apos;re increasingly exposing these capabilities via APIs. Modern software architecture trends have accelerated this shift toward microservices and AI-as-a-Service architectures, where machine learning models are deployed as independent API endpoints rather than being embedded directly into applications. This architectural approach enables organizations to build, deploy, and manage AI inference capabilities as modular, reusable services that can be consumed on-demand by multiple applications.&lt;/p&gt;&lt;p&gt;In practice, this means that an employee application or customer-facing system might call an internal API endpoint for an ML model (or an external API like OpenAI) to get a prediction or generate text, instead of containing the ML model code itself. This decoupling creates significant benefits: improved scalability, easier maintenance, and more efficient resource utilization. However, it also results in what industry experts have aptly termed a &quot;Cambrian explosion&quot; of API endpoints.&lt;/p&gt;&lt;p&gt;According to Forrester&apos;s 2024 API Management Wave Report, &quot;As AI agents become mainstream, APIs will be the primary means of AI-driven commerce and agent-to-agent communication.&quot;[3] &lt;/p&gt;&lt;blockquote&gt;Major vendors are rapidly expanding their offerings to make AI inference more accessible across public, private, hybrid cloud environments and increasingly at the edge. &lt;/blockquote&gt;&lt;p&gt;This democratization of inference capabilities is driving an unprecedented surge in inference endpoints that must be managed, secured, and governed.&lt;/p&gt;&lt;p&gt;The Salt Security State of API report 2025 provides compelling evidence of this growth, with 30% of organizations reporting 51-100% growth in APIs over the past year, and 25% experiencing growth exceeding 100%. Currently, 13% of organizations manage over 1,000 APIs, with 53% of those being large organizations with more than 10,000 employees.[4]&lt;/p&gt;&lt;p&gt;This expansion is further fueled by the rise of agentic AI. According to Deloitte&apos;s State of GenAI Q4 2024, agentic AI—which autonomously orchestrates workflows and tasks—is gaining significant traction.[5] These autonomous agents depend heavily on APIs to interact seamlessly with various enterprise tools, databases, and third-party services, driving further API demand.&lt;/p&gt;&lt;h2 id=&quot;the-management-crisis-when-apis-multiply-faster-than-governance&quot;&gt;&lt;strong&gt;The Management Crisis: When APIs Multiply Faster Than Governance&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;This rapid proliferation of AI inference endpoints has pushed traditional API management approaches to their breaking point. Organizations that previously managed dozens of APIs are now handling hundreds, and those with hundreds are rapidly approaching the thousands mark. These APIs are typically developed by different teams for different purposes, all running in production with varying levels of oversight. This &quot;API sprawl&quot; creates a governance nightmare where management practices struggle to keep pace with innovation.&lt;/p&gt;&lt;p&gt;Security concerns top the list of challenges. Salt Security&apos;s 2025 State of API Security Report reveals alarming statistics: 58% of organizations monitor their APIs less than daily, and only 20% continuously monitor their APIs in real-time. Only 15% are very confident in their API inventory accuracy, while 34% admitted facing security challenges regarding lack of visibility into sensitive data exposure.[4]&lt;/p&gt;&lt;p&gt;The consequences are severe: 99% of organizations have encountered API issues in the past year, and 55% have slowed application rollouts due to API security concerns. Most organizations remain unprepared, with only 10% having an API posture governance strategy in place and 59% still in the planning or basic stages of their API security strategies. Only 6% report having advanced security programs, while 8% have non-existent API security strategies.[4]&lt;/p&gt;&lt;p&gt;Beyond security, operational complexity increases exponentially with API volume. When dozens of microservices each expose multiple AI model endpoints, orchestrating these moving parts becomes nearly impossible with manual approaches. The microservices architecture that makes AI deployment more flexible also creates a substantial governance challenge, as each AI model exposed as an API requires its own monitoring, access controls, rate limiting, and lifecycle management.&lt;/p&gt;&lt;p&gt;Versioning presents another critical challenge amplified by AI workloads. AI models are frequently updated as they&apos;re retrained on fresh data or improved with new architectures. These changes must often be reflected in the API interface, creating a versioning challenge that grows with each new endpoint.&lt;/p&gt;&lt;h2 id=&quot;why-an-ai-gateway-alone-is-not-enough&quot;&gt;&lt;strong&gt;Why an AI Gateway Alone Is Not Enough&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;While an AI Gateway provides essential functionality for managing AI interactions—including unified access, security enforcement, and operational efficiency—it represents just one piece of a larger API management puzzle. The AI Gateway excels at handling AI-specific concerns but needs to be part of a holistic architecture that addresses the entire API lifecycle.&lt;/p&gt;&lt;blockquote&gt;An AI Gateway without comprehensive API management is like having a sophisticated security system for your front door while leaving windows and side entrances unprotected. &lt;/blockquote&gt;&lt;p&gt;It creates a false sense of security and control while leaving critical vulnerabilities unaddressed.&lt;/p&gt;&lt;p&gt;For example, an AI Gateway might effectively manage authentication and rate limiting for AI model access, but without proper versioning, documentation, and lifecycle management across all APIs, organizations still face significant challenges as their AI implementations scale. Governance frameworks often lag behind technical implementations, creating gaps where policies aren&apos;t consistently applied or enforced.&lt;/p&gt;&lt;p&gt;Furthermore, as organizations deploy AI inference capabilities everywhere—from cloud to edge and all points in between—they need management solutions that span this distributed architecture—providing consistent controls regardless of where models are deployed or how they&apos;re accessed.&lt;/p&gt;&lt;h2 id=&quot;the-limitations-of-traditional-api-management&quot;&gt;&lt;strong&gt;The Limitations of Traditional API Management&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Established API management platforms provide essential capabilities for controlling and streamlining API usage. These platforms offer API gateways for routing and policy enforcement, authentication integration, rate limiting, monitoring, and developer portals.&lt;/p&gt;&lt;p&gt;However, while these tools have served well in traditional environments, they&apos;re showing limitations in the face of AI-driven API proliferation. The sheer quantity of APIs generated by AI initiatives strains manual configuration approaches. Traditional API management often relied on web-based consoles where administrators would register and configure dozens of APIs—now they face hundreds of model endpoints, making click-through management impractical.&lt;/p&gt;&lt;p&gt;Governance consistency presents another challenge. Even with robust API management solutions, ensuring that every new AI endpoint receives appropriate policies relies on process discipline. In fast-moving AI development cycles, teams might bypass governance for quick experiments, creating gaps where not all inference APIs are properly managed.&lt;/p&gt;&lt;p&gt;Performance considerations also influence management decisions. AI inference calls can be latency-sensitive, and adding an API gateway hop introduces overhead. For high-throughput or real-time inference scenarios, teams might be tempted to bypass management layers for speed, creating shadow APIs outside governance frameworks.&lt;/p&gt;&lt;p&gt;As we look toward the rest of 2025 and beyond, it&apos;s clear that existing API management approaches remain essential but insufficient alone for the AI-driven API ecosystem. The solution lies in creating a holistic architecture that integrates the AI Gateway with proven API management best practices, implemented through modern code-first approaches.&lt;/p&gt;&lt;h2 id=&quot;api-management-as-code-the-path-forward&quot;&gt;&lt;strong&gt;API Management as Code: The Path Forward&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;&quot;API Management as Code&quot; represents a paradigm shift in how organizations handle their growing API estates. Rather than configuring API gateways and management settings through web interfaces, this approach defines all API definitions, routing rules, policies, and access controls declaratively in version-controlled files. Changes to APIs occur through code modifications deployed via automated pipelines, not through manual console interactions.&lt;/p&gt;&lt;p&gt;This shift mirrors the evolution we&apos;ve seen in infrastructure management, where Infrastructure as Code (IaC) has become the standard approach for large-scale deployments. For AI-rich environments, the benefits are particularly compelling:&lt;/p&gt;&lt;p&gt;&lt;strong&gt;First, code-driven API management enables scale through automation. &lt;/strong&gt;With APIs defined as code, organizations can script and templatize the creation of new AI endpoints. When a data science team develops a new model, a CI/CD pipeline can automatically generate the API configuration from a template and deploy it to the gateway. As Microsoft&apos;s APIOps best practices note, treating API configurations as code helps teams deploy changes iteratively and handle complexity at scale.[6]&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Second, treating API configurations as code brings version control and collaboration benefits. &lt;/strong&gt;API definitions in Git repositories allow teams to review changes via pull requests, catch potential issues before deployment, and maintain a complete history of API evolution. This approach enables rollbacks when needed and fosters standardization through centralized policy templates that every API must follow before deployment.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Third, code-driven management facilitates multi-environment coordination. &lt;/strong&gt;Large enterprises typically maintain multiple API gateways across development, testing, and production environments. Managing these through code means deploying consistent configurations everywhere from a single source of truth.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Fourth, API mocking capabilities combined with code-driven management can reduce costs during development and testing. &lt;/strong&gt;When working with expensive AI services, teams can use mock endpoints to simulate responses instead of calling paid APIs for every test. This approach can significantly reduce development costs while accelerating innovation.&lt;/p&gt;&lt;p&gt;As organizations deploy more AI inference endpoints in 2025 and beyond, API Management as Code will move from advantageous to essential—providing the only viable path to maintain control, security, and agility at scale.&lt;/p&gt;&lt;h2 id=&quot;a-unified-api-architecture-bringing-it-all-together&quot;&gt;&lt;strong&gt;A Unified API Architecture: Bringing It All Together&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;A truly effective approach combines an AI Gateway with a comprehensive API architecture and code-first management practices. This holistic strategy includes:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;An &lt;a href=&quot;https://traefik.io/solutions/ai-gateway/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;AI Gateway&lt;/u&gt;&lt;/a&gt; that serves as the specialized entry point for AI workloads, providing model-specific optimizations, security controls, and unified access.&lt;/li&gt;&lt;li&gt;Proven &lt;a href=&quot;https://traefik.io/solutions/api-management/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;API Management&lt;/u&gt;&lt;/a&gt; best practices implemented through modern, code-driven approaches. These include complete API lifecycle management (design, documentation, versioning, retirement) reimagined for the scale and complexity of AI workloads.&lt;/li&gt;&lt;li&gt;Centralized &lt;a href=&quot;https://traefik.io/glossary/openid-connect-everything-you-need-to-know/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;identity and access management&lt;/u&gt;&lt;/a&gt; through an IdP, providing a foundational layer to know your users, govern their access, and enforce consistent security policies across all API endpoints.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/solutions/api-governance/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;API Governance&lt;/u&gt;&lt;/a&gt; that enforces standards, security policies, and compliance requirements across all endpoints.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/solutions/api-mocking/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;API Mocking&lt;/u&gt;&lt;/a&gt; to facilitate development and testing without disrupting production environments or incurring unnecessary costs when working with expensive AI services.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/blog/revolutionizing-api-operations-a-dive-into-gitops-based-api-management/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;API Management as Code&lt;/u&gt;&lt;/a&gt; practices that automate deployment and configuration of all these components.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;This unified architecture addresses the complete spectrum of challenges organizations face when scaling AI initiatives. The AI Gateway handles the unique aspects of AI workloads, while the broader API management framework ensures consistency, governance, and developer experience across all digital interfaces.&lt;/p&gt;&lt;p&gt;By implementing this holistic approach, organizations can maintain control over their growing API landscape while enabling the agility needed for rapid AI innovation. Teams can deploy new models quickly and securely, knowing that appropriate controls are automatically applied through code-driven processes.&lt;/p&gt;&lt;h2 id=&quot;the-time-to-act-is-now-how-to-get-started&quot;&gt;&lt;strong&gt;The Time to Act Is Now: How to Get Started&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;The AI inference explosion isn&apos;t a distant future scenario—it&apos;s happening now, and the velocity is only increasing. Organizations that delay implementing a holistic API architecture with code-first management practices aren&apos;t just missing an opportunity; they&apos;re creating existential business risk.&lt;/p&gt;&lt;p&gt;According to Deloitte&apos;s &quot;State of Generative AI in the Enterprise – Q4 2024&quot; survey, organizations are experiencing a strategic shift towards using AI for competitive differentiation, with GenAI becoming integral to core business processes.[5] As AI moves deeper into business-critical functions, companies will increasingly rely on APIs to integrate and operationalize these AI models across applications and platforms.&lt;/p&gt;&lt;p&gt;The survey also reveals mature adoption of GenAI within IT, cybersecurity, operations, marketing, and customer service, indicating widespread integration into existing workflows and software. Such integration inevitably increases the reliance on APIs to facilitate interactions between AI services and core enterprise systems.&lt;/p&gt;&lt;p&gt;Higher-than-expected ROI from advanced GenAI initiatives, particularly in cybersecurity, is motivating organizations to scale deployments. This scaling naturally increases API utilization as enterprises integrate these solutions across more users and processes.&lt;/p&gt;&lt;p&gt;Implementing a modern, holistic API architecture doesn&apos;t require a complete overhaul of existing systems. Organizations can begin their journey immediately with these steps:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Assess your current API landscape and identify gaps in governance, security, and scalability&lt;/li&gt;&lt;li&gt;Adopt API Management as Code practices for new AI initiatives first, then expand&lt;/li&gt;&lt;li&gt;Integrate your AI Gateway with comprehensive API management capabilities&lt;/li&gt;&lt;li&gt;Implement a consistent governance framework that spans all APIs, not just AI endpoints&lt;/li&gt;&lt;li&gt;Establish centralized identity and access management as a foundation for API security&lt;/li&gt;&lt;li&gt;Embrace automation and code-driven approaches throughout the API lifecycle&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The question isn&apos;t whether you need a holistic API architecture—it&apos;s how quickly you can implement one before the incoming wave of AI inference APIs overwhelms your current capabilities. The organizations that act decisively now will turn API proliferation from a potential crisis into a strategic advantage, creating the foundation for sustainable AI innovation that delivers real business value while managing risk effectively.&lt;/p&gt;&lt;blockquote&gt;Don&apos;t be caught unprepared for the AI inference tsunami. The time to build your unified API architecture is now—before the wave hits.&lt;/blockquote&gt;&lt;h2 id=&quot;related-articles-and-resources&quot;&gt;&lt;strong&gt;Related Articles and Resources:&lt;/strong&gt;&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/glossary/ai-gateway/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;AI Gateway: What Is It and How Is It Different From API Gateway?&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/blog/from-ingress-to-api-intelligence-unlocking-traefik-v3-xs-full-potential-in-nkp-v2-14/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;From Ingress to API Intelligence: Unlocking Traefik v3.x’s Full Potential in NKP v2.14&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/blog/the-ai-gateway-imperative-why-your-enterprise-ai-strategy-is-incomplete-without-it/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;The AI Gateway Imperative: Why Your Enterprise AI Strategy is Incomplete Without it&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/blog/taming-the-wild-west-of-llms-with-traefik-ai-gateway/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Taming The Wild West of LLMs with Traefik AI Gateway&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;footnotes&quot;&gt;&lt;strong&gt;Footnotes&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;[1]: &quot;Worldwide Edge Spending Guide,&quot; IDC Research, 2024.&lt;/p&gt;&lt;p&gt;[2]: &quot;Global edge computing spending to reach $228 billion in 2024,&quot; Back End News.&lt;/p&gt;&lt;p&gt;[3]: &quot;The Forrester Wave™: API Management Solutions, Q4 2024,&quot; Forrester Research, October 2024.&lt;/p&gt;&lt;p&gt;[4]: &quot;Salt Security State of API report 2025,&quot; Salt Security, 2025.&lt;/p&gt;&lt;p&gt;[5]: &quot;State of Generative AI in the Enterprise – Q4 2024,&quot; Deloitte Research, 2024.&lt;/p&gt;&lt;p&gt;[6]: &quot;Automated API deployments using APIOps,&quot; Microsoft Azure Architecture Center.&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[From Ingress to API Intelligence: Unlocking Traefik v3.x’s Full Potential in NKP v2.14]]></title>
            <description><![CDATA[The integration of Traefik v3.x in Nutanix Kubernetes Platform (NKP) v2.14 marks a pivotal advancement in enterprise API capabilities. Traefik v3.x establishes a progressive pathway for organizations to evolve their API strategy.]]></description>
            <link>https://traefik.io/from-ingress-to-api-intelligence-unlocking-traefik-v3-xs-full-potential-in-nkp-v2-14</link>
            <guid isPermaLink="true">https://traefik.io/from-ingress-to-api-intelligence-unlocking-traefik-v3-xs-full-potential-in-nkp-v2-14</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Sudeep Goswami, Michael Matur]]></dc:creator>
            <pubDate>Thu, 06 Mar 2025 14:08:03 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/03/Blog@2x-17-1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/03/Blog@2x-17-1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/03/Blog@2x-17-1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/03/Blog@2x-17-1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/03/Blog@2x-17-1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The integration of Traefik v3.x in Nutanix Kubernetes Platform (NKP) v2.14 marks a pivotal advancement in enterprise API capabilities. Far more than just an ingress controller, Traefik v3.x establishes a progressive pathway for organizations to evolve their API strategy—from fundamental application routing to sophisticated API Gateway functionality, AI Gateway services, and comprehensive API lifecycle management. This modular approach allows enterprises to advance at their own pace, adopting capabilities sequentially as their needs mature, without disruptive migrations or platform changes. By meeting organizations exactly where they are on their API journey, Traefik v3.x transforms NKP v2.14 from a container orchestration platform into a complete API innovation ecosystem.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/03/Diagram-1.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;801&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/03/Diagram-1.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/03/Diagram-1.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/03/Diagram-1.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2025/03/Diagram-1.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;phase-1-application-proxybuilding-the-foundation&quot;&gt;Phase 1: Application Proxy - Building the Foundation&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;When you need it:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;You&apos;re deploying microservices on NKP and need reliable traffic routing&lt;/li&gt;&lt;li&gt;Multiple applications require consistent load balancing&lt;/li&gt;&lt;li&gt;Service discovery is becoming manual and cumbersome&lt;/li&gt;&lt;li&gt;Team resources are limited for managing infrastructure complexity&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt; Traefik v3.x in NKP v2.14 provides out-of-the-box service discovery that automatically detects new services as they&apos;re deployed. A retail company migrating from monolithic applications to microservices can leverage Traefik&apos;s dynamic configuration to route traffic between customer-facing web applications, inventory systems, and order processing services without manual intervention. When holiday shopping traffic increases, Traefik&apos;s load balancing capabilities ensure resources are distributed optimally across services, preventing any single component from becoming a bottleneck.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key benefits:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Zero-configuration service discovery reduces operational overhead&lt;/li&gt;&lt;li&gt;Real-time traffic routing adjustments based on service health and availability&lt;/li&gt;&lt;li&gt;Simplified configuration through Kubernetes CRDs and annotations&lt;/li&gt;&lt;li&gt;Centralized entry point for all microservices traffic management&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;phase-2-api-gatewaysecuring-and-controlling-access&quot;&gt;Phase 2: API Gateway - Securing and Controlling Access&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;When you need it:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Security requirements demand centralized authentication and authorization&lt;/li&gt;&lt;li&gt;You need to manage access to APIs across multiple teams or departments&lt;/li&gt;&lt;li&gt;API traffic requires special handling (rate limiting, circuit breaking)&lt;/li&gt;&lt;li&gt;AI workloads need specialized routing and management&lt;/li&gt;&lt;li&gt;Enterprise integration requirements are increasing&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt; As your API ecosystem grows within NKP, Traefik v3.x transforms into a full-fledged API Gateway. A financial services company can implement OAuth2 authentication for all customer-facing APIs while using different authentication mechanisms for internal services. When they introduce a new AI-powered fraud detection system, Traefik&apos;s AI Gateway capabilities allow them to route specific transactions to this service based on risk profiles, while implementing circuit breaking to prevent cascading failures if the AI service experiences high load. Enterprise integrations with existing identity providers and security systems ensure compliance with financial regulations without custom code.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key benefits:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Centralized security policies for all API traffic&lt;/li&gt;&lt;li&gt;Specialized handling for AI endpoints with appropriate rate limiting and prioritization&lt;/li&gt;&lt;li&gt;Advanced traffic shaping capabilities (circuit breaking, retries, timeouts)&lt;/li&gt;&lt;li&gt;Integration with enterprise security infrastructure&lt;/li&gt;&lt;li&gt;Single control plane for all API traffic&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;phase-3-api-managementfull-lifecycle-runtime-governance&quot;&gt;Phase 3: API Management - Full Lifecycle Runtime Governance&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;When you need it:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;APIs have become strategic business assets requiring governance&lt;/li&gt;&lt;li&gt;Developers need self-service portals to discover and consume APIs&lt;/li&gt;&lt;li&gt;Operations teams need comprehensive observability across the API landscape&lt;/li&gt;&lt;li&gt;API versioning and lifecycle management become critical&lt;/li&gt;&lt;li&gt;Business stakeholders need insights into API usage and performance&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;How it works:&lt;/strong&gt; At the most mature stage, Traefik v3.x within NKP v2.14 evolves into a complete API Management solution. A healthcare technology company can implement API governance policies ensuring patient data APIs adhere to HIPAA compliance requirements. Their developer portal enables partner companies to discover available APIs, test them in sandbox environments, and generate client libraries. The API observability dashboard gives operations teams real-time insights into performance bottlenecks, while business analysts track API usage to determine which features drive the most value. When new AI-powered diagnostic services are introduced, the existing API lifecycle management ensures proper versioning, documentation, and controlled rollout.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Key benefits:&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Comprehensive API governance with policy enforcement&lt;/li&gt;&lt;li&gt;Developer self-service through customizable portals&lt;/li&gt;&lt;li&gt;End-to-end API observability for operations and business stakeholders&lt;/li&gt;&lt;li&gt;Controlled API versioning and deprecation workflows&lt;/li&gt;&lt;li&gt;Unified management across traditional and AI-enabled services&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;By leveraging these progressive capabilities of Traefik v3.x within NKP v2.14, organizations can evolve their API strategy at their own pace while maintaining a consistent platform and operational model. Whether you&apos;re just beginning your microservices journey or managing a sophisticated API ecosystem with AI components, Traefik provides the tools needed at each stage of maturity.&lt;/p&gt;&lt;h2 id=&quot;putting-theory-into-practice-upgrading-your-nkp-v214-traefik-deployment&quot;&gt;Putting Theory into Practice: Upgrading Your NKP v2.14 Traefik Deployment &lt;/h2&gt;&lt;p&gt;Now that you understand the value progression from Application Proxy to API Gateway to full API Management within Traefik v3.x, you might be wondering:&amp;nbsp;&lt;/p&gt;&lt;blockquote&gt;&lt;strong&gt;&lt;em&gt;&quot;How do I actually implement these advanced capabilities in my NKP v2.14 environment?&quot;&lt;/em&gt;&lt;/strong&gt;&amp;nbsp;&lt;/blockquote&gt;&lt;p&gt;The good news is that Nutanix and Traefik Labs have designed a straightforward upgrade path that preserves your existing configurations while unlocking these powerful features. The upgrade process is deliberate yet simple, allowing you to evolve your API infrastructure without disruption to your current services.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Let&apos;s walk through the specific steps required to transition from the default Traefik OSS version in NKP v2.14 to the full enterprise capabilities:&amp;nbsp;&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Create the Traefik Hub Gateway Token: contact the Traefik Sales Team for access, and then login to the Traefik Hub Dashboard &lt;a href=&quot;https://hub.traefik.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;https://hub.traefik.io&lt;/u&gt;&lt;/a&gt; &lt;/li&gt;&lt;/ol&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/03/hub-dashboard-1.gif&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;464&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/03/hub-dashboard-1.gif 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/03/hub-dashboard-1.gif 800w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;ol start=&quot;2&quot;&gt;&lt;li&gt;Create a New Catalog Entry in NKP&lt;/li&gt;&lt;/ol&gt;&lt;ul&gt;&lt;li&gt;kubectl apply -k https://github.com/traefik/nkp-traefiklabs-catalog/hub&lt;/li&gt;&lt;li&gt;TRAEFIK_HUB_TOKEN=XXXX&lt;em&gt; {where XXXX represents the actual token from the previous step}&lt;/em&gt;&lt;/li&gt;&lt;li&gt;kubectl create secret generic license --namespace kommander --from-literal=token=$TRAEFIK_HUB_TOKEN&lt;/li&gt;&lt;/ul&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/03/install-catalog-1.gif&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;424&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/03/install-catalog-1.gif 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/03/install-catalog-1.gif 800w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;ol start=&quot;3&quot;&gt;&lt;li&gt;Enable the Traefik Hub Catalog Entry in NKP&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Next, enable the Traefik Hub catalog entry to complete the upgrade process. This step integrates Traefik Hub within your NKP cluster, providing advanced API management capabilities. &lt;em&gt;Note: this step could take anywhere from 1 to 5 minutes&lt;/em&gt;&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/03/nkp-dashboard-2.gif&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;800&quot; height=&quot;467&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/03/nkp-dashboard-2.gif 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/03/nkp-dashboard-2.gif 800w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;ol start=&quot;4&quot;&gt;&lt;li&gt;Finally, log back in to Traefik Hub, and verify that the upgrade is now complete and your Traefik Hub API Gateway is &lt;em&gt;online&lt;/em&gt;. &lt;/li&gt;&lt;/ol&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/03/Screenshot-2025-03-06-at-14.26.10.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1167&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/03/Screenshot-2025-03-06-at-14.26.10.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/03/Screenshot-2025-03-06-at-14.26.10.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/03/Screenshot-2025-03-06-at-14.26.10.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2025/03/Screenshot-2025-03-06-at-14.26.10.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;This transition bridges the conceptual journey we&apos;ve discussed with concrete implementation steps, allowing you to immediately begin realizing the benefits of advanced API capabilities in your Nutanix Kubernetes environment.&lt;/p&gt;&lt;h2 id=&quot;the-api-powered-future-begins-with-traefik-and-nkp&quot;&gt;The API-Powered Future Begins with Traefik and NKP&lt;/h2&gt;&lt;p&gt;The integration of Traefik v3.x in NKP v2.14 represents more than just a technical upgrade—it&apos;s a strategic enabler for organizations looking to harness the full potential of their API ecosystem. By providing a progressive path from basic application routing to sophisticated API management and AI gateway capabilities, Traefik empowers enterprises to evolve at their own pace while maintaining operational consistency.&lt;/p&gt;&lt;p&gt;As we&apos;ve explored throughout this post, each phase of the Traefik journey addresses specific organizational needs and challenges:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Application Proxy capabilities solve immediate routing and discovery challenges&lt;/li&gt;&lt;li&gt;API and AI Gateway features enhance security and control in complex environments&lt;/li&gt;&lt;li&gt;Full API Management delivers the governance and visibility needed for strategic API and AI programs&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;With the straightforward upgrade path available in NKP v2.14, organizations can now seamlessly access these capabilities without disruptive changes to their existing infrastructure.&lt;/p&gt;&lt;h2 id=&quot;take-the-next-step-in-your-api-journey&quot;&gt;Take the Next Step in Your API Journey&lt;/h2&gt;&lt;p&gt;Ready to unlock the full potential of Traefik v3.x in your NKP environment? Here&apos;s how to get started:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Assess your current API maturity&lt;/strong&gt; and identify which Traefik capabilities would deliver the most immediate value&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/blog/5-qualities-all-api-gateways-need-in-2024/?ref=containous.ghost.io&quot;&gt;&lt;strong&gt;&lt;u&gt;Explore the five essential qualities of a modern API gateway&lt;/u&gt;&lt;/strong&gt;&lt;/a&gt; to ensure your infrastructure is future-proof&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/blog/implementing-runtime-api-governance-in-traefik-hub/?ref=containous.ghost.io&quot;&gt;&lt;strong&gt;&lt;u&gt;Implement runtime API governance best practices&lt;/u&gt;&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;to enhance security, compliance, and observability&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/blog/strategic-api-gateway-migration-a-comprehensive-blueprint/?ref=containous.ghost.io&quot;&gt;&lt;strong&gt;&lt;u&gt;Plan a seamless API gateway migration&lt;/u&gt;&lt;/strong&gt;&lt;/a&gt; with a step-by-step guide that you can apply to your specific use case&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://info.traefik.io/en/request-demo?ref=containous.ghost.io&quot;&gt;&lt;strong&gt;&lt;u&gt;Schedule a demonstration&lt;/u&gt;&lt;/strong&gt;&lt;/a&gt; with our team to see Traefik&apos;s advanced features in action within an NKP environment&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Don&apos;t let your API infrastructure limit your innovation potential. With Traefik v3.x and NKP v2.14, you have all the tools needed to build a scalable, secure, and manageable API ecosystem that can grow with your business—from your first microservice to your most sophisticated AI-powered application.&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Size Your Traefik Hub API Gateway Instances]]></title>
            <description><![CDATA[When onboarding new customers, one common question we face is about the optimal resource configuration to set for a Traefik Hub API Gateway instance. Several factors need consideration, such as the infrastructure type, traffic volume, and how Traefik Hub API Gateway will be utilized.]]></description>
            <link>https://traefik.io/how-to-size-your-traefik-hub-api-gateway-instances</link>
            <guid isPermaLink="true">https://traefik.io/how-to-size-your-traefik-hub-api-gateway-instances</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[Guides]]></category>
            <dc:creator><![CDATA[Nicolas Mengin]]></dc:creator>
            <pubDate>Tue, 04 Mar 2025 14:14:01 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/03/Blog_without_copies@2x-6.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/03/Blog_without_copies@2x-6.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/03/Blog_without_copies@2x-6.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/03/Blog_without_copies@2x-6.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/03/Blog_without_copies@2x-6.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;&lt;br&gt;When onboarding new customers, one common question we face is about the optimal resource configuration to set for a Traefik Hub API Gateway instance. Unfortunately, there is no one-size-fits-all answer to this question. Several factors need consideration, such as the infrastructure type, traffic volume, and how Traefik Hub API Gateway will be utilized.&lt;/p&gt;&lt;p&gt;Let’s explore why these factors are crucial and how to customize the Traefik Hub API Gateway deployment accordingly.&lt;/p&gt;&lt;h2 id=&quot;define-the-size&quot;&gt;Define the size&lt;/h2&gt;&lt;p&gt;From the tests we have done internally, we know a single Traefik Hub API Gateway instance (installed on 8 CPUs and 16 GB of RAM machine) is capable of routing over 72,000 HTTP Requests per Second (RPS) (and more with bigger configurations) if there is no security or operations to do on the requests. With the introduction of the experimental fastProxy option, performance can even reach up to 102,000 RPS with the same configuration. This suggests that when provided you allocate a sufficiently powerful machine, RPS should not be your primary concern in production—at least in theory.&lt;/p&gt;&lt;p&gt;In practice, the maximum RPS depends heavily on the type of traffic being managed. For example, if your Traefik Hub API Gateway instance is handling TLS connections or utilizing middleware (such as header management or rate limiting), the RPS capacity will decrease.&lt;/p&gt;&lt;p&gt;Additionally, the more you want Traefik Hub API Gateway to handle high RPS values, the larger, and the more expensive, the machines are. While these machines offer high performance, they come with high costs and a poor return on investment (ROI) since you likely won&apos;t use their full capacity most of the time—but you&apos;ll pay for them regardless.&lt;/p&gt;&lt;p&gt;On top of that, a key best practice is to favor scaling out (horizontally adding more smaller instances) over scaling up (vertically increasing the resources of a single instance). This approach not only makes your infrastructure more scalable but also more resilient: you reduce the risk of a Single Point of Failure (SPOF) and ensure that your system can handle traffic spikes more effectively.&lt;/p&gt;&lt;p&gt;For these reasons, we recommend deploying multiple smaller instances rather than a few powerful ones. The exact number and size of instances depend on your infrastructure setup as we will see below.&lt;/p&gt;&lt;h2 id=&quot;define-the-number&quot;&gt;Define the number&lt;/h2&gt;&lt;p&gt;When Traefik Hub API Gateway is deployed within an orchestrator (like Kubernetes), sizing becomes more straightforward. We recommend deploying enough instances (each with 2 vCPUs, and 4GB RAM) to handle up to 3,000 RPS per instance under normal traffic conditions.&lt;/p&gt;&lt;p&gt;The key factor here is observability: in such an environment, monitoring your containers or pods and ensuring they scale up when resource consumption reaches 70% of CPU or RAM capacity, and scaling down when traffic returns to normal.&lt;/p&gt;&lt;p&gt;However, despite Traefik Hub API Gateway being a cloud-native Ingress Controller primarily designed for container environments, it performs admirably on traditional bare-metal infrastructure as well.&lt;/p&gt;&lt;p&gt;In these environments, the challenge is finding the right balance between avoiding a Single Point of Failure (SPOF) and minimizing over-provisioning of instances. Deploying multiple small VMs with limited CPU and memory resources can handle normal traffic loads, but this approach may fall short during sudden traffic spikes if the combined RPS capacity is insufficient.&lt;/p&gt;&lt;p&gt;On the other hand, using a few larger VMs and scaling them up is both time-consuming and operationally intensive compared to simply adding replicas in a Kubernetes deployment. This makes it crucial to anticipate traffic peaks, ensuring each machine is capable of handling unexpected spikes and that scaling occurs promptly.&lt;/p&gt;&lt;p&gt;For bare-metal environments, we recommend deploying medium-sized VMs that can reliably handle around 50% of peak traffic, providing sufficient capacity while maintaining resilience.&lt;/p&gt;&lt;h2 id=&quot;real-life-example-traefik-hub-api-gateway-in-kubernetes&quot;&gt;Real-Life Example: Traefik Hub API Gateway in Kubernetes&lt;/h2&gt;&lt;p&gt;In today’s landscape, securing API access is non-negotiable. Therefore, it&apos;s important to configure the Traefik Hub API Gateway in a way that accounts for the additional latency introduced by the TLS handshake and &lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/reference/routing/http/middlewares/ref-jwt?ref=containous.ghost.io&quot;&gt;&lt;u&gt;JWT authentication &lt;/u&gt;&lt;/a&gt;verification.&lt;/p&gt;&lt;p&gt;The use of the header middleware is also common, as it allows you to pass extra information to your backend services. However, adding headers introduces additional latency, which is why we include it in this test.&lt;/p&gt;&lt;p&gt;Finally, gathering metrics for observability is crucial for any production platform. Exposing traffic metrics through OpenTelemetry allows you to monitor and gain insights into system performance, but it too has an impact on Traefik Hub API Gateway’s overall performance.&lt;/p&gt;&lt;p&gt;Let&apos;s now apply the sizing recommendations we discussed earlier to two typical use cases with different requirements:&lt;/p&gt;&lt;h3 id=&quot;up-to-1000-rps-per-instance&quot;&gt;Up to 1,000 RPS per Instance&lt;/h3&gt;&lt;p&gt;This scenario represents a common need for exposing APIs. Here, the traffic volume is moderate, with each Traefik Hub API Gateway instance handling up to 1000 RPS.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Instance Sizing&lt;/strong&gt;: For this scenario, we recommend deploying several small instances (e.g., 1-2 vCPUs, and 1-2 GB RAM). Traefik Hub API Gateway can scale horizontally, allowing you to start with a modest setup and add instances as traffic grows.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Middleware Impact&lt;/strong&gt;: Even though the traffic load is internal, enabling TLS for secure communication and using JWT Authentication middleware (as well as other middleware or operations on access logs) will introduce some overhead. Injecting headers also adds to the processing time, but at this scale, the latency impact should remain manageable.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Scaling Strategy&lt;/strong&gt;: Ensure autoscaling triggers when resource usage (CPU, memory) hits 80%, and scale down once traffic normalizes. A few well-sized instances should be enough to handle this load efficiently while maintaining cost-effectiveness.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; Start with 2-5 replicas to ensure resiliency, and monitor performance to adjust as needed.&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;1000-to-5000-rps-per-instance&quot;&gt;1,000 to 5,000 RPS per Instance&lt;/h3&gt;&lt;p&gt;This scenario is geared toward more demanding use cases, such as exposing APIs to external partners, customers, or commercial websites. With traffic ranging from 1000 to 5000 RPS per instance, the need for scalability and performance is more critical.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Instance Sizing&lt;/strong&gt;: For this higher traffic volume, each Traefik Hub API Gateway instance should have more resources—typically around 2-4 vCPUs and 4-8 GB of RAM per instance. However, instead of using a few large machines, it’s best to deploy multiple medium-sized instances to balance performance and cost.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Middleware Impact&lt;/strong&gt;: As with internal API exposure, TLS termination and JWT Authentication will still introduce latency, but at this higher traffic rate, the impact is more pronounced. Ensure the resources allocated to each instance are sufficient to handle the added load from security measures and header management. Also, exporting metrics in OpenTelemetry format will increase the processing load, so factor that into resource allocation.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Scaling Strategy&lt;/strong&gt;: For this scenario, it is essential to configure autoscaling carefully to handle traffic spikes effectively. Ensure your system scales before traffic exceeds 80% of your instance capacity to avoid bottlenecks, and consider pre-emptively adding extra replicas during anticipated peak periods (e.g., during product launches or promotional events).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; Start with 4-10 replicas to handle external traffic spikes effectively, ensuring a minimum of 20% buffer capacity for peak periods.&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;more-than-5000-rps-per-instance&quot;&gt;More than 5,000 RPS per Instance&lt;/h3&gt;&lt;p&gt;For scenarios where APIs are exposed to high-traffic environments, such as public-facing commercial websites or services with millions of users, a more specialized setup is needed:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Instance Sizing:&lt;/strong&gt; Deploy large instances with at least 4-8 CPUs and 8-16 GB of RAM. You might also consider using high-performance nodes or dedicated bare-metal instances if the traffic is extremely high.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Scaling Strategy:&lt;/strong&gt; Each instance should be optimized to handle more than 5,000 RPS. You may need to use both horizontal scaling (increasing instance count) and vertical scaling (boosting instance capacity) to meet traffic demands.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Middleware Impact:&lt;/strong&gt; At this level, even small latencies introduced by TLS handshakes, JWT, header manipulation, and metrics collection can add up quickly. It’s critical to identify each bottleneck that slows down the traffic (using Tracing) to optimize each layer of the stack for performance, and potentially offload some tasks to specialized systems (e.g., a dedicated authentication service).&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Recommendation:&lt;/strong&gt; Start with at least 10-20 replicas and monitor usage closely to ensure a quick reaction to traffic spikes. For very high loads, consider deploying Traefik Hub API Gateway in a high-availability setup, with global load balancing across multiple regions or data centers.&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;&lt;p&gt;Properly sizing Traefik Hub API Gateway instances is key to ensuring secured API publication, whether you&apos;re dealing with internal or external traffic. By understanding the specific needs of your environment—such as traffic volume, middleware usage, and infrastructure type—you can deploy a cost-effective and scalable Traefik Hub API Gateway configuration that meets your performance goals.&lt;/p&gt;&lt;p&gt;Regardless of the scenario, monitoring resource consumption and scaling based on usage thresholds (like 80% of CPU or RAM) is crucial to avoiding performance bottlenecks. By following these guidelines, you’ll ensure your Traefik Hub API Gateway deployment is both resilient and optimized for your specific use case.&lt;br&gt;&lt;br&gt;&lt;strong&gt;Useful Links&lt;/strong&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Traefik API Gateway &lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/intro?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;u&gt;Documentation&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Traefik API Gateway &lt;a href=&quot;https://traefik.io/traefik-hub-api-gateway/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;u&gt;Webpage&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://community.traefik.io/?ref=traefik.io&quot;&gt;&lt;u&gt;Our Community Forum&lt;/u&gt;&lt;/a&gt;&lt;br&gt;&lt;/li&gt;&lt;/ul&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[The AI Gateway Imperative: Why Your Enterprise AI Strategy is Incomplete Without it]]></title>
            <description><![CDATA[The enterprise AI landscape has reached a pivotal moment. According to Deloitte's latest research, 52% of organizations are prioritizing automated AI agents, while 45% are focused on multiagent systems. ]]></description>
            <link>https://traefik.io/the-ai-gateway-imperative-why-your-enterprise-ai-strategy-is-incomplete-without-it</link>
            <guid isPermaLink="true">https://traefik.io/the-ai-gateway-imperative-why-your-enterprise-ai-strategy-is-incomplete-without-it</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[AI Gateway]]></category>
            <category><![CDATA[AI Strategy]]></category>
            <category><![CDATA[Strategy]]></category>
            <dc:creator><![CDATA[Sudeep Goswami]]></dc:creator>
            <pubDate>Mon, 10 Feb 2025 11:02:17 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/02/Blog_without_copies@2x-3.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/02/Blog_without_copies@2x-3.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/02/Blog_without_copies@2x-3.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2025/02/Blog_without_copies@2x-3.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/02/Blog_without_copies@2x-3.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The enterprise AI landscape has reached a pivotal moment. According to Deloitte&apos;s &lt;a href=&quot;https://www2.deloitte.com/us/en/pages/consulting/articles/state-of-generative-ai-in-enterprise.html?ref=containous.ghost.io&quot;&gt;&lt;u&gt;latest research&lt;/u&gt;&lt;/a&gt;, 52% of organizations are prioritizing automated AI agents, while 45% are focused on multiagent systems.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Even though the uptake of these technologies is impressive, given how new they are, we&apos;re rapidly moving beyond basic automation to autonomous AI agents that can plan, decide, and act independently. These &quot;digital workers&quot; are transforming enterprise operations (adoption has &lt;a href=&quot;https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-state-of-ai?ref=containous.ghost.io#/&quot;&gt;surged to 78%&lt;/a&gt; of companies surveyed, according to McKinsey), but they&apos;re also introducing unprecedented complexity and risk.&amp;nbsp;&lt;/p&gt;&lt;p&gt;In this article, we’ll explore this newfound complexity and risk, as well as how to tame them.&lt;/p&gt;&lt;h2 id=&quot;the-reality-of-enterprise-ai-usage-today&quot;&gt;The Reality of Enterprise AI Usage Today&amp;nbsp;&lt;/h2&gt;&lt;p&gt;Enterprise AI adoption is accelerating, but it’s happening in silos. Development teams deploy AI-powered chatbots using their preferred providers, HR leverages AI-driven resume screening tools, and marketing automates content generation with yet another set of AI services. Each department operates independently—selecting its own vendors, enforcing separate security controls (if at all), and managing AI usage in isolation.&lt;/p&gt;&lt;p&gt;This fragmented approach forces organizations to navigate a growing maze of AI integrations, each with different authentication methods, governance frameworks, and cost structures. A single company might have marketing using GPT-4, customer service relying on Claude, and HR leveraging Gemini—each through separate interfaces, with inconsistent security policies and compliance measures. &lt;/p&gt;&lt;blockquote&gt;As AI investments continue to rise—67% of organizations plan to increase spending (McKinsey), and 78% expect further growth in 2025 (Deloitte)—this lack of cohesion is becoming increasingly unsustainable.&lt;/blockquote&gt;&lt;h2 id=&quot;the-hidden-risks-of-ungated-ai&quot;&gt;The Hidden Risks of Ungated AI&lt;/h2&gt;&lt;p&gt;The fragmented, decentralized AI adoption exposes organizations to serious risks. Without a unified mechanism to manage and monitor AI interactions, companies face mounting challenges.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Compliance Challenges&amp;nbsp;&lt;/strong&gt;&lt;br&gt;As the #1 barrier to GenAI deployment, regulatory compliance isn&apos;t just about checking boxes. When AI systems handle sensitive customer data or make automated decisions affecting individuals, a single compliance misstep can lead to substantial fines and damaged reputation.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Security Vulnerabilities&lt;/strong&gt;&lt;br&gt;The fact that 35% of organizations cite &quot;mistakes/errors with real-world consequences&quot; as their top concern (Deloitte) isn&apos;t surprising. Imagine an AI-powered trading system making unauthorized transactions, or a customer service AI exposing sensitive information—these aren&apos;t hypothetical risks but real scenarios playing out in unprepared organizations.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Cost Management&lt;/strong&gt;&lt;br&gt;The statistic that 78% of organizations plan to increase AI spending in 2025 (Deloitte) takes on new meaning when you consider uncontrolled usage. Without proper oversight, departments can unknowingly rack up massive bills through inefficient API calls or redundant model usage.&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;the-strategic-role-of-an-ai-gateway&quot;&gt;The Strategic Role of an AI Gateway&amp;nbsp;&lt;/h2&gt;&lt;p&gt;An AI gateway serves as your enterprise&apos;s command center for AI operations, fundamentally transforming how organizations manage their AI infrastructure. At its core, it functions as a unified control point that abstracts away the complexity of multiple AI providers and models. This allows development teams to focus on what truly matters—building valuable applications—rather than getting bogged down in managing complex integrations.&lt;/p&gt;&lt;p&gt;Security and governance are equally crucial aspects of the gateway&apos;s role. It acts as a centralized checkpoint ensuring all AI interactions adhere to enterprise policies—a critical function given that 70% of organizations need at least 12 months to resolve governance challenges (Deloitte). A centralized approach means security policies can be consistently enforced across all AI interactions, regardless of which team or department initiates them.&lt;/p&gt;&lt;p&gt;Additionally, as AI usage scales across the enterprise, the gateway&apos;s intelligent traffic management becomes increasingly vital. Through sophisticated caching and load-balancing capabilities, it optimizes resource utilization and controls costs while maintaining high performance. This means organizations can scale their AI operations confidently, knowing they have the infrastructure to support growing demand without compromising on efficiency or reliability.&lt;/p&gt;&lt;h2 id=&quot;accelerating-enterprise-wide-adoption&quot;&gt;Accelerating Enterprise-Wide Adoption&amp;nbsp;&lt;/h2&gt;&lt;p&gt;The path to widespread AI adoption in enterprises faces significant hurdles. &lt;/p&gt;&lt;blockquote&gt;Current data shows that less than 40% of the workforce has access to GenAI tools (Deloitte), and even among those with access, adoption rates remain surprisingly low. &lt;/blockquote&gt;&lt;p&gt;This limited penetration stems from multiple challenges.&lt;/p&gt;&lt;p&gt;Many employees feel overwhelmed by the complexity of AI tools.Others worry about inadvertently violating company policies. Some teams struggle to justify the investment when they can&apos;t properly track and measure AI&apos;s impact on their productivity.&lt;/p&gt;&lt;p&gt;An AI Gateway provides the critical infrastructure foundation that enables widespread AI adoption. It offers essential backend capabilities that organizations can build upon to create consistent, reliable, and secure AI experiences across the enterprise. This standardized infrastructure means teams can focus on creating solutions that address their specific business needs, which are supported by enterprise-grade security and governance controls.&lt;/p&gt;&lt;p&gt;Moreover, the Gateway&apos;s rich observability capabilities enable organizations to track usage patterns, measure ROI, and identify departments that might need additional training or support. This data-driven approach helps organizations understand where adoption is lagging and why, allowing them to make targeted interventions. For example, if certain teams show low usage rates, the organization can provide specialized training or showcase relevant use cases from successful departments.&lt;/p&gt;&lt;p&gt;By providing a robust foundation for AI applications, ensuring consistent security controls, and offering visibility into AI usage, the Gateway transforms AI from a specialized tool for technical teams into an enterprise-wide capability that can serve every employee&apos;s needs.&lt;/p&gt;&lt;h2 id=&quot;competitive-advantages-of-ai-gateway-implementation&quot;&gt;Competitive Advantages of AI Gateway Implementation&lt;/h2&gt;&lt;p&gt;Organizations that implement AI gateways gain significant strategic advantages that extend far beyond basic infrastructure benefits. While an AI gateway may appear to be just another technical implementation, it fundamentally transforms how enterprises operate with AI technology.&lt;/p&gt;&lt;p&gt;Time-to-market acceleration becomes a key differentiator. Development teams can launch new AI initiatives in days rather than months by leveraging pre-built integrations and standardized security controls. Instead of each team reinventing the wheel for API connections, authentication, and compliance checks, they can focus on creating business value.&lt;/p&gt;&lt;p&gt;Operational costs decrease substantially through intelligent resource optimization. The gateway&apos;s ability to route traffic efficiently, cache responses, and load-balance across providers means organizations typically see 30-40% reduction in their AI operational costs (Deloitte). Teams can experiment with different AI models without worrying about unexpected cost spikes or resource waste. These cost benefits are being realized across industries—McKinsey&apos;s research shows that organizations are seeing material benefits from AI deployment, with notable cost decreases particularly in human resources and service operations.&lt;/p&gt;&lt;p&gt;Security and compliance posture strengthens considerably across the organization. Rather than managing security policies for each AI application individually, organizations can enforce consistent controls at the gateway level. Centralizing security not only reduces risk but also streamlines audit processes and regulatory reporting.&lt;/p&gt;&lt;p&gt;Technology adaptation becomes seamless as the AI landscape evolves. When new AI models emerge or existing providers enhance their capabilities, organizations can quickly integrate these advances without disrupting existing applications. Enterprises are then better able to stay current with AI innovation while maintaining operational stability.&lt;/p&gt;&lt;p&gt;So in short, AI gateways transform scattered AI initiatives into a cohesive enterprise capability. It&apos;s analogous to the difference between having a fleet of autonomous vehicles with no traffic management system versus having a sophisticated control tower that ensures safety, efficiency, and coordination. The AI gateway becomes the foundation that turns isolated AI experiments into a true AI-powered enterprise.&lt;/p&gt;&lt;h2 id=&quot;the-time-to-act-is-now&quot;&gt;The Time to Act Is Now&amp;nbsp;&lt;/h2&gt;&lt;p&gt;With market pressures accelerating AI adoption, that stark Deloitte finding bears repeating—&lt;strong&gt;70% of organizations lose a whole year struggling with AI governance and risk management&lt;/strong&gt;. &lt;/p&gt;&lt;p&gt;This extended implementation timeline means organizations must act now, as the window for gaining a competitive advantage through proper infrastructure is closing.&amp;nbsp; Organizations that delay implementing an AI gateway risk falling behind more agile competitors who can deploy and scale AI initiatives faster and more securely. McKinsey&apos;s findings reinforce this urgency, showing that high-performing organizations are already using AI in three or more business functions, while others average just two—creating a widening competitive gap.&lt;/p&gt;&lt;p&gt;However, implementing an AI gateway and governance doesn&apos;t have to be a lengthy process. Modern gateway solutions leverage GitOps practices and declarative configurations, allowing organizations to get up and running in minutes rather than months. Teams can define their entire AI infrastructure as code, version control their configurations, and automate deployments. This makes the journey from decision to implementation remarkably swift.&lt;/p&gt;&lt;blockquote class=&quot;kg-blockquote-alt&quot;&gt;The question isn&apos;t whether you need an AI gateway but how quickly you can realize its benefits. &lt;/blockquote&gt;&lt;p&gt;In the race to harness AI&apos;s potential, having the right infrastructure isn&apos;t just an advantage—it&apos;s a prerequisite for success. And with today&apos;s tools and practices, that infrastructure is more accessible than ever.&lt;/p&gt;&lt;h3 id=&quot;sources&quot;&gt;&lt;strong&gt;Sources:&amp;nbsp;&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://www2.deloitte.com/us/en/pages/consulting/articles/state-of-generative-ai-in-enterprise.html?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Deloitte’s State of Generative AI in the Enterprise Report Q4 2024&amp;nbsp;&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.mckinsey.com/capabilities/quantumblack/our-insights/the-state-of-ai?ref=containous.ghost.io#/&quot;&gt;&lt;u&gt;McKinsey State of AI in early 2024&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;&lt;h2 id=&quot;useful-links&quot;&gt;Useful Links&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Traefik AI Gateway &lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/expose/api-gateway-ai?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;u&gt;Documentation&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Traefik AI Gateway &lt;a href=&quot;https://traefik.io/solutions/ai-gateway/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Webpage&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://community.traefik.io/?ref=traefik.io&quot;&gt;&lt;u&gt;Our Community Forum&lt;/u&gt;&lt;/a&gt;&lt;br&gt;&lt;/li&gt;&lt;/ul&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Traefik Proxy v3.3 - Nectaire of the Gods]]></title>
            <description><![CDATA[Traefik v3.3 is now generally available. This release focuses on two main tracks: observability and documentation. Traefik Proxy v3.3 includes a deeper OpenTelemetry integration as well as a much more granular observability configuration. ]]></description>
            <link>https://traefik.io/traefik-proxy-v3-3-nectaire-of-the-gods</link>
            <guid isPermaLink="true">https://traefik.io/traefik-proxy-v3-3-nectaire-of-the-gods</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Ingress]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <category><![CDATA[Product News]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Thu, 09 Jan 2025 11:46:21 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/01/Blog@1x-1.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1200&quot; height=&quot;675&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/01/Blog@1x-1.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2025/01/Blog@1x-1.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/01/Blog@1x-1.png 1200w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;Traefik v3.3&lt;/strong&gt;, codenamed &lt;strong&gt;saint-nectaire &lt;/strong&gt;(&lt;a href=&quot;https://en.wikipedia.org/wiki/Saint-Nectaire?ref=containous.ghost.io&quot;&gt;&lt;u&gt;one of the best cheeses&lt;/u&gt;&lt;/a&gt; you can find in France, made in the volcanic area Auvergne), is now generally available after two months of dedicated development and two release candidates. This release focuses on two main tracks: observability and documentation.&lt;/p&gt;&lt;p&gt;Observability has become essential for platform engineers to quickly detect outages and recover services in today&apos;s complex, cloud-native environments. Traefik Proxy v3.3 once again pushes the boundaries by adding state-of-the-art features with a deeper OpenTelemetry integration as well as a much more granular observability configuration. This makes Traefik Proxy one of the most flexible and powerful telemetry data providers, giving you instant and complete knowledge of all your ingress traffic.&lt;/p&gt;&lt;p&gt;Additionally, documentation is one of the most important (and underrated) parts of an open-source project. It’s the main entry point 😉 to your product. It should onboard newcomers to quickly learn and test while providing a clear and complete description of every option and use case to more advanced users.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Back in 2024, we started a major project to reorganize and revamp the Traefik Proxy documentation. This is quite a big journey, and we are happy to hit the first milestone today with a brand-new reference documentation.&lt;/p&gt;&lt;p&gt;Ready to dive into v3.3? Let’s start with OpenTelemetry.&lt;/p&gt;&lt;h2 id=&quot;opentelemetry-support-for-logs-and-access-logs&quot;&gt;OpenTelemetry Support for Logs and Access Logs&lt;/h2&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/you-get-opentelemetry.png&quot; class=&quot;kg-image&quot; alt=&quot;Oprah meme about opentelemetry&quot; loading=&quot;lazy&quot; width=&quot;412&quot; height=&quot;512&quot;&gt;&lt;/figure&gt;&lt;p&gt;Since its very first release, Traefik Proxy made observability one of its core features, supporting many vendors for metrics and tracing analysis. Building upon the foundation laid in Traefik Proxy v3.0 with OpenTelemetry integration, v3.3 goes even further by adding support for logs and access logs.&lt;/p&gt;&lt;p&gt;This feature is tagged “experimental,” as the official underlying library &lt;a href=&quot;https://github.com/open-telemetry/opentelemetry-go?tab=readme-ov-file&amp;ref=containous.ghost.io#project-status&quot;&gt;&lt;u&gt;is still being finalized&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;To unlock it, simply add this to your configuration:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;experimental:
  otlpLogs: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then let’s enable logs and access logs globally to the OpenTelemetry configuration:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;metrics:
  otlp: {}
tracing:
  otlp: {}
log:
  otlp: {}
accesslog:
  otlp: {}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The OpenTelemetry logger exporter will send logs to the collector using HTTPS by default to &lt;code&gt;https://localhost:4318/v1/logs&lt;/code&gt;. You can customize the exporter by referring to the &lt;a href=&quot;https://doc.traefik.io/traefik/observability/logs/?ref=containous.ghost.io#opentelemetry&quot;&gt;&lt;u&gt;logs&lt;/u&gt;&lt;/a&gt; and &lt;a href=&quot;https://doc.traefik.io/traefik/observability/access-logs/?ref=containous.ghost.io#opentelemetry&quot;&gt;&lt;u&gt;access logs&lt;/u&gt;&lt;/a&gt; documentation.&lt;/p&gt;&lt;h2 id=&quot;flexible-and-granular-observability&quot;&gt;Flexible and Granular Observability&lt;/h2&gt;&lt;p&gt;Until today, you could enable observability features globally on Traefik Proxy, which means, either you had metrics (or tracing) for all your routes or none. However, there are many use cases where you don’t want to have tracing for all your applications. Or you might just need to enable these features temporarily.&amp;nbsp;&lt;/p&gt;&lt;p&gt;That’s why we have been working on a new mechanism to have more granular control over observability. In v3.3, you now have a way to define default behaviors and you can &lt;a href=&quot;https://doc.traefik.io/traefik/routing/routers/?ref=containous.ghost.io#observability&quot;&gt;&lt;u&gt;enable or disable tracing, metrics or access logs per router&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;The default router observability configuration is inherited from the attached &lt;a href=&quot;https://doc.traefik.io/traefik/routing/routers/?ref=containous.ghost.io#observability&quot; rel=&quot;noreferrer&quot;&gt;&lt;code&gt;entryPoints&lt;/code&gt;&lt;/a&gt; and a router defining its own observability configuration will override those options.&lt;/p&gt;&lt;p&gt;Let’s take an example where you want to enable tracing by default for an&lt;strong&gt; &lt;/strong&gt;&lt;code&gt;entryPoint&lt;/code&gt;:&lt;/p&gt;&lt;p&gt;You still need to configure the tracing globally:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;tracing:
  otlp: {}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Tracing is enabled by default on &lt;code&gt;entryPoints&lt;/code&gt;, so you shouldn’t need to change anything in your configuration:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;entryPoints:
  foo:
    address: &apos;:80&apos;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This is equivalent to:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;entryPoints:
  foo:
    address: &apos;:80&apos;
    observability: 
      tracing: true 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Every router attached to this &lt;code&gt;entryPoint&lt;/code&gt; will have tracing enabled. If you want to disable a specific &lt;code&gt;router&lt;/code&gt;, that’s pretty simple:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;## Dynamic file configuration
http:
  routers:
    my-router:
      rule: &quot;Path(`/foo`)&quot;
      service: service-foo
      observability:
        tracing: false
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or if you use Kubernetes Ingresses, just add this annotation to the corresponding ingress:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;traefik.ingress.kubernetes.io/router.observability.tracing: false
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Let’s take another example where you want to disable tracing by default for an &lt;code&gt;entryPoint&lt;/code&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;entryPoints:
  foo:
    address: &apos;:80&apos;
    observability:
      tracing: false 
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And then if you want to enable tracing temporarily while troubleshooting a service:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;## Dynamic file configuration
http:
  routers:
    my-router:
      rule: &quot;Path(`/foo`)&quot;
      service: service-foo
      observability:
        tracing: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Or within an ingress:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;traefik.ingress.kubernetes.io/router.observability.tracing: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This simple and powerful granular control applies to tracing, metrics, and access logs.&lt;/p&gt;&lt;h2 id=&quot;new-reference-documentation&quot;&gt;New Reference Documentation&lt;/h2&gt;&lt;p&gt;As mentioned before, great documentation is key for open source projects. We&apos;ve been working hard to improve Traefik Proxy&apos;s docs, and we have defined new guidelines as follows:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Organize the documentation for 3 personas: beginners, advanced ops, and/or advanced developers&lt;/li&gt;&lt;li&gt;Describe high level use cases without listing every option possible in the first sections of the documentation (Getting Started, Setup, Expose, Observe, Migrate, etc)&lt;/li&gt;&lt;li&gt;Move all option descriptions to a well organized Reference section&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Today we&apos;re excited to launch our brand new reference documentation as a first milestone of this global revamp.&lt;/p&gt;&lt;p&gt;The reference documentation used to have this structure:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;├── Static Configuration
│   ├── Overview
│   ├── CLI
│   ├── Environment Variables
│   ├── File
└── Dynamic Configuration
    ├── Consul Catalog 
    └── …
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We reorganized this section to provide a much more comprehensive description of all options available:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;├── Install Configuration
│   ├── Boot Environment
│   ├── Configuration Discovery
│   │   ├── Overview
│   │   ├── Kubernetes
│   │   │   ├── Kubernetes Gateway API
│   │   │   ├── Kubernetes CRD
│   │   │   └── Kubernetes Ingress
│   │   ├── Docker
│   │   ├── Swarm
│   │   ├── Hashicorp
│   │   │   ├── Consul Catalog
│   │   │   ├── Consul
│   │   │   └── Nomad
│   │   ├── KV Stores
│   │   │   ├── Consul
│   │   │   ├── ETCD
│   │   │   ├── Redis
│   │   │   └── ZooKeeper
│   │   └── Others
│   │       ├── ECS
│   │       ├── File
│   │       └── HTTP
│   ├── Entrypoints
│   ├── API &amp;amp; Dashboard
│   ├── Observability
│   │   ├── Healthcheck
│   │   ├── Logs and Accesslogs
│   │   ├── Metrics
│   │   └── Tracing
│   └── TLS
│       ├── Certificate Resolvers
│       │   ├── Overview
│       │   ├── ACME
│       │   └── Tailscale
│       └── SPIFFE
└── Dynamic Configuration
    ├── Consul Catalog
    └── …
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We hope this will help beginners and advanced users to quickly find and learn everything they want to about Traefik Proxy. The next step? Revamp high-level sections!&lt;/p&gt;&lt;h2 id=&quot;other-improvements&quot;&gt;Other Improvements&lt;/h2&gt;&lt;p&gt;On top of those great new features, Traefik Proxy v3.3 brings &lt;a href=&quot;https://doc.traefik.io/traefik/reference/install-configuration/tls/certificate-resolvers/acme/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;options to control ACME&lt;/u&gt;&lt;/a&gt; (Let’s Encrypt) propagation checks (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11241?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11241&lt;/u&gt;&lt;/a&gt; by &lt;a href=&quot;https://github.com/ldez?ref=containous.ghost.io&quot;&gt;&lt;u&gt;ldez&lt;/u&gt;&lt;/a&gt;). We also added configuration dump support from the &lt;a href=&quot;https://doc.traefik.io/traefik/operations/api/?ref=containous.ghost.io#endpoints&quot;&gt;&lt;u&gt;API endpoint&lt;/u&gt;&lt;/a&gt; to make troubleshooting sessions easier.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://github.com/skirtan1?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Skirtan1&lt;/u&gt;&lt;/a&gt; made the IngressRoute kind optional (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11177?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11177&lt;/u&gt;&lt;/a&gt;) and &lt;a href=&quot;https://github.com/BZValoche?ref=containous.ghost.io&quot;&gt;&lt;u&gt;BZValoche&lt;/u&gt;&lt;/a&gt; added Kubernetes &lt;a href=&quot;https://kubernetes.io/docs/concepts/services-networking/endpoint-slices/?ref=containous.ghost.io#serving&quot;&gt;&lt;u&gt;serving endpoint status&lt;/u&gt;&lt;/a&gt; support to detect and mark servers as “fenced” when stickiness is enabled. Regarding sticky cookies, you can now &lt;a href=&quot;https://doc.traefik.io/traefik/routing/providers/kubernetes-ingress/?ref=containous.ghost.io#on-service&quot;&gt;&lt;u&gt;make the path configurable&lt;/u&gt;&lt;/a&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11166?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11166&lt;/u&gt;&lt;/a&gt; by &lt;a href=&quot;https://github.com/IIpragmaII?ref=containous.ghost.io&quot;&gt;&lt;u&gt;IIpragmaII&lt;/u&gt;&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;Host headers in the HTTP provider can now be set (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11237?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11237&lt;/u&gt;&lt;/a&gt; by &lt;a href=&quot;https://github.com/nikonhub?ref=containous.ghost.io&quot;&gt;&lt;u&gt;nikonhub&lt;/u&gt;&lt;/a&gt;), and you can &lt;a href=&quot;https://doc.traefik.io/traefik/middlewares/http/forwardauth/?ref=containous.ghost.io#preservelocationheader&quot;&gt;&lt;u&gt;preserve the Location header&lt;/u&gt;&lt;/a&gt; in the ForwardAuth middleware (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11318?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11318&lt;/u&gt;&lt;/a&gt; by &lt;a href=&quot;https://github.com/Nelwhix?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Nelwhix&lt;/u&gt;&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;Another great addition brought by &lt;a href=&quot;https://github.com/michelheusschen?ref=containous.ghost.io&quot;&gt;&lt;u&gt;michelheusschen&lt;/u&gt;&lt;/a&gt; allows you to only calculate basic auth hashes once for concurrent requests (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11143?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11143&lt;/u&gt;&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;You can now &lt;a href=&quot;https://doc.traefik.io/traefik/middlewares/http/forwardauth/?ref=containous.ghost.io#forwardbody&quot;&gt;&lt;u&gt;send the request body&lt;/u&gt;&lt;/a&gt; to the authorization server with the ForwardAuth middleware (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11097?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11097&lt;/u&gt;&lt;/a&gt; by &lt;a href=&quot;https://github.com/kyo-ke?ref=containous.ghost.io&quot;&gt;&lt;u&gt;kyo-ke&lt;/u&gt;&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;Additionally, it is now possible to make Traefik abort the startup in case a plugin load fails (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11228?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#11228&lt;/u&gt;&lt;/a&gt; by &lt;a href=&quot;https://github.com/bmagic?ref=containous.ghost.io&quot;&gt;&lt;u&gt;bmagic&lt;/u&gt;&lt;/a&gt;) and finally, the API &amp;amp; Dashboard base path &lt;a href=&quot;https://doc.traefik.io/traefik/operations/dashboard/?ref=containous.ghost.io#custom-api-base-path&quot;&gt;&lt;u&gt;can now be configured&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;h2 id=&quot;moving-forward&quot;&gt;Moving Forward&lt;/h2&gt;&lt;p&gt;Traefik Proxy v3.3 is a significant release that focuses on observability and documentation. With the addition of logs and access logs to its existing support for metrics and traces, Traefik Proxy now provides even deeper insights into your ingress traffic. Additionally, the new granular observability configuration allows you to enable or disable tracing, metrics, or access logs on a per-router basis, giving you more control and flexibility over the data you collect. And the improvements to the documentation, including the new reference documentation, make it easier for users to learn about and use Traefik Proxy.&lt;/p&gt;&lt;p&gt;Overall, v3.3 is a powerful release that makes Traefik Proxy an even more valuable tool for platform engineers and developers.&lt;/p&gt;&lt;p&gt;We are immensely thankful to the contributors who are shaping this great project. Join the vibrant Traefik community, share your feedback, and help us shape the future of cloud-native networking.&lt;/p&gt;&lt;h2 id=&quot;useful-links&quot;&gt;Useful Links&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Traefik 3.3 on &lt;a href=&quot;https://github.com/traefik/traefik/releases/tag/v3.3.1?ref=containous.ghost.io&quot;&gt;&lt;u&gt;GitHub&lt;/u&gt;&lt;/a&gt; &amp;amp; on &lt;a href=&quot;https://hub.docker.com/_/traefik?ref=traefik.io&quot;&gt;&lt;u&gt;DockerHub&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Traefik &lt;a href=&quot;https://docs.traefik.io/?ref=traefik.io&quot;&gt;&lt;u&gt;Documentation&lt;/u&gt;&lt;/a&gt;, &lt;a href=&quot;https://traefik.io/traefik/?ref=traefik.io&quot;&gt;&lt;u&gt;Website&lt;/u&gt;&lt;/a&gt;, &amp;amp; &lt;a href=&quot;https://github.com/containous/traefik?ref=traefik.io&quot;&gt;&lt;u&gt;GitHub&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://community.traefik.io/?ref=traefik.io&quot;&gt;&lt;u&gt;Our Community Forum&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-158028398339&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:255.06668090820312px; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;158028398339&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJopIkqy9PwxjiexjkTebdknPc%2B1lMv9CoGqRfqx9yrZ6uJu4k%2BqE2uO7QoJE9hsbY2%2Fu1c4YagHrQ4ZCBQ9KWSmNf5JnqrM8ZnFKNFuS20X3M%3D&amp;webInteractiveContentId=158028398339&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Proxy_Ad_02@2x&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-158028398339.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Keep Your Services Secure With Traefik’s Rate Limiting]]></title>
            <description><![CDATA[Rate limiting is the process of limiting the flow of requests that reach your servers. Think of it like a funnel, where a large pipe of water narrows into a smaller one, flowing at a much more manageable rate before reaching its destination.]]></description>
            <link>https://traefik.io/how-to-keep-your-services-secure-with-traefiks-rate-limiting</link>
            <guid isPermaLink="true">https://traefik.io/how-to-keep-your-services-secure-with-traefiks-rate-limiting</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[Engineering]]></category>
            <category><![CDATA[API Gateway]]></category>
            <dc:creator><![CDATA[Harold Ozouf]]></dc:creator>
            <pubDate>Tue, 10 Dec 2024 18:34:52 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/12/Blog_without_copies@2x-2.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/12/Blog_without_copies@2x-2.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/12/Blog_without_copies@2x-2.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/12/Blog_without_copies@2x-2.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/12/Blog_without_copies@2x-2.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The internet can be a challenging environment for running applications.&lt;/p&gt;&lt;p&gt;When you expose a service to the public internet, it&apos;s crucial to assess the risks involved. Malicious actors may try to misuse your resources or even bring your service down.&lt;/p&gt;&lt;p&gt;You can&apos;t just make your service publicly available without protection and expect things to go smoothly. They won’t. That’s why safeguarding your service is essential. There are many threats to address. Configuring your server properly is a good start, but you also need to protect your application from harmful actions. Our&lt;a href=&quot;https://traefik.io/blog/exploring-traefiks-waf-integration-and-how-to-make-it-23x-faster/?ref=containous.ghost.io&quot;&gt; &lt;u&gt;Web Application Firewall (WAF)&lt;/u&gt;&lt;/a&gt; can assist with that. &lt;/p&gt;&lt;p&gt;However, today we&apos;re focusing on a different threat: attempts to overwhelm your resources or disrupt your service with an excessive number of requests. This is where rate limiting comes in.&lt;/p&gt;&lt;h2 id=&quot;what-is-rate-limiting&quot;&gt;What is Rate Limiting?&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Rate limiting is the process of limiting the flow of requests that reach your servers.&lt;/strong&gt; Think of it like a funnel, where a large pipe of water narrows into a smaller one, flowing at a much more manageable rate before reaching its destination:&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/rate-limiting-1.png&quot; class=&quot;kg-image&quot; alt=&quot;Rate limiter diagram&quot; loading=&quot;lazy&quot; width=&quot;504&quot; height=&quot;220&quot;&gt;&lt;/figure&gt;&lt;p&gt;In this analogy, each water molecule represents an HTTP request. A pipe of a certain size limits how many molecules can pass through at once. When the pipe narrows, fewer molecules can flow through, reducing the flow rate.&lt;/p&gt;&lt;p&gt;This illustrates how a rate limiter works to control the flow of requests. Additionally, we can fine-tune the control by limiting traffic based on characteristics like IP address, user, or other request details. You might also want to allow brief bursts of traffic without blocking them entirely.&lt;/p&gt;&lt;p&gt;When discussing rate limiting, the following algorithms are commonly mentioned:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Token Bucket&lt;/strong&gt;: The one used by Traefik, which we&apos;ll focus on below.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Leaky Bucket&lt;/strong&gt;: A first-in, first-out queue that releases traffic at a steady rate. It&apos;s less flexible than Token Bucket for handling traffic bursts.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Generic Cell Rate Algorithm (GCRA)&lt;/strong&gt;: Similar to Leaky Bucket but ensures packets follow a set timing interval instead of draining at a fixed rate.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Two other types of algorithms often come up:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Sliding Window&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Fixed Window&lt;/strong&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Unlike rate limiting, which regulates the flow and timing of requests, these two algorithms count the total number of requests within a specific period. They&apos;re better suited for enforcing strict usage quotas than managing request flow.&lt;/p&gt;&lt;h2 id=&quot;token-bucket&quot;&gt;Token Bucket&lt;/h2&gt;&lt;p&gt;The Token Bucket algorithm controls the flow of requests by using a metaphorical bucket that holds tokens. Tokens are generated at a constant rate and added to the bucket, which has a fixed capacity.&lt;/p&gt;&lt;p&gt;When a request arrives, the system checks if there are enough tokens in the bucket. Each request consumes one token. If enough tokens are available, the request proceeds, and a token is removed. If there aren’t enough tokens, the request is either delayed until more tokens are available or blocked if the delay would be too long.&lt;/p&gt;&lt;p&gt;The bucket can&apos;t hold more tokens than its maximum capacity, so once it&apos;s full, any new tokens are discarded. This prevents tokens from accumulating indefinitely and allows the system to handle short bursts of high traffic, as long as the bucket has enough capacity.&lt;/p&gt;&lt;p&gt;When the bucket is low or empty, the system slows down, giving time for more tokens to be generated. The token generation rate and the bucket size are key factors that determine how the system performs.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/rate-limiting-2.png&quot; class=&quot;kg-image&quot; alt=&quot;rate limiting token bucket diagram&quot; loading=&quot;lazy&quot; width=&quot;659&quot; height=&quot;419&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2025/07/rate-limiting-2.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2025/07/rate-limiting-2.png 659w&quot;&gt;&lt;/figure&gt;&lt;p&gt;The behavior of the Token Bucket algorithm is determined by two key factors:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Bucket size&lt;/strong&gt;: This defines how many requests can be processed simultaneously.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Rate&lt;/strong&gt;: This controls how frequently new request opportunities become available as tokens are generated.&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;rate-limiting-in-traefik&quot;&gt;Rate Limiting in Traefik&lt;/h2&gt;&lt;p&gt;Traefik allows you to define a &lt;a href=&quot;https://doc.traefik.io/traefik/middlewares/http/ratelimit/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;ratelimit middleware&lt;/u&gt;&lt;/a&gt; that can be applied to your routers. Assigning this middleware ensures that the flow of incoming requests doesn’t exceed the configured rate.&lt;/p&gt;&lt;div class=&quot;kg-card kg-callout-card kg-callout-card-white&quot;&gt;&lt;div class=&quot;kg-callout-emoji&quot;&gt;💡&lt;/div&gt;&lt;div class=&quot;kg-callout-text&quot;&gt;Reusing the same middleware on multiple routers does not mean they share the same bucket. Each router gets its own instance of the middleware. Shared buckets and distributed rate limiting for enterprise use cases are available through&lt;a href=&quot;https://traefik.io/traefik-hub/?ref=containous.ghost.io&quot;&gt; &lt;u&gt;Traefik Hub.&lt;/u&gt;&lt;/a&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;This middleware uses the Token Bucket algorithm described earlier. The bucket size is controlled by the &lt;code&gt;burst&lt;/code&gt; parameter, while the rate is set by the &lt;code&gt;average&lt;/code&gt; and &lt;code&gt;period&lt;/code&gt; values. The following example configures a rate limiter with a rate of 100 requests per second and a bucket size of 200:&lt;br&gt;&lt;/p&gt;&lt;pre&gt;&lt;code&gt;apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: my-rate-limit
spec:
  rateLimit:
    average: 100
    period: 1s
    burst: 200
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This configuration means a new request can pass every 10ms. If you receive fewer than 1 request every 10ms, the bucket will fill up, eventually allowing a burst of up to 200 simultaneous requests.&lt;/p&gt;&lt;h3 id=&quot;grouping-requests-by-source&quot;&gt;&lt;strong&gt;Grouping Requests by Source&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Grouping requests by their source and applying rate limiting is an effective way to prevent a small number of clients from overwhelming a system. Instead of limiting the system as a whole, this technique enforces rate limits per individual source, ensuring balanced resource usage.&lt;/p&gt;&lt;p&gt;For example, you can group requests by their IP address and apply rate limits to each IP. This prevents a single IP from sending too many requests, which could degrade the system’s performance. By limiting requests at the source level, the system gains more granular control, preventing any one source from monopolizing resources while still allowing others to access the system at normal rates.&lt;/p&gt;&lt;p&gt;The &lt;a href=&quot;https://doc.traefik.io/traefik/middlewares/http/ratelimit/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;ratelimit middleware&lt;/u&gt;&lt;/a&gt; allows requests to be grouped by different &lt;code&gt;sourceCriteria&lt;/code&gt;, such as:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;ipStrategy&lt;/code&gt;: The client’s IP address (default strategy)&lt;/li&gt;&lt;li&gt;&lt;code&gt;requestHost&lt;/code&gt;: The client’s hostname&lt;/li&gt;&lt;li&gt;&lt;code&gt;requestHeader&lt;/code&gt;: The value of a specific request header&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The &lt;code&gt;ipStrategy&lt;/code&gt; relies on the de-facto standard &lt;code&gt;X-Forwarded-For&lt;/code&gt; header to determine the client’s IP address. When a client connects directly to a server, its IP address is sent to the server. But if a client connection passes through any proxies, the server only sees the final proxy&apos;s IP address, which is often of little use. So, to provide a more-useful client IP address to the server, the &lt;code&gt;X-Forwarded-For&lt;/code&gt; request header is used. When a proxy receives a request it adds itself to this header.&lt;/p&gt;&lt;p&gt;The &lt;code&gt;X-Forwarded-For&lt;/code&gt; header can be a useful tool, but it also poses security risks if not handled properly. Since each proxy in a network chain adds its own IP address to this header, a malicious client could manipulate it by inserting fake IP addresses. This can mislead the server into believing that the request originated from a different location, allowing attackers to potentially spoof their IP address and bypass security measures that rely on client IP verification.&lt;/p&gt;&lt;p&gt;To minimize this risk, it’s essential to only trust proxies under your control or those known to handle requests securely.&lt;/p&gt;&lt;p&gt;In Traefik, this is managed through the &lt;code&gt;--entryPoints.web.forwardedHeaders.trustedIPs&lt;/code&gt; setting. If a request originates from an untrusted proxy, the &lt;code&gt;X-Forwarded-For&lt;/code&gt; header will be unset. This ensures that only IP addresses from trusted sources are considered, preventing IP spoofing and maintaining the integrity of the real client IP address.&lt;/p&gt;&lt;p&gt;When you are in the situation where you have proxies before Traefik, you will need to configure at least of these options:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;code&gt;depth&lt;/code&gt;: Specify from right to left, the nth IP address to use. This is needed to avoid spoofing.&lt;/li&gt;&lt;li&gt;&lt;code&gt;excludedIPs&lt;/code&gt;: Specify a list of IP addresses to exclude from &lt;code&gt;X-Forwarded-For&lt;/code&gt; header.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;For example, if the &lt;code&gt;X-Forwarded-For&lt;/code&gt; header contains the value &lt;code&gt;10.0.0.1,11.0.0.1,12.0.0.1,13.0.0.1&lt;/code&gt;, a depth of 3 will use &lt;code&gt;11.0.0.1&lt;/code&gt; as the client&apos;s IP address, and a depth of 3 with an excluded IP of &lt;code&gt;12.0.0.1&lt;/code&gt; will use &lt;code&gt;10.0.0.1&lt;/code&gt;. &lt;/p&gt;&lt;p&gt;For this example, the middleware could be configured like:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: test-ratelimit-with-ip-strategy
spec:
  rateLimit:
    average: 100
    period: 1s
    burst: 200
    sourceCriterion:
      ipStrategy:
        depth: 3
&lt;/code&gt;&lt;/pre&gt;
&lt;h1 id=&quot;conclusion&quot;&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/h1&gt;&lt;p&gt;Rate limiting is essential to protect your services against overwhelming traffic, but for enterprises, the challenge often goes beyond just managing individual servers. With distributed rate limiting through Traefik Hub, you can scale your traffic management across multiple gateway replicas, ensuring consistent protection and control no matter how distributed your infrastructure becomes.&lt;/p&gt;&lt;p&gt;By leveraging shared buckets across routers and applying limits at both global and granular levels, Traefik Hub helps enterprises maintain fairness, prevent resource monopolization, and optimize performance. This distributed approach offers robust protection against high-traffic events, making it ideal for large-scale operations where traffic spikes and resource demands are common.&lt;/p&gt;&lt;p&gt;While rate limiting is an essential tool in your security arsenal, it should be part of a broader strategy that includes other measures like&lt;a href=&quot;https://traefik.io/blog/exploring-traefiks-waf-integration-and-how-to-make-it-23x-faster/?ref=containous.ghost.io&quot;&gt; &lt;u&gt;Web Application Firewalls (WAF)&lt;/u&gt;&lt;/a&gt;, active monitoring, and proper server configuration. By combining these layers, you can create a robust defense system that keeps your services running smoothly and securely in the face of various internet challenges.&lt;/p&gt;&lt;p&gt;As you implement rate limiting in your Traefik setup, consider your specific use case, traffic patterns, and resource constraints to fine-tune the settings for optimal performance. Regular monitoring and adjustments will help ensure that your rate-limiting strategy continues to meet your needs as your service grows and evolves.&lt;/p&gt;&lt;hr&gt;&lt;div class=&quot;kg-card kg-callout-card kg-callout-card-blue&quot;&gt;&lt;div class=&quot;kg-callout-emoji&quot;&gt;💡&lt;/div&gt;&lt;div class=&quot;kg-callout-text&quot;&gt;&lt;i&gt;&lt;em class=&quot;italic&quot; style=&quot;white-space: pre-wrap;&quot;&gt;Ready to safeguard your services with flexible, enterprise-grade distributed rate limiting? Experience it firsthand with Traefik Hub. Sign up for a &lt;/em&gt;&lt;/i&gt;&lt;a href=&quot;https://info.traefik.io/try-traefik-api-gateway?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;strong class=&quot;italic&quot; style=&quot;white-space: pre-wrap;&quot;&gt;14-day free trial&lt;/strong&gt;&lt;/b&gt;&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;em class=&quot;italic&quot; style=&quot;white-space: pre-wrap;&quot;&gt; or &lt;/em&gt;&lt;/i&gt;&lt;a href=&quot;https://info.traefik.io/contact-us?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;i&gt;&lt;b&gt;&lt;strong class=&quot;italic&quot; style=&quot;white-space: pre-wrap;&quot;&gt;speak to our experts&lt;/strong&gt;&lt;/b&gt;&lt;/i&gt;&lt;/a&gt;&lt;i&gt;&lt;em class=&quot;italic&quot; style=&quot;white-space: pre-wrap;&quot;&gt; today to discover how Traefik can elevate your infrastructure&apos;s resilience.&lt;/em&gt;&lt;/i&gt;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Taming The Wild West of LLMs with Traefik AI Gateway]]></title>
            <description><![CDATA[Now that GenAI is being integrated into production environments, the challenges of large-scale AI deployment is becoming more apparent. Let’s dive into the most critical ones.]]></description>
            <link>https://traefik.io/taming-the-wild-west-of-llms-with-traefik-ai-gateway</link>
            <guid isPermaLink="true">https://traefik.io/taming-the-wild-west-of-llms-with-traefik-ai-gateway</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Product News]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Tue, 03 Dec 2024 15:13:12 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/12/Blog_without_copies@2x.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/12/Blog_without_copies@2x.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/12/Blog_without_copies@2x.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/12/Blog_without_copies@2x.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/12/Blog_without_copies@2x.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Within the last ten years, deep learning has moved from a research area to wild industry adoption thanks to the recent generative AI gold rush. This has led to the arrival of &lt;strong&gt;Large Language Models (LLMs)&lt;/strong&gt; into mission-critical infrastructure at an unprecedented pace. Organizations are rapidly discovering that different LLMs excel at different tasks – from OpenAI, Claude or Gemini for generic content creation and problem-solving, up to domain-specific models for highly specialized tasks. This multi-model approach has become essential for maximizing AI&apos;s business value.&lt;/p&gt;&lt;p&gt;However, such a gold rush has created a familiar pattern in tech history: rapid adoption leading to&lt;strong&gt; fragmented infrastructure &lt;/strong&gt;and &lt;strong&gt;technical debt&lt;/strong&gt;. Each AI vendor has developed their own proprietary APIs, authentication methods, and SDKs, creating a &lt;strong&gt;&quot;Wild West&quot; environment &lt;/strong&gt;without any governance and where complexity is king. As organizations scale their AI initiatives, this uncontrolled growth threatens to undermine the very benefits these technologies promise.&lt;/p&gt;&lt;h2 id=&quot;the-enterprise-ai-challenge-landscape&quot;&gt;The Enterprise AI Challenge Landscape&lt;/h2&gt;&lt;p&gt;Now that GenAI is being integrated into production environments, the challenges of large-scale AI deployment is becoming more apparent. Let’s dive into the most critical ones.&lt;/p&gt;&lt;p&gt;The number one problem is &lt;strong&gt;integration complexity&lt;/strong&gt;. Development teams struggle with managing multiple SDK implementations, each with its own quirks and requirements. This complexity slows down development and creates maintenance nightmares as teams juggle different API versions and implementation patterns. Additionally, integrations with those different stacks lead to being &lt;strong&gt;vendor-locked&lt;/strong&gt; as there is no straightforward way to migrate from one model to another.&lt;/p&gt;&lt;p&gt;Once integrated with those SDKs, companies end up facing even more issues in production. &lt;strong&gt;Security&lt;/strong&gt; being the most visible. API keys and credentials scattered across various systems create significant security risks. Without centralized control, organizations struggle to maintain secure access patterns and protect sensitive credentials from exposure.&amp;nbsp;&lt;/p&gt;&lt;p&gt;The lack of standardized governance leads to &lt;strong&gt;inconsistent policy enforcement&lt;/strong&gt; across different AI services. Without uniform and centralized authentication, authorization or rate limiting rules, &lt;strong&gt;compliance issues&lt;/strong&gt; and resource waste cannot be avoided.&lt;/p&gt;&lt;p&gt;Finally, this fragmentation also leads to major &lt;strong&gt;observability black holes&lt;/strong&gt;, with no way to optimize costs, monitor performance, or detect issues effectively.&lt;/p&gt;&lt;p&gt;The benefits of GenAI do not come for free and barriers are very real. That’s why at Traefik Labs, we made the decision to tackle those problems, with our unique expertise in ingress and API management.&lt;/p&gt;&lt;h1 id=&quot;enter-traefik-ai-gateway&quot;&gt;Enter Traefik AI Gateway&amp;nbsp;&lt;/h1&gt;&lt;p&gt;Traefik Labs addresses these new challenges with Traefik AI Gateway, a powerful solution that unifies and streamlines LLM management at the API level. By transforming any AI endpoint into a secure, governable API, Traefik AI Gateway allows enterprises to connect to multiple LLMs through a unified AI API, simplifying integration and centralizing control.&lt;/p&gt;&lt;p&gt;Traefik AI Gateway offers effortless integration with various popular LLMs, eliminating the need for multiple SDKs and client integrations. It ensures centralized security and credential management, minimizing risk and facilitating consistent policy enforcement. It prevents vendor lock-in, enabling easy switching between LLM providers without changing client applications. It supports OpenTelemetry for comprehensive observability across LLM usage, empowering data-driven operations and performance optimizations. Furthermore, Traefik AI Gateway offers unified governance through centralized policy enforcement, ensuring compliance with industry regulations.&lt;/p&gt;&lt;p&gt;Traefik AI Gateway is natively integrated to Traefik Hub and lets organizations gain access to enterprise-grade API capabilities that bring LLMs connectivity to industry standards with advanced access controls, security at scale and premium integrations. It means that AI apps can now benefit from the most advanced APIs features like rate limiting by plan, enterprise access control with identity providers or API keys, deep troubleshooting thanks to traffic debugging, etc.&lt;/p&gt;&lt;p&gt;It’s extremely simple to deploy Traefik AI Gateway, here is a quick overview on how to set it up. You need to have Traefik Hub Gateway up and running to enable Traefik AI Gateway, head over &lt;a href=&quot;https://traefik.io/traefik-hub-api-gateway/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;here&lt;/u&gt;&lt;/a&gt; if that’s not already the case.&lt;/p&gt;&lt;p&gt;First, upgrade the CRDs and your hub deployment enabling the AI gateway feature:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;kubectl apply --server-side --force-conflicts \
-k https://github.com/traefik/traefik-helm-chart/traefik/crds/

helm upgrade traefik -n traefik --wait \
  --reuse-values \
  --set &quot;additionalArguments={--hub.experimental.aigateway}&quot; \
     traefik/traefik
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then, define &amp;amp; apply an &lt;code&gt;AIService&lt;/code&gt; resource with any of the supported AI providers, for example OpenAI:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;apiVersion: hub.traefik.io/v1alpha1
kind: AIService
metadata:
  name: ai-openai
  namespace: traefik
spec:
  openai:
    token: YOUR_OPENAI_TOKEN
    model: gpt-4o
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Finally, attach the &lt;code&gt;ai-openai AIService&lt;/code&gt; to an &lt;code&gt;IngressRoute&lt;/code&gt; as a &lt;code&gt;TraefikService&lt;/code&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: ai-test
  namespace: traefik
spec:
  routes:
    - kind: Rule
      match: Host(`ai.localhost`)
      services:
        - kind: TraefikService
          name: traefik-ai-openai@ai-gateway-service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As simple as that! Now you can request OpenAI on &lt;code&gt;http://ai.localhost&lt;/code&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;curl -d &apos;{
    &quot;messages&quot;: [
        {
            &quot;role&quot;: &quot;user&quot;,
            &quot;content&quot;: &quot;tell me a joke&quot;
        }
    ]
}&apos; http://ai.localhost

{
  &quot;id&quot;: &quot;chatcmpl-AYGYJuSVWlp6gRFVvO9ClTN36eRkQ&quot;,
  &quot;object&quot;: &quot;chat.completion&quot;,
  &quot;created&quot;: 1732730143,
  &quot;model&quot;: &quot;gpt-4o-2024-08-06&quot;,
  &quot;choices&quot;: [
    {
      &quot;index&quot;: 0,
      &quot;message&quot;: {
        &quot;role&quot;: &quot;assistant&quot;,
        &quot;content&quot;: &quot;Why don&apos;t scientists trust atoms?\n\nBecause they make up everything!&quot;
      },
      &quot;finish_reason&quot;: &quot;stop&quot;,
      &quot;content_filter_results&quot;: {
        &quot;hate&quot;: {
          &quot;filtered&quot;: false
        },
        &quot;self_harm&quot;: {
          &quot;filtered&quot;: false
        },
        &quot;sexual&quot;: {
          &quot;filtered&quot;: false
        },
        &quot;violence&quot;: {
          &quot;filtered&quot;: false
        },
        &quot;jailbreak&quot;: {
          &quot;filtered&quot;: false,
          &quot;detected&quot;: false
        },
        &quot;profanity&quot;: {
          &quot;filtered&quot;: false,
          &quot;detected&quot;: false
        }
      }
    }
  ],
  &quot;usage&quot;: {
    &quot;prompt_tokens&quot;: 11,
    &quot;completion_tokens&quot;: 12,
    &quot;total_tokens&quot;: 23,
    &quot;prompt_tokens_details&quot;: {
      &quot;audio_tokens&quot;: 0,
      &quot;cached_tokens&quot;: 0
    },
    &quot;completion_tokens_details&quot;: {
      &quot;audio_tokens&quot;: 0,
      &quot;reasoning_tokens&quot;: 0
    }
  },
  &quot;system_fingerprint&quot;: &quot;fp_831e067d82&quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Traefik AI Gateway implements the &lt;a href=&quot;https://opentelemetry.io/docs/specs/semconv/gen-ai/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Open Telemetry GenAI semantic conventions&lt;/u&gt;&lt;/a&gt; which provides metrics (&lt;code&gt;gen_ai.client.token.usage&lt;/code&gt; and &lt;code&gt;gen_ai.client.operation.duration&lt;/code&gt;) designed to monitor generative AI client applications thanks to specific attributes like token type or model. AI apps present specific challenges compared to traditional software systems and Traefik AI Gateway provides unique LLM observability capabilities to ensure platform teams have the best situation awareness.&lt;/p&gt;&lt;p&gt;Traefik AI Gateway is a natural evolution of Traefik&apos;s established expertise in Ingress &amp;amp; API management. Built on top of one of the most widely deployed open-source ingress controllers &amp;amp; API Gateways, Traefik Hub brings its battle-tested experience in managing incoming traffic to the emerging challenge of egress AI traffic.&lt;/p&gt;&lt;h1 id=&quot;shaping-the-future-of-ai-gateways&quot;&gt;Shaping the Future of AI Gateways&lt;/h1&gt;&lt;p&gt;As enterprises continue to scale their AI initiatives, the need for structured, governed access to LLM services becomes increasingly critical. Traefik AI Gateway provides immediate solutions to today&apos;s challenges while laying the groundwork for future developments.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Traefik Labs is deeply invested in the &lt;a href=&quot;https://gateway-api.sigs.k8s.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Gateway API&lt;/u&gt;&lt;/a&gt; effort, the next evolution of Kubernetes Ingress, and is actively working on developing specifications for LLM routing within the Gateway API framework. This ongoing commitment to open standards ensures that Traefik AI Gateway will continue to evolve with enterprise needs.&lt;/p&gt;&lt;p&gt;Organizations looking to bring order to their AI infrastructure should consider Traefik AI Gateway as a strategic investment in their AI strategy. With its combination of production-proven expertise in the ingress &amp;amp; API management space, Traefik is uniquely positioned to help enterprises tame the Wild West of LLMs and build a foundation for sustainable AI growth.&lt;/p&gt;&lt;h2 id=&quot;useful-links&quot;&gt;Useful Links&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Traefik AI Gateway &lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/expose/api-gateway-ai?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;u&gt;Documentation&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Traefik AI Gateway &lt;a href=&quot;https://traefik.io/solutions/ai-gateway/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Website&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://community.traefik.io/?ref=traefik.io&quot;&gt;&lt;u&gt;Our Community Forum&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[BigBasket Modernizes Kubernetes Traffic Management with Traefik's API Gateway]]></title>
            <description><![CDATA[Traefik’s API Gateway has transformed BigBasket’s approach to managing Kubernetes traffic, boosting efficiency, scalability, and stability.]]></description>
            <link>https://traefik.io/bigbasket-modernizes-kubernetes-traffic-management-with-traefiks-api-gateway</link>
            <guid isPermaLink="true">https://traefik.io/bigbasket-modernizes-kubernetes-traffic-management-with-traefiks-api-gateway</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Case Studies]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[Case Study]]></category>
            <category><![CDATA[Resources]]></category>
            <dc:creator><![CDATA[Marie Ponseel]]></dc:creator>
            <pubDate>Tue, 26 Nov 2024 12:18:08 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/11/BigBasket-Case-Study-1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Big Basket Case Study&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/11/BigBasket-Case-Study-1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/11/BigBasket-Case-Study-1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/11/BigBasket-Case-Study-1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/11/BigBasket-Case-Study-1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;overview&quot;&gt;&lt;strong&gt;Overview&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;BigBasket, India’s largest online grocer, faced growing challenges in managing traffic across their Kubernetes infrastructure. As their e-commerce platform scaled, their microservices infrastructure became more complex and increasingly difficult to manage, leading to concerns over scalability and operational efficiency. Sushant Gulati, Senior Engineering Manager for Cloud, DevOps, and Platform, alongside Sayantan Bhattacharjee, Principal DevOps Engineer, led the effort to find&amp;nbsp; a robust API Gateway solution to simplify microservice traffic management, improve day-2 operations, and future-proof their infrastructure.&lt;/p&gt;&lt;h2 id=&quot;challenge&quot;&gt;&lt;strong&gt;Challenge&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Before Traefik, BigBasket’s network architecture relied on NodePort services and AWS ALB Target Groups (TG). While this worked at a smaller scale, this solution quickly reached its limits in terms of scalability and manageability. Each worker node was attached to every ALB target group, causing API throttling due to the excessive volume of register and deregister calls. As traffic grew, the system became unstable, eventually reaching AWS API limits.&amp;nbsp;&lt;/p&gt;&lt;p&gt;In addition to stability issues, scaling became difficult as microservices and hosts multiplied. Infrastructure management was increasingly time-consuming and complex. To address these challenges, they needed a solution capable of simplifying traffic routing while accommodating their growing needs.&lt;/p&gt;&lt;h2 id=&quot;solution&quot;&gt;&lt;strong&gt;Solution&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;After evaluating several API Gateway solutions, BigBasket’s team chose Traefik for its simplicity, scalability, and performance.&lt;/p&gt;&lt;p&gt;During their evaluation, BigBasket found that other solutions involved complex configuration and required numerous annotations to meet their custom needs, resulting in a high administrative burden. In contrast, Traefik’s use of Custom Resource Definitions (CRDs) made configuration much simpler and easier to manage and customize. Traefik provided a more intuitive solution that significantly reduced management effort while meeting their scalability and performance requirements.&lt;/p&gt;&lt;p&gt;Key factors in selecting Traefik included:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Ease of Management&lt;/strong&gt;: Traefik’s simpler configuration through CRDs allowed the team to manage their infrastructure with minimal effort, providing much-needed operational breathing room.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Distributed Architecture&lt;/strong&gt;: Traefik’s API Gateway offered a highly available, scalable, and secure architecture, making it a reliable choice for BigBasket.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Advanced Traffic Management&lt;/strong&gt;: Traefik’s API Gateway efficiently handled various routing scenarios, such as header-based, host-based, cookie-based, and path-based routing.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;High Performance&lt;/strong&gt;: Traefik&apos;s performance, particularly its ability to handle increased traffic loads, was a critical requirement for BigBasket.&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;em&gt;“With Traefik, deployment was a breeze, our success criteria were satisfied, and making this major change in our architecture was worry-free knowing we had enterprise support.” Sayantan Bhattacharjee, Principal DevOps Engineer at BigBasket&amp;nbsp;&lt;/em&gt;&lt;/blockquote&gt;&lt;h2 id=&quot;implementation&quot;&gt;&lt;strong&gt;Implementation&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;BigBasket deployed Traefik’s API Gateway as their primary solution across five Kubernetes clusters, all running in AWS. The new Traefik architecture became the foundation of their network, handling every transaction across their e-commerce platform. All their critical services are now routed through Traefik’s API Gateway, making it an indispensable component of their infrastructure.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/11/bigbasket_diagram.png&quot; class=&quot;kg-image&quot; alt=&quot;BigBasket architecture with Traefik&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1379&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/11/bigbasket_diagram.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/11/bigbasket_diagram.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/11/bigbasket_diagram.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2024/11/bigbasket_diagram.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;BigBasket architecture with Traefik&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;The team significantly simplified their routing configuration by eliminating the need for multiple AWS target groups and application load balancers (ALBs). This not only reduced complexity but also allowed them to automate much of their setup and significantly improve the management of their architecture.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Traefik’s API Gateway also enabled BigBasket to manage five different versions of the same service within a single cluster, supporting their testing needs without requiring additional tools or investments.&lt;/p&gt;&lt;blockquote&gt;&lt;em&gt;“Traefik is simple to configure, doesn’t have component sprawl, and has significantly reduced our service onboarding and route management efforts.” Sushant Gulati, Senior Engineering Manager – Cloud, DevOps and Platform at BigBasket&amp;nbsp;&lt;/em&gt;&lt;/blockquote&gt;&lt;p&gt;Visibility into traffic management has improved substantially. With Traefik, the team gained deeper insights into traffic flow, making it easier to monitor and troubleshoot issues. The ability to track everything in real-time has been transformative and allowed them to efficiently manage and optimize their system. Everyone involved at BigBasket found Traefik simple to manage, resulting in smoother day-to-day operations.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/11/Grafana-dashboard-showing-Traefik-s-request-count.png&quot; class=&quot;kg-image&quot; alt=&quot;Grafana dashboard showing Traefik’s request count&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1081&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/11/Grafana-dashboard-showing-Traefik-s-request-count.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/11/Grafana-dashboard-showing-Traefik-s-request-count.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/11/Grafana-dashboard-showing-Traefik-s-request-count.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2024/11/Grafana-dashboard-showing-Traefik-s-request-count.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Grafana dashboard showing Traefik’s request count&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;Additionally, the support from Traefik Labs played a crucial role in their success. The team praised Traefik&apos;s proactive approach, noting how helpful their experts were during setup and in answering ongoing questions. Regular meetings with the Traefik Labs team ensured that BigBasket received continuous guidance and assistance in resolving any challenges.&lt;/p&gt;&lt;blockquote&gt;&lt;em&gt;“The support from Traefik has been very helpful, the team is very knowledgeable,&amp;nbsp; forthcoming, and open to discussions.” Sayantan Bhattacharjee, Principal DevOps Engineer at BigBasket&amp;nbsp;&lt;/em&gt;&lt;/blockquote&gt;&lt;h2 id=&quot;results&quot;&gt;&lt;strong&gt;Results&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Since adopting Traefik’s API Gateway, BigBasket has experienced the following improvements:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Scalability without limitations: &lt;/strong&gt;Traefik has enabled BigBasket to scale seamlessly alongside their growing business The team has already increased their Traefik adoption by 50% within the first 12-months to support the expansion of their infrastructure needs. Had they remained on their previous solution, they would not have been able to scale to this extent.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;High availability and reliability&lt;/strong&gt;: Over the past year and a half, BigBasket experienced no stability issues in their clusters, even during periods of significant traffic spikes, thanks to Traefik’s robust and stable environment.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Simplified Traffic Management: &lt;/strong&gt;Traefik eliminated the need for managing thousands of AWS Target Groups and ALBs, significantly reducing complexity and administrative overhead. This allowed BigBasket to handle a 2x increase in internal traffic without performance degradation.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Reduced Complexity&lt;/strong&gt;: By consolidating traffic management through Traefik’s API Gateway, BigBasket reduced the number of components needed to manage their system, freeing up engineering resources for more strategic tasks.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Enhanced Visibility: &lt;/strong&gt;Traefik’s built-in metrics and dashboard provided BigBasket with real-time insights into their traffic flow. This increased visibility, made troubleshooting easier, and allowed the team to respond quickly to system changes. The ability to monitor traffic at a granular level—down to requests-per-second (RPS)—has been critical in optimizing system performance and ensuring smooth operations.&lt;/li&gt;&lt;/ul&gt;&lt;blockquote&gt;&lt;em&gt;“Traefik has exceeded our expectations; it has done a lot more for BigBasket than what is normally expected out of an API Gateway.” Sushant Gulati, Senior Engineering Manager – Cloud, DevOps and Platform at BigBasket&amp;nbsp;&lt;/em&gt;&lt;/blockquote&gt;&lt;h2 id=&quot;key-takeaways&quot;&gt;&lt;strong&gt;Key Takeaways&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Traefik’s API Gateway has transformed BigBasket’s approach to managing Kubernetes traffic,&amp;nbsp; delivering significant improvements in efficiency, scalability, and system stability. Traefik’s distributed architecture, automation, and performance have allowed BigBasket’s team to future-proof their infrastructure. Key outcomes include:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;50% increase in Traefik usage&lt;/strong&gt;, to support the expansion of their infrastructure.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;2x increase in east-west traffic&lt;/strong&gt;, handled seamlessly without impacting performance.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Elimination of 7,000 NodePort configurations&lt;/strong&gt;, drastically reducing the operational complexity.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Mitigated AWS API throttling&lt;/strong&gt;, resulting in fewer errors and operational headaches.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Sushant and his team at BigBasket continue to expand their use of Traefik, confident that it provides the flexibility, visibility, and stability needed to support their business at scale.&lt;/p&gt;&lt;blockquote&gt;&lt;em&gt;“Traefik has been a game-changer for us. Its ease of configuration, scalability, and seamless support have exceeded our expectations. Traefik is a strategic tool that has transformed how we manage traffic across our infrastructure. I would highly recommend Traefik to any organization looking to modernize their Kubernetes environment.” — Sushant Gulati, Senior Engineering Manager – Cloud, DevOps and Platform at BigBasket&lt;/em&gt;&lt;/blockquote&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-177548019563&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:225px; margin-top: 40px; margin-bottom: 40px;&quot; data-hubspot-wrapper-cta-id=&quot;177548019563&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLI93DzVem4lVb%2B%2Br0iIihYUopHAiQv9Vi0LVkSbPfJZhsOLCemi0Fo3oc4m6zHyrkRaivzw703LTwqHq6%2F0oHzgc5YRBrULVANdMfE%2BqHmhJppObpIPg94eJoQOjnUK5faA25zSx%2BScaJObyAySR%2F8u7HYbSVHvjKk3I7ZINCfJhNaOkZXrl5q1c0HzuY4%3D&amp;webInteractiveContentId=177548019563&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Hub-cta&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-177548019563.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[How Traefik Labs is Pioneering the Kubernetes Gateway API Revolution]]></title>
            <description><![CDATA[Let's explore why the Gateway API is set to replace the traditional Ingress specification and how Traefik Labs drives this joint effort.]]></description>
            <link>https://traefik.io/how-traefik-labs-is-pioneering-the-kubernetes-gateway-api-revolution</link>
            <guid isPermaLink="true">https://traefik.io/how-traefik-labs-is-pioneering-the-kubernetes-gateway-api-revolution</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Ingress]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <category><![CDATA[Kubernetes]]></category>
            <category><![CDATA[Strategy]]></category>
            <category><![CDATA[Guides]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Tue, 29 Oct 2024 15:00:01 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/10/How-Traefik-Labs-is-Pioneering-the-Kubernetes-Gateway-API-Revolution---Blog.jpg&quot; class=&quot;kg-image&quot; alt=&quot;How Traefik Labs is Pioneering the Kubernetes Gateway API Revolution&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/10/How-Traefik-Labs-is-Pioneering-the-Kubernetes-Gateway-API-Revolution---Blog.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/10/How-Traefik-Labs-is-Pioneering-the-Kubernetes-Gateway-API-Revolution---Blog.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/10/How-Traefik-Labs-is-Pioneering-the-Kubernetes-Gateway-API-Revolution---Blog.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/10/How-Traefik-Labs-is-Pioneering-the-Kubernetes-Gateway-API-Revolution---Blog.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Since Kubernetes’ inception, the Ingress specification has been a reliable solution for managing inbound HTTP/S traffic, helping to expose services externally. As a leader in the Cloud-Native industry, Traefik was one of the first Ingress Controllers on the market and played a key role in the adoption of this API.&lt;/p&gt;&lt;p&gt;However, as organizations increasingly scale up their Kubernetes deployments and require more flexibility, the limitations of Ingress become apparent. Enter Kubernetes Gateway API, a new specification designed to address those limitations, introducing a more advanced and extensible model. It is no surprise that Traefik is playing a key role in this specification effort being one of the most complete Gateway API implementations on the market.&amp;nbsp;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-190241936960&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;190241936960&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLL7QjdZ%2BE0aLDmqzFd9h6fZkzrDaNRuYEh0HCP95vWQBoGopm4sLX9zqx6fhFJV%2B9NuMKGHpQ3q2CmtysEpFCA1aTUbZzLJcPSXJf4QP%2Bp%2BbnRR3MX0dZ6d6wHcWMAqBugaMCZJSRi4X2lMSEXBigALtXwyb1%2FO06FMsM0HB0bdVFVdi11%2FQJLGPyJ9HbR4GVP9keUMaHvHhIG26yicpg%3D%3D&amp;webInteractiveContentId=190241936960&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Watch API Gateway Demo&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-190241936960.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;This article explores why the Gateway API is set to replace the traditional Ingress specification and how Traefik Labs drives this joint effort.&lt;/p&gt;&lt;h2 id=&quot;exposing-workloads-in-kubernetes-a-brief-history&quot;&gt;Exposing Workloads in Kubernetes: A Brief History&lt;/h2&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/10/Kubernetes-Gateway-API-History.png&quot; class=&quot;kg-image&quot; alt=&quot;Kubernetes Gateway API History&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1225&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/10/Kubernetes-Gateway-API-History.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/10/Kubernetes-Gateway-API-History.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/10/Kubernetes-Gateway-API-History.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2024/10/Kubernetes-Gateway-API-History.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;When Kubernetes was first introduced, it had different networking concepts: &lt;a href=&quot;https://kubernetes.io/docs/concepts/services-networking/service/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Services&lt;/u&gt;&lt;/a&gt;, &lt;a href=&quot;https://kubernetes.io/docs/concepts/services-networking/service/?ref=containous.ghost.io#loadbalancer&quot;&gt;&lt;u&gt;Load Balancers&lt;/u&gt;&lt;/a&gt; and &lt;a href=&quot;https://kubernetes.io/docs/concepts/services-networking/ingress/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Ingress&lt;/u&gt;&lt;/a&gt;. Kubernetes Services allowed applications within a cluster to communicate, load balancers were used to provision cloud provider LBs, but when it came to exposing workloads externally, we used (and are still using) Ingress, a resource designed to handle HTTP/S routing to services. Ingress was a good foundation, but it soon became clear that it had limitations. It relied on provider-specific implementations with countless &lt;a href=&quot;https://github.com/kubernetes/ingress-nginx/blob/main/docs/user-guide/nginx-configuration/annotations.md?ref=containous.ghost.io&quot;&gt;&lt;u&gt;specific&lt;/u&gt;&lt;/a&gt; &lt;a href=&quot;https://doc.traefik.io/traefik/routing/providers/kubernetes-ingress/?ref=containous.ghost.io#annotations&quot;&gt;&lt;u&gt;annotations&lt;/u&gt;&lt;/a&gt;, lacked flexibility, and offered only basic HTTP traffic management. Mastering the Ingress API covers only about 20% of the knowledge needed to address your needs, the next 80% is the “annotation hell”:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;kind: Ingress
metadata:
  annotations:
    certmanager.k8s.io/cluster-issuer: letsencrypt-prod
    kubernetes.io/tls-acme: &quot;true&quot;
    nginx.ingress.kubernetes.io/ssl-redirect: &quot;true&quot;
    kubernetes.io/ingress.class: nginx
    nginx.ingress.kubernetes.io/use-regex: &quot;true&quot;
    nginx.ingress.kubernetes.io/proxy-read-timeout: &quot;120&quot;
    nginx.ingress.kubernetes.io/from-to-www-redirect: &quot;true&quot;
    nginx.ingress.kubernetes.io/rewrite-target: https://example1.com/
    nginx.ingress.kubernetes.io/session-cookie-name: route
    nginx.ingress.kubernetes.io/too-many-annotations: &quot;true&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This left many teams needing more advanced solutions to handle complex networking scenarios. That’s why we introduced the &lt;a href=&quot;https://doc.traefik.io/traefik/providers/kubernetes-crd/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;IngressRoute&lt;/u&gt;&lt;/a&gt; resource with Traefik v2.0 in 2019. The idea was to solve the annotation hell with a much more powerful structured CRD, but this was at the cost of vendor neutrality as it was only available for Traefik.&lt;/p&gt;&lt;p&gt;It was clear that Kubernetes needed a standardized way to manage inbound networking more elegantly.&lt;/p&gt;&lt;h2 id=&quot;gateway-api-comes-to-the-rescue&quot;&gt;Gateway API Comes to the Rescue&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://gateway-api.sigs.k8s.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Kubernetes Gateway API&lt;/u&gt;&lt;/a&gt; is the next generation of Kubernetes Ingress, Load Balancing, and Service Mesh APIs. It has been incubating since 2019 and used to be called &lt;a href=&quot;https://traefik.io/blog/kubernetes-ingress-service-api-demystified/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Service API&lt;/u&gt;&lt;/a&gt; at first. It introduces new concepts that simplify and standardize how Kubernetes clusters manage traffic, both internally and externally. Gateway API is designed to be vendor-neutral, layered and flexible at its core, and future-proof, addressing many of the shortcomings of Ingress resources.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/10/Kubernetes-Gateway-API-Resources.png&quot; class=&quot;kg-image&quot; alt=&quot;Kubernetes Gateway API Resources&quot; loading=&quot;lazy&quot; width=&quot;1718&quot; height=&quot;1970&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/10/Kubernetes-Gateway-API-Resources.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/10/Kubernetes-Gateway-API-Resources.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/10/Kubernetes-Gateway-API-Resources.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/10/Kubernetes-Gateway-API-Resources.png 1718w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h3 id=&quot;role-based-resources&quot;&gt;&lt;strong&gt;Role-Based Resources&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Gateway API introduces a set of resources that decouple networking responsibilities:&lt;strong&gt; GatewayClass&lt;/strong&gt; resources which define the gateway controller and &lt;strong&gt;Gateway &lt;/strong&gt;resources represent entry points into the cluster, can be managed by the operators of the cluster. &lt;/p&gt;&lt;p&gt;As for Developers, they will specifically use &lt;strong&gt;HTTPRoute&lt;/strong&gt; or &lt;strong&gt;TLSRoute&lt;/strong&gt; resources which define how traffic coming via the gateway maps to the services. &lt;/p&gt;&lt;p&gt;This separation of responsibilities makes it easier to define clear boundaries between different roles, allowing developers, network admins, and operations teams to work seamlessly together.&lt;/p&gt;&lt;h3 id=&quot;layered-flexibility&quot;&gt;&lt;strong&gt;Layered Flexibility&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Unlike the Ingress resource, which focused on HTTP/S traffic, Gateway API supports routing for multiple protocols like HTTP/S but also TCP, UDP and gRPC. This makes it an ideal choice to handle a diverse set of traffic types.&lt;/p&gt;&lt;p&gt;Another powerful concept is how policies can be applied at various layers—global, gateway-specific, or route-specific—allowing for a fine-grained control over how traffic is managed. Thanks to the &lt;a href=&quot;https://gateway-api.sigs.k8s.io/reference/policy-attachment/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Policy Attachment&lt;/u&gt;&lt;/a&gt; pattern, it is even possible to augment the behavior of an object that can&apos;t be described within the spec of that object.&lt;/p&gt;&lt;h3 id=&quot;expressiveness-vendor-neutrality&quot;&gt;&lt;strong&gt;Expressiveness &amp;amp; Vendor Neutrality&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;One of the key goals of Gateway API is to provide a consistent API across different environments. The core features set comes with &lt;a href=&quot;https://gateway-api.sigs.k8s.io/reference/spec/?ref=containous.ghost.io#gateway.networking.k8s.io/v1.HTTPRouteMatch&quot;&gt;&lt;u&gt;header-based matching&lt;/u&gt;&lt;/a&gt;, &lt;a href=&quot;https://gateway-api.sigs.k8s.io/guides/traffic-splitting/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;traffic weighting&lt;/u&gt;&lt;/a&gt;, and many other capabilities that were only possible in Ingress through custom annotations. This allows developers to define routing rules and policies without being tied to a specific vendor’s implementation (through annotations). Whether you use Traefik, NGINX, or another provider, Gateway API aims to offer a powerful yet consistent experience.&lt;/p&gt;&lt;h3 id=&quot;extensibility&quot;&gt;&lt;strong&gt;Extensibility&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;Gateway API has been designed with extensibility in mind. Custom resources can be “augmented” at basically any layer of the API with Metaresources or ExtensionRef. This enables precise customization at the right levels within the API structure.&lt;/p&gt;&lt;p&gt;As you can see, Gateway API is much more powerful and flexible than Ingress. Most common exposing patterns can be tackled out of the box, and more complex needs can be addressed with extension mechanisms. This is a breath of fresh air for anyone who has been dealing with dozens or hundreds of Ingresses in production, familiar with the vendor-centric annotation hell.&lt;/p&gt;&lt;h2 id=&quot;traefik-labs-leader-in-the-gateway-api-effort&quot;&gt;Traefik Labs, Leader in the Gateway API Effort&lt;/h2&gt;&lt;p&gt;Traefik Labs has always been a leader in the Kubernetes industry, being one of the very first Ingress Controllers &lt;a href=&quot;https://github.com/traefik/traefik/pull/186?ref=containous.ghost.io&quot;&gt;&lt;u&gt;back in 2016&lt;/u&gt;&lt;/a&gt;. Today is no different, Traefik is strongly involved in the Kubernetes Gateway API effort, playing a significant role in its development and adoption. Traefik was &lt;a href=&quot;https://traefik.io/blog/announcing-traefik-2-4/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;amongst the first controllers&lt;/u&gt;&lt;/a&gt; to adopt and support the Gateway API first alphas, recognizing its potential to simplify Kubernetes inbound traffic. Since then, Traefik Labs has been actively involved in the Kubernetes SIG-Network community, contributing to the development and refinement of the Gateway API specification. This involvement has allowed Traefik to influence the direction of the API, pushing for features that enhance user experience, security, and flexibility.&lt;/p&gt;&lt;p&gt;Traefik has been integrating Gateway API 1.0 since v3.0 and is continuously investing to provide the latest version available. Today, &lt;a href=&quot;https://traefik.io/blog/traefik-proxy-v3-2-a-munster-release/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Traefik v3.2&lt;/a&gt; brings support to fresh new Gateway API 1.2 adding &lt;a href=&quot;https://gateway-api.sigs.k8s.io/api-types/grpcroute/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;GRPCRoute&lt;/u&gt;&lt;/a&gt;, &lt;a href=&quot;https://gateway-api.sigs.k8s.io/reference/spec/?ref=containous.ghost.io#gateway.networking.k8s.io/v1alpha2.TLSRoute&quot;&gt;&lt;u&gt;TLSRoute&lt;/u&gt;&lt;/a&gt;, as well as more features on the HTTPRoute like h2c (HTTP/2 without TLS) and WebSocket support for backends, port matching in rules, response header modification, etc.Traefik Labs is committed in the long term to continually investing in the support and enhancement of Gateway API, ensuring that the community will always benefit from the latest progress in that space.&lt;/p&gt;&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;&lt;p&gt;Gateway API is not just an improved Ingress resource. It’s basically a full replacement of Ingress, addressing all major flaws of this (too) basic specification and bringing advanced features to cover every need in cloud-native connectivity. By standardizing how inbound and east-west traffic is managed, Gateway API is making Kubernetes networking easier and more accessible for everyone. Its extensibility and flexibility will enable companies to tackle more complex workload exposure use cases, without sacrificing vendor neutrality.&lt;/p&gt;&lt;p&gt;As a pioneer of the Cloud-Native ecosystem, Traefik Labs has been at the forefront of designing the future of Ingress. This journey started back in 2019 and five years were needed to complete this giant step to the first GA of Gateway API. Today, as one of the most complete Gateway API implementations in the industry, we are extremely proud of the work accomplished. Seeing the impressive ongoing activity on the project, there is no doubt that Gateway API is only at the beginning of this joint effort.&lt;/p&gt;&lt;h3 id=&quot;useful-links&quot;&gt;&lt;strong&gt;Useful Links&lt;/strong&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Gateway API&amp;nbsp;&lt;a href=&quot;https://gateway-api.sigs.k8s.io/?ref=traefik.io&quot;&gt;&lt;u&gt;documentation&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Traefik 3.2&amp;nbsp;&lt;a href=&quot;https://github.com/traefik/traefik/releases/tag/v3.1.0?ref=traefik.io&quot;&gt;&lt;u&gt;release notes&lt;/u&gt;&lt;/a&gt;&amp;nbsp;on Github&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/blog/getting-started-with-kubernetes-gateway-api-and-traefik/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Getting started with Kubernetes Gateway API and Traefik&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-190241936960&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;190241936960&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLL7QjdZ%2BE0aLDmqzFd9h6fZkzrDaNRuYEh0HCP95vWQBoGopm4sLX9zqx6fhFJV%2B9NuMKGHpQ3q2CmtysEpFCA1aTUbZzLJcPSXJf4QP%2Bp%2BbnRR3MX0dZ6d6wHcWMAqBugaMCZJSRi4X2lMSEXBigALtXwyb1%2FO06FMsM0HB0bdVFVdi11%2FQJLGPyJ9HbR4GVP9keUMaHvHhIG26yicpg%3D%3D&amp;webInteractiveContentId=190241936960&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Watch API Gateway Demo&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-190241936960.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Traefik Proxy v3.2 - A Munster Release]]></title>
            <description><![CDATA[Traefik Proxy v3.2 is a major leap in performance, functionality, and security. This release delivers a performance boost with the Fast Proxy engine, supports Gateway API v1.2, and empowers efficient cloud-native app management.]]></description>
            <link>https://traefik.io/traefik-proxy-v3-2-a-munster-release</link>
            <guid isPermaLink="true">https://traefik.io/traefik-proxy-v3-2-a-munster-release</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Ingress]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <category><![CDATA[Product News]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Tue, 29 Oct 2024 14:58:03 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/10/Traefik-v3.2.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/10/Traefik-v3.2.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/10/Traefik-v3.2.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/10/Traefik-v3.2.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/10/Traefik-v3.2.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;After 3 months of intensive development and two release candidates, we are thrilled to announce the general availability of Traefik v3.2. With Halloween just around the corner, we wanted a &lt;a href=&quot;https://en.wikipedia.org/wiki/Munster_cheese?ref=containous.ghost.io&quot;&gt;&lt;u&gt;munster&lt;/u&gt;&lt;/a&gt; codename for this new version 👹. Let’s dig deeper into the key changes.&lt;/p&gt;&lt;p&gt;As Traefik Labs continues to lead the&amp;nbsp; Kubernetes Gateway API effort, it is no surprise that the new Gateway API v1.2 is supported out of the box in this latest Traefik release. We will explore the latest additions brought by the most recent development.&lt;/p&gt;&lt;p&gt;And that’s not all! The team has been working very hard on building an alternative HTTP reverse proxy engine for quite some time now, and the day has finally come to make it available to everyone. This Fast Proxy engine offers a whopping ~ 50% performance boost compared to the standard engine. Yes, that means approximately 50% more requests per second 💥&lt;/p&gt;&lt;p&gt;The clue&apos;s in the name—we&apos;re calling it a &apos;Munster&apos; release for a (spooktacular) reason! Let’s dive in!&lt;/p&gt;&lt;h2 id=&quot;performance-breakthrough&quot;&gt;Performance Breakthrough&lt;/h2&gt;&lt;p&gt;The Traefik team has been working on writing a complete new HTTP/1 engine. It took a long time to converge and we are extremely excited to announce that the new &lt;a href=&quot;https://doc.traefik.io/traefik/v3.2/user-guides/fastproxy/?ref=containous.ghost.io#enabling-fastproxy&quot;&gt;&lt;u&gt;Fast Proxy&lt;/u&gt;&lt;/a&gt; engine is available for everyone in experimental.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;experimental:
  fastProxy: {}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The Fast Proxy engine is a high-performance reverse proxy designed to enhance the performance of routing based on a zero allocation pipeline. This new engine significantly improves performance, boasting a remarkable 50% increase in speed compared to the standard engine. &lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/10/Traefik---50--on-your-req-s-3-1-1-1.png&quot; class=&quot;kg-image&quot; alt=&quot;Traefik - 50% on your req/s&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;400&quot;&gt;&lt;/figure&gt;&lt;p&gt;Here are the results of an analysis conducted on our benchmark platform using the standard vs. the Fast Proxy Engine.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/10/Traefik-Latency-Distribution.svg&quot; class=&quot;kg-image&quot; alt=&quot;Traefik Latency Distribution&quot; loading=&quot;lazy&quot; width=&quot;600&quot; height=&quot;371&quot;&gt;&lt;/figure&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/10/Traefik-Throughput.svg&quot; class=&quot;kg-image&quot; alt=&quot;Traefik Throughput&quot; loading=&quot;lazy&quot; width=&quot;247&quot; height=&quot;371&quot;&gt;&lt;/figure&gt;&lt;p&gt;The difference between both engines is mind-blowing, you can now expect around 50% increase in throughput and 50% decrease in latency handled by Fast Proxy Engine through this new high performance proxy engine.&lt;/p&gt;&lt;h2 id=&quot;kubernetes-gateway-api-v12&quot;&gt;Kubernetes Gateway API v1.2&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://traefik.io/blog/how-traefik-labs-is-pioneering-the-kubernetes-gateway-api-revolution/?ref=containous.ghost.io&quot;&gt;Traefik Labs has always been a key player&lt;/a&gt; in Kubernetes inbound traffic management. Gateway API, seen as the next generation for Ingress, is probably one of the most active Kubernetes projects. Traefik was amongst the first controllers to adopt and support the Gateway API first alpha release, and since v3.0, Traefik has continuously integrated updates. Today, Traefik v3.2 introduces support for the newly released &lt;a href=&quot;https://github.com/kubernetes-sigs/gateway-api/releases/tag/v1.2.0?ref=containous.ghost.io&quot;&gt;Gateway API 1.2&lt;/a&gt;, and brings new additions like &lt;code&gt;GRPCRoute&lt;/code&gt; and &lt;code&gt;TLSRoute&lt;/code&gt;, as well as additional &lt;code&gt;HTTPRoute&lt;/code&gt; features such as h2c (HTTP/2 without TLS), WebSocket support for backends, response header modifications, and more.&lt;/p&gt;
&lt;p&gt;Let’s start with &lt;a href=&quot;https://gateway-api.sigs.k8s.io/api-types/grpcroute/?ref=containous.ghost.io&quot;&gt;&lt;code&gt;GRPCRoute&lt;/code&gt;&lt;/a&gt;, which is a type for specifying routing behavior of gRPC requests. gRPC is a widely adopted RPC framework popular across the industry, within Kubernetes itself. Therefore, a specific type to route this protocol provides a more granular configuration.&lt;/p&gt;
&lt;p&gt;Similarly to &lt;code&gt;HTTPRoute&lt;/code&gt;, the specification let you define &lt;code&gt;hostnames&lt;/code&gt; (a list of hostnames to match against the Host header of the gRPC request), &lt;code&gt;matches&lt;/code&gt; (conditions used for matching gRPC requests), &lt;code&gt;filters&lt;/code&gt; (to process or alter the request) and &lt;code&gt;backendRefs&lt;/code&gt; (defines the backend services to which matching requests should be sent). Here is an example of a &lt;code&gt;GRPCRoute&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: gateway.networking.k8s.io/v1
kind: GRPCRoute
metadata:
  name: grpc-route
spec:
  parentRefs:
  - name: traefik-gateway
  hostnames:
  - &quot;example.com&quot;
  rules:
  - filters:
    - type: RequestHeaderModifier
      requestHeaderModifier:
        add:
          - name: my-header
            value: foo
  - matches:
    - method:
        service: com.example.User
        method: Login
    backendRefs:
    - name: login-v1
      port: 50051
  - matches:
    - headers:
      - type: Exact
        name: magic
        value: foo
      method:
        service: com.example.Foo
        method: DoFoo
    backendRefs:
    - name: foo-v1
      port: 50051
      weight: 90
    - name: foo-v2
      port: 50051
      weight: 10
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://gateway-api.sigs.k8s.io/reference/spec/?ref=containous.ghost.io#gateway.networking.k8s.io/v1alpha2.TLSRoute&quot;&gt;&lt;code&gt;TLSRoute&lt;/code&gt;&lt;/a&gt; support has also been added to Traefik in v3.2’s experimental channel, to enable multiplexing TLS connections via SNI.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: gateway.networking.k8s.io/v1
kind: TLSRoute
metadata:
  name: tls-route
spec:
  hostnames:
  - example.com
  parentRefs:
  - name: traefik-gateway
  rules:
    - backendRefs:
        - name: backend-tls
          kind: Service
          port: 443
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Introduced with Gateway API v1.2, &lt;a href=&quot;https://gateway-api.sigs.k8s.io/guides/backend-protocol/?h=backend+pro&amp;ref=containous.ghost.io#backend-protocol&quot;&gt;Backend Protocol&lt;/a&gt; (through the appProtocol field) can now be set to specify the underlying protocol when a Route&apos;s backend references a Kubernetes Service. Currently, you can choose between &lt;code&gt;http&lt;/code&gt;, &lt;code&gt;https&lt;/code&gt;, &lt;code&gt;kubernetes.io/h2c&lt;/code&gt; for HTTP/2 without TLS and &lt;code&gt;kubernetes.io/ws&lt;/code&gt; for websocket over HTTP.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: v1
kind: Service
metadata:
  name: test
spec:
  selector:
    app: test
  ports:
  - protocol: TCP
    appProtocol: kubernetes.io/h2c
    port: 8080
    targetPort: 8080
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;ResponseHeaderModifier&lt;/code&gt; filter is now supported since Traedfik v3.2. It allows to setsetting a custom header for all responses being sent.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: gateway.networking.k8s.io/v1beta1
kind: HTTPRoute
metadata:
  name: http-response-header
spec:
  hostnames:
    - response.header.example
  rules:
    - backendRefs:
      - name: example-service-beta
        weight: 50
        port: 80
        # set a custom header for all responses being sent from the
        beta build of the backend server.
        filters:
           - type: ResponseHeaderModifier
             responseHeaderModifier:
               add:
                 name: build
                 value: beta
      - name: example-service-stable
        weight: 50
        port: 80
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To learn more about how Traefik supports Gateway API, we encourage you to visit the &lt;a href=&quot;https://doc.traefik.io/traefik/v3.2/providers/kubernetes-gateway/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik Documentation&lt;/u&gt;&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;&lt;h2 id=&quot;other-improvements&quot;&gt;Other Improvements&lt;/h2&gt;&lt;p&gt;In addition to these exciting new features, Traefik v3.2 brings several updates to ACME certificate management (Let’s Encrypt), including the ability to use different email addresses in certificate resolvers (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11019?ref=containous.ghost.io&quot;&gt;#11019&lt;/a&gt; by &lt;a href=&quot;https://github.com/Emrio?ref=containous.ghost.io&quot;&gt;Emrio&lt;/a&gt;), the support for custom CA certificates in certificate resolvers (&lt;a href=&quot;https://github.com/traefik/traefik/pull/10816?ref=containous.ghost.io&quot;&gt;#10816&lt;/a&gt; by &lt;a href=&quot;https://github.com/ldez?ref=containous.ghost.io&quot;&gt;ldez&lt;/a&gt;), and a 30-days &lt;code&gt;certificatesDuration&lt;/code&gt; threshold (&lt;a href=&quot;https://github.com/traefik/traefik/pull/10970?ref=containous.ghost.io&quot;&gt;#10970&lt;/a&gt; by &lt;a href=&quot;https://github.com/luker983?ref=containous.ghost.io&quot;&gt;luker983&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;BasicAuth support has been added to the Docker and Swarm endpoints (&lt;a href=&quot;https://github.com/traefik/traefik/pull/10776?ref=containous.ghost.io&quot;&gt;#10776&lt;/a&gt; by &lt;a href=&quot;https://github.com/985492783?ref=containous.ghost.io&quot;&gt;985492783&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Middlewares have been improved with IPv6 subnet support in &lt;code&gt;ipStrategy&lt;/code&gt; for &lt;code&gt;RateLimit&lt;/code&gt; and &lt;code&gt;InFlightReq&lt;/code&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/9747?ref=containous.ghost.io&quot;&gt;#9747&lt;/a&gt; by &lt;a href=&quot;https://github.com/michal-kralik?ref=containous.ghost.io&quot;&gt;michal-kralik&lt;/a&gt;), an option to log the user in the ForwardAuth middleware (&lt;a href=&quot;https://github.com/traefik/traefik/pull/10833?ref=containous.ghost.io&quot;&gt;#10833&lt;/a&gt; by &lt;a href=&quot;https://github.com/GaleHuang?ref=containous.ghost.io&quot;&gt;GaleHuang&lt;/a&gt;), a new compression &lt;code&gt;encodings&lt;/code&gt; option (&lt;a href=&quot;https://github.com/traefik/traefik/pull/10943?ref=containous.ghost.io&quot;&gt;#10943&lt;/a&gt; by &lt;a href=&quot;https://github.com/wollomatic?ref=containous.ghost.io&quot;&gt;wollomatic&lt;/a&gt;), and the ability to mirror the full body in the mirroring (&lt;a href=&quot;https://github.com/traefik/traefik/pull/11032?ref=containous.ghost.io&quot;&gt;#11032&lt;/a&gt; by &lt;a href=&quot;https://github.com/MatteoPaier?ref=containous.ghost.io&quot;&gt;MatteoPaier&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;OpenTelemetry metrics now allow you to configure &lt;code&gt;service.name&lt;/code&gt; for scenario with several Traefik instances (&lt;a href=&quot;https://github.com/traefik/traefik/pull/10917?ref=containous.ghost.io&quot;&gt;#10917&lt;/a&gt; by &lt;a href=&quot;https://github.com/cmartell-at-ocp?ref=containous.ghost.io&quot;&gt;cmartell-at-ocp&lt;/a&gt;), while access logs now capture trace IDs and EntryPoint span IDs (&lt;a href=&quot;https://github.com/traefik/traefik/pull/10921?ref=containous.ghost.io&quot;&gt;#10921&lt;/a&gt; by &lt;a href=&quot;https://github.com/weijiany?ref=containous.ghost.io&quot;&gt;weijiany&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;A configurable maximum request header size option has also been added, allowing users to specify the maximum size for HTTP request headers beyond the default 1MB limit (&lt;a href=&quot;https://github.com/traefik/traefik/pull/10995?ref=containous.ghost.io&quot;&gt;&lt;u&gt;#10995&lt;/u&gt;&lt;/a&gt; by &lt;a href=&quot;https://github.com/lucasrod16?ref=containous.ghost.io&quot;&gt;&lt;u&gt;lucasrod16&lt;/u&gt;&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;For detailed information on all changes, please refer to the &lt;a href=&quot;https://github.com/traefik/traefik/releases/tag/v3.2.0?ref=containous.ghost.io&quot;&gt;&lt;u&gt;full release notes&lt;/u&gt;&lt;/a&gt; on GitHub.&amp;nbsp;&lt;/p&gt;&lt;p&gt;We extend our gratitude to all contributors for their efforts and dedication, which has made Traefik 3.2 an exceptional release. Thank you for driving Traefik forward!&lt;/p&gt;&lt;h2 id=&quot;moving-forward&quot;&gt;Moving Forward&lt;/h2&gt;&lt;p&gt;Traefik Proxy v3.2 is a major leap forward in performance, functionality, and security. This release introduces a groundbreaking Fast Proxy engine, which delivers unparalleled speed and efficiency. As a key contributor to the Kubernetes Gateway API project, Traefik Labs ensures cutting-edge support for the latest Gateway API v1.2 specifications. Along with many other enhancements, Traefik 3.2 empowers developers and organizations to effortlessly build and manage modern, cloud-native applications with unprecedented efficiency.&amp;nbsp;&lt;/p&gt;&lt;p&gt;We encourage you to explore the new features and capabilities of Traefik 3.2 and experience the impact they can make in your infrastructure. Join the vibrant Traefik community, share your feedback, and help us shape the future of cloud-native networking.&lt;/p&gt;&lt;h2 id=&quot;useful-links&quot;&gt;Useful Links&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Traefik 3.2 on &lt;a href=&quot;https://github.com/traefik/traefik/releases/tag/v3.2.0?ref=containous.ghost.io&quot;&gt;&lt;u&gt;GitHub&lt;/u&gt;&lt;/a&gt; &amp;amp; on &lt;a href=&quot;https://hub.docker.com/_/traefik?ref=traefik.io&quot;&gt;&lt;u&gt;DockerHub&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Traefik &lt;a href=&quot;https://docs.traefik.io/?ref=traefik.io&quot;&gt;&lt;u&gt;Documentation&lt;/u&gt;&lt;/a&gt;, &lt;a href=&quot;https://traefik.io/traefik/?ref=traefik.io&quot;&gt;&lt;u&gt;Website&lt;/u&gt;&lt;/a&gt;, &amp;amp; &lt;a href=&quot;https://github.com/containous/traefik?ref=traefik.io&quot;&gt;&lt;u&gt;GitHub&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://community.traefik.io/?ref=traefik.io&quot;&gt;&lt;u&gt;Our Community Forum&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-158028398339&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:255.06668090820312px; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;158028398339&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJopIkqy9PwxjiexjkTebdknPc%2B1lMv9CoGqRfqx9yrZ6uJu4k%2BqE2uO7QoJE9hsbY2%2Fu1c4YagHrQ4ZCBQ9KWSmNf5JnqrM8ZnFKNFuS20X3M%3D&amp;webInteractiveContentId=158028398339&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Proxy_Ad_02@2x&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-158028398339.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Deepening The Synergy: HashiCorp and Traefik Labs’ Journey Toward a Seamless Cloud-Native Stack]]></title>
            <description><![CDATA[The deep integration of HashiCorp and Traefik Labs stacks has been transformative for enterprises navigating the complexities of cloud-native environments.]]></description>
            <link>https://traefik.io/deepening-the-synergy-hashicorp-and-traefik-labs</link>
            <guid isPermaLink="true">https://traefik.io/deepening-the-synergy-hashicorp-and-traefik-labs</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[DevOps]]></category>
            <category><![CDATA[Ingress]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Mon, 14 Oct 2024 15:28:44 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/10/Deepening-The-Synergy-HashiCorp-and-Traefik-Labs---Blog.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Deepening The Synergy: HashiCorp and Traefik Labs&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/10/Deepening-The-Synergy-HashiCorp-and-Traefik-Labs---Blog.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/10/Deepening-The-Synergy-HashiCorp-and-Traefik-Labs---Blog.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/10/Deepening-The-Synergy-HashiCorp-and-Traefik-Labs---Blog.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/10/Deepening-The-Synergy-HashiCorp-and-Traefik-Labs---Blog.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Cloud-native infrastructure is evolving rapidly, with agility, security, and scalability increasingly becoming key table stakes. As such, organizations are constantly seeking integrated solutions to streamline their operations, and HashiCorp and Traefik Labs are one of the best examples of a deep integration between two stacks. What began with early integrations, with Traefik Proxy and Hashicorp Consul, has matured into a deep symbiosis of technologies with the addition of Traefik Enterprise, Traefik Hub, Hashicorp Vault and HashiCorp Nomad. Traefik Labs being recognized as the “&lt;a href=&quot;https://traefik.io/blog/traefik-labs-named-2022-hashicorp-integration-partner-of-the-year/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;2022 HashiCorp Integration Partner of the Year&lt;/u&gt;&lt;/a&gt;” showcases this strong unity that helps enterprises architect modern cloud-native infrastructures with ease.&lt;/p&gt;&lt;h2 id=&quot;the-early-days&quot;&gt;The Early Days&lt;/h2&gt;&lt;p&gt;The foundation of this partnership was laid with the integration of &lt;strong&gt;HashiCorp Consul&lt;/strong&gt; into &lt;strong&gt;Traefik Proxy&lt;/strong&gt;, Traefik Labs’ open-source reverse proxy and ingress controller. As early as Traefik’s inception back in 2015, the team at Traefik Labs was embracing service discovery and dynamic configuration patterns. Obviously, Consul from HashiCorp, was a natural fit.&lt;/p&gt;&lt;p&gt;At its core, Consul is designed to handle service discovery, health checks, and distributed system coordination across environments, making it the perfect complement to Traefik’s dynamic routing capabilities. Consul is integrated as a &lt;a href=&quot;https://doc.traefik.io/traefik/providers/consul/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;KV store&lt;/u&gt;&lt;/a&gt; and as a &lt;a href=&quot;https://doc.traefik.io/traefik/providers/consul-catalog/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;service catalog&lt;/u&gt;&lt;/a&gt; within Traefik, offering the maximum flexibility to fit companies’ needs.&lt;/p&gt;&lt;p&gt;As enterprises adopted cloud-native infrastructures, this combination of Traefik’s efficient ingress management and Consul’s robust service discovery made the duo indispensable in production environments.&lt;/p&gt;&lt;h2 id=&quot;growing-the-partnership&quot;&gt;Growing the Partnership&lt;/h2&gt;&lt;p&gt;The expansion of both companies’ business offerings created the opportunity to deepen this collaboration, particularly with the introduction of Traefik Enterprise and HashiCorp’s Vault and Nomad into the mix.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Traefik Enterprise&lt;/strong&gt; &amp;amp; &lt;strong&gt;HashiCorp Vault&lt;/strong&gt;: Security has become an increasingly critical concern for organizations as they shift to microservices-based architectures. Vault, HashiCorp’s flagship solution for secrets management, integrates seamlessly with Traefik Enterprise, enabling enterprises to securely manage sensitive data. Companies can leverage Vault PKI as a &lt;a href=&quot;https://doc.traefik.io/traefik-enterprise/tls/vault-pki/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;TLS certificate resolver&lt;/u&gt;&lt;/a&gt; in Traefik Enterprise or can unlock the potential of a fully &lt;a href=&quot;https://doc.traefik.io/traefik-enterprise/tls/distributed-acme/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;distributed ACME (Let’s Encrypt)&lt;/u&gt;&lt;/a&gt; setup. This is particularly essential in highly dynamic production environments, where breaches of sensitive data can be catastrophic.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Traefik Enterprise&lt;/strong&gt; &amp;amp; &lt;strong&gt;HashiCorp Nomad&lt;/strong&gt;: HashiCorp’s Nomad, a highly efficient workload orchestrator, became another pivotal piece in the collaboration. Designed to work across cloud and on-premises environments, Nomad excels at scheduling and managing containerized services at scale. Paired with Traefik Enterprise, this combination ensures that workloads are automatically discovered and routed without downtime or manual updates.&lt;/p&gt;&lt;p&gt;Nomad’s orchestration, when aligned with Traefik’s smart routing, delivers a streamlined solution for managing microservices, making deployment and scaling more seamless than ever before. This integration is particularly valuable for organizations looking for flexible, multi-cloud deployment options while maintaining high performance and operational efficiency.&lt;/p&gt;&lt;p&gt;Together, these integrations create a secure, highly automated, and flexible platform that enables enterprises to deploy, scale, and manage applications across any environment. With Traefik Enterprise and HashiCorp’s Vault and Nomad, organizations can achieve greater levels of automation while maintaining security, simplifying operations, and minimizing human intervention.&lt;/p&gt;&lt;h2 id=&quot;maturing-the-partnership&quot;&gt;Maturing the Partnership&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Traefik Hub &lt;/strong&gt;&amp;amp;&lt;strong&gt; HashiCorp Vault&lt;/strong&gt;: The maturity of the HashiCorp-Traefik Labs partnership reached a new level with the introduction of Traefik Hub, the industry&apos;s first Kubernetes-native API Management solution for publishing, securing, and managing APIs. Traefik Hub represents the most advanced solution in Traefik Labs’ portfolio, providing end-to-end API management that supports complex environments at scale. Built on the foundations of Traefik Enterprise’s proven routing technology, &lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/secure/tls/vault-pki?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik Hub API Gateway integrates deeply with Vault&lt;/u&gt;&lt;/a&gt; to offer an automated TLS certificate PKI for all APIs handled by Traefik Hub. The Hub &amp;amp; Vault combo provides the most advanced and secured API Gateway solution on the market.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Traefik Proxy/Hub&lt;/strong&gt; &amp;amp; &lt;strong&gt;HashiCorp Nomad&lt;/strong&gt;: The Nomad integration into Traefik Proxy and Traefik Hub continues to be improved and the latest Traefik v3.2 release brings &lt;a href=&quot;https://doc.traefik.io/traefik/v3.2/providers/nomad/?ref=containous.ghost.io#watch&quot;&gt;&lt;u&gt;a new watch option&lt;/u&gt;&lt;/a&gt; to the Nomad provider which refreshes the configuration on a per-event basis instead of the less effective pull mechanism.&lt;/p&gt;&lt;p&gt;Finally, both companies have been working hand in hand to publish a &lt;a href=&quot;https://developer.hashicorp.com/validated-designs/integration-patterns-guides-nomad-workload-modernization-with-traefik?ref=containous.ghost.io&quot;&gt;&lt;u&gt;workload modernization integration guide&lt;/u&gt;&lt;/a&gt; with Traefik Enterprise to embed an API Gateway into Hashicorp Nomad clusters running Consul and Vault. The idea was to create a definitive guide for operation, platform and security teams to deploy a modern platform to seamlessly and securely publish APIs.&lt;/p&gt;&lt;p&gt;The impact? Outstanding success stories from clients across the world, highlighted recently by BT Group:&lt;/p&gt;&lt;blockquote&gt;&lt;em&gt;“We adopted Traefik OSS to help build a new container platform on HashiCorp Nomad in AWS, following the closure of one of our on-prem data centers. We needed something that integrated smoothly with Consul and had minimal overhead while handling spikes in demand during major events. Traefik&apos;s seamless integration with Consul made it easy to implement, and it’s been so reliable that we rarely have to think about it.&amp;nbsp;As our platform grew, we needed to support more use cases around security and wanted operational support, which led us to adopt Traefik Hub. Being able to secure our APIs quickly by adding a few Consul tags has been a huge time-saver—our teams can focus on development without worrying about complex configuration.”&amp;nbsp; ⎯&amp;nbsp; Tom Davies, Principal Software Engineer, &lt;strong&gt;BT Group&amp;nbsp;&lt;/strong&gt;&lt;/em&gt;&lt;/blockquote&gt;&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;&lt;p&gt;The deep integration of HashiCorp and Traefik Labs stacks has been transformative for enterprises navigating the complexities of cloud-native environments. With the synergy between Traefik Enterprise, Vault, and Nomad already providing robust solutions for secure microservices orchestration, the introduction of Traefik Hub represents a leap forward in API management.&lt;/p&gt;&lt;p&gt;This partnership continues to evolve, driving innovation in cloud-native technologies and creating tools that allow enterprises to thrive in an era where security, automation, and flexibility are key. As this collaboration deepens, the future of cloud-native infrastructure looks more agile, resilient, and secure than ever before. Visit &lt;a href=&quot;https://traefik.io/solutions/hashicorp-and-traefik/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;our Traefik &amp;amp; HashiCorp page&lt;/a&gt; to learn more.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-177548019563&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:225px; margin-top: 40px; margin-bottom: 40px;&quot; data-hubspot-wrapper-cta-id=&quot;177548019563&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLI93DzVem4lVb%2B%2Br0iIihYUopHAiQv9Vi0LVkSbPfJZhsOLCemi0Fo3oc4m6zHyrkRaivzw703LTwqHq6%2F0oHzgc5YRBrULVANdMfE%2BqHmhJppObpIPg94eJoQOjnUK5faA25zSx%2BScaJObyAySR%2F8u7HYbSVHvjKk3I7ZINCfJhNaOkZXrl5q1c0HzuY4%3D&amp;webInteractiveContentId=177548019563&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Hub-cta&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-177548019563.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Implementing Runtime API Governance in Traefik Hub]]></title>
            <description><![CDATA[Let’s look at how Traefik Hub implements the top five policies for runtime API governance.]]></description>
            <link>https://traefik.io/implementing-runtime-api-governance-in-traefik-hub</link>
            <guid isPermaLink="true">https://traefik.io/implementing-runtime-api-governance-in-traefik-hub</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[Strategy]]></category>
            <dc:creator><![CDATA[Immánuel Fodor]]></dc:creator>
            <pubDate>Wed, 18 Sep 2024 03:41:00 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/09/Trefik-Labs---Implementing-Runtime-API-Governance-in-Traefik-Hub.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Implementing Runtime API Governance in Traefik Hub&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/09/Trefik-Labs---Implementing-Runtime-API-Governance-in-Traefik-Hub.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/09/Trefik-Labs---Implementing-Runtime-API-Governance-in-Traefik-Hub.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/09/Trefik-Labs---Implementing-Runtime-API-Governance-in-Traefik-Hub.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/09/Trefik-Labs---Implementing-Runtime-API-Governance-in-Traefik-Hub.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;In a &lt;a href=&quot;https://traefik.io/blog/top-five-policies-for-runtime-api-governance/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;recent blog post&lt;/a&gt;, we discussed the top five policies for runtime API governance. Now, let’s look at how Traefik Hub implements these policies. Traefik Hub is a Kubernetes-native API management solution built with scalability, flexibility, and simplicity in mind. Traefik Hub helps route traffic to services in dynamic, microservices-oriented environments.&lt;/p&gt;&lt;p&gt;In the following sections, we will provide examples of configuration implementation in Traefik Hub to support the standards we have discussed. But note that our examples are not exhaustive - Traefik Hub supports many more capabilities and configuration options!&amp;nbsp;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-190241936960&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;190241936960&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLL7QjdZ%2BE0aLDmqzFd9h6fZkzrDaNRuYEh0HCP95vWQBoGopm4sLX9zqx6fhFJV%2B9NuMKGHpQ3q2CmtysEpFCA1aTUbZzLJcPSXJf4QP%2Bp%2BbnRR3MX0dZ6d6wHcWMAqBugaMCZJSRi4X2lMSEXBigALtXwyb1%2FO06FMsM0HB0bdVFVdi11%2FQJLGPyJ9HbR4GVP9keUMaHvHhIG26yicpg%3D%3D&amp;webInteractiveContentId=190241936960&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Watch API Gateway Demo&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-190241936960.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;policy-1-use-a-developer-friendly-traceable-and-easy-to-rollback-approach-for-api-deployments&quot;&gt;Policy 1: Use a developer-friendly, traceable, and easy-to-rollback approach for API deployments&lt;/h2&gt;&lt;p&gt;As a Kubernetes-native solution, Traefik Hub supports declarative resource configuration. Traefik Hub configuration can be done through Kubernetes resources like &lt;code&gt;Ingress&lt;/code&gt; and &lt;code&gt;Service&lt;/code&gt;, and Traefik Custom Resource Definitions (CRDs) like &lt;code&gt;IngressRoutes&lt;/code&gt;, &lt;code&gt;Middleware&lt;/code&gt;, &lt;code&gt;API&lt;/code&gt;, &lt;code&gt;APIPortal&lt;/code&gt;, &lt;code&gt;APIAccess&lt;/code&gt;, &lt;code&gt;APIVersion&lt;/code&gt;, and &lt;code&gt;APIRateLimit&lt;/code&gt;. Configuration can be version-controlled in Git and automatically applied to the Kubernetes cluster using GitOps tools like ArgoCD and Flux.&lt;/p&gt;
&lt;p&gt;For example, defining external traffic routing to a service involves creating an API CRD and exposing the API with an &lt;code&gt;IngressRoute&lt;/code&gt;. The following resource definition declares an API called hello-api, and provides the path to its OpenAPI description.&lt;/p&gt;

&lt;!--kg-card-begin: html--&gt;
&lt;table style=&quot;border:none;border-collapse:collapse;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;vertical-align:top;background-color:#f5f7ff;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#c76b29;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;---&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;apiVersion: &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;hub.traefik.io/v1alpha1&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;kind: &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;API&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;metadata:&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; name: &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;hello-api&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; namespace: &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;apps&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;spec:&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; openApiSpec:&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; path: &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;/openapi.yaml&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;Next, specify an &lt;code&gt;IngressRoute&lt;/code&gt; CRD with routes to connect incoming requests to services that can handle them. The following resource definition declares a router that matches a request with the host &lt;code&gt;api.example.com&lt;/code&gt; to the hello-api-service.&lt;/p&gt;

&lt;!--kg-card-begin: html--&gt;
&lt;table style=&quot;border:none;border-collapse:collapse;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;vertical-align:top;background-color:#f5f7ff;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#c76b29;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;---&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;apiVersion: &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;traefik.io/v1alpha1&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;kind: &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;IngressRoute&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;metadata:&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; name: &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;hello-api-ingress&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; namespace: &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;apps&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; annotations:&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;hub.traefik.io/api:&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;hello-api&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#6b7394;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;# Name of the API object&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;spec:&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; routes:&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; - match: &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Host(`api.example.com`)&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; kind: &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Rule&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; services:&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; - name: &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;hello-api-service&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; port: &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#c76b29;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;8080&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;Developers can save configurations to a Git repository, and GitOps operators ensure that these configurations are consistently applied across environments. The diagram below illustrates this process.&amp;nbsp;&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/09/Git-Process.png&quot; class=&quot;kg-image&quot; alt=&quot;Git Proces&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;806&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/09/Git-Process.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/09/Git-Process.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/09/Git-Process.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2024/09/Git-Process.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The declarative nature of Traefik configuration, combined with GitOps workflows, supports advanced and progressive deployment capabilities. Teams can follow blue-green deployments and canary releases using GitOps operators like &lt;a href=&quot;https://argoproj.github.io/argo-rollouts/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;ArgoCD&lt;/u&gt;&lt;/a&gt; and &lt;a href=&quot;https://fluxcd.io/flagger/tutorials/traefik-progressive-delivery/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;FluxCD&lt;/u&gt;&lt;/a&gt;. If any issues are detected, changes can be rolled back to a stable version by reverting the changes in the Git repository.&amp;nbsp;&lt;/p&gt;&lt;p&gt;TIP: For an in-depth treatment on how to do load-balancing in Traefik and support advanced deployment techniques, see &lt;a href=&quot;https://academy.traefik.io/courses/advanced-load-balancing-w-traefik-proxy?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik’s Advanced Load Balancing&lt;/u&gt;&lt;/a&gt; course.&amp;nbsp;&lt;/p&gt;&lt;h2 id=&quot;policy-2-make-comprehensive-and-correct-api-documentation-available-to-users&quot;&gt;Policy 2: Make comprehensive and correct API documentation available to users&lt;/h2&gt;&lt;p&gt;Traefik Hub API management includes an API Developer Portal to make API documentation accessible to developers and other API users. In the portal, users can explore available API endpoints, understand their usage, and test them in real time.&lt;/p&gt;&lt;p&gt;The &lt;code&gt;APIPortal&lt;/code&gt; CRD creates and configures the portal, generating a web interface for browsing the API documentation. The visibility of API documentation depends on user groups. An API will be visible to an API consumer if they belong to a specified group with access to the API, as configured by the APIAccess CRD.&lt;/p&gt;
&lt;p&gt;You can create an API developer portal by applying an APIPortal resource as follows:&lt;/p&gt;

&lt;!--kg-card-begin: html--&gt;
&lt;table style=&quot;border:none;border-collapse:collapse;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;vertical-align:top;background-color:#f5f7ff;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#c76b29;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;---&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;apiVersion: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;hub.traefik.io/v1alpha1&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;kind: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;APIPortal&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;metadata:&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; name: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;my-portal&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; namespace: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;default&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;spec:&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; title: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&quot;My Portal&quot;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#6b7394;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;# The title for the Portal&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; description: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&quot;API documentations&quot;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#6b7394;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;# A short description of the Portal&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; trustedUrls:&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; -&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&quot;https://portal.example.com&quot;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; ui:&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; logoUrl: https://traefik.io/favicon.png &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#6b7394;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;# URL to a picture used as logo&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;To expose the portal, create an &lt;code&gt;IngressRoute&lt;/code&gt; resource, as demonstrated below:&lt;/p&gt;

&lt;!--kg-card-begin: html--&gt;
&lt;table style=&quot;border:none;border-collapse:collapse;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;vertical-align:top;background-color:#f5f7ff;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;br&gt;&lt;br&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#c76b29;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;---&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;apiVersion: &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;traefik.io/v1alpha1&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;kind: &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;IngressRoute&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;metadata:&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; name: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;my-portal-ingress&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; namespace: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;traefik-hub&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; annotations:&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;hub.traefik.io/api-portal:&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;my-portal@default&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#6b7394;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;# Reference the APIPortal &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;spec:&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; routes:&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; - match: &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Host(`&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;portal.example.com&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;`)&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; kind: &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Rule&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; services:&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; - name: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;apiportal&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; port: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#c76b29;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;9903&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;policy-3-secure-all-api-traffic-from-malicious-and-unauthorized-access&quot;&gt;Policy 3: Secure all API traffic from malicious and unauthorized access&lt;/h2&gt;&lt;p&gt;With Traefik Hub, you can ensure secure API access using protocols such as Oauth2, OpenID Connect (OIDC), API keys, and JSON Web Tokens (JWTs). Additionally, Traefik integrates with identity providers such as Keycloak and Okta. Traefik also integrates with any other IdP that supports the OIDC protocol to handle user identities and authorize access to the APIs and API portals.&lt;/p&gt;&lt;p&gt;To protect APIs from DDoS attacks or excessive requests from a single client, you can implement rate limits by defining an APIRateLimit resource. Traefik allows you to do this for all APIs or specific user groups. The following declarative config defines a rate limit of 100 requests per minute.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;table style=&quot;border:none;border-collapse:collapse;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;vertical-align:top;background-color:#f5f7ff;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;apiVersion: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;hub.traefik.io/v1alpha1&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;kind: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;APIRateLimit&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;metadata:&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; name: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;my-rate-limit&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; namespace: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;apps&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;spec:&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#6b7394;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;# Rate limit configuration, this config allows 100 requests/minute.&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; limit: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#c76b29;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;100&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#6b7394;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;# 100 requests&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; period: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#c76b29;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;1&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;m&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#6b7394;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;# One minute&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; groups:&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; -&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;support&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; apiSelector:&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; matchLabels:&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; module: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;crm&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;Using Traefik’s Distributed Rate Limit (which is based on the &lt;a href=&quot;https://en.wikipedia.org/wiki/Token_bucket?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Token Bucket&lt;/u&gt; &lt;/a&gt;algorithm), you can limit requests over time across your entire cluster rather than just an individual proxy.&lt;/p&gt;&lt;p&gt;In addition, &lt;a href=&quot;https://traefik.io/blog/exploring-traefiks-waf-integration-and-how-to-make-it-23x-faster/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik Proxy v3&lt;/u&gt;&lt;/a&gt; includes the Coraza Web Application Firewall (WAF) integrated as a plugin. Coraza is an open-source OWASP project and a high-performance WAF that supports Modsecurity&apos;s seclang language and OWASP core rule sets. Enabling this involves two simple steps:&lt;/p&gt;&lt;p&gt;- First, updating Traefik’s static configuration that loads the plugin as follows:&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;table style=&quot;border:none;border-collapse:collapse;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;vertical-align:top;background-color:#f5f7ff;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;experimental:&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; plugins:&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; coraza:&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; moduleName: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;github.com/jcchavezs/coraza-http-wasm-traefik&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; version: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;v0.2.2&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;- Then, updating the WAF CRD as follows:&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;table style=&quot;border:none;border-collapse:collapse;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;vertical-align:top;background-color:#f5f7ff;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#c76b29;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;---&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;apiVersion: &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;traefik.io/v1alpha1&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;kind: &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Middleware&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;metadata:&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; name: &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;coraza-waf-block-admin-path&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; namespace: &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;apps&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;spec:&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; plugin:&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; coraza:&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; directives:&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; -&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;SecRuleEngine&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;On&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; -&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;SecDebugLog&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;/dev/stdout&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; -&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;SecDebugLogLevel&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#c76b29;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;9&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &amp;nbsp; &amp;nbsp; &amp;nbsp; -&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;SecRule&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;REQUEST_URI&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&quot;@streq /admin&quot;&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&quot;id:101,phase:1,log,deny,status:403&quot;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;policy-4-provide-precise-api-change-impact-analysis-to-minimize-service-failure-and-breaking-changes&quot;&gt;Policy 4: Provide precise API change impact analysis to minimize service failure and breaking changes&lt;/h2&gt;&lt;p&gt;Traefik Hub helps you understand the impact of API configuration changes by performing static checks on manifest files. It includes a &lt;a href=&quot;https://github.com/traefik/hub-static-analyzer-action?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Static Analyzer&lt;/u&gt;&lt;/a&gt; tool that allows you to check your Traefik Hub manifest files for consistency and quality. The Static Analyzer can lint manifest files and generate differential reports. It can be used as a CLI tool or as part of a CI/CD pipeline. The linter can detect issues such as:&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Childless resources&amp;nbsp;&lt;/li&gt;&lt;li&gt;Duplicate resources and resource references&lt;/li&gt;&lt;li&gt;Unknown operation sets&lt;/li&gt;&lt;li&gt;Orphan resources&lt;/li&gt;&lt;li&gt;Invalid resource references&lt;/li&gt;&lt;li&gt;Invalid regular expressions&lt;/li&gt;&lt;li&gt;Duplicate releases of a given API&lt;/li&gt;&lt;li&gt;Invalid resource definitions&lt;/li&gt;&lt;li&gt;Invalid selector definitions&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The following is an example of the linting error message displayed on the PR that introduces a change.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/09/linting-error-message.png&quot; class=&quot;kg-image&quot; alt=&quot;linting error message&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;538&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/09/linting-error-message.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/09/linting-error-message.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/09/linting-error-message.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2024/09/linting-error-message.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The Static Analyzer tool can also run a diff to generate change reports. For example, a report like the following makes it clear that the rate limit was changed. It shows the user group and APIs affected by the change. If that was not the developer’s intention, the developer can take remedial action.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/09/Static-Analyzer-tool.png&quot; class=&quot;kg-image&quot; alt=&quot;Static Analyzer tool&quot; loading=&quot;lazy&quot; width=&quot;1822&quot; height=&quot;974&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/09/Static-Analyzer-tool.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/09/Static-Analyzer-tool.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/09/Static-Analyzer-tool.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/09/Static-Analyzer-tool.png 1822w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;To aid API evolution, Traefik Hub also &lt;a href=&quot;https://traefik.io/blog/api-versioning-with-traefik-hub/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;supports several API versioning schemes&lt;/u&gt;&lt;/a&gt;. Teams can define and use an API version based on host, URI path, HTTP method, query parameters, media/content type headers, custom headers, client IP, auth user (basic/forward auth), JWT claims, and more. Traefik even allows teams to mix different versioning schemes based on logical expressions.&lt;/p&gt;&lt;h2 id=&quot;policy-5-provide-proactive-api-monitoring-and-comprehensive-granular-observability-to-reduce-time-to-recovery&quot;&gt;Policy 5: Provide proactive API monitoring and comprehensive, granular observability to reduce time to recovery&lt;/h2&gt;&lt;p&gt;Traefik Hub provides metrics and tracing information using the OpenTelemetry (OTel) format, to help teams monitor and gain insights into the traffic flowing through their services and APIs. Traefik Hub has the most comprehensive OTel support in the industry, with over 20 metrics and 15 labels. Additionally, it supports vendor-specific metric systems such as Prometheus, Datadog, InfluxDB, and StatsD.&lt;/p&gt;&lt;p&gt;For instance, to set up the OTel metrics, first get the configuration values for the Traefik Hub Helm release:&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;table style=&quot;border:none;border-collapse:collapse;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;vertical-align:top;background-color:#f5f7ff;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;helm&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;get&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;values&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;traefik-hub&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;-n&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;traefik&lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; &lt;/span&gt;&lt;span style=&quot;font-size:11pt;font-family:Consolas,sans-serif;color:#ac9739;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;| tail -n +2 &amp;gt; values.yaml&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;Then, modify and apply the configuration values in values.yaml.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;table style=&quot;border:none;border-collapse:collapse;&quot;&gt;&lt;colgroup&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;vertical-align:top;background-color:#f5f7ff;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;metrics:&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#6b7394;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;# Disable Prometheus (enabled by default)&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; prometheus: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#c76b29;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;null&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#6b7394;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;# Enable providing OTel metrics&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; otlp:&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; enabled: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#c76b29;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; http:&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; enabled: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#c76b29;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; endpoint: http://myotlpcollector:4318/v1/metrics&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#6b7394;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;# Enable providing OTel traces&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; tracing:&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; enabled: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#c76b29;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; http:&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; enabled: &lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#c76b29;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;true&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&lt;br&gt;&lt;/span&gt;&lt;span style=&quot;font-size:10pt;font-family:Consolas,sans-serif;color:#5e6687;background-color:#f5f7ff;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;&amp;nbsp; &amp;nbsp; &amp;nbsp; endpoint: http://myotlpcollector:4318/v1/traces&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;By integrating with monitoring systems, you can configure alerts and notifications for critical metrics and performance indicators. Traefik can also be connected to &lt;a href=&quot;https://grafana.com/orgs/traefiklabs/dashboards?ref=containous.ghost.io&quot;&gt;&lt;u&gt;pre-built Grafana dashboards&lt;/u&gt;&lt;/a&gt; to visualize a wide range of API metrics. This allows you to correlate deployment events with incident management, enhancing your ability to monitor and respond to issues effectively and improve MTTR. For more details on &lt;a href=&quot;https://www.youtube.com/watch?v=1Buk3wPpJdY&amp;ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik Hub’s integration with Grafana, see this webinar&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/09/Grafana-dashboard-Traefik-Hub.png&quot; class=&quot;kg-image&quot; alt=&quot;Grafana Dashboard Traefik Hub&quot; loading=&quot;lazy&quot; width=&quot;1908&quot; height=&quot;812&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/09/Grafana-dashboard-Traefik-Hub.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/09/Grafana-dashboard-Traefik-Hub.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/09/Grafana-dashboard-Traefik-Hub.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/09/Grafana-dashboard-Traefik-Hub.png 1908w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Additionally, Traefik provides a built-in dashboard that offers a real-time view of the current status of routes, services, middleware, and other components.&lt;/p&gt;&lt;h2 id=&quot;gitops-implementation-example&quot;&gt;GitOps Implementation Example&lt;/h2&gt;&lt;p&gt;The first policy we highlighted at the beginning of this article was about providing a developer-friendly, traceable, and easy-to-rollback approach to API deployment. We also mentioned in Standard 1.2 that GitOps was an implementation of this approach. In the&lt;a href=&quot;https://github.com/traefik-workshops/traefik-hub-gitops?ref=containous.ghost.io&quot;&gt; &lt;u&gt;Traefik Hub GitOps Tutorial&lt;/u&gt;&lt;/a&gt; project in GitHub, we provide a hands-on tutorial to demonstrate the power of GitOps for API configuration deployment and change management. It also demonstrates Traefik Hub’s integration with API monitoring and observability visualization tools. The tutorial uses the following tools:&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;table style=&quot;border:none;border-collapse:collapse;table-layout:fixed;width:451.27559055118115pt&quot;&gt;&lt;colgroup&gt;&lt;col&gt;&lt;col&gt;&lt;/colgroup&gt;&lt;tbody&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;background-color:#cccccc;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.2;text-align: center;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Aspect&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;background-color:#cccccc;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.2;text-align: center;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:11pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Tool&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;API Management&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Traefik Hub&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Software platform&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Kubernetes cluster, running locally in &lt;/span&gt;&lt;a href=&quot;https://kind.sigs.k8s.io/?ref=containous.ghost.io&quot; style=&quot;text-decoration:none;&quot;&gt;&lt;span style=&quot;font-size:10pt;font-family:Arial,sans-serif;color:#1155cc;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;kind&lt;/span&gt;&lt;/a&gt;&lt;span style=&quot;font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt; or &lt;/span&gt;&lt;a href=&quot;https://k3d.io/?ref=containous.ghost.io&quot; style=&quot;text-decoration:none;&quot;&gt;&lt;span style=&quot;font-size:10pt;font-family:Arial,sans-serif;color:#1155cc;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;k3d&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;GitOps Deployment Tool&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;a href=&quot;https://fluxcd.io/?ref=containous.ghost.io&quot; style=&quot;text-decoration:none;&quot;&gt;&lt;span style=&quot;font-size:10pt;font-family:Arial,sans-serif;color:#1155cc;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;FluxCD&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Git repository&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.2;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;GitHub&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Metrics visualization&amp;nbsp;&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;a href=&quot;https://grafana.com/?ref=containous.ghost.io&quot; style=&quot;text-decoration:none;&quot;&gt;&lt;span style=&quot;font-size:10pt;font-family:Arial,sans-serif;color:#1155cc;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Grafana&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;tr style=&quot;height:0pt&quot;&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;span style=&quot;font-size:10pt;font-family:Arial,sans-serif;color:#000000;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;API monitoring and alerting&lt;/span&gt;&lt;/p&gt;&lt;/td&gt;&lt;td style=&quot;border-left:solid #000000 1pt;border-right:solid #000000 1pt;border-bottom:solid #000000 1pt;border-top:solid #000000 1pt;vertical-align:top;padding:5pt 5pt 5pt 5pt;overflow:hidden;overflow-wrap:break-word;&quot;&gt;&lt;p dir=&quot;ltr&quot; style=&quot;line-height:1.38;margin-top:0pt;margin-bottom:0pt;&quot;&gt;&lt;a href=&quot;https://prometheus.io/?ref=containous.ghost.io&quot; style=&quot;text-decoration:none;&quot;&gt;&lt;span style=&quot;font-size:10pt;font-family:Arial,sans-serif;color:#1155cc;background-color:transparent;font-weight:400;font-style:normal;font-variant:normal;text-decoration:underline;-webkit-text-decoration-skip:none;text-decoration-skip-ink:none;vertical-align:baseline;white-space:pre;white-space:pre-wrap;&quot;&gt;Prometheus&lt;/span&gt;&lt;/a&gt;&lt;/p&gt;&lt;/td&gt;&lt;/tr&gt;&lt;/tbody&gt;&lt;/table&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;To work on this project, request a &lt;a href=&quot;https://info.traefik.io/traefik-hub-signup?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik Hub trial here&lt;/u&gt;&lt;/a&gt;. Then follow the instructions on the&lt;a href=&quot;https://github.com/traefik-workshops/traefik-hub-gitops/blob/master/README.md?ref=containous.ghost.io&quot;&gt; &lt;u&gt;README&lt;/u&gt;&lt;/a&gt; page, clone the repository, and set up kind and FluxCD. In the tutorial, FluxCD watches your fork of the GitHub repository for changes. When a change to the master branch is detected, it deploys the latest version of the configuration file to the cluster. &lt;/p&gt;&lt;h2 id=&quot;summary&quot;&gt;Summary&amp;nbsp;&lt;/h2&gt;&lt;p&gt;In the &lt;a href=&quot;https://traefik.io/blog/top-five-policies-for-runtime-api-governance/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;part 1&lt;/a&gt;, we introduced five essential policies for effective runtime API governance:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;A developer-friendly API deployment process&lt;/li&gt;&lt;li&gt;Comprehensive and correct API documentation available to users&lt;/li&gt;&lt;li&gt;Secure both ingress and egress API traffic,&lt;/li&gt;&lt;li&gt;Clear API change impact analysis&lt;/li&gt;&lt;li&gt;Proactive API monitoring and deep observability.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;By establishing standards based on these policies, organizations can enforce runtime API governance more effectively. The primary objective of improving runtime API governance is to improve software delivery performance (as measured by the DORA metrics - DR, LTC, CFR, and MTTR). It also aims to enhance the API developer experience for both API producers and API consumers.&lt;/p&gt;&lt;p&gt;To successfully implement these runtime governance policies, it&apos;s crucial to leverage a modern API management platform, such as Traefik Hub, which emphasizes dynamic change management and runtime API governance at its core. As a Kubernetes native API management solution, Traefik Hub is optimized for end-to-end API delivery automation which improves operational efficiency. To learn more, get a &lt;a href=&quot;https://info.traefik.io/en/request-demo?ref=containous.ghost.io&quot;&gt;&lt;u&gt;personalized demo&lt;/u&gt;&lt;/a&gt; of Traefik Hub today.&amp;nbsp;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-190241936960&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;190241936960&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLL7QjdZ%2BE0aLDmqzFd9h6fZkzrDaNRuYEh0HCP95vWQBoGopm4sLX9zqx6fhFJV%2B9NuMKGHpQ3q2CmtysEpFCA1aTUbZzLJcPSXJf4QP%2Bp%2BbnRR3MX0dZ6d6wHcWMAqBugaMCZJSRi4X2lMSEXBigALtXwyb1%2FO06FMsM0HB0bdVFVdi11%2FQJLGPyJ9HbR4GVP9keUMaHvHhIG26yicpg%3D%3D&amp;webInteractiveContentId=190241936960&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Watch API Gateway Demo&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-190241936960.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;

&lt;!--kg-card-begin: html--&gt;
&lt;script id=&quot;tocOverrides&quot; type=&quot;application/json&quot;&gt;
  {
    &quot;1&quot;: &quot;Policy 1: Ensure Dev-friendly, traceable, &amp; easy to roll back approach&quot;,
    &quot;2&quot;: &quot;Policy 2: Make comprehensive API documentation available&quot;,
    &quot;3&quot;: &quot;Policy 3: Secure API traffic with AuthN &amp; AuthZ&quot;,
    &quot;4&quot;: &quot;Policy 4: Provide API change impact analysis&quot;,
    &quot;5&quot;: &quot;Policy 5: Provide proactive API monitoring and observability&quot;,
    &quot;6&quot;: &quot;Implementing with GitOps&quot;,
    &quot;7&quot;: &quot;Summary&quot;
  }
&lt;/script&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Top 5 Policies for Runtime API Governance to Ensure Your APIs are Consistent, Compliant, and Secure]]></title>
            <description><![CDATA[Given how crucial API governance is to an organization’s API strategy's success, let's explore five policies we recommend for API teams.]]></description>
            <link>https://traefik.io/top-five-policies-for-runtime-api-governance</link>
            <guid isPermaLink="true">https://traefik.io/top-five-policies-for-runtime-api-governance</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[Strategy]]></category>
            <dc:creator><![CDATA[Ikenna Nwaiwu]]></dc:creator>
            <pubDate>Wed, 18 Sep 2024 03:15:03 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/09/Traefik-Labs---Top-Five-Policies-for-Runtime-API-Governance.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/09/Traefik-Labs---Top-Five-Policies-for-Runtime-API-Governance.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/09/Traefik-Labs---Top-Five-Policies-for-Runtime-API-Governance.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/09/Traefik-Labs---Top-Five-Policies-for-Runtime-API-Governance.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/09/Traefik-Labs---Top-Five-Policies-for-Runtime-API-Governance.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;API governance provides a framework for defining policies and standards to ensure APIs are consistent, compliant, and secure. However, a common misconception about API governance is that it is solely about API design concerns, such as following a specified pagination pattern or ensuring API descriptions adhere to specific linting rules. While these design-time considerations are important, they’re only part of the picture. API governance is not just about defining design standards; it’s the backbone of ensuring that APIs are consistent, compliant, and secure across their entire lifecycle.&lt;/p&gt;&lt;p&gt;Overlooking runtime governance—like monitoring API performance, managing access controls, and enforcing security protocols—can lead to catastrophic failures in production. For instance, imagine a beautifully designed API that lacked proper runtime governance. Without robust security measures, attackers could exploit it, leading to data breaches and significant financial loss. Or consider an API with no runtime monitoring; a sudden surge in traffic could cause unanticipated outages, bringing down critical services and eroding user trust. Effective API governance addresses design and runtime concerns, ensuring that APIs meet standards during development and perform reliably and securely in the real world.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-190241936960&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;190241936960&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLL7QjdZ%2BE0aLDmqzFd9h6fZkzrDaNRuYEh0HCP95vWQBoGopm4sLX9zqx6fhFJV%2B9NuMKGHpQ3q2CmtysEpFCA1aTUbZzLJcPSXJf4QP%2Bp%2BbnRR3MX0dZ6d6wHcWMAqBugaMCZJSRi4X2lMSEXBigALtXwyb1%2FO06FMsM0HB0bdVFVdi11%2FQJLGPyJ9HbR4GVP9keUMaHvHhIG26yicpg%3D%3D&amp;webInteractiveContentId=190241936960&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Watch API Gateway Demo&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-190241936960.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;API management teams are responsible for defining and enforcing runtime API governance. Runtime API governance is the structured framework that manages and enforces policies for API deployment, security, observability, and lifecycle during their operational phase. It ensures APIs are deployed in a traceable and secure manner, with all configurations version-controlled and changes managed through a standardized process. This governance also mandates that live APIs be centrally documented, monitored for performance, and secured via gateways and firewalls. Overall, API governance provides a controlled environment to maintain API integrity, security, and efficiency in real-time operations.&lt;/p&gt;&lt;p&gt;Given how crucial API governance is to an organization’s API strategy&apos;s success, let&apos;s explore the topic further. In this post, we discuss five policies we recommend for API teams. They are listed below.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Policy 1: Use a developer-friendly, traceable, and easy-to-rollback approach for API deployments&lt;/li&gt;&lt;li&gt;Policy 2: Make comprehensive, correct API documentation available to users&lt;/li&gt;&lt;li&gt;Policy 3: Secure ingress and egress API traffic from malicious and unauthorized access&lt;/li&gt;&lt;li&gt;Policy 4: Provide precise API change impact analysis to minimize service failure and breaking changes&lt;/li&gt;&lt;li&gt;Policy 5: Provide proactive API monitoring and comprehensive, granular observability to reduce time to recovery.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Each policy has one or more actionable standards that teams should adopt to meet these criteria.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/09/Runtime-API-Governance.png&quot; class=&quot;kg-image&quot; alt=&quot;Runtime API Governance - 5 policies&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1841&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/09/Runtime-API-Governance.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/09/Runtime-API-Governance.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/09/Runtime-API-Governance.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/09/Runtime-API-Governance.png 2112w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Before we dive in, here is a note on the terminology we use in this post. By policy, we mean a high-level statement that requires compliance with one or more associated standards. A policy focuses on results and not implementation. On the other hand, by standards, we mean detailed mandatory, recommended, and optional rules used to gauge compliance with a given policy. Standards are specific and measurable, using capitalized keywords from &lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc2119?ref=containous.ghost.io&quot;&gt;&lt;u&gt;IETF RFC-2119&lt;/u&gt;&lt;/a&gt;&amp;nbsp; (‘MUST’, ‘MUST NOT’, ‘SHOULD’, ‘SHOULD NOT’, ‘MAY’ etc.) to indicate the level of requirement compliance.&amp;nbsp;&lt;/p&gt;&lt;h2 id=&quot;policy-1-use-a-developer-friendly-traceable-and-easy-to-rollback-approach-for-api-deployments&quot;&gt;Policy 1: Use a developer-friendly, traceable, and easy-to-rollback approach for API deployments&lt;/h2&gt;&lt;p&gt;The &lt;a href=&quot;https://dora.dev/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;DORA metrics&lt;/u&gt;&lt;/a&gt;, Deployment Frequency (DF), Lead Time for Change (LTC), Change Failure Rate (CFR), and Mean Time to Recovery (MTTR), are widely used to assess a software team&apos;s performance. However, there&apos;s now an increased emphasis on developer experience and productivity. &lt;a href=&quot;https://www.atlassian.com/software/compass/resources/state-of-developer-2024?ref=containous.ghost.io&quot;&gt;&lt;u&gt;The State of Developer Experience Report 2024&lt;/u&gt;&lt;/a&gt; revealed that &lt;strong&gt;69% of developers are losing 20% or more of their time due to inefficiencies at work&lt;/strong&gt;. The survey also explored the key areas that engineering leaders believe will enhance developer productivity and satisfaction. One of the top five areas identified was improving collaboration tooling.&amp;nbsp;&lt;/p&gt;&lt;p&gt;When making changes to your API, it&apos;s crucial to have a deployment process that allows for fast deployment, easy experimentation, and the ability to roll back failed deployments and restore service quickly. Such a deployment process requires an automated deployment system to minimize manual errors. A deployment process like this is a key enabler for reducing LTC and improving software delivery performance. Additionally, the deployment process should facilitate seamless collaboration between development and operations teams and provide robust access controls to determine who can make changes. Furthermore, the process should also maintain an auditable history for traceability and accountability.&lt;/p&gt;&lt;p&gt;Here are three standards that can help realize this policy.&lt;/p&gt;&lt;h3 id=&quot;governance-standard-11-all-api-descriptions-and-configuration-must-be-version-controlled-in-git&quot;&gt;Governance Standard 1.1: All API descriptions and configuration MUST be version-controlled in Git&lt;/h3&gt;&lt;p&gt;Managing API descriptions (like &lt;a href=&quot;https://learn.openapis.org/introduction.html?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OpenAPI&lt;/u&gt;&lt;/a&gt;) and API configuration files (like Kubernetes Ingress manifests) in Git enables a workflow that provides a clear audit trail, giving a history of what was changed, when, and who changed it. This traceability makes it easier to troubleshoot changes and roll back a change that introduces a failure with a single Git revert command. It also enables developers to edit the files using editors, CLIs, and any preferred tool.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Governance Metric: The ratio of the organization&apos;s APIs whose configuration is under version control.&amp;nbsp;&lt;/em&gt;&lt;/p&gt;&lt;h3 id=&quot;governance-standard-12-all-api-configuration-changes-must-follow-a-gitops-approach&quot;&gt;Governance Standard 1.2: All API configuration changes MUST follow a GitOps approach&lt;/h3&gt;&lt;p&gt;GitOps has emerged as the modern way to manage application and infrastructure deployments. As part of the GitOps approach, the application state is managed in Git repositories, which act as the source of truth for the system&apos;s desired state. Application state is stored using declarative descriptions in formats like YAML and JSON. When the configuration files are updated, continuous delivery tools synchronize the application&apos;s live state with the desired state.&amp;nbsp;&lt;/p&gt;&lt;p&gt;A GitOps approach allows for the fast delivery of API changes. Automated governance checks in the deployment pipeline enable organizations to achieve fast LTC and improved API consistency. Pull requests can be a lightweight governance technique to promote collaboration on changes. Teams following the GitOps approach disallow configuration changes from the application UI, eliminating error-prone TicketOps and ClickOps-based API deployments.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Governance Metric:&amp;nbsp;&lt;/em&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;Number of API configurations managed with GitOps.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;API config change review speed: The average time it takes from opening a config change PR to completing a review on it.&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;governance-standard-13-the-cicd-pipeline-must-act-as-the-primary-change-agent-driving-all-changes-feedback-and-collaboration-through-automated-processes-with-no-manual-steps-outside-the-pipeline&quot;&gt;Governance Standard 1.3: The CI/CD pipeline MUST act as the primary change agent, driving all changes, feedback, and collaboration through automated processes, with no manual steps outside the pipeline.&lt;/h3&gt;&lt;p&gt;A CI/CD pipeline should include all the necessary steps to validate and deploy working software to production. These steps involve compiling and packaging source code, conducting unit, integration, and acceptance tests, and deploying to progressively higher environments. In this way, the pipeline acts as both a central falsification mechanism and a primary change agent, ensuring that all changes, feedback, and collaboration are processed through automated workflows, with no manual intervention. If a new software change (that is, a commit) presents the hypothesis that “this change complies with standards and does not break working software,” then the CI/CD pipeline serves as a falsifiability test to evaluate that hypothesis.&lt;/p&gt;&lt;p&gt;By automating collaboration patterns, the pipeline ensures that feedback loops are consistent and transparent across teams. In this way, the CI/CD pipeline becomes not only an objective evaluator of changes but also a facilitator of cross-team feedback and collaboration. No manual steps should occur outside of the pipeline, ensuring that all changes and collaboration are fully automated and trackable. By automating previously manual processes, the pipeline evolves into an automated knowledge base that outlines the steps required to validate working software.&lt;/p&gt;&lt;p&gt;Such a pipeline has a profound effect on the team’s culture. Changing the pipeline changes the culture. Whenever a new standard is introduced, the team must first ask, “Is it possible to build this into the pipeline to solidify our expectations of collaboration from others?” The development team can refer to the pipeline logs when a build fails. The platform and infrastructure teams can use data produced by the pipeline to verify whether the software has been successfully deployed. The security team can review the security scan and testing results from the pipeline to validate a release candidate, and so on.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Governance Metric: % of changes validated through the pipeline vs. not&lt;/em&gt;&lt;/p&gt;&lt;h2 id=&quot;policy-2-make-comprehensive-and-correct-api-documentation-available-to-users&quot;&gt;Policy 2: Make comprehensive and correct API documentation available to users&lt;/h2&gt;&lt;p&gt;Large enterprises often struggle with API sprawl, which refers to the uncontrolled proliferation of APIs. API sprawl usually occurs when there is a lack of proper documentation and centralized API governance. Simply put, the organization may not know where all its APIs are located or what they are used for. API sprawl hinders integration and the exploitation of new business opportunities and poses a security risk. This risk can stem from Shadow APIs, which are used without the knowledge of the API governance teams and exist outside the established governance process. Additionally, the security risk can result from Zombie APIs that are no longer actively maintained, supported, or monitored but are still functional and accessible to users.&lt;/p&gt;&lt;p&gt;To combat API sprawl, a comprehensive API discovery mechanism should be implemented. API discovery is about making it easy for anyone in the organization to find any API they need. When people can locate the available APIs within an organization and understand what they do, it helps promote API consistency and reuse and reduces duplication of effort.&amp;nbsp;&lt;/p&gt;&lt;p&gt;API documentation documents (that is, API descriptions like OpenAPI) also have to be comprehensive and accurate. Nothing produces an annoying user experience, and reduces trust in API providers, like available but inaccurate API documentation. Therefore it is important that runtime platforms are able to validate that API documentation matches the runtime traffic.&amp;nbsp;&lt;/p&gt;&lt;h3 id=&quot;governance-standard-21-edge-technologies-should-detect-undocumented-apis&quot;&gt;Governance Standard 2.1: Edge technologies SHOULD detect undocumented APIs&lt;/h3&gt;&lt;p&gt;One way to manage API sprawl is to have policies and controls in place to detect undocumented and unmanaged APIs. Detecting APIs can be done by monitoring traffic at the edge. This detection can be one of the first steps for organizations suffering from API sprawl. From there, the organization can collate the documentation and store it in the internal API catalog, which leads to the next standard.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Apart from detecting undocumented APIs, runtime API platforms can also validate the correctness of API documentation by comparing it to run time traffic. This runtime validation mitigates API drift and is a security measure that identifies unexpected and potentially malicious API behaiviour.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Governance Metric:&amp;nbsp;&lt;/em&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;Number of unmanaged APIs detected by edge controls.&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;Number of API description document defects&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;governance-standard-22-all-live-apis-must-be-documented-in-a-central-api-catalog&quot;&gt;Governance Standard 2.2: All live APIs MUST be documented in a central API catalog&lt;/h3&gt;&lt;p&gt;As part of your API deployment pipeline, API documentation should be stored centrally in an internal API catalog or registry. Additionally, a selection of these APIs can be made available to partners or consumers through an external developer portal. The catalog should have a browseable UI for users, but it should also provide API registry features. That is, it should provide the API descriptions for programmatic access by machines.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Governance Metric: The number of APIs in the API catalog.&lt;/em&gt;&lt;/p&gt;&lt;h3 id=&quot;governance-standard-23-the-api-management-platform-should-support-self-service-onboarding&quot;&gt;Governance Standard 2.3: The API management platform SHOULD support self-service onboarding&lt;/h3&gt;&lt;p&gt;Along with making APIs discoverable, users should be able to request and obtain access to an API quickly without jumping through administrative hoops. Self-service onboarding of APIs by obtaining an API key through a developer portal is one of the runtime requirements for a great developer experience for API users.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Governance Metric: Number of APIs documented in a self-service developer portal.&lt;/em&gt;&lt;/p&gt;&lt;h2 id=&quot;policy-3-secure-ingress-and-egress-api-traffic-from-malicious-and-unauthorized-access&quot;&gt;Policy 3: Secure ingress and egress API traffic from malicious and unauthorized access&lt;/h2&gt;&lt;p&gt;The rapid growth of APIs and API traffic has exponentially expanded the attack surface for malicious actors. In its &lt;a href=&quot;https://content.salt.security/state-api-report.html?ref=containous.ghost.io&quot;&gt;&lt;u&gt;State of API Security Report 2024&lt;/u&gt;&lt;/a&gt;, Salt Security states that 95% of respondents in the research experienced security problems in production APIs, with 23% experiencing a breach. 25% of respondents also stated that one of their biggest concerns with their company’s API program was that it didn’t adequately address runtime or production API security.&lt;/p&gt;&lt;p&gt;It is crucial to protect APIs and invest in API runtime protection to guard against threats resulting from authentication weaknesses, sensitive data exposure, and account takeover or misuse. Public APIs can especially face a host of attack vectors—from SQL and code injection to cross-site scripting (XSS) and other OWASP Top 10 API vulnerabilities. They can also face bot attacks ranging from data scraping and intellectual property theft to account takeover and distributed denial of service (DDoS).&lt;/p&gt;&lt;p&gt;While organizations need to secure the APIs they build, they also consume APIs from third parties. These third-party APIs include APIs of external LLMs, CRM systems, payment processing platforms, messaging APIs, and more. However, the unsafe consumption of APIs is an &lt;a href=&quot;https://owasp.org/API-Security/editions/2023/en/0x11-t10/?ref=containous.ghost.io&quot;&gt;OWASP API Security Top 10 threat&lt;/a&gt;. It arises when an application, such as an API, consumes external, third-party APIs and blindly trusts the data they return without adequately validating or sanitizing the data it receives. This exposes the application to SQL injection, code injection attacks, or the exposure of sensitive information.&lt;/p&gt;&lt;p&gt;Here are a few standards you can implement to achieve this policy in practice.&amp;nbsp;&lt;/p&gt;&lt;h3 id=&quot;governance-standard-31-all-governed-apis-should-be-exposed-through-an-api-gateway-configured-with-appropriate-security-controls&quot;&gt;Governance Standard 3.1: All governed APIs SHOULD be exposed through an API gateway configured with appropriate security controls&lt;/h3&gt;&lt;p&gt;API gateways provide control points for runtime API governance, enabling governance teams to enforce common runtime standards such as authentication and authorization, granular API access, rate limiting and throttling, input validation, and monitoring. API gateways can also integrate with an identity provider (IdP) to provide user authentication and authorization.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Governance Metric:&amp;nbsp;&lt;/em&gt;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;em&gt;The number of governed APIs not exposed through the gateway&amp;nbsp;&lt;/em&gt;&lt;/li&gt;&lt;li&gt;&lt;em&gt;The number of APIs with insufficient authentication&lt;/em&gt;&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;governance-standard-32-all-public-apis-must-be-protected-by-a-waf&quot;&gt;Governance Standard 3.2: All public APIs MUST be protected by a WAF&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://traefik.io/blog/exploring-traefiks-waf-integration-and-how-to-make-it-23x-faster/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;A web application firewall (WAF)&lt;/u&gt;&lt;/a&gt; actively scans and filters incoming HTTP traffic. It blocks malicious API requests in real-time, typically using a set of threat signatures—pre-defined rules or patterns that identify malicious activity. In addition to maintaining a set of threat signatures, some WAFs use machine learning and behavioral analysis for pre-emptive protection, minimizing the need to update signatures when a new threat is identified continuously. WAFs may integrate with a global network of sensors to provide real-time threat intelligence on emerging threat patterns. WAFs can also provide detailed audit logs and reports required to meet various industry compliance requirements, such as PCI DSS, HIPAA, and GDPR.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Governance Metric: The number of public APIs unprotected by a WAF.&lt;/em&gt;&lt;/p&gt;&lt;h3 id=&quot;governance-standard-33-third-party-api-traffic-must-be-validated&quot;&gt;Governance Standard 3.3: Third-party API traffic MUST be validated&lt;/h3&gt;&lt;p&gt;While organizations may put a lot of thought into securing the APIs they provide externally (such as encrypting the traffic and routing it through a gateway), they may not pay as much attention to the security of the APIs they consume. That is, API requests to third parties. Developers &lt;a href=&quot;https://owasp.org/API-Security/editions/2023/en/0xaa-unsafe-consumption-of-apis/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;tend to trust the data from third-party APIs&lt;/u&gt;&lt;/a&gt; they consume, especially if they are provided by well-known companies. As such, they may adopt weaker security standards for API consumption.&lt;/p&gt;&lt;p&gt;A way to mitigate the security risk from third-party API traffic is to ensure third-party API traffic is encrypted, validated, and sanitized. Organizations can proxy the traffic through an API gateway that acts as an &lt;em&gt;egress API gateway&lt;/em&gt; (also called a consumption gateway or reverse gateway). In the egress gateway, teams can use strong API contracts from the third party to validate that the traffic complies with the types, formats, and constraints defined in the contract. The egress gateway can also be a control point for implementing robust error handling and preventing the exposure of sensitive data. This egress gateway pattern is illustrated in the figure below. &lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/09/Traefik-Labs----Egress-gateway-pattern.png&quot; class=&quot;kg-image&quot; alt=&quot; Egress Gateway Pattern&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1188&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/09/Traefik-Labs----Egress-gateway-pattern.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/09/Traefik-Labs----Egress-gateway-pattern.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/09/Traefik-Labs----Egress-gateway-pattern.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2024/09/Traefik-Labs----Egress-gateway-pattern.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;&lt;em&gt;Governance Metric: The number of unvalidated third-party APIs.&lt;/em&gt;&lt;/p&gt;&lt;h2 id=&quot;policy-4-provide-precise-api-change-impact-analysis-to-minimize-service-failure-and-breaking-changes&quot;&gt;Policy 4: Provide precise API change impact analysis to minimize service failure and breaking changes&amp;nbsp;&amp;nbsp;&lt;/h2&gt;&lt;p&gt;Change impact analysis involves identifying the potential consequences of a change, the components affected, and the possible risks associated with the change. It helps developers identify areas that can be affected by a change so that changes do not introduce system stability, performance, and security issues.&lt;/p&gt;&lt;p&gt;A way to analyze the impact of an API configuration deployment is to perform a static code analysis of the deployment artifacts. This analysis can help build a representation of a change and visualize its impact and any dependencies that may also be affected. For example, a static change analysis check may show that a rate limit change may affect not just one API but more. It may also show that changing a rate limit for a user group affects multiple groups. Such insights help reduce CFR.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Another way to analyze the impact of an API change is by detecting breaking changes, which can disrupt API users. A breaking change is a non-backward compatible change that forces API consumers to change their code to ensure their API integrations keep working.&lt;/p&gt;&lt;p&gt;Let’s look at two standards an organization can use to implement this runtime governance policy.&amp;nbsp;&lt;/p&gt;&lt;h3 id=&quot;governance-standard-41-all-api-configuration-changes-must-pass-static-checks&quot;&gt;Governance Standard 4.1: All API configuration changes must pass static checks&lt;/h3&gt;&lt;p&gt;One advantage of GitOps is that API configuration is stored in version control. This allows the team to run a static analysis on API configuration in the CI/CD pipeline. The analysis ensures that configuration files are valid and prevents any API misconfiguration from arising. It also helps the dev team understand the impact and scope of their changes on different APIs and API consumer groups.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Governance Metric: The ratio of the organization’s APIs whose configuration is under version control and change impact analysis checks.&lt;/em&gt;&lt;/p&gt;&lt;h3 id=&quot;governance-standard-42-all-apis-must-follow-the-recommended-versioning-scheme&quot;&gt;Governance Standard 4.2: All APIs must follow the recommended versioning scheme&lt;/h3&gt;&lt;p&gt;API versioning helps providers evolve an API and add new versions without breaking existing integrations. Many different versioning schemes exist for REST APIs (such as using the URI path, query parameters, custom headers, content type, and more). Your runtime infrastructure &lt;a href=&quot;https://traefik.io/blog/api-versioning-with-traefik-hub/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;must support the versioning mechanisms&lt;/u&gt;&lt;/a&gt; that best fit your requirements. As an API provider, defining and adopting a consistent versioning mechanism for your APIs gives users a clear migration path to a new version and helps you manage the lifecycle of the API. Be sure to run breaking change checks before deployments to ensure no breaking changes are introduced.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Governance Metric: The number of APIs that do not follow the versioning scheme.&lt;/em&gt;&lt;/p&gt;&lt;h2 id=&quot;policy-5-provide-proactive-api-monitoring-and-comprehensive-granular-observability-to-reduce-time-to-recovery&quot;&gt;Policy 5: Provide proactive API monitoring and comprehensive, granular observability to reduce time to recovery&lt;/h2&gt;&lt;p&gt;API monitoring involves tracking key metrics of API performance, such as response times and error rates. API Observability goes beyond monitoring a known set of API performance metrics. Observability allows API publishers to troubleshoot novel problems and understand what is happening inside an application. Observability is based on the ability of applications and infrastructure to emit telemetry signals: metrics, logs, and traces (MLT), which API publishers can analyze. API publishers can run distributed traces using telemetry, observing requests as they flow through a distributed system. This tracing gives them visibility into a system’s health and enables debugging the behavior of the production system.&amp;nbsp;&lt;/p&gt;&lt;p&gt;API observability should be based on open standards for instrumenting, generating, collecting, and exporting telemetry data. &lt;a href=&quot;https://traefik.io/blog/opentelemetry-traefik-hub/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Open observability standards like OpenTelemetry&lt;/u&gt;&lt;/a&gt; guarantee compatibility with various backend API analytics platforms and prevent vendor lock-in. They provide a way to decouple your observability strategy from your gateway strategy. Open standards also provide teams with a common language for describing cross-application interactions and troubleshooting.&lt;/p&gt;&lt;h3 id=&quot;governance-standard-51-teams-must-provide-dashboards-and-configure-alerts-to-monitor-api-request-rate-error-rate-and-request-latency&quot;&gt;Governance Standard 5.1: Teams MUST provide dashboards and configure alerts to monitor API request rate, error rate, and request latency&lt;/h3&gt;&lt;p&gt;Having runtime visibility into an API’s performance is essential not only for understanding its usage but also for incident mitigation. API publishers should capture API metrics on uptime, requests per minute, latency, and errors per minute. They should also set up monitoring dashboards and proactive alerts to make API performance information available for the teams that support them.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Governance Metric: The number of APIs not set up for monitoring.&lt;/em&gt;&lt;/p&gt;&lt;h3 id=&quot;governance-standard-52-apis-should-use-opentelemetry-to-publish-telemetry-data&quot;&gt;Governance Standard 5.2: APIs SHOULD use OpenTelemetry to publish telemetry data&lt;/h3&gt;&lt;p&gt;OpenTelemetry is a widely supported open-source observability framework that has become the &lt;em&gt;de facto&lt;/em&gt; standard for cloud-native applications. OpenTelemetry is built on rules and conventions known as the OpenTelemetry Protocol (OTLP). This protocol dictates how components related to OpenTelemetry exchange telemetry data between a source system that generates the data and its destination. The OTLP data model consists of traces, which describe the flow of execution; metrics, which offer statistical information on application performance; and logs, which provide detailed information on the application&apos;s state.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Governance Metric: The ratio of APIs instrumented with OpenTelemetry.&lt;/em&gt;&lt;/p&gt;&lt;h3 id=&quot;governance-standard-53-api-deployments-should-emit-telemetry-data&quot;&gt;Governance Standard 5.3: API deployments SHOULD emit telemetry data&lt;/h3&gt;&lt;p&gt;Application performance telemetry can be correlated with API deployment events to quickly visualize and investigate any API performance problems resulting from new deployments. Deployment event correlation with API runtime metrics is a powerful incident mitigation technique. This event correlation lets teams see if a deployment introduces problems and roll back the change.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Governance Metric: The ratio of API deployment pipelines that publish telemetry data.&lt;/em&gt;&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/09/Grafana-dashboard.png&quot; class=&quot;kg-image&quot; alt=&quot;Traefik Hub Grafana Dashboard&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1251&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/09/Grafana-dashboard.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/09/Grafana-dashboard.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/09/Grafana-dashboard.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2024/09/Grafana-dashboard.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Let&apos;s now explore how these runtime API governance policies are implemented in practice with Traefik Hub in &lt;a href=&quot;https://traefik.io/blog/implementing-runtime-api-governance-in-traefik-hub/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Part 2&lt;/a&gt; of this blog post.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-190241936960&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;190241936960&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLL7QjdZ%2BE0aLDmqzFd9h6fZkzrDaNRuYEh0HCP95vWQBoGopm4sLX9zqx6fhFJV%2B9NuMKGHpQ3q2CmtysEpFCA1aTUbZzLJcPSXJf4QP%2Bp%2BbnRR3MX0dZ6d6wHcWMAqBugaMCZJSRi4X2lMSEXBigALtXwyb1%2FO06FMsM0HB0bdVFVdi11%2FQJLGPyJ9HbR4GVP9keUMaHvHhIG26yicpg%3D%3D&amp;webInteractiveContentId=190241936960&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Watch API Gateway Demo&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-190241936960.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;

&lt;!--kg-card-begin: html--&gt;
&lt;script id=&quot;tocOverrides&quot; type=&quot;application/json&quot;&gt;
  {
    &quot;1&quot;: &quot;Policy 1: Ensure Dev-friendly, traceable, &amp; easy to roll back approach&quot;,
    &quot;2&quot;: &quot;Policy 2: Make comprehensive API documentation available&quot;,
    &quot;3&quot;: &quot;Policy 3: Secure API traffic with AuthN &amp; AuthZ&quot;,
    &quot;4&quot;: &quot;Policy 4: Provide API change impact analysis&quot;,
    &quot;5&quot;: &quot;Policy 5: Provide proactive API monitoring and observability&quot;
  }
&lt;/script&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Stop SQLi and XSS Attacks Easily with Traefik's WAF Integration]]></title>
            <description><![CDATA[The modern threat landscape requires a layered defense strategy. One key layer is the Web Application Firewall (WAF). Let's explore Traefik's WAF solutions.]]></description>
            <link>https://traefik.io/exploring-traefiks-waf-integration-and-how-to-make-it-23x-faster</link>
            <guid isPermaLink="true">https://traefik.io/exploring-traefiks-waf-integration-and-how-to-make-it-23x-faster</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <category><![CDATA[Guides]]></category>
            <dc:creator><![CDATA[Immánuel Fodor]]></dc:creator>
            <pubDate>Tue, 03 Sep 2024 18:25:03 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/09/waf-deep-dive-feature-image-no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/09/waf-deep-dive-feature-image-no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/09/waf-deep-dive-feature-image-no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/09/waf-deep-dive-feature-image-no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/09/waf-deep-dive-feature-image-no-copy.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;In today’s digital landscape, web applications and APIs are integral to virtually every aspect of modern life. From the familiar world of online shopping and social media to the behind-the-scenes functionality of mobile apps, government websites, and even entertainment platforms, APIs serve as the backbone of online interactions.&amp;nbsp;&lt;/p&gt;&lt;p&gt;However, this ubiquity also makes them prime targets for cyber threats, and securing web applications and the flow of data that keeps our world running is a critical concern for enterprises. Malicious actors constantly search for vulnerabilities to exploit, aiming to steal sensitive data, disrupt operations, or even inject malware into unsuspecting systems. The exponentially increasing threat landscape demands a robust defense strategy, and that&apos;s where Web Application Firewalls (WAFs) come into play.&lt;/p&gt;&lt;h2 id=&quot;the-role-of-wafs-in-api-security&quot;&gt;The Role of WAFs in API Security&lt;/h2&gt;&lt;p&gt;WAFs are the first line of defense for your web-based applications and their APIs. They stand guard, meticulously examining every incoming request, ensuring only authorized and legitimate data passes through. WAFs prevent attackers from submitting malicious or unwanted data to applications as well as from exfiltrating sensitive data. Here&apos;s how they safeguard your business from a variety of threats:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Known attack detection&lt;/strong&gt;: WAFs recognize the signatures of common attack strategies employed by cybercriminals. These include attempts to exploit vulnerabilities like SQL injection (SQLi), Cross-Site Scripting (XSS), file inclusions, code injection, session hijacking, and even metadata or error leaks. By identifying these known threats, WAFs can effectively block them before they can cause you any damage.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Beyond the obvious&lt;/strong&gt;: Malicious activity isn&apos;t always so straightforward. WAFs can also detect abnormal or malformed requests deviating from regular user behavior. These red flags could indicate a more sophisticated attack, allowing the WAF to take preventative measures.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This level of protection provided by WAFs is crucial. But it doesn&apos;t stop there. WAFs offer additional functionalities to enhance security further:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Virtual patching&lt;/strong&gt;: Sometimes, vulnerabilities in your system might be identified before a permanent fix is available. WAFs can provide temporary protection by blocking exploits targeting those vulnerabilities, effectively plugging the hole until a proper patch can be deployed.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Blocking malicious bots&lt;/strong&gt;: The internet is rampant with automated bots. While some bots serve legitimate purposes, others can be malicious, launching denial-of-service attacks or scraping valuable data. WAFs can help filter out these malicious bots, keeping your APIs safe from unwanted traffic.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Audit logging&lt;/strong&gt;: Staying informed about potential security breaches is critical. WAFs provide valuable audit logs detailing matched rules and anomaly scores, allowing your security team to analyze potential threats and take appropriate action.&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;beyond-technology-waf-as-a-legal-necessity&quot;&gt;Beyond Technology: WAF as a Legal Necessity&lt;/h2&gt;&lt;p&gt;In addition to protecting against cyber threats, WAFs are critical in helping enterprises meet various security standards and regulatory requirements. Many industries are governed by strict regulations that mandate specific security controls to protect sensitive data. Some of the most common standards that require or strongly recommend the use of WAFs include:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Payment Card Industry Data Security Standard v4&lt;/strong&gt;: Under PCI DSS 4.0, organizations must deploy an automated technical solution for public-facing web applications that continually detects and prevents web-based attacks. This is articulated in Requirement 6.4.2, which explicitly states that WAFs are no longer just a recommended practice but a must for compliance.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Federal Risk and Authorization Management Program&lt;/strong&gt;: FedRAMP requires stringent security controls for cloud service providers working with US federal agencies, including protections that WAFs can enhance.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Health Insurance Portability and Accountability Act&lt;/strong&gt;: While HIPAA does not explicitly require WAFs in the healthcare sector, it mandates the protection of electronic protected health information (ePHI), which can be supported by using WAFs to prevent unauthorized access and attacks.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;General Data Protection Regulation&lt;/strong&gt;: Although GDPR requires appropriate technical and organizational measures to protect personal data, it does not explicitly mention WAFs. However, organizations should use them as part of their overall security posture to reduce the risk of data breaches that could lead to significant fines under GDPR.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;To learn more about WAFs’ importance, check our detailed article: &lt;a href=&quot;https://traefik.io/blog/why-does-waf-matter-in-api-security/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Why does WAF matter in API security?&lt;/u&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;However, keep reading if you’re curious about how Traefik can help you effortlessly mitigate these threats while complying with security standards.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-177548019563&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:225px; margin-top: 40px; margin-bottom: 40px;&quot; data-hubspot-wrapper-cta-id=&quot;177548019563&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLI93DzVem4lVb%2B%2Br0iIihYUopHAiQv9Vi0LVkSbPfJZhsOLCemi0Fo3oc4m6zHyrkRaivzw703LTwqHq6%2F0oHzgc5YRBrULVANdMfE%2BqHmhJppObpIPg94eJoQOjnUK5faA25zSx%2BScaJObyAySR%2F8u7HYbSVHvjKk3I7ZINCfJhNaOkZXrl5q1c0HzuY4%3D&amp;webInteractiveContentId=177548019563&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Hub-cta&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-177548019563.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;a-free-and-open-source-waf-in-traefik-proxy&quot;&gt;A Free and Open-Source WAF in Traefik Proxy&lt;/h2&gt;&lt;p&gt;The release of &lt;a href=&quot;https://traefik.io/blog/traefik-3-deep-dive-into-wasm-support-with-coraza-waf-plugin/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik Proxy v3&lt;/u&gt;&lt;/a&gt; marked a significant leap forward in enhancing application security through the introduction of two groundbreaking features: WASM-based plugins and the Coraza Web Application Firewall (WAF).&lt;/p&gt;&lt;p&gt;WASM (WebAssembly), a binary instruction format designed for efficient execution in web browsers, has found its way into the world of proxy servers. Traefik v3 embraces this technology, enabling developers to compile code in virtually any language into a portable format that runs seamlessly within the proxy environment. This innovation opened the door for a new breed of plugins, offering greater flexibility.&lt;/p&gt;&lt;p&gt;Capitalizing on this breakthrough, Traefik v3 introduced its first WASM-based plugin, the &lt;a href=&quot;https://plugins.traefik.io/plugins/65f2aea146079255c9ffd1ec/coraza-waf?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Coraza Web Application Firewall&lt;/u&gt;&lt;/a&gt;. Coraza is an open-source, Go-based WAF that has quickly become a favored choice for security-conscious enterprises. It stands out for its performance and endorsement by &lt;a href=&quot;https://owasp.org/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OWASP&lt;/u&gt;&lt;/a&gt;, a globally recognized authority on web application security.&lt;/p&gt;&lt;p&gt;Coraza is built on best practices and standards that are widely recognized in the cybersecurity community:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;It understands and can enforce rules written in ModSecurity’s Security Language (seclang). This compatibility is a significant advantage for organizations that are already familiar with ModSecurity, as they can easily transition to using Coraza without needing to rewrite existing security rules.&lt;/li&gt;&lt;li&gt;Coraza comes equipped to enforce the OWASP Core Rule Set (CRS), a set of generic attack detection rules that protect against a wide range of threats. The CRS helps automate threat mitigation by blocking common attack vectors such as SQL injection, cross-site scripting (XSS), and other OWASP Top 10 vulnerabilities, saving valuable time and resources.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;The WASM-based Coraza WAF in Traefik is best suited for:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;One of the most compelling reasons to adopt a plugin-based WAF is to simply &lt;strong&gt;meet compliance requirements&lt;/strong&gt;. A plugin-based solution like Traefik Proxy simplifies the process of implementing and managing security controls.&lt;/li&gt;&lt;li&gt;Furthermore, a plugin-based WAF allows for &lt;strong&gt;granular protection&lt;/strong&gt;. You can selectively apply WAF rules to specific pages or applications, such as protecting sensitive administrative areas like /admin while leaving less critical pages unfiltered. This approach optimizes performance and reduces the risk of false positives.&lt;/li&gt;&lt;li&gt;A plugin-based WAF is particularly beneficial for organizations with &lt;strong&gt;internal applications&lt;/strong&gt; that experience low traffic volumes but may still contain sensitive information. With Traefik Proxy, you can easily deploy and manage WAF protection for these applications without compromising performance or budget.&lt;/li&gt;&lt;li&gt;Finally, &lt;strong&gt;filling in the cybersecurity skills gap&lt;/strong&gt; is a significant challenge for many organizations. Attracting and retaining skilled security personnel is expensive and time-consuming. A plugin-based WAF like Coraza in Traefik Proxy can help address this issue by providing user-friendly configuration and baked-in rule sets based on best practices. &lt;br&gt;&lt;br&gt;A 2023 study from the Information Systems Security Association (ISSA) indicates that &lt;a href=&quot;https://www.issa.org/new-research-from-techtargets-enterprise-strategy-group-and-the-issa-reveals-continuous-struggles-within-cybersecurity-professional-workforce/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;71% of companies&lt;/u&gt;&lt;/a&gt; report being severely affected by the shortage of skilled cybersecurity professionals. A plugin-based WAF can help bridge this gap by simplifying the management of API security.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Let’s illustrate how simple configuring the Coraza WAF WASM plugin is! Add this to your Traefik’s static configuration to load the plugin:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;experimental:
  plugins:
    coraza:
      moduleName: github.com/jcchavezs/coraza-http-wasm-traefik
      version: v0.2.2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then, leverage the WAF plugin in a middleware configuration. Using the Kubernetes CRD provider as an example:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: coraza-waf-block-admin-path
  namespace: apps
spec:
  plugin:
    coraza:
      directives:
       - SecRuleEngine On
       - SecDebugLog /dev/stdout
       - SecDebugLogLevel 9
       - SecRule REQUEST_URI &quot;@streq /admin&quot; &quot;id:101,phase:1,log,deny,status:403&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then accessing &lt;code&gt;/admin&lt;/code&gt; will return a 403 error as specified by the configuration rule, but everything else will return 200 as there is no matching rule. You’ll see its power even more when combining it with IP address checking, header-based filtering, or chaining any other middleware or plugin available for Traefik Proxy.&lt;/p&gt;
&lt;p&gt;The plugin-based WAF offers a versatile solution for a variety of use cases. Its ease of use but still powerful capabilities make it an essential tool for organizations looking to secure their web applications in a cost-effective and manageable way. But if needs evolve and you need to juice out as much filtering from your WAF as possible, you’ll need a bigger wall.&lt;/p&gt;&lt;h2 id=&quot;a-performance-optimized-waf-for-high-volume-apis-in-traefik-hub&quot;&gt;A Performance-Optimized WAF for High-Volume APIs in Traefik Hub&lt;/h2&gt;&lt;p&gt;Security needs become more complex as companies evolve and scale their digital infrastructure. While traditional solutions like application proxies serve many essential functions, they often fall short regarding advanced security requirements like advanced authentication and authorization. This is particularly true for organizations that rely on WAFs to protect their web applications and APIs. For them, transitioning from a simple application proxy to a more robust API Gateway, like Traefik Hub, can offer significant advantages, including enhanced security and vastly improved performance.&lt;/p&gt;&lt;p&gt;Traefik Hub represents the next step in the evolution of serving APIs, offering a comprehensive platform that goes beyond the capabilities of an application proxy. As a modern &lt;a href=&quot;https://traefik.io/traefik-hub-api-gateway/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;API Gateway&lt;/u&gt;&lt;/a&gt; and &lt;a href=&quot;https://traefik.io/traefik-hub/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;API Management&lt;/u&gt;&lt;/a&gt; solution, Traefik Hub is designed to handle the complex needs of today’s enterprises, providing advanced features such as its native WAF integration, which directly addresses the performance limitations many organizations face when using WAF plugins in a proxy setup.&lt;/p&gt;&lt;h3 id=&quot;the-need-for-a-high-performance-waf&quot;&gt;The Need for a High-Performance WAF&lt;/h3&gt;&lt;p&gt;One of the key challenges with using a WASM-based WAF plugin in Traefik Proxy is the performance overhead associated with the plugin. While WASM offers a flexible and portable way to deploy WAFs, it introduces certain inefficiencies that can impact the overall performance of the application:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Boot-time overhead&lt;/strong&gt;: Since WASM offers a secure runtime environment for plugins, the WASM binary associated with the WAF needs to be loaded at boot time for all middleware configurations. This loading process can delay application startup, especially in environments with complex configurations or high traffic demands.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Run-time overhead&lt;/strong&gt;: Once loaded, the WASM-based WAF analyzes each incoming request and outgoing response in real time. This continuous analysis introduces latency, which can slow down the request processing and reduce the application&apos;s overall efficiency. The performance overhead can become a significant bottleneck with high traffic volumes, limiting scalability and increasing operational costs.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;To address these performance challenges, Traefik Hub offers a native WAF integration that eliminates the inefficiencies associated with WASM-based plugins. &lt;strong&gt;The native integration in Traefik Hub results in a WAF that is 23 times faster than its WASM-based counterpart in Traefik Proxy&lt;/strong&gt;, providing a significant performance boost for your applications. You’ve read it correctly, not 23%, but 23 times!&lt;/p&gt;&lt;p&gt;The key to this performance improvement lies in the architecture of the native WAF integration in Traefik Hub. Unlike WASM-based plugins, the Coraza WAF codebase is natively integrated into Traefik Hub at compile time. Since no WASM runtime is involved in running the WAF, it eliminates the boot-time and run-time overhead associated with the plugin-based solution, resulting in faster startup times and more efficient request processing.&lt;/p&gt;&lt;h3 id=&quot;benefits-of-a-native-waf-integration&quot;&gt;Benefits of a Native WAF Integration&lt;/h3&gt;&lt;p&gt;The native integration of the Coraza WAF in Traefik Hub offers several significant benefits:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Further enhanced security&lt;/strong&gt;: The native WAF integration provides all the robust security features expected from Coraza, including protection against OWASP Top 10 vulnerabilities—but now with additional benefits. There’s no need to download the plugin during boot time, reducing the dependency on external components. This is perfect for air-gapped environments where external network access is restricted and enhances overall security by reducing the attack/risk surface.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Simplified management and configuration&lt;/strong&gt;: With native integration, managing security configurations becomes more straightforward, as there’s no need for static plugin configuration. Instead, security rules and configurations are handled only within the dynamic configuration.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Improved performance and scalability&lt;/strong&gt;: The native WAF integration allows for faster request processing, leading to better scalability. The same number of API Gateway replicas can handle more requests, improving resource utilization. This means you can run leaner infrastructure, serving the same or larger traffic with fewer resources, leading to lower operational costs.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Now, let’s see some proof of the claimed 23x performance improvement!&lt;/p&gt;&lt;h2 id=&quot;performance-benchmark-wasm-based-vs-native-waf&quot;&gt;Performance Benchmark: WASM-Based vs. Native WAF&lt;/h2&gt;&lt;p&gt;We conducted a performance benchmark to compare the efficiency of the native WAF integration in Traefik Hub against the WASM-based WAF plugin used in Traefik Proxy.&lt;/p&gt;&lt;p&gt;The benchmark results highlight the performance advantages of the native WAF in Traefik Hub:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;WASM-Based WAF&lt;/strong&gt;: In our test environment, the WASM-based WAF managed to handle &lt;strong&gt;29.04 requests per second&lt;/strong&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Native WAF&lt;/strong&gt;: Under the same conditions, the native WAF processed a remarkable &lt;strong&gt;683.34 requests per second&lt;/strong&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;This represents a &lt;strong&gt;23.53x performance improvement&lt;/strong&gt; when using the Coraza WAF natively in Traefik Hub!&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/09/Diagram@1x.png&quot; class=&quot;kg-image&quot; alt=&quot;Comparison between WAF integrations based on requests per second.&quot; loading=&quot;lazy&quot; width=&quot;1422&quot; height=&quot;1175&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/09/Diagram@1x.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/09/Diagram@1x.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/09/Diagram@1x.png 1422w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Comparison between WAF integrations based on requests per second.&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;These metrics were obtained in a controlled environment using a local k3s cluster with just one gateway replica. While this setup provides a clear comparison of the two WAF approaches under identical conditions, it’s important to recognize that this is just one snapshot of performance as it is based on a simplified scenario and doesn&apos;t fully capture the capabilities of either the WAF or the API Gateway in a complex environment. The actual observed performance could vary depending on several factors:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Scaling&lt;/strong&gt;: In production, the API Gateway and WAF would probably be deployed with multiple replicas to handle higher traffic volumes in production. The native WAF&apos;s performance benefits would likely become even more pronounced in such scaled environments.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Environment complexity&lt;/strong&gt;: The nature of the applications, the complexity of the enforced security rules, and the overall architecture will all influence the WAF&apos;s performance.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Resource allocation&lt;/strong&gt;: Differences in CPU, memory, and other resource allocations between environments can also impact the measured throughput.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;While the native WAF integration offers superior performance, it’s also essential to consider the trade-offs involved in running a WAF, even a high-performance one. Adding a WAF to your traffic processing pipeline introduces some overhead due to the need to inspect and potentially filter every request and response.&lt;/p&gt;&lt;p&gt;Our tests showed that disabling the WAF altogether could result in at least 4 times higher request throughput in Traefik Hub. This is an important consideration for organizations that must balance security with performance. For some applications or routes with lower security requirements, disabling the WAF might be acceptable to achieve higher performance.&lt;/p&gt;&lt;p&gt;However, for critical applications or sensitive data, the performance overhead introduced by a WAF is typically a necessary trade-off to ensure robust security. The key is to use the flexibility offered by Traefik Hub to apply the WAF selectively, protecting the most vulnerable parts of your infrastructure while maximizing performance where possible.&lt;/p&gt;&lt;h2 id=&quot;migration-from-wasm-based-waf-to-native-waf&quot;&gt;Migration from WASM-Based WAF to Native WAF&lt;/h2&gt;&lt;p&gt;If you’re currently using the WASM-based WAF in Traefik Proxy, migrating to the Native WAF in Traefik Hub is straightforward. Just like &lt;a href=&quot;https://traefik.io/blog/ingress-to-api-management-with-traefik/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;other transitions within the Traefik ecosystem&lt;/a&gt;, this migration is designed to be seamless, allowing you to enhance your security setup without disrupting your existing configurations or workflows.&lt;/p&gt;&lt;p&gt;Traefik Hub has been built with user experience in mind, ensuring that the migration is as painless as possible:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Remove static configuration&lt;/strong&gt;: One key difference in the migration process is removing the static configuration required by the WASM-based WAF (the first block in the code example shown previously). The Native WAF in Traefik Hub does not require any static configuration, making the setup simpler and less prone to errors.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Retain existing middleware configuration&lt;/strong&gt;: The rest of your WAF middleware configuration will remain the same, so you won’t need to make any changes to your existing setup!&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The migration process is quick and efficient, allowing you to immediately take advantage of the highly improved performance after upgrading from Traefik Proxy to Traefik Hub.&lt;/p&gt;&lt;p&gt;For more information on the WAF configuration options, check out the official &lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/reference/routing/http/middlewares/ref-coraza-waf?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;u&gt;Traefik Hub documentation&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;h2 id=&quot;wrapping-it-up&quot;&gt;Wrapping It Up&lt;/h2&gt;&lt;p&gt;If you’re looking for tools to enhance your web application security within the Traefik ecosystem, the availability of Coraza WAF as a WASM plugin represents a significant step forward. It’s free and open-source, and you can start experimenting with it today within Traefik Proxy with optional commercial support.&lt;/p&gt;&lt;p&gt;When you feel you want more, Traefik Hub is equipped to handle the most demanding security requirements, providing both protection and performance at scale with its native WAF integration. You can easily migrate from plugin-based to native WAF through a smooth transition with further simplified configuration, keeping all your security defenses in place while optimizing your resource utilization with an outstanding 23x performance improvement. Visit&amp;nbsp;our &lt;a href=&quot;https://traefik.io/solutions/waf/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;WAF solution page&lt;/a&gt;&amp;nbsp;to learn more.&lt;/p&gt;&lt;p&gt;Ready to see how Traefik Hub can elevate your security strategy? &lt;a href=&quot;https://info.traefik.io/en/request-demo?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Request a demo today&lt;/a&gt; and experience the benefits of a modern, high-performance API Gateway and Management solution.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-177548019563&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:225px; margin-top: 40px; margin-bottom: 40px;&quot; data-hubspot-wrapper-cta-id=&quot;177548019563&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLI93DzVem4lVb%2B%2Br0iIihYUopHAiQv9Vi0LVkSbPfJZhsOLCemi0Fo3oc4m6zHyrkRaivzw703LTwqHq6%2F0oHzgc5YRBrULVANdMfE%2BqHmhJppObpIPg94eJoQOjnUK5faA25zSx%2BScaJObyAySR%2F8u7HYbSVHvjKk3I7ZINCfJhNaOkZXrl5q1c0HzuY4%3D&amp;webInteractiveContentId=177548019563&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Hub-cta&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-177548019563.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[From Ingress to API Management: How Traefik OSS Grows with You]]></title>
            <description><![CDATA[This blog will guide you through the seamless migration journey across Traefik Labs' comprehensive product portfolio, highlighting the effortless upgrade process that bridges it together.]]></description>
            <link>https://traefik.io/ingress-to-api-management-with-traefik</link>
            <guid isPermaLink="true">https://traefik.io/ingress-to-api-management-with-traefik</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Immánuel Fodor]]></dc:creator>
            <pubDate>Fri, 23 Aug 2024 22:00:10 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/08/traefik-upgrade-journey-no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;traefik-upgrade-journey&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/08/traefik-upgrade-journey-no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/08/traefik-upgrade-journey-no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/08/traefik-upgrade-journey-no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/08/traefik-upgrade-journey-no-copy.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;In the ever-evolving landscape of cloud-native technologies, managing and securing microservices and APIs effectively is crucial for businesses of all sizes. But as your API ecosystem grows and matures, so do your needs.&lt;/p&gt;&lt;p&gt;This blog will guide you through the seamless migration journey across Traefik Labs&apos; comprehensive product portfolio, highlighting the effortless upgrade process that bridges it together. Starting from the foundational Traefik Proxy, you can now elevate your API operations to new heights with the Traefik Hub API Gateway and API Management tools.&amp;nbsp;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-169083275181&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top: 40px; margin-bottom: 40px;&quot; data-hubspot-wrapper-cta-id=&quot;169083275181&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLIeJTBKQ6RWvLVubYohvYQCORN6F690JvZvD3xzxGOdrFaJiI3QybAVM6mZZ72XfH5k0cYcZz0L8WMqP%2Boz1UGJZ6l9tV5KuMK%2FKw0fD5M6DUZ30TqJwnW7nrpILgtEg2NfaaQ%2FFhK%2FWjQEbulCRuyxpt8JBT%2FL54D6hWfd0Bhn%2BXgGTChXIwZfS8%2BHq3omz%2B0lkCnPaa2cy%2FOO81PL&amp;webInteractiveContentId=169083275181&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Square Image - 1200 x 1200(7)&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-169083275181.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;And while we’re going to get deep in the weeds, I hope you’ll see the beauty in its simplicity—upgrading Traefik is essentially a replacement of the running binary, making it a non-disruptive process.&lt;/p&gt;&lt;h2 id=&quot;start-with-us-and-grow-with-us&quot;&gt;Start With Us and Grow With Us&lt;/h2&gt;&lt;p&gt;Traefik Labs helps DevOps and Platform engineers throughout their cloud-native operations journeys, from a simple reverse proxy implementation to more advanced API lifecycle management capabilities.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/08/ezgif.com-crop-2-.gif&quot; class=&quot;kg-image&quot; alt=&quot;Key API Gateway &amp;amp; API Management capabilities that can be added to Traefik OSS.&quot; loading=&quot;lazy&quot; width=&quot;1002&quot; height=&quot;627&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/08/ezgif.com-crop-2-.gif 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/08/ezgif.com-crop-2-.gif 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/08/ezgif.com-crop-2-.gif 1002w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Key API Gateway &amp;amp; API Management capabilities that can be added to Traefik OSS.&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;Traefik Hub API Gateway and API Management are built on the open-source Traefik Proxy. They include all the capabilities and characteristics of Proxy and extend it with specialized features targeting APIs. Each level-up takes just a few seconds and is an additive extension, nothing is taken away. Existing configurations and the UX remain the same. Everything you appreciate about Traefik Proxy today is carried through into each upgrade stage.&lt;/p&gt;&lt;p&gt;Since Proxy can run in many different environments, our API Gateway and Management can also publish and secure APIs from every Kubernetes flavor, big cloud providers, Hashicorp Nomad, Docker Swarm, and many more. And all these solutions are based on declarative configuration and &lt;a href=&quot;https://devops.com/why-and-how-to-go-all-in-on-gitops/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;GitOps&lt;/u&gt;&lt;/a&gt;. Leverage labels, middlewares, plugins, and CRDs declaratively, no matter which product you run.&lt;/p&gt;&lt;p&gt;Let’s explore the three journey steps in detail with short hands-on labs, starting with the origins and significance of Traefik Proxy.&lt;/p&gt;&lt;h2 id=&quot;traefik-proxy-born-in-the-trenches&quot;&gt;Traefik Proxy: Born in The Trenches&lt;/h2&gt;&lt;p&gt;The Traefik story began in 2015, addressing a real-world production challenge encountered by Emile Vauge, the founder of Traefik Labs. Deploying thousands of microservices demanded a solution that transcended the limitations of existing reverse proxies at that time. Traditional solutions lacked the automation, service discovery, and scalability required for their environment. This led to the birth of Traefik Proxy, a solution designed from the ground up for the cloud-native world.&lt;/p&gt;&lt;p&gt;Traefik Proxy&apos;s focus on ease of use and powerful features quickly propelled it to global recognition. With over 3.3 billion downloads and a place among the top 15 most downloaded images on &lt;a href=&quot;https://hub.docker.com/_/traefik/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Docker Hub&lt;/u&gt;&lt;/a&gt;, Traefik has become a cornerstone of cloud-native infrastructure. This widespread adoption is a testament to its core strengths:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Simplicity&lt;/strong&gt;: Declarative configuration and GitOps integration streamline management and ensure infrastructure-as-code best practices.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Automation&lt;/strong&gt;: Automatic service discovery and certificate management eliminates manual configuration burdens by automatically detecting and configuring routes to newly deployed services, reducing administrative overhead.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Scalability&lt;/strong&gt;: Traefik scales effortlessly alongside your infrastructure, handling even the most demanding workloads.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Its versatility allows deployment on various cloud environments, including all Kubernetes distributions and other container orchestrators like Hashicorp Nomad or Docker Swarm, as well as bare metal and virtual machines, making it a comprehensive solution for all possible scenarios. Traefik serves as the gatekeeper of infrastructure, ensuring security, observability, and efficiency while scaling up to meet evolving needs.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Unsurprisingly, Traefik Proxy is a trusted solution for organizations of all sizes. Financial institutions, major retailers, and countless service providers leverage Traefik to manage mission-critical production workloads. It’s an ideal choice for:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Users prioritizing best-of-breed integrations&lt;/strong&gt;: Traefik Proxy integrates seamlessly with a vast ecosystem of tools and technologies, allowing you to leverage your existing infrastructure.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Environments requiring advanced network routing&lt;/strong&gt;: Traefik Proxy functions as a versatile application proxy, handling tasks like ingress control, reverse proxying, and load balancing. It also supports content caching and circuit breaking to enhance performance and resilience.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Organizations seeking a free and open-source solution&lt;/strong&gt;: Traefik Proxy is a fully open-source project allowing complete transparency and customization. However, you can also get &lt;a href=&quot;https://traefik.io/traefik/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;commercial support&lt;/u&gt;&lt;/a&gt; with 24/7 access to the Traefik Labs team.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Now that it’s clear what Traefik Proxy is and what it can do for you, let’s get our hands dirty and explore the journey of an API in the Traefik ecosystem.&lt;/p&gt;&lt;h2 id=&quot;journey-lab-1-deploy-a-weather-service-with-traefik-proxy&quot;&gt;Journey Lab 1: Deploy a Weather Service with Traefik Proxy&lt;/h2&gt;&lt;p&gt;In this blog post, apart from covering the obvious upgrade steps from Proxy to API Gateway then to API Management, we’ll follow the life of a simple Weather API for illustration purposes.&lt;/p&gt;&lt;p&gt;The first step with the open-source Traefik Proxy is where everybody gets familiar with the Traefik ecosystem. Let’s deploy a Proxy to simulate the Kubernetes-based infrastructure of our imaginary weather forecasting service provider company.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;helm repo add --force-update traefik https://traefik.github.io/charts
helm install traefik -n traefik --create-namespace --wait \
  --set ingressClass.enabled=false \
  --set ingressRoute.dashboard.enabled=true \
  --set ingressRoute.dashboard.matchRule=&apos;Host(`dashboard.docker.localhost`)&apos; \
  --set ingressRoute.dashboard.entryPoints={web} \
  --set ports.web.nodePort=30000 \
  --set ports.websecure.nodePort=30001 \
   traefik/traefik
&lt;/code&gt;&lt;/pre&gt;
&lt;div class=&quot;kg-card kg-callout-card kg-callout-card-blue&quot;&gt;&lt;div class=&quot;kg-callout-emoji&quot;&gt;💡&lt;/div&gt;&lt;div class=&quot;kg-callout-text&quot;&gt;Did you know that Traefik comes pre-packaged as the default Ingress Controller for Rancher&apos;s popular Kubernetes distribution? So, if you want to replay the commands in &lt;a href=&quot;https://k3d.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;k3d&lt;/u&gt;&lt;/a&gt;, you first need to create a cluster with the default Traefik Ingress Controller turned off:&lt;br&gt;&lt;br&gt;k3d cluster create traefik-hub --port 80:80@loadbalancer \&lt;br&gt; --port 443:443@loadbalancer --port 8000:8000@loadbalancer \&lt;br&gt; --k3s-arg &quot;--disable=traefik@server:0&quot;&lt;/div&gt;&lt;/div&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;Once it&apos;s installed, we can access the local Proxy dashboard: &lt;u&gt;http://dashboard.docker.localhost/&lt;/u&gt;&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/08/dashboard_proxy-1.png&quot; class=&quot;kg-image&quot; alt=&quot;Traefik Proxy Dashboard&quot; loading=&quot;lazy&quot; width=&quot;1526&quot; height=&quot;1049&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/08/dashboard_proxy-1.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/08/dashboard_proxy-1.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/08/dashboard_proxy-1.png 1526w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Traefik Proxy Dashboard&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;Now, it’s time to deploy the backend of the Weather API using a simple JSON server written in Go and expose it with an &lt;code&gt;IngressRoute&lt;/code&gt; object:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kubectl create namespace apps
kubectl apply -f https://raw.githubusercontent.com/traefik/hub/master/src/manifests/weather-app.yaml
kubectl apply -f https://raw.githubusercontent.com/traefik/hub/master/src/manifests/walkthrough/weather-app-no-auth.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The Traefik-native &lt;code&gt;IngressRoute&lt;/code&gt; is chosen here for simplicity. Still, Traefik Proxy can also expose applications using the old-standard Kubernetes &lt;code&gt;Ingress&lt;/code&gt; or Kubernetes’ new Gateway API &lt;code&gt;HTTPRoute&lt;/code&gt; objects. In fact, we have first-class production-ready &lt;a href=&quot;https://traefik.io/blog/getting-started-with-kubernetes-gateway-api-and-traefik/?ref=containous.ghost.io&quot;&gt;Kubernetes Gateway API&lt;/a&gt; support starting from Proxy v3.1!&lt;/p&gt;
&lt;p&gt;The Weather API can be accessed now; let’s try it using curl:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;$ curl http://walkthrough.docker.localhost/no-auth
{
  &quot;public&quot;: [
    { &quot;id&quot;: 1, &quot;city&quot;: &quot;GopherCity&quot;, &quot;weather&quot;: &quot;Moderate rain&quot; },
    { &quot;id&quot;: 2, &quot;city&quot;: &quot;City of Gophers&quot;, &quot;weather&quot;: &quot;Sunny&quot; },
    { &quot;id&quot;: 3, &quot;city&quot;: &quot;GopherRocks&quot;, &quot;weather&quot;: &quot;Cloudy&quot; }
  ]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Let’s not keep the API unsecured; protect it quickly with Basic Authentication. &lt;/p&gt;&lt;pre&gt;&lt;code&gt;kubectl apply -f https://raw.githubusercontent.com/traefik/hub/master/src/manifests/walkthrough/weather-app-basic-auth.yaml
# To generate the password, we used `htpasswd -nb foo bar | openssl base64`
# The endpoint path has also moved to /basic-auth
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc7617?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Basic Authentication&lt;/u&gt;&lt;/a&gt; was widely used in the early days of the web. However, it also has a security risk: credentials can be visible to any observer when using HTTP. Additionally, it uses hard-coded credentials, potentially giving more authorization than required for a specific use case.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Nowadays, those issues are addressed when using &lt;a href=&quot;https://datatracker.ietf.org/doc/html/rfc7519?ref=containous.ghost.io&quot;&gt;&lt;u&gt;JSON Web Tokens (JWT)&lt;/u&gt;&lt;/a&gt;. A JWT can be cryptographically verified; it detaches authentication from user credentials and has an issue and expiration date.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Even in this simple use case, this is how we reach the need for a &lt;a href=&quot;https://traefik.io/solutions/api-gateway/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;sophisticated API gateway&lt;/a&gt; that has enterprise-level authentication and authorization, among many other new capabilities, on top of Traefik Proxy.&lt;/p&gt;&lt;h2 id=&quot;traefik-hub-api-gateway-level-up-your-api-security&quot;&gt;Traefik Hub API Gateway: Level Up Your API Security&lt;/h2&gt;&lt;p&gt;While the exact percentage may vary depending on the data source and methodology, recent reports consistently show that API traffic makes up most of the web traffic. Imperva found that &lt;a href=&quot;https://www.imperva.com/resources/resource-library/reports/the-state-of-api-security-in-2024/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;71% of internet traffic in 2023&lt;/u&gt;&lt;/a&gt; was API calls. The &lt;em&gt;API Security and Management Report&lt;/em&gt; by Cloudflare indicates that APIs accounted for over &lt;a href=&quot;https://www.cloudflare.com/lp/api-security-report/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;57% of dynamic internet traffic&lt;/u&gt;&lt;/a&gt; processed by their platform in the past year. And according to Akamai, &lt;a href=&quot;https://www.akamai.com/newsroom/press-release/state-of-the-internet-security-retail-attacks-and-api-traffic?ref=containous.ghost.io&quot;&gt;&lt;u&gt;83% of web traffic&lt;/u&gt;&lt;/a&gt; consisted of API calls.&amp;nbsp;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-169083275181&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top: 40px; margin-bottom: 40px;&quot; data-hubspot-wrapper-cta-id=&quot;169083275181&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLIeJTBKQ6RWvLVubYohvYQCORN6F690JvZvD3xzxGOdrFaJiI3QybAVM6mZZ72XfH5k0cYcZz0L8WMqP%2Boz1UGJZ6l9tV5KuMK%2FKw0fD5M6DUZ30TqJwnW7nrpILgtEg2NfaaQ%2FFhK%2FWjQEbulCRuyxpt8JBT%2FL54D6hWfd0Bhn%2BXgGTChXIwZfS8%2BHq3omz%2B0lkCnPaa2cy%2FOO81PL&amp;webInteractiveContentId=169083275181&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Square Image - 1200 x 1200(7)&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-169083275181.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;The growth in API usage is driven by factors like digital transformation, cloud migration, and the rise of the microservice architecture. As APIs proliferate within organizations, the need for an API Gateway becomes increasingly critical, particularly as centralizing common functionalities to streamline operations and enhance security becomes a priority.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://traefik.io/traefik-hub-api-gateway/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik Hub API Gateway&lt;/u&gt;&lt;/a&gt; offers a natural evolution from Traefik Proxy, addressing this need by offering a range of enterprise-grade features specifically targeting the use case of exposing and securing APIs. Building upon the core strengths of Proxy, our API gateway equips you with a comprehensive suite of features designed to safeguard your APIs, including centralized authentication and authorization, distributed security features, and various vendor integrations.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Centralized security and control&lt;/strong&gt;: Imagine managing authentication and authorization across your entire API portfolio from a single location. Traefik Hub API Gateway empowers you to do just that. It supports a wide range of industry-standard protocols, like &lt;a href=&quot;https://traefik.io/glossary/openid-connect-everything-you-need-to-know/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;OIDC&lt;/a&gt; and OAuth token introspection, allowing you to define and enforce access policies for all your APIs centrally. This eliminates the need for repetitive implementation and configuration on the microservice level and ensures consistent security practices across your deployments.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Distributed security features&lt;/strong&gt;: Traefik Hub API Gateway takes security a step further by offering features like distributed rate limiting and distributed TLS certificates. Rate limiting ensures that no single API backend becomes overwhelmed by excessive traffic spikes. Rate-limiting quotas are distributed across your Gateway instances, providing a robust defense against denial-of-service attacks. Additionally, API Gateway integrates seamlessly with security tools like Let&apos;s Encrypt, allowing you to provision and manage TLS certificates for your APIs effortlessly, even in a distributed environment.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Enhanced vendor integrations&lt;/strong&gt;: The modern API landscape often involves a complex ecosystem of tools and services. Traefik Hub API Gateway recognizes this by integrating with leading security vendors like HashiCorp Vault and Azure Key Vault. This enables you to centralize your secrets management and leverage existing security infrastructure within your organization.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Native Web Application Firewall (WAF)&lt;/strong&gt;: In our API Gateway, the recently &lt;a href=&quot;https://traefik.io/blog/traefik-3-deep-dive-into-wasm-support-with-coraza-waf-plugin/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;announced&lt;/u&gt;&lt;/a&gt; Coraza WAF integration is implemented natively as part of the Gateway’s code base. The native integration provides more than 23 times (Yes, you read that right!) performance improvement over the plugin-based WAF available in Proxy.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Open-source with enterprise benefits&lt;/strong&gt;: Traefik Hub API Gateway retains the open-source core of Traefik Proxy, allowing you to benefit from continuous innovation from the whole open community. However, API Gateway also unlocks additional enterprise-grade features on top of Proxy without requiring excessive migration.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Upgrading from Traefik Proxy to API Gateway is a smooth and straightforward process. The seamless upgrade path protects your investment in existing configurations and ensures minimal disruption to your ongoing operations. All your current configurations can stay in place, and the API Gateway continues to honor them without any change. While building upon the foundation you&apos;ve established with Traefik Proxy, Traefik Hub API Gateway empowers you to manage access centrally, enforce security policies, and leverage industry-standard best practices.&lt;/p&gt;&lt;h2 id=&quot;journey-lab-2-upgrade-traefik-proxy-to-traefik-hub-api-gateway&quot;&gt;Journey Lab 2: Upgrade Traefik Proxy to Traefik Hub API Gateway&lt;/h2&gt;&lt;p&gt;Let’s continue the upgrade journey in this next lab, leveling up the Weather API game from Proxy to API Gateway capabilities. The upgrade is as easy as setting up a license key and executing a simple Helm chart upgrade. Fill out &lt;a href=&quot;https://info.traefik.io/try-traefik-api-gateway?ref=containous.ghost.io&quot;&gt;&lt;u&gt;this form&lt;/u&gt;&lt;/a&gt; to get a trial or production license key.&lt;/p&gt;&lt;p&gt;Now, open a terminal and save the license as a Kubernetes secret:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;kubectl create secret generic license \
  --namespace traefik \
  --from-literal=token=$TRAEFIK_HUB_TOKEN
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then, upgrade Traefik Proxy to Traefik Hub using the same Helm chart we used previously since Traefik Hub API Gateway is 100% compatible with Traefik Proxy v3 and up. All settings are retained; the only command you need to execute just replaces the running binary with a new one:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;helm upgrade traefik -n traefik --wait \
  --reuse-values \
  --set hub.token=license \
  --set image.registry=ghcr.io \
  --set image.repository=traefik/traefik-hub \
  --set image.tag=v3.2.0 \
   traefik/traefik
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The upgrade finishes in seconds, and the dashboard is still reachable (&lt;u&gt;http://dashboard.docker.localhost/&lt;/u&gt;), but it now shows the Traefik Hub API Gateway logo in the top left corner.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/08/dashboard-1.png&quot; class=&quot;kg-image&quot; alt=&quot;Traefik Hub API Gateway Dashboard&quot; loading=&quot;lazy&quot; width=&quot;1419&quot; height=&quot;875&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/08/dashboard-1.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/08/dashboard-1.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/08/dashboard-1.png 1419w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Traefik Hub API Gateway Dashboard&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;You can also confirm that Basic Auth is still here if you execute the same curl commands against the Weather API. All other configurations are also kept and served.&lt;/p&gt;&lt;p&gt;Let&apos;s secure the weather API with something more professional, such as an API Key, a new middleware to which the API Gateway gives access (among many other things).&lt;/p&gt;&lt;p&gt;First, we generate the hash of our API key: “&lt;code&gt;Let&apos;s use API Key with Traefik Hub&lt;/code&gt;”. Using the key hash in the configuration ensures that the key itself is not leaked, even if it is accidentally pushed to a public Git repository.&lt;/p&gt;
&lt;p&gt;&lt;code&gt;htpasswd -nbs &quot;&quot; &quot;Let&apos;s use API Key with Traefik Hub&quot; | cut -c 2-&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;We can now put it into the API Key middleware and apply it:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;kubectl apply -f https://raw.githubusercontent.com/traefik/hub/master/src/manifests/walkthrough/weather-app-apikey.yaml
# The API path has also been changed to reflect the use case better, now it’s /api-key
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Test it with the following commands:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# This call is not authorized =&amp;gt; 401
curl -I http://walkthrough.docker.localhost/api-key
# Let&apos;s set API Key
export API_KEY=$(echo -n &quot;Let&apos;s use API Key with Traefik Hub&quot; | base64)
# This call with the token is allowed =&amp;gt; 200
curl -I -H &quot;Authorization: Bearer $API_KEY&quot; \
  http://walkthrough.docker.localhost/api-key
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The API is now secured using an API key. The API gateway also allows you to handle users with an identity provider using OIDC or OAuth, apply distributed rate-limiting, and implement other enterprise-grade configurations.&lt;/p&gt;&lt;p&gt;But what if we want to cover &lt;em&gt;internal&lt;/em&gt; and &lt;em&gt;external&lt;/em&gt; use cases and protect the Weather API on the HTTP &lt;em&gt;verb&lt;/em&gt; level to apply further governance? Or test a new API version with part of the production traffic? And what about publishing all the managed APIs to a developer portal for easy discovery and reduced time to consumption?&lt;/p&gt;&lt;p&gt;You’ll need Traefik Hub with API Management features enabled to do this.&lt;/p&gt;&lt;h2 id=&quot;traefik-hub-api-management-granular-control-and-scalability&quot;&gt;Traefik Hub API Management: Granular Control and Scalability&lt;/h2&gt;&lt;p&gt;As your API ecosystem scales beyond security needs, managing APIs effectively becomes crucial. Building upon the robust features of Traefik Hub API Gateway, &lt;a href=&quot;https://traefik.io/traefik-hub/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik Hub API Management&lt;/u&gt;&lt;/a&gt; offers a powerful solution for comprehensive API lifecycle management, enabling you to govern your APIs, streamline development workflows, and cater to diverse API stakeholder needs.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;API governance for complete control&lt;/strong&gt;: Traefik Hub API Management provides a centralized platform for discovering, registering, and managing your entire API portfolio. Features like versioning and Kubernetes-native API labels and selectors allow you to organize your APIs logically and track their evolution over time. Additionally, API Management integrates with linters, which can automatically detect and flag potential errors within your API configurations before they impact production.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Advanced API security&lt;/strong&gt;: API Management takes API security to the next level by offering granular access control mechanisms. You can define fine-grained permissions for individual users or groups, ensuring only authorized users can access specific API resources and functionalities. Furthermore, API Management integrates with industry-standard authentication protocols, allowing you to leverage existing identity and access management (IAM) solutions within your organization.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;API monitoring and observability&lt;/strong&gt;: Deep insights into API health and performance are crucial for maintaining a reliable and scalable API landscape. Traefik Hub API Management integrates seamlessly with OpenTelemetry, providing comprehensive metrics and tracing capabilities. This allows you to gain real-time visibility into API traffic patterns, identify potential bottlenecks, proactively address any performance issues, and troubleshoot effectively.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;API Developer Portal&lt;/strong&gt;: Create one or more dedicated API Developer Portals easily! The portal is a central hub for developers to discover, understand, and interact with your APIs. The portal can house API documentation, interactive consoles for testing purposes, and clear instructions on integrating with your APIs. You can also fully customize it to your liking. By providing a user-friendly developer experience, API Management fosters adoption and streamlines the development process for your APIs&apos; internal and external consumers.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;As with the previous steps, upgrading from Traefik Proxy or API Gateway to API Management is a similarly simple process. It involves a license upgrade and a Helm chart update, minimizing disruption to ongoing operations. API Management inherits all the functionalities of both Proxy and Gateway, ensuring a smooth transition and continued access to their features. API Management also treats configuration through declarative CRDs as a first-class citizen, but also offers a user-friendly UI for managing API configurations and their current state.&lt;/p&gt;&lt;h2 id=&quot;journey-lab-3-upgrade-traefik-hub-api-gateway-to-api-management&quot;&gt;Journey Lab 3: Upgrade Traefik Hub API Gateway to API Management&lt;/h2&gt;&lt;p&gt;In our last lab, we assume that the license of the weather provider company has been updated with enabling API Management capabilities. After that, we enable the API Management feature on the Traefik Hub deployment using the same Helm chart:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;helm upgrade traefik -n traefik --wait \
  --reuse-values \
  --set hub.apimanagement.enabled=true \
  traefik/traefik
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The upgrade was as easy as executing this one command. The local dashboard is still reachable on &lt;u&gt;http://dashboard.docker.localhost/&lt;/u&gt; and we can also confirm that the API is still secured using an API Key.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Now, let&apos;s promote the Weather API Ingress to be a managed API with Traefik Hub API Management:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;kubectl apply -f https://raw.githubusercontent.com/traefik/hub/master/src/manifests/walkthrough/api.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;What did we just do here? &lt;/p&gt;&lt;ol&gt;
&lt;li&gt;The applied manifest has created a managed &lt;code&gt;API&lt;/code&gt; CRD describing the properties of the Weather API, like the location of its OpenAPI Specification.&lt;/li&gt;
&lt;li&gt;It also created an &lt;code&gt;API Access&lt;/code&gt; CRD describing who can access the Weather API.&lt;/li&gt;
&lt;li&gt;It removed the API Key authentication middleware, as we&apos;ll use Traefik Hub&apos;s built-in identity provider for user and credential management. The API is still secured, as we&apos;ll see it shortly.&lt;/li&gt;
&lt;li&gt;It added a simple one-line annotation on the existing &lt;code&gt;IngressRoute&lt;/code&gt; CRD with a link to the &lt;code&gt;API&lt;/code&gt; CRD created in the 1st point, effectively promoting the ingress to be now a Traefik Hub-managed API.&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;hub.traefik.io/api: walkthrough-weather-api # &amp;lt;= Link to the API using its name
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We can confirm this API is still not publicly exposed without authentication as it returns the expected 401 Unauthorized HTTP code. To be able to consume the API, let’s create a user for this API in the Traefik Hub API Management online dashboard.&lt;/p&gt;&lt;p&gt;The user created previously will connect to an API Portal to generate an API key, so let&apos;s deploy our API Portal!&lt;/p&gt;&lt;pre&gt;&lt;code&gt;kubectl apply -f https://raw.githubusercontent.com/traefik/hub/master/src/manifests/walkthrough/api-portal.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After a couple of seconds, the API Portal should be reachable on &lt;u&gt;http://api.walkthrough.docker.localhost&lt;/u&gt;. Log in with the admin user and create an API Key. The Weather API is now consumable with the new token, and it’s also visible on the portal:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;curl -H &quot;Authorization: Bearer $ADMIN_TOKEN&quot; \
  http://api.walkthrough.docker.localhost/weather 
&lt;/code&gt;&lt;/pre&gt;
&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/08/api-portal-with-oas.png&quot; class=&quot;kg-image&quot; alt=&quot;Traefik Hub API Portal&quot; loading=&quot;lazy&quot; width=&quot;1904&quot; height=&quot;883&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/08/api-portal-with-oas.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/08/api-portal-with-oas.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/08/api-portal-with-oas.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/08/api-portal-with-oas.png 1904w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Traefik Hub API Portal&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;The Weather API has documentation built from the OpenAPI specification, and the API can also be interactively tested right on the Portal with the try-out functionality.&lt;/p&gt;&lt;p&gt;And that&apos;s it! You’ve now seen the very short and quick upgrade steps of each tool and also got a glimpse of using them.&lt;/p&gt;&lt;h2 id=&quot;wrapping-it-up&quot;&gt;Wrapping It Up&lt;/h2&gt;&lt;p&gt;The seamless migration journey across Traefik Labs&apos; products ensures that everything built remains intact while adding new capabilities as needed. Investing time and resources into Traefik Proxy, Traefik Hub API Gateway, or API Management is a smart choice for businesses looking to future-proof their infrastructure. There is no rip-and-replace—just an in-place upgrade!&amp;nbsp;&lt;/p&gt;&lt;p&gt;Consider Traefik’s cloud-native, fully declarative, and GitOps-driven approach to ensure efficient and effective API operations in your organization. The functionally additive upgrade path, robust feature set, and ease of management make it the best choice for handling the complexities of modern cloud-native environments. Scale your operations confidently with Traefik as your business grows and evolves.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-169083275181&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top: 40px; margin-bottom: 40px;&quot; data-hubspot-wrapper-cta-id=&quot;169083275181&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLIeJTBKQ6RWvLVubYohvYQCORN6F690JvZvD3xzxGOdrFaJiI3QybAVM6mZZ72XfH5k0cYcZz0L8WMqP%2Boz1UGJZ6l9tV5KuMK%2FKw0fD5M6DUZ30TqJwnW7nrpILgtEg2NfaaQ%2FFhK%2FWjQEbulCRuyxpt8JBT%2FL54D6hWfd0Bhn%2BXgGTChXIwZfS8%2BHq3omz%2B0lkCnPaa2cy%2FOO81PL&amp;webInteractiveContentId=169083275181&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Square Image - 1200 x 1200(7)&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-169083275181.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[How the Latest API Gateway Innovations Are Reshaping Operational Efficiency and Error Metrics]]></title>
            <description><![CDATA[Innovations in modern API gateways are reshaping DevOps efficiency and error metrics. Find out how GitOps and comprehensive observability are changing the game.]]></description>
            <link>https://traefik.io/how-the-latest-api-gateway-innovations-are-reshaping-devops-efficiency-and-error-metrics</link>
            <guid isPermaLink="true">https://traefik.io/how-the-latest-api-gateway-innovations-are-reshaping-devops-efficiency-and-error-metrics</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[GitOps]]></category>
            <category><![CDATA[Observability]]></category>
            <category><![CDATA[Strategy]]></category>
            <dc:creator><![CDATA[Immánuel Fodor]]></dc:creator>
            <pubDate>Thu, 15 Aug 2024 23:04:24 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/08/api-gateway-innovations-reshaping-error-metrics-no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/08/api-gateway-innovations-reshaping-error-metrics-no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/08/api-gateway-innovations-reshaping-error-metrics-no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/08/api-gateway-innovations-reshaping-error-metrics-no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/08/api-gateway-innovations-reshaping-error-metrics-no-copy.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Downtime is not just an inconvenience—it can be a critical threat to business operations. The cost of downtime extends far beyond immediate financial losses; it can damage your company&apos;s reputation, erode customer trust, and, in some industries, such as healthcare and chemical processing, can lead to dangerous situations.&lt;/p&gt;&lt;p&gt;Modern, declarative API gateways are pivotal in managing the complexities of microservices architectures. They provide GitOps capabilities that reduce human error, allow for immediate rollback to a stable state, and make things repeatable and scalable even for a small staff. They can also provide advanced observability and monitoring capabilities, automating key tasks and offering real-time insights that let DevOps teams quickly identify and resolve issues.&amp;nbsp;&lt;/p&gt;&lt;p&gt;And as you already know, issues are going to happen. The question is how much they’ll cost you.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-190241936960&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;190241936960&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLL7QjdZ%2BE0aLDmqzFd9h6fZkzrDaNRuYEh0HCP95vWQBoGopm4sLX9zqx6fhFJV%2B9NuMKGHpQ3q2CmtysEpFCA1aTUbZzLJcPSXJf4QP%2Bp%2BbnRR3MX0dZ6d6wHcWMAqBugaMCZJSRi4X2lMSEXBigALtXwyb1%2FO06FMsM0HB0bdVFVdi11%2FQJLGPyJ9HbR4GVP9keUMaHvHhIG26yicpg%3D%3D&amp;webInteractiveContentId=190241936960&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Watch API Gateway Demo&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-190241936960.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;the-cost-of-downtime&quot;&gt;The Cost of Downtime&lt;/h2&gt;&lt;p&gt;Downtime can affect everything from financial performance to customer trust, so understanding and minimizing downtime is crucial for maintaining operational efficiency and ensuring continuous service availability. To get a tangible feel for downtime costs, we can look at the &lt;a href=&quot;https://www.atlassian.com/incident-management/kpis/common-metrics?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Mean Time to Recovery (MTTR)&lt;/a&gt; and the associated cost per minute of a system that’s not operating properly. In some situations, even brief downtimes are unacceptable, showing the business benefits of implementing robust observability and monitoring tools combined with GitOps to mitigate these risks.&lt;/p&gt;&lt;h3 id=&quot;mean-time-to-recovery-mttr&quot;&gt;Mean Time to Recovery (MTTR)&lt;/h3&gt;&lt;p&gt;MTTR is a critical metric in DevOps, representing the average time it takes to restore a system to operational status after a failure. A lower MTTR indicates a more resilient and efficient system, which is essential for minimizing downtime. Quick failure recovery can make a significant difference in environments where uptime is paramount, such as healthcare or financial services. Rapid issue resolution reduces the impact on users and helps maintain trust in the system&apos;s reliability.&lt;/p&gt;&lt;h3 id=&quot;cost-per-minute-of-downtime&quot;&gt;Cost per Minute of Downtime&lt;/h3&gt;&lt;p&gt;The financial impact of downtime can be staggering. According to a &lt;a href=&quot;https://www.atlassian.com/incident-management/kpis/cost-of-downtime?ref=containous.ghost.io&quot;&gt;&lt;u&gt;2016 study&lt;/u&gt;&lt;/a&gt;, the average cost of IT downtime was as much as $9,000 per minute, which translates to $540,000 per hour—and that was almost 10 years ago. (You can get a visceral sense of how quickly this adds up &lt;a href=&quot;https://www.gremlin.com/ecommerce-cost-of-downtime?ref=containous.ghost.io&quot;&gt;&lt;u&gt;here&lt;/u&gt;&lt;/a&gt;.) Even for smaller businesses, where the cost per minute can be in the hundreds of dollars rather than thousands, it’s still significant.&amp;nbsp;&lt;/p&gt;&lt;p&gt;The costs can be even higher in industries with critical dependencies on IT systems, such as healthcare, finance, and telecommunications. For example, when a bug turned the automatic update of CrowdStrike’s Falcon antivirus software into a catastrophic event, many hospitals found themselves unable to access diagnostic systems or even patient registration. All in all, it &lt;a href=&quot;https://www.hcinnovationgroup.com/cybersecurity/news/55132837/194b-in-expected-healthcare-losses-due-to-crowdstrike-disruption?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;cost healthcare providers an estimated $1.94 billion&lt;/a&gt;, with an average of 64.6 million for each provider. &lt;/p&gt;&lt;p&gt;Even more important, however, is that when a hospital’s systems go down, critical care might be delayed, putting lives at risk. Therefore, minimizing downtime may not be just a technical or financial challenge, and instead may be far more high-stakes.&lt;/p&gt;&lt;p&gt;While a modern API gateway couldn&apos;t have helped companies avoid the CrowdStrike outage, they can be pinnacle in preventing other outages.&lt;/p&gt;&lt;h2 id=&quot;the-api-gateway-innovations-reshaping-incident-prevention-and-mitigation&quot;&gt;The API Gateway Innovations Reshaping Incident Prevention and Mitigation&lt;/h2&gt;&lt;p&gt;The combination of GitOps and comprehensive observability is revolutionizing the way we manage and monitor API gateways.&amp;nbsp;&lt;/p&gt;&lt;p&gt;GitOps leverages version control and automation to bolster the reliability, security, and scalability of these critical components, ensuring seamless, error-free operations. By defining infrastructure and API configurations declaratively and managing them in version-controlled repositories, GitOps enables rapid, consistent deployments while enhancing audit trails and compliance tracking.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Meanwhile, comprehensive observability extends monitoring beyond traditional methods, providing real-time insights through logs, metrics, and traces. This holistic approach enables teams to proactively identify and address potential issues, minimizing downtime and maintaining high system performance. Together, GitOps and observability form a powerful duo, empowering organizations to optimize their API gateway operations in today&apos;s demanding digital landscape.&lt;/p&gt;&lt;h3 id=&quot;the-gitops-revolution&quot;&gt;The GitOps Revolution&lt;/h3&gt;&lt;p&gt;GitOps is crucial for modern API gateways because it leverages the principles of &lt;a href=&quot;https://traefik.io/glossary/gitops-101/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;version control and automation&lt;/u&gt;&lt;/a&gt; to enhance reliability, security, and scalability. Because API gateways act as the gatekeepers for all incoming and outgoing traffic in microservices architectures, the need for robust, error-free, and agile operations is paramount. GitOps addresses these needs by providing a framework where infrastructure and API configurations are defined declaratively and managed in version-controlled repositories.&amp;nbsp;&lt;/p&gt;&lt;p&gt;This approach not only facilitates rapid, consistent deployments but also significantly improves audit trails and compliance tracking. By automating deployment processes, GitOps reduces human error and increases operational efficiency, making it an essential strategy for organizations looking to optimize team performance in a cloud-native environment.&lt;/p&gt;&lt;p&gt;But as we all know, errors will happen. With a GitOps strategy, code can be instantly rolled back to a stable state, creating the time necessary to diagnose and remedy issues without impacting stakeholders. For this reason, it’s important to choose an &lt;a href=&quot;https://traefik.io/traefik-hub-api-gateway/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;API gateway that supports GitOps end-to-end&lt;/a&gt;.&lt;/p&gt;&lt;h3 id=&quot;the-advent-of-opentelemetry-and-comprehensive-observability&quot;&gt;The Advent of OpenTelemetry and Comprehensive Observability&lt;/h3&gt;&lt;p&gt;When it comes to mitigating the effects of downtime, in addition to GitOps, your best friend is “comprehensive observability,” or the ability to fully monitor and understand the state and behavior of a system across its entire stack by collecting, analyzing, and visualizing data from its various components. This concept extends beyond traditional monitoring to include three key types of telemetry data:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Logs&lt;/strong&gt;: timestamped records of events&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Metrics&lt;/strong&gt;: quantitative data that measure the performance and health of the system&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Traces&lt;/strong&gt;: which track the journey of requests as they flow through the various components of the system&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;By implementing comprehensive observability solutions, your organization can gain real-time insights into your systems&apos; health and performance. This proactive approach enables teams to identify and address potential issues before they escalate into significant problems, minimizing downtime and associated costs and, using GitOps, to roll back if necessary.&lt;/p&gt;&lt;p&gt;Observability tools that can monitor your API gateway offer detailed metrics, logs, and tracing capabilities that help DevOps teams maintain high system performance. These tools allow for monitoring key performance indicators (KPIs) such as request latency, error rates, and system throughput. By closely watching these metrics, teams can quickly detect anomalies and take corrective actions, ensuring systems remain operational and performant.&lt;/p&gt;&lt;p&gt;One thing that makes this kind of comprehensive observability possible is the advent of &lt;a href=&quot;https://opentelemetry.io/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;OpenTelemetry&lt;/a&gt;, an open-source standard for observability. Any tool that reads and/or writes it can share information with any other tool that understands it. By choosing an API Gateway that supports OpenTelemetry, you’re providing yourself with much greater possibilities.&lt;/p&gt;&lt;p&gt;As you might imagine, the observability strategies you have available to you are going to depend on the richness of logs, metrics, and traces your API gateway supports.&lt;/p&gt;&lt;h2 id=&quot;how-to-reduce-the-impact-of-downtime&quot;&gt;How to Reduce the Impact of Downtime&lt;/h2&gt;&lt;p&gt;While businesses can implement several measures to minimize downtime, advanced observability and monitoring strategies are essential for proactively managing system health. This includes a combination of general best practices, GitOps, and specific observability-focused strategies to help you reduce downtime. DevOps teams can ensure higher system availability and performance by leveraging tools, such as their API gateway, for real-time monitoring, detailed metrics, and distributed tracing.&lt;/p&gt;&lt;h3 id=&quot;generic-measures-for-avoiding-downtime&quot;&gt;Generic Measures for Avoiding Downtime&lt;/h3&gt;&lt;p&gt;While specific strategies vary, there are several generic measures are fundamental to the cause:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Regular System Updates and Maintenance&lt;/strong&gt;: Regular maintenance schedules help ensure that all components function optimally and that known vulnerabilities are addressed promptly.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Robust Disaster Recovery Plans&lt;/strong&gt;: This plan should include regular backups, clear recovery procedures, and periodic testing to ensure that systems can be quickly restored in case of a failure.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Redundant Systems and Failovers&lt;/strong&gt;: Implementing redundancy at various levels—such as servers, storage, and network connections—ensures that a failure in one component does not bring down the entire system. Failover mechanisms should be in place to automatically switch to backup systems if a primary system fails.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Now let’s explore the more innovative measures.&lt;/p&gt;&lt;h3 id=&quot;gitops-focused-strategies&quot;&gt;GitOps-Focused Strategies&lt;/h3&gt;&lt;p&gt;GitOps, by integrating core practices of DevOps with Git-based workflows, offers several strategic approaches to enhancing reliability, preventing downtime, and accelerating recovery in system operations. They include:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Automated Rollbacks and Progressive Delivery: &lt;/strong&gt;It takes a bit of extra setup, but by using automated rollbacks, teams can rapidly address issues without manual intervention, drastically reducing potential downtime. Furthermore, progressive delivery techniques such as canary releases or blue-green deployments can be managed through GitOps workflows, allowing for a small subset of users to be exposed to new changes, limiting the impact of potential failures and ensuring that any critical issues can be identified and rectified before they affect the entire system.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Declarative Configuration Management: &lt;/strong&gt;With GitOps, all system configurations are defined declaratively and stored in version control systems. This approach ensures that the configurations are reproducible and consistent across all environments, which eliminates common causes of downtime such as configuration drift or manual errors in setup. If a new configuration update causes a problem, teams can quickly revert to a previous configuration, ensuring continuous system availability.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Continuous Validation and Testing: &lt;/strong&gt;Continuous integration tools integrated within GitOps workflows can automatically trigger tests and validation checks every time a change is made to the repository. This means that code and configurations are continuously tested, and only changes that pass predefined checks are deployed to production environments. This reduces the risk of introducing errors that can lead to downtime, ensuring that only stable, thoroughly tested updates are released.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Collaboration and Quick Response: &lt;/strong&gt;GitOps fosters a culture of collaboration by ensuring that all changes are visible and traceable through the Git platform. Transparency helps teams to quickly identify and respond to issues, minimizing response times and reducing downtime. Additionally, having a centralized platform for all operations simplifies communication among team members, which is critical during incident response.&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;observability-focused-strategies&quot;&gt;Observability-Focused Strategies&lt;/h3&gt;&lt;p&gt;Observability is key to minimizing downtime. It involves monitoring systems comprehensively to proactively detect and address issues:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Real-time Monitoring&lt;/strong&gt;: Using an API gateway with a monitoring dashboard, such as Grafana, for continuous health checks and performance monitoring ensures that any deviations from normal operation are immediately detected.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Detailed Metrics and Logging&lt;/strong&gt;: For example, monitoring CPU usage, memory consumption, and network latency helps identify performance bottlenecks. Logs offer a detailed record of system activities, which is useful for diagnosing and troubleshooting issues.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Distributed Tracing&lt;/strong&gt;: Some API gateways (e.g., Traefik’s) offer distributed tracing capabilities for tracking request flowing across various services. Tracing provides a holistic view of how different components interact, making pinpointing and addressing issues easier.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Proactive Issue Resolution&lt;/strong&gt;: For example, if an observability tool indicates an increase in error rates, the team can investigate and address the underlying cause before it affects users.&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;capabilities-of-an-effective-observability-solution&quot;&gt;Capabilities of an Effective Observability Solution&lt;/h3&gt;&lt;p&gt;An effective observability solution should provide the following capabilities:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;API Gateway Status Monitoring&lt;/strong&gt;: Most API gateways provide status monitoring and alerts, enabling teams to detect and address issues with the gateway itself.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Tracing and OpenTelemetry&lt;/strong&gt;: Tracing helps in understanding the flow of requests through the system. For example, Traefik supports OpenTelemetry, an open-source format for observability, enabling integration with any monitoring tool that supports it. This standardization allows for real-time troubleshooting and comprehensive system analysis.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Distributed Tracing&lt;/strong&gt;: Distributed tracing is essential for understanding interactions across different services. Traefik, for example, &lt;a href=&quot;https://traefik.io/blog/opentelemetry-traefik-hub/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;helps tracing tools make correlations between various sources&lt;/a&gt;, such as the gateway, database, and microservices, providing a detailed view of the request lifecycle, and helping teams understand performance issues and optimize the system. The end result is greater transparency rather than the proverbial “black box.”&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;It’s important to realize that the level of observability in your API Gateway is more than just a formality. Not all gateways are created equal, and your ability to avoid and quickly bounce back from downtime will be directly related to your observability capabilities.&lt;/p&gt;&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;&lt;p&gt;In today’s fast-paced and highly competitive digital landscape, minimizing downtime and enhancing system performance are critical to business success. Through the use of GitOps and integration with monitoring and observability capabilities, modern API Gateways provide robust solutions to these challenges. By reducing MTTR and its associated costs and leveraging real-time insights, organizations can swiftly address issues, ensuring continuous service availability and optimal performance.&lt;/p&gt;&lt;h2 id=&quot;additional-resources&quot;&gt;Additional Resources&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Traefik’s Blog on Observability and Tracing&lt;/strong&gt;: Visit &lt;a href=&quot;https://traefik.io/blog/observing-kubernetes-ingress-traffic-using-metrics/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik’s blog&lt;/u&gt;&lt;/a&gt; to learn more about how its observability features can enhance your API gateway management.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;DORA Reports and Metrics&lt;/strong&gt;: Understand the key metrics for evaluating DevOps performance and how Traefik can help improve them. Access the &lt;a href=&quot;https://services.google.com/fh/files/misc/2023_final_report_sodr.pdf?ref=containous.ghost.io&quot;&gt;&lt;u&gt;2023 DORA Report&lt;/u&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Google Cloud’s ROI Whitepaper&lt;/strong&gt;: Discover the financial benefits of investing in robust observability and monitoring tools in the &lt;a href=&quot;https://services.google.com/fh/files/misc/whitepaper_roi_of_devops_transformation_2020_google_cloud.pdf?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Google Cloud ROI Whitepaper&lt;/u&gt;&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-190241936960&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;190241936960&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLL7QjdZ%2BE0aLDmqzFd9h6fZkzrDaNRuYEh0HCP95vWQBoGopm4sLX9zqx6fhFJV%2B9NuMKGHpQ3q2CmtysEpFCA1aTUbZzLJcPSXJf4QP%2Bp%2BbnRR3MX0dZ6d6wHcWMAqBugaMCZJSRi4X2lMSEXBigALtXwyb1%2FO06FMsM0HB0bdVFVdi11%2FQJLGPyJ9HbR4GVP9keUMaHvHhIG26yicpg%3D%3D&amp;webInteractiveContentId=190241936960&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Watch API Gateway Demo&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-190241936960.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Strategic API Gateway Migration: A Comprehensive Blueprint]]></title>
            <description><![CDATA[In this comprehensive guide, we walk you through all the steps and considerations you need to successfully migrate to an API gateway. Check it out.]]></description>
            <link>https://traefik.io/strategic-api-gateway-migration-a-comprehensive-blueprint</link>
            <guid isPermaLink="true">https://traefik.io/strategic-api-gateway-migration-a-comprehensive-blueprint</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Gateway]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[Access Control]]></category>
            <category><![CDATA[Strategy]]></category>
            <dc:creator><![CDATA[Immánuel Fodor]]></dc:creator>
            <pubDate>Fri, 02 Aug 2024 21:19:31 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/08/strategic-api-migration.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Strategic API Gateway Migration Blueprint&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/08/strategic-api-migration.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/08/strategic-api-migration.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/08/strategic-api-migration.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/08/strategic-api-migration.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;You’ve had it.&lt;/p&gt;&lt;p&gt;As the head of your company’s DevOps process, you’ve been frustrated with the web of APIs your company has created for some time. There’s no centralized governance; there’s no service discovery so developers are constantly searching for the right APIs to use; load balancing is a nightmare … but last night’s security breach tears it. Those credentials should have been deactivated months ago.&lt;/p&gt;&lt;p&gt;It’s time for a real, honest-to-goodness API gateway.&lt;/p&gt;&lt;p&gt;Or maybe you already have an API gateway, but it’s inconsistent across different environments and it hurts team efficiency by requiring constant situational manual interventions. Either way, you’re going to need to move your workloads to a new system that solves these problems.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Of course, that makes you cringe, too. The migration will be a nightmare.&lt;/p&gt;&lt;p&gt;But it doesn’t have to be.&lt;/p&gt;&lt;p&gt;By doing a strategic migration of your systems and moving a few APIs at a time, you can minimize risk and increase your agility during the process. Yes, it will take a bit longer, and there will be more moving parts, but &lt;a href=&quot;https://traefik.io/blog/how-modern-api-gateways-make-devops-engineers-more-efficient/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;u&gt;a solid GitOps strategy will smooth the transition&lt;/u&gt;&lt;/a&gt;, and it will definitely be worth avoiding the stress that’s churning in your stomach right now as you have another cup of coffee to make up for not sleeping last night&lt;/p&gt;&lt;p&gt;Let’s look at specifically what it takes to perform a strategic migration to an API gateway model.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-190241936960&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;190241936960&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLL7QjdZ%2BE0aLDmqzFd9h6fZkzrDaNRuYEh0HCP95vWQBoGopm4sLX9zqx6fhFJV%2B9NuMKGHpQ3q2CmtysEpFCA1aTUbZzLJcPSXJf4QP%2Bp%2BbnRR3MX0dZ6d6wHcWMAqBugaMCZJSRi4X2lMSEXBigALtXwyb1%2FO06FMsM0HB0bdVFVdi11%2FQJLGPyJ9HbR4GVP9keUMaHvHhIG26yicpg%3D%3D&amp;webInteractiveContentId=190241936960&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Watch API Gateway Demo&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-190241936960.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;phase-1-planning-and-preparation&quot;&gt;Phase 1: Planning and Preparation&lt;/h2&gt;&lt;p&gt;Just as with everything else in software, the foundation of a successful API gateway migration lies in meticulous planning and preparation. This initial phase sets the stage for a smooth transition by addressing all critical aspects, from gathering detailed requirements to engaging stakeholders and evaluating potential solutions.&amp;nbsp;&lt;/p&gt;&lt;p&gt;By taking the time to thoroughly prepare, you can identify and mitigate risks, align the migration with business objectives so the execs are on your side, and make sure that all the resources and tools you’ll need are in place. Effective planning not only reduces the likelihood of unforeseen issues but also enhances the overall efficiency and success of the migration process.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Let&apos;s look at the key steps involved in this phase.&lt;/p&gt;&lt;h3 id=&quot;step-1-requirement-gathering-and-analysis&quot;&gt;Step 1: Requirement Gathering and Analysis&lt;/h3&gt;&lt;p&gt;The first step in a successful API gateway migration is thorough requirement gathering and analysis. Identify and document both business and technical requirements, considering current pain points and future scalability needs. Conduct a detailed analysis of the existing API infrastructure, evaluating functionalities, dependencies, and potential integration challenges. By establishing a comprehensive understanding of requirements, you lay a solid foundation for a strategic and well-executed migration process.&lt;/p&gt;&lt;h3 id=&quot;step-2-stakeholder-engagement&quot;&gt;Step 2: Stakeholder Engagement&lt;/h3&gt;&lt;p&gt;In this phase you’ll want to closely collaborate with stakeholders to make sure you understand their needs and expectations so the new API gateway aligns with organizational goals.This kind of effective stakeholder engagement is crucial for a successful API gateway migration.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Start by identifying key stakeholders across departments, including development, operations, security, and business units. Engage with these stakeholders early to gather their input and address their concerns. You want to clearly communicate the benefits of the migration, such as improved security, scalability, and centralized management, but don’t forget to highlight potential risks and the mitigation strategies in place.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Regular updates and transparent communication throughout the process will help promote trust and collaboration, ensuring all parties are aligned and supportive of your migration efforts. What’s more, engaged stakeholders are more likely to contribute valuable insights and resources, helping move toward the migration&apos;s success.&lt;/p&gt;&lt;h3 id=&quot;step-3-create-a-migration-plan&quot;&gt;Step 3: Create a Migration Plan&lt;/h3&gt;&lt;p&gt;Now that you’ve spoken to stakeholders it’s time to create a detailed migration plan. Make sure that you:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Outline each phase of the migration, specifying tasks, timelines, and responsible parties. Include key milestones, risk assessments, and contingency plans to address potential challenges.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Define clear objectives for each phase, from initial setup to full deployment, making sure that you align with business and technical goals.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Incorporate best practices and lessons learned from previous projects to optimize the migration strategy.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;A well-structured migration plan provides a roadmap for the project, enabling smooth execution, effective resource management, and timely delivery of the new API gateway solution.&lt;/p&gt;&lt;h3 id=&quot;step-4-assessment-and-selection&quot;&gt;Step 4: Assessment and Selection&lt;/h3&gt;&lt;p&gt;Now that you know what you need, you can &lt;a href=&quot;https://traefik.io/solutions/api-gateway/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;choose a new API gateway&lt;/a&gt;. Don’t skimp on the selection process, because you’ll likely live with your choices for a long time. The selection process consists of several steps:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Start by evaluating various API gateway options against your documented requirements, focusing on scalability, security, ease of integration, cost, and support.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Make sure the gateway you choose supports GitOps so you can easily make and rollback changes to your configuration.&lt;/li&gt;&lt;li&gt;Consider the community and vendor support available for each option.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Conduct proof-of-concept tests to validate the gateway’s performance and compatibility with your existing systems.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Involve stakeholders in the evaluation process to gather diverse perspectives and ensure all needs are addressed.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Selecting &lt;a href=&quot;https://traefik.io/traefik-hub-api-gateway/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;the right API gateway&lt;/a&gt; lays the groundwork for a successful migration and long-term operational efficiency (not to mention fewer sleepless nights) so take all the time you need (within reason).&lt;/p&gt;&lt;p&gt;You can learn how to evaluate modern API gateways in our &lt;a href=&quot;https://info.traefik.io/api-gateway-buyers-guide?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Buyer’s Guide for Modern API Gateways&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;h3 id=&quot;step-5-define-success-criteria&quot;&gt;Step 5: Define Success Criteria&lt;/h3&gt;&lt;p&gt;Now that you know what you’re trying to do, you need to decide how you’ll know when you’ve done it. Defining clear success criteria is essential to measure the effectiveness of the API gateway migration. Good success criteria will:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Establish specific, measurable goals beyond just completing the migration from point A to point B.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Include key performance indicators (KPIs) such as improved latency, fewer security vulnerabilities, and increased scalability.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Set benchmarks for user satisfaction, system reliability, and overall performance improvements.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Ensure these criteria align with both business and technical objectives, providing a comprehensive framework for evaluating the migration’s success.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Clearly articulate what success looks like, so you can focus your efforts, track your progress, and demonstrate the value of the migration to stakeholders.&lt;/p&gt;&lt;h3 id=&quot;step-6-environment-setup&quot;&gt;Step 6: Environment Setup&lt;/h3&gt;&lt;p&gt;Now you’ll need the environment in which to perform the migration. Obviously you’ll need a testing environment, because you wouldn’t run this directly in production, right? Right???&lt;/p&gt;&lt;p&gt;You’ll want a testing environment that closely mirrors the production setup to identify and address potential issues early. Make sure all the necessary tools and resources, such as monitoring systems, logging mechanisms, and CI/CD pipelines, are in place and properly configured.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Basically, make sure you can do thorough testing and validation of the new API gateway before it goes live. You need to be able to mitigate risks, improve system stability, and ensure a smoother transition to the new gateway.&lt;/p&gt;&lt;h2 id=&quot;phase-2-initial-rollout&quot;&gt;Phase 2: Initial Rollout&lt;/h2&gt;&lt;p&gt;The initial rollout phase is where the groundwork you laid during planning and preparation begins to take shape. This phase focuses on carefully selecting a pilot group of APIs for migration, configuring and deploying the new API gateway, and conducting thorough testing to ensure everything operates smoothly. It also emphasizes the importance of monitoring and gathering feedback to refine the process before moving on to broader implementation. By starting with a controlled and manageable subset of APIs, you can identify and address any issues early on.&lt;/p&gt;&lt;h3 id=&quot;step-1-pilot-group-selection&quot;&gt;Step 1: Pilot Group Selection&lt;/h3&gt;&lt;p&gt;Selecting the right pilot group is critical for a successful initial rollout of the API gateway migration. You want to identify a small, manageable set of APIs and functionalities to migrate first, prioritizing non-critical or low-risk APIs to minimize potential impact of any issues.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Choose APIs that represent a variety of use cases to comprehensively test the new gateway&apos;s capabilities, and involve a cross-functional team of developers, testers, and users to ensure diverse feedback. Having the proper team helps you validate the migration process, identify and resolve issues early, and build confidence for subsequent phases of the migration.&lt;/p&gt;&lt;h3 id=&quot;step-2-configuration-and-deployment&quot;&gt;Step 2: Configuration and Deployment&lt;/h3&gt;&lt;p&gt;The configuration and deployment phase is where everything comes to fruition. You’ll want to:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Begin by configuring the new API gateway according to the documented requirements, ensuring all settings align with your security, performance, and integration needs.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Deploy the selected APIs to the new gateway in the testing environment, meticulously following your migration plan.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Utilize automated deployment tools to streamline the process and reduce the risk of human error.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;If this step fails, your migration fails, so be extra diligent.&amp;nbsp;&lt;/p&gt;&lt;h3 id=&quot;step-3-testing&quot;&gt;Step 3: Testing&lt;/h3&gt;&lt;p&gt;Now you need to thoroughly test to ensure the new API gateway functions correctly and meets all specified requirements. To make sure that everything is working properly:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Perform a comprehensive suite of tests, including functional, performance, security, and integration testing.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Use automated testing tools to enhance efficiency and coverage, ensuring all aspects of the gateway are evaluated.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Verify that the new gateway handles API requests correctly, maintains performance standards, and adheres to security protocols.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Testing should simulate real-world scenarios to uncover any potential issues so you can identify and resolve problems early, before they impact your users.&lt;/p&gt;&lt;h3 id=&quot;step-4-monitoring-and-feedback&quot;&gt;Step 4: Monitoring and Feedback&lt;/h3&gt;&lt;p&gt;Once you’ve done the initial deployment of the API gateway, ongoing monitoring and feedback collection are crucial. Make sure that you:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Continuously track the performance and usage of the migrated APIs, comparing them against predefined success criteria.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Use monitoring tools to detect anomalies, measure response times, and assess overall system health.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Collect feedback from users and developers to identify any issues or areas for improvement.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Document lessons learned during this phase to refine the migration process.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;At this stage, negative comments are actually a good thing, because they will help you make the system better. By actively monitoring and gathering feedback, you can promptly address any problems and optimize not only the gateway&apos;s performance, but also the overall process internally.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-190241936960&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;190241936960&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLL7QjdZ%2BE0aLDmqzFd9h6fZkzrDaNRuYEh0HCP95vWQBoGopm4sLX9zqx6fhFJV%2B9NuMKGHpQ3q2CmtysEpFCA1aTUbZzLJcPSXJf4QP%2Bp%2BbnRR3MX0dZ6d6wHcWMAqBugaMCZJSRi4X2lMSEXBigALtXwyb1%2FO06FMsM0HB0bdVFVdi11%2FQJLGPyJ9HbR4GVP9keUMaHvHhIG26yicpg%3D%3D&amp;webInteractiveContentId=190241936960&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Watch API Gateway Demo&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-190241936960.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;phase-3-gradual-expansion&quot;&gt;Phase 3: Gradual Expansion&lt;/h2&gt;&lt;p&gt;Now that you’ve done the initial rollout and you know that everything works, it’s time to start giving users access to the new gateway.&lt;/p&gt;&lt;p&gt;This phase involves iteratively migrating additional APIs to the new gateway in small, manageable batches, doing regular testing, monitoring for issues, and keeping stakeholders in the loop. To ensure continuity and reliability, in this phase you’ll operate the old and new gateways in parallel.&amp;nbsp;&lt;/p&gt;&lt;h3 id=&quot;step-1-parallel-operation&quot;&gt;Step 1: Parallel Operation&lt;/h3&gt;&lt;p&gt;In this phase you’re making the new API gateway available, but you’ll still need the old one, both as a fallback for the migrated APIs and because it’s got the non-migrated API’s on it. In other words, operating the old and new API gateways in parallel ensures a safety net during the migration process.&amp;nbsp;&lt;/p&gt;&lt;p&gt;This dual operation enables you to seamlessly switch between gateways if issues arise, minimizing downtime and service disruptions. Implement version control and routing strategies to efficiently manage API traffic between the two gateways and ensure smooth transitions and consistent performance.&amp;nbsp;&lt;/p&gt;&lt;p&gt;This parallel setup also provides an opportunity to compare the performance and functionality of both gateways in real-time. By maintaining parallel operation, you can safeguard against potential problems, ensure reliability, and build confidence before fully decommissioning the old gateway.&lt;/p&gt;&lt;h3 id=&quot;step-2-iterative-migration&quot;&gt;Step 2: Iterative Migration&lt;/h3&gt;&lt;p&gt;Iterative migration involves gradually moving additional APIs to the new gateway in manageable batches. When you started, you started with the least critical so that any issues that came up caused the least amount of disruption. Now it’s time to reverse that. Prioritize the business&apos;s most important APIs (e.g., the biggest volume, or the most complex) to move the most workloads to the new API gateway.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Another approach is to start with the APIs that hurt the most, then the rest is easy. If you leave the most painful APIs for last, there is a very good chance that they will not be migrated as the team&apos;s focus shifts over time.&lt;/p&gt;&lt;p&gt;After each batch, perform the same thorough testing, monitoring, and feedback collection as in the initial rollout phase. This incremental approach allows for continuous assessment and adjustment, reducing risks and ensuring stability at each step.&lt;/p&gt;&lt;h3 id=&quot;step-3-stakeholder-communication&quot;&gt;Step 3: Stakeholder Communication&lt;/h3&gt;&lt;p&gt;Effective stakeholder communication is essential throughout the migration process. To keep in touch with stakeholders:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Regularly update users, developers, and business stakeholders on the progress of the migration, highlighting milestones and addressing any concerns.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Share insights from monitoring and feedback phases to demonstrate transparency and build trust.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Evaluate the migration&apos;s impact against success criteria and communicate these results to stakeholders, showing tangible benefits and improvements.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;By maintaining open lines of communication and involving stakeholders at every stage, you can ensure alignment with organizational goals and get continued support for the migration initiative, which will be important at budget time.&lt;/p&gt;&lt;h3 id=&quot;step-4-documentation-and-training&quot;&gt;Step 4: Documentation and Training&lt;/h3&gt;&lt;p&gt;Comprehensive documentation and training help you make sure your transition to the new API gateway is smooth. In this step, do the following:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Update all API documentation to reflect the changes and new capabilities introduced by the new gateway.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Make sure that this documentation is clear, detailed, and easily accessible to developers and users.&lt;/li&gt;&lt;li&gt;Provide training sessions to familiarize the development team and end-users with the new system.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Offer ongoing support and resources, such as tutorials and FAQs, to assist with the transition.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;By investing in thorough documentation and effective training, you can facilitate user adoption, reduce onboarding time, and enhance the overall success of the migration.&lt;/p&gt;&lt;h2 id=&quot;phase-4-full-migration-and-decommissioning&quot;&gt;Phase 4: Full Migration and Decommissioning&lt;/h2&gt;&lt;p&gt;You’re almost there! The final phase of the API gateway migration involves the complete transition of all remaining APIs and the careful decommissioning of the old gateway. This phase focuses on ensuring that all functionalities and dependencies are successfully replicated or enhanced in the new gateway.&amp;nbsp;&lt;/p&gt;&lt;p&gt;For example, post-migration monitoring is crucial to verify stability and performance, while continuous improvement efforts ensure the gateway remains optimized and aligned with business needs. Additionally, the decommissioning process involves securely phasing out the old infrastructure, ensuring no residual traffic or dependencies remain. By executing a thorough and methodical migration and decommissioning, you can achieve a successful transition and position your organization for ongoing API gateway success.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Let&apos;s delve into the specific steps involved in this final migration and decommissioning phase.&lt;/p&gt;&lt;h3 id=&quot;step-1-final-migration&quot;&gt;Step 1: Final Migration&lt;/h3&gt;&lt;p&gt;The final migration phase involves moving the remaining APIs to the new gateway, ensuring that all functionalities of the old gateway are replicated or enhanced. You’ll want to:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Conduct a thorough review to confirm that all dependencies are addressed and that no critical elements are overlooked.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Execute the migration carefully, following established procedures to minimize disruptions.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Once the final APIs are successfully migrated, perform comprehensive testing to verify that the new gateway operates smoothly and meets all performance, security, and functionality criteria.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Be meticulous in this step; you’re almost finished, it would be a shame if everything fell apart now, just when you were starting to believe you were going to be rid of all this pain.&lt;/p&gt;&lt;h3 id=&quot;step-2-decommissioning&quot;&gt;Step 2: Decommissioning&lt;/h3&gt;&lt;p&gt;Decommissioning the old API gateway is the final step in the migration process, coming after all workloads are being executed on the new gateway. To get there:&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Verify that all dependencies are removed and that no residual traffic is being routed through the old gateway.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Conduct a thorough audit to confirm that all functionalities have been successfully transferred and are operating as expected on the new gateway.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Once you’re comfortable that everything has been moved to the new system and is running properly, you can proceed with securely shutting down and dismantling the old gateway infrastructure.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Proper decommissioning ensures a clean transition, reduces maintenance overhead, and eliminates potential security vulnerabilities associated with the outdated system. So, tempting as it may be to leave the old system in place “just in case,” don’t.&lt;/p&gt;&lt;h3 id=&quot;step-3-post-migration-monitoring&quot;&gt;Step 3: Post-Migration Monitoring&lt;/h3&gt;&lt;p&gt;Now that you’ve shut down the old system you’ll be tempted to consider the project finished, but it’s not. You need to continuously monitor the new gateway to track its operation, identify any issues, and assess its performance against predefined success criteria, using monitoring tools to gather real-time data on API usage, latency, and error rates.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Should any post-migration issues pop up (as they almost definitely will) make sure to address them immediately to maintain service reliability and user satisfaction. Regularly review and analyze the monitoring data to identify trends and areas for further optimization.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Effective post-migration monitoring helps maintain the integrity of the new gateway and supports ongoing improvements.&lt;/p&gt;&lt;h3 id=&quot;step-4-continuous-improvement&quot;&gt;Step 4: Continuous Improvement&lt;/h3&gt;&lt;p&gt;Speaking of ongoing improvements, continuous improvement is key to maximizing the benefits of your new API gateway. After the migration, regularly evaluate the gateway&apos;s performance, security, and scalability to identify areas for enhancement and implement iterative updates and optimizations based on user feedback and monitoring data.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Stay informed about emerging technologies and best practices to keep your API gateway up-to-date. The idea is to create a culture of continuous learning and adaptation within your team to proactively address challenges and leverage new opportunities. By committing to continuous improvement, you ensure that your API gateway remains robust, efficient, and aligned with evolving business needs.&lt;/p&gt;&lt;h2 id=&quot;additional-considerations&quot;&gt;Additional Considerations&lt;/h2&gt;&lt;p&gt;Now, while all of that may cover the actual migration, there are a few more things you need to consider, both positive and negative.&lt;/p&gt;&lt;h3 id=&quot;security&quot;&gt;Security&lt;/h3&gt;&lt;p&gt;Ensuring robust security measures is essential when migrating to a new API gateway, so make sure that you:&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Implement &lt;a href=&quot;https://traefik.io/blog/centralizing-and-standardizing-oidc-at-the-api-gateway-level/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;strong authentication and authorization protocols&lt;/a&gt; to protect your APIs from unauthorized access.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Use &lt;a href=&quot;https://traefik.io/blog/distributed-security-with-hashicorp-vault-letsencrypt-and-traefik/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;encryption to safeguard data&lt;/a&gt; in transit and at rest.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Regularly conduct security audits and vulnerability assessments to identify and address potential threats.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Integrate security best practices into your development and deployment processes, ensuring that security is a continuous focus.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Stay updated on the latest security trends and threats to proactively defend against emerging risks.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Remember, security shouldn’t be a “bolt-on.”&lt;/p&gt;&lt;h3 id=&quot;scalability-and-performance&quot;&gt;Scalability and Performance&lt;/h3&gt;&lt;p&gt;Designing for scalability and performance is crucial for the long-term success of your new API gateway, and is probably one of the reasons you decided to upgrade in the first place. To do that:&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Ensure the gateway can handle increased traffic and grow alongside your business needs by implementing scalable architecture and infrastructure.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Optimize performance by fine-tuning configurations, employing efficient load balancing, and utilizing caching strategies to reduce latency.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Regularly conduct performance testing to identify bottlenecks and areas for improvement.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Monitor the gateway&apos;s performance metrics to ensure it meets or exceeds current capabilities and adapts to varying loads.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;By focusing on scalability and performance, you can deliver a reliable and responsive API experience to your users.&lt;/p&gt;&lt;h3 id=&quot;easy-rollbacks&quot;&gt;Easy Rollbacks&lt;/h3&gt;&lt;p&gt;When you’re selecting a new API gateway, you want to make sure to &lt;a href=&quot;https://traefik.io/blog/how-modern-api-gateways-make-devops-engineers-more-efficient/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;implement easy rollback mechanisms&lt;/a&gt; to ensure that configuration changes and deployments can be quickly reversed in case of issues.&amp;nbsp;&lt;/p&gt;&lt;p&gt;The best way to do this is to use a system that is based on version control, tracking changes, and maintaining previous versions of configurations and code. This enables you to automate rollback procedures within your CI/CD pipeline to enable rapid and reliable reversion to stable states.&amp;nbsp;&lt;/p&gt;&lt;p&gt;This architecture is called GitOps, because you are essentially controlling your system by making changes to a git repository and merging them. The changes are then propagated to the API gateway platform’s configuration. (Remember that not all API Gateways support this capability. Traefik API Gateway is one that does.)&lt;/p&gt;&lt;p&gt;Regularly test rollback processes in your testing environment to ensure they function as expected. By planning for easy rollbacks, you can quickly address unforeseen problems, maintain service continuity, and reduce the impact of potential disruptions during the migration process.&lt;/p&gt;&lt;h3 id=&quot;backup-and-recovery&quot;&gt;Backup and Recovery&lt;/h3&gt;&lt;p&gt;As with anything else in software, implementing a robust backup and recovery plan is critical for safeguarding your data during the API gateway migration. Make sure to:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Regularly back up all configurations, data, and critical system components to secure storage locations.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Ensure that backups are comprehensive and include all necessary elements to restore operations in case of data loss or corruption.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Test recovery procedures frequently to verify that backups can be restored quickly and effectively.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Implement automated backup solutions to maintain up-to-date copies of your data.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;All of this is in order to ensure business continuity, protect against data loss, and quickly recover from any unexpected issues during the migration.&lt;/p&gt;&lt;h3 id=&quot;team-collaboration&quot;&gt;Team Collaboration&lt;/h3&gt;&lt;p&gt;Strong team collaboration is vital for a successful API gateway migration, and fortunately, the way GitOps works fosters that spirit of collaboration, as everyone can work together without stepping on each other. You can further this goal by making sure to:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Promote open communication and collaboration among all team members, including developers, operations, security, and business stakeholders.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Use collaborative tools and platforms to share information, track progress, and coordinate tasks effectively.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Conduct regular meetings and update sessions to keep everyone aligned and informed about the migration’s status and any emerging issues.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Encourage a culture of teamwork and collective problem-solving to leverage diverse expertise and perspectives.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;By enhancing team collaboration, you can ensure a smoother migration process.&lt;/p&gt;&lt;h3 id=&quot;compliance-and-governance&quot;&gt;Compliance and Governance&lt;/h3&gt;&lt;p&gt;Ensuring compliance and robust governance is essential when choosing and migrating to a new API gateway. Some things to consider:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Align the new gateway with relevant regulations and industry standards, such as FIPS-140-3, GDPR, HIPAA, or PCI-DSS, to maintain compliance and avoid legal issues.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Implement governance policies to manage the API lifecycle, including versioning, deprecation, and documentation standards.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Regularly review and audit the gateway to ensure ongoing adherence to compliance requirements and internal policies.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Establish clear roles and responsibilities for governance to maintain accountability and transparency.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;By focusing on compliance and governance, you can protect your organization from regulatory risks and ensure the API gateway operates within established guidelines.&lt;/p&gt;&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;&lt;p&gt;Migrating to a new API gateway is complex but highly rewarding. It requires strategic planning, meticulous execution, and continuous improvement. However, by following a phased approach, you can minimize risks, ensure a smooth transition, and achieve significant improvements in API management, security, and performance.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Each phase, from initial planning and preparation through to full migration and decommissioning, plays a crucial role in the overall success of the project. Additionally, addressing key considerations such as security, scalability, compliance, and team collaboration further strengthens the migration process.&amp;nbsp;&lt;/p&gt;&lt;p&gt;As an IT Director, leading this strategic migration not only enhances your organization’s technological capabilities but also positions you for long-term success in managing and optimizing your operations.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Embrace the journey, leverage the insights gained along the way, and transform your API infrastructure for the future.&lt;/p&gt;&lt;p&gt;... And finally get some sleep.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-190241936960&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;190241936960&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLL7QjdZ%2BE0aLDmqzFd9h6fZkzrDaNRuYEh0HCP95vWQBoGopm4sLX9zqx6fhFJV%2B9NuMKGHpQ3q2CmtysEpFCA1aTUbZzLJcPSXJf4QP%2Bp%2BbnRR3MX0dZ6d6wHcWMAqBugaMCZJSRi4X2lMSEXBigALtXwyb1%2FO06FMsM0HB0bdVFVdi11%2FQJLGPyJ9HbR4GVP9keUMaHvHhIG26yicpg%3D%3D&amp;webInteractiveContentId=190241936960&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Watch API Gateway Demo&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-190241936960.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Getting started with Kubernetes Gateway API and Traefik]]></title>
            <description><![CDATA[This article dives into how to get started with GatewayAPI and Traefik.]]></description>
            <link>https://traefik.io/getting-started-with-kubernetes-gateway-api-and-traefik</link>
            <guid isPermaLink="true">https://traefik.io/getting-started-with-kubernetes-gateway-api-and-traefik</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Ingress]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <category><![CDATA[Kubernetes]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[Strategy]]></category>
            <dc:creator><![CDATA[Nicolas Mengin]]></dc:creator>
            <pubDate>Tue, 16 Jul 2024 17:43:58 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/07/Getting-started-with-Kubernetes-Gateway-API-and-Traefik---Image.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/07/Getting-started-with-Kubernetes-Gateway-API-and-Traefik---Image.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/07/Getting-started-with-Kubernetes-Gateway-API-and-Traefik---Image.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/07/Getting-started-with-Kubernetes-Gateway-API-and-Traefik---Image.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/07/Getting-started-with-Kubernetes-Gateway-API-and-Traefik---Image.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;We&apos;re continuing our in-depth series on Traefik 3. If you missed it, be sure to read the previous articles on&lt;a href=&quot;https://traefik.io/blog/traefik-3-0-ga-has-landed-heres-how-to-migrate/?ref=traefik.io&quot;&gt; &lt;u&gt;migrating from Traefik v2&lt;/u&gt;&lt;/a&gt;,&lt;a href=&quot;https://traefik.io/blog/traefik-3-deep-dive-into-wasm-support-with-coraza-waf-plugin/?ref=traefik.io&quot;&gt; &lt;u&gt;WASM support with Coraza WAF&lt;/u&gt;&lt;/a&gt;,&lt;a href=&quot;https://traefik.io/blog/monitor-your-production-at-a-glance-with-traefik-3-0-and-opentelemetry/?ref=traefik.io&quot;&gt; &lt;u&gt;Open Telemetry&lt;/u&gt;&lt;/a&gt;, and &lt;a href=&quot;https://traefik.io/blog/traefik-3-0-with-spiffe-tailscale-http3/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;SPIFFE, Tailscale, and HTTP/3&lt;/u&gt;&lt;/a&gt;. This article dives into how to get started with GatewayAPI and Traefik.&lt;/p&gt;&lt;p&gt;In 2015, when Traefik was just born, Kubernetes released the first version of its &lt;a href=&quot;https://kubernetes.io/docs/concepts/services-networking/ingress/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Ingress specifications&lt;/u&gt;&lt;/a&gt;. The goal of Ingress was to provide a straightforward, vendor-neutral method for exposing Kubernetes services. However, the premise has quickly been broken.&lt;/p&gt;&lt;p&gt;While Ingress could handle basic service exposure, adding functionalities like rate-limiting or IP checking required numerous vendor-specific annotations.&lt;/p&gt;&lt;p&gt;To address these limitations, a new standard began to take shape in 2019: &lt;a href=&quot;https://gateway-api.sigs.k8s.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;GatewayAPI&lt;/u&gt;&lt;/a&gt; was born. Officially released in its v1.0 form at the end of 2023, the GatewayAPI aims to be the new standard for exposing services in Kubernetes. It offers a set of core rules designed to meet most needs while allowing the &lt;a href=&quot;https://gateway-api.sigs.k8s.io/concepts/glossary/?h=controller&amp;ref=containous.ghost.io#gateway-controller&quot;&gt;&lt;u&gt;Gateway Controller&lt;/u&gt;&lt;/a&gt; to extend these rules with their features.&lt;/p&gt;&lt;p&gt;Traefik has been a Kubernetes first-class citizen for a long time, initially supporting Ingress and later expanding with our &lt;a href=&quot;https://doc.traefik.io/traefik/providers/kubernetes-crd/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;IngressRoutes&lt;/u&gt;&lt;/a&gt; to surpass Ingress limitations, adding features like TCP, UDP, and structured options declaration.&lt;/p&gt;&lt;p&gt;We quickly embraced the big changes in Kubernetes with the Gateway API, offering early experimental support since 2022.&lt;/p&gt;&lt;p&gt;With the release of Traefik v3.1, we’ve taken a major step forward: our GatewayAPI provider is now production-ready. Traefik v3.1 today meets and exceeds 100% of the core requirements, as shown in our &lt;a href=&quot;https://gateway-api.sigs.k8s.io/implementations/?ref=containous.ghost.io#traefik-proxy&quot;&gt;&lt;u&gt;SIG network conformance tests report&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Let’s see together how you can start with GatewayAPI and Traefik v3!&lt;/p&gt;&lt;h2 id=&quot;install-traefik-as-gatewaycontroller&quot;&gt;Install Traefik as GatewayController&lt;/h2&gt;&lt;p&gt;To begin, ensure you have installed the most recent version of Traefik on your Kubernetes cluster, utilizing the Helm Chart for streamlined deployment. This setup enables the GatewayAPI provider to effectively discover and expose your applications.&lt;/p&gt;&lt;h3 id=&quot;define-your-installation-configuration&quot;&gt;Define your installation configuration&lt;/h3&gt;&lt;p&gt;First, customize your values to enable Traefik to discover GatewayAPI objects on your Kubernetes cluster. Create a &lt;code&gt;values.yaml&lt;/code&gt; file with the following minimal configuration:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## File values.yaml ##
providers:
  # Disable the Ingress provider (optional)
  # We do not want to use Ingress objects anymore!
  kubernetesIngress:
    enabled: false
  # Enable the GatewayAPI provider
  kubernetesGateway:
    enabled: true
# Allow the Gateway to expose HTTPRoute from all namespaces
gateway:
  namespacePolicy: All
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next, execute the following commands to deploy Traefik in the &lt;code&gt;traefik&lt;/code&gt; namespace using the previously described configuration:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# helm commands to execute:

$ helm repo add traefik https://traefik.github.io/charts
$ helm repo update
$ kubectl create namespace traefik
$ helm upgrade --install --version 0.29.1 --namespace traefik traefik traefik/traefik -f values.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And voilà! You have deployed Traefik on your Kubernetes cluster:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ kubectl describe deployments.apps traefik --namespace traefik
Name:               	traefik
Namespace:          	traefik
…
  Containers:
   traefik:
	Image:   	docker.io/traefik:v3.1
	Ports:   	9100/TCP, 9000/TCP, 8000/TCP, 8443/TCP
	Host Ports:  0/TCP, 0/TCP, 0/TCP, 0/TCP
	Args:
  	--entryPoints.web.address=:8000/tcp
  	--entryPoints.websecure.address=:8443/tcp
  	--api.dashboard=true
  	--ping=true
  	--providers.kubernetescrd
  	--providers.kubernetesgateway
  	--entryPoints.websecure.http.tls=true
	…
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As you can see, both &lt;code&gt;kubernetescrd&lt;/code&gt; and &lt;code&gt;kubernetesgateway&lt;/code&gt; providers are enabled. The &lt;code&gt;kubernetescrd&lt;/code&gt; provider allows you to define Traefik specific resources like &lt;a href=&quot;https://doc.traefik.io/traefik/middlewares/http/overview/?ref=containous.ghost.io&quot;&gt;Middlewares&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The entrypoints &lt;code&gt;web&lt;/code&gt; and &lt;code&gt;websecure&lt;/code&gt; will be used to expose your applications.&lt;/p&gt;
&lt;p&gt;Additionally, when Traefik is installed with the GatewayAPI provider enabled, it automatically creates a default &lt;a href=&quot;https://gateway-api.sigs.k8s.io/api-types/gatewayclass/?ref=containous.ghost.io&quot;&gt;GatewayClass&lt;/a&gt; named &lt;strong&gt;traefik&lt;/strong&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ kubectl describe GatewayClass traefik
Name:     	traefik
…
API Version:  gateway.networking.k8s.io/v1
Kind:     	GatewayClass
…
  Controller Name:  traefik.io/gateway-controller
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As you can see above, the option &lt;code&gt;Controller Name&lt;/code&gt; is set to traefik.io/gateway-controller. Thus, it allows you to expose every &lt;a href=&quot;https://gateway-api.sigs.k8s.io/api-types/gateway/?ref=containous.ghost.io&quot;&gt;Gateway&lt;/a&gt; attached to the &lt;code&gt;traefik&lt;/code&gt; GatewayClass using your Traefik Gateway Controller.&lt;/p&gt;
&lt;p&gt;Additionally, the Gateway &lt;code&gt;traefik-gateway&lt;/code&gt; is also deployed:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ kubectl describe Gateway traefik --namespace traefik
Name:     	traefik-gateway
Namespace:	traefik
…
API Version:  gateway.networking.k8s.io/v1
Kind:     	Gateway
…
Spec:
  Gateway Class Name:  traefik
  Listeners:
	Allowed Routes:
  	  Namespaces:
    	    From:  All
    Name:  	web
    Port:  	8000
    Protocol:  HTTP
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This Gateway allows you to expose &lt;a href=&quot;https://gateway-api.sigs.k8s.io/api-types/httproute/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;HTTPRoute&lt;/u&gt;&lt;/a&gt; in HTTP on the port 8000 of your Traefik Gateway Controller.&lt;/p&gt;&lt;p&gt;Let’s now expose your first application using a GatewayAPI HTTPRoute.&lt;/p&gt;&lt;h2 id=&quot;deploy-your-first-httproute&quot;&gt;Deploy your first HTTPRoute&lt;/h2&gt;&lt;p&gt;A GatewayAPI &lt;a href=&quot;https://gateway-api.sigs.k8s.io/api-types/httproute/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;HTTPRoute&lt;/u&gt;&lt;/a&gt; enables you to expose an application through Gateways using HTTP(S).&lt;/p&gt;&lt;p&gt;To do this, reference the Services to reach (using the &lt;code&gt;backendRefs&lt;/code&gt; option) and the Gateways (using the &lt;code&gt;parentRef&lt;/code&gt; option) as shown in the snippet below:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Application to expose
kind: Deployment
apiVersion: apps/v1
metadata:
  name: whoami
  namespace: whoami
spec:
  replicas: 3
  selector:
    matchLabels:
    app: whoami
  template:
    metadata:
      labels:
        app: whoami
    spec:
      containers:
      - name: whoami
        image: traefik/whoami
---
# Service to reach the application on the cluster
apiVersion: v1
kind: Service
metadata:
  name: whoami
  namespace: whoami
  labels:
    app: whoami
spec:
  type: ClusterIP
  ports:
  - port: 80
    name: whoami
  selector:
    app: whoami
---
# HTTPRoute
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: whoami-httproute
  namespace: whoami
spec:
  parentRefs:
  - name: traefik-gateway
    namespace: traefik
  hostnames:
  - whoami.myexample.io
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /
    backendRefs:
    - name: whoami
      namespace: whoami
      port: 80
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This example demonstrates how to expose a web server that displays some headers when Traefik is accessed using the hostname &lt;code&gt;whoami.myexample.io&lt;/code&gt;.&lt;br&gt;
You can use the following &lt;code&gt;curl&lt;/code&gt; command to verify that the application is correctly exposed:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ curl http://whoami.myexample.io/
Hostname: whoami-697f8c6cbc-7nqmf
IP: 127.0.0.1
IP: ::1
IP: 10.42.0.9
IP: fe80::e8c0:86ff:feba:5e06
RemoteAddr: 10.42.0.14:59316
GET / HTTP/1.1
Host: whoami.myexample.io
User-Agent: curl/7.88.1
Accept: */*
Accept-Encoding: gzip
X-Forwarded-For: 10.42.0.1
X-Forwarded-Host: whoami.myexample.io
X-Forwarded-Port: 80
X-Forwarded-Proto: http
X-Forwarded-Server: traefik-5d476f955f-cn7xs
X-Real-Ip: 10.42.0.1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Congratulations, you&apos;ve successfully deployed your first HTTPRoute with Traefik! Now, let&apos;s take it a step further by adding a few operations to the requests.&lt;/p&gt;&lt;h2 id=&quot;go-beyond-with-filters&quot;&gt;Go beyond with Filters&lt;/h2&gt;&lt;p&gt;GatewayAPI &lt;a href=&quot;https://gateway-api.sigs.k8s.io/reference/spec/?ref=containous.ghost.io#gateway.networking.k8s.io/v1.HTTPRouteFilter&quot;&gt;&lt;u&gt;Filters&lt;/u&gt;&lt;/a&gt; enable Traefik to perform various operations on requests and responses.&lt;/p&gt;&lt;p&gt;There are three types of filters:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Core Filters&lt;/strong&gt;: Mandatory filters for every GatewayController, such as &lt;code&gt;requestHeaderModifier&lt;/code&gt; and &lt;code&gt;requestRedirect&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Extended Filters&lt;/strong&gt;: Optional filters for &lt;code&gt;GatewayControllers&lt;/code&gt;, such as &lt;code&gt;responseHeaderModifier&lt;/code&gt; and &lt;code&gt;requestMirror&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;ExtensionRef Filters&lt;/strong&gt;: Additional filters provided by the GatewayController. In Traefik, these are the &lt;a href=&quot;https://doc.traefik.io/traefik/middlewares/http/overview/?ref=containous.ghost.io&quot;&gt;HTTP middlewares&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Let&apos;s modify the HTTPRoute to:&lt;br&gt;
Add the header &lt;code&gt;x-post-topic&lt;/code&gt; using the core filter.&lt;br&gt;
Add the prefix &lt;code&gt;gatewayapi&lt;/code&gt; to the request using the middleware &lt;a href=&quot;https://doc.traefik.io/traefik/middlewares/http/addprefix/?ref=containous.ghost.io&quot;&gt;AddPrefix&lt;/a&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# HTTPRoute with the Filters
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: whoami-httproute
  namespace: whoami
spec:
  parentRefs:
  - name: traefik-gateway
    namespace: traefik
  hostnames:
  - whoami.myexample.io
  rules:
  - matches:
    - path:
        type: PathPrefix
        value: /
    backendRefs:
    - name: whoami
      namespace: whoami
      port: 80
    filters:
    # Core filter which adds a header
    - type: RequestHeaderModifier
      requestHeaderModifier:
        add:
          - name: x-post-topic
            value: GatewayAPI
    # ExtensionRef filter to use the Traefik Middleware AddPrefix
    - type: ExtensionRef
      extensionRef:
        group: traefik.io
        kind: Middleware
        name: addprefix
---
# Traefik Middleware AddPrefix
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: addprefix
  namespace: whoami
spec:
  addPrefix:
    prefix: /gatewayapi
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can check the modification using a &lt;code&gt;curl&lt;/code&gt; command:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ curl http://whoami.myexample.io/
Hostname: whoami-697f8c6cbc-2xkpr
IP: 127.0.0.1
IP: ::1
IP: 10.42.0.10
IP: fe80::b8b5:6fff:fe48:19e9
RemoteAddr: 10.42.0.14:40044
GET /gatewayapi/ HTTP/1.1
Host: whoami.myexample.io
User-Agent: curl/7.88.1
Accept: */*
Accept-Encoding: gzip
X-Forwarded-For: 10.42.0.1
X-Forwarded-Host: whoami.myexample.io
X-Forwarded-Port: 80
X-Forwarded-Proto: http
X-Forwarded-Server: traefik-5d476f955f-cn7xs
X-Post-Topic: GatewayAPI
X-Real-Ip: 10.42.0.1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As we have seen, the GatewayAPI integration in Traefik simplifies the initial setup significantly. We successfully exposed our first HTTPRoute and added a couple of operations to the requests. Traefik has many more GatewayAPI capabilities, such as &lt;a href=&quot;https://gateway-api.sigs.k8s.io/concepts/api-overview/?h=tcproute&amp;ref=containous.ghost.io#tcproute-and-udproute&quot;&gt;&lt;u&gt;TCPRoute&lt;/u&gt;&lt;/a&gt;, &lt;a href=&quot;https://gateway-api.sigs.k8s.io/concepts/api-overview/?h=tcproute&amp;ref=containous.ghost.io#tlsroute&quot;&gt;&lt;u&gt;TLSRoute&lt;/u&gt;&lt;/a&gt;, and &lt;a href=&quot;https://gateway-api.sigs.k8s.io/api-types/referencegrant/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;ReferenceGrant&lt;/u&gt;&lt;/a&gt; that are not covered in this blog post, but we highly encourage you to explore them further.&lt;/p&gt;&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;&lt;p&gt;GatewayAPI is undoubtedly the new standard for exposing your resources in a Kubernetes cluster. Its specifications already surpass those of Ingress, and with a strong community backing it, GatewayAPI will continue to grow.&lt;/p&gt;&lt;p&gt;As a Kubernetes first-class citizen, Traefik is of course strongly supporting this effort and will continue to contribute to this community project.&lt;/p&gt;&lt;p&gt;We&apos;ve improved status management, updated route priority rules, and introduced the &lt;a href=&quot;https://gateway-api.sigs.k8s.io/api-types/referencegrant/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;ReferenceGrant&lt;/u&gt;&lt;/a&gt; feature to make Traefik even more robust and flexible for your Kubernetes setup.&lt;/p&gt;&lt;p&gt;But it’s just the beginning! We plan to further advance this integration by adding support for features like &lt;a href=&quot;https://gateway-api.sigs.k8s.io/concepts/api-overview/?h=tcproute&amp;ref=containous.ghost.io#grpcroute&quot;&gt;&lt;u&gt;GRPCRoute&lt;/u&gt;&lt;/a&gt;, &lt;a href=&quot;https://gateway-api.sigs.k8s.io/concepts/api-overview/?h=tcproute&amp;ref=containous.ghost.io#tcproute-and-udproute&quot;&gt;&lt;u&gt;UDPRoute&lt;/u&gt;&lt;/a&gt;, and &lt;a href=&quot;https://gateway-api.sigs.k8s.io/api-types/backendtlspolicy/?h=backendtls&amp;ref=containous.ghost.io&quot;&gt;&lt;u&gt;BackendTLSPolicy&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Our goal is to provide comprehensive support, enabling you to fully leverage GatewayAPI in your Kubernetes journey. Stay tuned for more updates!&lt;/p&gt;&lt;h3 id=&quot;useful-links&quot;&gt;&lt;strong&gt;Useful Links&lt;/strong&gt;&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Gateway API &lt;a href=&quot;https://gateway-api.sigs.k8s.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;documentation&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;SIG Network &lt;a href=&quot;https://gateway-api.sigs.k8s.io/implementations/?ref=containous.ghost.io#traefik-proxy&quot;&gt;&lt;u&gt;conformance tests&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Traefik 3.1 &lt;a href=&quot;https://github.com/traefik/traefik/releases/tag/v3.1.0?ref=containous.ghost.io&quot;&gt;&lt;u&gt;release notes&lt;/u&gt;&lt;/a&gt; on Github&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://traefik.io/blog/announcing-traefik-proxy-v3-1?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Traefik 3.1 announcement blog post&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-158028398339&quot;
  style=&quot;max-width:100%; max-height:100%; width:100%;height:auto; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;158028398339&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJopIkqy9PwxjiexjkTebdknPc%2B1lMv9CoGqRfqx9yrZ6uJu4k%2BqE2uO7QoJE9hsbY2%2Fu1c4YagHrQ4ZCBQ9KWSmNf5JnqrM8ZnFKNFuS20X3M%3D&amp;webInteractiveContentId=158028398339&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Proxy_Ad_02@2x&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-158028398339.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Announcing Traefik Proxy v3.1]]></title>
            <description><![CDATA[Today we are thrilled to release Traefik v3.1 which further enhances WASM and Gateway API integrations.]]></description>
            <link>https://traefik.io/announcing-traefik-proxy-v3-1</link>
            <guid isPermaLink="true">https://traefik.io/announcing-traefik-proxy-v3-1</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Product News]]></category>
            <category><![CDATA[Ingress]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Tue, 16 Jul 2024 17:40:52 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/07/Announcing-Traefik-Proxy-v3-1-2.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Announcing Traefik Proxy v3.1&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/07/Announcing-Traefik-Proxy-v3-1-2.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/07/Announcing-Traefik-Proxy-v3-1-2.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/07/Announcing-Traefik-Proxy-v3-1-2.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/07/Announcing-Traefik-Proxy-v3-1-2.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Traefik v3.0 was released &lt;a href=&quot;https://traefik.io/blog/traefik-3-0-ga-has-landed-heres-how-to-migrate/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;less than 3 months&lt;/u&gt;&lt;/a&gt; ago with key new features introduced like WASM, Open Telemetry, and Kubernetes Gateway API support. The feedback from the community members about the v3 has been overwhelmingly positive (thank you!) and extremely motivating to continue improving Traefik Proxy. Today we are thrilled to release the v3.1 which further enhances WASM and Gateway API integrations.&lt;/p&gt;&lt;p&gt;With Gateway API now poised to become the new standard for exposing resources within a Kubernetes cluster, we are proud to announce that Traefik v3.1’s Kubernetes Gateway API is ready for production use 🎉&lt;/p&gt;&lt;p&gt;Let’s jump in! &lt;/p&gt;&lt;h2 id=&quot;gateway-api-now-production-ready&quot;&gt;Gateway API now production ready&lt;/h2&gt;&lt;p&gt;Traefik has been a GatewayController since the early days of the Gateway API specification, but needed some adjustments to pass the &lt;a href=&quot;https://gateway-api.sigs.k8s.io/concepts/conformance/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;conformance tests&lt;/u&gt;&lt;/a&gt; and fully meet the specification. Traefik v3.1 now meets and exceeds 100% of the core requirements, as shown in our &lt;a href=&quot;https://gateway-api.sigs.k8s.io/implementations/?ref=containous.ghost.io#traefik-proxy&quot;&gt;&lt;u&gt;SIG network conformance tests report&lt;/u&gt;&lt;/a&gt;. Our GatewayAPI provider is now ready for production use!&lt;/p&gt;&lt;p&gt;Oh, by the way, we just released a &lt;a href=&quot;https://traefik.io/blog/getting-started-with-kubernetes-gateway-api-and-traefik?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;deep dive into Gateway API &amp;amp; Traefik&lt;/a&gt;, we strongly invite you to check it out.&lt;/p&gt;&lt;p&gt;Let’s see what’s new in v3.1 with Gateway API. First things first, If you were already using Gateway API in Traefik, you can now remove the experimental option from the helm chart:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;## File values.yaml ##
experimental:
  kubernetesGateway:
    enabled: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As usual, you can enable Gateway API by simply enabling &lt;code&gt;kubernetesGateway&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## File values.yaml ##
providers:
  # Disable the Ingress provider (optional)
  # We do not want to use Ingress objects anymore!
  kubernetesIngress:
	enabled: false
  # Enable the GatewayAPI provider
  kubernetesGateway:
	enabled: true
# Allow the Gateway to expose HTTPRoute from all namespaces
gateway:
  namespacePolicy: All
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now that you are up and running, let’s dig deeper into the changes made in Traefik.&lt;/p&gt;&lt;h3 id=&quot;improved-status-management&quot;&gt;Improved Status Management&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://gateway-api.sigs.k8s.io/guides/implementers/?h=status&amp;ref=containous.ghost.io#standard-status-fields-and-conditions&quot;&gt;&lt;u&gt;Status management&lt;/u&gt;&lt;/a&gt; is an important piece of the Gateway API, enabling real-time monitoring of your infrastructure to ensure your GatewayAPI objects are ready to manage traffic. In Traefik v3.1, we&apos;ve improved support for status management across all GatewayAPI objects, especially &lt;a href=&quot;https://gateway-api.sigs.k8s.io/api-types/httproute/?ref=containous.ghost.io#status&quot;&gt;&lt;u&gt;HTTPRoutes&lt;/u&gt;&lt;/a&gt;. Our status calculation now aligns perfectly with the GatewayAPI specification, providing you a ready-for-production status monitoring of your objects.&lt;/p&gt;&lt;h3 id=&quot;route-priority-updates&quot;&gt;Route Priority Updates&lt;/h3&gt;&lt;p&gt;Traefik has always used &lt;a href=&quot;https://doc.traefik.io/traefik/routing/routers/?ref=containous.ghost.io#priority&quot;&gt;&lt;u&gt;a route priority mechanism &lt;/u&gt;&lt;/a&gt;based on the rule length to prevent overlaps.&lt;/p&gt;&lt;p&gt;However, the GatewayAPI specification has its own &lt;a href=&quot;https://gateway-api.sigs.k8s.io/reference/spec/?ref=containous.ghost.io#gateway.networking.k8s.io/v1.HTTPRouteRule&quot;&gt;&lt;u&gt;priority rules&lt;/u&gt;&lt;/a&gt;, which differ from Traefik. In Traefik v3.1, we&apos;ve updated our priority calculation for HTTPRoutes. This ensures that you can switch to Traefik from any other GatewayController without changing your route-matching system.&lt;/p&gt;&lt;h3 id=&quot;introducing-referencegrant&quot;&gt;Introducing ReferenceGrant&lt;/h3&gt;&lt;p&gt;The Ingress specification has always struggled with cross-namespace references because of security issues. However, in some cases, like multi-tenant environments, cross-namespace references are essential. Traefik has previously allowed such references through our custom IngressRoute, by adding a &lt;a href=&quot;https://doc.traefik.io/traefik/providers/kubernetes-crd/?ref=containous.ghost.io#allowcrossnamespace&quot;&gt;&lt;u&gt;specific option&lt;/u&gt;&lt;/a&gt; to allow it (though security concerns remain).&lt;/p&gt;&lt;p&gt;With GatewayAPI&apos;s &lt;a href=&quot;https://gateway-api.sigs.k8s.io/api-types/referencegrant/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;ReferenceGrant&lt;/u&gt;&lt;/a&gt; object, these security issues are addressed.&lt;/p&gt;&lt;p&gt;Using ReferenceGrant, you can now declare a Gateway in Traefik that serves a TLS certificate stored in a secret from another namespace or an HTTPRoute targeting a Service in a different namespace. This new feature makes cross-namespace referencing secure and straightforward.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# HTTRoute in the default namespace.
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: whoami-http
  namespace: default
spec:
  parentRefs:
    - name: traefik
      kind: Gateway
  rules:
     - backendRefs:
        - name: whoami
          namespace: whoami
          port: 80

# ReferenceGrant and Service in the whoami namespace.
---
apiVersion: gateway.networking.k8s.io/v1beta1
kind: ReferenceGrant
metadata:
  name: whoami
  namespace: whoami
spec:
  from:
    - group: gateway.networking.k8s.io
      kind: HTTPRoute
      namespace: default
  to:
    - group: &quot;&quot;
      kind: Service
      name: whoami

---
apiVersion: v1
kind: Service
metadata:
  name: whoami
  namespace: whoami
spec:
  selector:
    app: whoami
  ports:
    - port: 80
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;beyond-the-core-features&quot;&gt;Beyond the core features&lt;/h3&gt;&lt;p&gt;In addition to the core features required to meet the specification, GatewayAPI offers optional extended features that a GatewayController can implement. Traefik v3.1 brings several of these extended features, including &lt;a href=&quot;https://github.com/traefik/traefik/pull/10571?ref=containous.ghost.io&quot;&gt;&lt;u&gt;HTTPURLRewriteFilter,&lt;/u&gt; &lt;/a&gt;&lt;a href=&quot;https://github.com/traefik/traefik/pull/10802?ref=containous.ghost.io&quot;&gt;&lt;u&gt;HTTPRouteRedirect&lt;/u&gt;&lt;/a&gt;, and s&lt;a href=&quot;https://github.com/traefik/traefik/pull/10815?ref=containous.ghost.io&quot;&gt;&lt;u&gt;upport for method and query parameter matching&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;h3 id=&quot;more-than-the-specification&quot;&gt;More than the specification&lt;/h3&gt;&lt;p&gt;When we started our journey with GatewayAPI, our goal was not just to meet the specification but to bring the same robust feature set as our own Kubernetes provider. That&apos;s why Traefik v3.1 also includes support for TCPRoute and TLSRoute, as well as the ability to add Traefik middlewares to your HTTPRoutes using the &lt;a href=&quot;https://gateway-api.sigs.k8s.io/guides/migrating-from-ingress/?h=extensionref&amp;ref=containous.ghost.io#approach-to-extensibility&quot;&gt;&lt;u&gt;ExtensionRef&lt;/u&gt;&lt;/a&gt; mechanism. These features provide even more flexibility and control over your traffic management.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# HTTRoute in the default namespace.
---
apiVersion: gateway.networking.k8s.io/v1
kind: HTTPRoute
metadata:
  name: whoami-http
  namespace: default
spec:
  parentRefs:
    - name: traefik
      kind: Gateway
  rules:
    - backendRefs:
       - name: whoami
         namespace: default
         port: 80

      filters:
       - type: ExtensionRef
         extensionRef:
           group: traefik.io
           kind: Middleware
           name: add-prefix


# Traefik Middleware.
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: add-prefix
  namespace: default
spec:
  addPrefix:
    prefix: /prefix
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;wasm-better-than-ever&quot;&gt;WASM better than ever&lt;/h2&gt;&lt;p&gt;Traefik v3.0 introduced support for&lt;a href=&quot;https://plugins.traefik.io/create?ref=containous.ghost.io&quot;&gt;&lt;u&gt; WASM plugins&lt;/u&gt;&lt;/a&gt; along with the original Yaegi plugins. However, the WASM support had some limitations. One of the limitations was the inability to make HTTP calls using the Go standard library from plugins. The technical reason for this is that a function export mechanism is needed for this, and it’s not yet implemented in Go (but is an accepted &lt;a href=&quot;https://github.com/golang/go/issues/65199?ref=containous.ghost.io&quot;&gt;&lt;u&gt;proposal&lt;/u&gt;&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;The team found a workaround to simulate WASM exports in a WASM compiler in Go. It means, as of today, it is possible to create a full featured WASM plugin in Traefik which does HTTP calls (through the host), import any Go library, etc.&lt;/p&gt;&lt;p&gt;On top of that, we added the possibility to mount shared directories in plugins and also to configure environment variables.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;experimental:
  plugins:
    example:
      moduleName: github.com/traefik/plugindemowasm-http-call
      version: v0.0.2
      settings:
        mounts:
          - /path:/path:ro # Read only mount
          - /tmp/test:/tmp/test # Read Write mount
        envs:
          - TEST_ENV_1
          - TEST_ENV_2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/traefik/plugindemowasm-http-call?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Here is a simple example&lt;/u&gt;&lt;/a&gt; of a plugin in wasm that makes HTTP calls through the host.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# Static configuration
experimental:
  plugins:
    example:
      moduleName: github.com/traefik/plugindemowasm-http-call
      version: v0.0.2
---
# Dynamic configuration
http:
  routers:
    my-router:
      rule: host(`demo.localhost`)
      service: service-foo
      entryPoints:
        - web
      middlewares:
        - my-plugin

  services:
   service-foo:
      loadBalancer:
        servers:
          - url: http://127.0.0.1:5000
  
  middlewares:
    my-plugin:
      plugin:
        example:
          headerName: X-World-Time
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Thanks to this innovative and unique approach, WASM is now a powerful plugin platform in Traefik that we will continue to improve upon moving forward.&lt;/p&gt;&lt;h2 id=&quot;other-improvements&quot;&gt;Other Improvements&lt;/h2&gt;&lt;p&gt;Several contributions were made on Kubernetes:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;By &lt;a href=&quot;https://github.com/marcmognol?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Marc Mognol&lt;/u&gt;&lt;/a&gt; who &lt;a href=&quot;https://github.com/traefik/traefik/pull/10467?ref=containous.ghost.io&quot;&gt;&lt;u&gt;brought&lt;/u&gt;&lt;/a&gt; health checks to &lt;a href=&quot;https://kubernetes.io/docs/concepts/services-networking/service/?ref=containous.ghost.io#externalname&quot;&gt;&lt;u&gt;ExternalName&lt;/u&gt;&lt;/a&gt; services&lt;/li&gt;&lt;li&gt;By &lt;a href=&quot;https://github.com/jnoordsij?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Jesper Noordsij&lt;/u&gt;&lt;/a&gt; who &lt;a href=&quot;https://github.com/traefik/traefik/pull/10664?ref=containous.ghost.io&quot;&gt;&lt;u&gt;migrated&lt;/u&gt;&lt;/a&gt; the Kubernetes provider to the &lt;a href=&quot;https://kubernetes.io/docs/concepts/services-networking/endpoint-slices/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;EnpointSlices&lt;/u&gt;&lt;/a&gt; API&lt;/li&gt;&lt;li&gt;By &lt;a href=&quot;https://github.com/jorisvergeer?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Joris Vergeer&lt;/u&gt;&lt;/a&gt; who &lt;a href=&quot;https://github.com/traefik/traefik/pull/10278?ref=containous.ghost.io&quot;&gt;&lt;u&gt;added&lt;/u&gt;&lt;/a&gt; the possibility to use Node IPs for &lt;a href=&quot;https://kubernetes.io/docs/concepts/services-networking/service/?ref=containous.ghost.io#type-nodeport&quot;&gt;&lt;u&gt;NodePort&lt;/u&gt;&lt;/a&gt; services&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Another great contribution came from &lt;a href=&quot;https://github.com/Belphemur?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Antoine Aflalo&lt;/u&gt;&lt;/a&gt; who &lt;a href=&quot;https://github.com/traefik/traefik/pull/10660?ref=containous.ghost.io&quot;&gt;&lt;u&gt;added&lt;/u&gt;&lt;/a&gt; &lt;a href=&quot;https://en.wikipedia.org/wiki/Zstd?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Zstandard&lt;/u&gt;&lt;/a&gt; to the compress middleware (in addition to Gzip &amp;amp; Brotli). This algorithm is much faster, especially at decompressing.&lt;/p&gt;&lt;p&gt;Support for &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy-Report-Only?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Content-Security-Policy-Report-Only&lt;/u&gt;&lt;/a&gt; was &lt;a href=&quot;https://github.com/traefik/traefik/pull/10709?ref=containous.ghost.io&quot;&gt;&lt;u&gt;added&lt;/u&gt;&lt;/a&gt; by &lt;a href=&quot;https://github.com/SpecLad?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Roman Donchenko&lt;/u&gt;&lt;/a&gt; to the &lt;a href=&quot;https://doc.traefik.io/traefik/v3.1/middlewares/http/headers/?ref=containous.ghost.io#contentsecuritypolicyreportonly&quot;&gt;&lt;u&gt;headers&lt;/u&gt;&lt;/a&gt; middleware.&lt;/p&gt;&lt;p&gt;Finally, we &lt;a href=&quot;https://github.com/traefik/traefik/pull/10399?ref=containous.ghost.io&quot;&gt;&lt;u&gt;added&lt;/u&gt;&lt;/a&gt; support to systemd &lt;a href=&quot;https://www.freedesktop.org/software/systemd/man/latest/systemd-socket-activate.html?ref=containous.ghost.io&quot;&gt;&lt;u&gt;socket activation&lt;/u&gt;&lt;/a&gt;, which allows systemd to listen on socket and dynamically start the associated service. Simply &lt;a href=&quot;https://doc.traefik.io/traefik/v3.1/routing/entrypoints/?ref=containous.ghost.io#systemd-socket-activation&quot;&gt;&lt;u&gt;use the same name for your entrypoint and file descriptor,&lt;/u&gt;&lt;/a&gt; and Traefik will start on systemd demand.&lt;/p&gt;&lt;p&gt;The full release note is available &lt;a href=&quot;https://github.com/traefik/traefik/releases/tag/v3.1.0?ref=containous.ghost.io&quot;&gt;&lt;u&gt;here&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;&lt;p&gt;Traefik release notes are usually pretty packed and this one is no exception. Traefik v3.1 brings critical features to the project with state-of-the-art WASM support that makes Traefik’s plugin platform one of the best in the industry. Being a Kubernetes native product, it goes without saying that Traefik closely follows the latest evolutions of the platform. Traefik is now getting full support of Gateway API v1.1.0 and is ready for production use.&lt;/p&gt;&lt;p&gt;Traefik is almost 10 years old, but like a good wine, is still getting better and better 🙂.&lt;/p&gt;&lt;p&gt;Lastly, a huge thank you to all contributors. Your assistance is invaluable.&lt;/p&gt;&lt;p&gt;See you on GitHub!&lt;/p&gt;&lt;h3 id=&quot;useful-links&quot;&gt;Useful Links&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;Traefik 3.1 on &lt;a href=&quot;https://github.com/traefik/traefik/releases/tag/v3.1.0?ref=containous.ghost.io&quot;&gt;&lt;u&gt;GitHub&lt;/u&gt;&lt;/a&gt; &amp;amp; on &lt;a href=&quot;https://hub.docker.com/_/traefik?ref=containous.ghost.io&quot;&gt;&lt;u&gt;DockerHub&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Traefik &lt;a href=&quot;https://docs.traefik.io/?ref=traefik.io&quot;&gt;&lt;u&gt;Documentation&lt;/u&gt;&lt;/a&gt;, &lt;a href=&quot;https://traefik.io/traefik/?ref=traefik.io&quot;&gt;&lt;u&gt;Website&lt;/u&gt;&lt;/a&gt;, &amp;amp; &lt;a href=&quot;https://github.com/containous/traefik?ref=traefik.io&quot;&gt;&lt;u&gt;GitHub&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://community.traefik.io/?ref=traefik.io&quot;&gt;&lt;u&gt;Our Community Forum&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-158028398339&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:255.06668090820312px; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;158028398339&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJopIkqy9PwxjiexjkTebdknPc%2B1lMv9CoGqRfqx9yrZ6uJu4k%2BqE2uO7QoJE9hsbY2%2Fu1c4YagHrQ4ZCBQ9KWSmNf5JnqrM8ZnFKNFuS20X3M%3D&amp;webInteractiveContentId=158028398339&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Proxy_Ad_02@2x&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-158028398339.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[The API Gateway Model: Centralizing Control in Complex Microservices Architectures]]></title>
            <description><![CDATA[API gateways help you centralize and simplify routing, load balancing, and access control. Modern API gateways take these benefits even further. Find out how.]]></description>
            <link>https://traefik.io/the-api-gateway-model-centralizing-control-in-complex-microservices-architectures</link>
            <guid isPermaLink="true">https://traefik.io/the-api-gateway-model-centralizing-control-in-complex-microservices-architectures</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[#api-gateway-related-resource]]></category>
            <category><![CDATA[Access Control]]></category>
            <category><![CDATA[Strategy]]></category>
            <dc:creator><![CDATA[Immánuel Fodor]]></dc:creator>
            <pubDate>Wed, 26 Jun 2024 22:24:48 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/06/Centralize-Control-in-Complex-Architectures---no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;API Gateway Model: Centralize Control in Complex Architectures&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/06/Centralize-Control-in-Complex-Architectures---no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/06/Centralize-Control-in-Complex-Architectures---no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/06/Centralize-Control-in-Complex-Architectures---no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/06/Centralize-Control-in-Complex-Architectures---no-copy.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Imagine an organization with hundreds or even thousands of microservices, each responsible for a specific function or feature. Routing requests across these services, managing authentication and authorization, load balancing traffic, and ensuring system resilience can quickly become a daunting task.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Mortgage provider &lt;a href=&quot;https://traefik.io/blog/amerisave-migrates-with-traefik-enterprise/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Amerisave&lt;/u&gt;&lt;/a&gt;, with a presence in 49 states, 5,000 employees, and on-prem legacy infrastructure with more than 150 servers handling up to 40,000 requests per second, had to consider that in its migration to &lt;a href=&quot;https://traefik.io/solutions/docker-swarm-ingress/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;microservices using Docker Swarm&lt;/u&gt;&lt;/a&gt;. Without centralized control of routing, security, and other distributed functions, Amerisave and organizations like it risked introducing silos, inconsistencies, and potential security vulnerabilities, ultimately making it more difficult to scale and adapt to changing business needs.&lt;/p&gt;&lt;p&gt;One such solution that exemplifies the principles of centralized control of distributed functions is the use of an API gateway.&lt;/p&gt;&lt;h2 id=&quot;the-api-gateway-model&quot;&gt;The API Gateway Model&lt;/h2&gt;&lt;p&gt;The API gateway model provides companies with a centralized way to manage routing, authentication, and authorization. This model enables developers to offload the complexities of routing and security to DevOps, platform, or security teams, allowing developers to focus on building the applications. Let’s discuss the architecture of this model.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-190241936960&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;190241936960&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLL7QjdZ%2BE0aLDmqzFd9h6fZkzrDaNRuYEh0HCP95vWQBoGopm4sLX9zqx6fhFJV%2B9NuMKGHpQ3q2CmtysEpFCA1aTUbZzLJcPSXJf4QP%2Bp%2BbnRR3MX0dZ6d6wHcWMAqBugaMCZJSRi4X2lMSEXBigALtXwyb1%2FO06FMsM0HB0bdVFVdi11%2FQJLGPyJ9HbR4GVP9keUMaHvHhIG26yicpg%3D%3D&amp;webInteractiveContentId=190241936960&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Watch API Gateway Demo&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-190241936960.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;But first, what is an API gateway?&lt;/p&gt;&lt;p&gt;An&lt;a href=&quot;https://traefik.io/solutions/api-gateway/?ref=traefik.io&quot;&gt; &lt;u&gt;API gateway&lt;/u&gt;&lt;/a&gt; is a single entry point into your microservices that routes your clients’ API requests to the backend microservices in your network. An API gateway functions very similarly to a &lt;a href=&quot;https://traefik.io/glossary/reverse-proxy/?ref=traefik.io&quot;&gt;&lt;u&gt;reverse proxy&lt;/u&gt;&lt;/a&gt; for standard user-facing applications in that it routes incoming requests to the correct API in the backend.&lt;/p&gt;&lt;p&gt;Considering we have covered this already in our glossary, I won’t be going in more depth here. If you need a refresher on the basics, please see &lt;a href=&quot;https://traefik.io/glossary/api-gateway-101/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;this API Gateway glossary article&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/06/api-gateway-diagram.png&quot; class=&quot;kg-image&quot; alt=&quot;API Gateway Diagram in modern architecture&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1073&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/06/api-gateway-diagram.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/06/api-gateway-diagram.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/06/api-gateway-diagram.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w2400/2024/06/api-gateway-diagram.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;API gateway in modern infrastructure&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;Because API gateways live in front of all services and DevOps teams are able to centralize control, the API Gateway model is far more efficient than models that require, for example,&lt;a href=&quot;https://traefik.io/glossary/openid-connect-everything-you-need-to-know/?ref=traefik.io&quot;&gt; &lt;u&gt;authentication and authorization&lt;/u&gt;&lt;/a&gt; to be configured in each service.&lt;/p&gt;&lt;p&gt;There are numerous benefits to the API gateway model, a few of which we’ll explore here.&lt;/p&gt;&lt;h2 id=&quot;improved-routing-load-balancing-and-system-resilience&quot;&gt;Improved Routing, Load Balancing, and System Resilience&lt;/h2&gt;&lt;p&gt;At the core of centralized control lies the ability to consolidate routing logic and load balancing mechanisms. Because they’re the single entry point for all external traffic, API gateways simplify routing in complex architectures and eliminate the need for individual microservices to handle routing logic independently, ensuring consistency, reducing redundancy, and facilitating easier maintenance and updates.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Additionally, modern, &lt;a href=&quot;https://traefik.io/traefik-hub-api-gateway/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;cloud native API gateways&lt;/a&gt; offer dynamic service discovery with automated default configurations, advanced load balancing (blue/green, canary, etc.), and intelligent routing based on factors such as resource utilization, response times, and health checks. Add &lt;a href=&quot;https://traefik.io/glossary/rate-limiting-what-it-is-and-why-it-matters/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;rate limiting&lt;/u&gt;&lt;/a&gt; and circuit breaking to this list, and you can see why API gateways are effective tools for streamlining the management of complex architectures, fostering scalability, and enhancing system resilience.&lt;/p&gt;&lt;h2 id=&quot;better-authentication-and-authorization-management&quot;&gt;Better Authentication and Authorization Management&lt;/h2&gt;&lt;p&gt;A core reason companies move towards an API gateway model is security. Not only do API gateways tend to be compatible with modern authentication and authorization protocols (OIDC, JWT, etc.), but they also streamline security management by centralizing access control and even helping to automate it.&lt;/p&gt;&lt;p&gt;Managing access control at the service level, in contrast, requires tedious manual configuration, increases the risk of human error, and opens you up to attacks. Add to this that most companies have hundreds, if not thousands of microservices and APIs to expose, and you can see how embedding access control into each service is not scalable and overly burdensome on developers.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/06/Diagram-02.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Managing access control on service level&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1133&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/06/Diagram-02.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/06/Diagram-02.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/06/Diagram-02.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/06/Diagram-02.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Managing access control on service level&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;By enforcing authentication and authorization policies at the API gateway level, you’re able greatly simplify the configuration and maintenance of new and existing access control policies. And with everything in one place, managed by one team, policies can be enforced consistently (and even automatically with dynamic service discovery and configuration). This leaves less room for human error, reduces development overhead, and minimizes vulnerabilities from inconsistent implementations across different services.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/06/Diagram-03.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Managing access control via API Gateway model&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1133&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/06/Diagram-03.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/06/Diagram-03.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/06/Diagram-03.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/06/Diagram-03.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Managing access control via API gateway model&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;If you choose a modern API gateway for your stack, you’ll also be able to take advantage any authentication and authorization protocol—including LDAP, JWT, OAuth, OpenID Connect, HMAC, and API keys—as well as direct integrations with identity providers (IdPs). The best gateways also support advanced authorization mechanisms, such as Open Policy Agent (OPA), which allow organizations to implement fine-grained access control policies based on complex rules and contextual data.&amp;nbsp;&lt;/p&gt;&lt;h2 id=&quot;streamlined-change-management&quot;&gt;Streamlined Change Management&lt;/h2&gt;&lt;p&gt;As new instances of microservices are introduced or existing ones are scaled up or down, they have to be configured. Whether it’s registering, routing, load balancing, or securing the service, change management is no small feat.&lt;/p&gt;&lt;p&gt;And the more decentralized and manual this process, the more likely you are to have issues. With the API gateway model, however, this can all happen at a single point, ensuring optimum consistency and control.&lt;/p&gt;&lt;p&gt;The best API gateways take this even further and automate service discovery and default configuration. As your team spins up new services or makes changes to existing ones, the API gateway gets to work. New services are registered and the default routing, load balancing, rate limiting, access control, and other defaults are applied dynamically. The best solutions are able to deploy these changes dynamically without restarts or service disruptions.&lt;/p&gt;&lt;p&gt;This dynamism ensures teams remain agile and responsive to changing business needs, which is crucial in today&apos;s fast-paced business environment.&amp;nbsp;&lt;/p&gt;&lt;h2 id=&quot;comprehensive-monitoring-and-observability&quot;&gt;Comprehensive Monitoring and Observability&lt;/h2&gt;&lt;p&gt;Monitoring and observability are essential. Whether it&apos;s identifying performance bottlenecks, detecting issues before they happen, or ensuring compliance with service-level agreements, the ability to monitory your system is a must.&lt;/p&gt;&lt;p&gt;As architectures become more complex, having a centralized tool that gathers and monitors system data becomes all the more important. This is where an API gateway model can help.&lt;/p&gt;&lt;p&gt;Monitoring traffic flow, load balancing, and overall system health is much more challenging without a centralized point through which all this data flows. And considering how API gateways help you centralize routing, security, etc., observability is no different.&lt;/p&gt;&lt;p&gt;API gateways offer some built-in metrics that cover a wide range of dimensions. These can include request rates, response times, error rates, and more. They may also provide built-in dashboards or the ability to visualize data using third-party observability tools, such as Prometheus, Grafana, and Elasticsearch.&lt;/p&gt;&lt;p&gt;This is nice, but modern API gateways take observability to the next level. They are &lt;a href=&quot;https://traefik.io/blog/opentelemetry-traefik-hub/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;increasingly aligned to OpenTelemetry&lt;/u&gt;&lt;/a&gt; (OTel), a standard for dynamic systems telemetry data that replaces multiple vendor-specific solutions. OTel unifies disparate data, ensures consistent instrumentation across various programming languages, and offers enhanced insights into application use, health, and performance.&lt;/p&gt;&lt;p&gt;For example, API gateways with best-in-class OTel support can illuminate request patterns, authentication and authorization events, system-level events, and issue correlations. You may even have the ability to remove or mask GDPR-related Personally Identifiable Information (PII) in logs to comply with security requirements. This level of visibility and control enables organizations to troubleshoot issues more effectively, identify potential security threats, and optimize their applications performance.&lt;/p&gt;&lt;h2 id=&quot;integration-with-orchestration-tools&quot;&gt;Integration with Orchestration Tools&lt;/h2&gt;&lt;p&gt;The last benefit of the API gateway model we’ll discuss here is the stitching together of complex, often disparate, environments. As organizations move from monolithic to microservices architectures, they often need to manage routing, security, &lt;em&gt;et al.&lt;/em&gt; across hybrid cloud, multi-cloud, and mulit-orchestrator deployment models.&lt;/p&gt;&lt;p&gt;This is no easy feat. And the larger the company, the more you’re likely have have different teams working in different environments. So how can you tame such a complex beast?&lt;/p&gt;&lt;p&gt;API gateways can be used as a unifying layer, ensuring consistent control and governance over distributed systems, regardless of the underlying infrastructure or orchestration platform. One consideration here is that not all API gateways are natively compatible with all orchestrators.&lt;/p&gt;&lt;p&gt;This is another situation where modern, cloud native API gateways shine. Regardless of your orchestrator or deployment model, the best gateway solutions will behave the same in all instances. They don’t require you to operate them differently depending on the environment, and they might even be able to communicate with each other to further centralize your operations.&lt;/p&gt;&lt;p&gt;With this level of flexibility, your organization can grow and change, being responsive to it’s needs today and in the future, without the pressures of vendor lock-in or imminent rip and replace headaches.&lt;/p&gt;&lt;h2 id=&quot;it%E2%80%99s-time-to-centralize-control&quot;&gt;It’s Time to Centralize Control&lt;/h2&gt;&lt;p&gt;The API gateway model has clear advantages, particularly as infrastructures scale and become more complex. Centralizing critical functions, such as routing, security, load balancing, and observability can have profound effects on your organization. Efficiency, consistency, agility, and scalability can all increase dramatically when an API gateway model is implemented well (and &lt;a href=&quot;https://info.traefik.io/api-gateway-buyers-guide?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;when the API gateway you choose is right for you&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;Modern, cloud native API gateways magnify all the benefits of the API gateway model. From dynamic configurations to native support for all orchestrators and deployment models, the best of the best API gateways tame complexity and make it possible to scale how and where you need.&lt;/p&gt;&lt;p&gt;Are you ready for that?&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-190241936960&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;190241936960&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLL7QjdZ%2BE0aLDmqzFd9h6fZkzrDaNRuYEh0HCP95vWQBoGopm4sLX9zqx6fhFJV%2B9NuMKGHpQ3q2CmtysEpFCA1aTUbZzLJcPSXJf4QP%2Bp%2BbnRR3MX0dZ6d6wHcWMAqBugaMCZJSRi4X2lMSEXBigALtXwyb1%2FO06FMsM0HB0bdVFVdi11%2FQJLGPyJ9HbR4GVP9keUMaHvHhIG26yicpg%3D%3D&amp;webInteractiveContentId=190241936960&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Watch API Gateway Demo&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-190241936960.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;

&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[5 Essential Qualities All API Gateways Need in 2024]]></title>
            <description><![CDATA[Let’s explore the five essential features your API gateway must possess to empower your developers, elevate security, and maximize business agility.]]></description>
            <link>https://traefik.io/5-qualities-all-api-gateways-need-in-2024</link>
            <guid isPermaLink="true">https://traefik.io/5-qualities-all-api-gateways-need-in-2024</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[DevOps]]></category>
            <category><![CDATA[Let's Encrypt]]></category>
            <category><![CDATA[SSL / TLS]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[Strategy]]></category>
            <dc:creator><![CDATA[Immánuel Fodor]]></dc:creator>
            <pubDate>Thu, 06 Jun 2024 22:49:07 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/06/feature-image-no-copy---5-qualities-of-api-gateways-2024.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/06/feature-image-no-copy---5-qualities-of-api-gateways-2024.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/06/feature-image-no-copy---5-qualities-of-api-gateways-2024.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/06/feature-image-no-copy---5-qualities-of-api-gateways-2024.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/06/feature-image-no-copy---5-qualities-of-api-gateways-2024.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;In the constantly evolving digital landscape, APIs are the connective tissue that powers modern applications. A &lt;a href=&quot;https://traefik.io/solutions/api-gateway/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;well-designed API gateway&lt;/a&gt; acts as the central nervous system for your API ecosystem, streamlining access, management, and security. But with the rapid pace of innovation, simply having an API gateway isn&apos;t enough. In 2024, you need a modern API gateway to stay ahead of the curve and not be left behind in the digital stone age.&lt;/p&gt;&lt;p&gt;Let’s explore the five essential features your API gateway must possess to empower your developers, elevate security, and maximize business agility. We&apos;ll explore simplicity and ease of use, container orchestration integration, security features, extensibility, and embracing GitOps principles for declarative configuration. With these at the top of your evaluation criteria, you&apos;ll be better equipped to select the perfect API gateway for your organization&apos;s needs.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-169083275181&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px; height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;169083275181&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLIkMktA9qLULrcu%2FUN%2FDw38ReEyGU%2B%2BIMLL8v%2Bj2lqeRpcmEUwThGudRpY%2BjfaLsf4%2BqTmU3aLhxeNCIBeFfuWHZh1t1Dh0122aY09%2FVNRIAbbUCQPi5t%2BlY%2FZ1%2FEovhMSpf4BQjf%2BSany6vOA1Hjl2hA8C6Qt0olD8FAuIpT6T2dR5PIriWhAlWvpwoCCwP45plFO%2F1P8wD4BgDrPU&amp;webInteractiveContentId=169083275181&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Square Image - 1200 x 1200(7)&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-169083275181.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;1-simplicity-and-ease-of-use-are-the-cornerstone-of-agility&quot;&gt;#1 Simplicity and Ease of Use are The Cornerstone of Agility&lt;/h2&gt;&lt;p&gt;Developers are your key partners. A modern API gateway should prioritize developer experience (DX) by offering a clean, intuitive interface and a robust set of tools, ensuring they can navigate, configure, and deploy APIs and microservices without unnecessary friction. This translates to:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Reduced learning curve&lt;/strong&gt;: A convenient user interface and clear documentation enable developers to grasp the API gateway&apos;s functionalities quickly, minimizing onboarding time and maximizing productivity. Note that a user interface doesn’t necessarily mean a clickable UI; it can also be any interface that allows configuration.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Streamlined development&lt;/strong&gt;: Powerful tools for defining routes, security policies, and request or response modification should be readily available along with automation, allowing developers to focus on business logic rather than getting bogged down in configuration.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Rapid prototyping and iteration&lt;/strong&gt;: Simplicity fosters agility. The ease of publishing and modifying APIs within the gateway empowers developers to prototype and iterate, accelerating innovation and time-to-market rapidly.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Here are two real-world examples: Axione, a French telecommunications company, leveraged a user-friendly API gateway to &lt;a href=&quot;https://traefik.io/blog/axione-simplifies-and-secures-deployments-traefik-enterprise-api-gateway/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;save countless hours every month&lt;/u&gt;&lt;/a&gt; by reducing configuration updates in multiple clusters to just a few minutes with zero downtime. ABAX, a multi-national IoT (internet of things) company, &lt;a href=&quot;https://traefik.io/blog/abax-migrates-with-traefik-enterprise/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;spends very little time training people&lt;/u&gt;&lt;/a&gt;. They give them the basic understanding they need and then move on. Saving so much time, like these companies, can also allow you to capitalize on a critical market window that might never come again.&amp;nbsp;&lt;/p&gt;&lt;p&gt;But simplicity extends beyond developer efficiency. A modern API gateway should also champion:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Faster time to change&lt;/strong&gt;: Configuration changes should be straightforward and easily rolled out, minimizing downtime and disruption during updates. Imagine a scenario where a critical bug fix needs immediate deployment. A modern, streamlined API gateway enables this with minimal hassle.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Rapid disaster recovery&lt;/strong&gt;: In the event of an outage, a modern API gateway with predictable configuration rollback features allows for swift restoration, ensuring business continuity and minimizing revenue loss. According to the trusted &lt;a href=&quot;https://dora.dev/publications/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;DORA&lt;/u&gt;&lt;/a&gt; metrics, companies with high, on-demand deployment frequency can minimize the change-failure rate to only 5% and recover from a failure in less than 1 hour (which can still cost businesses an &lt;a href=&quot;https://www.atlassian.com/incident-management/kpis/cost-of-downtime?ref=containous.ghost.io&quot;&gt;&lt;u&gt;average of $9,000 per minute&lt;/u&gt;&lt;/a&gt;, so you should cut it down as much as possible). Since the industry average for recovery is between a day and one week, a speed like this can put you at the top performing 20%, minimizing customer impact and protecting your brand reputation.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Finally, a modern API gateway shouldn&apos;t burden developers with tedious configuration tasks. Here&apos;s where features like the following help:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Sane defaults&lt;/strong&gt;: Out-of-the-box configurations catering to common use cases minimize manual setup and avoid divergence from industry best practices.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Auto-discovery of services&lt;/strong&gt;: Modern API gateways can automatically detect and integrate with backend services, saving developers valuable configuration time.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Scalability and high availability&lt;/strong&gt;: The gateway should seamlessly scale to accommodate traffic spikes and ensure continuous API access, freeing developers from infrastructure concerns and allowing them to focus on building exceptional applications.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;While many API gateways exist, some fall short on simplicity and ease of use. Avoid UI-heavy solutions because a complex, cluttered user interface can hinder developer productivity. Some API gateways on the market even require navigating a labyrinth of menus and options just to perform basic configurations.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Don’t frustrate your developers, nor waste their time! Also, beware of manual drudgery and gateways without auto service discovery. Manually configuring every backend service integration can be a tedious and error-prone process, especially for large deployments. &lt;/p&gt;&lt;h2 id=&quot;2-embrace-the-container-revolution-with-native-integrations&quot;&gt;#2 Embrace the Container Revolution with Native Integrations&lt;/h2&gt;&lt;p&gt;The landscape is shifting. Bare-metal deployments and virtual machines (VMs) are giving way to cloud-native architectures built on containerization. But considering cloud migration doesn’t happen overnight, modern API gateways need to be able to handle both legacy and cloud-based workloads.&lt;/p&gt;&lt;p&gt;Deep container orchestration integration, first and foremost, means Kubernetes. Kubernetes reigns supreme in the container orchestration realm. A modern API gateway should seamlessly integrate with Kubernetes, allowing you to leverage its powerful features for service discovery, load balancing, and health checks. This simplifies API deployment and management within your containerized environment.&lt;/p&gt;&lt;p&gt;But what about beyond Kubernetes?&lt;/p&gt;&lt;ul&gt;&lt;li&gt;A truly modern API gateway shouldn&apos;t limit you. It should offer first-class support for other cloud-native orchestrators like Docker Swarm and HashiCorp Nomad, ensuring flexibility for your specific infrastructure needs.&lt;/li&gt;&lt;li&gt;Modern applications often leverage a diverse set of backend services; furthermore, many organizations operate in hybrid environments, with a mix of on-premises infrastructure and cloud deployments. A modern API gateway should bridge this gap and be able to serve APIs from many sources simultaneously. It should seamlessly expose APIs residing on-premises and across various cloud providers and Kubernetes distributions. This flexibility empowers you to manage your entire API ecosystem from a single pane of glass.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Effective traffic routing is crucial for application performance and user experience to support all this complexity. A modern API gateway acting as the central hub for all your API traffic should offer intelligent routing capabilities, allowing you to route requests based on various factors like hostname, path, HTTP method, request headers, JWT claims, or even a mix of all these. This granularity empowers you to deliver the right service to the right user at the right time, optimizing performance and security.&lt;/p&gt;&lt;p&gt;To give you a real-life example, AmeriSave, a mortgage company in the financial services industry, faced similar challenges as they were migrating from an on-premises monolith to a cloud-based microservices architecture. They needed to keep APIs online from both systems during the transition. A &lt;a href=&quot;https://traefik.io/blog/amerisave-migrates-with-traefik-enterprise/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;flexible, multi-orchestrator API gateway&lt;/u&gt;&lt;/a&gt; helped them to make this happen and have a smooth and consistent process.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/06/Diagram-1-.png&quot; class=&quot;kg-image&quot; alt=&quot;Diagram of multi-orchestrator API gateway architecture.&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1373&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/06/Diagram-1-.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/06/Diagram-1-.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/06/Diagram-1-.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/06/Diagram-1-.png 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;However, not all integrations are created equal, you should avoid pitfalls while working in the field. While container orchestration offers numerous advantages, some API gateways fall short in this area. Watch out for:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Limited Kubernetes capabilities&lt;/strong&gt;: While some API gateways might offer a basic Kubernetes integration or can be run inside Kubernetes, true interoperability is key. Avoid API gateways that lack robust Kubernetes features like service discovery, health checks, and Kubernetes-native CRDs (Custom Resource Definition) to declare configuration, as these will only increase the manual configuration burden and potential for human error. Many solutions were born before Kubernetes or even the cloud-native era, so they lack this critical capability.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Cloud vendor lock-in&lt;/strong&gt;: Beware of API gateways restricting you to a specific cloud provider&apos;s (Kubernetes) offering. A modern API gateway should be cloud-agnostic, supporting various Kubernetes distributions across multiple cloud providers. This flexibility ensures you&apos;re not locked into a single vendor and can adapt to your evolving needs.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Orchestration singularity&lt;/strong&gt;: While Kubernetes is the leader, some situations can leverage other orchestrators, and vice versa, one single non-Kubernetes orchestrator support is also not enough. Make sure your API gateways don’t limit you to just one or two environments. Instead, seek one that offers broader support for various container orchestration platforms to make your containerization strategy future-proof.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;These are just a few cautionary tales. Remember, a modern API gateway should empower you to build and deploy APIs that align with your unique infrastructure and business situation.&lt;/p&gt;&lt;h2 id=&quot;3-protecting-your-apis-in-a-hostile-world&quot;&gt;#3 Protecting Your APIs in a Hostile World&lt;/h2&gt;&lt;p&gt;Security is non-negotiable in a world marked by relentless cyber threats and strict regulatory requirements. A modern API gateway must serve as the vanguard of your digital fortress, offering a comprehensive suite of security features to safeguard your data, services, and reputation.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Secure a wide range of protocols easily&lt;/strong&gt;: Modern APIs leverage diverse protocols. A robust API gateway should secure these protocols uniformly at a centralized point. This includes common protocols like HTTP, TCP, UDP, WebSockets, and even gRPC. Centralizing security policies can streamline management and ensure consistent protection across your entire API ecosystem.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Authentication and authorization&lt;/strong&gt;: The bedrock of any secure API ecosystem lies in robust authentication and authorization mechanisms to control who can access what. A modern API gateway should offer a robust arsenal of options, including industry standards like API keys, LDAP, JWT (JSON Web Tokens), OAuth2, OIDC (OpenID Connect), and HMAC (Hash-based Message Authentication Code). Implement the most suitable authentication mechanisms for each API, ensuring untrusted actors can’t misuse them.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Effective traffic management&lt;/strong&gt;: This is essential for optimizing performance, enhancing resilience, and ensuring a superior user experience. A feature-rich API gateway facilitates advanced traffic management capabilities, including:&amp;nbsp;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Traffic mirroring&lt;/strong&gt;—troubleshooting and security analysis&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Blue/green and canary deployments&lt;/strong&gt;—safely roll out new API versions with minimal risk&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Session stickiness&lt;/strong&gt;—maintain user sessions with specific upstream backends&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Active health checks&lt;/strong&gt;—continuously monitor the health of backend services and ensure API uptime SLAs&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Circuit breakers&lt;/strong&gt;—protect against cascading failures&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Retries and buffering&lt;/strong&gt;—enhance API resilience towards temporary network issues&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Distributed in-flight request and rate limiting&lt;/strong&gt;—evade denial-of-service attacks.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Built-in Let&apos;s Encrypt support&lt;/strong&gt;: Securing communication channels with Transport Layer Security (TLS) is a &lt;a href=&quot;https://traefik.io/glossary/https-encryption-tls-ssl-letsencrypt/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;non-negotiable security best practice&lt;/a&gt;. Let’s Encrypt is the most well-known ACME (Automated Certificate Management Environment) compatible TLS certificate authority. A modern API gateway should offer built-in ACME/Let&apos;s Encrypt support, simplifying the process of obtaining and managing TLS certificates. This aligns with the esteemed Electronic Frontier Foundation&apos;s (EFF) &lt;a href=&quot;https://www.eff.org/deeplinks/2024/03/should-caddy-and-traefik-replace-certbot?ref=containous.ghost.io&quot;&gt;&lt;u&gt;recommendation to leverage tools like Traefik&lt;/u&gt;&lt;/a&gt; that offer integrated support for certificate automation, moving away from external tools like Certbot.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Without such robust features, Leroy Merlin, a home improvement and gardening retailer, couldn’t have made it &lt;a href=&quot;https://traefik.io/blog/leroy-merlin-leverages-traefik-enterprise/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;&quot;effortless to manage&quot; 50 clusters&lt;/u&gt;&lt;/a&gt; in parallel securely. With other API gateways, the team would expend time building and maintaining certificates with CertManager or other external tools requiring maintenance, expertise, and attention.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Beware of API gateways that offer a limited security feature set. While they might provide basic functionalities, advanced capabilities like fine-grained security policy enforcement might be missing. This can leave your APIs vulnerable to sophisticated attacks. You can also encounter API gateways that offer robust security features but are limited to a specific orchestration platform. You must not compromise on security and must be able to leverage best-of-breed security solutions across your entire infrastructure.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Remember, security is an ongoing process that requires constant adaptation. Stakes are high, and threats are widespread—avoid gateways that restrict customization and extensibility options to tailor security measures to your specific needs.&lt;/p&gt;&lt;h2 id=&quot;4-embrace-extensibility-for-a-future-proof-api-gateway&quot;&gt;#4 Embrace Extensibility for a Future-Proof API Gateway&lt;/h2&gt;&lt;p&gt;Meeting your current needs is nice, but a modern API gateway must also evolve alongside your organization&apos;s growth and changing requirements.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Imagine you&apos;re stuck in a walled garden. You can still move around, but it&apos;s hard to get out. Vendor lock-in is similar. The vendor creates a system where switching to another provider is inconvenient and costly, and you must move at the pace the vendor lets you by shipping new features according to their roadmap, not yours. For this reason, it’s best to avoid API gateways that lock you into a specific vendor&apos;s feature set. Extensibility empowers you to integrate best-of-breed solutions and customize your API gateway to meet your unique needs when needed.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;A&lt;/strong&gt; &lt;strong&gt;rich plugin ecosystem&lt;/strong&gt; is a hallmark of a modern API gateway, amplifying its versatility. Built-in plugins can extend core functionalities, while the ability to create custom plugins allow you to address specific use cases. Security is a prime example. Custom plugins can be leveraged to fortify the gateway with advanced security features like a Web Application Firewall (WAF).&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;WebAssembly (Wasm)&lt;/strong&gt; has emerged as a game-changer in extensibility. By supporting WASM-based plugins, an API gateway opens the door to a world of possibilities, enabling portable, lightweight, high-performance customization without sacrificing security or efficiency. This opens the door to a vast array of innovative plugins that can extend the gateway&apos;s capabilities in unprecedented ways.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Open-source development&lt;/strong&gt; fosters innovation and rapid improvement. An API gateway and a plugin ecosystem built on open-source foundations driven by a passionate community ensures continuous feature enhancements and a future-proof platform. You can also contribute and receive feedback and improvements to your added functionality from the community.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Did you know that Traefik has &lt;a href=&quot;https://owasp.org/blog/2024/03/19/traefik_owasp?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;recently joined OWASP&lt;/a&gt;, a well-known non-profit organization focused on improving software security, particularly web application security? OWASP is endorsing the use of the &lt;a href=&quot;https://coraza.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Coraza WAF&lt;/u&gt;&lt;/a&gt;, which is the successor to ModSecurity-based WAF solutions. Traefik v3 adds support for Coraza as a &lt;a href=&quot;https://traefik.io/blog/traefik-3-deep-dive-into-wasm-support-with-coraza-waf-plugin/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Wasm-based WAF plugin&lt;/u&gt;&lt;/a&gt;, created by a community member who is, in fact, the author of the Coraza WAF. What a great example of the opening three points working together!&lt;/p&gt;&lt;p&gt;A modern API gateway with WAF integration empowers you to leverage &lt;a href=&quot;https://traefik.io/blog/why-does-waf-matter-in-api-security/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;industry-leading protection mechanisms&lt;/u&gt;&lt;/a&gt; to safeguard your APIs against sophisticated attacks. This is made possible by the power of extensibility, allowing you to integrate best-in-class security solutions as they become available on the market, not by relying on the vendor&apos;s mercy to add them when they feel like it.&lt;/p&gt;&lt;p&gt;Vendor lock-in is also a barrier to observability. A modern API gateway should embrace &lt;a href=&quot;https://opentelemetry.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OpenTelemetry&lt;/u&gt;&lt;/a&gt;, an industry standard for collecting and analyzing API metrics, traces, and logs. This empowers you to get comprehensive insights into your API ecosystem&apos;s health and performance not just from one vendor-specific tool but any compatible tool, even your existing monitoring tools if they support the standard.&amp;nbsp;&lt;/p&gt;&lt;p&gt;What are the signs that your API gateway is failing in these areas?&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Some gateways rely on Lua or C-based extensions. While these programming languages have their place, working with them can be cumbersome. Compiling the gateway from source code for even basic extensions adds unnecessary complexity and hinders development agility.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Also, beware of gateways that lock essential features behind a paywall, such as analytics, which should be core offerings in a modern API Gateway.&amp;nbsp;&lt;/li&gt;&lt;li&gt;While WASM promises extensibility and allows you to leverage the language that best suits your development team&apos;s expertise, resource consumption remains a concern. A modern API gateway should balance extensibility with resource efficiency, ensuring smooth operation even with a robust plugin ecosystem.&lt;/li&gt;&lt;li&gt;Deep integrations can be convenient, but they can also lock you into a single vendor and hinder your ability to leverage best-of-breed solutions from other providers. Some gateways are so deeply intertwined with a specific cloud vendor&apos;s ecosystem or offered by the cloud provider itself that extensibility becomes an afterthought.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;And last but not least, your needs might evolve as your API ecosystem matures. A modern API gateway should make migrating to a more &lt;a href=&quot;https://traefik.io/traefik-hub/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;comprehensive API Management solution&lt;/u&gt;&lt;/a&gt; smooth. Extensibility is key here, ensuring a seamless transition and minimal disruption to your existing API infrastructure.&lt;/p&gt;&lt;h2 id=&quot;5-taming-complexity-with-declarative-magic&quot;&gt;#5 Taming Complexity with Declarative Magic&lt;/h2&gt;&lt;p&gt;We&apos;ve explored four out of the five essential features of a modern API gateway: simplicity, container orchestration integration, robust security, and extensibility. But how do you harness these capabilities and streamline your API development workflow? Enter GitOps, the unifying force that brings them all together.&lt;/p&gt;&lt;p&gt;GitOps embraces a declarative approach to configuration management. Instead of writing custom, complex scripts procedurally, developers simply define the desired state of the API gateway in a Git repository. They can then focus on configuring security settings, traffic management policies, plugins, and more through a declarative, code-based approach, leaving the underlying infrastructure management to GitOps automation.&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;This beautifully fits with our emphasis on developer experience. By leveraging Kubernetes CRDs stored in Git, GitOps eliminates the need to learn complex configuration languages specific to the API gateway. It also makes auditing changes a breeze, enhancing security and deploying changes easily without manual tinkering. All these translate to &lt;a href=&quot;https://traefik.io/blog/how-modern-api-gateways-make-devops-engineers-more-efficient/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;faster onboarding, fewer errors, and a more productive development&lt;/a&gt; environment.&lt;/li&gt;&lt;li&gt;Remember our focus on simplicity? GitOps delivers on this promise by enabling you to deploy your API gateway configuration to any environment using the same GitOps workflows. Imagine seamlessly deploying your API gateway configuration from development to staging and then to production just by using simple Git commits, automatically checking for mistakes in the process. This consistency minimizes errors and streamlines the deployment pipeline across your entire infrastructure.&lt;/li&gt;&lt;li&gt;GitOps also empowers you to leverage Git&apos;s power for security and incident management. Version control ensures a clear audit trail of all configuration changes, allowing you to easily roll back to a previous version in case of an issue. Additionally, Git branching strategies can be used to implement secure development workflows, such as pull requests for reviewing changes before deployment. This fosters a culture of security by design within your API development lifecycle.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Managing API versions&lt;/strong&gt; has never been easier; GitOps excels at it. Each commit in your Git repository represents a specific API gateway configuration. Developers can experiment with new API versions in isolation before deploying them to production, minimizing risk and ensuring a smooth evolution of your API ecosystem.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;For a deeper look at how GitOps empowers platform teams, check out this other article on the Traefik Labs blog: &lt;a href=&quot;https://traefik.io/blog/how-modern-api-gateways-make-devops-engineers-more-efficient/?ref=containous.ghost.io&quot;&gt;&lt;em&gt;&lt;u&gt;How Modern API Gateways Make DevOps Engineers More Efficient&lt;/u&gt;&lt;/em&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;While GitOps offers a compelling approach to managing API gateways, some fail to deliver in this crucial area:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Avoid gateways that require additional tools, pretending they comply with GitOps-based workflows. A modern API gateway should natively embrace GitOps for declarative configuration management. However, some gateways require convoluted GitOps pipelines that become cumbersome to manage, especially when scaling to many APIs. This defeats the purpose of GitOps—it should simplify, not complicate.&lt;/li&gt;&lt;li&gt;Relying on an imperative (and not declarative) administrative API approach can also be inflexible and error-prone. Declarative GitOps empowers you to define the desired state, leaving the &quot;how&quot; to the automation tools. Rely on it for its clarity, version control benefits, and ease of rollback.&lt;/li&gt;&lt;li&gt;Modern gateways embrace configuration hot reloading, minimizing downtime during configuration updates, which can be frequent with GitOps. Avoid gateways that require full proxy reloads after every configuration change, losing active connections and hurting uptime.&lt;/li&gt;&lt;li&gt;And finally, if GitOps compatibility isn&apos;t a major focus for the API gateway vendor, it might not be the future-proof solution you seek.&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;wrapping-it-up&quot;&gt;Wrapping It Up&lt;/h2&gt;&lt;p&gt;These days, applications often rely on many microservices, each with its own API, effectively increasing complexity to unprecedented levels. The API gateway has emerged as the cornerstone of this, now, often virtualized infrastructure. It is the gatekeeper between internal systems, external partners, and end-users, orchestrating the data flow and interactions with great finesse and efficiency.&amp;nbsp;&lt;/p&gt;&lt;p&gt;But not just any API gateway will do. Only a modern solution equipped with the discussed 5 essential capabilities empowers you to build exceptional APIs, accelerate development lifecycles, and confidently navigate the ever-evolving landscape of application development.&lt;/p&gt;&lt;p&gt;Want to know more about choosing an API gateway in 2024? Download our free API gateway Buyer’s Guide by clicking the promo below for more details.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-169083275181&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px; height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;169083275181&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLIkMktA9qLULrcu%2FUN%2FDw38ReEyGU%2B%2BIMLL8v%2Bj2lqeRpcmEUwThGudRpY%2BjfaLsf4%2BqTmU3aLhxeNCIBeFfuWHZh1t1Dh0122aY09%2FVNRIAbbUCQPi5t%2BlY%2FZ1%2FEovhMSpf4BQjf%2BSany6vOA1Hjl2hA8C6Qt0olD8FAuIpT6T2dR5PIriWhAlWvpwoCCwP45plFO%2F1P8wD4BgDrPU&amp;webInteractiveContentId=169083275181&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Square Image - 1200 x 1200(7)&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-169083275181.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Fortify Your Frontlines: Distributed Security with HashiCorp Vault, Let's Encrypt, and Traefik]]></title>
            <description><![CDATA[Explore how HashiCorp Vault, Let's Encrypt, and Traefik work together at a high level to provide encryption for distributed architectures and why that's important.]]></description>
            <link>https://traefik.io/distributed-security-with-hashicorp-vault-letsencrypt-and-traefik</link>
            <guid isPermaLink="true">https://traefik.io/distributed-security-with-hashicorp-vault-letsencrypt-and-traefik</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[SSL / TLS]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[Let's Encrypt]]></category>
            <category><![CDATA[DevOps]]></category>
            <category><![CDATA[Consul]]></category>
            <category><![CDATA[Vault]]></category>
            <category><![CDATA[Strategy]]></category>
            <category><![CDATA[Guides]]></category>
            <dc:creator><![CDATA[Immánuel Fodor]]></dc:creator>
            <pubDate>Tue, 28 May 2024 18:47:00 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/fortify-front-lines-blog-no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/05/fortify-front-lines-blog-no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/05/fortify-front-lines-blog-no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/05/fortify-front-lines-blog-no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/fortify-front-lines-blog-no-copy.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Distributed systems have become the backbone of the digital economy, enabling the seamless operation of everything from cloud services to mobile applications. These systems have specific requirements when it comes to encryption, which is provided by Transport Layer Security (TLS). With &lt;a href=&quot;https://traefik.io/solutions/api-gateway/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik&apos;s API Gateway&lt;/u&gt;&lt;/a&gt;, TLS support can be handled by a combination of a Certificate Authority (CA) aligned to the ACME protocol (e.g., Let&apos;s Encrypt) and HashiCorp Vault, which collectively secure your distributed systems and provide key management while maintaining high availability.&lt;/p&gt;&lt;p&gt;In this article, we&apos;ll explore how these tools combine at a high level to provide encryption for distributed architectures and why that&apos;s important.&lt;/p&gt;&lt;p&gt;&lt;em&gt;&lt;strong&gt;Note&lt;/strong&gt;: For a deep dive into how to configure this in your environment using Traefik and HashiCorp Vault&apos;s PKI Engine, Nomad, and Consul, see &lt;/em&gt;&lt;a href=&quot;https://medium.com/hashicorp-engineering/building-a-dynamic-and-secure-application-infrastructure-with-traefik-and-vault-5fa28a984147?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;em&gt;this post&lt;/em&gt;&lt;/a&gt;&lt;em&gt; by Open Source Consultant and Trainer Chris van Meer.&lt;/em&gt;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-169083275181&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px; height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;169083275181&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLIkMktA9qLULrcu%2FUN%2FDw38ReEyGU%2B%2BIMLL8v%2Bj2lqeRpcmEUwThGudRpY%2BjfaLsf4%2BqTmU3aLhxeNCIBeFfuWHZh1t1Dh0122aY09%2FVNRIAbbUCQPi5t%2BlY%2FZ1%2FEovhMSpf4BQjf%2BSany6vOA1Hjl2hA8C6Qt0olD8FAuIpT6T2dR5PIriWhAlWvpwoCCwP45plFO%2F1P8wD4BgDrPU&amp;webInteractiveContentId=169083275181&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Square Image - 1200 x 1200(7)&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-169083275181.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;why-a-distributed-system-requires-tls&quot;&gt;Why a Distributed System Requires TLS&lt;/h2&gt;&lt;p&gt;A distributed system, at its core, is a collection of independent computers that appear to its users as a single coherent system. This architecture is designed to manage tasks that are too complex for a single computer by dividing them across multiple machines, thus leveraging the combined processing power, storage capacity, and specialized functionalities of all of them. The distributed nature of these systems offers several advantages, including scalability, fault tolerance, and resource sharing. However, these benefits also introduce unique challenges, particularly in the realm of security, that require the use of an encryption protocol such as &lt;a href=&quot;https://www.internetsociety.org/deploy360/tls/basics/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;TLS&lt;/u&gt;&lt;/a&gt;:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Decentralized Infrastructure and Data Transmission Across Networks:&lt;/strong&gt; In a distributed system, components communicate over a network, potentially between different geographical locations. They exchange data that can range from sensitive user information to critical operational commands. This transmission occurs over channels that could be accessible to attackers, making the data susceptible to eavesdropping and interception. TLS secures these communications by encrypting the data, ensuring that even if data packets are captured, they cannot be deciphered by unauthorized parties.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Complex Interactions Among Components:&lt;/strong&gt; Distributed systems often involve complex interactions between various applications, services, and databases, each possibly having its own security mechanisms and vulnerabilities. Consistently implementing TLS across all these interactions ensures a baseline level of security, providing a unified approach to protect against &lt;a href=&quot;https://www.imperva.com/learn/application-security/man-in-the-middle-attack-mitm/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;man-in-the-middle attacks&lt;/u&gt;&lt;/a&gt; and ensuring that data remains secure in transit between components.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Dynamic Scalability:&lt;/strong&gt; One of the hallmarks of distributed systems is their ability to scale dynamically, adjusting resources in response to fluctuating demand. This scalability often involves the automatic deployment of new instances or services, which must immediately communicate securely with existing components. TLS certificates can be automatically managed and deployed to new instances, ensuring that they are immediately secured and can be trusted by other parts of the system.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Authentication:&lt;/strong&gt; Beyond encrypting data, TLS also facilitates authentication through the use of certificates, enabling both servers and clients to verify each other&apos;s identity. This is particularly important in distributed systems where services may be interacting for the first time or where components are provided by different vendors.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Regulatory Compliance and Trust:&lt;/strong&gt; Distributed systems, especially those handling personal data or sensitive information, must comply with a myriad of regulations regarding data protection and privacy, such as &lt;a href=&quot;https://gdpr.eu/what-is-gdpr/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;GDPR &lt;/u&gt;&lt;/a&gt;or &lt;a href=&quot;https://www.hhs.gov/sites/default/files/privacysummary.pdf?ref=containous.ghost.io&quot;&gt;&lt;u&gt;HIPAA&lt;/u&gt;&lt;/a&gt;. TLS not only helps in complying with these regulations by securing data in transit but also bolsters trust among users and stakeholders by demonstrating a commitment to security.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In other words, the intrinsic characteristics of distributed systems—their networked, decentralized, and dynamic nature—significantly increase their vulnerability to security threats. TLS addresses these vulnerabilities by providing a robust mechanism for encryption, authentication, and data integrity across all communications. In other words, implementing TLS is not just about protecting data; it&apos;s about ensuring the resilience and reliability of the distributed system in the face of evolving cyber threats.&lt;/p&gt;&lt;p&gt;But in order to make this happen in an automated environment, we need a way to programmatically request and manage the TLS certificates that form the foundation of the protocol. Fortunately, we have &lt;a href=&quot;https://letsencrypt.org/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Let’s Encrypt&lt;/u&gt;&lt;/a&gt;. Let&apos;s Encrypt is a non-profit CA that plays a pivotal role in securing distributed systems by offering free, easily managed TLS/SSL certificates. Its use of the &lt;a href=&quot;https://www.keytos.io/blog/pki/what-is-acme-protocol.html?ref=containous.ghost.io&quot;&gt;&lt;u&gt;ACME&lt;/u&gt;&lt;/a&gt; protocol automates certificate management, reducing the administrative burden and minimizing the risk of security lapses. By leveraging Let&apos;s Encrypt (or another ACME aligned certificate authority), organizations can ensure their components communicate securely, contributing to the safety and reliability of their services and the internet at large.&lt;/p&gt;&lt;h2 id=&quot;what-is-vault-and-how-is-it-involved-in-this-process&quot;&gt;What is Vault and How is It Involved in This Process?&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://www.hashicorp.com/products/vault?ref=containous.ghost.io&quot;&gt;&lt;u&gt;HashiCorp Vault&lt;/u&gt;&lt;/a&gt; stands out as a pivotal component in securing distributed systems, primarily due to its comprehensive approach to managing secrets, such as API keys, passwords, and TLS/SSL certificates. Its role in these systems extends beyond mere storage, encompassing secret management, data encryption, and access control, all of which are crucial for maintaining the integrity and confidentiality of communications within distributed architectures. Vault is involved in this process in several ways:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Centralized Secrets Management: &lt;/strong&gt;In distributed systems, the need to securely manage a multitude of secrets across various services and environments is paramount. Vault centralizes the storage of these secrets, offering a single point of control and auditing. This centralization simplifies the secrets management process, reducing the risk of leaks or unauthorized access that could compromise the system&apos;s security.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Vault&apos;s &lt;a href=&quot;https://developer.hashicorp.com/vault/tutorials/getting-started/getting-started-dynamic-secrets?ref=containous.ghost.io&quot;&gt;&lt;u&gt;dynamic secrets&lt;/u&gt;&lt;/a&gt; system is particularly beneficial for distributed systems. Unlike static secrets, which remain the same until manually changed, dynamic secrets are generated on-demand and are valid for a strictly limited duration. This means that even if a secret were to be exposed, its short lifespan significantly limits the potential for misuse. This feature is invaluable for TLS, where temporary credentials can be used for encrypted sessions, minimizing the risk associated with long-lived certificates.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Encryption as a Service: &lt;/strong&gt;Vault provides encryption services, enabling applications to encrypt and decrypt data without managing encryption keys directly. This functionality supports the secure transmission of data across distributed systems by ensuring that sensitive information remains encrypted both at rest and in transit. When combined with TLS, which encrypts data during transmission, Vault&apos;s encryption services offer an additional layer of security for data stored within the system.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Automating Certificate Management: &lt;/strong&gt;Vault integrates seamlessly with the TLS process by automating the management of TLS/SSL certificates. It can issue certificates directly using its internal CA, or it can act as an intermediary with external CAs, including those compatible with the ACME protocol, such as Let&apos;s Encrypt. This automation extends to the renewal and revocation of certificates, ensuring that distributed systems consistently use valid certificates without manual intervention.&amp;nbsp;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Managing the lifecycle of TLS/SSL certificates is a critical aspect of maintaining secure communications. Vault automates the renewal process, issuing new certificates before the old ones expire, and can revoke certificates that are no longer needed or have been compromised. This capability is crucial for distributed systems, where outdated or revoked certificates can lead to security vulnerabilities or system outages.&lt;/p&gt;&lt;p&gt;In essence, Vault&apos;s comprehensive suite of features for managing secrets and certificates plays a vital role in the security and operational efficiency of distributed systems. By automating the creation and revocation of TLS/SSL certificates, Vault acts as a middleman that enables Traefik&apos;s API Gateway to renew certificates, and to ensure that secure, encrypted communication is a standard practice, not an afterthought. Its involvement in the TLS process not only bolsters security but also contributes to the reliability and resilience of the distributed system as a whole.&lt;/p&gt;&lt;h2 id=&quot;what-is-acme-and-how-does-it-help-secure-distributed-systems&quot;&gt;What is ACME and How Does It Help Secure Distributed Systems?&lt;/h2&gt;&lt;p&gt;The &lt;a href=&quot;https://en.wikipedia.org/wiki/Automatic_Certificate_Management_Environment?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Automated Certificate Management Environment&lt;/u&gt;&lt;/a&gt; (ACME) is a protocol designed to automate interactions between CAs and web servers, streamlining the process of obtaining, renewing, and revoking digital certificates. ACME has several goals:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Simplifying Certificate Issuance: &lt;/strong&gt;ACME standardizes the process for verifying domain ownership and automating certificate issuance. Systems can programmatically request and receive certificates, ensuring that secure, encrypted communication channels can be established without manual intervention.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Automating Renewals and Revocation: &lt;/strong&gt;Certificates have a limited validity period and need to be renewed regularly to maintain secure connections. ACME automates this renewal process, allowing systems to automatically request new certificates as expiration dates approach. Similarly, if a security breach occurs or a certificate is otherwise compromised, ACME can facilitate the rapid revocation of these certificates, helping to minimize potential security risks.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Domain Validation: &lt;/strong&gt;ACME includes mechanisms for automated domain validation, a prerequisite for issuing a certificate. This process verifies that the requester has control over the domain for which the certificate is being requested. ACME automates this verification through several methods, such as placing a specific file in a predefined directory on the web server or making certain DNS changes. For distributed systems, this automation removes a significant barrier to securing communications, ensuring that validation and certificate issuance can occur seamlessly as new services are deployed or as systems scale.&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;vault-as-an-acme-client&quot;&gt;Vault as an ACME Client&lt;/h3&gt;&lt;p&gt;At the heart of the Vault and ACME integration is Vault&apos;s ability to function as an ACME client. This capability enables Vault to directly interact with ACME-compliant CAs, such as Let&apos;s Encrypt. Vault can automatically request, renew, and revoke TLS/SSL certificates based on predefined policies and the needs of the system it secures. This process is managed through Vault&apos;s interface, leveraging ACME to handle the operational details with the CA.&lt;/p&gt;&lt;p&gt;This integration provides centralized management of certificates: integrating Vault with ACME provides a centralized platform for managing all aspects of TLS/SSL certificates within a distributed system. Administrators can define policies within Vault that dictate how certificates are issued, renewed, and revoked. This centralized approach not only simplifies management but also provides a clear audit trail of certificate-related activities, enhancing security and compliance.&lt;/p&gt;&lt;p&gt;The integration of Vault and ACME transforms the management of TLS/SSL certificates from a complex, manual task into a streamlined, automated process. This integration not only enhances security and compliance but also simplifies the operational aspects of managing certificates in distributed systems, enabling organizations to focus on their core objectives while maintaining a strong security posture.&lt;/p&gt;&lt;h3 id=&quot;how-traefik%E2%80%99s-api-gateway-optimizes-distributed-systems&quot;&gt;&lt;strong&gt;How Traefik’s API Gateway Optimizes Distributed Systems&lt;/strong&gt;&lt;/h3&gt;&lt;p&gt;In distributed systems, &lt;a href=&quot;https://traefik.io/solutions/api-gateway/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;the API gateway&lt;/a&gt; serves as a critical intersection, managing incoming traffic to various application components securely and efficiently. Traefik&apos;s API Gateway’s design optimizes this process by minimizing latency and ensuring that connections are always directed to the optimal endpoints, thereby enhancing overall system performance and reliability.&lt;/p&gt;&lt;p&gt;In other words, Traefik&apos;s API Gateway simplifies the routing of client requests to the appropriate backend services, ensuring efficient load balancing, traffic management, and network resilience. Key features include:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Dynamic Configuration:&lt;/strong&gt; Unlike traditional API gateways, Traefik automatically detects changes in service configurations within a cluster, adapting routes without requiring manual updates or restarts. This dynamic response is essential for environments where services are frequently scaled or updated.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Built-in Security with TLS Management:&lt;/strong&gt; Traefik integrates seamlessly with Let’s Encrypt to automate TLS certificate generation and renewal, ensuring encrypted and secure communications without manual intervention. This automation is critical for maintaining continuous security compliance and protecting data integrity across services.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Middleware Customization:&lt;/strong&gt; Traefik allows the use of various middlewares that can modify requests and responses, implement additional security checks, or manage access control, providing enhanced flexibility to meet diverse operational requirements.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Observability and Monitoring:&lt;/strong&gt; With native support for various monitoring tools, Traefik can enable these tools to provide detailed insights into API traffic patterns and health metrics, facilitating proactive management and optimization of network resources.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Traefik&apos;s API Gateway stands at the forefront of network management solutions by providing an adaptive, secure, and efficient routing mechanism that supports the complex demands of modern distributed systems. Its ability to integrate advanced security protocols, coupled with dynamic configuration capabilities, makes it an indispensable tool for developers and enterprises aiming to optimize application delivery and performance.&lt;/p&gt;&lt;h2 id=&quot;traefik-vs-traditional-api-gateway-considerations&quot;&gt;Traefik vs Traditional API Gateway Considerations&lt;/h2&gt;&lt;p&gt;While Traefik offers several enhancements over traditional API gateways like NGINX, there are challenges to consider:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Complexity in Initial Setup and Learning Curve:&lt;/strong&gt; The dynamic and flexible nature of Traefik&apos;s configuration might present a steeper learning curve compared to others with a history predating the cloud-native era. Organizations might find the initial setup of Traefik to be a bit more complex due to its abstracted and automated mechanisms but the initial investment pays off in the long run. Traefik also offers easy to understand video courses to cover from the basics to advanced load balancing in the free &lt;a href=&quot;https://academy.traefik.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik Academy&lt;/u&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Dependency on External Services: &lt;/strong&gt;Traefik’s effectiveness, especially in certificate management, often hinges on seamless integration with external services such as Let’s Encrypt. This can introduce a dependency that might affect gateway functionality in the unlikely event that these services go down, but this is the case with any other gateways that integrate with external services. However, more manual control over certificate management usually isn&apos;t worth the effort. Even the Electronic Frontier Foundation (EFF) argues that &lt;a href=&quot;https://www.eff.org/am/deeplinks/2024/03/should-caddy-and-traefik-replace-certbot?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik should replace certbot&lt;/u&gt;&lt;/a&gt;, an auxiliary certificate automation tool, as built-in certificate automation is the future.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Resource Usage:&lt;/strong&gt; Traefik’s advanced features and continuous monitoring for changes can lead to higher resource usage than others with minimal static setups. This can be a challenge for environments where strict resource optimization is critical. However, there are always trade offs, and Traefik’s added capabilities and automation can bring many times more value to the table than the saved resource costs.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Mature Ecosystem and Community Support:&lt;/strong&gt; Users of traditional API gateways might benefit from a longstanding user community and a wealth of knowledge accumulated online. Although there are many plugins that can extend traditional gateway functionality, these often require recompilation or are written in embedded simple languages. Traefik still has some way to go in growing its ecosystem and knowledge base, but it’s growing fast, and has recently added WebAssembly (Wasm) support for its plugin system, besides the existing Go-based solution, to make plugin development even simpler.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;However, where Traefik&apos;s API Gateway shines, it really shines.&amp;nbsp;&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Automated certificate discovery: &lt;/strong&gt;Navigating the complexities of TLS/SSL certificate management in distributed systems, particularly the issue of applying new or updated certificates without causing service downtime, is a formidable challenge. For example, traditional proxy servers often require restarting or reloading the proxy instances to apply these certificates, leading to potential availability issues and the disruption of existing sessions. By contrast, Traefik&apos;s API Gateway provides automatic discovery of new certificates, which offers a sophisticated solution, eliminating the need for manual intervention and significantly enhancing system resilience and uptime.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Plug-in Ecosystem: &lt;/strong&gt;While still growing, Traefik’s plug-in ecosystem is tailored towards modern, dynamic environments and includes plug-ins for authentication, security enhancements, and traffic management tailored to the needs of microservices architectures.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Traefik&apos;s API Gateway’s ability to apply TLS/SSL certificate updates without requiring proxy restarts represents a significant leap forward in achieving high availability for distributed systems. This capability not only ensures continuous operation and enhanced security but also aligns with the operational demands and expectations of modern digital services. By adopting technologies and practices that support this capability, organizations can deliver more reliable, secure, and user-centric services.&lt;/p&gt;&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;&lt;p&gt;In conclusion, the seamless integration of Vault and ACME with Traefik&apos;s API Gateway, coupled with innovative solutions like automatic certificate discovery, represents a significant advancement in managing TLS certificates for distributed systems. By addressing the challenges of certificate management and avoiding the need for proxy restarts, these technologies ensure that distributed systems can maintain high availability without compromising on security. This blend of security and availability is essential for the modern digital landscape, where the reliability and integrity of distributed systems are paramount.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-169083275181&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px; height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;169083275181&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLIkMktA9qLULrcu%2FUN%2FDw38ReEyGU%2B%2BIMLL8v%2Bj2lqeRpcmEUwThGudRpY%2BjfaLsf4%2BqTmU3aLhxeNCIBeFfuWHZh1t1Dh0122aY09%2FVNRIAbbUCQPi5t%2BlY%2FZ1%2FEovhMSpf4BQjf%2BSany6vOA1Hjl2hA8C6Qt0olD8FAuIpT6T2dR5PIriWhAlWvpwoCCwP45plFO%2F1P8wD4BgDrPU&amp;webInteractiveContentId=169083275181&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Square Image - 1200 x 1200(7)&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-169083275181.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Traefik 3.0 With SPIFFE, Tailscale, and HTTP/3]]></title>
            <description><![CDATA[This article will be exploring state of the art technologies added to Traefik v3: SPIFFE, Tailscale, HTTP/3.]]></description>
            <link>https://traefik.io/traefik-3-0-with-spiffe-tailscale-http3</link>
            <guid isPermaLink="true">https://traefik.io/traefik-3-0-with-spiffe-tailscale-http3</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Ingress]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Thu, 23 May 2024 17:17:25 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/Traefik-v3-with-SPIFFE--Tailscale---HTTP-3---blog.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Traefik 3.0 with SPIFFE, Tailscale &amp;amp; HTTP/3&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/05/Traefik-v3-with-SPIFFE--Tailscale---HTTP-3---blog.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/05/Traefik-v3-with-SPIFFE--Tailscale---HTTP-3---blog.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/05/Traefik-v3-with-SPIFFE--Tailscale---HTTP-3---blog.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/Traefik-v3-with-SPIFFE--Tailscale---HTTP-3---blog.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;We&apos;re continuing our in-depth series on Traefik 3.0. If you missed it, be sure to read the previous articles on &lt;a href=&quot;https://traefik.io/blog/traefik-3-0-ga-has-landed-heres-how-to-migrate/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;migrating from Traefik v2&lt;/u&gt;&lt;/a&gt;, &lt;a href=&quot;https://traefik.io/blog/traefik-3-deep-dive-into-wasm-support-with-coraza-waf-plugin/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;WASM support with Coraza WAF&lt;/u&gt;&lt;/a&gt;, and &lt;a href=&quot;https://traefik.io/blog/monitor-your-production-at-a-glance-with-traefik-3-0-and-opentelemetry/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Open Telemetry&lt;/u&gt;&lt;/a&gt;. Today, we&apos;ll be exploring state of the art technologies added to Traefik: SPIFFE, Tailscale, HTTP/3.&lt;/p&gt;&lt;h2 id=&quot;spiffe&quot;&gt;&lt;strong&gt;SPIFFE&lt;/strong&gt;&lt;/h2&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/spiffe-horizontal-color-1-1.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;142&quot;&gt;&lt;/figure&gt;&lt;p&gt;Deploying dozens or hundreds of applications in production, in a distributed environment, comes with many challenges. One of them is network security, i.e. how to ensure application A is authorized to request application B? One of the historical solutions is to protect private networks with security controls like firewalls and VPNs. But many companies have adapted their security architectures to revolve around a concept known as &lt;em&gt;Zero Trust&lt;/em&gt; networking, based on the paradigm that even private networks are untrusted. This means that applications need to authenticate themselves with other services.&lt;/p&gt;&lt;p&gt;In an effort to address this problem, the community created &lt;a href=&quot;https://spiffe.io/?ref=traefik.io&quot;&gt;&lt;u&gt;SPIFFE&lt;/u&gt;&lt;/a&gt;, the Secure Production Identity Framework For Everyone Project, which defines a framework and set of standards for identifying and securing communications between applications. The runtime counterpart, SPIRE, is a toolchain of APIs for establishing trust between applications.&lt;/p&gt;&lt;p&gt;Thanks to &lt;a href=&quot;https://github.com/jlevesy?ref=traefik.io&quot;&gt;&lt;u&gt;Julien Levesy&lt;/u&gt;&lt;/a&gt;, Traefik &lt;a href=&quot;https://github.com/traefik/traefik/pull/9394?ref=traefik.io&quot;&gt;&lt;u&gt;now supports SPIFFE mTLS&lt;/u&gt;&lt;/a&gt; with its backend servers! Here is a quick overview of the setup. First of all, you need to enable it in the &lt;a href=&quot;https://doc.traefik.io/traefik/v3.0/https/spiffe?ref=containous.ghost.io&quot;&gt;&lt;u&gt;static configuration&lt;/u&gt;&lt;/a&gt;:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;## Static configuration
spiffe:
  workloadAPIAddr: localhost
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;workloadAPIAddr&lt;/code&gt; configuration defines the address of the SPIFFE Workload API.&lt;br&gt;
Now that SPIFFE is enabled globally, you need to configure your routes, at the ServersTransport level, for example, using SPIFFE trust domain (which makes Traefik allow any SpiffeID that comes from the given trust domain):&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Dynamic configuration
http:
  serversTransports:
    mytransport:
      spiffe:
        trustDomain: spiffe://trust-domain
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Traefik is now able to connect to the Workload API to obtain an x509-SVID used to secure the connection with SPIFFE enabled backends 🎉. Yes, it’s as simple as that!&lt;/p&gt;&lt;h2 id=&quot;tailscale&quot;&gt;&lt;strong&gt;Tailscale&lt;/strong&gt;&lt;/h2&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/tailscale-logo-black-800-1.png&quot; class=&quot;kg-image&quot; alt=&quot;Tailscale Logo&quot; loading=&quot;lazy&quot; width=&quot;500&quot; height=&quot;160&quot;&gt;&lt;/figure&gt;&lt;p&gt;&lt;a href=&quot;https://tailscale.com/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Tailscale&lt;/u&gt;&lt;/a&gt; is a zero-config VPN for building secure networks. If you are not familiar with this technology yet, I strongly recommend you to have a look, it is probably the simplest and most convenient way to set up servers in a VPN network. If you need to protect websites within a Tailscale network, Traefik can now &lt;a href=&quot;https://tailscale.com/blog/traefik-certificate-resolver?ref=traefik.io&quot;&gt;&lt;u&gt;request TLS certificates&lt;/u&gt;&lt;/a&gt; from the Tailscale API.&lt;/p&gt;&lt;p&gt;This new feature allows you to access HTTPS-enabled services on your tailnet behind Traefik Proxy without the hassle of managing certificates or exposing an endpoint for TLS challenges from Let’s Encrypt. Instead, Tailscale handles your certificate lifecycle, automatically renewing your Let’s Encrypt certificate, and then hands over to Traefik to handle the TLS secured requests.&lt;/p&gt;&lt;p&gt;Let’s see how to &lt;a href=&quot;https://doc.traefik.io/traefik/master/https/tailscale/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;enable this feature&lt;/u&gt;&lt;/a&gt;. To obtain a TLS certificate from Tailscale, a Tailscale certificate resolver needs to be configured in the dynamic configuration:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;certificatesResolvers:
  myresolver:
    tailscale: {}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now all you have to do is reference &lt;code&gt;myresolver&lt;/code&gt; from any router or entrypoint that is part of your tailnet. Here is an example using Docker labels:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;## Dynamic configuration
labels:
  - traefik.http.routers.blog.rule=Host(`monitoring.yak-bebop.ts.net`) &amp;amp;&amp;amp; Path(`/metrics`)
  - traefik.http.routers.blog.tls.certresolver=myresolver
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here is another example in a Kubernetes ingress resource:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: blogtls
spec:
  entryPoints:
    - websecure
  routes:
    - match: Host(`monitoring.yak-bebop.ts.net`) &amp;amp;&amp;amp; Path(`/metrics`)
      kind: Rule
      services:
        - name: blog
          port: 8080
  tls:
    certResolver: myresolver
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Your apps are now able to access other apps securely within your tailnet, using Tailscale TLS certificates. Pretty straightforward right?&lt;/p&gt;&lt;h2 id=&quot;http3&quot;&gt;&lt;strong&gt;HTTP/3&lt;/strong&gt;&lt;/h2&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/http3-logo-1.png&quot; class=&quot;kg-image&quot; alt=&quot;HTTP/3 logo&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;174&quot;&gt;&lt;/figure&gt;&lt;p&gt;HTTP is the backbone of the Internet. Since HTTP/2 was approved in 2015, significant progress has been made toward the next milestone: HTTP/3. This new version is a major shift, as it no longer relies on the traditional TCP, but instead uses UDP, leveraging &lt;a href=&quot;https://en.wikipedia.org/wiki/QUIC?ref=containous.ghost.io&quot;&gt;&lt;u&gt;QUIC&lt;/u&gt;&lt;/a&gt;—a transport protocol developed by Google in 2012. HTTP/3 offers numerous benefits, such as improved performance, faster connection establishment, and simpler encryption. Now, HTTP/3 is out of the experimental stage and fully production-ready in Traefik!&lt;/p&gt;&lt;p&gt;Let’s enable HTTP/3 on an entrypoint:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;entryPoints:
  foo:
    http3: {}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Keep in mind that, as HTTP/3 actually uses UDP, when traefik is configured with a TCP entryPoint on port N with HTTP/3 enabled, the underlying HTTP/3 server that is started automatically listens on UDP port N too. As a consequence, it means port N cannot be used by another UDP entryPoint. Since HTTP/3 requires the use of TLS, only routers with TLS enabled will be usable with HTTP/3.&lt;/p&gt;&lt;h2 id=&quot;wrapping-up&quot;&gt;Wrapping Up&lt;/h2&gt;&lt;p&gt;Simplicity and outstanding user experience has always been at the core of Traefik. Those new features packed in v3 follow strictly this principle. How straightforward it is to add Tailscale TLS certificates support, how elementary Traefik can be set up to retrieve SPIFFE x509-SVIDs, and how effortless you can migrate to the latest major revision of the Hypertext Transfer Protocol HTTP/3, all those added capabilities are great examples of the main core value of Traefik: keep it simple, yet state of the art.&lt;/p&gt;&lt;p&gt;The Traefik community has been instrumental in implementing those key features. We can&apos;t praise the outstanding work of Traefik contributors enough ❤️&lt;/p&gt;&lt;p&gt;Stay tuned for more deep dives on Traefik 3.0 key features!&lt;/p&gt;&lt;p&gt;To learn more about v3, watch the recording of our recent&amp;nbsp;&lt;a href=&quot;https://info.traefik.io/watch-now-whats-new-in-traefik-3?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;u&gt;Traefik v3 Online Meetup&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;h2 id=&quot;useful-links&quot;&gt;&lt;strong&gt;Useful Links&lt;/strong&gt;&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik/v3.0/https/spiffe?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;u&gt;Traefik v3 SPIFFE documentation&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik/v3.0/https/tailscale/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;u&gt;Traefik v3 Tailscale documentation&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-158028398339&quot;
  style=&quot;max-width:100%; max-height:100%; width:100%;height:auto; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;158028398339&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJopIkqy9PwxjiexjkTebdknPc%2B1lMv9CoGqRfqx9yrZ6uJu4k%2BqE2uO7QoJE9hsbY2%2Fu1c4YagHrQ4ZCBQ9KWSmNf5JnqrM8ZnFKNFuS20X3M%3D&amp;webInteractiveContentId=158028398339&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Proxy_Ad_02@2x&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-158028398339.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Monitor Your Production at a Glance With Traefik 3.0 and OpenTelemetry]]></title>
            <description><![CDATA[We’re continuing our deep dive series on Traefik 3.0, and in this article, we focus on how to leverage OpenTelemetry in Traefik v3.]]></description>
            <link>https://traefik.io/monitor-your-production-at-a-glance-with-traefik-3-0-and-opentelemetry</link>
            <guid isPermaLink="true">https://traefik.io/monitor-your-production-at-a-glance-with-traefik-3-0-and-opentelemetry</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[News]]></category>
            <category><![CDATA[Engineering]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <category><![CDATA[Observability]]></category>
            <dc:creator><![CDATA[Nicolas Mengin]]></dc:creator>
            <pubDate>Thu, 16 May 2024 17:49:45 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/Blog---Monitor-Your-Production-at-a-Glance-With-Traefik-v3-and-OpenTelemetry.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Monitor Your Production at a Glance With Traefik 3.0 and OpenTelemetry&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/05/Blog---Monitor-Your-Production-at-a-Glance-With-Traefik-v3-and-OpenTelemetry.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/05/Blog---Monitor-Your-Production-at-a-Glance-With-Traefik-v3-and-OpenTelemetry.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/05/Blog---Monitor-Your-Production-at-a-Glance-With-Traefik-v3-and-OpenTelemetry.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/Blog---Monitor-Your-Production-at-a-Glance-With-Traefik-v3-and-OpenTelemetry.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Today, we’re continuing our blog series on Traefik v3 (checkout our previous posts on &lt;a href=&quot;https://traefik.io/blog/traefik-3-0-ga-has-landed-heres-how-to-migrate/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;migration path from Traefik v3&lt;/u&gt;&lt;/a&gt; and the &lt;a href=&quot;https://traefik.io/blog/traefik-3-deep-dive-into-wasm-support-with-coraza-waf-plugin/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Wasm support with Coraza WAF plugin&lt;/u&gt;&lt;/a&gt;). This article will focus on how to leverage &lt;a href=&quot;https://opentelemetry.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OpenTelemetry&lt;/u&gt;&lt;/a&gt; in Traefik v3.&lt;/p&gt;&lt;p&gt;Monitoring and observability have always been a priority for Traefik, consistently following industry standards such as OpenTracing integration starting with Traefik v2. That&apos;s why incorporating OpenTelemetry, the latest emerging standard, into our toolkit was an easy decision.&lt;/p&gt;&lt;h2 id=&quot;how-observability-ensures-infrastructure-robustness&quot;&gt;How Observability Ensures Infrastructure Robustness&lt;/h2&gt;&lt;p&gt;In the microservices era, monitoring and observability—with rich metrics, tracing, and logs—are fundamental necessities in order to maintain the reliability and efficiency of our systems.&amp;nbsp;&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Tracing&lt;/strong&gt; allows you to track the flow of operations within your system. Using &lt;a href=&quot;https://opentelemetry.io/docs/concepts/signals/traces/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;traces&lt;/u&gt;&lt;/a&gt;, and &lt;a href=&quot;https://opentelemetry.io/docs/concepts/signals/traces/?ref=containous.ghost.io#spans&quot;&gt;&lt;u&gt;spans&lt;/u&gt;&lt;/a&gt;, you can identify performance bottlenecks and pinpoint applications causing slowdowns, so you can optimize response times effectively.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Logs&lt;/strong&gt; provide real-time insight into the health of your system. It enables swift error detection and intervention through alerts. By centralizing logs, you streamline the debugging process during incident resolution (say goodbye to &lt;a href=&quot;https://www.gnu.org/software/grep/manual/grep.html?ref=containous.ghost.io&quot;&gt;&lt;u&gt;grep&lt;/u&gt;&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Metrics&lt;/strong&gt; offer a comprehensive view of your infrastructure&apos;s health. They allow you to monitor critical indicators like incoming traffic volume. For instance, Traefik enables you to dynamically scale your infrastructure based on observed traffic patterns. Additionally, metrics graphs and visualizations are helpful during incident triage to understand the causes and implement proactive measures.&lt;/p&gt;&lt;h2 id=&quot;opentelemetry-one-standard-to-rule-them-all&quot;&gt;OpenTelemetry: One Standard to Rule Them All&lt;/h2&gt;&lt;p&gt;There are many tools in the market from a wide variety of vendors. Sifting through all the choices can be difficult, and picking the wrong one can be a huge pain as switching later is extremely cumbersome.&lt;/p&gt;&lt;p&gt;Part of what makes it difficult in deciding is because each vendor does things differently. Some scrape data, some pull it. Some are cloud-based, whereas others are on-premises. Switching between them is complex and time-consuming, if even feasible at all.&lt;/p&gt;&lt;p&gt;That&apos;s where OpenTelemetry comes in. It&apos;s a fusion of two older standards, &lt;a href=&quot;https://opentracing.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OpenTracing&lt;/u&gt;&lt;/a&gt; and &lt;a href=&quot;https://opencensus.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OpenCensus&lt;/u&gt;&lt;/a&gt;. OpenTracing focused on tracing, while OpenCensus focused on metrics and tracing. OpenTelemetry brings them together and adds logging specifications.&lt;/p&gt;&lt;p&gt;OpenTelemetry is an &lt;a href=&quot;https://github.com/open-telemetry?ref=containous.ghost.io&quot;&gt;&lt;u&gt;open-source project&lt;/u&gt;&lt;/a&gt; that belongs to the CNCF since 2019. Unlike with OpenTracing and OpenCensus, OpenTelemetry provides many implementations in different languages, like a &lt;a href=&quot;https://github.com/open-telemetry/opentelemetry-go?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Go SDK&lt;/u&gt;&lt;/a&gt; for example.&lt;/p&gt;&lt;p&gt;Open Telemetry makes life easier for everyone. For vendors and data providers like Traefik, having one standard obviously makes it simpler to support. For users, it ensures that the observability APIs will stay consistent regardless of the tools chosen.&lt;/p&gt;&lt;h2 id=&quot;opentelemetry-in-traefik&quot;&gt;OpenTelemetry in Traefik&lt;/h2&gt;&lt;p&gt;While Traefik v2 supports many metrics and tracing vendors, it doesn’t support every solution in the market.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/Traefik-v2-observability-solutions-support-1.png&quot; class=&quot;kg-image&quot; alt=&quot;Traefik v2 observability solutions support&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;404&quot;&gt;&lt;figcaption&gt;&lt;i&gt;&lt;em class=&quot;italic&quot; style=&quot;white-space: pre-wrap;&quot;&gt;Traefik v2 observability solutions support&lt;/em&gt;&lt;/i&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;Now, with Traefik v3, we&apos;ve made it possible to export metrics and traces in the OpenTelemetry format (logs support will be available as soon as &lt;a href=&quot;https://github.com/orgs/open-telemetry/projects/43?ref=containous.ghost.io&quot;&gt;&lt;u&gt;the Go SDK is ready&lt;/u&gt;&lt;/a&gt;).&lt;/p&gt;&lt;p&gt;This allows us to ensure we support every OpenTelemetry consumer with no further implementation changes, making Traefik easy to integrate into your infrastructure.&lt;/p&gt;&lt;p&gt;To make sure we&apos;re fully compliant with the OpenTelemetry standard, Traefik adheres to the specified &lt;a href=&quot;https://opentelemetry.io/docs/specs/semconv/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;semantic conventions&lt;/u&gt;&lt;/a&gt;. These conventions tell us what data to provide based on what our software does in your setup.&lt;/p&gt;&lt;p&gt;Since Traefik Proxy is a reverse proxy, we&apos;ve included &lt;a href=&quot;https://opentelemetry.io/docs/specs/semconv/http/http-metrics/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;metrics&lt;/u&gt;&lt;/a&gt; and &lt;a href=&quot;https://opentelemetry.io/docs/specs/semconv/http/http-spans/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;spans&lt;/u&gt;&lt;/a&gt; information as expected in the OpenTelemetry framework.&lt;/p&gt;&lt;p&gt;Now, let&apos;s take a look at how easy it is to set up OpenTelemetry in Traefik.&lt;/p&gt;&lt;h2 id=&quot;how-to-install-opentelemetry-with-traefik-v3&quot;&gt;How to install OpenTelemetry with Traefik v3?&lt;/h2&gt;&lt;p&gt;Let&apos;s walk through the straightforward steps to install OpenTelemetry with Traefik.&lt;/p&gt;&lt;h3 id=&quot;opentelemetry-architecture&quot;&gt;OpenTelemetry Architecture&lt;/h3&gt;&lt;p&gt;First off, it&apos;s worth noting there are two main ways to integrate Traefik (or any OpenTelemetry data provider) with an OpenTelemetry data consumer:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Vendor Direct Access:&lt;/strong&gt; Traefik can directly connect with a consumer-like Prometheus or Jaeger to send OpenTelemetry info. It&apos;s typically used for development purposes.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;OpenTelemetry Collector:&lt;/strong&gt; This software acts as a middleman, importing data from Traefik, potentially transforming it, and then exporting it to the consumer. This approach offers centralized management of OpenTelemetry data, and scalability, and is the recommended method for handling OpenTelemetry information in large-scale applications.&lt;/li&gt;&lt;/ol&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/Traefik-and-OpenTelemetry-Architecture.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Traefik &amp;amp; OpenTelemetry Architecture&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1051&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/05/Traefik-and-OpenTelemetry-Architecture.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/05/Traefik-and-OpenTelemetry-Architecture.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/05/Traefik-and-OpenTelemetry-Architecture.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/Traefik-and-OpenTelemetry-Architecture.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h3 id=&quot;traefik-v3-configuration&quot;&gt;Traefik v3 Configuration&lt;/h3&gt;&lt;p&gt;Regardless of which method you choose, the cool thing is that the configuration stays the same.&lt;/p&gt;&lt;p&gt;First, you deploy the &lt;a href=&quot;https://opentelemetry.io/docs/kubernetes/helm/collector/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OpenTelemetry collector&lt;/u&gt;&lt;/a&gt; (or the solution you need) as well as &lt;a href=&quot;https://doc.traefik.io/traefik/getting-started/install-traefik/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik&lt;/u&gt;&lt;/a&gt; on your cluster.&lt;/p&gt;&lt;p&gt;Then, you just set up the collector endpoints, and you&apos;re set. Whether you&apos;re adding a collector or switching up the consumer, all you have to do is tweak the address in the configuration as described below (check the &lt;a href=&quot;https://doc.traefik.io/traefik/observability/overview/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;documentation&lt;/u&gt;&lt;/a&gt; for more options):&lt;/p&gt;&lt;pre&gt;&lt;code&gt;## Traefik v3 ##
################

# Send metrics data to a Prometheus instance 
metrics:
  otlp:
    http:
      endpoint: http://prometheus:9090/api/v1/otlp/v1/metrics

# Send tracing data to a Jaeger instance 
tracing:
  otlp:
    http:
      endpoint: http://jaeger:4318/v1/traces
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And that&apos;s it! Simple, right?&lt;/p&gt;&lt;h3 id=&quot;traefik-v2-migration&quot;&gt;Traefik v2 Migration&lt;/h3&gt;&lt;p&gt;While this setup works smoothly for users starting fresh with Traefik v3, what about those looking to migrate from Traefik v2?&lt;/p&gt;&lt;p&gt;Concerning the metrics, the good news is you can migrate seamlessly—i.e., the vendor-specific integration still works. But do not hesitate to migrate to OpenTelemetry when you’re ready for it!&lt;/p&gt;&lt;p&gt;However, if you&apos;ve been using Traefik v2 for tracing, it&apos;s important to note that &lt;a href=&quot;https://doc.traefik.io/traefik/migration/v2-to-v3/?ref=containous.ghost.io#tracing&quot;&gt;&lt;u&gt;you may need to migrate to OpenTelemetry in Traefik v3&lt;/u&gt;&lt;/a&gt;. Maintaining both vendor-specific implementations and OpenTelemetry wasn&apos;t feasible, hence the decision to break backward compatibility.&lt;/p&gt;&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;&lt;p&gt;As you have seen, integrating Traefik with OpenTelemetry couldn&apos;t be easier.&lt;/p&gt;&lt;p&gt;Sure, OpenTelemetry is relatively new and still evolving (with ongoing work on logs integration, expanding semantic conventions, and more), but it&apos;s promising and undoubtedly the best standard for monitoring and observability.&lt;/p&gt;&lt;p&gt;So, why wait? Dive in, give it a try, and don&apos;t forget to share your feedback to aid in refining our integration.&lt;/p&gt;&lt;p&gt;To learn more about v3, watch the recording of our recent&amp;nbsp;&lt;a href=&quot;https://info.traefik.io/watch-now-whats-new-in-traefik-3?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;u&gt;Traefik v3 Online Meetup&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;See you on GitHub.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-158028398339&quot;
  style=&quot;max-width:100%; max-height:100%; width:100%;height:auto; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;158028398339&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJopIkqy9PwxjiexjkTebdknPc%2B1lMv9CoGqRfqx9yrZ6uJu4k%2BqE2uO7QoJE9hsbY2%2Fu1c4YagHrQ4ZCBQ9KWSmNf5JnqrM8ZnFKNFuS20X3M%3D&amp;webInteractiveContentId=158028398339&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Proxy_Ad_02@2x&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-158028398339.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Traefik 3.0: Deep Dive Into Wasm Support With Coraza WAF Plugin]]></title>
            <description><![CDATA[We’re continuing our deep dive series on Traefik 3.0. Today, let's take a close look at our WebAssembly support.]]></description>
            <link>https://traefik.io/traefik-3-deep-dive-into-wasm-support-with-coraza-waf-plugin</link>
            <guid isPermaLink="true">https://traefik.io/traefik-3-deep-dive-into-wasm-support-with-coraza-waf-plugin</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Ingress]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <category><![CDATA[Security]]></category>
            <category><![CDATA[DevOps]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Thu, 09 May 2024 14:34:27 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/Traefik-v3-Deep-dive-into-WASM-support-with-Coraza-WAF-plugin.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Traefik 3.0: Deep dive into WASM support with Coraza WAF plugin&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/05/Traefik-v3-Deep-dive-into-WASM-support-with-Coraza-WAF-plugin.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/05/Traefik-v3-Deep-dive-into-WASM-support-with-Coraza-WAF-plugin.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/05/Traefik-v3-Deep-dive-into-WASM-support-with-Coraza-WAF-plugin.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/Traefik-v3-Deep-dive-into-WASM-support-with-Coraza-WAF-plugin.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;We’re continuing our deep dive series on Traefik 3.0 which was released a week ago. Make sure to check out last week’s article on &lt;a href=&quot;https://traefik.io/blog/traefik-3-0-ga-has-landed-heres-how-to-migrate/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;the migration path from Traefik v2&lt;/u&gt;&lt;/a&gt;. Today, we will deep dive into WebAssembly support.&lt;/p&gt;&lt;p&gt;Custom plugins for Traefik are one of the most requested features going back to the early days of the project, starting with &lt;a href=&quot;https://github.com/traefik/traefik/issues/1336?ref=containous.ghost.io&quot;&gt;&lt;u&gt;this issue&lt;/u&gt;&lt;/a&gt;, from back in 2017:&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/enable-custom-plugins-for-Traefik.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1824&quot; height=&quot;878&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/05/enable-custom-plugins-for-Traefik.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/05/enable-custom-plugins-for-Traefik.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/05/enable-custom-plugins-for-Traefik.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/enable-custom-plugins-for-Traefik.png 1824w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The author suggested using &lt;a href=&quot;https://go.dev/doc/go1.8?ref=containous.ghost.io#plugin&quot;&gt;&lt;u&gt;the brand new plugin feature introduced in go 1.8&lt;/u&gt;&lt;/a&gt;. The idea was to compile go code into dynamic libraries which could be loaded and executed at runtime. It looked very promising and we &lt;a href=&quot;https://github.com/traefik/traefik/pull/1370?ref=containous.ghost.io&quot;&gt;&lt;u&gt;immediately started working&lt;/u&gt;&lt;/a&gt; on this. Sadly, some severe limitations &lt;a href=&quot;https://github.com/traefik/traefik/pull/1370?ref=containous.ghost.io#issuecomment-291903522&quot;&gt;&lt;u&gt;were found &lt;/u&gt;&lt;/a&gt;and this pursuit was put on hold. &lt;a href=&quot;https://github.com/traefik/traefik/pull/1865?ref=containous.ghost.io&quot;&gt;&lt;u&gt;A second attempt was made&lt;/u&gt;&lt;/a&gt; a few months later, but was eventually abandoned due to the incomplete plugin implementation provided by the go team (only on Linux with CGO_ENABLED).&lt;/p&gt;&lt;p&gt;After many discussions, we ended up with a different solution. If the go language ecosystem wouldn’t provide any solid solutions for building plugins, let’s implement our own (crazy, I know) fully compliant Go interpreter. In 2019, Yaegi—Yet Another Elegant Go Interpreter—&lt;a href=&quot;https://traefik.io/blog/announcing-yaegi-263a1e2d070a/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;was released&lt;/u&gt;&lt;/a&gt;. The project quickly got a lot of traction being the best Go interpreter, and middleware plugins became a reality within Traefik soon after. Yaegi enabled many to develop middlewares or providers for their context. To this day, we can count more than a hundred middleware plugins made available &lt;a href=&quot;https://plugins.traefik.io/plugins?ref=containous.ghost.io&quot;&gt;&lt;u&gt;through the catalog&lt;/u&gt;&lt;/a&gt;, plus many more that are kept private.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/Yaegi-flatten-whiite-back-1.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;400&quot; height=&quot;418&quot;&gt;&lt;/figure&gt;&lt;p&gt;However, Yaegi only provides the option to build plugins using go, and this can be a bit restrictive for some people. This is the reason why some community members started to work on the brand new plugin engine for Traefik in 2023: Web Assembly, abbreviated WASM.&amp;nbsp;&lt;/p&gt;&lt;h2 id=&quot;wasm-overview&quot;&gt;WASM Overview&lt;/h2&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/webassembly.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1200&quot; height=&quot;675&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/05/webassembly.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/05/webassembly.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/webassembly.png 1200w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;&lt;a href=&quot;https://webassembly.org/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;WebAssembly&lt;/u&gt;&lt;/a&gt; is a low-level assembly-like language with a compact binary format that runs with near-native performance. It provides languages such as C/C++, Go or Rust (and many more) with a compilation target so that they can run on the web, and in other runtimes thanks to &lt;a href=&quot;https://wasi.dev/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;WASI, the WebAssembly System Interface&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Announced in 2015, WASM evolved into an&lt;a href=&quot;https://www.w3.org/community/webassembly/?ref=containous.ghost.io&quot;&gt;&lt;u&gt; open standard&lt;/u&gt;&lt;/a&gt; and got support in all major browsers in 2017.&lt;/p&gt;&lt;p&gt;In a nutshell, WASM allows you to compile almost any language in a portable binary format that can run on any platform, with native performance.&amp;nbsp;&lt;/p&gt;&lt;p&gt;It looks like we found the perfect plugin engine for Traefik 🙂&lt;/p&gt;&lt;h2 id=&quot;traefik-wasm&quot;&gt;Traefik + WASM&lt;/h2&gt;&lt;p&gt;The idea to bring WASM support to Traefik was appealing. However, many challenges had to be tackled. The first one was to write an interface between Traefik, the host, and WASM plugins, the guests. This is called an &lt;a href=&quot;https://www.webassembly.guide/webassembly-guide/webassembly/wasm-abis?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Application Binary Interface&lt;/u&gt;&lt;/a&gt; (ABI) and in the case of Traefik middleware plugins, we had to provide an interface to the &lt;a href=&quot;https://pkg.go.dev/net/http?ref=containous.ghost.io&quot;&gt;&lt;u&gt;net/http&lt;/u&gt;&lt;/a&gt; HTTP server library. Writing and maintaining a fully compliant ABI for the net/http library is not an easy task but luckily, talented developers had already released different options, two of which stood out: &lt;a href=&quot;https://github.com/proxy-wasm/spec?ref=containous.ghost.io&quot;&gt;&lt;u&gt;proxy-wasm&lt;/u&gt;&lt;/a&gt; and &lt;a href=&quot;https://http-wasm.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;http-wasm&lt;/u&gt;&lt;/a&gt;. After many &lt;a href=&quot;https://github.com/traefik/traefik/issues/9552?ref=containous.ghost.io&quot;&gt;&lt;u&gt;discussions&lt;/u&gt;&lt;/a&gt; with community members, the clear winner was http-wasm, thanks to its much simpler and straightforward integration within a go codebase.&lt;/p&gt;&lt;p&gt;Then everything accelerated. A community contributor—&lt;a href=&quot;https://github.com/zetaab?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Jesse Haka&lt;/u&gt;&lt;/a&gt;—opened a &lt;a href=&quot;https://github.com/traefik/traefik/pull/10189?ref=containous.ghost.io&quot;&gt;&lt;u&gt;pull request&lt;/u&gt;&lt;/a&gt;, and a month later, after careful reviews from maintainers and external contributors like &lt;a href=&quot;https://github.com/jcchavezs?ref=containous.ghost.io&quot;&gt;&lt;u&gt;José Carlos Chávez&lt;/u&gt;&lt;/a&gt;, Traefik had support for WASM middleware plugins!&lt;/p&gt;&lt;p&gt;Let’s see how to write a WASM plugin for Traefik that customizes the routing pipeline that handles requests and responses. The Traefik routing pipeline basically splits into 3 main components: entrypoints, routers and services. Entrypoints define the network entry points into Traefik. Routers are in charge of connecting incoming requests to the services that can handle them. In the process, routers may use a chain of middleware to do some pre- and/or post-processing of the request. Our goal here is to write a custom middleware that will be added to the chain in a Traefik router. To simplify, we will use go as the plugin langage, but we could also use C or Rust, as soon as the code implements the &lt;u&gt;http-wasm&lt;/u&gt; interface.&lt;/p&gt;&lt;p&gt;Ultimately, the only thing you have to do is implement 1 function: handleRequest which handles the pre-processing or handleResponse, the post-processing. You can get a simple example of a WASM plugin &lt;a href=&quot;https://github.com/traefik/plugindemowasm?ref=containous.ghost.io&quot;&gt;&lt;u&gt;in the repository&lt;/u&gt;&lt;/a&gt;. Here is boilerplate:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;package main

import (
	&quot;encoding/json&quot;
	&quot;fmt&quot;
	&quot;os&quot;

	&quot;github.com/http-wasm/http-wasm-guest-tinygo/handler&quot;
	&quot;github.com/http-wasm/http-wasm-guest-tinygo/handler/api&quot;
)

// Config the plugin configuration.
type Config struct {
	Headers map[string]string `json:&quot;headers,omitempty&quot;`
}

func main() {
	var config Config
	err := json.Unmarshal(handler.Host.GetConfig(), &amp;amp;config)
	if err != nil {
		handler.Host.Log(api.LogLevelError, fmt.Sprintf(&quot;Could not load config %v&quot;, err))
		os.Exit(1)
	}

	mw, err := New(config)
	if err != nil {
		handler.Host.Log(api.LogLevelError, fmt.Sprintf(&quot;Could not load config %v&quot;, err))
		os.Exit(1)
	}
	handler.HandleRequestFn = mw.handleRequest
}

// Demo a Demo plugin.
type Demo struct{}

// New created a new Demo plugin.
func New(config Config) (*Demo, error) {
	return &amp;amp;Demo{}, nil
}

func (d Demo) handleRequest(req api.Request, resp api.Response) (next bool, reqCtx uint32) {
	return true, 0
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then load your compiled plugin into the static configuration:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# Static configuration
experimental:
  localPlugins:
    example:
      moduleName: github.com/traefik/plugindemowasm

```&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And finally, customize a router with your new plugin:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# Dynamic configuration
http:
  routers:
    my-router:
      rule: host(`demo.localhost`)
      service: service-foo
      entryPoints:
        - web
      middlewares:
        - my-plugin

  services:
   service-foo:
      loadBalancer:
        servers:
          - url: http://127.0.0.1:5000
  
  middlewares:
    my-plugin:
      plugin:
        example:
          headers:
            Foo: Bar
```&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As you can see, this is pretty straightforward to customize the routing pipeline in Traefik thanks to WASM plugins. Let’s tackle a production use case. How about embedding a Web Application Firewall into the middleware chain?&lt;/p&gt;&lt;h2 id=&quot;traefik-coraza&quot;&gt;Traefik + Coraza&lt;/h2&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/logo-coraza-mascot.png&quot; class=&quot;kg-image&quot; alt=&quot;Coraza Web Application Firewall&quot; loading=&quot;lazy&quot; width=&quot;1250&quot; height=&quot;309&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/05/logo-coraza-mascot.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/05/logo-coraza-mascot.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/logo-coraza-mascot.png 1250w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Traefik is a critical piece of many companies’ infrastructure and is playing a great role in securing connectivity with applications and APIs. It&apos;s impossible for any single security measure to cover every potential attack angle. Security operates in layers, each with its own focus, sometimes with areas of overlap. A global approach, acknowledging the diverse threat landscape, is the way to go. One of the main links in the security chain are Web Application Firewalls. They look for malicious and unwanted content within incoming requests and mitigate those potential threats. Having a WAF integrated to Traefik as a plugin is clearly a game changer and adds a first line protection layer to your infrastructure.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://coraza.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Coraza&lt;/u&gt;&lt;/a&gt; is an open source, go based, high performance, Web Application Firewall. It’s an OWASP project, understands Modsecurity’s seclang language, and it’s able to enforce OWASP core rule sets.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Of course, when Coraza’s leaders proposed to provide an integration of Coraza in Traefik within a WASM plugin, we were all pretty excited. &lt;a href=&quot;https://github.com/jcchavezs?ref=containous.ghost.io&quot;&gt;&lt;u&gt;José Carlos Chávez&lt;/u&gt;&lt;/a&gt; quickly came up with a working solution &lt;a href=&quot;https://plugins.traefik.io/plugins/65f2aea146079255c9ffd1ec/coraza-waf?ref=containous.ghost.io&quot;&gt;&lt;u&gt;now available on the Traefik Plugins Catalog&lt;/u&gt;&lt;/a&gt;!&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/Traefik-Plugin-Catalog---Coraza-WAF.png&quot; class=&quot;kg-image&quot; alt=&quot;Traefik Plugin Catalog - Coraza WAF&quot; loading=&quot;lazy&quot; width=&quot;1976&quot; height=&quot;948&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/05/Traefik-Plugin-Catalog---Coraza-WAF.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/05/Traefik-Plugin-Catalog---Coraza-WAF.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/05/Traefik-Plugin-Catalog---Coraza-WAF.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/05/Traefik-Plugin-Catalog---Coraza-WAF.png 1976w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;First of all, let’s load the Coraza plugin into the static configuration:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# This config was generated by &quot;mage updateVersion&quot;. DO NOT EDIT.

entryPoints:
  web:
    address: :80

providers:
  file:
    filename: /etc/traefik/config-dynamic.yaml

experimental:
  plugins:
    coraza:
      moduleName: github.com/jcchavezs/coraza-http-wasm-traefik
      version: v0.2.1
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Let’s update the middleware section for a router in the dynamic configuration:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;http:
# ...
  middlewares:
    waf:
      plugin:
        coraza:
          directives:
            - SecRuleEngine On
            - SecDebugLog /dev/stdout
            - SecDebugLogLevel 9
            - SecRule REQUEST_URI &quot;@streq /admin&quot; &quot;id:101,phase:1,log,deny,status:403&quot;
```&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then &lt;code&gt;curl -I &apos;http://localhost:8080/admin&apos;&lt;/code&gt; will return a 403 error as specified by the configuration rule &lt;code&gt;SecRule REQUEST_URI &quot;@streq /admin.&lt;/code&gt;&lt;br&gt;
&lt;code&gt;curl -I &apos;http://localhost:8080/anything&apos;&lt;/code&gt; will return a 200 as there is no matching rule.&lt;/p&gt;
&lt;p&gt;A more advanced example can be found &lt;a href=&quot;https://github.com/jcchavezs/traefik-kind/tree/coraza-http-wasm/vulnerable-app?ref=containous.ghost.io&quot;&gt;&lt;u&gt;here&lt;/u&gt;&lt;/a&gt;, where we attempt to use the &lt;a href=&quot;https://en.wikipedia.org/wiki/Log4Shell?ref=containous.ghost.io&quot;&gt;&lt;u&gt;log4shell&lt;/u&gt;&lt;/a&gt; attack on a vulnerable application. Log4shell is a zero-day vulnerability in Log4j involving arbitrary code execution. This attack can be mitigated by simply enabling CRS rule 932130 to look into REQUEST_HEADERS:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;cat &amp;lt;&amp;lt;EOF | kubectl apply -f -
apiVersion: v1
kind: ConfigMap
metadata:
  name: config
  namespace: traefik
data:
  config.yaml: |
    http:
      middlewares:
        waf:
          plugin:
            coraza:
              directives:
                - Include @recommended-conf
                - Include @crs-setup-conf
                - Include @owasp_crs/*.conf
                - SecRuleUpdateTargetById 932130 &quot;REQUEST_HEADERS&quot;
                - SecRuleEngine On
EOF
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As you can see, the WASM plugin feature in Traefik provides a state-of-the-art extension technology and covers the most advanced use cases.&lt;/p&gt;&lt;h2 id=&quot;takeaways&quot;&gt;Takeaways&lt;/h2&gt;&lt;p&gt;Traefik already had an extension engine based on the Yaegi Go interpreter. It is extremely easy to set up and provides a powerful foundation for customizing Traefik. However, it requires writing plugins in Go, and some people could find this too restrictive.&amp;nbsp;&lt;/p&gt;&lt;p&gt;WebAssembly has gained huge popularity lately and provides exactly what is needed to build a perfect plugin engine: portable binaries, open standard, fast, multiple languages support, and multiple host environments. Traefik 3.0 adds full support of WASM plugins for middlewares and allows to run binary code compiled from many different languages like C, Rust, or JavaScript.&lt;/p&gt;&lt;p&gt;Finally, to show the full potential of this new plugin engine, we have integrated the powerful Web Application Firewall Coraza, as a WASM plugin. This will bring new critical capabilities to Traefik, adding an additional layer of security to your environment.&lt;/p&gt;&lt;p&gt;The Traefik community has played a central role in brainstorming and implementing those major features. We can’t say enough good things about the exceptional work made by Traefik contributors ❤️&lt;/p&gt;&lt;p&gt;To learn more about v3, watch the recording of our recent&amp;nbsp;&lt;a href=&quot;https://info.traefik.io/watch-now-whats-new-in-traefik-3?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;u&gt;Traefik v3 Online Meetup&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Stay tuned for more deep dives on Traefik 3.0 key features!&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-158028398339&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:255.06668090820312px; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;158028398339&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJopIkqy9PwxjiexjkTebdknPc%2B1lMv9CoGqRfqx9yrZ6uJu4k%2BqE2uO7QoJE9hsbY2%2Fu1c4YagHrQ4ZCBQ9KWSmNf5JnqrM8ZnFKNFuS20X3M%3D&amp;webInteractiveContentId=158028398339&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Proxy_Ad_02@2x&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-158028398339.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Traefik 3.0 GA Has Landed: Here's How to Migrate]]></title>
            <description><![CDATA[After 5 years of development, the wait is finally over: Traefik 3.0 is generally available! This article will focus on the beginning, the elephant in the room: the migration.]]></description>
            <link>https://traefik.io/traefik-3-0-ga-has-landed-heres-how-to-migrate</link>
            <guid isPermaLink="true">https://traefik.io/traefik-3-0-ga-has-landed-heres-how-to-migrate</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Product News]]></category>
            <category><![CDATA[Ingress]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Tue, 30 Apr 2024 12:43:09 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/02/traefik-v3-announcement-image-1.png&quot; class=&quot;kg-image&quot; alt=&quot;Traefik 3.0 GA has Landed: Here&apos;s How to Migrate&quot; loading=&quot;lazy&quot; width=&quot;1200&quot; height=&quot;675&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/02/traefik-v3-announcement-image-1.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/02/traefik-v3-announcement-image-1.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/02/traefik-v3-announcement-image-1.png 1200w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;This year will mark the 9th anniversary of Traefik. Back in 2015, while I was writing the first lines of code for a cloud native reverse proxy, I couldn’t imagine how big this would go. From a side project, Traefik became one of the most deployed modern gateways on earth, with more than 3 billion downloads and 750+ contributors. It is ranked in the Top 15 on DockerHub and has 47,000 GitHub stars. Insane.&lt;/p&gt;&lt;p&gt;Traefik 1.0 was released in 2016. Three years later, Traefik 2.0 was born. Today, after 5 years of development, the wait is finally over! We are proud to announce that Traefik 3.0 is generally available 🎉&amp;nbsp;&lt;/p&gt;&lt;p&gt;This major release is a &lt;a href=&quot;https://traefik.io/blog/announcing-traefik-proxy-v3-rc/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;huge step forward in the cloud native world&lt;/a&gt;, adding support for the latest technologies like WASM, OpenTelemetry, Kubernetes Gateway API, and SPIFFE.&lt;/p&gt;&lt;p&gt;After many years of effort, the changelog is pretty wild, with more than 200 pull requests merged, each coming with new features. The list of new possibilities is so big that we want to provide a series of blog posts, each deep diving into one feature.&lt;/p&gt;&lt;p&gt;Today’s article will focus on the beginning, the elephant in the room 🥁🥁🥁: the migration.&lt;/p&gt;&lt;h2 id=&quot;migration-under-control&quot;&gt;Migration Under Control&lt;/h2&gt;&lt;p&gt;A new major version is always something eagerly awaited: new design, new features, better user experience … But the counterpart is usually the migration aspect. A major version often means breaking changes, but that shouldn’t imply a painful migration experience, and with Traefik v3 it doesn’t.&lt;/p&gt;&lt;p&gt;With Traefik v3, we are introducing a streamlined transition process from v2. As a reminder, Traefik has 2 kinds of configurations:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;the &lt;a href=&quot;https://doc.traefik.io/traefik/v3.0/migration/v2-to-v3/?ref=containous.ghost.io#static-configuration&quot;&gt;&lt;u&gt;static configuration&lt;/u&gt;&lt;/a&gt; which is loaded when Traefik starts up and manages global options&lt;/li&gt;&lt;li&gt;the &lt;a href=&quot;https://doc.traefik.io/traefik/v3.0/migration/v2-to-v3/?ref=containous.ghost.io#dynamic-configuration&quot;&gt;&lt;u&gt;dynamic configuration&lt;/u&gt;&lt;/a&gt; can be updated while Traefik is running and contains all the routing information&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Minimal breaking changes have been made on specific options on the static configuration, and we are ensuring backward compatibility with v2 syntax on the dynamic configuration. This will offer a gradual path for adopting the v3 syntax, allowing users to progressively migrate their Kubernetes ingress resources, Docker labels, etc. to the new format.&lt;/p&gt;&lt;p&gt;Let’s deep dive into the migration path with a typical use case: you have to migrate 100 Traefik instances from v2.11 to v3.0 in Kubernetes.&lt;/p&gt;&lt;h3 id=&quot;step-1-prepare-and-test&quot;&gt;Step 1: Prepare and Test&lt;/h3&gt;&lt;p&gt;The first thing to do is to identify how your static configuration is impacted by the changes made in v3. The breaking changes are minimal and target very specific options, in 90% of use cases, this process should take a couple minutes only. As an example, Docker and Swarm are now 2 providers, HTTP/3 is no longer an experimental option, Rancher v1 has been dropped as the project &lt;a href=&quot;https://rancher.com/docs/os/v1.x/en/support/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;is no longer being actively maintained&lt;/u&gt;&lt;/a&gt;, etc. Please refer to the &lt;a href=&quot;https://doc.traefik.io/traefik/v3.0/migration/v2-to-v3/?ref=containous.ghost.io#static-configuration&quot;&gt;&lt;u&gt;static configuration section of the migration documentation&lt;/u&gt;&lt;/a&gt;, as well as the &lt;a href=&quot;https://doc.traefik.io/traefik/v3.0/migration/v2-to-v3/?ref=containous.ghost.io#operations&quot;&gt;&lt;u&gt;operations section&lt;/u&gt;&lt;/a&gt;, to get the full list and prepare your new v3 static configuration.&lt;/p&gt;&lt;p&gt;Add the following snippet to your static configuration, this will use by default the &lt;a href=&quot;https://doc.traefik.io/traefik/v3.0/migration/v2-to-v3/?ref=containous.ghost.io#configure-the-default-syntax-in-static-configuration&quot;&gt;&lt;u&gt;v2 syntax&lt;/u&gt;&lt;/a&gt; for your routing rules:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# static configuration
core:
  defaultRuleSyntax: v2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When you are ready to test it, start Traefik v3 with this new configuration. If you don’t get any error log, you are good to go! Otherwise, no problem, the remaining migration options are highlighted in the logs, you can simply apply them.&lt;/p&gt;&lt;p&gt;Once your Traefik test instances are starting and routing to your applications, you can move to the next step.&lt;/p&gt;&lt;h3 id=&quot;step-2-rolling-update&quot;&gt;Step 2: Rolling Update &lt;/h3&gt;&lt;p&gt;Now that you have tested your updated static configuration, it is time to progressively migrate your production instances to Traefik v3. Use the Kubernetes &lt;a href=&quot;https://kubernetes.io/docs/tutorials/kubernetes-basics/update/update-intro/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;rolling update&lt;/u&gt;&lt;/a&gt; mechanism to incrementally replace the current Pods with new ones.&lt;/p&gt;&lt;p&gt;⚠️ Before triggering any change on your production, ensure you to have &lt;a href=&quot;https://traefik.io/blog/capture-traefik-metrics-for-apps-on-kubernetes-with-prometheus/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;a working real time monitoring solution&lt;/u&gt;&lt;/a&gt; on your ingress traffic that will allow you to instantly detect any issue. Traefik provides support for many observability &lt;a href=&quot;https://doc.traefik.io/traefik/observability/metrics/overview/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;solutions&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;While the rolling update is in progress, constantly monitor your ingress traffic looking for unexpected (and unusual) errors, and be prepared to rollback to a working state. Then, leverage debug and access logs provided by Traefik to understand and fix the issue before upgrading again. In case you&apos;re not sure, jump onto the community forum.&lt;/p&gt;&lt;p&gt;Once every pod is updated, congratulations, you are now on Traefik v3!&lt;/p&gt;&lt;p&gt;You can move to the last step.&lt;/p&gt;&lt;h3 id=&quot;step-3-progressive-ingresses-update&quot;&gt;Step 3: Progressive Ingresses Update&lt;/h3&gt;&lt;p&gt;Now that you run Traefik v3, start migrating your ingress resources to the new format.&amp;nbsp;&lt;/p&gt;&lt;p&gt;📍 Keep in mind that this step can be done later, as Traefik v3 is compatible with the v2 format for dynamic configuration. But of course, you can start using new features right away in new ingresses, and migrate older ingresses later.&lt;/p&gt;&lt;p&gt;The dynamic configuration in v3 has undergone a few changes. For example, the Router Rule Matchers have an updated syntax, the Kubernetes Ingress API Group has been changed, and the TCP LoadBalancer terminationDelay option has been removed. The full list can be found in the &lt;a href=&quot;https://doc.traefik.io/traefik/v3.0/migration/v2-to-v3/?ref=containous.ghost.io#dynamic-configuration&quot;&gt;&lt;u&gt;dynamic configuration section of the migration documentation&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Progressively, &lt;a href=&quot;https://doc.traefik.io/traefik/v3.0/migration/v2-to-v3/?ref=containous.ghost.io#configure-the-syntax-per-router&quot;&gt;&lt;u&gt;switch each router to the v3 syntax&lt;/u&gt;&lt;/a&gt;, test &amp;amp; update each ingress resource and check that the ingress traffic is not impacted. Once a v3 ingress resource migration is validated, you can delete the v2 ingress resource and deploy the v3 version. Repeat those steps for every ingress resource.&lt;/p&gt;&lt;p&gt;At the end of the process, you can safely remove the snippet added at step 1:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;# static configuration
core:
  defaultRuleSyntax: v2
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;et-voil%C3%A0&quot;&gt;Et voilà!&lt;/h2&gt;&lt;p&gt;You are now fully migrated to Traefik v3 🎉! And you did this progressively, keeping control during the whole process, with the option to rollback any change at any time.&lt;/p&gt;&lt;p&gt;This example with Kubernetes can be transposed to any orchestrator or environment, the process stays the same.&lt;/p&gt;&lt;p&gt;In the coming weeks, we will continue this series, and release deep dive articles on WASM support (and &lt;a href=&quot;https://coraza.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Coraza&lt;/u&gt;&lt;/a&gt; Web Application Firewall &lt;a href=&quot;https://plugins.traefik.io/plugins/65f2aea146079255c9ffd1ec/coraza-waf?ref=containous.ghost.io&quot;&gt;&lt;u&gt;plugin&lt;/u&gt;&lt;/a&gt;), OpenTelemetry, SPIFFE/Tailscale/HTTP/3, and Kubernetes Gateway API.&lt;/p&gt;&lt;p&gt;Ultimately, I&apos;d like to express immense gratitude to all contributors. Your support is incredibly valuable.&lt;/p&gt;&lt;p&gt;To learn more about v3, watch the recording of our recent&amp;nbsp;&lt;a href=&quot;https://info.traefik.io/watch-now-whats-new-in-traefik-3?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;u&gt;Traefik v3 Online Meetup&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;See you on GitHub!&lt;/p&gt;&lt;h2 id=&quot;useful-links&quot;&gt;Useful Links&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Traefik 3.0 on &lt;a href=&quot;https://github.com/traefik/traefik/releases/tag/v3.0.0?ref=containous.ghost.io&quot;&gt;&lt;u&gt;GitHub&lt;/u&gt;&lt;/a&gt; &amp;amp; on &lt;a href=&quot;https://hub.docker.com/_/traefik?ref=traefik.io&quot;&gt;&lt;u&gt;DockerHub&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Traefik &lt;a href=&quot;https://docs.traefik.io/?ref=traefik.io&quot;&gt;&lt;u&gt;Documentation&lt;/u&gt;&lt;/a&gt;, &lt;a href=&quot;https://traefik.io/traefik/?ref=traefik.io&quot;&gt;&lt;u&gt;Website&lt;/u&gt;&lt;/a&gt;, &amp;amp; &lt;a href=&quot;https://github.com/containous/traefik?ref=traefik.io&quot;&gt;&lt;u&gt;GitHub&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://community.traefik.io/?ref=traefik.io&quot;&gt;&lt;u&gt;Our Community Forum&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-158028398339&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:255.06668090820312px; margin-top:50px; margin-bottom:50px;&quot; data-hubspot-wrapper-cta-id=&quot;158028398339&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJopIkqy9PwxjiexjkTebdknPc%2B1lMv9CoGqRfqx9yrZ6uJu4k%2BqE2uO7QoJE9hsbY2%2Fu1c4YagHrQ4ZCBQ9KWSmNf5JnqrM8ZnFKNFuS20X3M%3D&amp;webInteractiveContentId=158028398339&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Proxy_Ad_02@2x&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-158028398339.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Level Up API Operations: Granular API Access Control Meets GitOps]]></title>
            <description><![CDATA[Traditional API access control strategies are limited to risky all-or-nothing approaches. See how Traefik Hub's provides granular, GitOps-driven access control.]]></description>
            <link>https://traefik.io/level-up-api-operations-granular-api-access-control-meets-gitops</link>
            <guid isPermaLink="true">https://traefik.io/level-up-api-operations-granular-api-access-control-meets-gitops</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[GitOps]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Immánuel Fodor]]></dc:creator>
            <pubDate>Thu, 18 Apr 2024 19:47:17 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/04/Blog_without_copies@2x-1-.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/04/Blog_without_copies@2x-1-.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/04/Blog_without_copies@2x-1-.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/04/Blog_without_copies@2x-1-.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/04/Blog_without_copies@2x-1-.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;We&apos;re thrilled to announce the release of a powerful new security feature for managing APIs with Traefik Hub: granular API access control with operation filters. This feature empowers you to control who can access your APIs and what they can do with them with unprecedented precision.&lt;/p&gt;&lt;p&gt;Modern applications rely heavily on APIs, as evidenced by the &lt;a href=&quot;https://www.cloudflare.com/2024-api-security-management-report/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Cloudflare 2024 API Security report&lt;/a&gt;, which found that APIs comprise over half (57%) of internet traffic. As the building blocks of digital infrastructure, APIs play a pivotal role in organizational success. However, securing these critical resources can be challenging. Traditionally, access control options have been limited to all-or-nothing approaches, leaving organizations vulnerable to security risks and compliance gaps.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-138990867782&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px; height:225px; margin-top:50px; margin-bottom:50px&quot; data-hubspot-wrapper-cta-id=&quot;138990867782&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLI6G4D9TW%2BZRQN5RVeXt1Svqvfbf0DUAHOf%2BhhMnlk5HFV36hTAgBNKw7yiU8Z8BH2YD%2BuFSVbjyA47ASESW7w863ebV6X2ux1LHkQrVmIlzvTIPxsPNvL0ZEJ3UmaNJBT05sCmqvqz4H0t0GXsgoTp06tjTEWwvBMGuLE0opBK6w%3D&amp;webInteractiveContentId=138990867782&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Hub-cta&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-138990867782.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;With Traefik Hub&apos;s new granular API access control, you can finally move beyond this restrictive approach. You now have the fine-grained control you need to secure your APIs at the HTTP method and URI path level, ensuring only authorized users can access specific functionalities within your APIs.&lt;/p&gt;&lt;h2 id=&quot;the-growing-challenge-of-securing-apis-in-modern-applications&quot;&gt;The Growing Challenge of Securing APIs in Modern Applications&lt;/h2&gt;&lt;p&gt;The expanding landscape of APIs presents a significant challenge for organizations seeking to maintain robust security measures. According to Cloudflare, nearly 60% of organizations grant &quot;write&quot; access to at least half of their APIs, and the prevalence of shadow and zombie APIs further complicates the picture:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Shadow APIs&lt;/strong&gt;, essentially unmanaged and unsecured application programming interfaces, pose a severe threat due to their inherent lack of oversight and potential access to sensitive data. Cloudflare’s machine learning algorithms found ~33% more API endpoints vs. what customers self-reported. These rogue APIs can lead to data breaches and expose critical information when compromised.&amp;nbsp;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Zombie APIs&lt;/strong&gt; were once active but have been deprecated or abandoned. They may already be managed but not used actively. Likely, these APIs are not well secured or left unsecured, so they impose an ever-growing risk of becoming compromised or being used to carry out malicious activities.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Additionally, the rise of generative AI introduces new security concerns. While AI holds great promise, its integration also brings potential vulnerabilities, as both AI models and AI-generated code can be susceptible to attack. Forrester &lt;a href=&quot;https://www.forrester.com/predictions/predictions-2024/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;predicts&lt;/u&gt;&lt;/a&gt; that by 2024, a lack of proper security measures could lead to several high-profile data breaches originating from AI-generated code. However, they also believe that up to 90% of data breaches will include a human element.&lt;/p&gt;&lt;p&gt;Furthermore, APIs used for business to business (B2B) communication, while often perceived as more trustworthy due to their authenticated nature, can make organizations fall into a false sense of security. Because these APIs typically serve a smaller, known set of partners, security teams might underestimate the potential for abuse. However, malicious actors can exploit APIs in unforeseen ways, accessing confidential data and restricted functionalities or compromising previously trusted partners, infiltrating their systems to search for more vulnerable APIs.&lt;/p&gt;&lt;p&gt;Finally, the &lt;a href=&quot;https://owasp.org/API-Security/editions/2023/en/0x00-header/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;OWASP Top 10 API Security Risks&lt;/a&gt; reveal a worrying trend, with over half of the listed points focusing on API consumption and authentication flaws. These vulnerabilities—such as broken authentication, unrestricted resource consumption, and improper access controls—can be exploited by attackers to gain unauthorized access to sensitive data and functionalities.&lt;/p&gt;&lt;h2 id=&quot;granular-api-access-control-to-the-rescue&quot;&gt;Granular API Access Control to the Rescue&lt;/h2&gt;&lt;p&gt;Traefik Hub now empowers you to move beyond the limitations of traditional, all-or-nothing API access control. Our new granular API access control feature allows you to precisely define who can access your APIs and what actions they are authorized to perform on a per-endpoint basis. This fine-grained control, achieved through&lt;strong&gt; HTTP method and URI path filtering&lt;/strong&gt;, ensures that only authorized users can access specific functionalities within your APIs, significantly enhancing your overall security posture.&amp;nbsp;&lt;/p&gt;&lt;p&gt;We&apos;ve taken a modern and efficient approach, leveraging the power of GitOps and Kubernetes Custom Resource Definitions (CRDs). GitOps, a &lt;a href=&quot;https://traefik.io/glossary/gitops-101/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;popular methodology for infrastructure automation&lt;/a&gt;, allows you to manage your access control rules in Git repositories, ensuring version control, collaboration, and easy rollbacks. CRDs, on the other hand, provide a Kubernetes-native way to &lt;a href=&quot;https://traefik.io/glossary/kubernetes-crds-expanding-k8s-potential-beyond-standard-objects/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;define custom resources&lt;/a&gt; specific to your needs, such as API access control rules. This combination offers several benefits:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Easy to read and understand&lt;/strong&gt;: CRDs are written in a human-readable format, making them easier to understand and manage than complex configuration files.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Validation and consistency&lt;/strong&gt;: CRD validity is enforced through specific schema validation, ensuring the consistency and integrity of your access control rules.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Version control and auditability&lt;/strong&gt;: Git provides built-in version control capabilities, allowing you to track changes to your access control rules and easily roll back to previous versions if needed. Additionally, Git enables comprehensive auditability of access control policy changes.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Automated policy application&lt;/strong&gt;: By leveraging Kubernetes-native labels and selectors, Traefik Hub can automatically apply your API access control policies to newly published APIs based on defined criteria, streamlining the security configuration process.&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;key-features-of-traefik-hubs-uniquely-flexible-api-security&quot;&gt;Key Features of Traefik Hub&apos;s Uniquely Flexible API Security&lt;/h2&gt;&lt;p&gt;The flexibility of Traefik Hub&apos;s granular API access control sets its apart from similar solutions. Here are the key features and functionalities that define our unique approach:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Support for all standard HTTP methods&lt;/strong&gt;: Our solution empowers you to define access control rules for all commonly used HTTP methods, including GET, POST, PUT, DELETE, PATCH, and more. This fine-grained control allows you to grant or deny access based on the specific actions users attempt to perform on your APIs.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Versatile URI path definition&lt;/strong&gt;: You can define URI paths with various options, including:&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Exact paths&lt;/strong&gt;: Grant or deny access to specific API endpoints&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Path prefixes&lt;/strong&gt;: Control access to a group of related endpoints sharing a common prefix&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Regular expressions&lt;/strong&gt;: Define complex patterns for matching multiple URI paths under a single rule, simplifying access control management.&lt;/li&gt;&lt;/ul&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Powerful rule combinations&lt;/strong&gt;: Go beyond simple allow/deny rules and leverage AND/OR logic to create sophisticated access control scenarios. This allows you to combine path and method restrictions to define precisely who can access what and under what conditions.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Simplified rule management with operation sets&lt;/strong&gt;: Introduce reusable sets of path and method combinations, called &quot;operation sets,&quot; to streamline rule creation and management. This approach promotes code organization and reduces redundancy, especially when defining access control rules for multiple APIs with similar functionalities.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Granular control at both API and API version levels&lt;/strong&gt;: Enforce access control not only at the API level but also at the individual API version level. This enables you to adapt access policies based on specific functionalities or security requirements introduced in different API versions.&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;business-benefits-efficiently-elevate-your-api-security&quot;&gt;Business Benefits: Efficiently Elevate Your API Security&lt;/h2&gt;&lt;p&gt;By utilizing Traefik Hub’s novel operation filtering, you can unlock a plethora of benefits for your organization:&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Craft highly customized rules tailored to your specific API security needs with streamlined access control policy management leveraging GitOps and CRDs for efficient access control rule creation, version control, and auditability.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Mitigate security risks and limit data exposure by granting access only to authorized users and actions on your APIs. Implement zero trust principles by restricting API access based on specific needs, minimizing the potential for data breaches and unauthorized exposure.&lt;/li&gt;&lt;li&gt;Improve developer experience by enabling them to easily understand and manage access control policies, thanks to clear and concise rules.&lt;/li&gt;&lt;li&gt;Facilitate adherence to industry regulations and compliance requirements. Many industries have regulations governing data access and security. Granular access control simplifies compliance by enabling you to demonstrate control over who can access your APIs and the specific data they can access.&lt;/li&gt;&lt;li&gt;Improve governance by enforcing consistent access control policies across your API landscape. Adhering to the same security standards can reduce confusion and potential vulnerabilities.&lt;/li&gt;&lt;li&gt;Keep your agility! Quickly define and modify access rules, and reuse existing access policies across APIs and API versions.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Traefik Hub supports the growing complexity of your API and access control needs. As your API landscape evolves, you can manage the increasing complexity of access requirements without sacrificing security or efficiency.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-138990867782&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px; height:225px; margin-top:50px; margin-bottom:50px&quot; data-hubspot-wrapper-cta-id=&quot;138990867782&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLI6G4D9TW%2BZRQN5RVeXt1Svqvfbf0DUAHOf%2BhhMnlk5HFV36hTAgBNKw7yiU8Z8BH2YD%2BuFSVbjyA47ASESW7w863ebV6X2ux1LHkQrVmIlzvTIPxsPNvL0ZEJ3UmaNJBT05sCmqvqz4H0t0GXsgoTp06tjTEWwvBMGuLE0opBK6w%3D&amp;webInteractiveContentId=138990867782&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Hub-cta&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-138990867782.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;In the next section, we&apos;ll showcase example scenarios demonstrating how granular API access control can be applied to address specific security challenges.&lt;/p&gt;&lt;h2 id=&quot;example-protecting-sensitive-data-in-a-healthcare-api&quot;&gt;Example: Protecting Sensitive Data in a Healthcare API&lt;/h2&gt;&lt;p&gt;Imagine a healthcare provider utilizing an API to manage patient data. This API likely contains sensitive information, such as medical records, prescriptions, and insurance details. While specific doctors and nurses require access to this data to provide care, it&apos;s crucial to restrict access to unauthorized individuals.&lt;/p&gt;&lt;p&gt;Traditionally, without granular access control, the provider might have only two options:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Grant all-or-nothing access: This approach exposes all data to all authorized users, posing significant security risks if unauthorized access occurs&lt;/li&gt;&lt;li&gt;Implementing complex custom business logic: This can be time-consuming to develop and maintain, especially as the API and its users evolve.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;With Traefik Hub&apos;s granular API access control, the provider can achieve precise control by defining fine-grained API access rules:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Limit access to specific patient data API endpoints with URI path rules based on user roles. For example, doctors can access detailed medical records, while nurses can only view basic information.&lt;/li&gt;&lt;li&gt;Restrict access to specific HTTP methods. For example, allow only GET requests for read-only access and disallow modification methods like PUT or DELETE for nurses.&lt;/li&gt;&lt;li&gt;Mix and match these to create more advanced rules.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Let’s see the following configuration example we want to express for an Admin API that is versioned with two versions and an unversioned Patient API.&lt;/p&gt;&lt;table&gt;
&lt;thead&gt;
&lt;tr&gt;
&lt;th&gt;Rule Placement&lt;/th&gt;
&lt;th&gt;Group&lt;/th&gt;
&lt;th&gt;URI Path&lt;/th&gt;
&lt;th&gt;HTTP Method&lt;/th&gt;
&lt;/tr&gt;
&lt;/thead&gt;
&lt;tbody&gt;
&lt;tr&gt;
&lt;td&gt;API Version&lt;/td&gt;
&lt;td&gt;admin&lt;/td&gt;
&lt;td&gt;/v1/admin (prefix)&lt;/td&gt;
&lt;td&gt;*&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API Version&lt;/td&gt;
&lt;td&gt;admin-beta&lt;/td&gt;
&lt;td&gt;/v1/admin (prefix) &lt;br&gt;/v2/admin (prefix)&lt;/td&gt;
&lt;td&gt;*&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API&lt;/td&gt;
&lt;td&gt;nurse&lt;/td&gt;
&lt;td&gt;/patients (strict) &lt;br&gt;/patients/[0-9]+$ (regex)&lt;/td&gt;
&lt;td&gt;GET &lt;br&gt;GET&lt;/td&gt;
&lt;/tr&gt;
&lt;tr&gt;
&lt;td&gt;API&lt;/td&gt;
&lt;td&gt;doctor&lt;/td&gt;
&lt;td&gt;/patients (prefix) &lt;br&gt;/.* (regex)&lt;/td&gt;
&lt;td&gt;GET, POST, PUT, DELETE &lt;br&gt;GET&lt;/td&gt;
&lt;/tr&gt;
&lt;/tbody&gt;
&lt;/table&gt;
&lt;ul&gt;
&lt;li&gt;The Admin API has two versions defined using URL path-based versioning:
&lt;ul&gt;
&lt;li&gt;The regular admin group can access everything on the current 1st version.&lt;/li&gt;
&lt;li&gt;The beta tester admin group can access everything on both the current and the upcoming v2 version.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The patient API exposes a &lt;code&gt;/patients&lt;/code&gt; endpoint with a sub-path &lt;code&gt;/patients/:id&lt;/code&gt; to access basic info of specific patients and a &lt;code&gt;/patients/:id/details&lt;/code&gt; endpoint to get all the details. All of these support modifying and deleting the available data and creating new records.
&lt;ul&gt;
&lt;li&gt;Nurses can only view basic information. They can list patients with &lt;code&gt;/patients&lt;/code&gt; using strict URI path matching to limit access only to the list endpoint and can access basic info with &lt;code&gt;/patients/:id&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;However, doctors can access full medical records, meaning everything under &lt;code&gt;/patients&lt;/code&gt; like &lt;code&gt;/patients/:id&lt;/code&gt; and &lt;code&gt;/patients/:id/details&lt;/code&gt; using URI path prefix matching.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;On the other hand, besides the Patient API, doctors can access all Admin API versions with read-only permissions to retrieve basic information about the hospital administration.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Let’s see the examples expressed as Traefik Hub CRDs. The relevant additions of granular API access control are highlighted.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
---
apiVersion: hub.traefik.io/v1alpha1
kind: API
metadata:
  name: admin-api
  namespace: apps
  labels:
    area: health
spec:
  pathPrefix: /admin
  currentVersion: admin-api-v1
---
apiVersion: hub.traefik.io/v1alpha1
kind: APIVersion
metadata:
  name: admin-api-v1
  namespace: apps
  labels:
    area: health
spec:
  apiName: admin-api
  release: v1.0.0
  title: &quot;Title of Admin API v1&quot;
  routes:
    - pathPrefix: /v1
  stripPathPrefix: true
  service:
    name: admin-service-v1
    port:
      number: 8080
    openApiSpec:
      path: /openapi.json
      &lt;b&gt;operationSets:                  # A new block from here
        - name: admin-ops-v1
          matchers:
            - path: /admin
        - name: read-all
          matchers:
            - methods:
                - GET&lt;/b&gt;
---
apiVersion: hub.traefik.io/v1alpha1
kind: APIVersion
metadata:
  name: admin-api-v2
  namespace: apps
  labels:
    area: health
spec:
  apiName: admin-api
  release: v2.0.0
  title: &quot;Title of the beta Admin API v2&quot;
  routes:
    - pathPrefix: /v2
  stripPathPrefix: true
  service:
    name: admin-service-v2
    port:
      number: 8080
    openApiSpec:
      path: /openapi.json
      &lt;b&gt;operationSets:                  # A new block from here
        - name: admin-ops-v2
          matchers:
            - path: /admin
        - name: read-all
          matchers:
            - methods:
                - GET&lt;/b&gt;
---
apiVersion: hub.traefik.io/v1alpha1
kind: API
metadata:
  name: patient-api
  namespace: apps
  labels:
    area: health
spec:
  pathPrefix: /patients
  service:
    name: patient-service
    port:
      number: 8080
    openApiSpec:
      path: /openapi.json
      &lt;b&gt;operationSets:                  # A new block from here
        - name: nurse-ops
          matchers:
            - path: /patients
              methods:
                - GET
            - pathRegex: &quot;/patients/[0-9]+$&quot;
              methods:
                - GET
        - name: doctor-ops
          matchers:
            - pathPrefix: /patients
              methods:
                - GET
                - POST
                - PUT
                - DELETE
        - name: read-all
          matchers:
            - methods:
                - GET&lt;/b&gt;
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;First, we define the Admin API and its two versions with operation sets specific to that version. Note that you don’t need to add the version matcher to the operation set, it will automatically apply—i.e., we only define &lt;code&gt;/admin&lt;/code&gt;, and depending on the version, it will apply to &lt;code&gt;/v1/admin&lt;/code&gt; and &lt;code&gt;/v2/admin&lt;/code&gt;. There is also an operation set allowing read access on both versions, using the same operation set name to be reusable across even multiple APIs when we give access to users. On the Patient API, we define the nurse and doctor operation sets with explicit rules as to who can access what. The generic read-all set is also present here, extending to multiple APIs.&lt;/p&gt;
&lt;p&gt;Then we define our API Access policies to match the user groups with the APIs, API Versions, and filter for the operation sets.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
---
apiVersion: hub.traefik.io/v1alpha1
kind: APIAccess
metadata:
  name: admin-access
  labels:
    area: health
spec:
  groups:
 &lt;b&gt;- admin&lt;/b&gt;                             # Note the admin group
  apis:
    - name: &lt;b&gt;admin-api&lt;/b&gt;                # Has Access to the Admin API
      namespace: apps
  &lt;b&gt;operationFilter:
    include:
      - admin-ops-v1&lt;/b&gt;                 # With the v1 operation set
---
apiVersion: hub.traefik.io/v1alpha1
kind: APIAccess
metadata:
  name: admin-beta-access
  labels:
    area: health
spec:
  groups:
    &lt;b&gt;- admin-beta&lt;/b&gt;                     # Note the beta tester admin group
  apis:
    - name: &lt;b&gt;admin-api&lt;/b&gt;                # Has access to the Admin API
      namespace: apps
  &lt;b&gt;operationFilter:
    include:
      - admin-ops-v1                 # With the v1 operation set as regular admins
      - admin-ops-v2&lt;/b&gt;                 # And the new beta features of v2
---
apiVersion: hub.traefik.io/v1alpha1
kind: APIAccess
metadata:
  name: nurse-access
  labels:
    area: health
spec:
  groups:
    &lt;b&gt;- nurse&lt;/b&gt;                          # Note the nurse group
  apis:
    - name: &lt;b&gt;patient-api&lt;/b&gt;              # Has access to the Patient API
      namespace: apps
  &lt;b&gt;operationFilter:
    include:
      - nurse-ops&lt;/b&gt;                    # With the restricted operations allowed to
---
apiVersion: hub.traefik.io/v1alpha1
kind: APIAccess
metadata:
  name: doctor-access
  labels:
    area: health
spec:
  groups:
    &lt;b&gt;- doctor&lt;/b&gt;                         # Note the doctor group
  apiSelector:
    matchLabels:
      &lt;b&gt;area: health                   # Can access APIs (current+future) with this label
  operationFilter:
    include:
      - doctor-ops                   # But restricted to operations defined for doctors
      - read-all&lt;/b&gt;                     # and read-all operations over multiple APIs
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;What stands out here is that the beta admin group can access two operation sets across the two API versions. In contrast, the regular admin group will only be granted access to the first version of the API. Nurses can only access the nurse operations, that’s simple. However, the policy for doctors is defined using a Kubernetes-native label selector to select all APIs that match the health label. This way, the filter for the &lt;code&gt;doctor-ops&lt;/code&gt; operation will apply to the Patient API, and the &lt;code&gt;read-all&lt;/code&gt; operation filter will be used throughout the two API versions of the Admin API. Since the &lt;code&gt;read-all&lt;/code&gt; operation is also present on the Patient API, but the &lt;code&gt;doctor-ops&lt;/code&gt; provide extended access to doctors, the broader rule overrides it.&lt;/p&gt;
&lt;p&gt;When the Admin API v2 becomes stable, we could deprecate the v1 version to have only read-only access by modifying the related operation set and the regular admins’ access policy. Showing only the changes below:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;
# Admin API v1
operationSets:
  - name: admin-ops-v1
    matchers:
      - path: /admin
        &lt;b&gt;Methods:                    # New line
          - GET&lt;/b&gt;                     # New line

# Regular Admin Access
operationFilter:
  include:
    - admin-ops-v1
    &lt;b&gt;- admin-ops-v2&lt;/b&gt;                  # New line
&lt;/code&gt;&lt;/pre&gt;&lt;p&gt;In case a new API is added later with the same health label, that API will not grant automatic access to doctors to prevent data leaks, even though the label selector applies. Doctors can only gain access if the doctor-ops is also defined on that new API or if it defines some other operations that will be explicitly added to the doctors’ API access policy.&lt;/p&gt;&lt;p&gt;We hope these examples shed light on the flexibility of Traefik Hub’s new granular API access control solution with operation sets and filters.&lt;/p&gt;&lt;h2 id=&quot;conclusion-take-control-of-your-api-security&quot;&gt;Conclusion: Take Control of Your API Security&lt;/h2&gt;&lt;p&gt;In today&apos;s API-driven landscape, robust security measures are essential. Traditional, all-or-nothing access control approaches leave organizations vulnerable to data breaches, compliance gaps, and operational inefficiencies. Traefik Hub&apos;s granular API access control empowers you to address these challenges head-on. Gain the control you need to secure your APIs, optimize developer workflows, and build a foundation for secure and thriving digital interactions.&lt;/p&gt;&lt;p&gt;Ready to learn more? Dive deeper into our documentation of operation set definitions for &lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-management/api?ref=containous.ghost.io#operation-filtering&quot;&gt;&lt;u&gt;API&lt;/u&gt;&lt;/a&gt; &amp;amp; &lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-management/api-version?ref=containous.ghost.io#operation-filtering&quot;&gt;&lt;u&gt;API Version&lt;/u&gt;&lt;/a&gt; and use them in operation filters in the &lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-management/api-access?ref=containous.ghost.io#operationfilter&quot;&gt;&lt;u&gt;API Access&lt;/u&gt;&lt;/a&gt; CRD. &lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-138990867782&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:225px; margin-top:50px; margin-bottom:50px&quot; data-hubspot-wrapper-cta-id=&quot;138990867782&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLI6G4D9TW%2BZRQN5RVeXt1Svqvfbf0DUAHOf%2BhhMnlk5HFV36hTAgBNKw7yiU8Z8BH2YD%2BuFSVbjyA47ASESW7w863ebV6X2ux1LHkQrVmIlzvTIPxsPNvL0ZEJ3UmaNJBT05sCmqvqz4H0t0GXsgoTp06tjTEWwvBMGuLE0opBK6w%3D&amp;webInteractiveContentId=138990867782&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Hub-cta&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-138990867782.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[How Modern API Gateways Make DevOps Engineers More Efficient]]></title>
            <description><![CDATA[Learn about the benefits of switching to an API gateway model and how those benefits are magnified significantly by choosing a modern, GitOps-driven API gateway.]]></description>
            <link>https://traefik.io/how-modern-api-gateways-make-devops-engineers-more-efficient</link>
            <guid isPermaLink="true">https://traefik.io/how-modern-api-gateways-make-devops-engineers-more-efficient</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[GitOps]]></category>
            <category><![CDATA[Strategy]]></category>
            <dc:creator><![CDATA[Immánuel Fodor]]></dc:creator>
            <pubDate>Wed, 03 Apr 2024 19:06:40 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/04/How-Modern-API-Gateways-Make-DevOps-Engineers-More-Efficient---blog.jpg&quot; class=&quot;kg-image&quot; alt=&quot;How Modern API Gateways Make DevOps Engineers More Efficient&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/04/How-Modern-API-Gateways-Make-DevOps-Engineers-More-Efficient---blog.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/04/How-Modern-API-Gateways-Make-DevOps-Engineers-More-Efficient---blog.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/04/How-Modern-API-Gateways-Make-DevOps-Engineers-More-Efficient---blog.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/04/How-Modern-API-Gateways-Make-DevOps-Engineers-More-Efficient---blog.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Imagine, for a moment, that you are in charge of &lt;a href=&quot;https://traefik.io/blog/leroy-merlin-leverages-traefik-enterprise/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;a large chain of home improvement stores&lt;/u&gt;&lt;/a&gt;. You have hundreds of stores and tens of thousands of employees spread across 12 countries. You receive tens of thousands of orders every single day spread over 100,000 requests every single second. You’ve got four different IT platforms, all on Kubernetes. Latency is unstable. Debugging is time-consuming. Developers are frustrated.&lt;/p&gt;&lt;p&gt;And then the pandemic happens, sending the whole world online.&lt;/p&gt;&lt;p&gt;That’s the situation home improvement and gardening retailer &lt;a href=&quot;https://www.leroymerlin.fr/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Leroy Merlin&lt;/u&gt;&lt;/a&gt; found themselves in in 2020. Like so many companies, they knew they needed to face that “digital transformation” buzzword before they lost their developers to The Great Resignation. And in this case, that meant integrating an API gateway into their processes and architecture.&lt;/p&gt;&lt;p&gt;It’s a problem you may also be facing.&lt;/p&gt;&lt;h2 id=&quot;why-consider-an-api-gateway-model&quot;&gt;Why Consider an API Gateway Model?&lt;/h2&gt;&lt;p&gt;An &lt;a href=&quot;https://traefik.io/solutions/api-gateway/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;API gateway&lt;/a&gt; serves as an intermediary between clients and backend services, streamlining request routing, enforcing security measures, managing APIs and microservices, and optimizing the communication flow within complex software architectures. That’s a mouthful, but the important thing is that it provides a centralized and unified way for developers to interact with the backend services that power your applications and infrastructure.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-169083275181&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px; height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;169083275181&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLIkMktA9qLULrcu%2FUN%2FDw38ReEyGU%2B%2BIMLL8v%2Bj2lqeRpcmEUwThGudRpY%2BjfaLsf4%2BqTmU3aLhxeNCIBeFfuWHZh1t1Dh0122aY09%2FVNRIAbbUCQPi5t%2BlY%2FZ1%2FEovhMSpf4BQjf%2BSany6vOA1Hjl2hA8C6Qt0olD8FAuIpT6T2dR5PIriWhAlWvpwoCCwP45plFO%2F1P8wD4BgDrPU&amp;webInteractiveContentId=169083275181&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Square Image - 1200 x 1200(7)&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-169083275181.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;


&lt;!--kg-card-end: html--&gt;
&lt;p&gt;An API gateway also provides several other features that an enterprise with significant infrastructure needs.&lt;/p&gt;&lt;h3 id=&quot;traffic-management&quot;&gt;Traffic Management&lt;/h3&gt;&lt;p&gt;Whether you have just a few lightly trafficked services or you’re dealing with 100K requests per second, it’s obviously crucial to make sure those requests are routed properly, but that involves much more than simply sending them to the right service.&lt;/p&gt;&lt;p&gt;The API gateway has to provide efficient routing, of course, but it also has to provide load balancing; it would be simple for a single service to not just bog down and stop responding, but also bring the entire system to a standstill, particularly during traffic spikes. The API gateway has to handle these spikes gracefully.&lt;/p&gt;&lt;p&gt;To do all this, the API gateway has to optimize service communication, making sure that data and requests take the most efficient paths through the system.&lt;/p&gt;&lt;h3 id=&quot;authentication-and-authorization&quot;&gt;Authentication and Authorization&lt;/h3&gt;&lt;p&gt;Just because an API gateway makes it possible to more easily access services doesn&apos;t mean that anyone and everyone should be able to access every service within the system. An API gateway needs to ensure that non-public resources can only be accessed by those to whom they should be available, whether that’s a user or another service.&lt;/p&gt;&lt;p&gt;To make this happen, you need to be able to verify digital identity through the most appropriate means. In some cases that means issuing, managing, and verifying tokens. In others, it may mean implementing multi-factor authentication (MFA). The API gateway also has to ensure that that particular identity actually has the privileges it’s trying to exercise so that sensitive areas are reserved for those with the right privileges, keeping customer data and critical services safe and sound. In other words, you need to make sure you’re &lt;a href=&quot;https://traefik.io/blog/centralizing-and-standardizing-oidc-at-the-api-gateway-level/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;wrapping API endpoints in layers of security&lt;/a&gt; that deter would-be digital trespassers.&lt;/p&gt;&lt;h3 id=&quot;caching-and-rate-limiting&quot;&gt;Caching and Rate Limiting&lt;/h3&gt;&lt;p&gt;Speed is the lifeblood of the digital experience. For example, Leroy Merlin’s site required multiple service calls, so to ensure it felt responsive, each call could take no more than 20ms. The API gateway, with its caching capabilities, stores copies of frequently requested data so that future requests can be fulfilled faster. It can also use smart caching strategies, anticipating the customer’s next move and ensuring the most relevant and up-to-date information is always at the ready, minimizing wait times.&lt;/p&gt;&lt;p&gt;Sometimes, however, the API gateway has to limit requests from a specific user or service in order to prevent overuse and preserve resources for the rest of the system.&lt;/p&gt;&lt;h3 id=&quot;log-management&quot;&gt;Log Management&lt;/h3&gt;&lt;p&gt;In modern applications and infrastructure, every action, every request, and every error leaves a trace in the form of logs. The API gateway acts as the central library for these vast volumes of data, collecting and organizing them so that they can be easily accessed, studied, and acted upon.&lt;/p&gt;&lt;p&gt;But a library is only as good as its librarians. By integrating with external monitoring—for example, Leroy Merlin needed a connector to send their logs to &lt;a href=&quot;https://www.datadoghq.com/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Datadog&lt;/a&gt;—the API gateway ensures that the logs are not just collected but analyzed, turning raw data into actionable insights that can guide the evolution of digital services.&lt;/p&gt;&lt;p&gt;Of course, this is probably most useful when things go awry, as they inevitably do. In this case, the collected logs become the map that leads developers and operators back to the source of the problem.&lt;/p&gt;&lt;p&gt;Finally, in the realm of digital commerce, compliance with laws and regulations is not just a necessity but a cornerstone of trust. Through meticulous log management, the API Gateway helps safeguard customer data and maintain the integrity of digital operations.&lt;/p&gt;&lt;h3 id=&quot;certificate-management&quot;&gt;Certificate Management&lt;/h3&gt;&lt;p&gt;Of course, it’s impossible to talk about digital security without talking about SSL/TLS for end-to-end encryption. The API gateway not only handles encryption, but also tackles certificate renewal, not just taking care of the actual renewal, but ensuring that all servers and services in the system received the new certificates—preferably without having to perform a full reload, resulting in the loss of current sessions.&lt;/p&gt;&lt;p&gt;For years functions like this have been handled by the Electronic Frontier Foundation’s Certbot, but more &lt;a href=&quot;https://www.eff.org/deeplinks/2024/03/should-caddy-and-traefik-replace-certbot?ref=containous.ghost.io&quot;&gt;&lt;u&gt;modern applications have been using open source projects like Traefik&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;All of these capabilities can be helpful for any business, Leroy Merlin included. But API gateways that are aligned to modern operations, namely GitOps, are more than just helpful. They&apos;re transformative.&lt;/p&gt;&lt;h2 id=&quot;why-choose-a-gitops-driven-api-gateway&quot;&gt;Why Choose a GitOps-Driven API Gateway&lt;/h2&gt;&lt;p&gt;While the capabilities of a traditional API gateways bring a number of benefits, many were created before the cloud native and operations revolutions. To maximize the benefits of switching to an API gateway model, however, pairing a GitOps strategy with a GitOps-driven API gateway is a must.&lt;/p&gt;&lt;p&gt;GitOps is a set of practices that uses Git as the single source of truth for declarative infrastructure and applications. Essentially, it applies the principles of version control, collaboration, compliance, and CI/CD (Continuous Integration/Continuous Deployment) automation to infrastructure and application management.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-169083275181&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px; height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;169083275181&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLIkMktA9qLULrcu%2FUN%2FDw38ReEyGU%2B%2BIMLL8v%2Bj2lqeRpcmEUwThGudRpY%2BjfaLsf4%2BqTmU3aLhxeNCIBeFfuWHZh1t1Dh0122aY09%2FVNRIAbbUCQPi5t%2BlY%2FZ1%2FEovhMSpf4BQjf%2BSany6vOA1Hjl2hA8C6Qt0olD8FAuIpT6T2dR5PIriWhAlWvpwoCCwP45plFO%2F1P8wD4BgDrPU&amp;webInteractiveContentId=169083275181&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Square Image - 1200 x 1200(7)&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-169083275181.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;Everything in the system—infrastructure, networking, applications—is described in a declarative manner. This means you specify the desired state of your system, and automated processes work to maintain that state. When you want to make a change, you change that stored configuration and commit the change to the repository, and the system makes the change when it’s merged. The process enables code review, automated testing, and collaboration before changes are merged and applied, which improves the stability and security of the system.&lt;/p&gt;&lt;p&gt;This way, the actual state of the system matches the declared state in the repository. If discrepancies arise, the system can automatically correct itself, or alert an operator to intervene.&lt;/p&gt;&lt;p&gt;This process provides a number of benefits for developers.&lt;/p&gt;&lt;h3 id=&quot;automation&quot;&gt;Automation&lt;/h3&gt;&lt;p&gt;Because changes are applied automatically, developers can roll out a new configuration by simply making a single change, and as soon as it’s approved and applied, it can be deployed everywhere it needs to go. This way developers can make changes quickly without risking the inevitable human error that comes with manual changes.&lt;/p&gt;&lt;p&gt;That enables developers to work more quickly and confidently, knowing their changes can be tested and reviewed before they roll out, and that every change is tracked, versioned, and most of all, reversible.&lt;/p&gt;&lt;h3 id=&quot;easy-roll-backs&quot;&gt;Easy Roll Backs&lt;/h3&gt;&lt;p&gt;If a problem does develop, recovery from failures becomes a streamlined process with GitOps. Instead of frantic fixes, teams can methodically revert to a stable state, analyze what went wrong, and apply lessons learned. All of this lets developers keep downtime to a bare minimum.&lt;/p&gt;&lt;p&gt;Knowing they can easily undo changes encourages experimentation and innovation, so developers can try new features and approaches with the safety net of easy rollbacks, fostering a culture of innovation.&lt;/p&gt;&lt;h3 id=&quot;increased-reliability-repeatability&quot;&gt;Increased Reliability &amp;amp; Repeatability&lt;/h3&gt;&lt;p&gt;Consistency is key to reliability. GitOps ensures that every environment, from development to production, is a mirror image, eliminating the &quot;it works on my machine&quot; syndrome and bolstering developer confidence in every release.&lt;/p&gt;&lt;p&gt;It also gives developers the ability to reproduce environments and deployments at the push of a button, which means the power to quickly spin up new instances, test environments, or recover from (the inevitable) disasters. Cloning existing environments is as simple as cloning a repository and applying the configuration elsewhere.&lt;/p&gt;&lt;p&gt;What’s more, because all of these environments are based on the same images, developers get the standardization that is the foundation of efficiency. GitOps enforces a uniform setup across all infrastructure, simplifying management, reducing complexity, and ensuring that best practices are universally followed.&lt;/p&gt;&lt;h3 id=&quot;better-collaboration&quot;&gt;Better Collaboration&lt;/h3&gt;&lt;p&gt;GitOps provides a common framework for operations, establishing a unified language and approach that streamlines workflows and harmonizes efforts across the developer landscape.&lt;/p&gt;&lt;p&gt;It creates a collaborative environment where developers, operations, and even security teams work from the same playbook, enhancing communication and reducing friction. Every change is tracked, every decision logged, making sure all team members are on the same page, fostering trust and helping create smoother operations.&lt;/p&gt;&lt;p&gt;With infrastructure and configuration codified, contributing changes becomes as simple as contributing code, lowering barriers for team members to suggest improvements or fixes, and the GitOps workflow encourages dialogue across departments, making sure that everyone&apos;s voice is heard and that decisions are made with a holistic view of the organization&apos;s objectives.&lt;/p&gt;&lt;h2 id=&quot;putting-it-all-together&quot;&gt;Putting it all together&lt;/h2&gt;&lt;p&gt;By opting for a modern, GitOps-based API gateway (in this case, &lt;a href=&quot;https://traefik.io/traefik-enterprise/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik’s API Gateway&lt;/u&gt;&lt;/a&gt;), Leroy Merlin solved a number of issues. This approach creates significant benefits that improve workflows and productivity, streamline deployment processes, and make them more automated, consistent, and error-free. All this drastically reduces the time and effort Leroy Merlin and companies like them need for manual configurations and deployments.&amp;nbsp;&lt;/p&gt;&lt;p&gt;The clear, version-controlled history of infrastructure changes improves collaboration between team members, allowing for easier code reviews, quicker onboarding of new developers, and a better development environment. Additionally, the ability to quickly rollback to previous states in case of errors or unforeseen issues significantly lowers the risk associated with new releases, fostering an environment where innovation and experimentation are encouraged without the fear of catastrophic failures.&amp;nbsp;&lt;/p&gt;&lt;p&gt;All of this can not only boost the morale and efficiency of your development team, but also accelerate the pace of digital innovation, just as it did for Leroy Merlin, ensuring they could rapidly respond to market demands and maintain a competitive edge in the retail space. &lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-169083275181&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px; height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;169083275181&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLIkMktA9qLULrcu%2FUN%2FDw38ReEyGU%2B%2BIMLL8v%2Bj2lqeRpcmEUwThGudRpY%2BjfaLsf4%2BqTmU3aLhxeNCIBeFfuWHZh1t1Dh0122aY09%2FVNRIAbbUCQPi5t%2BlY%2FZ1%2FEovhMSpf4BQjf%2BSany6vOA1Hjl2hA8C6Qt0olD8FAuIpT6T2dR5PIriWhAlWvpwoCCwP45plFO%2F1P8wD4BgDrPU&amp;webInteractiveContentId=169083275181&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Square Image - 1200 x 1200(7)&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-169083275181.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[We Built The Most Modern API Management from Scratch. Here’s How.]]></title>
            <description><![CDATA[Complaining about things that don't work well is easy. What's hard is coming up with a better solution.
That statement is true of many things in life, including one we know well at Traefik: API management.]]></description>
            <link>https://traefik.io/we-built-the-most-modern-api-management-from-scratch-heres-how</link>
            <guid isPermaLink="true">https://traefik.io/we-built-the-most-modern-api-management-from-scratch-heres-how</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Thu, 21 Mar 2024 14:40:29 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/03/How-We-Built-The-Most-Modern-API-Management-from-Scratch.jpg&quot; class=&quot;kg-image&quot; alt=&quot;How We Built The Most Modern API Management from Scratch.&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/03/How-We-Built-The-Most-Modern-API-Management-from-Scratch.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/03/How-We-Built-The-Most-Modern-API-Management-from-Scratch.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/03/How-We-Built-The-Most-Modern-API-Management-from-Scratch.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/03/How-We-Built-The-Most-Modern-API-Management-from-Scratch.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Complaining about things that don&apos;t work well is easy. What&apos;s hard is coming up with a better solution.&lt;/p&gt;&lt;p&gt;That statement is true of many things in life, including one we know well at Traefik: API management. After all, there is &lt;a href=&quot;https://devops.com/api-management-a-weak-link-in-the-cloud-native-chain/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;plenty to criticize about traditional API management &lt;/u&gt;&lt;/a&gt;— such as poor integration with cloud-native technologies, inefficient incident management, challenging release management and poor governance strategies.&lt;/p&gt;&lt;p&gt;But what does a better approach to API management look like? How, specifically, do you implement a tool that enables cloud native-friendly, scalable, collaborative API management? Those are not simple questions to answer.&lt;/p&gt;&lt;p&gt;But these are the questions that we had to solve in order to build Traefik Hub. We had to make careful design choices to determine how API management workflows based on our tool should work. We also had to analyze a variety of technical considerations, such as how best to implement tunneling and a high-availability data plane.&lt;/p&gt;&lt;p&gt;We&apos;re proud of the solutions we arrived at. We&apos;re so proud that we&apos;d like to share them — and the rationale behind them — in this article, with the goal of offering our community a peek into the design process and thinking that led to Traefik Hub.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-137484371384&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:226.61666870117188px&quot; data-hubspot-wrapper-cta-id=&quot;137484371384&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLK1ie0Dv2YdwFeP4xhiz4vCMJTrdfEQX2R2L1zAIGCsTwTGbNbPkPFvo9qUGAfLAH9IgsjRFcTJauQChtiGnfjS2DPGNWHiu%2F20tb9HpOer5p7ukaa27gj3CNbPEEV2BAM9R%2FBWQgbrZ%2FfRsKZ8WYsyjMlm2GVLVaAqxdouDXEBAwW6gJx4U%2B1FUzT77lGAbP8%3D&amp;webInteractiveContentId=137484371384&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Hub-cta&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-137484371384.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;why-we-decided-to-reboot-api-management&quot;&gt;Why We Decided to Reboot API Management&lt;/h2&gt;&lt;p&gt;Before delving into the choices we made when designing Traefik Hub, let&apos;s talk about why we decided to build the solution in the first place.&lt;/p&gt;&lt;p&gt;The reason was simple: we believe traditional API management is badly broken. Most conventional API management tools were designed and built before cloud-native architectures became widespread, and before the widespread adoption of collaboration-centric, DevOps-based cultures. As a result, they lack the scalability, modularity and efficiency to drive optimal results in today&apos;s scale-out, distributed world.&lt;/p&gt;&lt;p&gt;We conceived of Traefik Hub as a way to reboot API management, so to speak. By building a new solution from the ground up — instead of trying to extend or overhaul an existing API management tool — we gave ourselves total freedom to reinvision what modern API management should look like.&lt;/p&gt;&lt;h2 id=&quot;our-design-principles&quot;&gt;Our Design Principles&lt;/h2&gt;&lt;p&gt;Starting from scratch meant we had virtually unlimited leeway to design Traefik Hub in whichever ways we thought best. But it also meant we had to make a ton of design choices, since there was no pre-existing foundation to guide us or get us started.&lt;/p&gt;&lt;p&gt;We settled on an approach oriented around the following design principles.&lt;/p&gt;&lt;h3 id=&quot;the-unix-philosophy&quot;&gt;The Unix Philosophy&lt;/h3&gt;&lt;p&gt;For starters, we wanted to adhere to the so-called &lt;a href=&quot;http://www.catb.org/~esr/writings/taoup/html/ch01s06.html?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Unix philosophy&lt;/u&gt;&lt;/a&gt;, which emphasizes designing a tool that does one thing and does it well. That&apos;s why Traefik Hub doesn&apos;t try to be a Swiss army knife of API-related functionality. Instead, it focuses on API &quot;day 2&quot; operations — API deployment, runtime management, observability, and security.&lt;/p&gt;&lt;p&gt;Other tools are available to assist with processes like API design and documentation, and we don&apos;t think it&apos;s healthy to try to pack too many features into one tool.&lt;/p&gt;&lt;h3 id=&quot;declarative-management&quot;&gt;Declarative Management&lt;/h3&gt;&lt;p&gt;In the cloud-native era, engineers have become accustomed to declarative management. That means writing code that describes how something should operate, then applying the desired configuration automatically.&lt;/p&gt;&lt;p&gt;Traefik Hub does this by enabling a GitOps-based approach to API management: by using files that you can manage through Git repositories, you describe what should happen to APIs, then Traefik Hub makes it happen automatically. In addition to helping to keep configuration data centralized and accessible, this approach enables scalability and automation in the realm of API management.&lt;/p&gt;&lt;h3 id=&quot;kubernetes-native&quot;&gt;Kubernetes-Native&lt;/h3&gt;&lt;p&gt;We decided not just to be cloud-native in general, but to focus on creating a truly Kubernetes-native solution, because Kubernetes has become the de facto solution behind cloud-native environments.&lt;/p&gt;&lt;p&gt;By &quot;truly Kubernetes-native,&quot; we mean that Traefik Hub is CRD-driven and can be managed directly through standard kubectl commands, rather than requiring a proprietary tool.&lt;/p&gt;&lt;h3 id=&quot;intuitive-and-rapid-time-to-value&quot;&gt;Intuitive and Rapid Time-to-Value&lt;/h3&gt;&lt;p&gt;We don&apos;t think anyone should have to take a course or spend months reading documentation and following tutorials to manage APIs with Traefik Hub. Instead, we prioritized a simple, intuitive design that minimizes the learning curve for anyone who is already familiar with cloud-native concepts and tooling.&lt;/p&gt;&lt;h3 id=&quot;lightweight-composable-architecture&quot;&gt;Lightweight, Composable Architecture&lt;/h3&gt;&lt;p&gt;Most cloud-native architectures are composable, meaning they involve a variety of loosely coupled components. Traefik Hub adopts the same type of design by giving users freedom to pick and choose from a variety of modern solutions when building their stacks. In other words, Traefik Hub doesn&apos;t force you into a particular stack or platform; you can run it alongside other tools of your choice.&lt;/p&gt;&lt;h3 id=&quot;data-plane-and-control-plane-separation&quot;&gt;Data Plane and Control Plane Separation&lt;/h3&gt;&lt;p&gt;Finally, we decided that it was important to keep the data plane and the control plane separate — partly because we believe in modular and composable design, as we just noted, but also to enhance the security and reliability of our API management solution. We&apos;ll say more later about exactly how we implemented the data plane with this goal in mind.&lt;/p&gt;&lt;h2 id=&quot;building-traefik-hub-challenges-we-faced-and-lessons-we-learned&quot;&gt;Building Traefik Hub: Challenges We Faced and Lessons We Learned&lt;/h2&gt;&lt;p&gt;Deciding on high-level design principles is one thing. Actually implementing them is another. And while we don&apos;t have room in this article to discuss every technical decision we made as we built Traefik Hub according to the design concepts described above, we&apos;d like to highlight a couple key choices we made as we worked through implementation challenges.&lt;/p&gt;&lt;h3 id=&quot;tunneling&quot;&gt;Tunneling&lt;/h3&gt;&lt;p&gt;One was tunneling. Since we had to expose some resources publicly, creating tunneled connections to them was an elegant solution. We wanted the tunnels to be:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Highly available&lt;/li&gt;&lt;li&gt;Encrypted to protect data&lt;/li&gt;&lt;li&gt;Compatible with full-duplex mode (so that data could flow from either plane to the other plane simultaneously)&lt;/li&gt;&lt;li&gt;Transparent to firewalls, so users would not require public IP addresses to expose the data plane&lt;/li&gt;&lt;li&gt;Capable of supporting multiplexed data transfer&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;There are a variety of tunneling technologies that have the potential to support at least most of these goals. At first, we considered using TCP and SSH, but that would have required a public IP address, and the connection would not have been reliable because there is no true fallback solution on SSH disconnect. We also thought about using WebSocket and SSH, which doesn&apos;t require a public IP, but is still subject to the disconnect issue.&lt;/p&gt;&lt;p&gt;Since SSH-based tunneling didn&apos;t seem ideal, we began exploring approaches based on &lt;a href=&quot;https://github.com/hashicorp/yamux?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Yamux&lt;/u&gt;&lt;/a&gt;, an open source multiplexing library. Initially, we considered using Yamux alongside GRPC, but that felt too hacky and the data envelope was too large. TCP and Yamux also proved suboptimal because it would have required a public IP.&lt;/p&gt;&lt;p&gt;Finally, we settled on WebSocket and Yamux — which doesn&apos;t need a public IP, allows firewall passthrough, provides built-in encryption via TLS, and is more reliable following disconnects than an SSH tunnel.&lt;/p&gt;&lt;h3 id=&quot;data-plane-high-availability&quot;&gt;Data Plane High Availability&lt;/h3&gt;&lt;p&gt;When implementing the data plane for Traefik Hub, we wanted to make sure our solution would be resilient against regional network failures. In other words, we didn&apos;t want a problem in one part of the network to make the entire solution unavailable.&lt;/p&gt;&lt;p&gt;The first step in making this possible was to deploy dozens of brokers in different regions. But on their own, distributed brokers don&apos;t guarantee high data plane availability because a data plane would still fail if it&apos;s connected to just one broker and that broker goes down. So, instead, we designed our data plane to connect to at least three different brokers simultaneously — meaning that it can tolerate the failure of a minimum of two brokers before the data plane becomes unavailable.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;In addition, we dynamically optimized load balancing for data plane connections. This ensures that if failures occur in some parts of the network, traffic is automatically rebalanced to keep data flowing as efficiently as possible.&lt;/p&gt;&lt;h2 id=&quot;conclusion-a-new-approach-to-api-management&quot;&gt;Conclusion: A New Approach to API Management&lt;/h2&gt;&lt;p&gt;Again, there&apos;s plenty more to say about how Traefik Hub works under the hood, and why we decided to make it work that way. But we hope that the details above have provided at least a basic sense of what our thought process was as we reconceptualized API management, as well as the types of technical iterations we worked through to get things just right — which means bringing scalability, simple incident and release handling, and intuitive collaboration to the realm of API management.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-137484371384&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:226.61666870117188px&quot; data-hubspot-wrapper-cta-id=&quot;137484371384&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLK1ie0Dv2YdwFeP4xhiz4vCMJTrdfEQX2R2L1zAIGCsTwTGbNbPkPFvo9qUGAfLAH9IgsjRFcTJauQChtiGnfjS2DPGNWHiu%2F20tb9HpOer5p7ukaa27gj3CNbPEEV2BAM9R%2FBWQgbrZ%2FfRsKZ8WYsyjMlm2GVLVaAqxdouDXEBAwW6gJx4U%2B1FUzT77lGAbP8%3D&amp;webInteractiveContentId=137484371384&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Hub-cta&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-137484371384.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Traefik Hub - API Gateway Perfection]]></title>
            <description><![CDATA[Traefik Hub has profoundly transformed API Management. It provides a fully declarative approach to define, manage and run APIs while offering modularity and freedom of choice for its users through deep integration with the Cloud-Native ecosystem.]]></description>
            <link>https://traefik.io/traefik-hub-api-gateway-perfection</link>
            <guid isPermaLink="true">https://traefik.io/traefik-hub-api-gateway-perfection</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[Access Control]]></category>
            <category><![CDATA[DevOps]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Tue, 19 Mar 2024 02:34:03 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/03/Traefik-Hub---API-Gateway-Perfection-2.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Traefik Hub - API Gateway Perfection&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/03/Traefik-Hub---API-Gateway-Perfection-2.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/03/Traefik-Hub---API-Gateway-Perfection-2.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/03/Traefik-Hub---API-Gateway-Perfection-2.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/03/Traefik-Hub---API-Gateway-Perfection-2.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Traefik Hub has profoundly transformed API Management. It provides a fully declarative approach to define, manage and run APIs while offering modularity and freedom of choice for its users through deep integration with the Cloud-Native ecosystem.&lt;/p&gt;&lt;p&gt;API Management brings critical capabilities to help companies handle their API fleet. Runtime API Governance is the cornerstone of Traefik Hub API Management: dynamic API discovery, logical grouping through collections, change and incident management through versioning and linters, and ease-of-consumption through developer portals. Traefik Hub API Management also adds an advanced security layer on top of it with industry-leading Granular Access Control and provides rich awareness and control of the whole API pool with precise monitoring and state-of-the-art observability.&lt;/p&gt;&lt;p&gt;Delivering on this simple yet powerful vision, Traefik Hub now delivers essential capabilities to help companies seamlessly start their API journey. See this as the wildly popular and familiar Traefik Proxy plus core API-focused features like Access Control (OAuth, OIDC, etc) and native scalability capabilities like Distributed Rate Limiting.&amp;nbsp;&lt;/p&gt;&lt;p&gt;To put it more simply: Traefik Hub seamlessly transforms Traefik Proxy into the perfect API Gateway!&lt;/p&gt;&lt;p&gt;Let’s dig deeper into it.&lt;/p&gt;&lt;h2 id=&quot;from-traefik-proxy-to-traefik-hub-api-gateway&quot;&gt;From Traefik Proxy To Traefik Hub API Gateway&lt;/h2&gt;&lt;p&gt;One key element of Traefik Hub API Gateway is how seamless it is to upgrade from Traefik Proxy. Take an existing Traefik Proxy ingress controller installed on Kubernetes.&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Step 1: &lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-gateway/setup/api-gateway-dashboard?ref=containous.ghost.io#install-the-agent-with-your-custom-settings&quot;&gt;&lt;u&gt;Install the Traefik Hub agent&lt;/u&gt;&lt;/a&gt; with Helm, providing the same Traefik Proxy configuration options.&amp;nbsp;&lt;/li&gt;&lt;li&gt;Step 2: Remove Traefik Proxy, et voilà, you have a fully functioning API Gateway, that will act as the ingress controller exposing the existing ingress ressources.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;API capabilities are configured using the &lt;a href=&quot;https://doc.traefik.io/traefik/middlewares/overview/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik Proxy middleware&lt;/u&gt;&lt;/a&gt; well known mechanism.&lt;/p&gt;&lt;p&gt;To illustrate this, let’s take a rate limiter attached to an IngressRoute used with Traefik Proxy:&lt;/p&gt;&lt;pre&gt;&lt;code&gt;---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: ingressroute
spec:
  entryPoints:
    - web
  routes:
  - match: PathPrefix(`/foo`)
    kind: Rule
    services:
    - name: service-foo
      port: 80
    middlewares:
      - name: ratelimit
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: ratelimit
spec:
  rateLimit:
    period: 1m
    average: 600
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To add OAuth authentication to this existing IngressRoute, just add an OAuth middleware and Traefik Hub will enforce OAuth authentication on it!&lt;/p&gt;&lt;pre&gt;&lt;code&gt;---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: ingressroute
spec:
  entryPoints:
    - web
  routes:
  - match: PathPrefix(`/foo`)
    kind: Rule
    services:
    - name: service-foo
      port: 80
    middlewares:
      - name: ratelimit
      - name: oauth-client-creds
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: ratelimit
spec:
  rateLimit:
    period: 1m
    average: 600
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: oauth-client-creds
spec:
  plugin:
    oAuthClientCredentials:
      url: https://tenant.auth0.com/oauth/token

&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;How simple it is! As you can see, getting access to API Gateway capabilities when you already use Traefik Proxy is transparent.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Now, let’s explore all these new middlewares!&lt;/p&gt;&lt;h2 id=&quot;the-many-flavors-of-oauth&quot;&gt;The many flavors of OAuth&lt;/h2&gt;&lt;p&gt;OAuth 2.0 is an open standard dealing with resource access control and is the latest version of the authorization protocol OAuth. An OAuth client provides web, desktop, and mobile application authorization flows. We brought to Traefik Hub one of the most complete OAuth implementations which comes with two OAuth middlewares:&lt;/p&gt;&lt;h3 id=&quot;token-introspection&quot;&gt;Token Introspection&lt;/h3&gt;&lt;p&gt;Token introspection allows Traefik Hub to retrieve information about the user from an authentication server. Then, once the token is retrieved, it uses fine-grained configuration, including nested claims, to grant access or not to the route.&lt;/p&gt;&lt;p&gt;Let’s imagine that the token it retrieves is the following &lt;/p&gt;&lt;pre&gt;&lt;code&gt;{
  &quot;active&quot;: true,
  &quot;grp&quot;: &quot;admin&quot;,
  &quot;scope&quot;: &quot;reader writer deploy&quot;,
  &quot;referrer&quot;: &quot;http://example.com/foo/bar&quot;,
  &quot;areas&quot;: [
    &quot;office&quot;,
    &quot;home&quot;
  ]
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can validate this token using many functions, for example:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Equals(‘grp’, ‘admin’) checks if the value of grp in the token is equal to “admin”&lt;/li&gt;&lt;li&gt;Prefix(‘referrer’, ‘&lt;u&gt;http://example.com&lt;/u&gt;’) checks if the value of referrer in the token starts with &lt;u&gt;http://example.com&lt;/u&gt;&lt;/li&gt;&lt;li&gt;Contains(‘referrer’, ‘/foo/’) checks if the value of referrer has the sub string foo. When used on an array of values, it will check whether the value is in the list or not.&lt;/li&gt;&lt;li&gt;And others…&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Most importantly, you can combine any of these using operators (and, or, not) creating powerful ways to express who should have access to what.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: ingressroute
spec:
  entryPoints:
    - web
  routes:
  - match: PathPrefix(`/foo`)
    kind: Rule
    services:
    - name: service-foo
      port: 80
    middlewares:
      - name: oauth-oauth-intro
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: oauth-oauth-intro
spec:
  plugin:
    oAuthIntrospection:
      tokenSource:
        header: Authorization
        headerAuthScheme: Bearer
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;client-credential&quot;&gt;Client Credential&lt;/h3&gt;&lt;p&gt;Client Credential allows Traefik Hub to secure routes using the OAuth 2.0 Client Credentials flow as described in the &lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc6749.html?ref=containous.ghost.io#section-4.4&quot;&gt;&lt;u&gt;RFC 6749&lt;/u&gt;&lt;/a&gt;. Access tokens are cached using an external KV store.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: ingressroute
spec:
  entryPoints:
    - web
  routes:
  - match: PathPrefix(`/foo`)
    kind: Rule
    services:
    - name: service-foo
      port: 80
    middlewares:
      - name: oauth-client-creds
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: oauth-client-creds
spec:
  plugin:
    oAuthClientCredentials:
      url: https://tenant.auth0.com/oauth/token
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;oidc&quot;&gt;OIDC&lt;/h2&gt;&lt;p&gt;OIDC is an authentication layer built on top of the OAuth 2.0 protocol. OpenID Connect allows an application to obtain user login information by exchanging cryptographic tokens with an identity provider and is often used to implement federated SSO between multiple applications. With OIDC, Traefik Hub allows you to delegate the authentication process to a third party (Google Accounts, LinkedIn, GitHub, etc.) to obtain the end-user information for authorization purposes, where you get the same set of functions / operators to define the rules.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: ingressroute
spec:
  entryPoints:
    - web
  routes:
  - match: PathPrefix(`/foo`)
    kind: Rule
    services:
    - name: service-foo
      port: 80
    middlewares:
      - name: oidc
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: oidc
spec:
  plugin:
    oidc:
      issuer: &quot;https://tenant.auth0.com/realms/myrealm&quot;
      redirectUrl: &quot;/callback&quot;
      clientID: my-oidc-client-name
      clientSecret: mysecret
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;jwt&quot;&gt;JWT&lt;/h2&gt;&lt;p&gt;JWT is a popular tool for authenticating API calls and single sign-on (SSO) applications. It’s a method of digitally signing information as a JSON object. The JWT includes a set of claims, which typically describe what an authenticated user is allowed to do. With JWT validation, Traefik Hub is capable of verifying the validity of the token, extracting its information, and then as usual checking against the rules you want to define.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: ingressroute
spec:
  entryPoints:
    - web
  routes:
  - match: PathPrefix(`/foo`)
    kind: Rule
    services:
    - name: service-foo
      port: 80
    middlewares:
      - name: jwt
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: jwt
spec:
  plugin:
    jwt:
      signingSecret: urn:k8s:secret:my-secret:signingSecret
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;api-keys&quot;&gt;API Keys&lt;/h2&gt;&lt;p&gt;When you need a quick authorization mechanism, API Key is one of the best options. You configure the values that should allow consumption of the API, and where to retrieve it from (header, query param, cookie), and it’s as simple as that.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: ingressroute
spec:
  entryPoints:
    - web
  routes:
  - match: PathPrefix(`/foo`)
    kind: Rule
    services:
    - name: service-foo
      port: 80
    middlewares:
      - name: apikey
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: apikey
spec:
  plugin:
    apiKey:
      keySource:
        header: Authorization
        headerAuthScheme: Bearer
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;distributed-rate-limit&quot;&gt;Distributed Rate Limit&lt;/h2&gt;&lt;p&gt;When scaling Traefik Hub with standard rate limiting, each replica computes its own rate limit, meaning that if you configure 10 requests per second, you’re actually allowing (instance number) * request limit over time. When reaching the limit, depending on how well traffic is load-balanced between the instances, there might be some (small) inconsistencies in the response.&amp;nbsp;&lt;/p&gt;&lt;p&gt;The distributed rate limit solves this problem and eases the configuration, allowing each replica to be aware of the remaining allowed requests. When you configure a given request per time allowance, you’re guaranteed that whatever the number of replicas you run, this is what will go to your service.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;---
apiVersion: traefik.io/v1alpha1
kind: IngressRoute
metadata:
  name: ingressroute
spec:
  entryPoints:
    - web
  routes:
  - match: PathPrefix(`/foo`)
    kind: Rule
    services:
    - name: service-foo
      port: 80
    middlewares:
      - name: distributedratelimit
---
apiVersion: traefik.io/v1alpha1
kind: Middleware
metadata:
  name: distributedratelimit
spec:
  plugin:
    distributedRateLimit:
      limit: 100
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;wrapping-up&quot;&gt;Wrapping Up&lt;/h2&gt;&lt;p&gt;An API journey is long and complex. The last thing you want is to choose the wrong product to support you. Start with an over-engineered product and your ability to quickly iterate under control will vanish. Start with a product you can’t upgrade and you will be locked in at an early stage, without the ability to evolve to more advanced practices and technologies.&lt;/p&gt;&lt;p&gt;Traefik Labs provides companies a very progressive stack to deploy and manage APIs. From the ingress controller use case with Traefik Proxy to route and load balance services, to the API Gateway with critical capabilities around security and centralized control, up to the full API Management solution. All this within Traefik Hub, the most modern and progressive API runtime platform for Cloud-Native environments.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;p&gt;&lt;/p&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-137484371384&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:226.61666870117188px&quot; data-hubspot-wrapper-cta-id=&quot;137484371384&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLK1ie0Dv2YdwFeP4xhiz4vCMJTrdfEQX2R2L1zAIGCsTwTGbNbPkPFvo9qUGAfLAH9IgsjRFcTJauQChtiGnfjS2DPGNWHiu%2F20tb9HpOer5p7ukaa27gj3CNbPEEV2BAM9R%2FBWQgbrZ%2FfRsKZ8WYsyjMlm2GVLVaAqxdouDXEBAwW6gJx4U%2B1FUzT77lGAbP8%3D&amp;webInteractiveContentId=137484371384&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Hub-cta&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-137484371384.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;br /&gt;&lt;/p&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Why does WAF matter in API security?]]></title>
            <description><![CDATA[Nowadays, APIs power the internet. We see APIs (Application Programming Interfaces) everywhere: webshops, social networks, mobile apps, government sites and most of the media entertainment is delivered to us over APIs.]]></description>
            <link>https://traefik.io/why-does-waf-matter-in-api-security</link>
            <guid isPermaLink="true">https://traefik.io/why-does-waf-matter-in-api-security</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[DevOps]]></category>
            <category><![CDATA[Strategy]]></category>
            <dc:creator><![CDATA[José Carlos Chávez]]></dc:creator>
            <pubDate>Mon, 18 Mar 2024 19:56:59 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/03/Why-does-WAF-matter-in-API-security.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Why does WAF matter in API security&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/03/Why-does-WAF-matter-in-API-security.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/03/Why-does-WAF-matter-in-API-security.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/03/Why-does-WAF-matter-in-API-security.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/03/Why-does-WAF-matter-in-API-security.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Nowadays, APIs power the internet. We see APIs (Application Programming Interfaces) everywhere: webshops, social networks, mobile apps, government sites and most of the media entertainment is delivered to us over APIs. This is why APIs are so important and also why protecting APIs is fundamental for every organization being on the internet.&lt;/p&gt;&lt;p&gt;According to OWASP Top 10 API Security Risks 2023[1], 4 of the top 5 security risks are related to authentication and authorization, however by October 2023, the U.S. SEC launched an investigation around the MOVEit mass-hack that has exposed the personal data of at least 64 million people[2]. Considered the biggest hack of 2023, it began by exploiting a previously unknown SQL injection vulnerability in MOVEit Transfer. On the same line, cvedetails.com reports that the majority of CVE security vulnerabilities in 2023 came as Cross-Site Scripting (XSS) attacks, followed by memory corruption and SQL injection [3].&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-190241936960&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;190241936960&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLL7QjdZ%2BE0aLDmqzFd9h6fZkzrDaNRuYEh0HCP95vWQBoGopm4sLX9zqx6fhFJV%2B9NuMKGHpQ3q2CmtysEpFCA1aTUbZzLJcPSXJf4QP%2Bp%2BbnRR3MX0dZ6d6wHcWMAqBugaMCZJSRi4X2lMSEXBigALtXwyb1%2FO06FMsM0HB0bdVFVdi11%2FQJLGPyJ9HbR4GVP9keUMaHvHhIG26yicpg%3D%3D&amp;webInteractiveContentId=190241936960&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Watch API Gateway Demo&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-190241936960.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;While identity and permissions are the foundation of API security, footprint attacks (XSS, SQL injection, Remote Code Execution etc) are still leading the game when it comes to security breaches hence the importance of protecting our APIs looking at the footprints.&lt;/p&gt;&lt;h2 id=&quot;web-application-firewall-waf-as-part-of-a-wider-solution&quot;&gt;&lt;strong&gt;Web Application Firewall (WAF) as part of a wider solution&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;No security layer can address all possible attack vectors, there are different layers of security with different concerns which sometimes narrowly overlap. A multi-layered strategy that acknowledges the complexity of the threat landscape is preferred, hence the need for a diverse array of defenses where each layer is a barrier to attacks, and together, they create a resilient shield capable of adapting to the shifting tactics of adversaries.&lt;/p&gt;&lt;p&gt;WAFs are proxy-based tools that mainly inspect incoming HTTP(S) requests. Its capabilities vary, however the basic function is to provide an application layer filter for web and API traffic. This stage looks for malicious and unwanted content within incoming requests (headers and payloads) and acts accordingly as well as making sure that only allowed actions can be performed.&lt;/p&gt;&lt;p&gt;Some of the WAF capabilities that are crucial for API security are:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Known attack detection: &lt;/strong&gt;Recognizing common attack strategies and blocking unauthorized access.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Malformed/anomalous request detection: &lt;/strong&gt;Distinguishing legitimate API requests from those with malicious intent.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Virtual patching:&lt;/strong&gt; Intelligently delivering security patches to early protect API endpoints until the root cause can be fixed.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Anti-bot automation:&lt;/strong&gt; Identifying and blocking malicious bot traffic.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Audit logs: &lt;/strong&gt;Producing audit information about matched rules and anomaly scores that can be aggregated to come up with actions.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Any system that receives traffic (internal or external) is a target for attacks and any system that is target for attacks can be protected by a WAF, from websites, blogs, government portals, e-commerces, forums. Some of the attacks categories a WAF can protect you against of is:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;SQL Injection (SQLi):&lt;/strong&gt; malicious traffic could manage to inject strings directly into SQL queries to perform undesired actions e.g. retrieve users data.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Cross Site Scripting (XSS):&lt;/strong&gt; attacker injects malicious executable scripts into the code of a trusted application or website&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Local/Remote File Inclusion:&lt;/strong&gt; attacker includes local/remote files on the server to later execute them e.g. to expose server data.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Code Injection:&lt;/strong&gt; attacker injects code into the application execution through a vulnerability e.g. to expose environment credentials in the output.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Session Fixation:&lt;/strong&gt; permits an attacker to hijack a valid user session&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Bot Detection:&lt;/strong&gt; the process of identifying and distinguishing between human users and automated bots.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Metadata/Error Leakages:&lt;/strong&gt; leaks server or implementation metadata or internal errors to the attacker e.g. to exploit known vulnerabilities.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In a multilayer security approach, a WAF sits in the first line, protecting our systems from traffic attacks, even before authentication or authorization as those could also be compromised by a footprint attack.&lt;/p&gt;&lt;h2 id=&quot;pci-dss-40-has-wafs-as-a-hard-requirement&quot;&gt;&lt;strong&gt;PCI DSS 4.0 has WAFs as a hard requirement&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;The Payment Card Industry Data Security Standard (PCI DSS) is an information security standard used to handle credit cards from major card brands. The requirements are specifically designed to protect against security breaches.&lt;/p&gt;&lt;p&gt;While merchants, e-commerce businesses, retailers, and financial institutions are common entities that must comply with PCI DSS, other industries and service providers also fall under its scope. For instance, healthcare organizations, hospitality businesses and in general any internet site that handle card payments for bookings and services must comply with PCI DSS.&lt;/p&gt;&lt;p&gt;Even an organization that does not process cardholder data could follow the PCI Standard to implement a robust cybersecurity program for any of its important data and gain the confidence of its customers.&lt;/p&gt;&lt;p&gt;In version 4.0 (deadline: March 2025) WAF takes a fundamental role. Requirement 6.4.2 [4] explicitly requires affected businesses to &quot;Deploy an automated technical solution for public-facing web applications that continually detects and prevents web-based attacks&quot; with compliance to at least the following criteria:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Is installed in front of public-facing web applications and is configured to detect and prevent web-based attacks.&lt;/li&gt;&lt;li&gt;Actively running and up to date as applicable.&lt;/li&gt;&lt;li&gt;Generating audit logs.&lt;/li&gt;&lt;li&gt;Configured to either block web-based attacks or generate an alert that is immediately investigated.&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;wafs-targeting-deeper-protection&quot;&gt;&lt;strong&gt;WAFs targeting deeper protection&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;While originally WAFs were created and designed to protect API gateways as a first line of defense from outer traffic (so called north-south), strategies like zero-trust tell us that we should be protecting the system components as if the attacker is already inside of the network.&lt;/p&gt;&lt;p&gt;Hence in the same way we leverage a WAF in the API gateway we should be protecting the individual components from the internal traffic (so called east-west) with a WAF using a refined set of configurations and more symbiotic deployments where WAF is in the ingestion path of the component e.g. in the sidecar as part of a service mesh.&lt;/p&gt;&lt;p&gt;This is specifically important when it comes to lift and shift. Legacy systems being onboard in the cloud, also onboards all its vulnerabilities. Sometimes patching these systems is not an option because the code is too old, it lacks tests or requires risky upgrades while being critical. A WAF can help to protect them in the cloud without the need of doing changes into its code but instead rolling out a reverse proxy in front e.g. as a sidecar intercepting all the incoming traffic looking for exploits.&lt;/p&gt;&lt;h2 id=&quot;wafs-as-part-of-the-development-workflow&quot;&gt;&lt;strong&gt;WAFs as part of the development workflow&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;With the proliferation of microservices, macroservices, lift and shift and lambdas, teams became more independent in a fast changing architecture which means that security teams can roll out general purpose organization-wide policies but it is the individual development team’s responsibility to compliment the security measures with curated WAF rules more related to their components and its specific risks.&lt;/p&gt;&lt;p&gt;This is a shift in the security mindset which moved from an afterthought and only delegated to security teams into a shared responsibility between development and security teams. A cloud native WAF promotes the so-called “shift-left” which is the practice of moving security, testing, quality, and performance evaluation early in the development process and making development teams accountable for that.&lt;/p&gt;&lt;h2 id=&quot;waf-unblocking-your-security-pipeline&quot;&gt;&lt;strong&gt;WAF unblocking your security pipeline&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;In December 9th 2021 a new vulnerability was disclosed in the super popular Apache log4j library, affecting an estimated 10 percent of all digital assets at time of discovery [5], allowing remote code execution (RCE) on underlying servers that run vulnerable applications. The next day, Log4j 2.15.0 was released and security teams were urged to install the latest version. In the next seven days two more vulnerabilities were disclosed and by January 4th, US Federal Trade Commission told companies to patch Log4j vulnerability threatening legal actions.&lt;/p&gt;&lt;p&gt;Two years later, more than 1 in 3 applications using Log4j currently run vulnerable versions of this library [6]. Research found that, in general, once developers are alerted to a vulnerable library through a scan, 50 percent of vulnerabilities are fixed in 89 days overall, in 65 days for high severity vulnerabilities and in 107 days for medium severity vulnerabilities.&lt;/p&gt;&lt;p&gt;These numbers tell us that patching vulnerabilities does not occur as frequently and quickly as one might expect, however it is a negligence to leave systems vulnerable and hence WAF features like Virtual Patching [7] can chime in to protect those unpatched systems.&lt;/p&gt;&lt;p&gt;Virtual patching is a method of protecting new vulnerabilities in the short-term to keep hackers away from breaching systems until they can be patched in code. A newly discovered CVE in OSS triggers several processes both in the OSS code as well as proprietary code and a patch landing into users’ systems requires several other processes leaving the system vulnerable during that time unless a virtual patch has been applied.&lt;/p&gt;&lt;h2 id=&quot;conclusion&quot;&gt;&lt;strong&gt;Conclusion&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;WAFs play a critical role in API security, serving as an essential component of a multi-layered defense strategy. By detecting and mitigating a wide range of threats in real-time, WAFs help safeguard APIs, protect business-critical sensitive data, and ensure the integrity of online services.&lt;/p&gt;&lt;p&gt;WAF not only takes part of the operational stage of the systems bringing protection and compliance, it brings more benefits across the entire security strategy across the engineering teams that will translate into customer trust and good reputation.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-190241936960&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;190241936960&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLL7QjdZ%2BE0aLDmqzFd9h6fZkzrDaNRuYEh0HCP95vWQBoGopm4sLX9zqx6fhFJV%2B9NuMKGHpQ3q2CmtysEpFCA1aTUbZzLJcPSXJf4QP%2Bp%2BbnRR3MX0dZ6d6wHcWMAqBugaMCZJSRi4X2lMSEXBigALtXwyb1%2FO06FMsM0HB0bdVFVdi11%2FQJLGPyJ9HbR4GVP9keUMaHvHhIG26yicpg%3D%3D&amp;webInteractiveContentId=190241936960&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Watch API Gateway Demo&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-190241936960.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;references&quot;&gt;&lt;strong&gt;References&lt;/strong&gt;&lt;/h2&gt;&lt;ol&gt;&lt;li&gt;&lt;a href=&quot;https://owasp.org/API-Security/editions/2023/en/0x11-t10/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;https://owasp.org/API-Security/editions/2023/en/0x11-t10/&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://techcrunch.com/2023/10/11/sec-is-investigating-moveit-mass-hack-says-progress-software/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;https://techcrunch.com/2023/10/11/sec-is-investigating-moveit-mass-hack-says-progress-software/&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.cvedetails.com/vulnerabilities-by-types.php?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;https://www.cvedetails.com/vulnerabilities-by-types.php&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://docs-prv.pcisecuritystandards.org/PCI%20DSS/Standard/PCI-DSS-v4_0.pdf?ref=containous.ghost.io&quot;&gt;&lt;u&gt;https://docs-prv.pcisecuritystandards.org/PCI%20DSS/Standard/PCI-DSS-v4_0.pdf&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.csoonline.com/article/571797/the-apache-log4j-vulnerabilities-a-timeline.html?ref=containous.ghost.io&quot;&gt;&lt;u&gt;https://www.csoonline.com/article/571797/the-apache-log4j-vulnerabilities-a-timeline.html&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://www.veracode.com/blog/research/state-log4j-vulnerabilities-how-much-did-log4shell-change?ref=containous.ghost.io&quot;&gt;&lt;u&gt;https://www.veracode.com/blog/research/state-log4j-vulnerabilities-how-much-did-log4shell-change&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://coreruleset.org/20211213/crs-and-log4j-log4shell-cve-2021-44228/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;https://coreruleset.org/20211213/crs-and-log4j-log4shell-cve-2021-44228/&lt;/a&gt;&lt;/li&gt;&lt;/ol&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Revolutionizing API Operations: A Dive into GitOps-Based API Management]]></title>
            <description><![CDATA[APIs (application programming interfaces) are a hot topic these days with the rise of machine-to-machine communication and AI, microservice-based cloud native architectures. Add to that the never-ending need for efficiency to reuse existing software components and services to build up solutions faster and cheaper without reinventing the wheel.

Traditional API management solutions are often slow and suboptimal for efficiency, built with click-operations in mind, leading to stateful and procedura]]></description>
            <link>https://traefik.io/revolutionizing-api-operations-a-dive-into-gitops-based-api-management</link>
            <guid isPermaLink="true">https://traefik.io/revolutionizing-api-operations-a-dive-into-gitops-based-api-management</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[GitOps]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[Strategy]]></category>
            <dc:creator><![CDATA[Immánuel Fodor]]></dc:creator>
            <pubDate>Thu, 14 Mar 2024 22:26:21 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/03/revolutionizing-api-operations-without_copies@2x-1-.jpg&quot; class=&quot;kg-image&quot; alt=&quot;gitops-driven API management in an abstract image&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/03/revolutionizing-api-operations-without_copies@2x-1-.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/03/revolutionizing-api-operations-without_copies@2x-1-.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/03/revolutionizing-api-operations-without_copies@2x-1-.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/03/revolutionizing-api-operations-without_copies@2x-1-.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;APIs (application programming interfaces) are a hot topic these days with the rise of machine-to-machine communication and AI, microservice-based cloud native architectures. Add to that the never-ending need for efficiency to reuse existing software components and services to build up solutions faster and cheaper without reinventing the wheel.&lt;/p&gt;&lt;p&gt;Traditional &lt;a href=&quot;https://traefik.io/solutions/api-management/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;API management solutions&lt;/a&gt; are often slow and suboptimal for efficiency, built with click-operations in mind, leading to stateful and procedural proprietary scripting practices, which result in a steep learning curve, preventing the fast onboarding of new team members, and making collaboration difficult at scale. Many existing tools are 10+ years old, built before the Docker and Kubernetes era, which makes them far from ideal for modern environments. Add all these up, and you get bottlenecks, long release times, faulty deployments, and outdated documentation.&lt;/p&gt;&lt;p&gt;Here, we arrive at the need for a more efficient and up-to-date central view of managed APIs, their configurations, usage, and health analytics, with the capability to audit changes and maintain an up-to-date single source of truth.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;p&gt;&lt;/p&gt;&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-138990867782&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:225px&quot; data-hubspot-wrapper-cta-id=&quot;138990867782&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLIcHLLkiTjBdddaPgFlH5dOcrb27v8TgzkBDcOQfaz2rzH2yCllPCBMat02LT5wICq8M%2FXFcsiZeq%2F6cFYjqCrCzcvuYwFRRcqMW%2Bhbjk1xgBZJHz6o6ZPC2RpPUDcTvNcfmWFafVsSZ0Ikbeg4lBrLkudK6uEDlDE9KBjowB61W%2B0%3D&amp;webInteractiveContentId=138990867782&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Hub-cta&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-138990867782.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;&lt;br /&gt;&lt;/p&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;We invite you on a journey to unravel the power of GitOps in streamlining API management, offering transparency and reliability, and paving the way for a more agile and collaborative future.&amp;nbsp;&lt;/p&gt;&lt;h2 id=&quot;gitops-a-proven-and-efficient-answer&quot;&gt;GitOps: A Proven and Efficient Answer&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://www.gitops.tech/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;GitOps&lt;/u&gt;&lt;/a&gt;, a methodology widely adopted by infrastructure teams operating applications and services, can bring an interesting, fresh approach to API management with a focus on operational efficiency.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Let’s see the principles behind GitOps:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Declarative configuration&lt;/strong&gt;: Humans declare the desired state, and systems autonomously determine the steps to achieve it—similar to a GPS defining the route given a desired final destination. Automated early checks can ensure that the declared state is consistent, error-free, and compliant. The declarative approach promotes a shared understanding within teams, fostering collaboration by discussing freely and within the code itself.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Versioning and immutability&lt;/strong&gt;: Committing every change to Git in an immutable fashion enables a clear audit trail and the ability to reproduce current and previous configurations. As a result, it ensures accountability and traceability throughout the configuration lifecycle. In case of issues, Git provides seamless rollbacks to any previous working state, minimizing downtime.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Automatic pulling&lt;/strong&gt;: When Git is established as a single source of truth for configurations, automatic pulling mechanisms eliminate surprises, creating a predictable modern environment. Substituting human effort with automated pipelines guarantees that changes are deployed consistently and efficiently, reducing the likelihood of manual errors and simplifying compliance.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Continuous reconciliation&lt;/strong&gt;: Running the reconciliation process in a continuous loop can automatically correct any unexpected deviations from the declared state, contributing to a reliable and resilient system architecture. It also ensures stability by preventing unintended changes from piling up.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;GitOps aligns seamlessly with &lt;a href=&quot;https://cscie2x.dce.harvard.edu/hw/ch01s06.html?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;the Unix and Kubernetes philosophy&lt;/a&gt; of doing one thing well and being composable with other tools. By adhering to these principles, GitOps ensures simplicity, efficiency, and compatibility, making it a versatile and powerful methodology for managing infrastructure—and API operations, as we’ll see soon.&lt;/p&gt;&lt;h2 id=&quot;the-philosophy-of-gitops-for-api-operations&quot;&gt;The Philosophy of GitOps for API Operations&lt;/h2&gt;&lt;p&gt;The core of GitOps for API operations lies in treating APIs as infrastructure, represented by Custom Resource Definitions (CRDs) within Kubernetes. This allows API configurations to be managed declaratively, just like other Kubernetes resources, simplifying management and reducing configuration errors. See an API CRD below as an example:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language----&quot;&gt;apiVersion: hub.traefik.io/v1alpha1
kind: API
metadata:
  name: employee-api
  namespace: apps
  labels:
    area: employee
    module: crm
spec:
  pathPrefix: &quot;/employees&quot;
  service:
    openApiSpec:
      path: /openapi.yaml
      port:
        number: 3000
    name: employee-app
    port:
      number: 3000&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;GitOps promotes human-readable and editable configurations stored in Git repositories. APIs, rate limits, security policies, and other constructs are clearly defined, enabling collaboration between developers, operations, and security teams.&lt;/p&gt;&lt;p&gt;GitOps-based API Operations provide full auditability with version control. Every change, comment, and approval is linked to its specific version, creating a clear historical record. Deployment status is continuously visible, ensuring transparency and accountability.&lt;/p&gt;&lt;p&gt;Tools that understand declarative API configuration can perform automated checks and analysis of configuration changes before deployment. These checks identify potential errors, security vulnerabilities, and performance impacts, allowing proactive action to address them before causing disruptions.&lt;/p&gt;&lt;p&gt;By leveraging GitOps, API-related deployments become fully automated. Changes are committed to Git and automatically applied to the &lt;a href=&quot;https://traefik.io/solutions/api-gateway/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;API Gateway&lt;/a&gt; or API Management platform. This eliminates manual installations, reduces downtime, and minimizes human error by eliminating repetitive tasks.&lt;/p&gt;&lt;p&gt;API operations become agile and reversible with GitOps. With Git as the single source of truth, rolling back to previous versions becomes simple, offering a safety net for experimentation and updates. Continuous updates become the norm, ensuring APIs remain secure and aligned with evolving business needs.&lt;/p&gt;&lt;h2 id=&quot;operational-benefits-adopted-from-gitops-to-apiops&quot;&gt;Operational Benefits Adopted from GitOps to APIOps&lt;/h2&gt;&lt;p&gt;Building on the core philosophy of GitOps for API Operations, let&apos;s dive deeper into the specific operational benefits this approach unlocks:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Separation of concerns: streamlined development and deployment.&lt;/strong&gt; API code and configuration releases can be decoupled, allowing faster innovation and bug fixes on either side without impacting the other.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Transparency and auditability: trace every change with confidence.&lt;/strong&gt; You can easily see who made what change, when it happened, and why. This empowers compliance and security teams to assess risks and identify potential issues. Debugging configuration issues also becomes a breeze accelerating problem resolution.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Authentication and authorization: control who can change what.&lt;/strong&gt; This is a two-fold concept. You can implement role-based access control (RBAC) within your GitOps workflow, defining who can push changes to different parts of the API configuration. Also, you can define RBAC for APIs in Git, ensuring only authorized personnel have access to sensitive API paths and methods. Each commit is associated with a user, promoting accountability and preventing unauthorized modifications of API access policies.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Risk reduction: rollback and logging assurance.&lt;/strong&gt; Experiment and make changes fearlessly with confidence, knowing you can easily revert if needed. Git’s comprehensive record-keeping helps identify the root cause of issues and facilitates post-mortem analysis for continuous improvement.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Security policy: code-enforced vigilance&lt;/strong&gt;. By integrating automated security scans and checks early in the process, GitOps helps shift left security, catching and addressing vulnerabilities before they reach production. This proactive approach enhances the overall security posture of your APIs.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Scalability and consistency: a self-healing API infrastructure&lt;/strong&gt;. As API deployments grow, GitOps scales efficiently, managing configurations consistently across environments. API configurations are automatically re-applied when deviations occur, ensuring the desired state is maintained.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;By adopting GitOps principles for API management, you gain a streamlined workflow with declarative configuration, clear audit trails, granular access control, and the safety of effortless rollbacks. The transparency improves security through early vulnerability detection and promotes consistency in multiple environments for a highly scalable and manageable API infrastructure.&lt;/p&gt;&lt;h2 id=&quot;traefik-hub-gitops-driven-kubernetes-native-api-management&quot;&gt;Traefik Hub: GitOps-Driven Kubernetes-Native API Management&lt;/h2&gt;&lt;p&gt;Imagine an API Management solution seamlessly integrated into your Kubernetes environment, built with GitOps for rock-solid configuration and automation. We’ve built Traefik Hub with all these principles and benefits in mind on the well-known and highly performant &lt;a href=&quot;https://traefik.io/traefik/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;open source Traefik Proxy&lt;/a&gt; to make this dream a reality.&lt;/p&gt;&lt;p&gt;No more complex configurations! Traefik Hub leverages familiar Kubernetes Custom Resource Definitions (CRDs) for publishing and managing APIs. Simply declare your APIs, their versions, access policies, and group them using standard Kubernetes labels and selectors. This intuitive approach grants you powerful control without sacrificing ease of use.&lt;/p&gt;&lt;p&gt;Traefik Hub is built up from the following architectural components:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;The Traefik Hub Agent&lt;/strong&gt;: The guardian standing at your cluster&apos;s door, securing and monitoring incoming traffic on the data plane, hosting your API gateways, and ensuring smooth operation.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;The API Dev Portal&lt;/strong&gt;: Empower your API consumers with a dedicated portal. They can explore API documentation, request API keys, and get the most out of your offerings. The portal UI is available as an open-source example on GitHub, which you can tweak and extend to your liking.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;The Traefik Hub UI&lt;/strong&gt;: Gain a bird&apos;s-eye view of your API kingdom. View connected agents, API configurations, and other resources across multiple clusters and users.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;The Traefik Hub Static Analyzer&lt;/strong&gt;: Shield your APIs from errors before they deploy! This proactive tool meticulously analyzes configurations, pinpointing potential issues before deployment. Its human-readable impact analysis, embedded directly in Git pull requests, offers clear insights into the consequences of every change, empowering informed decisions and ensuring smooth deployments.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;In the next sections, we’ll see two use cases of utilizing GitOps-based API Management with Traefik Hub. We’ll focus on operational excellence in day 2 operations, when every architectural component is in place, and you need to make APIs run smoothly and securely.&lt;/p&gt;&lt;h2 id=&quot;api-change-management-with-gitops&quot;&gt;API Change Management with GitOps&lt;/h2&gt;&lt;p&gt;In the first use case, we look into configuration safety. Traefik Airlines, our fictitious company, is a modern airline company that offers various digital services to its customers and partners. To meet evolving needs while maintaining business stability, Traefik Airlines must ensure its API Change Management is robust to minimize service downtime caused by configuration errors. Let&apos;s explore how this can be achieved by using Traefik Hub’s GitOps-driven API management.&lt;/p&gt;&lt;p&gt;Traefik Airlines regularly publishes changes to its Git repository, where the configuration of all managed internal and external APIs is stored. However, they configured the &lt;a href=&quot;https://github.com/traefik/hub-static-analyzer-action?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik Hub Static Analyzer&lt;/u&gt;&lt;/a&gt; to run automatically for every pull request to Git.&lt;/p&gt;&lt;p&gt;The analyzer has a linter functionality that acts as your first line of defense, scanning configurations for errors and preventing them from reaching production. The errors found are not tucked away in an obscure location but put into context next to the error.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/03/image4.png&quot; class=&quot;kg-image&quot; alt=&quot;code analyzer for gitops driven api management&quot; loading=&quot;lazy&quot; width=&quot;550&quot; height=&quot;473&quot;&gt;&lt;/figure&gt;&lt;p&gt;In the above screenshot, the analyzer running as a GitHub Action catches a typo that would cause an outage in one of the Airline APIs by referencing a non-existent Kubernetes service underlying the API. The action prevents the pull request&apos;s merge and gives contextual help on the error to let it be corrected in a follow-up Git commit that is now safe to deploy into production.&lt;/p&gt;&lt;p&gt;The linter can check for various configuration errors, including duplicate, orphan, childless, and invalid resources; resource references; selector definitions; conflicting API paths; unknown operation sets; and service ports.&lt;/p&gt;&lt;p&gt;The analyzer can also do an impact analysis on the change set of a pull request preventing modifications with significant differences from being merged and ensuring the cluster remains stable.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/03/image1.png&quot; class=&quot;kg-image&quot; alt=&quot;human readable reports for gitops-driven API management&quot; loading=&quot;lazy&quot; width=&quot;1556&quot; height=&quot;1076&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/03/image1.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/03/image1.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/03/image1.png 1556w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The above screenshot shows the human-readable reports outlining the affected APIs and users of an API consumption rate limit change. It allows the pull request reviewer to confidently decide whether to merge the changes or refine them further.&lt;/p&gt;&lt;h2 id=&quot;api-incident-mitigation-and-resolution-with-gitops&quot;&gt;API Incident Mitigation and Resolution with GitOps&lt;/h2&gt;&lt;p&gt;In our second use case, we see how you can manage your APIs with the confidence that any misstep can be instantly undone.&amp;nbsp;&lt;/p&gt;&lt;p&gt;With GitOps&apos;s magic touch to API management, rolling back a faulty update of an API to its previous, healthy state is a breeze. No more scrambling, no more downtime, no more complaints from API consumers—just a quick rewind via a click of a button and you&apos;re back in business.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/03/image2.png&quot; class=&quot;kg-image&quot; alt=&quot;reverting commit in gitops-driven API management&quot; loading=&quot;lazy&quot; width=&quot;767&quot; height=&quot;64&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/03/image2.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/03/image2.png 767w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;But GitOps doesn&apos;t stop there. It empowers your developers to become debugging detectives. When an error pops up, the faulty state is preserved like a crime scene, waiting to be examined. This traceability buys precious time to delve into the root cause, craft a fix, and deploy it seamlessly through a new pull request.&lt;/p&gt;&lt;p&gt;Wait, there&apos;s more! &lt;a href=&quot;https://traefik.io/blog/opentelemetry-traefik-hub/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OpenTelemetry metrics&lt;/u&gt;&lt;/a&gt; paint a vivid picture of your API landscape. They expose error rates, latencies, and request counts, all categorized by API, version, and user. Want to zoom in on a specific API or version? No problem! Drill down with ease and gain laser-sharp insights into user behavior.&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;em&gt;Related Article: &lt;/em&gt;&lt;a href=&quot;https://traefik.io/blog/opentelemetry-traefik-hub/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;em&gt;Traefik Hub, OpenTelemetry, and the New Era of Data-Driven API Management&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;&lt;p&gt;&lt;br&gt;And the best part? You don&apos;t need to rip and replace your existing tools. OpenTelemetry integrates seamlessly, acting as a common language for your event data. This opens the door to exciting possibilities—e.g., effortless event correlation with Git actions, AI-powered analysis, and a world of customizations tailored to your needs.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/03/image3.png&quot; class=&quot;kg-image&quot; alt=&quot;opentelemetry data in gitops-driven API management&quot; loading=&quot;lazy&quot; width=&quot;1159&quot; height=&quot;718&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/03/image3.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/03/image3.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/03/image3.png 1159w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The above screenshot shows Traefik Airline’s monitoring dashboard with GitHub pull requests and Flux deployment events correlated to OpenTelemetry-based API metrics collected by Prometheus and visualized in Grafana. Whenever something goes bad, and the unexpected happens, it’s easy to see which change caused the problem and roll it back to restore healthy operations.&lt;/p&gt;&lt;p&gt;You can dive into the code and see how GitOps API management can transform your API Operations for yourself with &lt;a href=&quot;https://github.com/traefik-workshops/traefik-hub-gitops?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;our example repository&lt;/a&gt;.&lt;/p&gt;&lt;h2 id=&quot;slash-costs-boost-efficiency-gitops-api-management-is-your-roi-goldmine&quot;&gt;Slash Costs, Boost Efficiency: GitOps API Management is Your ROI Goldmine&lt;/h2&gt;&lt;p&gt;Renowned tech experts at Gartner &lt;a href=&quot;https://www.gartner.com/en/articles/what-s-new-in-the-2023-gartner-hype-cycle-for-emerging-technologies?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;have labeled GitOps as an emerging technology&lt;/a&gt; on the verge of widespread acceptance, marking its transition from early stages to the brink of mainstream adoption. Time is money, and GitOps saves both. Forget the days of API Management costs draining your budget. Get ready to unlock efficiency, agility, and massive cost savings with the revolutionary power of GitOps for your API Operations.&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Accelerate releases&lt;/strong&gt;: Get changes from dev to production faster than ever. Save precious time and human effort across your team.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Avoid slashing SLAs&lt;/strong&gt;: No more costly downtime due to faulty updates. With a single click, rewind to a stable state and keep your APIs humming.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Solve problems efficiently&lt;/strong&gt;: Drill down into performance metrics, pinpoint issues before they snowball, and avoid costly outages.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Work on what matters&lt;/strong&gt;: Automate repetitive tasks and eliminate manual interventions, freeing up your team for higher-value work.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Pay only for what you use&lt;/strong&gt;: Meet demand fluctuations effortlessly with dynamic infrastructure provisioning, scaling up and down gracefully.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Eliminate waste&lt;/strong&gt;: Say goodbye to siloed data, gain a holistic view of your API landscape, and optimize resource allocation.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Reduced effort, faster cycles, and fewer outages translate to measurable financial benefits. GitOps-driven API management is not just technology, it&apos;s a philosophy and a financial game-changer.&lt;/p&gt;&lt;h1 id=&quot;wrapping-it-up&quot;&gt;Wrapping It Up&lt;/h1&gt;&lt;p&gt;In conclusion, the GitOps approach represents a significant paradigm shift in API operations. Grounded in the declarative principles of Kubernetes, it offers a sophisticated framework that empowers a new era of API management focused on collaboration, transparency, and control. This evolution is particularly relevant in an era dominated by the widespread adoption of Kubernetes and the integration of machine-to-machine communications. &lt;/p&gt;&lt;p&gt;With the operational benefits of GitOps-based API operations, you can achieve faster iterations, enhanced security, and improved overall API governance, unlocking new levels of agility and efficiency for your organization.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLIcHLLkiTjBdddaPgFlH5dOcrb27v8TgzkBDcOQfaz2rzH2yCllPCBMat02LT5wICq8M%2FXFcsiZeq%2F6cFYjqCrCzcvuYwFRRcqMW%2Bhbjk1xgBZJHz6o6ZPC2RpPUDcTvNcfmWFafVsSZ0Ikbeg4lBrLkudK6uEDlDE9KBjowB61W%2B0%3D&amp;webInteractiveContentId=138990867782&amp;portalId=5814022&amp;ref=containous.ghost.io&quot;&gt;&lt;/a&gt;&lt;br&gt;&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Why Modern API Management Needs an End-to-End GitOps Strategy]]></title>
            <description><![CDATA[GitOps isn’t just another IT buzzword; it’s quickly transforming how software development operates, making deployments more reliable, repeatable, and automated. GitOps is used to manage infrastructure and workloads, but it hasn’t taken hold in managing APIs. While this modern operations model is used in API development, API management has yet to benefit from GitOps-driven processes, and it’s sorely needed.

With the rise of cloud-native development and microservices, a growing majority of develo]]></description>
            <link>https://traefik.io/why-modern-api-management-needs-gitops-end-to-end</link>
            <guid isPermaLink="true">https://traefik.io/why-modern-api-management-needs-gitops-end-to-end</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[GitOps]]></category>
            <category><![CDATA[Strategy]]></category>
            <dc:creator><![CDATA[Immánuel Fodor]]></dc:creator>
            <pubDate>Fri, 01 Mar 2024 19:44:10 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/03/blog-modern-api-management-gitops.jpg&quot; class=&quot;kg-image&quot; alt=&quot;image for modern api management and gitops&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/03/blog-modern-api-management-gitops.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/03/blog-modern-api-management-gitops.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/03/blog-modern-api-management-gitops.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/03/blog-modern-api-management-gitops.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;GitOps isn’t just another IT buzzword; it’s quickly transforming how software development operates, making deployments more reliable, repeatable, and automated. GitOps is used to manage infrastructure and workloads, but it hasn’t taken hold in managing APIs. While this modern operations model is used in API development, &lt;a href=&quot;https://devops.com/api-management-a-weak-link-in-the-cloud-native-chain/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;API management has yet to benefit &lt;/a&gt;from GitOps-driven processes, and it’s sorely needed.&lt;/p&gt;&lt;p&gt;With the rise of cloud-native development and microservices, a growing majority of development involves APIs, and managing them is key to both development velocity and application security.&amp;nbsp;&amp;nbsp;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-190241936960&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;190241936960&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLL7QjdZ%2BE0aLDmqzFd9h6fZkzrDaNRuYEh0HCP95vWQBoGopm4sLX9zqx6fhFJV%2B9NuMKGHpQ3q2CmtysEpFCA1aTUbZzLJcPSXJf4QP%2Bp%2BbnRR3MX0dZ6d6wHcWMAqBugaMCZJSRi4X2lMSEXBigALtXwyb1%2FO06FMsM0HB0bdVFVdi11%2FQJLGPyJ9HbR4GVP9keUMaHvHhIG26yicpg%3D%3D&amp;webInteractiveContentId=190241936960&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Watch API Gateway Demo&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-190241936960.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;By including GitOps throughout &lt;a href=&quot;https://traefik.io/solutions/api-management/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;the API management process&lt;/a&gt;, DevOps and platform engineers are able to enforce consistency and make it possible to scale operations, all while enhancing the developer experience, fostering collaboration, and bolstering security. Let’s take a deeper look at how GitOps enables better API management.&lt;/p&gt;&lt;h2 id=&quot;streamlined-workflows-orchestrating-deployments-in-the-gitops-era&quot;&gt;Streamlined Workflows: Orchestrating Deployments in the GitOps Era&lt;/h2&gt;&lt;p&gt;In the GitOps landscape, every deployment is a reflection of the desired state defined within a Git repository. This declarative approach, where the desired state of infrastructure and applications is codified, demands seamless and efficient workflows.&lt;/p&gt;&lt;p&gt;GitOps-driven API management ensures that as changes are pushed to the Git repository, they are mirrored in real-time across the infrastructure. This real-time synchronization not only accelerates deployment cycles but also minimizes manual intervention, a cornerstone of the GitOps philosophy.&amp;nbsp;&lt;/p&gt;&lt;p&gt;But it&apos;s essential to understand that the role of API management isn&apos;t limited to just facilitating deployments. It extends to cataloging and securing both internal APIs that drive microservices and external APIs that interface with third-party services.&lt;/p&gt;&lt;p&gt;Most of all, by automating tasks that were traditionally manual, GitOps-driven API management reduces the scope for errors. For example, when a new API endpoint is added to a service, the management tool can automatically catalog it, apply predefined security policies, and ensure it aligns with the desired state in the Git repository.&lt;/p&gt;&lt;h2 id=&quot;consistency-maintaining-equilibrium-in-the-gitops-landscape&quot;&gt;Consistency: Maintaining Equilibrium in the GitOps Landscape&lt;/h2&gt;&lt;p&gt;When it comes to GitOps, consistency is more than a best practice—it&apos;s the point. With every piece of infrastructure and application configuration codified within a Git repository, GitOps is about ensuring that the live state mirrors this codified state.&lt;/p&gt;&lt;p&gt;One way in which GitOps enhances consistency in API management is through the use of validation of changes or “early checks.” These early checks can compare changes against a set of rules, failing violations to ensure that nothing questionable is implemented. If an issue should arise, you have the ability to add any knowledge gained through fixing the problem to the set of rules, preventing it from happening again.&lt;/p&gt;&lt;p&gt;API management tools should ensure that as configurations are updated or new ones are added to the Git repository, they are consistently applied across all environments. Whether it&apos;s a development sandbox, a staging area, or a production setup, the behavior and configuration of APIs remain uniform. This uniformity is achieved through centralized configuration management, where API configurations are stored, versioned, and synchronized with the Git repository, along with the stateless nature of Kubernetes and its underlying immutable infrastructure.&lt;/p&gt;&lt;p&gt;Such centralization eliminates the discrepancies that often arise between environments, ensuring environment parity—a core tenet of GitOps. With it, teams can be confident that an API&apos;s behavior in a development environment is replicated identically in production, reducing &quot;it works on my machine&quot; issues.&lt;/p&gt;&lt;p&gt;More than that, in the event of an outage, not only can changes be rolled back in a matter of minutes, but you can duplicate the environment in order to debug. So instead of your engineers getting jolted out of bed at 2am on a Sunday while you lose money every minute you’re down (the Ponemon Institute estimated the average cost of downtime at &lt;a href=&quot;https://www.vertiv.com/globalassets/documents/reports/2016-cost-of-data-center-outages-11-11_51190_1.pdf?ref=containous.ghost.io&quot;&gt;&lt;u&gt;$9000 per minute&lt;/u&gt;&lt;/a&gt;!), the system can rollback automatically, and the engineers can come in on Monday to an error report they can debug at their leisure before reapplying.&lt;/p&gt;&lt;p&gt;Furthermore, in a GitOps-driven world, changes are continuously integrated and deployed. This ensures that every deployment, every change, and every API call aligns perfectly with the state defined in Git. And if the API management tool is based on Kubernetes, it reduces the learning curve, because developers are already (by and large) familiar.&lt;/p&gt;&lt;h2 id=&quot;monitoring-analytics-the-pulse-of-gitops-operations&quot;&gt;Monitoring &amp;amp; Analytics: The Pulse of GitOps Operations&lt;/h2&gt;&lt;p&gt;The continuous flow of changes within an environment makes it necessary to keep an eye on the system&apos;s health and performance. These observability capabilities are where API management&apos;s monitoring and analytics capabilities shine, acting as the pulse-check for GitOps operations.&lt;/p&gt;&lt;p&gt;API management tools provide real-time insights into the performance and health of APIs. They track crucial metrics such as response times, error rates, and throughput. In a GitOps-driven environment, where deployments can be frequent and automated, understanding these metrics becomes vital. It helps teams identify potential bottlenecks, optimize performance, and ensure that the system remains resilient even as changes are continuously integrated.&lt;/p&gt;&lt;p&gt;Beyond performance metrics, analytics delve deeper into API usage patterns. They reveal which APIs are most accessed, which ones might be underutilized, and even which ones could be potential points of failure. In the context of GitOps, where the desired state of the system is codified, these insights help in refining this state, ensuring it aligns with actual usage patterns and needs.&lt;/p&gt;&lt;p&gt;Additionally, in the event of discrepancies between the Git-defined state and the live state, monitoring tools can trigger alerts. These alerts can be invaluable in a GitOps setup, allowing teams to quickly identify and rectify deviations, ensuring that the system remains consistent and aligned with the repository.&lt;/p&gt;&lt;p&gt;It’s also important that the tools involved can easily integrate with other systems. For example, a &lt;a href=&quot;https://traefik.io/blog/opentelemetry-traefik-hub/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;tool that provides observability based on OpenTelemetry&lt;/u&gt;&lt;/a&gt; can send data to dozens of other tools that can easily ingest it.&lt;/p&gt;&lt;h2 id=&quot;scalability-growing-with-gitops&quot;&gt;Scalability: Growing with GitOps&lt;/h2&gt;&lt;p&gt;As organizations evolve, so do their digital needs. The number of services, applications, and consequently, API calls can expand exponentially. In the GitOps paradigm, where infrastructure and application configurations are continuously synchronized with the state defined in Git, ensuring that this growth is managed efficiently is crucial.&lt;/p&gt;&lt;p&gt;API management is the linchpin in this growth story. It provides the tools and mechanisms to handle an increasing volume of API calls. For example, it can provide load balancing, which ensures that incoming API requests are appropriately distributed across servers so that no single server or service becomes a bottleneck and performance is optimized.&lt;/p&gt;&lt;p&gt;But sometimes it’s not about distributing numerous requests, but limiting them. In a GitOps-driven environment, where changes can be continuously deployed, it&apos;s vital to ensure that no service or consumer overwhelms the system with excessive requests. Rate limiting sets a cap on the number of requests a consumer can make in a given time frame, ensuring system stability.&lt;/p&gt;&lt;p&gt;Furthermore, as the infrastructure grows, the Git repository becomes a more extensive catalog of configurations and desired states. API management ensures that, regardless of the scale, every API call, every service, and every microservice aligns with this cataloged state, ensuring that scalability doesn&apos;t come at the cost of consistency or performance.&lt;/p&gt;&lt;p&gt;Using GitOps with API management also enables you to scale teams as easily as you scale your infrastructure, because the Pull Requests that enable GitOps to work, enable easy collaboration between multiple developers working on a single system.&lt;/p&gt;&lt;h2 id=&quot;developer-experience-thriving-in-a-gitops-ecosystem&quot;&gt;Developer Experience: Thriving in a GitOps Ecosystem&lt;/h2&gt;&lt;p&gt;In the GitOps landscape, where infrastructure and application changes are driven by Git repositories, the developer&apos;s role is pivotal. They&apos;re not just coding features or fixing bugs; they&apos;re actively participating in the deployment and operational processes. In this context, enhancing the developer experience becomes paramount, and API management plays a crucial role in this enhancement.&lt;/p&gt;&lt;p&gt;API management tools offer a suite of features tailored for developers. One of the standout features is the automatic generation and updating of API documentation. In a GitOps-driven environment, where changes can be frequent and continuous, having up-to-date documentation is invaluable. It ensures that developers, regardless of their familiarity with an API, can quickly understand its functionalities, parameters, and expected behaviors.&lt;/p&gt;&lt;p&gt;Moreover, API management tools often provide sandbox environments. These are isolated spaces where developers can test new API integrations or changes without affecting the actual production environment. In the GitOps world, where changes in the Git repository can trigger deployments, having a safe space to test and validate these changes before they&apos;re merged into the main branch can save a lot of time.&lt;/p&gt;&lt;p&gt;And GitOps-enabled API management provides benefits to both sides of the API equation. The API publisher/producer side gets a way to abstract the APIs themselves, as well as a declarative way to deploy them that includes error checking and code review. For the API user/consumer side, in addition to up-to-date documentation, the&amp;nbsp; API developer portal shows what APIs that are available and how to call them.&lt;/p&gt;&lt;h2 id=&quot;auditability-and-security-safeguarding-the-gitops-pipeline&quot;&gt;Auditability and Security: Safeguarding the GitOps Pipeline&lt;/h2&gt;&lt;p&gt;In GitOps, every change to infrastructure or applications is initiated through a Git commit, making the Git repository a chronological record of all changes. This inherently provides a level of auditability. However, when APIs come into play, especially in a microservices architecture, the complexity multiplies, and GitOps can help to manage that complexity.&lt;/p&gt;&lt;p&gt;API management tools provide comprehensive logging and tracking capabilities, tracking every API call, every data fetch, and every modification. This granular logging ensures that organizations have a clear trail of who accessed what data, when, and for what purpose. In the context of GitOps, where the desired state of infrastructure is defined in Git, having a clear understanding of how APIs interact with this state is invaluable. It provides insights into potential discrepancies and aids in forensic analysis.&lt;/p&gt;&lt;p&gt;Security, on the other hand, is non-negotiable. As the gateways to data and services, APIs are prime targets for malicious attacks, and centralized API management plays a pivotal role in uniformly enforcing security policies. But without the centralization provided by GitOps, there’s the opportunity for different teams to manage things in their own way, eliminating many of the benefits a GitOps-enabled system provides. Access controls can be defined and enforced, ensuring that only authorized entities can access specific APIs. Moreover, advanced threat protection mechanisms can identify and block malicious patterns or anomalous behaviors, safeguarding the system.&lt;/p&gt;&lt;h2 id=&quot;incident-management-navigating-challenges-in-the-gitops-world&quot;&gt;Incident Management: Navigating Challenges in the GitOps World&lt;/h2&gt;&lt;p&gt;Even with the most meticulous planning and robust systems in place, incidents are an inevitable part of the software lifecycle. In the GitOps paradigm, where infrastructure and application states are continuously synchronized with Git repositories, the ability to respond swiftly and effectively to incidents is crucial.&lt;/p&gt;&lt;p&gt;GitOps-driven API management plays a pivotal role in this rapid response mechanism. One of the standout features of modern GitOps-driven API management tools is the capability for quick rollbacks. If an API change leads to unexpected behavior or a system outage, teams can use the same Git-based workflows to roll back the entire API platform to a previous, stable state. This rollback isn&apos;t just about reverting code; it&apos;s about ensuring that the entire ecosystem, from infrastructure to data flows to service integrations, is restored to a known good state.&lt;/p&gt;&lt;p&gt;Furthermore, in the unfortunate event of an incident, real-time monitoring and analytics provided by API management tools become invaluable. They offer insights into the root cause, be it an API overload, a data breach attempt, or a faulty integration. By pinpointing the issue, teams can not only address the immediate concern but also implement preventive measures for the future.&lt;/p&gt;&lt;p&gt;Another crucial aspect of incident management is communication. In the heat of a situation, effective communication with stakeholders, be it developers, operations teams, or end-users, is vital. API management tools often come equipped with notification systems that can alert relevant parties about the incident, its impact, and the steps being taken for resolution, but because GitOps tools already handle incident management for software, applications, and services, adding an additional layer is an unnecessary level of complexity. Ideally, your API management tool will integrate with GitOps to simplify matters.&lt;/p&gt;&lt;h2 id=&quot;embracing-the-future-with-gitops-and-api-management&quot;&gt;Embracing the Future with GitOps and API management&lt;/h2&gt;&lt;p&gt;In the evolving landscape of software deployment, GitOps has firmly established itself as the blueprint for operational excellence. Yet, it&apos;s the seamless integration with API management that truly amplifies its potential. Together, they form a powerful duo, streamlining workflows, ensuring unwavering consistency, and offering unparalleled insights into system performance. &lt;/p&gt;&lt;p&gt;As organizations continue to navigate the complexities of modern development, the harmony between GitOps and API management will be instrumental in driving success. By embracing this synergy, businesses are not only future-proofing their operations but also setting the stage for innovation, growth, and resilience in the face of ever-changing technological challenges.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-190241936960&quot;
  style=&quot;max-width:100%; max-height:100%; width:750px;height:237.5500030517578px; margin-top: 50px; margin-bottom: 50px;&quot; data-hubspot-wrapper-cta-id=&quot;190241936960&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLL7QjdZ%2BE0aLDmqzFd9h6fZkzrDaNRuYEh0HCP95vWQBoGopm4sLX9zqx6fhFJV%2B9NuMKGHpQ3q2CmtysEpFCA1aTUbZzLJcPSXJf4QP%2Bp%2BbnRR3MX0dZ6d6wHcWMAqBugaMCZJSRi4X2lMSEXBigALtXwyb1%2FO06FMsM0HB0bdVFVdi11%2FQJLGPyJ9HbR4GVP9keUMaHvHhIG26yicpg%3D%3D&amp;webInteractiveContentId=190241936960&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Watch API Gateway Demo&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-190241936960.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Traefik Proxy v2.11 is Now Available! Here are the Latest Updates.]]></title>
            <description><![CDATA[On the heels of our announcement last week regarding the new release candidate of Traefik 3.0, we are excited to bring to you Traefik Proxy 2.11! Learn all about it in this blog.]]></description>
            <link>https://traefik.io/announcing-traefik-proxy-v2-11</link>
            <guid isPermaLink="true">https://traefik.io/announcing-traefik-proxy-v2-11</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[DevOps]]></category>
            <category><![CDATA[Announcements]]></category>
            <category><![CDATA[Product News]]></category>
            <category><![CDATA[Microservices]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Thu, 22 Feb 2024 17:24:58 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/02/Traefik-v211-1.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/02/Traefik-v211-1.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/02/Traefik-v211-1.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2024/02/Traefik-v211-1.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/02/Traefik-v211-1.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;On the heels of our announcement last week regarding the &lt;a href=&quot;https://traefik.io/blog/announcing-traefik-proxy-v3-rc/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;new release candidate of Traefik 3.0&lt;/u&gt;&lt;/a&gt;, we are excited to bring to you Traefik Proxy 2.11, an important update to the 2.x branch&amp;nbsp;underscoring our ongoing commitment to support this branch based on continuous feedback from the community and our customers.&lt;/p&gt;&lt;p&gt;In a nutshell, Traefik Proxy 2.11 extends Redis support to Redis Sentinel, is more efficient dealing with open connections, is safer with sticky cookies, and adds a migration path to Go 1.22, along with several bug fixes.&lt;/p&gt;&lt;p&gt;Let&apos;s dig deeper into this latest release and the details of your new features and how to use them.&lt;br&gt;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-158028398339&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:255.06668090820312px&quot; data-hubspot-wrapper-cta-id=&quot;158028398339&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJopIkqy9PwxjiexjkTebdknPc%2B1lMv9CoGqRfqx9yrZ6uJu4k%2BqE2uO7QoJE9hsbY2%2Fu1c4YagHrQ4ZCBQ9KWSmNf5JnqrM8ZnFKNFuS20X3M%3D&amp;webInteractiveContentId=158028398339&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Proxy_Ad_02@2x&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-158028398339.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;p&gt;&lt;/p&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h1 id=&quot;redis-sentinel-support&quot;&gt;Redis Sentinel Support&lt;/h1&gt;&lt;p&gt;Traefik Proxy has a unique configuration model that allows runtime changes to its dynamic configuration, so you can maintain high availability without dropping open connections by an unnecessary full proxy reload. From the &lt;a href=&quot;https://doc.traefik.io/traefik/v2.11/providers/overview/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;multiple providers available&lt;/u&gt;&lt;/a&gt;, the &lt;a href=&quot;https://doc.traefik.io/traefik/v2.11/providers/redis/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Redis provider&lt;/u&gt;&lt;/a&gt; has been around since Traefik Proxy v2.2.&amp;nbsp;&lt;/p&gt;&lt;p&gt;This release adds support to &lt;a href=&quot;https://redis.io/docs/management/sentinel/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Redis Sentinel&lt;/u&gt;&lt;/a&gt; (&lt;a href=&quot;https://github.com/traefik/traefik/pull/10245?ref=containous.ghost.io&quot;&gt;&lt;u&gt;PR#10245&lt;/u&gt;&lt;/a&gt;), which provides high availability for Redis when not using Redis Cluster. One of our &lt;a href=&quot;https://traefik.io/traefik-enterprise/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik Enterprise&lt;/u&gt;&lt;/a&gt; customers uses it for storing OIDC tokens, which we thought could could benefit the wider community, so we brought it to the open-source version.&lt;/p&gt;&lt;h1 id=&quot;open-connections-improved&quot;&gt;Open Connections Improved&lt;/h1&gt;&lt;p&gt;Before Traefik Proxy v2.11, HTTP connections would stay open until clients closed them. This behavior could lead to more open connections and higher memory usage. Furthermore, when coupling Traefik Proxy with an upstream Load Balancer, this connection management method prevented an efficient traffic distribution when scaling up Traefik Proxy instances. The Load Balancer would stick to the same instance rather than ensuring a more even traffic distribution by sending requests to the newest instances.&lt;/p&gt;&lt;p&gt;To tackle this, we’ve introduced two new transport options for entrypoints (&lt;a href=&quot;https://github.com/traefik/traefik/pull/10247?ref=containous.ghost.io&quot;&gt;&lt;u&gt;PR#10247&lt;/u&gt;&lt;/a&gt;). You can use both options together or choose one or the other:&lt;/p&gt;&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;keepAliveMaxRequests&lt;/strong&gt;: limits the number of requests each client can make within one connection. Whenever a client sends a request within an open connection, if this request number exceeds the &lt;code&gt;keepAliveMaxRequests&lt;/code&gt; threshold, Traefik Proxy will ask for a connection close (sends header &lt;code&gt;Connection:close&lt;/code&gt;).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;keepAliveMaxTime&lt;/strong&gt;: limits the time a client can keep reusing the same connection for its requests. Whenever a client sends a request within an open connection, if the elapsed time between the first and current requests exceeds the &lt;code&gt;keepAliveMaxTime&lt;/code&gt; threshold, Traefik Proxy will ask for a connection close (sends header &lt;code&gt;Connection:close&lt;/code&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;h1 id=&quot;encryption-of-weighted-round-robin-wrr-sticky-cookie-content&quot;&gt;Encryption of Weighted Round Robin (WRR) Sticky Cookie Content&lt;/h1&gt;&lt;p&gt;Load balancing is a big topic in networking, we even have a free &lt;a href=&quot;https://academy.traefik.io/courses/advanced-load-balancing-w-traefik-proxy?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Traefik Academy video course&lt;/u&gt;&lt;/a&gt; on it if you want to learn more about the ins and outs of load balancing. There are different ways to achieve it, &lt;a href=&quot;https://doc.traefik.io/traefik/v2.11/routing/services/?ref=containous.ghost.io#weighted-round-robin-service&quot;&gt;&lt;u&gt;Weighted Round Robin (WRR)&lt;/u&gt;&lt;/a&gt; is one of them. With the &lt;a href=&quot;https://doc.traefik.io/traefik/v2.11/providers/file/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;File&lt;/u&gt;&lt;/a&gt; or &lt;a href=&quot;https://doc.traefik.io/traefik/v2.11/providers/kubernetes-crd/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;IngressRoute&lt;/u&gt;&lt;/a&gt; providers, you can assign weights to services and let Traefik Proxy load balance the requests between these available services based on the weights.&amp;nbsp;&lt;/p&gt;&lt;p&gt;When using WRR, a sticky session cookie is used to let the client know which server handles the first response. On subsequent requests, the client should send the cookie with the value set to keep the session alive with the same server. However, the contents of this cookie were previously not encrypted, which could expose the internal IP address of the proxied service.&lt;/p&gt;&lt;p&gt;We’ve listened to the community&apos;s voice and provided a fix (&lt;a href=&quot;https://github.com/traefik/traefik/pull/10243?ref=containous.ghost.io&quot;&gt;&lt;u&gt;PR#10243&lt;/u&gt;&lt;/a&gt;) to hash the contents of the WRR sticky cookies. This way, it’s not possible anymore to deduct information about the server handling the request.&lt;/p&gt;&lt;h1 id=&quot;other-changes&quot;&gt;Other Changes&lt;/h1&gt;&lt;ul&gt;&lt;li&gt;The / character in router names can now be used through URL encoding/decoding the YAML keys. This change helps avoid 404 errors on the dashboard for aptly named routers (&lt;a href=&quot;https://github.com/traefik/traefik/pull/10292?ref=containous.ghost.io&quot;&gt;&lt;u&gt;PR#10292&lt;/u&gt;&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;The ReadHeaderTimeout has been fixed for PROXY protocol by using the ReadTimeout configured on the entrypoint (&lt;a href=&quot;https://github.com/traefik/traefik/pull/10320?ref=containous.ghost.io&quot;&gt;&lt;u&gt;PR#10320&lt;/u&gt;&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;We have fixed Kerberos and NTLM authentication with IIS server by “sticking” to the TCP connection with the backend for a single client TCP Connection when it’s necessary (&lt;a href=&quot;https://github.com/traefik/traefik/pull/10405?ref=containous.ghost.io&quot;&gt;&lt;u&gt;PR#10405&lt;/u&gt;&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;The middleware &lt;a href=&quot;https://doc.traefik.io/traefik/v2.11/middlewares/http/ipwhitelist/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;IPWhiteList&lt;/u&gt;&lt;/a&gt; has been deprecated in favor of the new &lt;a href=&quot;https://doc.traefik.io/traefik/v2.11/middlewares/http/ipallowlist/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;IPAllowList&lt;/u&gt;&lt;/a&gt; middleware (&lt;a href=&quot;https://github.com/traefik/traefik/pull/10249?ref=containous.ghost.io&quot;&gt;&lt;u&gt;PR#10249&lt;/u&gt;&lt;/a&gt;).&lt;/li&gt;&lt;li&gt;The Go library used has been updated to take advantage of the new features embedded in &lt;a href=&quot;https://tip.golang.org/doc/go1.22?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Go v1.22&lt;/u&gt;&lt;/a&gt; as well as benefiting from security fixes. This update impacts both the cipher suites and TLS minimum version management, for more information, please read the &lt;a href=&quot;https://doc.traefik.io/traefik/v2.11/migration/v2/?ref=containous.ghost.io#v211&quot;&gt;&lt;u&gt;migration notes&lt;/u&gt;&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;Our documentation’s readability, wording, formatting, link accessibility, and examples have also been improved.&lt;/li&gt;&lt;/ul&gt;&lt;h1 id=&quot;wrapping-it-up&quot;&gt;Wrapping It Up&lt;/h1&gt;&lt;p&gt;With 2.11, Traefik is smarter, safer, more efficient, and future proof. We want to thank all community members who gave feedback, asked questions and challenged the team. This makes Traefik much better.&lt;/p&gt;&lt;p&gt;If you are interested in contributing to Traefik Proxy, join us on &lt;a href=&quot;https://github.com/traefik/?ref=traefik.io&quot;&gt;&lt;u&gt;GitHub&lt;/u&gt;&lt;/a&gt;, where you can request features/enhancements, help us design the next version, or even get your hands dirty by creating or reviewing pull requests. For more information, check out the &lt;a href=&quot;https://github.com/traefik/traefik/releases/tag/v2.11.0?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Release Notes&lt;/u&gt;&lt;/a&gt; and updated &lt;a href=&quot;https://doc.traefik.io/traefik/?ref=traefik.io&quot;&gt;&lt;u&gt;Docs&lt;/u&gt;&lt;/a&gt;. If you have questions, pop over to our &lt;a href=&quot;https://community.traefik.io/?ref=traefik.io&quot;&gt;&lt;u&gt;Community Forum&lt;/u&gt;&lt;/a&gt;, where you can work with other community members to find your answers. And as always, we look forward to your feedback.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-158028398339&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:255.06668090820312px&quot; data-hubspot-wrapper-cta-id=&quot;158028398339&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJopIkqy9PwxjiexjkTebdknPc%2B1lMv9CoGqRfqx9yrZ6uJu4k%2BqE2uO7QoJE9hsbY2%2Fu1c4YagHrQ4ZCBQ9KWSmNf5JnqrM8ZnFKNFuS20X3M%3D&amp;webInteractiveContentId=158028398339&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Proxy_Ad_02@2x&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-158028398339.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;p&gt;&lt;/p&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Announcing Traefik Proxy v3.0 RC1]]></title>
            <description><![CDATA[Traefik Proxy v3 is now a Release Candidate and is on the way to GA. Learn all the new features, including Wasm, OpenTelemetry, Kubernetes Gateway API, & more.]]></description>
            <link>https://traefik.io/announcing-traefik-proxy-v3-rc</link>
            <guid isPermaLink="true">https://traefik.io/announcing-traefik-proxy-v3-rc</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Product News]]></category>
            <category><![CDATA[Ingress]]></category>
            <category><![CDATA[Application Proxy]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Emile Vauge]]></dc:creator>
            <pubDate>Wed, 14 Feb 2024 17:10:51 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/02/traefik-v3-announcement-image-1.png&quot; class=&quot;kg-image&quot; alt=&quot;traefik v3 announcement image&quot; loading=&quot;lazy&quot; width=&quot;1200&quot; height=&quot;675&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/02/traefik-v3-announcement-image-1.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/02/traefik-v3-announcement-image-1.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/02/traefik-v3-announcement-image-1.png 1200w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Almost five years ago, in September 2019, we released the previous major version of Traefik: v2.0. Since then, Traefik has been more active than ever. It has achieved a unique, long term traction with more than 3 billion downloads and 700+ contributors. Traefik is ranked in the Top 15 on DockerHub, has 46,000 GitHub stars, and continues a five-year streak as the #1 API Gateway according to &lt;a href=&quot;https://ossinsight.io/collections/api-gateway/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OSSInsight.io&lt;/u&gt;&lt;/a&gt;. What a ride!&lt;/p&gt;&lt;p&gt;We have designed this major release around a few key aspects. First of all, we added support for popular, emerging technologies—WebAssembly (Wasm), OpenTelemetry, and Kubernetes Gateway API. And then, of course, because the cornerstone of a proxy is the routing and the security, we revamped some key parts of the routing rules and added support for some leading edge technologies like HTTP/3, SPIFFE, and Tailscale.&lt;/p&gt;&lt;p&gt;Another critical aspect of any major release, which by design contains breaking changes, is to provide the smoothest user experience migrating from the previous version. Not only are we providing a complete migration guide, but we ensured that the transition process from the previous v2 to the new v3 has been streamlined, by ensuring backward compatibility with v2 syntax while offering a progressive path for adopting the v3 syntax.&lt;/p&gt;&lt;p&gt;Finally, Traefik is and has always been a community-driven project. A huge effort has been made on improving the user experience for contributors with the help of strong and clear processes within a welcoming and respectful environment.&lt;/p&gt;&lt;p&gt;I’m extremely proud to see that this project, born 8 years ago, has become such a critical piece of the modern cloud-native infrastructure stack, with the help of such an amazing community.&lt;/p&gt;&lt;p&gt;Alright, let’s jump into the details of v3 🙂&lt;br&gt;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-158028398339&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:255.06668090820312px&quot; data-hubspot-wrapper-cta-id=&quot;158028398339&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJopIkqy9PwxjiexjkTebdknPc%2B1lMv9CoGqRfqx9yrZ6uJu4k%2BqE2uO7QoJE9hsbY2%2Fu1c4YagHrQ4ZCBQ9KWSmNf5JnqrM8ZnFKNFuS20X3M%3D&amp;webInteractiveContentId=158028398339&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Proxy_Ad_02@2x&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-158028398339.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
  &lt;br /&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;ease-of-migration&quot;&gt;Ease of Migration&lt;/h2&gt;&lt;p&gt;A few years back, when &lt;a href=&quot;https://traefik.io/blog/traefik-2-0-6531ec5196c2/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;we introduced Traefik v2 to the world&lt;/u&gt;&lt;/a&gt;, the team was so excited to improve the project that we underestimated one thing: migration experience from v1.x to v2.x. Not that our migration plan was empty, far from that: we wrote &lt;a href=&quot;https://doc.traefik.io/traefik/migration/v1-to-v2/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;an extensive migration guide&lt;/u&gt;&lt;/a&gt;, we even provided a &lt;a href=&quot;https://github.com/traefik/traefik-migration-tool?ref=containous.ghost.io&quot;&gt;&lt;u&gt;migration tool&lt;/u&gt;&lt;/a&gt; to help users convert their configuration to the new format. But that wasn’t enough and let’s be honest, the adoption of this new version took longer than what we expected. Clearly, this wasn’t something we wanted to see again with Traefik v3. A major version means breaking changes obviously, but that shouldn’t imply a painful migration experience.&lt;/p&gt;&lt;p&gt;With Traefik v3, we are introducing a streamlined transition process from v2, ensuring backward compatibility with v2 syntax while offering a progressive path for adopting the v3 syntax, effectively overcoming the challenges encountered in previous migrations.&lt;/p&gt;&lt;p&gt;Here are the guidelines we followed:&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Obvious first thing is to provide &lt;a href=&quot;https://doc.traefik.io/traefik/v3.0/migration/v2-to-v3/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;a detailed migration guide&lt;/u&gt;&lt;/a&gt; describing every change that need to be made from v2.x to v3&lt;/li&gt;&lt;li&gt;Breaking changes on the &lt;a href=&quot;https://doc.traefik.io/traefik/getting-started/configuration-overview/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;static configuration&lt;/u&gt;&lt;/a&gt; are OK as soon as we provide user friendly logs when v2.x options are still used and link to the new v3 format&lt;/li&gt;&lt;li&gt;The &lt;a href=&quot;https://doc.traefik.io/traefik/getting-started/configuration-overview/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;dynamic configuration&lt;/u&gt;&lt;/a&gt; will support both v2.x and v3 configuration formats. Imagine a scenario with 200 ingress resources to migrate. You will be able to use Traefik v3 without any change, and you will be able to progressively upgrade your ingresses to the new format.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;All in all, this should be pretty straightforward for Traefik users to adopt this new major version and we will carefully listen to your feedback to further improve upon the migration guide.&amp;nbsp;&lt;/p&gt;&lt;h2 id=&quot;routing-security&quot;&gt;Routing &amp;amp; Security&lt;/h2&gt;&lt;p&gt;One of the fundamental purposes of Traefik is to route network traffic in a secure and intelligent manner. This is the core part of any proxy, but Traefik has always been the cutting edge. And this v3 release doesn’t disappoint with a huge number of new features and improvements.&lt;/p&gt;&lt;p&gt;Let’s start with HTTP, the backbone of the Internet. Since HTTP/2 was approved in 2015, a lot of work has been done on defining the next milestone: HTTP/3. And this one is big as it doesn’t rely on the good old TCP anymore, but instead UDP (being based on QUIC, a new transport protocol developed by Google in 2012). And it comes with many benefits like enhanced performance, faster connection establishment, simpler encryption, etc. &lt;a href=&quot;https://github.com/traefik/traefik/pull/9570?ref=containous.ghost.io&quot;&gt;&lt;u&gt;HTTP/3 is now out of experimental and fully production ready in Traefik&lt;/u&gt;&lt;/a&gt;! Thanks to the maintainers of the&amp;nbsp;&lt;a href=&quot;https://github.com/quic-go/quic-go?ref=containous.ghost.io&quot; rel=&quot;noopener noreferrer&quot;&gt;Quic-Go&lt;/a&gt;&amp;nbsp;Project, and especially&amp;nbsp;&lt;a href=&quot;https://github.com/marten-seemann?ref=containous.ghost.io&quot; rel=&quot;noopener noreferrer&quot;&gt;Marten Seeman&lt;/a&gt;, for their efforts in developing this library and enabling this advancement.&lt;/p&gt;&lt;p&gt;Another key technology that is being widely used lately in cloud-native environments is gRPC. gRPC is a modern Remote Procedure Call (RPC) framework that can run in any environment. It uses &lt;a href=&quot;https://en.wikipedia.org/wiki/Protocol_Buffers?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Protocol Buffers&lt;/u&gt;&lt;/a&gt; as the interface description language, and provides advanced features such as bidirectional streaming and flow control, cancellation, and timeouts. Traefik v3 &lt;a href=&quot;https://github.com/traefik/traefik/pull/9451?ref=containous.ghost.io&quot;&gt;&lt;u&gt;now supports gRPC-Web&lt;/u&gt;&lt;/a&gt;, which adds the capability to call a gRPC service from a web app within a browser. Additionally, &lt;a href=&quot;https://github.com/jjacque?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Jeremy Jacque&lt;/u&gt;&lt;/a&gt; added &lt;a href=&quot;https://github.com/traefik/traefik/pull/8583?ref=containous.ghost.io&quot;&gt;&lt;u&gt;gRPC healthchecks&lt;/u&gt;&lt;/a&gt; support to Traefik.&lt;/p&gt;&lt;p&gt;Deploying dozens or hundreds of services in production comes with many challenges. One of them is enabling workloads to prove their identity to trust each other. Enter &lt;a href=&quot;https://spiffe.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;SPIFFE&lt;/u&gt;&lt;/a&gt;, the Secure Production Identity Framework For Everyone Project defines a framework and set of standards for identifying and securing communications between application services. Thanks to &lt;a href=&quot;https://github.com/jlevesy?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Julien Levesy&lt;/u&gt;&lt;/a&gt;, Traefik &lt;a href=&quot;https://github.com/traefik/traefik/pull/9394?ref=containous.ghost.io&quot;&gt;&lt;u&gt;now supports SPIFFE mTLS&lt;/u&gt;&lt;/a&gt; with its backend servers!&lt;/p&gt;&lt;p&gt;Traefik had a routing syntax that was already very powerful, but we figured out that some parts could be further improved and unified to &lt;a href=&quot;https://doc.traefik.io/traefik/v3.0/migration/v2-to-v3/?ref=containous.ghost.io#new-v3-syntax-notable-changes&quot;&gt;&lt;u&gt;make the user experience even better&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;If you need to protect websites within a &lt;a href=&quot;https://tailscale.com/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Tailscale&lt;/u&gt;&lt;/a&gt; network, Traefik can now &lt;a href=&quot;https://tailscale.com/blog/traefik-certificate-resolver?ref=containous.ghost.io&quot;&gt;&lt;u&gt;request TLS certificates&lt;/u&gt;&lt;/a&gt; from the Tailscale API (provisioned with Let’s Encrypt)! The long-awaited Brotli compression algorithm support &lt;a href=&quot;https://github.com/traefik/traefik/pull/9387?ref=containous.ghost.io&quot;&gt;&lt;u&gt;was added &lt;/u&gt;&lt;/a&gt;by &lt;a href=&quot;https://github.com/glinton?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Greg Linton&lt;/u&gt;&lt;/a&gt; which in short means quicker website loading. &lt;a href=&quot;https://github.com/maigl?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Michael Kuhnt&lt;/u&gt;&lt;/a&gt; brings SNI routing with Postgres STARTTLS. And finally, you are now able to fully &lt;a href=&quot;https://github.com/traefik/traefik/pull/9465?ref=containous.ghost.io&quot;&gt;&lt;u&gt;configure your TCP server transports&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;As you can see, the work that has been done is just insane and reinforces the pioneering routing &amp;amp; security capabilities of Traefik while sticking to the original virtues of a smooth user experience and top-notch performance.&lt;/p&gt;&lt;h2 id=&quot;augmented-traefik&quot;&gt;Augmented Traefik&amp;nbsp;&lt;/h2&gt;&lt;p&gt;Back in 2019, with the release of Traefik v2, we had introduced an extension engine, &lt;a href=&quot;https://github.com/traefik/yaegi?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Yaegi&lt;/u&gt;&lt;/a&gt;, that enabled many to develop middleware (or providers) for their context. To this day, we can count more than a hundred middlewares made available through the catalog, plus many more that are kept private.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Yaegi is an extremely powerful engine whose boundaries go beyond Traefik itself. Given its nature though, Yaegi still requires much work to support the full Go specification and to keep up with every release of the language. This can sometimes result in difficulties in adding very challenging features.&lt;/p&gt;&lt;p&gt;Another extension technology we have been looking at for quite some time is WebAssembly (Wasm). Until today, we were not satisfied with current ABIs (Application Binary Interface) like proxy Wasm because they were closely designed with other technologies in mind (Envoy), making it hard to leverage in our context. With the release of http-wasm providing a standard ABI designed to match the HTTP handler mechanism built-in with Go, the game changed. Thanks to this technology, in less than 3 months, a contributor jumped in and &lt;a href=&quot;https://github.com/traefik/traefik/pull/10189?ref=containous.ghost.io&quot;&gt;&lt;u&gt;tackled the necessary work&lt;/u&gt;&lt;/a&gt;.&amp;nbsp;&lt;/p&gt;&lt;p&gt;You read it correctly: you can now leverage Wasm to develop plugins in traefik, removing any existing hurdle and expanding the field of possibilities.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Many thanks go to &lt;a href=&quot;https://github.com/zetaab?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Jesse Haka&lt;/u&gt;&lt;/a&gt; for the bigger chunk of the work involved, and &lt;a href=&quot;https://github.com/jcchavezs?ref=containous.ghost.io&quot;&gt;&lt;u&gt;José Carlos Chávez&lt;/u&gt;&lt;/a&gt; for the review effort.&lt;br&gt;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-158028398339&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:255.06668090820312px&quot; data-hubspot-wrapper-cta-id=&quot;158028398339&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJopIkqy9PwxjiexjkTebdknPc%2B1lMv9CoGqRfqx9yrZ6uJu4k%2BqE2uO7QoJE9hsbY2%2Fu1c4YagHrQ4ZCBQ9KWSmNf5JnqrM8ZnFKNFuS20X3M%3D&amp;webInteractiveContentId=158028398339&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Proxy_Ad_02@2x&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-158028398339.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
  &lt;br /&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;everything-everywhere-all-at-once-observability&quot;&gt;Everything, Everywhere, All-at-Once Observability&lt;/h2&gt;&lt;p&gt;With its central place in your architecture, making decisions on your behalf about where to route requests, Traefik made observability one of its core features since v1, supporting many vendors for metrics and tracing analysis.&lt;/p&gt;&lt;p&gt;With the advent of &lt;a href=&quot;https://opentelemetry.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OpenTelemetry&lt;/u&gt;&lt;/a&gt;, it sounded natural that Traefik would pave the way for adoption and encourage our users to migrate to state-of-the-art toolings. Once again, we can thank &lt;a href=&quot;https://github.com/zetaab?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Jesse Haka&lt;/u&gt;&lt;/a&gt; for this contribution.&lt;/p&gt;&lt;p&gt;For Metrics, where Traefik already supports a large panel of vendors with wide adoption (Datadog, Prometheus, and others), we added OpenTelemetry as a cherry on the cake: you can start migrating to a newer stack without compromising your well-established monitoring toolchain.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Tracing was a different story: Traefik had been an early supporter of two standards (OpenSensus and OpenTracing) that have now merged into one. The adoption is already there, and the migration path is well known. As a result, we dropped support for the previous standards in favor of OpenTelemetry.&lt;/p&gt;&lt;p&gt;But OpenTelemetry is not the only trick Traefik 3 has in its hat around observability. For gRPC enthusiasts, we added support for proper &lt;a href=&quot;https://github.com/traefik/traefik/pull/8583?ref=containous.ghost.io&quot;&gt;&lt;u&gt;health checks&lt;/u&gt;&lt;/a&gt;. A one-liner that will change the lives of many, at least at work or in the lab. Thank you &lt;a href=&quot;https://github.com/jjacque?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Jeremy Jacque&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;And my own personal favorite, speaking to the geek side of us, we changed the &lt;a href=&quot;https://github.com/traefik/traefik/pull/9515?ref=containous.ghost.io&quot;&gt;&lt;u&gt;logger&lt;/u&gt;&lt;/a&gt; system for a zero-allocation (read “better performing”), structure-friendly, rotation-aware logger. This apparent small tweak will make the whole experience of understanding and debugging your system much easier.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/02/traefik-3-blog.png&quot; class=&quot;kg-image&quot; alt=&quot;Traefik 3 logger system for understanding and debugging your system&quot; loading=&quot;lazy&quot; width=&quot;1600&quot; height=&quot;462&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2024/02/traefik-3-blog.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2024/02/traefik-3-blog.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2024/02/traefik-3-blog.png 1600w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;team-player-traefik-kubernetes-friends&quot;&gt;Team Player Traefik: Kubernetes &amp;amp; Friends&lt;/h2&gt;&lt;p&gt;For those of you Kubernetes heads, chances are you’ve always seen Traefik as your ingress controller of choice, and that you have adopted IngressRoutes as a clean way to get rid of the limitations of the good old (especially old) Ingress specification. This opened the door to many benefits: declarative and more routing options to name two.&lt;/p&gt;&lt;p&gt;Still, Kubernetes is evolving, and Traefik was part of the &lt;a href=&quot;https://gateway-api.sigs.k8s.io/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Gateway API&lt;/u&gt;&lt;/a&gt; vanguard, supporting the first alphas. It’s no surprise that we’re bringing full support of the Gateway API specification that is now officially out.&lt;/p&gt;&lt;p&gt;The power of Kubernetes also lies in its vendor ecosystem, allowing DevOps to pick the best tools available. In that regard, Traefik has always been a team player, supporting many vendors, third-party orchestrators, observability components, and key-value stores to name a few. Based on popular demand amongst users and customers alike, we are thrilled to share that Traefik v3 comes with better support for Hashicorp’s &lt;a href=&quot;https://github.com/traefik/traefik/pull/10140?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Consul&lt;/u&gt;&lt;/a&gt; (for meshing that requires special TLS management) and &lt;a href=&quot;https://github.com/traefik/traefik/pull/9332?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Nomad&lt;/u&gt;&lt;/a&gt; (for namespace support). On the latter, we can thank &lt;a href=&quot;https://github.com/0teh?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Thomas Harris&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;h2 id=&quot;strengthen-community-open-source-values&quot;&gt;Strengthen Community &amp;amp; Open Source Values&lt;/h2&gt;&lt;p&gt;Maybe the best way to end the list is a non-feature that maintainers adopted wholeheartedly: our commitment to make the Traefik v3 experience the best it can be, from using Traefik to actively contributing to the project.&lt;/p&gt;&lt;p&gt;Yes, Traefik has always been open-source and contributions have been at the forefront of each version. Still, despite a strong commitment to sorting each incoming issue and PR, we concurred that maintainers could better document their thoughts around these contributions. Not only for us as a group of maintainers working async but as a testimony to enable contributors for action.&amp;nbsp;&lt;/p&gt;&lt;p&gt;As a consequence, we &lt;a href=&quot;https://github.com/traefik/traefik/pull/10197?ref=containous.ghost.io&quot;&gt;&lt;u&gt;reinforced our stance&lt;/u&gt;&lt;/a&gt; to ensure several key points:&amp;nbsp;&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Always spend the extra time so each interaction is welcoming, open, and clear&lt;/li&gt;&lt;li&gt;Always prioritize contributions over our own agenda&amp;nbsp;&lt;/li&gt;&lt;li&gt;Always document the ongoing work for easy collaboration&lt;/li&gt;&lt;li&gt;Always create proposals for upcoming features&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;These small tweaks almost instantly empowered some key contributors who brought two of the biggest features of Traefik v3, namely Wasm support and OpenTelemetry.&lt;/p&gt;&lt;p&gt;We just can’t wait to welcome even more contributors and additional features in the near future.&lt;/p&gt;&lt;h2 id=&quot;next-steps&quot;&gt;Next Steps&lt;/h2&gt;&lt;p&gt;Like in the previous major release v2, Traefik v3 shows the importance of the community. Every feature that has been discussed today was born from a user asking for it, reporting a bug, or just asking for something “better”. Critical new features have been completed by external contributors, and, to me, this demonstrates a healthy and vibrant open source project.&lt;/p&gt;&lt;p&gt;A release candidate is the beginning of a release process. To make it to GA, we will need your feedback, comments, and ideas to make this landing as smooth as possible. To get involved, you can &lt;a href=&quot;https://hub.docker.com/_/traefik?ref=containous.ghost.io&quot;&gt;&lt;u&gt;download Traefik v3 from DockerHub&lt;/u&gt;&lt;/a&gt; and help us shape it via &lt;a href=&quot;https://github.com/traefik/traefik?ref=containous.ghost.io&quot;&gt;&lt;u&gt;our OSS Project on GitHub&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Additionally, if you’d like to receive regular updates via email as v3 heads towards GA, &lt;a href=&quot;https://info.traefik.io/get-traefik-updates?ref=containous.ghost.io&quot;&gt;&lt;u&gt;sign up here&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Finally, I want to send a huge thank you to all contributors. Your help is invaluable.&lt;/p&gt;&lt;p&gt;See you on GitHub!&lt;/p&gt;&lt;h2 id=&quot;useful-links&quot;&gt;Useful Links&lt;/h2&gt;&lt;ul&gt;&lt;li&gt;Traefik 3.0 RC1 on &lt;a href=&quot;https://github.com/traefik/traefik/releases/tag/v3.0.0-rc1?ref=containous.ghost.io&quot;&gt;&lt;u&gt;GitHub&lt;/u&gt;&lt;/a&gt; &amp;amp; on &lt;a href=&quot;https://hub.docker.com/_/traefik?ref=containous.ghost.io&quot;&gt;&lt;u&gt;DockerHub&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Traefik &lt;a href=&quot;https://docs.traefik.io/?ref=traefik.io&quot;&gt;&lt;u&gt;Documentation&lt;/u&gt;&lt;/a&gt;, &lt;a href=&quot;https://traefik.io/traefik/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Website&lt;/u&gt;&lt;/a&gt;, &amp;amp; &lt;a href=&quot;https://github.com/containous/traefik?ref=traefik.io&quot;&gt;&lt;u&gt;GitHub&lt;/u&gt;&lt;/a&gt;&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://community.traefik.io/?ref=traefik.io&quot;&gt;&lt;u&gt;Our Community Forum&lt;/u&gt;&lt;/a&gt;&lt;br&gt;&lt;/li&gt;&lt;/ul&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-158028398339&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:255.06668090820312px&quot; data-hubspot-wrapper-cta-id=&quot;158028398339&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLJopIkqy9PwxjiexjkTebdknPc%2B1lMv9CoGqRfqx9yrZ6uJu4k%2BqE2uO7QoJE9hsbY2%2Fu1c4YagHrQ4ZCBQ9KWSmNf5JnqrM8ZnFKNFuS20X3M%3D&amp;webInteractiveContentId=158028398339&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Proxy_Ad_02@2x&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-158028398339.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;br /&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Enhancing API Observability: Traefik Hub, OpenTelemetry, and the New Era of Data-Driven API Management]]></title>
            <description><![CDATA[Understand the importance of OpenTelemetry in API observability, how it can be used, and how Traefik Hub sets a new standard for OpenTelemetry support.]]></description>
            <link>https://traefik.io/opentelemetry-traefik-hub</link>
            <guid isPermaLink="true">https://traefik.io/opentelemetry-traefik-hub</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[Kubernetes]]></category>
            <category><![CDATA[Microservices]]></category>
            <category><![CDATA[Observability]]></category>
            <category><![CDATA[Guides]]></category>
            <dc:creator><![CDATA[Immánuel Fodor]]></dc:creator>
            <pubDate>Thu, 07 Dec 2023 20:30:59 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/12/otel-blog-feature-image-no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/12/otel-blog-feature-image-no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/12/otel-blog-feature-image-no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/12/otel-blog-feature-image-no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/12/otel-blog-feature-image-no-copy.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;In today&apos;s interconnected digital landscape, application programming interfaces (APIs) serve as the invisible architects, shaping the way we interact with technology. They are the unsung heroes behind the scenes, propelling innovation, driving new business models, and seamlessly delivering products and services across diverse channels. As the backbone of the digital era, APIs command a staggering &lt;a href=&quot;https://blog.cloudflare.com/landscape-of-api-traffic/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;54%&lt;/u&gt;&lt;/a&gt; of total requests and are growing &lt;a href=&quot;https://blog.cloudflare.com/api-management-metrics/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;twice&lt;/u&gt;&lt;/a&gt; as fast as web traffic, underscoring their pivotal role in the evolution of technology.&lt;/p&gt;&lt;p&gt;The API market, once valued at $5 billion in 2022, is &lt;a href=&quot;https://www.precedenceresearch.com/api-management-market?ref=containous.ghost.io&quot;&gt;&lt;u&gt;forecasted&lt;/u&gt;&lt;/a&gt; to skyrocket to $40 billion by 2030. This meteoric rise is fueled by the fact that &lt;a href=&quot;https://www.postman.com/state-of-api/api-first-strategies/?ref=containous.ghost.io#api-first-strategies&quot;&gt;&lt;u&gt;two-thirds&lt;/u&gt;&lt;/a&gt; of companies are either embracing or fully adopting API-first strategies. As the world becomes increasingly connected, APIs are not just a technological necessity but a strategic imperative for businesses looking to thrive in the digital age.&lt;/p&gt;&lt;p&gt;However, with great impact comes the need for visibility and control. Observability has become paramount in the era of modern and distributed systems, as well as for the APIs connecting them. This paradigm shift from monitoring with simple metrics to comprehensive telemetry analysis is vital for today’s issue resolution, performance optimization, and user satisfaction.&lt;/p&gt;&lt;p&gt;Enter OpenTelemetry, a game-changer in the realm of observability.&lt;/p&gt;&lt;h2 id=&quot;opentelemetry-the-observability-enabler&quot;&gt;OpenTelemetry: The Observability Enabler&lt;/h2&gt;&lt;p&gt;Designed to streamline telemetry data collection from distributed systems, OpenTelemetry replaces multiple vendor-specific agents, simplifying and unifying dynamic systems telemetry data. It provides a unified standard, ensures consistent instrumentation across various programming languages, and offers enhanced insights into application use, health, and performance. This becomes especially important as organizations deal with the complexities of microservices and cloud-native architectures.&lt;/p&gt;&lt;p&gt;In this blog post, we will delve into the critical role of OpenTelemetry in achieving comprehensive observability and explore how it addresses the challenges posed by modern software architectures and APIs. For context, API gateways play a pivotal role in managing and securing API traffic, together with the need for visibility into APIs’ health, usage, and performance. Whether with issue alerts, event correlation for rapid issue fault-domain isolation, or cross-domains causations and root-cause analysis, OpenTelemetry emerges as a key enabler in ensuring the reliability and performance of API-driven systems.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;br /&gt;&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-149000733967&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:254.41665649414062px&quot; data-hubspot-wrapper-cta-id=&quot;149000733967&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLI6eqG0%2B7EwK4iN%2Bo2DS3EFiJzojQHXtySQO%2Fp5sKTHnaMIZVPEeHONFGlimo%2BVNqlIrUKTPtXFNT1NOnFXkGahMiQJvF0vs8%2FJZ8GG9JIBuRg%3D&amp;webInteractiveContentId=149000733967&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Webinar Header@2x(2)&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-149000733967.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;understanding-opentelemetry&quot;&gt;Understanding OpenTelemetry&lt;/h2&gt;&lt;p&gt;OpenTelemetry is an open-source project that emerged in 2019 combining the OpenTracing and OpenCensus projects. It quickly became a game-changer unifying and streamlining the collection of telemetry data from distributed systems across tech stacks. Born out of the necessity for a unified approach governed to date by multiple proprietary approaches, OpenTelemetry provides a standardized, open telemetry framework for comprehensive visibility into health, usage, and performance across infrastructure, services, and applications.&lt;/p&gt;&lt;p&gt;Metric types in OpenTelemetry serve as the bedrock for understanding system performance and behavior:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Counter&lt;/strong&gt;: Tracks continuously increasing numeric values, ideal for counting occurrences of events.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;UpDownCounter&lt;/strong&gt;: A versatile counter that accommodates both positive and negative changes, offering flexibility in tracking fluctuations.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Gauge&lt;/strong&gt;: Offers a snapshot of a value at a specific moment, providing insight into the current state of a system.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Histogram&lt;/strong&gt;: Captures the distribution of observed values over time, offering a nuanced view of data spread and central tendency.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;On the other hand, metric labels play a pivotal role in enhancing the granularity and context of metrics. Labels are key-value pairs associated with metric data, allowing for more nuanced and specific insights into system behavior.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Let&apos;s consider a practical example in the context of an airline booking system. Imagine you want to monitor the usage of the APIs with a metric called API Request Total (&lt;code&gt;api_requests_total&lt;/code&gt;) which can be an instance of the counter metric type.&lt;/p&gt;
&lt;p&gt;The following labels could come in handy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Code&lt;/strong&gt;: To categorize requests based on the HTTP response code (e.g., &quot;&lt;code&gt;200&lt;/code&gt;&quot; for successful requests, &quot;&lt;code&gt;404&lt;/code&gt;&quot; for not found, etc.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Method&lt;/strong&gt;: To differentiate requests based on the HTTP method used (e.g., &quot;&lt;code&gt;GET&lt;/code&gt;,&quot; &quot;&lt;code&gt;POST&lt;/code&gt;,&quot; etc.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API Name&lt;/strong&gt;: To specify the name of the API being accessed (e.g., &quot;&lt;code&gt;flight-api&lt;/code&gt;&quot;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;API Version&lt;/strong&gt;: To track the version of the API (e.g., &quot;&lt;code&gt;v2&lt;/code&gt;&quot;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Token Name&lt;/strong&gt;: To identify the API key used for authentication (e.g., &quot;&lt;code&gt;my-test-token&lt;/code&gt;&quot;)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Example metric labels in OpenTelemetry for this use case:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For a specific metric instance, you might have labels like {&quot;&lt;code&gt;code&lt;/code&gt;&quot;: &quot;&lt;code&gt;200&lt;/code&gt;&quot;, &quot;&lt;code&gt;method&lt;/code&gt;&quot;: &quot;&lt;code&gt;GET&lt;/code&gt;&quot;, &quot;&lt;code&gt;api_name&lt;/code&gt;&quot;: &quot;&lt;code&gt;flight-api&lt;/code&gt;&quot;, &quot;&lt;code&gt;api_version_name&lt;/code&gt;&quot;: &quot;&lt;code&gt;v2&lt;/code&gt;&quot;, &quot;&lt;code&gt;token_name&lt;/code&gt;&quot;: &quot;&lt;code&gt;my-test-token&lt;/code&gt;&quot;}&lt;/li&gt;
&lt;li&gt;Another instance might have labels like {&quot;&lt;code&gt;code&lt;/code&gt;&quot;: &quot;&lt;code&gt;404&lt;/code&gt;&quot;, &quot;&lt;code&gt;method&lt;/code&gt;&quot;: &quot;&lt;code&gt;POST&lt;/code&gt;&quot;, &quot;&lt;code&gt;api_name&lt;/code&gt;&quot;: &quot;&lt;code&gt;ticket-api&lt;/code&gt;&quot;, &quot;&lt;code&gt;api_version_name&lt;/code&gt;&quot;: &quot;&lt;code&gt;v1.1&lt;/code&gt;&quot;, &quot;&lt;code&gt;token_name&lt;/code&gt;&quot;: &quot;&lt;code&gt;prod-app-key&lt;/code&gt;&quot;}&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Now, when analyzing the example &lt;code&gt;api_requests_total&lt;/code&gt; metric, you can gain specific insights thanks to labels:&lt;/p&gt;
&lt;ul&gt;&lt;li&gt;&lt;strong&gt;HTTP Code Analysis&lt;/strong&gt;: Compare the total count of requests based on HTTP response codes to identify patterns in successful or error-prone API interactions.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;HTTP Method Distribution&lt;/strong&gt;: Understand the distribution of requests based on HTTP methods to optimize API resources accordingly.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;API Name and Version&lt;/strong&gt;: Monitor the usage of different APIs and versions to plan for updates, deprecations, or optimizations.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Token Usage&lt;/strong&gt;: Track the utilization of different API keys for authentication, identifying potential security concerns or optimizing key management.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;At the end of the day, the more metrics and labels you have, the more analysis you can do.&lt;/p&gt;&lt;h2 id=&quot;opentelemetry-metrics-in-api-management&quot;&gt;OpenTelemetry Metrics in API Management&lt;/h2&gt;&lt;p&gt;OpenTelemetry metrics has great potential to better observe APIs, however, the current adoption seems to lag.&lt;/p&gt;&lt;p&gt;Moreover, even in instances where API management solutions do offer observability features, the availability of regular metrics remains limited. Many solutions rely on user interface (UI)-based interactions, often leading to what can be termed as &quot;ClickOps&quot;—a reliance on manual, point-and-click operations for metric visibility. This approach, while providing some insights, falls short of the automations and cross-domain analysis promised by OpenTelemetry.&lt;/p&gt;&lt;p&gt;In the API management landscape, where the reliability and performance of APIs are mission-critical to the business, the gap in comprehensive observability can hinder proactive issue resolution, optimization, and strategic decision-making.&lt;/p&gt;&lt;p&gt;Do not fly blind!&lt;/p&gt;&lt;h2 id=&quot;use-cases-of-opentelemetry-metrics-in-api-management&quot;&gt;Use Cases of OpenTelemetry Metrics in API Management&lt;/h2&gt;&lt;h3 id=&quot;real-time-monitoring-and-alerting&quot;&gt;Real-Time Monitoring and Alerting&lt;/h3&gt;&lt;p&gt;Leverage OpenTelemetry metrics to establish thresholds for vital parameters such as API response times, error rates, and request counts. This enables real-time monitoring, allowing organizations to promptly identify deviations from expected behavior.&lt;/p&gt;&lt;p&gt;Additionally, integrating OpenTelemetry metrics with GitOps workflows to correlate API performance changes with code deployments facilitates the swift identification of issues stemming from recent changes. This streamlines troubleshooting and ensuring the reliability of API services.&lt;/p&gt;&lt;h3 id=&quot;capacity-planning-and-scaling&quot;&gt;Capacity Planning and Scaling&lt;/h3&gt;&lt;p&gt;Utilize OpenTelemetry metrics to gain comprehensive insights into resource utilization, enabling effective capacity planning. Identify bottlenecks, predict resource demands, and optimize infrastructure to meet current and future workload efficiently.&lt;/p&gt;&lt;p&gt;By analyzing historical OpenTelemetry metrics, organizations can forecast trends and plan for future workloads. This proactive approach ensures that API management systems are adequately prepared to handle increased demand, preventing potential performance issues.&lt;/p&gt;&lt;h3 id=&quot;performance-optimization&quot;&gt;Performance Optimization&lt;/h3&gt;&lt;p&gt;Dive deep into OpenTelemetry metrics to identify patterns of errors and latency issues. Whether it&apos;s pinpointing error-prone API endpoints or analyzing the performance impact of specific client types, OpenTelemetry metrics provide the granularity needed for precise optimization.&lt;/p&gt;&lt;h2 id=&quot;opentelemetry-metrics-in-traefik-hub&quot;&gt;OpenTelemetry Metrics in Traefik Hub&lt;/h2&gt;&lt;p&gt;Traefik Hub showcases a wealth of OpenTelemetry metrics and labels that redefine how organizations monitor, manage, and optimize their API infrastructure. The expansive range of metrics, totaling over 20, coupled with more than 15 labels, places Traefik Hub at the forefront of empowering users with unparalleled insights.&lt;/p&gt;&lt;p&gt;The four key categories of metrics exposed by Traefik Hub:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Dataflow-related metrics of exposed APIs&lt;/strong&gt;: These metrics offer insights into the health, performance, and interactions of APIs, allowing organizations to precisely monitor and optimize the flow of data through their infrastructure.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;API management object metrics&lt;/strong&gt;: A holistic view of key objects including but not limited to the number of APIs, users with API access on gateways published by the agent, API keys, and more. This category of metrics allows organizations to track the usage and impact of API-related objects, enabling efficient management and strategic decision-making.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Licensing metrics for usage tracking&lt;/strong&gt;: This category enables organizations to track their own usage against the object counts included in the license. This functionality empowers users to manage licensing efficiently, ensuring compliance while optimizing the utilization of available resources.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Ingress-level metrics inherited from Traefik Proxy&lt;/strong&gt;: Building upon the capabilities of Traefik Proxy, Traefik Hub inherits ingress-level metrics that provide a comprehensive understanding of network traffic patterns and behavior.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;We recently enhanced our OpenTelemetry metrics by adding support for API versions, so you can stay on top of your API version proliferation. &lt;a href=&quot;https://traefik.io/blog/api-versioning-with-traefik-hub/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;Learn more here&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;h2 id=&quot;your-apis-your-metrics-your-tools&quot;&gt;Your APIs, Your Metrics, Your Tools&lt;/h2&gt;&lt;p&gt;We don’t believe in vendor lock-in. In the quest to embrace a flexible, interoperable observability landscape, OpenTelemetry emerges as a beacon of liberation. Leveraging the rich ecosystem around OpenTelemetry not only ensures adaptability but also opens up a realm of possibilities for metric manipulation, integration, and visualization.&lt;/p&gt;&lt;p&gt;The &lt;a href=&quot;https://opentelemetry.io/docs/collector/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;OpenTelemetry Collector&lt;/u&gt;&lt;/a&gt; stands as a versatile tool in the arsenal of observability enthusiasts. It goes beyond collection, offering the capability to manipulate metrics dynamically. Through transformations, conversions, filtering, and enrichment, organizations can tailor their telemetry data to specific needs. This flexibility allows for seamless adaptation to evolving requirements and diverse use cases.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/12/Screen-Shot-2023-12-07-at-12.35.31-PM.png&quot; class=&quot;kg-image&quot; alt=&quot;OpenTelemetry Vendor Agnostic Collector Diagram&quot; loading=&quot;lazy&quot; width=&quot;1738&quot; height=&quot;952&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/12/Screen-Shot-2023-12-07-at-12.35.31-PM.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/12/Screen-Shot-2023-12-07-at-12.35.31-PM.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/12/Screen-Shot-2023-12-07-at-12.35.31-PM.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/12/Screen-Shot-2023-12-07-at-12.35.31-PM.png 1738w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Image Source: &lt;/span&gt;&lt;a href=&quot;https://opentelemetry.io/docs/collector?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;u&gt;&lt;span class=&quot;underline&quot; style=&quot;white-space: pre-wrap;&quot;&gt;https://opentelemetry.io/docs/collector&lt;/span&gt;&lt;/u&gt;&lt;/a&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;The latest &lt;a href=&quot;https://horovits.medium.com/prometheus-now-supports-opentelemetry-metrics-83f85878e46a?ref=containous.ghost.io&quot;&gt;&lt;u&gt;release candidate of Prometheus&lt;/u&gt;&lt;/a&gt; marks a significant stride towards embracing open standards. With native OpenTelemetry metrics ingestion support, Prometheus becomes a part of the larger OpenTelemetry ecosystem. This integration not only simplifies the process of incorporating OpenTelemetry metrics into existing setups but also lays the foundation for a more unified and standardized observability approach usable by anyone since open-sourced.&lt;/p&gt;&lt;p&gt;To truly liberate observability, visualization tools play a crucial role. For example, users can leverage the full spectrum of Grafana&apos;s battle-tested features to visualize, analyze, and get insights from their APIs metrics data. Additionally, the embrace of open standards by 3rd party tools ensures that organizations are not tethered to proprietary solutions, fostering a vibrant ecosystem of choice and flexibility to cater to multiple teams and organizations needs.&lt;/p&gt;&lt;h2 id=&quot;grafana-dashboards-example-and-other-resources&quot;&gt;Grafana Dashboards Example and Other Resources&lt;/h2&gt;&lt;p&gt;We’ve made Grafana dashboard examples that you can extend public, delivering insights with a high-level API overview, a detailed per-API, or per user-specific drill-downs.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;All API Overview&lt;/strong&gt;: Get a comprehensive overview of your entire API landscape, including traffic, response times, error rates, and more. Monitor the overall health and performance of all your APIs, enabling swift identification of global trends and anomalies and where to look deeper.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;a href=&quot;https://grafana.com/grafana/dashboards/20080-hub-dashboard/?ref=containous.ghost.io&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/12/otel-1.png&quot; class=&quot;kg-image&quot; alt=&quot;OpenTelemetry Grafana dashboard showing entire API landscape.&quot; loading=&quot;lazy&quot; width=&quot;1908&quot; height=&quot;812&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/12/otel-1.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/12/otel-1.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/12/otel-1.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/12/otel-1.png 1908w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Comprehensive overview of API traffic, response times, error rates, etc.&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;Per-API View&lt;/strong&gt;: Dive deep into the specifics of each API, analyzing traffic patterns, latency, and error rates for targeted understanding and optimizations, with full visibility into API versions.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;a href=&quot;https://grafana.com/grafana/dashboards/20081-api/?ref=containous.ghost.io&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/12/otel-2.png&quot; class=&quot;kg-image&quot; alt=&quot;OpenTelemetry Grafana dashboard with traffic patterns, latency, and error rates.&quot; loading=&quot;lazy&quot; width=&quot;1906&quot; height=&quot;811&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/12/otel-2.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/12/otel-2.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/12/otel-2.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/12/otel-2.png 1906w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Per-API view of traffic patterns, latency, and error rates.&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;&lt;strong&gt;Per-User/Per-Token Drill-Down&lt;/strong&gt;: Track the usage patterns of individual users or API tokens, gaining granular visibility into their interactions with your APIs. Analyze the usage and health of specific API consumers on API requests and responses, ensuring optimal security and resource allocation.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;a href=&quot;https://grafana.com/grafana/dashboards/20083-users/?ref=containous.ghost.io&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/12/otel-3.png&quot; class=&quot;kg-image&quot; alt=&quot;OpenTelemetry Grafana dashboard on individual users and API tokens.&quot; loading=&quot;lazy&quot; width=&quot;1915&quot; height=&quot;816&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/12/otel-3.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/12/otel-3.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/12/otel-3.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/12/otel-3.png 1915w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/a&gt;&lt;figcaption&gt;&lt;span style=&quot;white-space: pre-wrap;&quot;&gt;Per User/Per Token drill-down into API interactions.&lt;/span&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;Kick start your observability journey with &lt;a href=&quot;https://github.com/traefik-workshops/traefik-hub-gitops?ref=containous.ghost.io&quot;&gt;&lt;u&gt;our step-by-step tutorial&lt;/u&gt;&lt;/a&gt;, incorporating the Grafana sample dashboards and our static CRD analyzer for early issue detection, embracing a GitOps approach to modernize API operations. And for in-depth information, see &lt;a href=&quot;https://doc.traefik.io/traefik-hub/operations/telemetry/overview/?ref=containous.ghost.io&quot;&gt;&lt;u&gt;our documentation&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;h1 id=&quot;wrapping-it-up&quot;&gt;Wrapping It Up&lt;/h1&gt;&lt;p&gt;Metrics are a key pillar of modern API observability. OpenTelemetry, thanks to its standardized approach, stands as a game-changer, providing invaluable visibility into API health, usage, and performance. Looking ahead, Traefik Hub is committed to extending OpenTelemetry to traces and logs, promising even more complete observability.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;br /&gt;&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-149000733967&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:254.41665649414062px&quot; data-hubspot-wrapper-cta-id=&quot;149000733967&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLI6eqG0%2B7EwK4iN%2Bo2DS3EFiJzojQHXtySQO%2Fp5sKTHnaMIZVPEeHONFGlimo%2BVNqlIrUKTPtXFNT1NOnFXkGahMiQJvF0vs8%2FJZ8GG9JIBuRg%3D&amp;webInteractiveContentId=149000733967&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Webinar Header@2x(2)&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-149000733967.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;&lt;br /&gt;
&lt;!--kg-card-end: html--&gt;

&lt;!--kg-card-begin: html--&gt;
&lt;br /&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[API Versioning with Traefik Hub: Smooth Transitions, Seamless Innovation]]></title>
            <description><![CDATA[See why API versioning is important for businesses and how Traefik Hub does it differently to improve the experience for both API producers and consumers.]]></description>
            <link>https://traefik.io/api-versioning-with-traefik-hub</link>
            <guid isPermaLink="true">https://traefik.io/api-versioning-with-traefik-hub</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[Kubernetes]]></category>
            <category><![CDATA[Microservices]]></category>
            <category><![CDATA[Guides]]></category>
            <dc:creator><![CDATA[Immánuel Fodor]]></dc:creator>
            <pubDate>Mon, 20 Nov 2023 16:13:03 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/11/Blog_without_copies@2x.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/11/Blog_without_copies@2x.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/11/Blog_without_copies@2x.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/11/Blog_without_copies@2x.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/11/Blog_without_copies@2x.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;API versioning is a fundamental practice in software development that involves the creation and maintenance of distinct versions for an application programming interface (API). The primary objective is to safeguard the functionality of applications dependent on the API from disruptions caused by changes or updates.&amp;nbsp;&lt;/p&gt;&lt;p&gt;This practice is paramount for preserving backward compatibility, ensuring that applications using older API versions remain functional. Meanwhile, it facilitates the seamless integration with newer clients, allowing them to leverage the enhanced features of the updated API.&lt;/p&gt;&lt;p&gt;However, API versioning is not just a technical concern; it has direct implications for the success and growth of your business. It helps you maintain developer satisfaction, support diverse user needs, innovate, and manage risks effectively. By providing a reliable and consistent experience for API consumers, you can build a loyal user base, foster a thriving ecosystem, and ultimately drive business growth and revenue.&lt;/p&gt;&lt;p&gt;Before we dive into how Traefik Hub improves API versioning, let’s first take a look at why it’s important for both API producers and consumers.&lt;/p&gt;&lt;h2 id=&quot;the-importance-of-api-versioning&quot;&gt;The Importance of API Versioning&lt;/h2&gt;&lt;h3 id=&quot;for-api-producers&quot;&gt;For API Producers&lt;/h3&gt;&lt;p&gt;In the fast-paced world of API development, the challenge lies in innovating with velocity while avoiding disruptive changes. For API producers, the absence of a common language among different teams discussing changes can result in a lack of context, leading to errors as interpretations vary. Accelerating the development process may intensify these errors, while slowing down compromises the speed of launching new features. In this regard, API versioning is a crucial solution to strike a balance between innovation and resilience.&lt;/p&gt;&lt;h3 id=&quot;for-api-consumers&quot;&gt;For API Consumers&lt;/h3&gt;&lt;p&gt;On the consumer side, API versioning addresses the challenges of keeping pace with releases and changes that can lead to integration issues and potential disruptions. With a well-defined versioning strategy, API consumers are more informed and can adapt to new releases at their own pace. This not only keeps existing users satisfied but also attracts new users who seek a reliable and future-proof API.&lt;/p&gt;&lt;p&gt;Ultimately, API versioning acts as a form of insurance for both producers and consumers. It mitigates business risks by providing a controlled mechanism for introducing changes, minimizing the chances of costly outages and revenue loss. Additionally, adhering to versioning practices helps ensure compliance with legal and regulatory requirements, safeguarding the business against potential legal challenges and associated penalties.&lt;/p&gt;&lt;h2 id=&quot;how-traefik-hub-solves-api-versioning-challenges&quot;&gt;How Traefik Hub Solves API Versioning Challenges&lt;/h2&gt;&lt;p&gt;Traefik Hub transforms the API versioning landscape by providing a unified solution that caters to both API producers and consumers. For API producers, Traefik Hub offers a common actionable language, streamlining the understanding, expression, and management of change through innovative approaches like CRDs—a.k.a., Custom Resource Definitions—and GitOps. This empowers developer teamwork at scale and speed while minimizing risks of breaking changes.&lt;/p&gt;&lt;p&gt;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-137484371384&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:225px; margin-top:40px; margin-bottom:40px;&quot; data-hubspot-wrapper-cta-id=&quot;137484371384&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLUGouVjDQ1TZPj1Alo%2FbAWKrmuxqHoKACvBHTGPnblfF%2FjtuaJjxP9PVV3wyA8NtGOWchGhbCdHL0RSj2m6eQQlI5MI7%2B7uwEuv2zS7inGQNX8Axhiu1N%2FtMGLqdEjmPejPz9nB9prl3%2FeZk2cny1fD4eOsepufdXmCzQmAUg99KSasP4JUK%2Ben6DFPcOefrI%3D&amp;webInteractiveContentId=137484371384&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Hub-cta&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-137484371384.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;On the other side of the spectrum, Traefik Hub prioritizes the needs of API consumers by emphasizing ease of use and clarity. The platform introduces API Version CRDs coupled with internal semantic versioning and external flexible version matchers, offering consumers a straightforward way to comprehend and interact with APIs. This not only enhances the developer experience but also ensures that changes are clearly communicated and can be adopted without friction. Traefik Hub’s API Developer Portals expose all API versions clearly, promoting efficient information flow between API producers and consumers.&amp;nbsp;&lt;/p&gt;&lt;p&gt;In order to facilitate efficient communication and collaboration, CRDs are used to standardize changes. This common language ensures that everyone involved understands the modifications, reducing the risk of errors and misinterpretations. As a result, teams can move faster without sacrificing the quality and stability of the API. This aligns with the need for speed without compromising accuracy, enabling a smoother development process.&lt;/p&gt;&lt;h3 id=&quot;api-versioning-your-way&quot;&gt;API Versioning Your Way&lt;/h3&gt;&lt;p&gt;We believe in letting developers seize control, making their own choices. We don&apos;t impose a rigid versioning structure; we empower you to define the version matchers that suit your unique needs—also ensuring that versioned and unversioned APIs can coexist harmoniously.&lt;/p&gt;&lt;p&gt;Traefik Hub offers four API versioning methods, giving you the freedom and flexibility to choose the best approach for your particular situation:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Path-based (/v3)&lt;/strong&gt;: The traditional route for versioning, with a clear, user-friendly path to your API versions.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Query-based (?v=3)&lt;/strong&gt;: A versatile option that embeds the version directly into the API request, simplifying integration.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Media type-based (Accept/Content headers)&lt;/strong&gt;: This approach leverages headers, offering precise control over content negotiation and version selection.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Header-based (any custom header)&lt;/strong&gt;: The ultimate in customization, letting you set up your own headers to manage API versions.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;To provide the best possible product, we looked around on the market, and realized most other API management tools offer only a subset of these methods or even stick to just one, limiting you to follow the path they chose.&lt;/p&gt;&lt;h3 id=&quot;mix-and-match-versioning-methods&quot;&gt;Mix and Match Versioning Methods&lt;/h3&gt;&lt;p&gt;For Traefik Hub, it&apos;s not just about having multiple options. You can combine them in ways that make sense for your project. Traefik Hub provides the unique capability to mix and match these versioning methods with &lt;em&gt;AND/OR&lt;/em&gt; relations, giving you the power to craft the perfect strategy to meet your specific needs.&amp;nbsp;&lt;/p&gt;&lt;p&gt;Tired of using numbers for publishing versions? Use calendar dates, cheese names, or anything you like. We don’t limit you; it’s your API, it’s your API governance, and your versioning convention.&lt;/p&gt;&lt;h3 id=&quot;structured-flexibility&quot;&gt;Structured Flexibility&lt;/h3&gt;&lt;p&gt;Though the offered freedom is great, it shouldn’t sacrifice structure and maintainability. Traefik Hub uses &lt;a href=&quot;https://semver.org/?ref=containous.ghost.io&quot;&gt;semantic versioning&lt;/a&gt; internally to keep track of the version changes and to allow you to mark what is the current API version, what are the older ones, and what are future releases.&amp;nbsp;&lt;/p&gt;&lt;p&gt;This flexibility in interacting with your APIs on the request level paired with the structured internal representation allows you, your team, and your clients to always stay on top of the API version proliferation.&lt;/p&gt;&lt;p&gt;And in case you want to expose an always up-to-date version or a fallback version, a catch-all route can be marked for a versioned API, which still allows unversioned access to the underlying service. It can be beneficial to test the latest functionality or to provide a fallback version to clients that access the API without any version matcher (i.e., access a version without explicitly specifying the version anywhere in the request).&lt;/p&gt;&lt;h3 id=&quot;version-control-for-headers&quot;&gt;Version Control for Headers&lt;/h3&gt;&lt;p&gt;Finally, Traefik Hub’s API and API Version CRDs allow you to seamlessly alter regular and security headers on both APIs and API versions. Add, remove, and manipulate request and response headers on a per-version basis to fortify your API infrastructure.&lt;/p&gt;&lt;h2 id=&quot;use-case-traefik-airlines&quot;&gt;Use Case: Traefik Airlines&lt;/h2&gt;&lt;p&gt;Let’s take a look at Traefik Hub’s API versioning capabilities in action. Traefik Airlines, our fictitious company, is a modern airline company that offers a variety of digital services to its customers and partners. To meet the evolving needs while maintaining business stability, Traefik Airlines must implement a robust API versioning strategy. Let&apos;s explore how this can be achieved by using Traefik Hub API management.&lt;/p&gt;&lt;p&gt;Traefik Airlines provides a RESTful API for customers to book flights and manage reservations. Customers can retrieve real-time flight information such as schedules, delays, and gate changes. The API offers mobile check-in, boarding pass retrieval, and gate information. Customers can also interact with an API that manages loyalty points and rewards.&lt;/p&gt;&lt;p&gt;Additionally, third-party travel agencies integrate with Traefik Airlines to offer flight booking services to their customers. They also need to maintain integration with airport systems for baggage handling, gate allocation, and passenger tracking. Collaboration with payment providers is with the utmost importance to process transactions securely.&lt;/p&gt;&lt;p&gt;As we can see, there are many clients, many APIs and many developers supporting the company’s digital infrastructure. The demanding environment screams for using API versioning to satisfy all needs, provide business continuity and let the airline expand at the same time, deploying new API releases on a regular basis.&lt;/p&gt;&lt;h3 id=&quot;flexible-api-versioning-with-crds&quot;&gt;Flexible API Versioning with CRDs&lt;/h3&gt;&lt;p&gt;Let’s say, for example, that Traefik Airlines has already deployed Traefik Hub to their Kubernetes clusters running their microservices, and they are now ready to define APIs and API versions.&lt;/p&gt;&lt;p&gt;Let’s pick the Customer API as an example.&lt;/p&gt;&lt;pre&gt;&lt;code&gt;---
apiVersion: hub.traefik.io/v1alpha1
kind: API
metadata:
  name: customer-api
  namespace: apps
  labels:
    area: customers
    module: crm
spec:
  pathPrefix: &quot;/customers&quot;
  currentVersion: customer-api-version-one

---
apiVersion: hub.traefik.io/v1alpha1
kind: APIVersion
metadata:
  name: customer-api-version-one
  namespace: apps
spec:
  apiName: customer-api
  release: 1.0.0
  title: &quot;v1 with URI path&quot;
  routes:
    - pathPrefix: /v1
  stripPathPrefix: true
  service:
    name: customer-app-v1
    port:
      number: 3000
    openApiSpec:
      path: /openapi.yaml
      port:
        number: 3000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here they define the first version of the Customer API.&lt;/p&gt;&lt;p&gt;The &lt;strong&gt;API CRD&lt;/strong&gt; is labeled for later reference in an API developer portal providing documentation, API access policies to allow users API consumption, API gateways to publish it to the defined audience, API collections to create virtual API groups, or API rate limit policies to secure the backends from rouge clients or malicious actors. The CRD also defines a path prefix for the whole API containing all versions, and references the current version.&lt;/p&gt;&lt;p&gt;The &lt;strong&gt;API Version CRD&lt;/strong&gt; defines the first version of the API, internally versioned as &lt;code&gt;1.0.0&lt;/code&gt; and exposed as &lt;code&gt;/customers/v1&lt;/code&gt; in the URI path, from which the version is stripped when passing the request to the microservice exposing the API. Here, they could have used any text, date, or even a cheese name to publish the API. If they completely omitted the &lt;code&gt;routes&lt;/code&gt; block, the version would have become a catch-all route, accepting any unversioned traffic. The service also exposes an OpenAPI specification which will be attached to the API version on the developer portal.&lt;/p&gt;
&lt;p&gt;Let’s say they would have opted for another API versioning method. How could they implement it with the provided flexibility but still maintaining a clear structure?&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;routes:
    - queryParams:
        my-version-param: &quot;1&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In this case the API version is exposed at &lt;code&gt;/customers?my-version-param=1&lt;/code&gt;. Need to expose a version for another language, but the two should be applied at the same time?&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;routes:
    - queryParams:
        my-version-param: &quot;1&quot;
        lang: &quot;hu&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now the version is available at &lt;code&gt;/customers?my-version-param=1&amp;amp;lang=hu&lt;/code&gt;. Add as many parameters with any value as you like.&lt;/p&gt;
&lt;p&gt;Need to expose the same version with different methods? We’ve got you:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;routes:
    - queryParams:
        v: &quot;1&quot;
        lang: &quot;hu&quot;
    - headers:
        v: &quot;1&quot;
        lang: &quot;hu&quot;
    - headers:
        Content: &quot;application/vnd.example.v1+json&quot;
        lang: &quot;hu&quot;
    - pathPrefix: /v1
      queryParams:
        lang: &quot;hu&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now the version is available at the following ways:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Using query params at &lt;code&gt;/customers?v=1&amp;amp;lang=hu&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Using the custom headers &lt;code&gt;v: 1&lt;/code&gt; and &lt;code&gt;lang: hu&lt;/code&gt; at &lt;code&gt;/customers&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Using media-type type versioning with extending the standard content negotiating header &lt;code&gt;Content: &quot;application/vnd.example.v1+json&quot;&lt;/code&gt; and a custom &lt;code&gt;lang: &quot;hu&quot;&lt;/code&gt; at &lt;code&gt;/customers&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Using the path prefix and a query parameter at &lt;code&gt;/customers/v1?lang=hu&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;You can mix and match all these route options in an API version, both the CRD and the web user interface displays it in a structured, easy-to-digest manner.&lt;/p&gt;
&lt;p&gt;In case Traefik Airlines need to publish the 2nd version of the API, they deploy the new supporting service with the corresponding new OpenAPI specification, reference it in a new API Version CRD, and update the current version in the API CRD. And that’s it, the new version is published. The main changes to the first version are emphasized below:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
apiVersion: hub.traefik.io/v1alpha1
kind: API
metadata:
  name: customer-api
  namespace: apps
  labels:
    area: customers
    module: crm
spec:
  pathPrefix: &quot;/customers&quot;
  currentVersion: customer-api-version-two   # points to new version
  
---
apiVersion: hub.traefik.io/v1alpha1
kind: APIVersion
metadata:
  name: customer-api-version-two             # new version CRD
  namespace: apps
spec:
  apiName: customer-api
  release: 2.0.0                             # bumped internal version
  title: &quot;v2 with URI path&quot;                  # new title
  routes:
    - pathPrefix: /v2                        # new version matcher
  stripPathPrefix: true
  service:
    name: customer-app-v2                    # points to the new service
    port:
      number: 3000
    openApiSpec:
      path: /openapi.yaml
      port:
        number: 3000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;None of the configuration building on top of the API needs to be altered, the API access policies, rate limits, collections, etc. stay the same. Publishing the new version is propagated to the API gateway and the portal transparently. Now clients have a backward-compatible way to adapt to the new version without any service disruption to the existing consumer configuration.&lt;/p&gt;&lt;p&gt;You can find even more information about API versioning in &lt;a href=&quot;https://doc.traefik.io/traefik-hub/api-management/api-version?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;&lt;u&gt;our documentation&lt;/u&gt;&lt;/a&gt;.&lt;/p&gt;&lt;h2 id=&quot;wrapping-it-up&quot;&gt;Wrapping It Up&lt;/h2&gt;&lt;p&gt;In today&apos;s fast-paced software development landscape, API versioning is not just a technical necessity but a strategic imperative for a thriving and sustainable API ecosystem. As software development velocity accelerates, API versions provide stability, ensuring existing integrations remain intact with backward compatibility. While you evolve and improve your APIs, it gives your consumers a predictable environment to adopt innovations at their own pace.&lt;/p&gt;&lt;p&gt;Traefik Hub API management simplifies transitions, minimizes disruptions, and offers a smooth migration path for legacy APIs by extending rather than replacing non-versioned APIs, allowing coexistence. With this internal semantic versioning system and flexibility in versioning methodology, Traefik Hub accommodates diverse client needs and enhances the overall experience for both developers and clients.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;div class=&quot;hs-cta-embed hs-cta-simple-placeholder hs-cta-embed-137484371384&quot;
  style=&quot;max-width:100%; max-height:100%; width:810px;height:225px; margin-top:40px; margin-bottom:40px;&quot; data-hubspot-wrapper-cta-id=&quot;137484371384&quot;&gt;
  &lt;a href=&quot;https://cta-service-cms2.hubspot.com/web-interactives/public/v1/track/redirect?encryptedPayload=AVxigLLUGouVjDQ1TZPj1Alo%2FbAWKrmuxqHoKACvBHTGPnblfF%2FjtuaJjxP9PVV3wyA8NtGOWchGhbCdHL0RSj2m6eQQlI5MI7%2B7uwEuv2zS7inGQNX8Axhiu1N%2FtMGLqdEjmPejPz9nB9prl3%2FeZk2cny1fD4eOsepufdXmCzQmAUg99KSasP4JUK%2Ben6DFPcOefrI%3D&amp;webInteractiveContentId=137484371384&amp;portalId=5814022&amp;ref=containous.ghost.io&quot; target=&quot;_blank&quot; rel=&quot;noopener&quot; crossorigin=&quot;anonymous&quot;&gt;
    &lt;img alt=&quot;Hub-cta&quot; loading=&quot;lazy&quot; src=&quot;https://no-cache.hubspot.com/cta/default/5814022/interactive-137484371384.png&quot; style=&quot;height: 100%; width: 100%; object-fit: fill&quot;
      onerror=&quot;this.style.display=&apos;none&apos;&quot; /&gt;
  &lt;/a&gt;&lt;br /&gt;&lt;br /&gt;
&lt;/div&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[How to Install Traefik via Azure Marketplace]]></title>
            <description><![CDATA[This guide provides a simple and intuitive walkthrough on how to install Traefik Proxy and Traefik Enterprise through the Microsoft Azure Marketplace, granting you access to the many benefits of the Traefik product suite.]]></description>
            <link>https://traefik.io/how-to-install-traefik-via-azure-marketplace</link>
            <guid isPermaLink="true">https://traefik.io/how-to-install-traefik-via-azure-marketplace</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Kubernetes]]></category>
            <category><![CDATA[Microservices]]></category>
            <category><![CDATA[Ingress]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Nikolas Sachos]]></dc:creator>
            <pubDate>Mon, 26 Jun 2023 08:27:59 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/How-to-Install-Traefik-via-Azure-Marketplace.jpg&quot; class=&quot;kg-image&quot; alt=&quot;How to Install Traefik via Azure Marketplace&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/06/How-to-Install-Traefik-via-Azure-Marketplace.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/06/How-to-Install-Traefik-via-Azure-Marketplace.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/06/How-to-Install-Traefik-via-Azure-Marketplace.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/How-to-Install-Traefik-via-Azure-Marketplace.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;If you&apos;re a developer or DevOps engineer looking to integrate Traefik Proxy and Traefik Enterprise with Azure Kubernetes Service (AKS), you&apos;re in the right place! This guide provides a simple and intuitive walkthrough on how to install Traefik Proxy and Traefik Enterprise through the Microsoft Azure Marketplace, granting you access to the many benefits of the Traefik product suite.&lt;br&gt;Traefik is one of the preferred choices for running an Ingress Controller and API Gateway on Azure. Recommended by Microsoft in their &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/architecture/reference-architectures/containers/aks/baseline-aks?ref=containous.ghost.io&quot;&gt;baseline architecture&lt;/a&gt; for Azure Kubernetes Service (AKS), Traefik offers dynamic configuration, middleware support, and seamless compatibility with AKS workloads.&lt;/p&gt;&lt;h2 id=&quot;step-by-step-instructions-for-installing-traefik-proxy-via-azure-marketplace&quot;&gt;&lt;strong&gt;Step-by-Step Instructions for Installing Traefik Proxy via Azure Marketplace&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Before you get started, ensure that you have the following prerequisites:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;An active Azure subscription.&lt;/li&gt;&lt;li&gt;An existing Azure Kubernetes Service (AKS) cluster.&lt;/li&gt;&lt;li&gt;Helm installed on your local machine.&lt;/li&gt;&lt;li&gt;Azure CLI installed on your machine (for cluster access).&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;After ensuring you meet the necessary prerequisites, you can move forward with the installation process:&lt;/p&gt;&lt;p&gt;1. First, navigate to &lt;a href=&quot;https://portal.azure.com/?ref=containous.ghost.io#home&quot;&gt;Microsoft Azure Portal&lt;/a&gt;. Use the top search bar, search for &lt;strong&gt;Traefik Proxy&lt;/strong&gt;, and click on the correspondent link under the &lt;strong&gt;Marketplace&lt;/strong&gt; section.&lt;/p&gt;&lt;p&gt;2. Use the top search bar, search for &lt;strong&gt;Traefik Proxy&lt;/strong&gt;, and click on the correspondent link under the &lt;strong&gt;Marketplace&lt;/strong&gt; section.&lt;/p&gt;&lt;p&gt;3. Next, click the &lt;strong&gt;Basics&lt;/strong&gt; tab, and choose your &lt;strong&gt;Subscription&lt;/strong&gt;, &lt;strong&gt;Resource group,&lt;/strong&gt; and &lt;strong&gt;Instance details&lt;/strong&gt;.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-1.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1556&quot; height=&quot;1142&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/06/Screenshot-1.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/06/Screenshot-1.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-1.png 1556w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;4. Click on Cluster Details, and choose your AKS Cluster Name.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-2.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1558&quot; height=&quot;1126&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/06/Screenshot-2.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/06/Screenshot-2.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-2.png 1558w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;5. In the Cluster Extension Details tab, fill in your Cluster extension resource name by filling in a numeric 6 to a 30-character-long alphanumeric value.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-3.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1554&quot; height=&quot;994&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/06/Screenshot-3.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/06/Screenshot-3.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-3.png 1554w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Note: In the Cluster Extension Details tab, fill in your Cluster extension resource name by filling in a numeric 6 to a 30-character-long alphanumeric value.&lt;/p&gt;&lt;p&gt;6. Finally, on the &quot;Review + create tab&quot;, click the Create button at the bottom left of the page.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-4.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1556&quot; height=&quot;1130&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/06/Screenshot-4.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/06/Screenshot-4.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-4.png 1556w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;7. After completing the installation process, the following confirmation page will be displayed showing that the deployment is complete and one Traefik Proxy instance is running in your cluster.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-5.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1556&quot; height=&quot;1042&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/06/Screenshot-5.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/06/Screenshot-5.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-5.png 1556w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;To verify that the installation runs smoothly, we can list the pods in the Traefik namespace by running the command:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl get pods -n traefik
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The output verifying the Traefik pod is running as expected should be similar to:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;NAME                        	            READY   STATUS	RESTARTS      AGE
traefik-5dbc588874-bfbpv    1/1 	   Running            0      	  5m
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In order to get the Loadbalancer IP and verify that our services will be accessible from the outside world, we can list the Traefik services by executing the command:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl get services -n traefik
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Your output should show an External IP address similar to:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;NAME        TYPE               CLUSTER-IP      EXTERNAL-IP    PORT(S)          AGE
traefik     LoadBalancer   10.0.93.113        20.4.131.79	80:32159/TCP,443:32202/TCP   5m
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Your Traefik Proxy deployment is now active and operational. It&apos;s ready to accept connections on the Loadbalancer External-IP on ports 80 and 443.&lt;/p&gt;
&lt;p&gt;8. Once your Traefik installation is running smoothly, the next step is to set up your routing rules and test them. This can be achieved by using the IngressRoute CRD to define your routes, services, and ports. The code below demonstrates how a Service and an IngressRoute can be applied to a cluster with a single command:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;cat &amp;lt;&amp;lt;EOF | kubectl apply -f -
apiVersion: v1
kind: Namespace
metadata:
  name: apps
---
apiVersion: v1
kind: Service
metadata:
  name: my-service-name
  namespace: apps
spec:
  selector:
    app: my-app
  ports:
    - name: http
      protocol: TCP
      port: 3000
      targetPort: 3000
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: myIngressName
  namespace: apps
spec:
  entryPoints:
    - web
    - websecure
  routes:
    - kind: Rule
      match: Host(`example.com`)
      services:
        - name: my-service-name
          port: 3000
  tls:
certResolver: letsencrypt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Once you run the command above, the output will be&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;namespace/apps created
service/my-service-name created
ingressroute.traefik.containo.us/my-ingress created
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;and it will create a new namespace named  apps, create a service in that namespace, and set up the routing rules for incoming traffic to this service.&lt;/p&gt;
&lt;p&gt;9. Now you can configure access to the Traefik dashboard that will provide a visual insight into the health, performance, and routing configuration of your Traefik instance. To achieve this, we can use an IngressRoute CRD and define the appropriate metadata, entryPoints, and routes. Create a YAML file named dashboard-ingress.yaml, and paste the following content:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: traefik-dashboard
  namespace: traefik
spec:
  entryPoints:
	- web
	- websecure
  routes:
  - kind: Rule
	match: Host(`example.com`) &amp;amp;&amp;amp; (PathPrefix(`/api`) || PathPrefix(`/dashboard`))
	services:
	- name: api@internal
  	kind: TraefikService
  tls: {}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Do not forget to replace example.com with your preferred domain name.&lt;br&gt;
Now to create the routing rules, apply the file by executing the command:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl apply -f dashboard-ingress.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To confirm that the dashboard has been deployed, your output should be:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ingressroute.traefik.containo.us/traefik-dashboard created
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can access the dashboard at &lt;a href=&quot;https://example.com/dashboard/?ref=containous.ghost.io&quot;&gt;https://example.com/dashboard/&lt;/a&gt;. Below is a screenshot highlighting the various  HTTP, TCP, and UDP Routers, Services, and Middlewares running across a single cluster.&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-6.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;810&quot; height=&quot;1114&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/06/Screenshot-6.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-6.png 810w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;An interesting feature of the Dashboard is that when an error occurs in a Pod (referred to as &lt;strong&gt;Server &lt;/strong&gt;within the interface), then automatically, a part of the graph will become red, notifying you about the issue while also giving you the exact error message. &lt;/p&gt;&lt;p&gt;10. With our Dashboard operational, let’s now use the Traefik automated service discovery. This is a built-in feature that dynamically discovers and configures routes to services as they are created (or destroyed) in your environment. We can deploy a simple Go-based webserver application and verify the service discovery by watching the changes live on the Dashboard.&lt;br&gt;Go ahead, and create a file &lt;strong&gt;my-app.yaml&lt;/strong&gt;, and paste the code below:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: v1
kind: Namespace
metadata:
  name: my-namespace
---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: prod-rate-limit
  namespace: my-namespace
spec:
  rateLimit:
    average: 30
    burst: 50
---
apiVersion: v1
kind: Service
metadata:
  name: whoami
  namespace: my-namespace
spec:
  selector:
    app: whoami
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: whoami
  namespace: my-namespace
spec:
  replicas: 1
  selector:
    matchLabels:
      app: whoami
  template:
    metadata:
      labels:
        app: whoami
    spec:
      containers:
      - name: whoami
        image: traefik/whoami
        ports:
        - containerPort: 80
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: prod-route
  namespace: my-namespace
spec:
  entryPoints:
    - web
    - websecure
  routes:
    - kind: Rule
      match: Host(`example.com`)
      services:
        - name: whoami
          port: 80
      middlewares:
        - name: prod-rate-limit
  tls: {}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And apply the manifest by executing the command:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kubectl apply -f my-app.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Your output should look similar with:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;namespace/my-namespace created
middleware.traefik.containo.us/prod-rate-limit created
service/whoami created
deployment.apps/whoami created
ingressroute.traefik.containo.us/prod-route created
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The namespace, middleware, service, deployment, and ingress routes are now created, meaning your application is now deployed and ready to be used. After a few seconds, you will notice that your Dashboard interface displays &lt;strong&gt;two &lt;/strong&gt;new Routers, &lt;strong&gt;one &lt;/strong&gt;new Service, and &lt;strong&gt;one &lt;/strong&gt;new Middleware in the &lt;strong&gt;HTTP&lt;/strong&gt; section.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-7.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1636&quot; height=&quot;768&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/06/Screenshot-7.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/06/Screenshot-7.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/06/Screenshot-7.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-7.png 1636w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;By clicking on the &lt;strong&gt;Explore&lt;/strong&gt; link on the &lt;strong&gt;Services&lt;/strong&gt; box, you will see the new Service name &lt;strong&gt;my-namespace-prod-route-(randomid)@kubernetescrd&lt;/strong&gt;, with &lt;strong&gt;Type&lt;/strong&gt; loadbalancer having one &lt;strong&gt;Server&lt;/strong&gt; (the Nodejs pod) using the kubernetescrd &lt;strong&gt;Provider&lt;/strong&gt;. The randomid is a random string that Traefik produces internally to avoid possible conflicts.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-8.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1636&quot; height=&quot;674&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/06/Screenshot-8.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/06/Screenshot-8.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/06/Screenshot-8.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-8.png 1636w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;At this point, we have completed all necessary steps to enable our Traefik dashboard and deployed an example application to see its effects displayed live on the screen. This will conclude our installation guide, and from this point on, you may apply any other manifests like you normally would.&lt;/p&gt;&lt;p&gt;Now that we&apos;ve covered the installation process for Traefik Proxy via Azure Marketplace let&apos;s explore why you might want to consider &lt;strong&gt;Traefik Enterprise&lt;/strong&gt; for your AKS deployment. If you&apos;re running mission-critical applications in production, we strongly recommend considering Traefik Enterprise. Why? Traefik Enterprise offers a robust suite of features designed specifically to meet the demands of such important environments. It provides an array of advanced security measures, sophisticated traffic management capabilities, high availability, scalability, and comprehensive monitoring and troubleshooting tools.&lt;/p&gt;&lt;h2 id=&quot;why-choose-traefik-enterprise-for-your-aks-deployment&quot;&gt;&lt;strong&gt;Why Choose Traefik Enterprise for Your AKS Deployment?&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://traefik.io/traefik-enterprise/?ref=containous.ghost.io&quot;&gt;Traefik Enterprise&lt;/a&gt; is a robust and versatile API Gateway and Ingress solution designed to cater to the needs of enterprises. Its numerous features and benefits make it an ideal choice for Azure Kubernetes Service (AKS) deployments:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Security&lt;/strong&gt;: Traefik Enterprise offers security features such as IP Allow List, Access Control protocols support, and Distributed Let’s Encrypt. It separates responsibilities between two planes for enhanced security.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Traffic Management&lt;/strong&gt;: Traefik Enterprise provides dynamic configuration, service discovery, traffic mirroring, deployment strategies, health checks, rate limiting, and service mesh capabilities for advanced traffic management.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;High Availability&lt;/strong&gt;: Traefik Enterprise ensures continuous service availability with its fault-tolerant design. It runs natively in cluster mode, storing all cluster data, and works with AKS for seamless application scaling.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Scalability&lt;/strong&gt;: Traefik Enterprise scales with your applications and supports various deployment methods for easy replication across different environments.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Monitoring and Troubleshooting&lt;/strong&gt;: It offers a dashboard, proxy health checks, and support for tracing and real-time monitoring tools. Integrated with AKS, it helps understand traffic flow and service dependencies for efficient troubleshooting&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;step-by-step-instructions-for-installing-traefik-enterprise-via-azure-marketplace&quot;&gt;&lt;strong&gt;Step-by-Step Instructions for Installing Traefik Enterprise via Azure Marketplace&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;To get started with the installation of Traefik Enterprise in AKS, make sure you first request a &lt;a href=&quot;https://info.traefik.io/en/request-demo-traefik-enterprise?ref=containous.ghost.io&quot;&gt;Traefik Enterprise trial&lt;/a&gt;. &lt;/p&gt;&lt;p&gt;1. Visit &lt;a href=&quot;https://portal.azure.com/?ref=containous.ghost.io#home&quot;&gt;Microsoft Azure Portal&lt;/a&gt; and type &lt;strong&gt;Traefik Enterprise &lt;/strong&gt;in the top search bar. Then, click on the correspondent link under the &lt;strong&gt;Marketplace&lt;/strong&gt; section.&lt;/p&gt;&lt;p&gt;2. Click on the &lt;strong&gt;Basic&lt;/strong&gt; tab, then choose your &lt;strong&gt;Subscription&lt;/strong&gt;, &lt;strong&gt;Resource group&lt;/strong&gt;, and &lt;strong&gt;Instance details&lt;/strong&gt;.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-9.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1638&quot; height=&quot;1066&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/06/Screenshot-9.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/06/Screenshot-9.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/06/Screenshot-9.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-9.png 1638w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;3. In the Cluster details tab, choose your AKS Cluster name.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-10.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1636&quot; height=&quot;1062&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/06/Screenshot-10.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/06/Screenshot-10.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/06/Screenshot-10.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-10.png 1636w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;4. Next, in Cluster Extension details, choose your &lt;strong&gt;Cluster Extension Resource name&lt;/strong&gt;, and the number of &lt;strong&gt;Proxy&lt;/strong&gt; instances.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-11.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1632&quot; height=&quot;1064&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/06/Screenshot-11.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/06/Screenshot-11.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/06/Screenshot-11.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-11.png 1632w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;5.  By clicking on the &lt;strong&gt;Review + Create&lt;/strong&gt; tab, you will see the summary of your Traefik Enterprise installation on AKS. Next, click the &lt;strong&gt;Create&lt;/strong&gt; button.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-12.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1636&quot; height=&quot;1190&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/06/Screenshot-12.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/06/Screenshot-12.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/06/Screenshot-12.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-12.png 1636w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;6. After completing the installation process, the following confirmation page will be displayed showing that the deployment is complete and one Traefik Enterprise instance is running in your cluster.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-13.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1638&quot; height=&quot;1084&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/06/Screenshot-13.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/06/Screenshot-13.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/06/Screenshot-13.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-13.png 1638w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Now you can list Traefik Enterprise pods in traefikee namespace to verify that they are running, by executing the command:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl get pods -n traefikee
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Your output should list all running pods in traefikee namespace:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;NAME                         	          READY   STATUS    RESTARTS    AGE
default-controller-0        	            1/1 	 Running            0	       10m
default-plugin-registry-0   	            1/1 	 Running   	   0      	       10m
default-proxy-d4c5549fc-7sl4f       1/1  	 Running   	   0      	       10m
default-proxy-d4c5549fc-ftgnj        1/1 	 Running   	   0      	       10m
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Traefik’s services can be listed by executing the command:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl get services -n traefikee
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Your output should be very identical with the one below:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;NAME                                         TYPE        CLUSTER-IP   EXTERNAL-IP  PORT(S) AGE
default-ctrl-svc                       ClusterIP        None             &amp;lt;none&amp;gt;     	&amp;lt;none&amp;gt;   20m
default-plugin-registry-svc   ClusterIP  	 10.0.52.229  &amp;lt;none&amp;gt;          443/TCP 20m
default-proxy-svc         	LoadBalancer 10.0.15.250  20.4.133.168 80:30876/TCP,443:31247/TCP   20m
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The service default-proxy-svc was assigned an external IP by the provisioned Azure load balancer, and now can accept traffic in ports 80 and 443.&lt;/p&gt;
&lt;p&gt;7. Traefik Enterprise is now running, and the next step is to configure it. The configuration can be done using teectl, a comprehensive command-line tool designed to interact with Traefik Enterprise. Follow the &lt;a href=&quot;https://doc.traefik.io/traefik-enterprise/installing/teectl-cli/?ref=containous.ghost.io&quot;&gt;installation instructions&lt;/a&gt; in order to generate the controller configuration. This configuration is essential for Traefik Enterprise to handle incoming traffic, enable the Dashboard, and define certificate resolvers. The series of commands described below can be used to generate the necessary credentials to interact with your Kubernetes cluster using Traefik&apos;s teectl tool, and to configure teectl to use those credentials.&lt;br&gt;Continue by executing the following commands:&lt;/p&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl exec -n traefikee default-controller-0 -- /traefikee generate credentials --kubernetes.kubeconfig=/home/username/.kube/config --cluster=default &amp;gt; tee_config.yaml
teectl cluster import --file=tee_config.yaml
teectl cluster use --name=default
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Remember to replace username with your actual user.&lt;br&gt;
The output of the commands above will display your default pod that teectl interacts with, the cluster name, and the context namebe:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;Defaulted container &quot;default-controller&quot; out of: default-controller, wait-dns (init)
Cluster &quot;default&quot; imported
Cluster context has been set to &quot;default&quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;8. Now you must generate the static configuration. This is crucial because it sets up the foundational settings for your Traefik instance. The configuration will include the Providers, entryPoints, Dashboard enablement, and certificatesResolvers and is essential because it provides the foundational settings for your Traefik instance. The static configuration contains settings that define how Traefik will run and interact with your environment, and once set; these settings are not dynamically reloadable.&lt;/p&gt;&lt;p&gt;Create a file named static.yaml, and paste the following content:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;providers:
  kubernetesCRD: {}

entryPoints:
  web:
    address: &quot;:80&quot;
  websecure: 
    address: &quot;:443&quot;
  internal:
    address: &quot;:8888&quot;

api:
  dashboard: true

certificatesResolvers:
  letsencrypt:
    acme:
      email: your_email_address
      tlsChallenge: {}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Replace your_email_address with your email address.&lt;/p&gt;
&lt;ol start=&quot;9&quot;&gt;
&lt;li&gt;Now apply the static configuration by running:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;teectl apply –file=./static.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The command above does not produce an output, and at this step, you should have Traefik Enterprise correctly configured. The next step will involve creating the Ingress route for the Dashboard.&lt;br&gt;
Create a file called dashboard-ingress.yaml, and the content:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: traefik-dashboard
  namespace: traefikee
spec:
  entryPoints:
	- websecure
  routes:
  - kind: Rule
	match: Host(`example.com`) &amp;amp;&amp;amp; (PathPrefix(`/api`) || PathPrefix(`/dashboard`))
	services:
	- name: api@internal
  	kind: TraefikService
  tls:
	certResolver: letsencrypt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Replace example.com with your domain name.&lt;br&gt;
10. Create your routing rules by applying the file dashboard-ingress.yaml.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl apply -f dashboard-ingress.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The output below displays the  created ingressroute resource:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ingressroute.traefik.containo.us/traefik-dashboard created
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This means that your routing rules to the api@internal service are now applied.&lt;br&gt;
Visit the URL &lt;a href=&quot;https://example.com/dashboard/?ref=containous.ghost.io&quot;&gt;https://example.com/dashboard/&lt;/a&gt;. You will be able to access the dashboard.&lt;/p&gt;
&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-14.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1638&quot; height=&quot;714&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/06/Screenshot-14.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/06/Screenshot-14.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/06/Screenshot-14.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-14.png 1638w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Your Traefik’s Enterprise dashboard is now fully functioning!&lt;/p&gt;
&lt;ol start=&quot;13&quot;&gt;
&lt;li&gt;At this point, you can begin deploying your applications as you normally would. For instance, you can apply the following manifest that will create a namespace, service, deployment, and an IngressRoute, as seen below:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: v1
kind: Namespace
metadata:
  name: my-namespace
---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: prod-rate-limit
  namespace: my-namespace
spec:
  rateLimit:
    average: 30
    burst: 50
---
apiVersion: v1
kind: Service
metadata:
  name: whoami
  namespace: my-namespace
spec:
  selector:
    app: whoami
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 80
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: whoami
  namespace: my-namespace
spec:
  replicas: 1
  selector:
    matchLabels:
      app: whoami
  template:
    metadata:
      labels:
        app: whoami
    spec:
      containers:
      - name: whoami
        image: traefik/whoami
        ports:
        - containerPort: 80
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: prod-route
  namespace: my-namespace
spec:
  entryPoints:
    - web
    - websecure
  routes:
    - kind: Rule
      match: Host(`example.com`)
      services:
        - name: whoami
          port: 80
      middlewares:
        - name: prod-rate-limit
  tls:
    certResolver: letsencrypt
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Replace example.com with the domain name of your choice. In the example code above, we used the image traefik/whoami, which is a tiny Go webserver that prints OS information and HTTP requests to output. So When you visit &lt;a href=&quot;https://your-domain.com/?ref=containous.ghost.io&quot;&gt;https://your-domain.com&lt;/a&gt;, you will see such information displayed on your screen.&lt;br&gt;
This last step has our deployment guide completed.&lt;/p&gt;
&lt;h2 id=&quot;enhancing-your-setup-for-api-management-on-top-of-traefik-proxy-or-traefik-enterprise&quot;&gt;Enhancing Your Setup for API Management on Top of Traefik Proxy or Traefik Enterprise&lt;/h2&gt;&lt;p&gt;Once you have deployed Traefik Proxy or Traefik Enterprise on AKS, you might consider enhancing your setup with &lt;strong&gt;Traefik Hub&lt;/strong&gt;. &lt;a href=&quot;https://traefik.io/traefik-hub/?ref=containous.ghost.io&quot;&gt;Traefik Hub&lt;/a&gt; is a Kubernetes-native API management platform that integrates seamlessly with Traefik Proxy and Traefik Enterprise, offering a streamlined solution for publishing, securing, and managing APIs.To get started with Traefik Hub, you can request a free trial &lt;a href=&quot;https://info.traefik.io/traefik-hub-signup?ref=containous.ghost.io&quot;&gt;here&lt;/a&gt;. You&apos;ll be able to deploy the Traefik Hub Agent in your Kubernetes cluster, following the guidelines provided in the &lt;a href=&quot;https://doc.traefik.io/traefik-hub/tutorials/install-agent/?ref=containous.ghost.io&quot;&gt;official documentation&lt;/a&gt;. Traefik Hub offers a dashboard and onboarding steps making it easy to get started as demonstrated below.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-15.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1310&quot; height=&quot;1108&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/06/Screenshot-15.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/06/Screenshot-15.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Screenshot-15.png 1310w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;wrapping-it-up&quot;&gt;Wrapping it Up&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://traefik.io/traefik/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Traefik Proxy&lt;/a&gt;, &lt;a href=&quot;https://traefik.io/traefik-enterprise/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Traefik Enterprise&lt;/a&gt;, and &lt;a href=&quot;https://traefik.io/traefik-hub/?ref=containous.ghost.io&quot; rel=&quot;noreferrer&quot;&gt;Traefik Hub&lt;/a&gt; provide enhanced connectivity and API management for AKS environments. Offering advanced security, traffic management, scalability, and monitoring, they help developers and enterprises streamline their application publishing and security. By following our installation guides and Traefik Hub introduction, you can easily tap into these additional features to optimize your AKS setup.&lt;/p&gt;&lt;p&gt;Interested in getting started with Traefik in AKS? &lt;a href=&quot;https://info.traefik.io/en/request-demo-traefik-enterprise?ref=containous.ghost.io&quot;&gt;Schedule a personalized demo&lt;/a&gt; of Traefik Enterprise with us. We&apos;ll guide you through its main features and demonstrate how it can fit into your specific AKS use case.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;post-cta-inline data-slug=&quot;traefik-hub-trial&quot; data-variant=&quot;large-no-image&quot;&gt;&lt;/post-cta-inline&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Harnessing the Power of Kubernetes-native API Management with Traefik Hub and Rancher Prime]]></title>
            <description><![CDATA[Traefik Hub and Rancher Prime offer a compelling value proposition for organizations looking to streamline their API management and Kubernetes operations. ]]></description>
            <link>https://traefik.io/harnessing-the-power-of-kubernetes-native-api-management-with-traefik-hub-and-rancher-prime</link>
            <guid isPermaLink="true">https://traefik.io/harnessing-the-power-of-kubernetes-native-api-management-with-traefik-hub-and-rancher-prime</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Kubernetes]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[Guides]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Erwan Paccard]]></dc:creator>
            <pubDate>Fri, 16 Jun 2023 13:32:34 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Traefik-Hub---Rancher-Prime.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Leveraging K8s API Management with Traefik Hub + Rancher Prime&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/06/Traefik-Hub---Rancher-Prime.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/06/Traefik-Hub---Rancher-Prime.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/06/Traefik-Hub---Rancher-Prime.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Traefik-Hub---Rancher-Prime.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;As digital transformation accelerates at an unprecedented pace, several design patterns and architectural choices have emerged to keep up with the rapid change. Microservices, multi-cloud deployments, Kubernetes, and APIs are not just buzzwords; they are critical components of the contemporary digital landscape, driving business agility, application agility, digitization, and B2B value creation.&lt;/p&gt;&lt;p&gt;The surge in digital services has led to a scenario where API requests comprise over 80% of all traffic types and continue to grow, with 90% of digital services being built using public &amp;amp; internal API-delivered services. APIs, therefore, form a critical component of digital transformation, and participating in the API economy has become a top priority for most organizations.&lt;/p&gt;&lt;p&gt;Amid this backdrop, today we’re going to explore the joint value proposition of Traefik Hub and Rancher Prime, two powerful tools that, when combined, can supercharge your digital transformation journey.&lt;/p&gt;&lt;h2 id=&quot;embracing-kubernetes-native-api-management&quot;&gt;Embracing Kubernetes-native API Management&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;&lt;a href=&quot;https://traefik.io/traefik-hub/?ref=containous.ghost.io&quot;&gt;Traefik Hub&lt;/a&gt;&lt;/strong&gt; is the industry’s first Kubernetes-native API management solution. It extends the Kubernetes capabilities with API Management through CRDs, seamlessly integrates with its API, enabling automatic discovery of services, and delivers Kubernetes native ways to publish and manage APIs. This provides a significant operational advantage over proprietary solutions that are not Kubernetes-native. Traefik Hub Kubernetes-native approach based solely on CRDs unlocks operational excellence with scalable and highly available deployments, a full GitOps compliance for powerful automation with tools like Helm, Terraform, and ArgoCD for repeatability and auditability. It also eliminates vendor lock-in by supporting any Kubernetes distribution and ingress controller and offers a lightweight, portable, and efficient solution with separate control and data planes.&lt;/p&gt;&lt;h2 id=&quot;ensuring-high-availability-security&quot;&gt;Ensuring High Availability &amp;amp; Security&lt;/h2&gt;&lt;p&gt;Coupling Traefik Hub with &lt;strong&gt;&lt;a href=&quot;https://www.rancher.com/products/rancher?ref=containous.ghost.io&quot;&gt;Rancher Prime&lt;/a&gt;&lt;/strong&gt;, the leading Kubernetes management platform ensures high availability with built-in HA with replicas. This redundancy is a fundamental component of high availability, as it ensures that even if one node goes down, the service remains accessible. The Traefik Hub platform, as part of its core offering, allows for easy and automatic configuration of service replicas. Therefore, if one instance faces an issue, another can seamlessly take over, reducing downtime and maintaining service reliability.&lt;/p&gt;&lt;p&gt;Traefik Hub and Rancher Prime also help users extend security with seamless third-party integrations. Rancher Prime provides comprehensive security features including RBAC, SSO, AD/LDAP integrations, and secrets management. Combined with Traefik Hub’s built-in high availability and security features, you get a secure, robust, and reliable application deployment pipeline.&lt;/p&gt;&lt;h2 id=&quot;cicd-compliance&quot;&gt;CI/CD Compliance&lt;/h2&gt;&lt;p&gt;The combination of Traefik Hub and Rancher Prime provides a powerful toolset for those embracing the GitOps model and continuous integration/continuous deployment (CI/CD) methodologies. They offer a streamlined workflow that seamlessly integrates with your CI/CD pipeline, making it an ideal solution for DevOps teams. Rancher Prime provides built-in CI/CD pipelines that can be configured to trigger deployments based on changes to a Git repository. Rancher Prime’s multi-cluster management capabilities allow CI/CD pipelines to deploy applications across multiple Kubernetes clusters. This feature is particularly beneficial in a multi-cloud or hybrid-cloud environment. With Traefik Hub providing API management across these clusters, you get a unified, efficient, and scalable deployment process.&lt;/p&gt;&lt;p&gt;Custom Resource Definitions (CRDs) in Kubernetes provide a way to define custom resources with your own API types, extending the Kubernetes API. Traefik Hub, being a Kubernetes-native solution, treats CRDs as first-class citizens. This means that it provides native support for CRDs, allowing developers to create and manage custom resources easily.&lt;/p&gt;&lt;h2 id=&quot;deploy-anywhere-with-any-ingress-controller&quot;&gt;Deploy Anywhere, with Any Ingress Controller&lt;/h2&gt;&lt;p&gt;The Traefik Hub and Rancher Prime solution supports any deployment environment and any ingress controller. This flexibility is crucial for organizations looking to deploy APIs across diverse environments, including on-premises, hybrid cloud, multi-cloud, and edge deployments.&lt;/p&gt;&lt;h2 id=&quot;modern-lightweight-and-open-architecture&quot;&gt;Modern, lightweight, and open architecture&lt;/h2&gt;&lt;p&gt;Traefik Hub and Rancher Prime boast a modern, lightweight, and open architecture. They unlock and unleash the full potential of Kubernetes for API Management. They are lightweight, so they won’t weigh down your systems, but they are feature-packed to keep your operations running smoothly. Their open architecture speaks the language of Kubernetes, making integration a breeze. And because they are modern, they are constantly evolving to meet the ever-changing demands of the DevOps world.&lt;/p&gt;&lt;h2 id=&quot;embracing-edge-computing&quot;&gt;Embracing Edge Computing&lt;/h2&gt;&lt;p&gt;Edge computing, another significant trend, is fueling new edge applications and creating infinite possibilities. The broad spectrum of edge use cases can be divided into the Near Edge, Far Edge, and Tiny Edge (autonomous vehicles, industrial robotics, drones/UAV, smart grid), with each having specific requirements in terms of devices and proximity to data centers or users.&lt;/p&gt;&lt;p&gt;As applications move to the edge, so do APIs. Specialized Edge APIs are emerging with the same drivers around business value and time. Traefik Hub, Rancher Prime, &lt;a href=&quot;https://docs.rke2.io/?ref=containous.ghost.io&quot;&gt;&lt;strong&gt;RKE2&lt;/strong&gt;&lt;/a&gt;, and &lt;a href=&quot;https://k3s.io/?ref=containous.ghost.io&quot;&gt;&lt;strong&gt;K3s&lt;/strong&gt;&lt;/a&gt; are well-positioned to cater to these needs due to their flexible deployment capabilities, GitOps compliance, and support for any ingress controller.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Traefik-Labs---Suse-Rancher-Prime-Architecture-Diagram.png&quot; class=&quot;kg-image&quot; alt=&quot;Architecture diagram Rancher Prime + Traefik Hub&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1500&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/06/Traefik-Labs---Suse-Rancher-Prime-Architecture-Diagram.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/06/Traefik-Labs---Suse-Rancher-Prime-Architecture-Diagram.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/06/Traefik-Labs---Suse-Rancher-Prime-Architecture-Diagram.png 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Traefik-Labs---Suse-Rancher-Prime-Architecture-Diagram.png 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;Architecture diagram Rancher Prime + Traefik Hub&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;In conclusion, Traefik Hub and Rancher Prime offer a compelling value proposition for organizations looking to streamline their API management and Kubernetes operations. By embracing these tools, you can not only keep pace with the accelerating digital transformation but also lead, compete, and thrive in the digital economy. The future of API management is Kubernetes-native, flexible, and secure, with full CI/CD compliance. Embrace this future with Traefik Hub and Rancher Prime, and unlock the full potential of your digital transformation journey.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Traefik Labs&lt;/strong&gt; is excited to announce our sponsorship of &lt;strong&gt;&lt;a href=&quot;https://www.suse.com/susecon/?ref=containous.ghost.io&quot;&gt;SUSECON 2023&lt;/a&gt;&lt;/strong&gt;. We invite everyone to join us at the conference, in person in Munich or online, from June 20th to June 22nd. From Traefik Labs, Sudeep Goswami, Chief Revenue Officer, and Maytham Alfouadi, Solutions Architect will be presenting &quot;&lt;a href=&quot;https://www.suse.com/susecon/sessions/?search=kubernetes%20native%20api%20management&amp;ref=containous.ghost.io#/&quot;&gt;Kubernetes-native API management at the K3s edge: The GitOps way&lt;/a&gt;&quot; on Thursday, June 22 at 9 am CEST. &lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://www.suse.com/susecon/?ref=containous.ghost.io&quot;&gt;Join us&lt;/a&gt; to learn about the latest developments in open source technology and API management strategies. We look forward to seeing you there!&lt;/p&gt;&lt;!--kg-card-begin: html--&gt;&lt;post-cta-inline data-slug=&quot;traefik-hub-trial&quot; data-variant=&quot;large-no-image&quot;&gt;&lt;/post-cta-inline&gt;&lt;!--kg-card-end: html--&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Kubernetes CRDs in Traefik: Overcoming the Limitations of Kubernetes Standardized Objects with Custom Resource Definitions]]></title>
            <description><![CDATA[In the context of Ingress Management, we’ll walk through the standardized objects, use them with Traefik, understand their limitations, and show how to overcome them using Traefik CRDs]]></description>
            <link>https://traefik.io/kubernetes-crds-in-traefik</link>
            <guid isPermaLink="true">https://traefik.io/kubernetes-crds-in-traefik</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Kubernetes]]></category>
            <category><![CDATA[Ingress]]></category>
            <category><![CDATA[Guides]]></category>
            <dc:creator><![CDATA[Nikolas Sachos]]></dc:creator>
            <pubDate>Tue, 06 Jun 2023 14:48:46 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Kubernetes-CRDs-in-Traefik.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Kubernetes CRDs in Traefik&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/06/Kubernetes-CRDs-in-Traefik.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/06/Kubernetes-CRDs-in-Traefik.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/06/Kubernetes-CRDs-in-Traefik.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/Kubernetes-CRDs-in-Traefik.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p class=&quot;post-sub-title&quot;&gt;While Kubernetes provides built-in API objects and resources, the Kubernetes API can be extended to any object you like using Custom Resource Definitions (CRDs). This allows you to capture the subtleties of your use case and tap into the flexibility Kubernetes offers.
&lt;/p&gt;&lt;!--kg-card-end: markdown--&gt;&lt;p&gt;As container orchestration continues to gain traction, Kubernetes has become a (if not the) standard for Developers and DevOps engineers: they’re now used to declaring the desired state of their system instead of manually deploying software all over the world.&lt;/p&gt;&lt;p&gt;But how does one declare this desired state? And what if Kubernetes doesn’t fully capture the subtleties of your use case and you need to be a bit more descriptive than what it is aware of?&lt;/p&gt;&lt;p&gt;The goal of this post is to answer this very question. In the context of Ingress Management (how your cluster accepts and reacts to incoming requests), we’ll walk you through the standardized objects, use them with Traefik, understand their limitations, and show you how to overcome them. (Spoiler, we’ll use &lt;a href=&quot;https://doc.traefik.io/traefik/providers/kubernetes-crd/?ref=containous.ghost.io&quot;&gt;&lt;strong&gt;Traefik CRDs&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt;.&lt;/strong&gt;)&lt;/p&gt;&lt;h2 id=&quot;understanding-kubernetes-objects&quot;&gt;Understanding Kubernetes Objects&lt;/h2&gt;&lt;p&gt;In a world where APIs are more and more prevalent, it’s no wonder that Kubernetes introduced a way to describe how your cluster must handle incoming requests: the Ingress object.&lt;/p&gt;&lt;p&gt;But if you look at the bigger picture, other objects are involved in the process, let’s see which ones:&lt;/p&gt;&lt;ol&gt;&lt;li&gt;&lt;strong&gt;Ingress&lt;/strong&gt;: As we just said, Ingresses manage external access to services within a cluster. You’ll describe HTTP/HTTPS request patterns and which services are responsible for handling these.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Pods&lt;/strong&gt;: The smallest Kubernetes unit, and most of the time a single container (could be more). You can see a Pod as a running instance (replica) of your application.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Services&lt;/strong&gt;: Because Kubernetes decides where it deploys a Pod, and because it might kill and respawn a Pod based on the health, workload, and lifecycle of the whole system, each Pod has its own ephemeral ID. Services are a construct that provides a stable logical name for accessing the Pods.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Deployments:&lt;/strong&gt; Deployments are where you tell Kubernetes what containers you want to run in your Pods, and how many replicas you want it to run. There’s of course more to say, but for the sake of our tour, this is enough.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;ConfigMaps&lt;/strong&gt;: ConfigMaps store non-sensitive, configuration-related data as key-value pairs. They allow you to decouple configuration data from container images, making managing and updating your applications easier.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Secrets&lt;/strong&gt;: Similar to ConfigMaps, Secrets store sensitive data such as passwords, tokens, and keys. They help protect sensitive information by allowing access control and keeping it separate from your container images and application code.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;Each object serves a specific purpose and contributes to the overall architecture, but if you have a good understanding of the above concepts, you can already take full advantage of Kubernetes’ powerful features and create robust and scalable applications.&lt;/p&gt;&lt;h2 id=&quot;using-kubernetes-ingress-object-with-traefik&quot;&gt;Using Kubernetes Ingress Object with Traefik&lt;/h2&gt;&lt;p&gt;So if the &lt;strong&gt;Kubernetes Ingress Object&lt;/strong&gt; describes the external access to your services, what handles it? The answer is the Ingress Controller, and Traefik is one of them (and we like to believe one of the best).&lt;/p&gt;&lt;p&gt;When you run Traefik on your K8S cluster, it reads the Ingress objects to understand the routing you want to achieve, then routes accordingly. It’s as simple as that.&lt;/p&gt;&lt;h3 id=&quot;basic-example-tls-and-two-paths&quot;&gt;&lt;strong&gt;Basic Example: TLS and Two Paths&lt;/strong&gt;&lt;/h3&gt;&lt;figure class=&quot;kg-card kg-image-card kg-card-hascaption&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/TLS-and-Two-Paths.jpg&quot; class=&quot;kg-image&quot; alt loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1100&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/06/TLS-and-Two-Paths.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/06/TLS-and-Two-Paths.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/06/TLS-and-Two-Paths.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/06/TLS-and-Two-Paths.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;figcaption&gt;&lt;strong&gt;Basic Example: TLS and Two Paths&lt;/strong&gt;&lt;/figcaption&gt;&lt;/figure&gt;&lt;p&gt;Let’s define two different paths (/foo, /bar), routing to two different services (foo-service, bar-service).&lt;/p&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: IngressFooBar
  namespace: production
annotations:
   kubernetes.io/ingress.class: traefik
spec:
  tls:
  - hosts:
    - example.com
    secretName: example-tls-secret
  rules:
    - host: example.com
      http:
        paths:
          - path: /foo
            pathType: Exact
            backend:
              service:
                name: foo-service
                port:
                  number: 80
          - path: /bar
            pathType: Exact
            backend:
              service:
                name: bar-service
                port:
                  number: 80
&lt;/code&gt;&lt;/pre&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;p&gt;In the above example, you can see the &lt;strong&gt;Ingress resource&lt;/strong&gt; with a specific host (example.com) and two paths. The first path, &lt;strong&gt;/foo&lt;/strong&gt;, routes traffic to the backend service &lt;strong&gt;foo-service&lt;/strong&gt;. The second path &lt;strong&gt;/bar&lt;/strong&gt; routes traffic to the backend service &lt;strong&gt;bar-service.&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;Apart from the obvious, both services are listening on port &lt;strong&gt;80&lt;/strong&gt;. Additionally, the &lt;strong&gt;tls &lt;/strong&gt;section specifies that TLS should be used for the host &lt;strong&gt;example.com&lt;/strong&gt; and that the TLS certificate and private key are stored in a Secret named &lt;strong&gt;example-tls-secre&lt;/strong&gt;t.&lt;/p&gt;&lt;p&gt;To create this secret, you can run the command:&lt;/p&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl create secret tls example-tls-secret --cert=path/to/tls.cert --key=path/to/tls.key -n production
&lt;/code&gt;&lt;/pre&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;p&gt;When you have simple needs, you need a simple solution, and we saw that Traefik is an excellent fit in that scenario. Traefik is fully compatible with the Ingress specification and will handle any request you can describe using that standard.&lt;/p&gt;&lt;h2 id=&quot;limitations-of-kubernetes-ingress&quot;&gt;&lt;strong&gt;Limitations of Kubernetes Ingress&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;The premise of the Ingress object was to define a standard capable of expressing every routing need the user would face. Then, users would pick their Ingress Controller of choice. Unfortunately (or fortunately), there is more to routing than just paths, and chances are your ingress controller of choice can do (much) more than path-based routing, which is especially true if you’re used to full-featured solutions like Traefik. &lt;/p&gt;&lt;p&gt;These limitations include:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Limited Routing Rules&lt;/strong&gt;:  As we said, the Ingress object, while offering basic routing rules based on the request host and path, falls short in providing advanced routing capabilities such as header-based routing or traffic splitting.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;HTTP Only&lt;/strong&gt;: The primary function of the Ingress object is to route HTTP and HTTPS traffic. Support for other protocols, such as TCP and UDP, simply doesn’t exist.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Limited to routing&lt;/strong&gt;: the Ingress object does not include features that play along well with your ingress controller, like tracing, logging, rate limiting, circuit breakers, or many other use cases.&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;annotations-to-the-rescue&quot;&gt;Annotations to the rescue&lt;/h2&gt;&lt;p&gt;To support these extra features, Ingress Controller vendors started to leverage the annotation system in Kubernetes, where one can add any text information and attach it to the Ingress object. Unfortunately, no standard has emerged for these annotations, and these annotations themselves are limited:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;No validation&lt;/strong&gt;: Because the annotations are “free text”, there is no safety net for users so that they can avoid typos or syntax errors while describing advanced features they want to attach.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;No standard&lt;/strong&gt;: Each vendor has their own set of features and options, defeating the purpose of having a standard in the first place.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Too broad&lt;/strong&gt;: Because annotations are attached to the Ingress itself, it’s difficult to describe a feature on a finer-grained level (e.g., the path or the service).&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;introducing-traefik-kubernetes-crd-a-better-alternative&quot;&gt;&lt;strong&gt;Introducing Traefik Kubernetes CRD: A better alternative&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;So you chose Traefik for a reason, and that reason is you want to leverage every feature it has to offer.&lt;/p&gt;&lt;p&gt;Since annotations already force you to add specific configuration instructions that break the premise of compatibility with other ingress controllers and don’t overcome every limitation, you need a better alternative.&lt;/p&gt;&lt;p&gt;This is where CRDs (Custom Resource Definitions) come into play.&lt;/p&gt;&lt;p&gt;Not only Kubernetes has built-in objects, it also allows you to define your own, extending its description capabilities.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://doc.traefik.io/traefik/reference/dynamic-configuration/kubernetes-crd/?ref=containous.ghost.io&quot;&gt;Traefik Kubernetes CRD&lt;/a&gt; (Custom Resource Definition) is a powerful tool that overcomes the Ingress specification limitation and allows for more options on top of providing a clear structure, for example:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;IngressRoute&lt;/strong&gt;: This is the extended equivalent of the Ingress object. It adds support for various options, such as load balancing algorithms.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Middleware&lt;/strong&gt;: Middleware are a concept that you can mix and match for everything that goes beyond routing, whether it’s Access Control, header updates, circuit breakers, path manipulation, error control, redirection, and &lt;a href=&quot;https://doc.traefik.io/traefik/middlewares/http/overview/?ref=containous.ghost.io&quot;&gt;many others&lt;/a&gt;.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;TraefikService&lt;/strong&gt;: Provides an abstraction for HTTP load balancing and mirroring. It allows you to define how traffic should be distributed among multiple services in your cluster.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;IngressRouteTCP &amp;amp; MiddlewareTCP&lt;/strong&gt;: As their name implies, they allow you to define TCP routes and tweak the request in the process.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;IngressRouteUDP&lt;/strong&gt;: Once again, adding support for a different protocol, this time UDP.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;TLSOptions&lt;/strong&gt;: To fine-tune TLS connection parameters such as the minimum TLS version and the cipher suites that should be used.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;ServersTransport&lt;/strong&gt;: To tweak communication between Traefik and the services. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;To read more details about these CRDs, visit &lt;a href=&quot;https://doc.traefik.io/traefik/routing/providers/kubernetes-crd/?ref=containous.ghost.io&quot;&gt;Traefik CRDs&lt;/a&gt; documentation.&lt;/p&gt;&lt;h2 id=&quot;example-achieving-rate-limiting-with-traefik-crds&quot;&gt;Example: Achieving Rate Limiting with Traefik CRDs&lt;/h2&gt;&lt;p&gt;Now that we know what Traefik CRDs are, let’s leverage them to add &lt;a href=&quot;https://traefik.io/glossary/rate-limiting-what-it-is-and-why-it-matters/?ref=containous.ghost.io&quot;&gt;rate limiting&lt;/a&gt; to our example, setting up a rate limit of &lt;strong&gt;30&lt;/strong&gt; average requests per second with a burst of &lt;strong&gt;50&lt;/strong&gt; for a &lt;strong&gt;nodejs service&lt;/strong&gt;, accessible through the &lt;strong&gt;example.com&lt;/strong&gt; host.&lt;/p&gt;&lt;p&gt;In the process, we’ll also ask Traefik to automatically handle certificate generation using Let’s Encrypt, that is is a free, automated, and open Certificate Authority (CA) that provides digital certificates required for HTTPS.&lt;/p&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: v1
kind: Namespace
metadata:
  name: nodejs
---
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: prod-rate-limit
  namespace: nodejs
spec:
  rateLimit:
    average: 30
    burst: 50
---
apiVersion: v1
kind: Service
metadata:
  name: nodejs
  namespace: nodejs
spec:
  selector:
    app: nodejs
  ports:
    - name: http
      protocol: TCP
      port: 80
      targetPort: 3000
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nodejs-deployment
  namespace: nodejs
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nodejs
  template:
    metadata:
      labels:
        app: nodejs
    spec:
      containers:
      - name: nodejs
        image: admintuts/expressjs-hello-world:latest
        ports:
        - containerPort: 3000
---
apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: prod-route
  namespace: nodejs
spec:
  entryPoints:
    - web
    - websecure
  routes:
    - kind: Rule
      match: Host(`example.com`)
      services:
        - name: nodejs
          port: 80
      middlewares:
        - name: prod-rate-limit
  tls:
    certResolver: letsencrypt
&lt;/code&gt;&lt;/pre&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;p&gt;To apply this configuration, save the above content into a YAML in a file, say &lt;strong&gt;nodejs-rate-limit.yaml&lt;/strong&gt;, and apply it to your Kubernetes cluster with the following command:&lt;/p&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;kubectl apply -f nodejs-rate-limit.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The command output will be:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;middleware.traefik.containo.us/prod-rate-limit created
service/nodejs created
deployment.apps/nodejs-deployment created
ingressroute.traefik.containo.us/prod-route created
&lt;/code&gt;&lt;/pre&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;p&gt;This will create the resources in your cluster, and a &lt;strong&gt;nodejs &lt;/strong&gt;service will be subject to the rate limit rules defined by the &lt;strong&gt;prod-rate-limit&lt;/strong&gt; middleware. Now you can test your setup, and you should observe that any requests beyond that limit are appropriately throttled.&lt;/p&gt;&lt;h2 id=&quot;bonus-testing-traefik-rate-limiting&quot;&gt;&lt;strong&gt;Bonus: Testing Traefik Rate Limiting&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;To validate the rate limiting abilities of the configuration we applied above, we can use the &lt;a href=&quot;https://github.com/rakyll/hey?ref=containous.ghost.io&quot;&gt;&lt;strong&gt;hey&lt;/strong&gt;&lt;/a&gt;&lt;strong&gt; &lt;/strong&gt;tool, a popular HTTP benchmarking and load-testing utility. With &lt;strong&gt;hey&lt;/strong&gt;, we can simulate multiple concurrent requests and observe how Traefik enforces the rate limits we have set. Assuming you have &lt;strong&gt;hey &lt;/strong&gt;installed, let&apos;s run a test with the following command:&lt;/p&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;hey -n 100 -c 10 -q 10 http://example.com
&lt;/code&gt;&lt;/pre&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;p&gt;Command output:&lt;/p&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;[...]
Status code distribution:
 [200]    75 responses
 [429]    25 responses
&lt;/code&gt;&lt;/pre&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;p&gt;As you can see above, from our 100 requests made to the host, 25 requests were throttled, effectively proving that our rate limiting strategy is working as expected.&lt;/p&gt;&lt;p&gt;Let&apos;s break down the parameters used in the &lt;strong&gt;hey&lt;/strong&gt; command:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;-&lt;strong&gt;n 100&lt;/strong&gt;: Specifies the total number of requests to be made, in this case, 100.&lt;/li&gt;&lt;li&gt;-&lt;strong&gt;c 10&lt;/strong&gt;: Sets the number of concurrent connections, here we use 10 to simulate concurrent users.&lt;/li&gt;&lt;li&gt;-&lt;strong&gt;q 10&lt;/strong&gt;: Defines the maximum number of requests to be made per second, limiting the request rate to 10 per second.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;http://example.com&lt;/strong&gt;: Specifies the URL endpoint we want to target with our requests.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;By leveraging a Traefik Custom Resource Definition with the &lt;strong&gt;rateLimit &lt;/strong&gt;configuration option and tools like &lt;strong&gt;hey&lt;/strong&gt;, you can confidently design, test, and fine-tune your rate limiting strategy to achieve the desired level of control and protection for your applications.&lt;/p&gt;&lt;h2 id=&quot;benefits-of-using-traefik-crds&quot;&gt;&lt;strong&gt;Benefits of Using Traefik CRDs&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;Traefik CRDs deliver a host of benefits for your Ingress and API management. Here are a few reasons to incorporate them into your workflow:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Flexibility&lt;/strong&gt;: With Traefik CRDs, you get unparalleled flexibility and fine-grained control over your Ingress traffic. Leverage advanced routing, traffic management, and security features tailored to your bespoke application requirements.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Compatibility&lt;/strong&gt;: Traefik CRDs work seamlessly with Traefik’s ecosystem of tools and features, making them an ideal fit for your existing Traefik setup.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Advanced Use Cases&lt;/strong&gt;: Traefik CRDs enable you to implement advanced use cases, such as &lt;a href=&quot;https://traefik.io/glossary/kubernetes-deployment-strategies-blue-green-canary/?ref=containous.ghost.io&quot;&gt;Canary Deployments&lt;/a&gt;, A/B testing, and rate limiting that the standard Kubernetes Ingress object may not support. This allows you to implement complex traffic management strategies to ensure smooth application operation.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Ease of Use&lt;/strong&gt;: It&apos;s easy to define, configure, and manage with standard Kubernetes manifest files, following the same declarative approach as other Kubernetes resources.&lt;/li&gt;&lt;/ul&gt;&lt;h2 id=&quot;wrapping-it-up&quot;&gt;&lt;strong&gt;Wrapping It Up&lt;/strong&gt;&lt;/h2&gt;&lt;p&gt;In this article, we delved into Kubernetes CRDs in Traefik. We discussed Kubernetes Ingress limitations and how Traefik CRDs overcome these, providing a practical rate limiting example. We highlighted the benefits of Traefik CRDs, including their flexibility and compatibility. Whether you&apos;re a software developer or a DevOps engineer, we encourage you to explore the power of Traefik CRDs in your Kubernetes deployments for a more robust and scalable application infrastructure. Remember, the &lt;a href=&quot;https://traefik.io/community/?ref=containous.ghost.io&quot;&gt;Traefik community&lt;/a&gt; is always here to support you.&lt;/p&gt;&lt;p&gt;In addition, CRDs are not only used in Traefik Proxy. Our recent product &lt;a href=&quot;https://traefik.io/traefik-hub/?ref=containous.ghost.io&quot;&gt;Traefik Hub, &lt;/a&gt;a Kubernetes-native API Management solution that simplifies API publishing, security, and management, also leverages native Kubernetes constructs, like CRDs, labels, and selectors. It is also fully GitOps compliant providing quick time to value and increased productivity for users. In an upcoming article, we will cover how to use CRDs in Traefik Hub to simplify API Management. In the meantime, you can start your &lt;a href=&quot;https://traefik.io/traefik-hub/?ref=containous.ghost.io&quot;&gt;Traefik Hub trial here&lt;/a&gt;.&lt;/p&gt;&lt;!--kg-card-begin: html--&gt;&lt;post-cta-inline data-slug=&quot;traefik-hub-trial&quot; data-variant=&quot;large-no-image&quot;&gt;&lt;/post-cta-inline&gt;&lt;!--kg-card-end: html--&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Ushering in a New Generation of API Management With Traefik Hub]]></title>
            <description><![CDATA[Today we are pleased to announce the general availability of Traefik Hub API management, a modern Kubernetes native solution for publishing, securing, and managing APIs.]]></description>
            <link>https://traefik.io/ushering-in-a-new-generation-of-api-management</link>
            <guid isPermaLink="true">https://traefik.io/ushering-in-a-new-generation-of-api-management</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[Kubernetes]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Erwan Paccard]]></dc:creator>
            <pubDate>Wed, 17 May 2023 15:39:24 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/05/Traefik-Hub-API-Management.jpg&quot; class=&quot;kg-image&quot; alt loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/05/Traefik-Hub-API-Management.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/05/Traefik-Hub-API-Management.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/05/Traefik-Hub-API-Management.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/05/Traefik-Hub-API-Management.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Today we are pleased to announce the general availability of Traefik Hub API management, a modern Kubernetes native solution for publishing, securing, and managing APIs, with industry-first support for major third-party ingress controllers including NGINX.&lt;/p&gt;&lt;!--kg-card-begin: html--&gt;&lt;post-cta-inline data-slug=&quot;traefik-hub-trial&quot; data-variant=&quot;small&quot;&gt;&lt;/post-cta-inline&gt;&lt;!--kg-card-end: html--&gt;&lt;p&gt;The ability to design, develop, and launch APIs has become a strategic imperative for organizations focused on cloud native, containerization, and digital transformation initiatives. APIs are the connective tissue that powers nearly every digital product and service today, representing&lt;a href=&quot;https://www.akamai.com/newsroom/press-release/state-of-the-internet-security-retail-attacks-and-api-traffic?ref=containous.ghost.io&quot;&gt; ~83% of total requests on the Internet&lt;/a&gt;, and are growing&lt;a href=&quot;https://blog.cloudflare.com/api-management-metrics/?ref=containous.ghost.io&quot;&gt; 2X faster than all other Web traffic.&lt;/a&gt; Yet, existing API management solutions are struggling to provide a cloud native experience and quick time to value, with their users facing steep learning curves, growing operational complexity, and a lack of deployment flexibility.&lt;/p&gt;&lt;h2 id=&quot;api-management-the-origin-story&quot;&gt;API management, the origin story&lt;/h2&gt;&lt;p&gt;Before we dive into the details of the announcement, we wanted to share a bit of the back story on how Traefik Hub came to be. &lt;a href=&quot;https://github.com/traefik/traefik?ref=containous.ghost.io&quot;&gt;Traefik Proxy&lt;/a&gt;, our first project, was born in 2015 to tackle the growing complexity of adopting cloud native technologies. With a maniacal focus towards simplification and automation, the Traefik Proxy open source project has achieved over 3 billion downloads and 43k GitHub stars to date. From advanced home lab users to Fortune 100 enterprise architects, many have been using Traefik Proxy as their unified ingress and &lt;a href=&quot;https://traefik.io/solutions/api-gateway/?ref=containous.ghost.io&quot;&gt;API gateway&lt;/a&gt;, helping it reach and maintain a leadership position in this category for several years in a row, based on rankings published on &lt;a href=&quot;https://ossinsight.io/collections/api-gateway/?ref=containous.ghost.io&quot;&gt;Ossinsight&lt;/a&gt;.&lt;br&gt;&lt;/p&gt;&lt;p&gt;Given our access to such a large and globally distributed install base of Traefik users, we have routinely heard and observed first-hand the key challenges associated with API management. &lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Large monolithic systems:&lt;/strong&gt; the API management ecosystem is rife with large and proprietary monolithic systems that imbue an all-or-nothing mindset. This is in direct conflict with modern cloud native principles that promote choice, modularity, and lightweight footprints.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Misalignment with DevOps operating model:&lt;/strong&gt; existing API management solutions are designed around UI point-and-click workflows rather than Kubernetes-native scripting and automation, thereby causing friction and inefficiencies when addressing the needs of organizations adopting CI/CD and GitOps-centric methodologies. &lt;/li&gt;&lt;li&gt;&lt;strong&gt;Limited deployment flexibility:&lt;/strong&gt; existing API management solutions are tightly coupled to a limited set of deployment environments, creating operational constraints for organizations adopting hybrid, multi-cloud and edge strategies.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Through numerous discussions and user surveys, we validated and concluded the dire need for a &lt;a href=&quot;https://traefik.io/solutions/api-management/?ref=containous.ghost.io&quot;&gt;modern API management solution&lt;/a&gt; that caters to the growing Kubernetes and cloud native user community. Given our company’s track record and DNA in solving similar intractable problems, we felt compelled to rise to this new challenge and deliver a best-in-class Kubernetes-native API management solution.&lt;/p&gt;&lt;h2 id=&quot;introducing-traefik-hub-the-first-kubernetes-native-api-management-solution&quot;&gt;Introducing Traefik Hub, the first Kubernetes-native API Management solution&lt;/h2&gt;&lt;p&gt;Traefik Hub is the industry’s first Kubernetes-native API Management solution for publishing, securing, and managing APIs, with support for both Traefik and major third-party ingress controllers including NGINX, HAProxy, Ambassador, and many others. &lt;/p&gt;&lt;!--kg-card-begin: html--&gt;&lt;post-cta-inline data-slug=&quot;traefik-hub-trial&quot; data-variant=&quot;large-no-image&quot;&gt;&lt;/post-cta-inline&gt;&lt;!--kg-card-end: html--&gt;&lt;p&gt;Traefik Hub has been built from the ground up to deliver outcomes aligned with the following design principles and goals:&lt;/p&gt;&lt;h3 id=&quot;1-freedom-of-choice&quot;&gt;1. Freedom of Choice&lt;/h3&gt;&lt;p&gt;Traefik Hub offers choice across multiple dimensions: users can choose any leading ingress controller, including Traefik Proxy or third-party solutions like NGINX. Users can also standardize their Traefik Hub installation across multiple deployment environments, including on-prem, managed Kubernetes in multi-cloud, and edge. Furthermore, the Traefik Hub architecture is both open and modular, providing seamless integration capabilities with third-party API design, testing, mocking, and security solutions, while leveraging industry best practices and standards such as OpenTelemetry and OpenAPI specification (OAS)&lt;/p&gt;&lt;h3 id=&quot;2-devops-first-mindset&quot;&gt;2. DevOps-first Mindset&lt;/h3&gt;&lt;p&gt;Traefik Hub is a modern solution that embodies a DevOps-first mindset. Initial configurations and ongoing changes can be expressed as code and deployed through GitOps and CI/CD friendly workflows.  &lt;/p&gt;&lt;h3 id=&quot;3-security-first-mindset&quot;&gt;3. Security-first Mindset&lt;/h3&gt;&lt;p&gt;Any discussion of a modern API management system would be incomplete without addressing the notion of APIs becoming a new attack vector and ways to mitigate them. Traefik Hub offers robust security features such as Role Based Access Control (RBAC), and support for modern industry-standard authentication and authorization mechanisms like OAuth 2.0 and JSON Web Tokens (JWT). Furthermore, Traefik Hub’s open and modular architecture offers integration capabilities with leading third-party API security solutions to provide additional layers of protection.&lt;/p&gt;&lt;h3 id=&quot;4-kubernetes-native-approach&quot;&gt;4. Kubernetes-native Approach&lt;/h3&gt;&lt;p&gt;Traefik Hub provides a Kubernetes-native approach through deep integration with the Kubernetes API. Starting with the auto-discovery of existing microservices, Traefik Hub leverages familiar and powerful Kubernetes objects and primitives such as Custom Resource Definitions (CRDs), labels, and selectors to create, manage, and secure APIs at scale.  &lt;/p&gt;&lt;h3 id=&quot;5-quick-time-to-value&quot;&gt;5. Quick Time to Value&lt;/h3&gt;&lt;p&gt;Traefik Hub control plane provides a simple and intuitive point-and-click experience for users who are just getting started with publishing APIs in a single or multi-cluster Kubernetes environment, while also giving advanced Kubernetes users access to its full automation and GitOps capabilities. This dual operating model accelerates Kubernetes-native adoption and&lt;br&gt;maximizes business agility, giving organizations unprecedented speed and scale in launching new APIs and services. &lt;/p&gt;&lt;h2 id=&quot;getting-started-with-traefik-hub&quot;&gt;Getting started with Traefik Hub&lt;/h2&gt;&lt;p&gt;Traefik Hub addresses the challenges and limitations of traditional API management, by providing a true Kubernetes-native experience with full GitOps compliance for simplicity, automation, and security. With Traefik Hub, engineers can continue to use their preferred tech stack to build great APIs and applications. We believe Traefik Hub is the most open, modular, and intuitive platform for managing APIs across hybrid, multi-cloud, and edge environments.  &lt;/p&gt;&lt;p&gt;If you are unsatisfied with your existing API management solutions, we would love to hear from you and encourage you to take &lt;a href=&quot;https://traefik.io/traefik-hub/?ref=containous.ghost.io&quot;&gt;Traefik Hub&lt;/a&gt; for a spin.&lt;br&gt;&lt;br&gt;Sign up for a two-week trial &lt;a href=&quot;https://info.traefik.io/traefik-hub-signup?ref=containous.ghost.io&quot;&gt;here&lt;/a&gt; and experience a better way to manage your APIs.&lt;/p&gt;&lt;!--kg-card-begin: html--&gt;&lt;post-cta-inline data-slug=&quot;traefik-hub-trial&quot; data-variant=&quot;large-no-image&quot;&gt;&lt;/post-cta-inline&gt;&lt;!--kg-card-end: html--&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[ABAX Tracks Over 500,000 Assets with Entirely Cloud Native Strategy]]></title>
            <description><![CDATA[Learn how ABAX leveraged Rancher Prime, K3s, and Traefik Enterprise to scale their asset tracking operations.]]></description>
            <link>https://traefik.io/abax-cloud-native-strategy</link>
            <guid isPermaLink="true">https://traefik.io/abax-cloud-native-strategy</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Case Studies]]></category>
            <category><![CDATA[Ingress]]></category>
            <category><![CDATA[Kubernetes]]></category>
            <category><![CDATA[Case Study]]></category>
            <category><![CDATA[Resources]]></category>
            <dc:creator><![CDATA[Traefik Labs]]></dc:creator>
            <pubDate>Thu, 04 May 2023 23:18:53 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/05/Blog-Without-Text@2x.jpg&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/05/Blog-Without-Text@2x.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/05/Blog-Without-Text@2x.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/05/Blog-Without-Text@2x.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/05/Blog-Without-Text@2x.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;at-a-glance&quot;&gt;At-a-Glance&lt;/h2&gt;&lt;p&gt;Over the course of three years, &lt;a href=&quot;https://www.abax.com/uk?ref=containous.ghost.io&quot;&gt;ABAX&lt;/a&gt; entered a new industry and doubled the number of assets it tracks for customers. In that same period, it standardized its compute operations onto Kubernetes and successfully completed its migration to a fully cloud native environment. &lt;/p&gt;&lt;p&gt;Open source-based solutions, such as &lt;a href=&quot;https://www.suse.com/products/rancher-kubernetes-engine/?ref=containous.ghost.io&quot;&gt;Rancher Prime&lt;/a&gt;, &lt;a href=&quot;https://k3s.io/?ref=containous.ghost.io&quot;&gt;K3s&lt;/a&gt;, and Traefik Enterprise, played a central role in these achievements and continue to support the company’s next-generation operations, which run with less than five IT personnel at the helm.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;post-cta-inline data-slug=&quot;watch-demo-traefik-ee&quot; data-variant=&quot;small&quot;&gt;&lt;/post-cta-inline&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;introducing-abax&quot;&gt;Introducing ABAX&lt;/h2&gt;&lt;p&gt;In 2007, ABAX opened its doors to deliver basic tracking solutions through high-quality GPS positioning. Since then, it has expanded services to help companies manage assets in new and better ways, leading it to become one of the largest telematics companies in Europe. Today, its sophisticated fleet and asset tracking solutions help clients reclaim stolen property, extend the lifecycles of expensive machinery, increase worker productivity, meet taxation requirements and even reduce carbon emissions. &lt;/p&gt;&lt;p&gt;In 2020, ABAX embarked on a journey to expand its offerings by developing mobility data solutions and entering new verticals, such as insurance and leasing. As a result, the company has become the preferred mobility data provider for the business-to-business industry on a broader scale.&lt;/p&gt;&lt;p&gt;ABAX&apos;s solutions empower customers to operate their businesses more intelligently and sustainably, making it simple to enhance efficiency, adhere to regulations and boost profitability. This approach is known as smart mobility.&lt;/p&gt;&lt;h2 id=&quot;the-journey-to-cloud-native-operations&quot;&gt;The Journey to Cloud Native Operations&lt;/h2&gt;&lt;p&gt;Combining telecommunications with information technology, ABAX is committed to using the latest technology advancements to send, receive, store and interpret data for its customers. In 2017, the company started using Kubernetes, Rancher Prime and public cloud providers to scale its operations for accelerated growth in the coming years.&lt;/p&gt;&lt;p&gt;Having proven to itself the viability of cloud-based container operations, it laid a plan in the Fall of 2020 to go fully cloud native by the end of 2022, but those plans went into hyperdrive mid-2021 when its on-premises data center provider announced closure by the end of the year. Thanks to the support of cloud native networking solution, &lt;a href=&quot;https://traefik.io/traefik-enterprise/?ref=containous.ghost.io&quot;&gt;Traefik Enterprise&lt;/a&gt; (an integrated API Gateway and ingress controller), ABAX seamlessly migrated its on-premises data center services to the cloud by directing traffic from one environment to the other. Originally planned as a multi-year migration project, ABAX was able to complete its migration in a quarter of the time and successfully went fully cloud native Dec. 30, 2021, one day before its on-premises data center pulled the plug.&lt;/p&gt;&lt;p&gt;Despite the accelerated timeline, SUSE solutions, Traefik Enterprise, and public cloud providers enabled ABAX to not only ensure continuity of services, but also reserve time for innovation. Remarkably, less than five people sit on the IT team that supports more than 70 developers and the environments of nearly 45,000 customers. For the team, maintaining these environments at scale, while having time to implement competitive infrastructure features, is vital for success.&lt;/p&gt;&lt;p&gt;“Providing software as a service for as much as we can is a requirement for us to be able to survive as an operations team due to resource availability,” says Thomas Ornell, principal system engineer (level IV) at ABAX.&lt;/p&gt;&lt;h2 id=&quot;a-modern-open-source-infrastructure&quot;&gt;A Modern, Open Source Infrastructure&lt;/h2&gt;&lt;p&gt;ABAX processes a vast amount of data from over half a million devices every hour, making uninterrupted availability critical to the company&apos;s success. To ensure reliability, the company turned to Kubernetes as its primary compute platform, migrating numerous IT processes to the container orchestration system. ABAX runs most of its Kubernetes clusters on Google Public Cloud, with some operations on AWS and Microsoft Azure.&lt;/p&gt;&lt;p&gt;As a proponent of open source, ABAX relies on several open source solutions, including Rancher Prime, K3s and Traefik Enterprise, to optimize its infrastructure operations and deliver services to clients. These tools allow ABAX to manage and deploy its Kubernetes infrastructure efficiently and securely, maintain granular control over user access, and provide next-generation customer services.&lt;/p&gt;&lt;blockquote&gt;&lt;em&gt;“With Traefik Enterprise, everything is automated and easy to use. We maintain functionalities that our developers rarely see because they just work.”&lt;br&gt;&lt;br&gt;Thomas Ornelll, Principal System Engineer (Level IV), ABAX&lt;/em&gt;&lt;/blockquote&gt;&lt;p&gt;“Rancher Prime and Traefik Enterprise have become an integral part of the ABAX cloud native infrastructure,” says Ornell. “With Traefik Enterprise, everything is automated and easy to use. We maintain functionalities that our developers rarely see because they just work.”&lt;/p&gt;&lt;p&gt;Regardless of its dedication to open source, ABAX understands the importance of risk mitigation and utilizes enterprise support to ensure its systems remain stable and secure. By partnering with SUSE and Traefik Labs, ABAX can focus on building its future and delivering exceptional services to its clients with peace of mind.&lt;/p&gt;&lt;h2 id=&quot;the-impact&quot;&gt;The Impact&lt;/h2&gt;&lt;h3 id=&quot;maximizing-productivity-with-a-consistent-experience&quot;&gt;Maximizing Productivity with a Consistent Experience&lt;/h3&gt;&lt;p&gt;ABAX, with a lean IT team handling various platform stacks and tools, aims to provide a consistent experience, performance and troubleshooting to its application developers. To achieve this, the IT team needs complete control over the platform stack. Rancher Prime and Traefik Enterprise make ABAX’s vision of a cloud native, infrastructure-agnostic platform a reality, providing developers with a single, consistent experience, regardless of the underlying cloud infrastructure.&lt;/p&gt;&lt;p&gt;The Rancher Prime interface allows developers and operations to work together in production with ease. The experience is the same, no matter which cloud a cluster is hosted on. “We don’t have to train our developers how to use the different user interfaces between the different cloud providers,” says Ornell. “Rancher Prime’s unified control system is key to maximizing productivity.”&lt;/p&gt;&lt;h3 id=&quot;saving-time-with-automated-rbac&quot;&gt;Saving Time with Automated RBAC&lt;/h3&gt;&lt;p&gt;Rancher Prime’s automated role-based access controls (RBAC) have also made a significant impact in enhancing the IT team’s productivity. Automated RBACs enable the team to grant and limit access to clusters and defined projects within Rancher Prime easily. If a developer works on a particular business domain, they can be granted access to only that business domain inside the production cluster, which is particularly important in highly regulated customer industries like insurance.&lt;/p&gt;&lt;p&gt;“What we&apos;re doing is giving developers direct access so they can manage their own workloads to a certain extent, saving us valuable time,” says Ornell. “This is key for us to be able to survive as such a small team managing so many different things.”&lt;/p&gt;&lt;h3 id=&quot;simplifying-kubernetes-deployments-with-fleet&quot;&gt;Simplifying Kubernetes Deployments with Fleet&lt;/h3&gt;&lt;p&gt;Fleet, a feature of Rancher Prime, simplifies managing, deploying and scaling containerized applications across multiple clusters. It simplifies the process of managing distributed application deployments, allowing users to easily start, scale and keep track of the containers that make up their applications. It also saves time and resources by automating how users set up applications in different environments.&lt;/p&gt;&lt;p&gt;Fleet currently runs 51 infrastructure deployments and maintains more than 70 Kubernetes clusters for developers, which would be impossible for the IT team to manually manage otherwise. “We label our clusters with the features we want them to have,” says Ornell. “For example, we’ll label a cluster with Traefik Enterprise. Fleet then automatically deploys Traefik Enterprise to that cluster. Same with Datadog or any other infrastructure piece we might need in a cluster. This is key to being able to do a disaster recovery swap quickly because we wouldn’t have time to manually reconfigure everything when in a disaster scenario.”&lt;/p&gt;&lt;h3 id=&quot;faster-disaster-recovery-with-a-powerful-trifecta&quot;&gt;Faster Disaster Recovery with a Powerful Trifecta&lt;/h3&gt;&lt;p&gt;Speaking of disaster scenarios, ABAX was able to achieve an impressive disaster recovery time for its entire production compute environment (excluding the database environment) in just one hour 15 minutes, thanks to three features of Rancher Prime.&lt;/p&gt;&lt;p&gt;Rancher Prime&apos;s multi-cluster management enabled the team to efficiently monitor and control resources across multiple clusters through a single pane of glass, while RBAC and Fleet made deploying fine-grained control over user access to resources across multiple clusters significantly easier. With these three components, the team was able to relaunch its operations efficiently and securely at scale, saving precious time.&lt;/p&gt;&lt;p&gt;According to Ornell, “Getting the environment itself back online wouldn’t take that much longer without Rancher Prime. The real difference lies in the post-recovery work, such as providing proper access for developers, ensuring all infrastructure components are back in the cluster and so on. Rancher’s RBAC and Fleet make these steps significantly faster. For comparison, doing this manually would take days.”&lt;/p&gt;&lt;h3 id=&quot;standardizing-cluster-environments-with-k3s-and-traefik&quot;&gt;Standardizing Cluster Environments with K3s and Traefik&lt;/h3&gt;&lt;p&gt;ABAX uses K3s to standardize cluster environments between development and production. K3s is a lightweight Kubernetes distribution originally developed by Rancher Labs and is now a CNCF project. K3s uses Traefik as the default ingress controller to manage incoming traffic. “The tiny differences between developer machines and production environments leave room for error, especially when trying to figure out why a service is working on a developer machine but not on a production environment,” says Ornell.&lt;/p&gt;&lt;blockquote&gt;&lt;em&gt;“K3s, deployed through k3d, and Traefik enable us to deploy everything in a developer environment as if it were a production environment, making it easier to identify issues when they arise.”&lt;br&gt;&lt;br&gt;Thomas Ornelll, Principal System Engineer (Level IV), ABAX&lt;/em&gt;&lt;/blockquote&gt;&lt;p&gt;The team implemented k3d, a lightweight wrapper used for running K3s in Docker, to run small Kubernetes clusters on every developer machine. “K3s, deployed through k3d, enables us to deploy everything in a developer environment as if it were a production environment, making it easier to identify issues when they arise,” says Ornell.&lt;/p&gt;&lt;p&gt;Consequently, nothing has to change in how the Kubernetes and networking layers operate when applications move from development to production, speeding time to launch.&lt;/p&gt;&lt;h3 id=&quot;resolving-issues-with-suse-and-traefik-labs%E2%80%99-enterprise-support&quot;&gt;Resolving Issues with SUSE and Traefik Labs’ Enterprise Support&lt;/h3&gt;&lt;p&gt;SUSE’s commitment to open source ethos means that Rancher technology is the same whether it comes from the community or enterprise version. For resource-constrained teams, paid support can be invaluable.&lt;/p&gt;&lt;p&gt;In working with SUSE Support, Ornell has found the team resolves issues before other vendors, working on the same issue, deliver a second reply. “SUSE has the competency to debug Kubernetes comprehensively, so we can figure out what is actually going wrong,” says Ornell. “We have very limited resources available. If we can offload debugging and figuring out what’s wrong to a support team instead of us having to do it, that’s golden on our end”&lt;/p&gt;&lt;p&gt;Support goes to another level when support teams from SUSE and Traefik Labs collaborate to resolve issues. Reflecting on a particular instance, Ornell states, “We couldn’t pinpoint where the issue was and we ended up being on a support call with support representatives on both sides collaborating, which to me is invaluable.”&lt;/p&gt;&lt;h3 id=&quot;accelerating-solutions-via-a-partner-ecosystem&quot;&gt;Accelerating Solutions Via a Partner Ecosystem&lt;/h3&gt;&lt;p&gt;SUSE’s partner network also provides additional value for those working with the company. This is how ABAX, for instance, discovered Traefik Labs when it sought to employ a Kubernetes-native ingress controller to manage incoming data from various client machinery, assets and automobiles. After browsing SUSE’s partner application catalog for Rancher Prime, ABAX selected Traefik and immediately integrated it into its infrastructure. Now, Traefik Enterprise handles every incoming request. Traefik Labs also played an essential role in ABAX’s cloud migration acceleration. Moreover, all customer-facing portals run on Traefik via a GKE cluster in Google Cloud, provisioned by Rancher Prime.&lt;/p&gt;&lt;h2 id=&quot;what%E2%80%99s-next&quot;&gt;What’s Next?&lt;/h2&gt;&lt;p&gt;Looking ahead, ABAX, now a major player in the European telematics market, plans to leverage the data it already processes to provide additional customer value. By embracing data sciences and artificial intelligence, ABAX customers will soon gain new insights that will inevitably lead to greater innovations. Backed by open source solutions and expertise, ABAX has a bright future ahead.&lt;/p&gt;&lt;p&gt;&lt;em&gt;Originally posted on &lt;/em&gt;&lt;a href=&quot;https://www.suse.com/success/abax_cloud_native/?ref=containous.ghost.io&quot;&gt;&lt;em&gt;suse.com&lt;/em&gt;&lt;/a&gt;&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;post-cta-inline data-slug=&quot;watch-demo-traefik-ee&quot; data-variant=&quot;large-with-image&quot;&gt;&lt;/post-cta-inline&gt;
&lt;!--kg-card-end: html--&gt;
&lt;p&gt;&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Announcing Traefik Proxy 2.10]]></title>
            <description><![CDATA[Traefik Proxy 2.10 improves your ability to use service mesh with Traefik Proxy, enhances Prometheus metrics, and simplifies your Nomad configuration. ]]></description>
            <link>https://traefik.io/announcing-traefik-proxy-2-10</link>
            <guid isPermaLink="true">https://traefik.io/announcing-traefik-proxy-2-10</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Kubernetes]]></category>
            <category><![CDATA[Ingress]]></category>
            <category><![CDATA[Load Balancing]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Nicolas Mengin]]></dc:creator>
            <pubDate>Wed, 26 Apr 2023 13:47:21 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;h4 id=&quot;with-improved-native-kubernetes-service-load-balancing-new-prometheus-metrics-new-api-group-and-more&quot;&gt;&lt;strong&gt;With improved native Kubernetes Service load balancing, new Prometheus metrics, new API group, and more. &lt;/strong&gt;&lt;/h4&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/04/Traefik-Proxy-2.10-1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Traefik Proxy 2.10 with improved native Kubernetes Service load balancing, new Prometheus metrics, new API group&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/04/Traefik-Proxy-2.10-1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/04/Traefik-Proxy-2.10-1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/04/Traefik-Proxy-2.10-1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/04/Traefik-Proxy-2.10-1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;There is always a lot of excitement around a new major version, but making the best possible Traefik Proxy 3.0 takes time and people. This past year, as we geared up to decide what Traefik proxy 3.0 should look like, we have also been working towards more open governance. &lt;/p&gt;&lt;p&gt;Our goal is to ensure the community can drive the direction of Traefik Proxy by influencing our roadmap and having significantly more input into feature design, implementation, and direct access via activities traditionally done by official maintainers, such as reviews. Check out these requests for &lt;a href=&quot;https://github.com/traefik/traefik/issues/1035?ref=containous.ghost.io&quot;&gt;design&lt;/a&gt; and &lt;a href=&quot;https://github.com/traefik/traefik/issues/8897?ref=containous.ghost.io&quot;&gt;input&lt;/a&gt;, as well as this hot topic on handling the migration to the new &lt;a href=&quot;https://github.com/traefik/traefik/pull/9600?ref=containous.ghost.io#issuecomment-1462254130&quot;&gt;Kubernetes CRD definitions&lt;/a&gt;.&lt;br&gt;&lt;br&gt;As part of our efforts to be more inclusive to our community, we have collected a series of small but mighty improvements that bring no breaking changes but enhance the user experience for many of our community members. Rather than holding these features until 3.0 is ready for release, we decided to ship these improvements early so that everyone can benefit from them right away.&lt;/p&gt;&lt;p&gt;Traefik Proxy 2.10 improves your ability to use service mesh with Traefik Proxy, enhances Prometheus metrics, and simplifies your Nomad configuration. &lt;/p&gt;&lt;p&gt;Let&apos;s jump into the new release and explore the nitty-gritty of your new abilities and how to use them.&lt;/p&gt;&lt;h2 id=&quot;improved-native-kubernetes-service-load-balancing&quot;&gt;Improved native Kubernetes Service load balancing&lt;/h2&gt;&lt;p&gt;Up until now, Traefik Proxy only forwarded incoming traffic to pods. This made it difficult to address specific use cases that require the native Kubernetes load balancing with Traefik because it required the use of workarounds, for example, the creation of external services. These workarounds were unsatisfactory, and this missing feature was a blocker, especially for adopting &lt;a href=&quot;https://community.traefik.io/t/communication-between-traefik-and-pods?ref=containous.ghost.io&quot;&gt;Traefik for service mesh users&lt;/a&gt;.&lt;br&gt;&lt;br&gt;Now, users have a new option for the providers &lt;a href=&quot;https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-ingress/?ref=containous.ghost.io#on-service&quot;&gt;Kubernetes Ingress&lt;/a&gt; and &lt;a href=&quot;https://doc.traefik.io/traefik/v2.10/routing/providers/kubernetes-crd/?ref=containous.ghost.io#load-balancing&quot;&gt;Kubernetes IngressRoute&lt;/a&gt; to decide whether the children of any given load balancer are directly in Pod IPs or if a Kubernetes Service is designated as the single child. In this case, the Kubernetes Service itself balances the load to the pods through a list of all endpoints used by the ingress controller in the upstream configuration.&lt;/p&gt;&lt;p&gt;This is especially important to users who employ a third-party service mesh, such as Cilium. Another benefit is that this configuration reinforces Traefik Proxy’s native support for zero-downtime deployments by removing any chance that traffic will be redirected to a non-existent client or pod (should a pod go down).  &lt;br&gt;&lt;/p&gt;&lt;h3 id=&quot;how-it-works&quot;&gt;How it works&lt;/h3&gt;&lt;p&gt;Enabling this feature is quite simple; all you need to do is add the `nativeLB` option to the service. &lt;/p&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;pre&gt;&lt;code&gt;apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
name: whoami
namespace: traefik
spec:
entryPoints:
- web
routes:
- kind: Rule
match: PathPrefix(`/who`)
services:
- kind: Service
name: whoami
namespace: app
port: 80
nativeLB: true # Enable the option
&lt;/code&gt;&lt;/pre&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; In the specific case of a deleted pod, when a request comes in before Traefik has updated its routing configuration, you might generate a 502 bad gateway response because the Traefik configuration does not reflect the actual infrastructure. Using the `maxIdleConnectionPerHost` option mitigates the 502 error by creating a new connection with the backend service (pod), avoiding connection reuse to a pod that has suddenly gone down.&lt;/p&gt;&lt;h2 id=&quot;new-prometheus-metrics&quot;&gt;New Prometheus metrics&lt;/h2&gt;&lt;p&gt;Prometheus is by far the most used third-party tool for metrics. To enhance the user experience when using Prometheus with Traefik Proxy, you can now split observations of the total request metric based &lt;a href=&quot;https://doc.traefik.io/traefik/v2.10/observability/metrics/prometheus/?ref=containous.ghost.io#headerlabels&quot;&gt;on the value of one or multiple header values&lt;/a&gt;. This option allows you to gather more detailed information about your clients based on header information.&lt;br&gt;&lt;/p&gt;&lt;p&gt;Headers are inherently flexible, so we can think of many ways you would use this feature, including creating a custom header to disclose app versions.&lt;/p&gt;&lt;h3 id=&quot;how-it-works-1&quot;&gt;How it works&lt;/h3&gt;&lt;p&gt;Traefik Proxy will now allow you to define extra labels for the `requests_total` metrics and the request header containing the value assigned to each label. &lt;/p&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;pre&gt;&lt;code&gt;metrics:
prometheus:
buckets:
- 0.1
- 0.3
- 1.2
- 5.0
headerlabels:
useragent: &amp;quot;User-Agent&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This feature is not enabled by default, therefore, there is no impact on performance by default. During testing, we did not observe any relevant performance hit. However, this does add an additional operation in the critical path of the request’s handling. When you enable the feature, if the header is not present in the request, it will be added automatically with an empty value. The label needs to be a valid label name for Prometheus.&lt;/p&gt;&lt;h2 id=&quot;multiple-namespaces-in-nomad&quot;&gt;Multiple namespaces in Nomad&lt;/h2&gt;&lt;p&gt;Nomad allows you to use multiple namespaces within any given cluster. However, our original integration allowed you to use only a single namespace and required you to spin up an instance of Traefik Proxy per namespace within your cluster.  We deprecated the singular namespace in the first &lt;a href=&quot;https://traefik.io/blog/traefik-proxy-3-0-scope-beta-program-and-the-first-feature-drop/?ref=containous.ghost.io&quot;&gt;Traefik Proxy 3.0 Beta&lt;/a&gt;, and this release brings the ability to use &lt;a href=&quot;https://github.com/traefik/traefik/pull/9332?ref=containous.ghost.io&quot;&gt;a single instance of Traefik&lt;/a&gt; to cover all namespaces within a given cluster. &lt;/p&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;pre&gt;&lt;code&gt;providers:
nomad:
namespaces:
- &amp;quot;ns1&amp;quot;
- &amp;quot;ns2&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;h2 id=&quot;introducing-traefikio-api-group&quot;&gt;Introducing traefik.io API group&lt;/h2&gt;&lt;p&gt;We are introducing our new CRD API group, `traefik.io`, with an eye to deprecating the `traefik.containo.us` API group in Traefik Proxy 3.0. Traefik Proxy v2.10 will bring no additional changes to the CRD scheme other than updating the API group. It will also include a warning log about the future depreciation of `traefik.containo.us` resources which will be removed in v3.0. You can read more about the community conversation in &lt;a href=&quot;https://github.com/traefik/traefik/pull/9600?ref=containous.ghost.io#issuecomment-1462254130&quot;&gt;pull request 9600&lt;/a&gt; and the Kubernetes CRD improvements in &lt;a href=&quot;https://github.com/traefik/traefik/issues/9125?ref=containous.ghost.io&quot;&gt;issue 9125&lt;/a&gt;. We would love to hear your feedback!&lt;br&gt;&lt;/p&gt;&lt;p&gt;To use the new API group, install/update the &lt;a href=&quot;https://github.com/traefik/traefik/blob/v2.10/docs/content/reference/dynamic-configuration/kubernetes-crd-definition-v1.yml?ref=containous.ghost.io&quot;&gt;CRDs&lt;/a&gt; and &lt;a href=&quot;https://github.com/traefik/traefik/blob/v2.10/docs/content/reference/dynamic-configuration/kubernetes-crd-rbac.yml?ref=containous.ghost.io&quot;&gt;RBAC&lt;/a&gt; in your cluster, and you&apos;ll be able to define middlewares, IngressRoutes, etc., as either `traefik.containo.us` or `traefik.io`.&lt;/p&gt;&lt;h2 id=&quot;wrapping-up&quot;&gt;Wrapping up&lt;/h2&gt;&lt;p&gt;We love that these features add flexibility to Traefik Proxy and hope you find them useful as well. We want to thank all the community members who have contributed to 2.10 through conversations on GitHub in issues and pull requests, donating code, testing, and sharing feedback on the 2.10 release candidate. This time, the special shout-out goes to &lt;a href=&quot;https://github.com/der-eismann?ref=containous.ghost.io&quot;&gt;Philipp&lt;/a&gt; and &lt;a href=&quot;https://github.com/Stolr?ref=containous.ghost.io&quot;&gt;Sebastien&lt;/a&gt;, the top contributors of v2.10.&lt;br&gt;&lt;br&gt;If you are interested in contributing to Traefik Proxy, join us on &lt;a href=&quot;https://github.com/traefik/?ref=containous.ghost.io&quot;&gt;GitHub&lt;/a&gt;, where you can request features/enhancements, help us design the next version, or even get your hands dirty by creating or reviewing pull requests.  For more information, check out the &lt;a href=&quot;https://github.com/traefik/traefik/releases/tag/v2.10.0?ref=containous.ghost.io&quot;&gt;Release Notes&lt;/a&gt; and updated &lt;a href=&quot;https://doc.traefik.io/traefik/?ref=containous.ghost.io&quot;&gt;Docs&lt;/a&gt;. If you have questions, pop over to our &lt;a href=&quot;https://community.traefik.io/?ref=containous.ghost.io&quot;&gt;Community Forum&lt;/a&gt;, where you can work with other community members to find your answers. And as always, we look forward to your feedback.&lt;/p&gt;&lt;!--kg-card-begin: html--&gt;&lt;post-cta-inline data-slug=&quot;learn-more-traefikee&quot; data-variant=&quot;large-with-image&quot;&gt;&lt;/post-cta-inline&gt;&lt;!--kg-card-end: html--&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Announcing Traefik Enterprise 2.10]]></title>
            <description><![CDATA[Announcing Traefik Enterprise 2.10 with OIDC access token claims inspection, Kubernetes secrets for storing Authentication Sources credentials, and more. ]]></description>
            <link>https://traefik.io/announcing-traefik-enterprise-2-10</link>
            <guid isPermaLink="true">https://traefik.io/announcing-traefik-enterprise-2-10</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[Access Control]]></category>
            <category><![CDATA[Kubernetes]]></category>
            <category><![CDATA[News]]></category>
            <dc:creator><![CDATA[Nicolas Mengin]]></dc:creator>
            <pubDate>Thu, 20 Apr 2023 10:47:09 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;h4 id=&quot;with-support-for-claim-data-in-oidc-access-tokens-headers-for-rate-limited-responses-and-kubernetes-secrets-for-storing-authentication-sources-credentials&quot;&gt;With support for claim data in OIDC access tokens, headers for rate-limited responses, and Kubernetes secrets for storing Authentication Sources credentials.&lt;/h4&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/04/Blog@2x--32--1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Traefik Enterprise 2.10 with support for claim data in OIDC access tokens&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/04/Blog@2x--32--1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/04/Blog@2x--32--1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/04/Blog@2x--32--1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/04/Blog@2x--32--1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Delivering on our promise to relieve organizations from connectivity chaos, today, we are announcing the release of the latest Traefik Enterprise version.&lt;/p&gt;&lt;p&gt;The 2.10 release is short and sweet but has three new features to help current and future customers better secure and manage their APIs and services.&lt;/p&gt;&lt;p&gt;Let’s take a closer look.&lt;/p&gt;&lt;!--kg-card-begin: html--&gt;&lt;post-cta-inline data-slug=&quot;hub&quot; data-variant=&quot;large-with-image&quot;&gt;&lt;/post-cta-inline&gt;&lt;!--kg-card-end: html--&gt;&lt;h2 id=&quot;oidc-middleware-now-inspects-claims-in-access-tokens&quot;&gt;OIDC middleware now inspects claims in access tokens&lt;/h2&gt;&lt;p&gt;OIDC is being widely used for authentication and authorization purposes. To use OIDC as an authorization method, users need to implement claims. Claims contain user information and meta information on the OIDC service in the form of a name/value pair.&lt;/p&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;Until now, the &lt;a href=&quot;https://doc.traefik.io/traefik-enterprise/middlewares/oidc/?ref=containous.ghost.io&quot;&gt;OIDC middleware&lt;/a&gt; inspected claims in ID tokens, validated if the claim group, &lt;code&gt;grp&lt;/code&gt;, has the value &lt;code&gt;admin&lt;/code&gt;, and restricted the workload, allowing access only to the ID token that contains the claim &lt;code&gt;grp&lt;/code&gt; and value &lt;code&gt;admin&lt;/code&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: test-oidcAuth
spec:
  plugin:
    oidcAuth:
      source: oidcSource
      redirectUrl: example.com/callback
      session:
        secret: mysupersecret123
      claims: Equals(`grp`, `admin`) # Check the claim in the ID Token
&lt;/code&gt;&lt;/pre&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;p&gt;While &lt;a href=&quot;https://traefik.io/glossary/openid-connect-everything-you-need-to-know/?ref=containous.ghost.io&quot;&gt;ID tokens&lt;/a&gt; are obtained only with the explicit consent of a human, access tokens are obtained through an automated process between systems and are considered a more secure method of adding an authorization layer to OIDC. &lt;/p&gt;&lt;p&gt;With the 2.10 release, we allow Traefik Enterprise users to add claims in Access tokens as well, enabling them to secure their APIs and services better. &lt;/p&gt;&lt;p&gt;Here is an example of how to use claims in Access tokens with the OIDC middleware.&lt;/p&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: test-oidcAuth
spec:
  plugin:
    oidcAuth:
      source: oidcSource
      redirectUrl: example.com/callback
      session:
        secret: mysupersecret123
      claims: Equals(`access_token.grp`, `admin`) # Check the claim in the Access Token
&lt;/code&gt;&lt;/pre&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; This feature works with JWT access tokens only.&lt;/p&gt;&lt;h2 id=&quot;load-sensitive-data-from-kubernetes-secrets&quot;&gt;Load sensitive data from Kubernetes Secrets&lt;/h2&gt;&lt;p&gt;With this release, we are further improving how customers secure their APIs in Traefik Enterprise, by allowing for sensitive options values to be referenced in Traefik Enterprise using the Secrets object in Kubernetes.&lt;/p&gt;&lt;p&gt;With this improvement, credentials and other sensitive information are hidden in the static configuration.&lt;/p&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;To reference a Kubernetes Secret in Traefik Enterprise, use the form of a URN:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;urn:k8s:secret:[namespace]:[name]:[valueKey]&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Here’s an example of this configuration with JWT:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;#...

authSources:
  jwtSource:
    jwt:
      signingSecret: urn:k8s:secret:traefikee:jwt-secret:secretValue
&lt;/code&gt;&lt;/pre&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; The Traefik Enterprise Controllers need to be running within a Kubernetes cluster and users need to load the Kubernetes Secrets within the Traefik Enterprise deployment namespace.&lt;/p&gt;&lt;h2 id=&quot;headers-for-rate-limited-responses&quot;&gt;Headers for rate-limited responses&lt;/h2&gt;&lt;p&gt;Rate limiting is &lt;a href=&quot;https://traefik.io/blog/top-5-api-security-best-practices/?ref=containous.ghost.io&quot;&gt;essential to API security&lt;/a&gt;. Limiting how often APIs can be called and throttling connections helps protect against traffic spikes and DDoS attacks.&lt;/p&gt;&lt;p&gt;This feature is an excellent addition for users who want to limit API consumers to a predefined number of requests per minute and inform consumers on the fly about their remaining amount of requests. &lt;/p&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;Using the &lt;code&gt;ResponseHeaders&lt;/code&gt; option, users can &lt;a href=&quot;https://doc.traefik.io/traefik-enterprise/v2.10/middlewares/rate-limit/?ref=containous.ghost.io#responseheaders&quot;&gt;configure Traefik Enterprise&lt;/a&gt; to inject the &lt;code&gt;X-Rate-Limit-Remaining&lt;/code&gt; header in the response. This indicates how many tokens an API consumer has left in the token bucket before they get a &lt;a href=&quot;https://developer.mozilla.org/en-US/docs/Web/HTTP/Status/429?ref=containous.ghost.io&quot;&gt;429 response&lt;/a&gt;.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: test-ratelimit
spec:
  plugin:
    rateLimit:
      responseHeaders: true
&lt;/code&gt;&lt;/pre&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;h2 id=&quot;summing-up&quot;&gt;Summing up&lt;/h2&gt;&lt;p&gt;Traefik Enterprise 2.10 is by no means a major release, but we are confident that it offers substantial benefits for customers looking to streamline their API security. If you are currently looking to level up your API game and solve the challenges that come with APIs, join our &lt;a href=&quot;https://info.traefik.io/en/en/webinar-level-up-your-api?ref=containous.ghost.io&quot;&gt;upcoming webinar&lt;/a&gt; and learn:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;How an API gateway unlocks APIs in a cloud native world&lt;/li&gt;&lt;li&gt;How API gateways deliver great time-to-value and reduce infrastructure complexity &lt;/li&gt;&lt;/ul&gt;&lt;!--kg-card-begin: html--&gt;&lt;post-cta-inline data-slug=&quot;hub&quot; data-variant=&quot;large-no-image&quot;&gt;&lt;/post-cta-inline&gt;&lt;!--kg-card-end: html--&gt;&lt;p&gt;And in case you haven’t heard, we are at KubeCon Europe 2023! Feel free to drop by Booth S24 for a chat and a live demo of our new &lt;a href=&quot;https://traefik.io/press/traefik-labs-launches-new-kubernetes-native-api-management/?ref=containous.ghost.io&quot;&gt;industry’s-first Kubernetes-native API management solution&lt;/a&gt;, Traefik Hub.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Production-Ready Kubernetes Deployments with the Traefik API Gateway and Supabase]]></title>
            <description><![CDATA[Explore how to configure the Traefik API gateway to enable a production-ready, self-hosted deployment of the Supabase Platform on Kubernetes.]]></description>
            <link>https://traefik.io/production-ready-kubernetes-deployments-traefik-api-gateway-supabase</link>
            <guid isPermaLink="true">https://traefik.io/production-ready-kubernetes-deployments-traefik-api-gateway-supabase</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Access Control]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[Kubernetes]]></category>
            <category><![CDATA[News]]></category>
            <category><![CDATA[Guides]]></category>
            <dc:creator><![CDATA[Colin Wilson]]></dc:creator>
            <pubDate>Wed, 05 Apr 2023 16:11:40 GMT</pubDate>
            <content:encoded>&lt;![CDATA[&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/04/Blog_without_copies@2x--5-.jpg&quot; class=&quot;kg-image&quot; alt=&quot;making supabase production-ready with the traefik api gateway&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1125&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/04/Blog_without_copies@2x--5-.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/04/Blog_without_copies@2x--5-.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/04/Blog_without_copies@2x--5-.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/04/Blog_without_copies@2x--5-.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;API gateways have rapidly evolved to become a crucial component of most modern cloud infrastructure — particularly within microservices architectures. More so than other cloud components, API gateways need to be secure, robust, resilient, and easy to manage, and the &lt;a href=&quot;https://traefik.io/solutions/api-gateway/?ref=containous.ghost.io&quot;&gt;Traefik API gateway&lt;/a&gt; is definitely up to this challenge.&lt;/p&gt;&lt;p&gt;In this guide, I want to give you a tour of the Traefik API gateway and explore how to configure it to enable a production-ready, self-hosted deployment of the Supabase Platform on Kubernetes.&lt;/p&gt;&lt;p&gt;&lt;a href=&quot;https://supabase.com/?ref=containous.ghost.io&quot;&gt;Supabase&lt;/a&gt; describes itself as “an open source Firebase alternative”. The platform provides a collection of application backend features such as Authentication, Database (Postgres) and Storage (S3) and is quickly growing in popularity amongst many application development communities.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Why choose Traefik Proxy for this guide?&lt;/strong&gt; Well, because the current Supabase Helm Chart utilizes a rather bare-bones deployment of Kong and Nginx. And although functional, both these configurations fall short of a production-ready environment, namely, a lack of authentication for the GUI and rate limiting of the API.&lt;/p&gt;&lt;p&gt;Substituting Kong and Nginx for Traefik Proxy makes up for the above shortcomings and provides a host of additional benefits:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Built-in Let&apos;s Encrypt integration&lt;/li&gt;&lt;li&gt;Simpler to configure&lt;/li&gt;&lt;li&gt;Several Middlewares available&lt;/li&gt;&lt;li&gt;Management of a single API Gateway instead of two&lt;/li&gt;&lt;li&gt;An upgrade path to Traefik Enterprise&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;prerequisites&quot;&gt;Prerequisites&lt;/h3&gt;&lt;ul&gt;&lt;li&gt;A Kubernetes Cluster (with cert-manager installed)&lt;/li&gt;&lt;li&gt;Knowledge of Kubernetes and Helm&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; Many of the Traefik configurations and concepts used here also apply to other application platforms with similar API gateway requirements.&lt;/p&gt;&lt;h2 id=&quot;architecture&quot;&gt;Architecture&lt;/h2&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/04/Diagram-01@1x.jpg&quot; class=&quot;kg-image&quot; alt=&quot;architecture of production-ready deployment of supabase on kubernetes with traefik api gateway&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1200&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/04/Diagram-01@1x.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/04/Diagram-01@1x.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/04/Diagram-01@1x.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/04/Diagram-01@1x.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The above architecture represents a high-level overview of the end goal. A production-ready deployment of Supabase on Kubernetes with Traefik API gateway securing the Supabase API and GUI (Studio).&lt;/p&gt;&lt;h2 id=&quot;deploy-supabase-on-kubernetes&quot;&gt;Deploy Supabase on Kubernetes&lt;/h2&gt;&lt;p&gt;&lt;strong&gt;Note: &lt;/strong&gt;If you already have a Supabase deployment on Kubernetes, you can skip to the next section to install and configure Traefik Proxy. Since Traefik will be configured to expose the Supabase endpoints it’s important to disable any related Supabase endpoint ingress configurations in your existing deployment.&lt;/p&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;ol&gt;
&lt;li&gt;Use the &lt;a href=&quot;https://github.com/supabase-community/supabase-kubernetes?ref=containous.ghost.io&quot;&gt;Supabase Helm chart&lt;/a&gt; provided by the supabase-community repo to deploy Supabase on a Kubernetes cluster. The chart’s &lt;a href=&quot;https://github.com/supabase-community/supabase-kubernetes/blob/main/charts/supabase/values.yaml?ref=containous.ghost.io&quot;&gt;values.yaml&lt;/a&gt; options should be configured to meet the requirements of a production environment (and with Traefik Proxy in mind). So, configure:
&lt;ul&gt;
&lt;li&gt;An externally managed or cluster replicated PostgreSQL database&lt;/li&gt;
&lt;li&gt;An external transactional mail service, e.g. SendGrid, Mailgun or Sparkpost&lt;/li&gt;
&lt;li&gt;An external (or internal HA) S3 compatible storage provider, e.g. AWS or Cloudflare&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;The chart’s default &lt;code&gt;values.yaml&lt;/code&gt; enables an &lt;code&gt;nginx&lt;/code&gt; ingress for both the Supabase Studio and API services (&lt;code&gt;studio.ingress.enabled&lt;/code&gt; and &lt;code&gt;kong.ingress.enabled&lt;/code&gt;). Since we’ll be configuring Traefik ingress routes for these services later on, both should be set to &lt;code&gt;false&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Generate the &lt;a href=&quot;https://github.com/supabase-community/supabase-kubernetes/blob/main/charts/supabase/values.yaml?ref=containous.ghost.io&quot;&gt;JWT keys and secret&lt;/a&gt; values required to create the JWT secret inside the cluster.&lt;/li&gt;
&lt;li&gt;Create a database secret containing the username and password of your PostgreSQL database and another secret with your SMTP provider credentials.&lt;/li&gt;
&lt;li&gt;Deploy the Supabase helm chart inside your cluster.&lt;br&gt;
&lt;code&gt;helm -n default install supabase -f my-custom-values.yaml&lt;/code&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Use the &lt;code&gt;kubectl port-forward&lt;/code&gt; command to check the Supabase API endpoints and GUI have successfully deployed in your cluster.&lt;/p&gt;
&lt;p&gt;To check Supabase Studio, run the following command:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;gt; kubectl port-forward service/supabase-supabase-studio -n default 3000:3000&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Navigate to &lt;code&gt;http://localhost:3000/projects&lt;/code&gt; and you should be presented with the Supabase Studio frontend:&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/04/unnamed--5-.png&quot; alt=&quot;unnamed--5-&quot; loading=&quot;lazy&quot;&gt;&lt;/p&gt;
&lt;p&gt;Once you’ve confirmed Supabase Studio is working, go ahead and test the API endpoint next.&lt;/p&gt;
&lt;p&gt;Navigate to &lt;code&gt;http://localhost:3000/project/default/api?page=auth&lt;/code&gt;. This API Docs page features API commands with your previously configured access credentials substituted in. Click to copy the generated &lt;code&gt;curl&lt;/code&gt; command used to authenticate with the &lt;code&gt;/rest/v1/&lt;/code&gt; endpoint.&lt;/p&gt;
&lt;p&gt;Use the &lt;code&gt;kubectl port-forward&lt;/code&gt; command once again, this time to proxy the Supabase API:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;&amp;gt; kubectl port-forward service/supabase-supabase-kong -n default 8000:8000&lt;/code&gt;&lt;/p&gt;
&lt;p&gt;Next, execute the &lt;code&gt;curl&lt;/code&gt; command you copied from the API Docs in Studio:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl &apos;https://api.supabase.local/rest/v1/&apos; \
-H &amp;quot;apikey: SUPABASE_SERVICE_KEY&amp;quot; \
-H &amp;quot;Authorization: Bearer SUPABASE_SERVICE_KEY&amp;quot; | jq
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The result should start similar to the partial snippet below:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;  {
  &amp;quot;swagger&amp;quot;: &amp;quot;2.0&amp;quot;,
  &amp;quot;info&amp;quot;: {
    &amp;quot;description&amp;quot;: &amp;quot;&amp;quot;,
    &amp;quot;title&amp;quot;: &amp;quot;standard public schema&amp;quot;,
    &amp;quot;version&amp;quot;: &amp;quot;10.2.0.20230209 (pre-release)&amp;quot;
  },
……
&lt;/code&gt;&lt;/pre&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;p&gt;Supabase is now successfully deployed and primed to be made production-ready with the help of the Traefik API gateway 🎉.&lt;/p&gt;&lt;h2 id=&quot;deploy-and-configure-the-traefik-api-gateway&quot;&gt;Deploy and configure the Traefik API gateway&lt;/h2&gt;&lt;p&gt;As mentioned earlier, the default deployment of the &lt;a href=&quot;https://github.com/supabase-community/supabase-kubernetes?ref=containous.ghost.io&quot;&gt;supabase-kubernetes helm chart&lt;/a&gt; requires some important additional steps before it’s production-ready.&lt;/p&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;h3 id=&quot;install-traefik-helm&quot;&gt;Install Traefik (Helm)&lt;/h3&gt;
&lt;p&gt;Before installing Traefik, make a minor addition to the &lt;code&gt;values.yaml&lt;/code&gt; file so Traefik redirects all HTTP requests to HTTPS:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;ports:
  web:
    redirectTo: websecure
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next, install Traefik via the &lt;a href=&quot;https://github.com/traefik/traefik-helm-chart?ref=containous.ghost.io&quot;&gt;traefik-helm-chart&lt;/a&gt;:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;helm install -f myvalues.yaml traefik traefik/traefik&lt;/code&gt;&lt;/p&gt;
&lt;h3 id=&quot;configure-the-traefik-api-gateway-for-supabase%E2%80%99s-apis-gui&quot;&gt;Configure the Traefik API gateway for Supabase’s APIs &amp;amp; GUI&lt;/h3&gt;
&lt;p&gt;Now it’s time to create the necessary Traefik configurations.&lt;/p&gt;
&lt;p&gt;If you followed the Supabase chart deployment instructions above, you’ll recall the ingress configurations for both the Studio and API services were disabled (set to false).&lt;/p&gt;
&lt;p&gt;Both ingress routes require a valid SSL certificate for their respective domains. e.g.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;api.supabase.example.com&lt;/code&gt; for the Supabase API ingress route&lt;/li&gt;
&lt;li&gt;&lt;code&gt;studio.example.com&lt;/code&gt; for the Supabase Studio ingress route&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Ensure these certificate secrets exist before creating the ingress routes that reference them.&lt;/p&gt;
&lt;p&gt;Now, create the ingress routes that will publicly expose both the API endpoints and Studio services, this will also enable SSL/TLS termination for both routes:&lt;/p&gt;
&lt;p&gt;&lt;code&gt;api.supabase.example.com.yaml&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: api.supabase.example.com
  namespace: default
spec:
  entryPoints:
    - websecure
  routes:
    - kind: Rule
      match: Host(`api.supabase.example.com`)
      services:        
        - name: supabase-supabase-kong
          port: 8000
  tls:
    secretName: api.supabase.example.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;studio.example.com.yaml&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: studio.example.com
  namespace: default
spec:
  entryPoints:
    - websecure
  routes:
    - kind: Rule
      match: Host(`studio.example.com`)
      services:        
        - name: supabase-supabase-studio
          port: 3000
  tls:
    secretName: studio.example.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Create two corresponding DNS records for your domain with your DNS provider, &lt;code&gt;api.supabase.example.com and studio.example.com&lt;/code&gt;, both pointing to the IP address of the load balancer associated with your Traefik instance.&lt;/p&gt;
&lt;h3 id=&quot;protect-the-supabase-studio-dashboard-with-traefik-middleware&quot;&gt;Protect the Supabase Studio dashboard with Traefik middleware&lt;/h3&gt;
&lt;p&gt;Navigate to &lt;code&gt;https://studio.example.com&lt;/code&gt;, and you should (again) be presented with the Supabase Studio web interface. You’ll notice the Studio dashboard is currently unprotected — i.e., there’s no authentication step before access.&lt;/p&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;p&gt;The Supabase dashboard can be secured using a Traefik *Auth middleware such as &lt;a href=&quot;https://doc.traefik.io/traefik/middlewares/http/basicauth/?ref=containous.ghost.io&quot;&gt;BasicAuth&lt;/a&gt;. Traefik&apos;s &lt;a href=&quot;https://doc.traefik.io/traefik/middlewares/http/forwardauth/?ref=containous.ghost.io&quot;&gt;ForwardAuth&lt;/a&gt; middleware with an external authentication server like &lt;a href=&quot;https://www.authelia.com/?ref=containous.ghost.io&quot;&gt;Authelia&lt;/a&gt; is another option.&lt;/p&gt;&lt;p&gt;However, I highly recommend taking access control to another level with Traefik Enterprise. Its built-in middleware &lt;a href=&quot;https://doc.traefik.io/traefik-enterprise/middlewares/oidc/?ref=containous.ghost.io&quot;&gt;OpenID Connect Authentication&lt;/a&gt; integrates with existing authentication deployments. See &apos;Going further with Traefik Enterprise&apos; below for more details.&lt;/p&gt;&lt;h3 id=&quot;rate-limiting-the-supabase-api&quot;&gt;Rate limiting the Supabase API&lt;/h3&gt;&lt;p&gt;At this point, Traefik is configured so both the Supabase Studio and API endpoints are secured against unauthorized or unauthenticated access.&lt;/p&gt;&lt;p&gt;So, can this deployment be considered production-ready? Not quite yet. The Supabase API has no protection against bursts of incoming traffic, be it from unexpected high traffic or malicious abuse, such as &lt;a href=&quot;https://www.ncsc.gov.uk/collection/denial-service-dos-guidance-collection?ref=containous.ghost.io&quot;&gt;Denial-of-Service (DoS) attacks&lt;/a&gt;, it&apos;s a concern that cannot be left unaddressed.&lt;/p&gt;&lt;p&gt;Traefik has this covered with yet again another middleware option, the &lt;a href=&quot;https://doc.traefik.io/traefik/middlewares/http/ratelimit?ref=containous.ghost.io&quot;&gt;RateLimit middleware&lt;/a&gt;.&lt;/p&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;Define a rate limit to suit your needs using a middleware object:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# Here, an average of 200 requests per second is allowed.
# In addition, a burst of 100 requests is allowed.
apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: ratelimit-supabase-api
  namespace: default
spec:
  rateLimit:
    average: 200
    burst: 100
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This will set an overall rate limit across all Supabase API endpoints. This is a good starting point, plus the RateLimit middleware is capable of more granular rate limiting via options such as &lt;code&gt;sourceCriterion.ipStrategy&lt;/code&gt; and &lt;code&gt;sourceCriterion.requestHeaderName&lt;/code&gt; which sets rate limits based on incoming IP and request header groups respectively.&lt;/p&gt;
&lt;p&gt;Apply the new middleware to the &lt;code&gt;api.supabase.example.com&lt;/code&gt; ingress route:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;apiVersion: traefik.containo.us/v1alpha1
kind: IngressRoute
metadata:
  name: api.supabase.example.com
  namespace: default
spec:
  entryPoints:
    - websecure
  routes:
    - kind: Rule
      match: Host(`api.supabase.example.com`)
      services:        
        - name: supabase-supabase-kong
          port: 8000
      middlewares:
            - name: ratelimit-supabase-api
  tls:
    secretName: api.supabase.example.com
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Once applied, your Supabase API route now has a safeguard against high volumes of traffic. You can also set a rate limit on the Studio service if required.&lt;/p&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;p&gt;&lt;strong&gt;Production ready?&lt;/strong&gt;&lt;/p&gt;&lt;p&gt;The Traefik API gateway is now handling:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;TLS/Termination for the Supabase Studio and API routes&lt;/li&gt;&lt;li&gt;Secure authentication and authorization to Supabase Studio&lt;/li&gt;&lt;li&gt;Rate limiting of the Supabase API route&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Your Supabase deployment is now production-ready!&lt;/p&gt;&lt;h2 id=&quot;going-further-with-traefik-enterprise&quot;&gt;Going further with Traefik Enterprise&lt;/h2&gt;&lt;p&gt;Although this guide demonstrates a production-ready deployment of Supabase using the open source version of Traefik, it’s not without its limitations. Upgrading to &lt;a href=&quot;https://traefik.io/traefik-enterprise/?ref=containous.ghost.io&quot;&gt;Traefik Enterprise&lt;/a&gt; offers a path to overcoming these limitations. Let’s take a look at some ways in which Traefik Enterprise achieves this.&lt;/p&gt;&lt;h3 id=&quot;authentication-and-authorization&quot;&gt;Authentication and authorization&lt;/h3&gt;&lt;p&gt;As mentioned, Traefik Enterprise offers much more robust authentication solutions over middleware like BasicAuth and ForwardAuth. For example, the built-in &lt;a href=&quot;https://doc.traefik.io/traefik-enterprise/middlewares/oidc/?ref=containous.ghost.io&quot;&gt;OpenID Connect Authentication&lt;/a&gt; middleware means Traefik Enterprise can easily accommodate your existing authentication and authorization infrastructure to provide access control to Supabase.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/04/Diagram-02@1x.jpg&quot; class=&quot;kg-image&quot; alt loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1200&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/04/Diagram-02@1x.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/04/Diagram-02@1x.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/04/Diagram-02@1x.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/04/Diagram-02@1x.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The above is a simplified illustration of how the OIDC Authentication middleware functions. For a more detailed look at how to configure the OIDC middleware, check out Matt Elgin&apos;s article, &lt;a href=&quot;https://traefik.io/blog/3-oidc-configurations-with-traefik-enterprise/?ref=containous.ghost.io&quot;&gt;3 OIDC Configurations with Traefik Enterprise, from Basic to Advanced&lt;/a&gt;.&lt;/p&gt;&lt;h3 id=&quot;high-availability&quot;&gt;High availability&lt;/h3&gt;&lt;p&gt;The very start of this guide mentions the importance of API gateways in modern microservices architectures. In contrast to Traefik’s open source edition, Traefik Enterprise is deployed by default as a cluster of proxy nodes. Substituting the default Supabase API gateway (a potential &lt;a href=&quot;https://en.wikipedia.org/wiki/Single_point_of_failure?ref=traefik-labs-makes-networking-boring&quot;&gt;single point of failure&lt;/a&gt;) for Traefik Enterprise enables the Supabase endpoints to be served in a highly available and scalable fashion by a cluster of proxies. Not to mention the reduced complexity from now only managing a single API gateway installation, Traefik Enterprise.&lt;/p&gt;&lt;figure class=&quot;kg-card kg-image-card&quot;&gt;&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/04/Diagram-03@1x-1.jpg&quot; class=&quot;kg-image&quot; alt loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1200&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/04/Diagram-03@1x-1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/04/Diagram-03@1x-1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/04/Diagram-03@1x-1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/04/Diagram-03@1x-1.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Migrating to Traefik Enterprise also introduces a &lt;a href=&quot;https://traefik.io/solutions/api-management/?ref=containous.ghost.io&quot;&gt;wealth of authentication protocols&lt;/a&gt; (beyond JWT) for authenticating with the Supabase API (including LDAP, OAuth2, OpenID, and HMAC). This opens the door for many other applications to interact with your API.&lt;/p&gt;&lt;h3 id=&quot;distributed-rate-limiting&quot;&gt;Distributed rate limiting&lt;/h3&gt;&lt;p&gt;The rate limit middleware configurations applied to Supabase endpoints in this guide limit requests per an individual Traefik proxy. Traefik Enterprise’s distributed rate limiting ensures that requests are limited over time throughout your cluster and &lt;a href=&quot;https://doc.traefik.io/traefik-enterprise/middlewares/rate-limit/?ref=containous.ghost.io&quot;&gt;not just on an individual proxy&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;Configuring this in Traefik Enterprise is as simple as adding a single line to your existing open source RateLimit middleware config:&lt;/p&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;pre&gt;&lt;code&gt;apiVersion: traefik.containo.us/v1alpha1
kind: Middleware
metadata:
  name: ratelimit-supabase-api
  namespace: default
spec:
  plugin: # &amp;lt;- just add this line to enable distributed rate limiting
	  rateLimit:
		average: 200
		burst: 100
&lt;/code&gt;&lt;/pre&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;h3 id=&quot;support&quot;&gt;Support&lt;/h3&gt;&lt;p&gt;Last but not least — support. Traefik Enterprise comes with built-in support. A team of engineers is at your disposal should you encounter any issues or need any assistance with the installation, setup, or management of Traefik Enterprise. Quality support (in my opinion) is an important part of what makes a deployment “production-ready.”&lt;/p&gt;&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;&lt;p&gt;This Supabase deployment has demonstrated how the Traefik API gateway can help build a production-ready application through the implementation of some of its key features.&lt;/p&gt;&lt;p&gt;Bear in mind authentication, rate limiting, TLS termination, and high availability are just the tip of the iceberg when it comes to the capabilities of the Traefik API gateway. If your application architecture requires a more complicated feature set, such as &lt;a href=&quot;https://doc.traefik.io/traefik-enterprise/features/?ref=containous.ghost.io#service-mesh&quot;&gt;service mesh&lt;/a&gt;, &lt;a href=&quot;https://doc.traefik.io/traefik-enterprise/operations/fips-image/?ref=containous.ghost.io&quot;&gt;security compliance&lt;/a&gt;, or &lt;a href=&quot;https://doc.traefik.io/traefik-enterprise/operations/disaster-recovery/?ref=containous.ghost.io&quot;&gt;disaster recovery&lt;/a&gt;, Traefik Enterprise can accommodate these needs.&lt;/p&gt;&lt;p&gt;To learn more about how the Traefik and Traefik Enterprise API gateways can enable production-ready applications and platforms, check out &lt;a href=&quot;https://traefik.io/glossary/?ref=containous.ghost.io&quot;&gt;Traefik’s excellent glossary&lt;/a&gt; and the documentation for both &lt;a href=&quot;https://doc.traefik.io/traefik/?ref=containous.ghost.io&quot;&gt;Traefik&lt;/a&gt; Proxy and &lt;a href=&quot;https://doc.traefik.io/traefik-enterprise/?ref=containous.ghost.io&quot;&gt;Traefik Enterprise&lt;/a&gt;. If you’d like to try out Traefik Enterprise for yourself, you can sign up for a &lt;a href=&quot;https://info.traefik.io/get-traefik-enterprise-free-for-30-days?ref=containous.ghost.io&quot;&gt;30-day free trial&lt;/a&gt;.&lt;/p&gt;&lt;!--kg-card-begin: html--&gt;&lt;post-cta-inline data-slug=&quot;learn-more-traefikee&quot; data-variant=&quot;large-with-image&quot;&gt;&lt;/post-cta-inline&gt;&lt;!--kg-card-end: html--&gt; ]]&gt;</content:encoded>
        </item>
    </channel>
</rss>