<?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[Run APIs Easily. Anywhere. | Traefik Labs]]></title>
        <description><![CDATA[Traefik is your all-in-one, self-hosted, cloud-native, GitOps-driven application proxy, API gateway, and API management platform.]]></description>
        <link>https://traefik.io</link>
        <image>
            <url>https://traefik.io/favicon.svg</url>
            <title>Run APIs Easily. Anywhere. | Traefik Labs</title>
            <link>https://traefik.io</link>
        </image>
        <generator>NextJS</generator>
        <lastBuildDate>Fri, 17 Apr 2026 22:34:42 GMT</lastBuildDate>
        <atom:link href="https://traefik.io/rss.xml" rel="self" type="application/rss+xml"/>
        <ttl>60</ttl>
        <atom:link/>
        <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>Fri, 17 Apr 2026 21:30:30 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/susecon-blog-image-no-copy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;Diagram of Traefik Hub running VMs and Containers in SUSE 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/2026/04/susecon-blog-image-no-copy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2026/04/susecon-blog-image-no-copy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2026/04/susecon-blog-image-no-copy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2026/04/susecon-blog-image-no-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=containous.ghost.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[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 Out and There’s Only One Realistic Alternative]]></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;the-alternatives-all-have-the-same-problem&quot;&gt;The Alternatives All Have the Same Problem&lt;/h2&gt;&lt;p&gt;Since the retirement announcement, the ecosystem has responded along two lines. Neither solves the fundamental issue.&lt;/p&gt;&lt;h3 id=&quot;the-first-approach-migrate-to-a-different-configuration-format&quot;&gt;The First Approach: 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;the-second-approach-fork-ingress-nginx-and-keep-running-it&quot;&gt;The Second Approach: 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;h2 id=&quot;traefik%E2%80%99s-approach-the-only-drop-in-replacement&quot;&gt;Traefik’s Approach: The Only Drop-In Replacement&lt;/h2&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;whats-new-a-data-driven-expansion-of-annotation-support&quot;&gt;What&apos;s New: 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>
        <item>
            <title><![CDATA[Axione Selects Traefik’s API Gateway to Simplify and Secure Deployments of Critical Applications]]></title>
            <description><![CDATA[Learn how Axione leverages the Traefik Enterprise API gateway to simplify and secure deployments for their critical applications.]]></description>
            <link>https://traefik.io/axione-simplifies-and-secures-deployments-traefik-enterprise-api-gateway</link>
            <guid isPermaLink="true">https://traefik.io/axione-simplifies-and-secures-deployments-traefik-enterprise-api-gateway</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Case Studies]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[Case Study]]></category>
            <category><![CDATA[Resources]]></category>
            <dc:creator><![CDATA[Kate Mikula]]></dc:creator>
            <pubDate>Wed, 29 Mar 2023 11:13: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/2023/03/Blog-Without-Text@2x.jpg&quot; class=&quot;kg-image&quot; alt=&quot;simplify and secure deployments with traefik enterprise 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/03/Blog-Without-Text@2x.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/03/Blog-Without-Text@2x.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/03/Blog-Without-Text@2x.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/03/Blog-Without-Text@2x.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;about-axione&quot;&gt;About Axione&lt;br&gt;&lt;/h2&gt;&lt;p&gt;&lt;a href=&quot;https://www.axione.com/en/?ref=containous.ghost.io&quot;&gt;Axione&lt;/a&gt; is a French telecommunications company that builds and operates network infrastructures across different cities and regions locally and abroad. It helps local authorities in their Public Initiative Network projects with a range of infrastructures and services to support the development and adoption of digital technology. It operates over 6 million Fiber to the Home (FITH) in 6,500 cities and has a workforce of 2,900 employees in 51 agencies.&lt;/p&gt;&lt;p&gt;Neil Orley, Head of SRE, and Alexandre Etmezguine, DevOps engineer, are part of the DevOps services team in the IT department. They are in charge of providing all IT services required to build network infrastructure, following the deployment of each project, and also equipping the sales department with the right tools to market their services.&lt;/p&gt;&lt;h2 id=&quot;overview&quot;&gt;Overview&lt;/h2&gt;&lt;p&gt;Axione operates an infrastructure that consists of three large independent clusters, each of which is in a dedicated data center. The DevOps team manages applications and services within each cluster, handling everything from replacing the disks, and applying network upgrades to upgrading virtual machines. Around 90% of the infrastructure is legacy, consisting of VMs running monolithic, Java-based applications inside Docker containers. The team is currently using HashiCorp Consul to maintain a service registry for configuring VMs.&lt;/p&gt;&lt;p&gt;For the DevOps team, maintaining the security of infrastructure and applications and deploying the right tools to facilitate their management are paramount to maintaining smooth operations for the business. Recently Axione also started modernizing its architecture with new microservices projects deployed in the public cloud and are experiencing new challenges in managing a hybrid architecture between clusters running on-premises and in the cloud.&lt;/p&gt;&lt;h2 id=&quot;choosing-traefik-as-an-integrated-api-gateway-and-reverse-proxy&quot;&gt;Choosing Traefik as an integrated API gateway and reverse proxy&lt;/h2&gt;&lt;p&gt;Prior to migrating to Traefik, Axione relied on Nginx as a reverse proxy. The team managed Nginx manually, requiring them to go to each server individually to test and deploy configurations. The team was spending countless hours configuring Nginx and started facing an exponential number of issues when different people needed to edit multiple configurations, directly impacting their production environments. &lt;/p&gt;&lt;p&gt;The Axione team could not deploy new configurations without first waiting to finish editing and updating the existing ones. They first tried to solve this issue by creating a DevOps pipeline to automate the deployment of any configuration changes. But later, when requirements to add SSO logins emerged, they faced additional difficulties with the integration and maintenance of their authentication solutions. As the team started struggling more and more, they began looking for alternative solutions to Nginx.&lt;/p&gt;&lt;blockquote&gt;“We were looking for a solution that could automate the configuration of service deployments to simplify and reduce maintenance costs.” &lt;br&gt;&lt;br&gt;Alexandre Etmezguine, SRE DevOps, Axione&lt;/blockquote&gt;&lt;p&gt;The team at Axione needed an &lt;a href=&quot;https://traefik.io/solutions/api-gateway/?ref=containous.ghost.io&quot;&gt;API gateway&lt;/a&gt; that could be extended with reverse proxy functionality. They benchmarked numerous solutions and selected Traefik as the best and most flexible solution to answer their needs.&lt;/p&gt;&lt;blockquote&gt;“When we benchmarked solutions, we found that Traefik&apos;s API gateway was the most adapted to our needs because of its flexibility, capabilities, and competitive price.” &lt;br&gt;&lt;br&gt;Alexandre Etmezguine, SRE DevOps, Axione&lt;/blockquote&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;post-cta-inline data-slug=&quot;learn-more-traefikee&quot; data-variant=&quot;large-no-image&quot;&gt;&lt;/post-cta-inline&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;traefik-simplifies-routing-configuration-service-deployment-and-maintenance&quot;&gt;Traefik simplifies routing, configuration, service deployment, and maintenance&lt;br&gt;&lt;/h2&gt;&lt;p&gt;The first requirement of the DevOps team was to find a solution that could easily automate the configuration and deployment of new services. Traefik&apos;s API gateway offers automated service discovery and routing, and also fully integrates with Axione’s CI/CD Git pipeline. Any changes are automatically and consistently pushed to all 3 clusters without any manual intervention. Today, it takes less than fifteen minutes to upgrade all their clusters with zero downtime, saving the team countless hours every month.&lt;/p&gt;&lt;p&gt;For the deployment of new services, the team uses Git’s pipeline capabilities as well as Traefik’s integration with HashiCorp Consul for service discovery. The service discovery integration with Traefik automatically generates a new configuration, making any deployment fully automated. As a result, the team now creates and populates environments for developers very quickly and is able to maintain DevOps practices across the development team.&lt;/p&gt;&lt;blockquote&gt;“With Traefik&apos;s API gateway, we update our 3 clusters in less than 15 minutes with no downtime. We are saving so much time.” &lt;br&gt;&lt;br&gt;Alexandre Etmezguine, SRE DevOps, Axione&lt;/blockquote&gt;&lt;h2 id=&quot;traefik-strengthens-application-security&quot;&gt;Traefik strengthens application security&lt;/h2&gt;&lt;p&gt;Given the growing array of cyber attacks in today’s world, security is a top priority for Axione. The DevOps team was looking for an integrated solution that could provide both reverse proxy and authentication capabilities. With Traefik, the team strengthened the security posture of their APIs and applications by using the &lt;a href=&quot;https://doc.traefik.io/traefik-enterprise/middlewares/oidc/?ref=containous.ghost.io&quot;&gt;OIDC middleware&lt;/a&gt; to integrate SSO logins. The team also integrates security headers to applications to forbid certain paths and routes to protect dangerous paths. &lt;/p&gt;&lt;p&gt;And thanks to &lt;a href=&quot;https://plugins.traefik.io/plugins?ref=containous.ghost.io&quot;&gt;Traefik’s library of plugins&lt;/a&gt; that include custom features, the team also integrates security features to rewrite header responses and add web application firewall capabilities. Traefik’s catalog of plugins consists of more than 100 plugins to this day.&lt;/p&gt;&lt;blockquote&gt;“We are leveraging Traefik’s middleware and plugins. It is so easy to use. With only 2 lines of code, we have a plugin working”&lt;br&gt;&lt;br&gt;Alexandre Etmezguine, SRE DevOps, Axione&lt;/blockquote&gt;&lt;h2 id=&quot;traefik-is-a-highly-available-and-performant-solution&quot;&gt;Traefik is a highly available and performant solution&lt;/h2&gt;&lt;p&gt;Traefik&apos;s API gateway equips Axione with a highly available platform to ensure they never lose any application requests. In the event the control plane is inaccessible, the data plane continues to work, serving application requests uninterrupted. Because of this high degree of availability, Axione today uses Traefik to route 100% of their traffic. &lt;/p&gt;&lt;p&gt;Traefik’s architecture has also increased the performance of Axione’s applications. Immediately after deploying some applications behind Traefik, Axione saw significant performance and latency improvements (about 20%) compared to running the same applications behind Nginx (visualized 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/03/before-traefikee-after-traefikee.png&quot; class=&quot;kg-image&quot; alt=&quot;&quot; loading=&quot;lazy&quot; width=&quot;1308&quot; height=&quot;397&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/03/before-traefikee-after-traefikee.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/03/before-traefikee-after-traefikee.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/03/before-traefikee-after-traefikee.png 1308w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;blockquote&gt;“Traefik&apos;s API gateway instantly improved our application performance, even for our legacy applications, and it is quite impressive.”&lt;/blockquote&gt;&lt;blockquote&gt;“Traefik is highly distributed and available, which is important for us because we can update our clusters without any downtime.”&lt;br&gt;&lt;br&gt;Alexandre Etmezguine, SRE DevOps, Axione&lt;/blockquote&gt;&lt;h2 id=&quot;traefiks-api-gateway-is-infrastructure-agnostic&quot;&gt;Traefik&apos;s API Gateway is infrastructure-agnostic.&lt;/h2&gt;&lt;p&gt;The team at Axione is beginning to deploy services in the cloud to see how they can manage hybrid architectures that will stretch their clusters across on-prem and cloud environments. Because Traefik is infrastructure-agnostic and works in both legacy environments and cloud native environments, it can be used seamlessly both on-premises and in the cloud, with or without an orchestrator. &lt;/p&gt;&lt;p&gt;The team began exploring different orchestrators to use in the future. They are planning on switching to Kubernetes but are also looking at alternatives like HashiCorp Nomad. Traefik&apos;s API gateway is also orchestrator-agnostic and will remain their solution of choice regardless of the container orchestrator they choose.&lt;/p&gt;&lt;blockquote&gt;“We secure applications and infrastructure while deploying tools that improve project management with the Agile methodology. We have begun to modernize our architecture with a microservice strategy and have started deploying new services in the cloud. The nice thing about Traefik is that it works with both legacy and cloud environments so we don’t have to learn and adopt a new tool as we adopt new cloud native architectures.” &lt;br&gt;&lt;br&gt;Alexandre Etmezguine, SRE DevOps, Axione&lt;/blockquote&gt;&lt;h2 id=&quot;traefik-labs-offers-247-enterprise-support&quot;&gt;Traefik Labs offers 24/7 enterprise support.&lt;/h2&gt;&lt;p&gt;Given that uptime is a core requirement for Axione, the DevOps team required enterprise-grade support to ensure their system remains always operational. Traefik Labs offers unparalleled, 24x7 support to maintain the stability of the infrastructure. Axione has had a very positive experience with the support team.&lt;/p&gt;&lt;blockquote&gt;“We have a terrific relationship with the support team at Traefik. David has helped us understand our architecture and what we wanted to achieve with Traefik&apos;s API gateway. We are very happy with the support, which is very efficient.” &lt;br&gt;&lt;br&gt;Alexandre Etmezguine, SRE DevOps, Axione&lt;/blockquote&gt;&lt;h2 id=&quot;results&quot;&gt;Results&lt;/h2&gt;&lt;p&gt;Axione today uses Traefik’s API gateway for both VMs and microservices. Axione has migrated all staging and production environments to Traefik and all public and private traffic of their applications enters through Traefik&apos;s API gateway. Axione currently has 250 applications and more than 1000 application URLs running behind Traefik.&lt;/p&gt;&lt;h2 id=&quot;bottom-line&quot;&gt;Bottom line&lt;/h2&gt;&lt;p&gt;Axione is in the process of modernizing its infrastructure, deploying new applications in microservices in the cloud. All applications are routed through Traefik&apos;s API gateway, which will remain the solution being used as they modernize their infrastructure. Traefik is a secure, performant, automated, and infrastructure-agnostic solution. It is part of a thriving ecosystem that allows the team to tap into a vast array of capabilities and integrations with cloud native solutions. As Axione continues scaling and modernizing its infrastructure, it will continue relying on Traefik.&lt;/p&gt;&lt;blockquote&gt;“We started our journey with Traefik a year ago and are now renewing the contract for three years. We would definitely recommend Traefik&apos;s API gateway.”&lt;br&gt;&lt;br&gt;Neil Orley, Head of SRE, Axione&lt;/blockquote&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Reducing Your Infrastructure Costs by Consolidating Networking Tools]]></title>
            <description><![CDATA[Need to cut business costs? Consider your networking stack. This article shows you how to consolidate networking tools and reduce infrastructure costs.]]></description>
            <link>https://traefik.io/reduce-infrastructure-costs-by-consolidating-networking-tools</link>
            <guid isPermaLink="true">https://traefik.io/reduce-infrastructure-costs-by-consolidating-networking-tools</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[Microservices]]></category>
            <category><![CDATA[DevOps]]></category>
            <category><![CDATA[Strategy]]></category>
            <category><![CDATA[Guides]]></category>
            <dc:creator><![CDATA[Christian Turnipseed]]></dc:creator>
            <pubDate>Fri, 24 Mar 2023 11:11: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/2023/03/Blog_without_copies@2x--4-.jpg&quot; class=&quot;kg-image&quot; alt=&quot;reduce costs by consolidating networking tools&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/03/Blog_without_copies@2x--4-.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/03/Blog_without_copies@2x--4-.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/03/Blog_without_copies@2x--4-.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/03/Blog_without_copies@2x--4-.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Migration to the cloud and containers &lt;a href=&quot;https://www.stateofthenetwork.com/studies/2023.php?ref=containous.ghost.io&quot;&gt;has left a scattered ingress landscape&lt;/a&gt;. As a result, &lt;a href=&quot;https://traefik.io/blog/networking-strategies-with-multi-cloud-hybrid-cloud-multi-orchestrator-architectures/?ref=containous.ghost.io&quot;&gt;modern infrastructure architectures&lt;/a&gt; rely on several different networking technologies and tools. Most infrastructures utilize four major networking tool categories: load balancers, reverse proxies, ingress controllers, and API gateways. However, many seemingly separate ingress tools have overlapping functionality. Identifying these overlaps brings an opportunity for significant cost savings.&lt;/p&gt;&lt;p&gt;These tools aim to simplify your overall routing strategy, primarily concerned with processing ingress traffic. They also balance traffic across multiple back ends, whether those are multiple applications or just multiple copies of our servers. All four tools also offer health checks to ensure they only route to valid healthy instances on the backend. What’s more, if we zoom in on &lt;a href=&quot;https://traefik.io/glossary/reverse-proxy/?ref=containous.ghost.io&quot;&gt;reverse proxies&lt;/a&gt;, &lt;a href=&quot;https://traefik.io/glossary/kubernetes-ingress-and-ingress-controller-101/?ref=containous.ghost.io&quot;&gt;ingress controllers&lt;/a&gt;, and &lt;a href=&quot;https://traefik.io/solutions/api-gateway/?ref=containous.ghost.io&quot;&gt;API gateways&lt;/a&gt; (excluding the &lt;a href=&quot;https://traefik.io/glossary/load-balancing-101-network-vs-application/?ref=containous.ghost.io&quot;&gt;load balancer&lt;/a&gt;), all of those use some combination of routing rules, providing a single entry point for multiple applications or APIs on the backend. &lt;/p&gt;&lt;p&gt;So, how do all these pieces play in as part of a networking stack, and how does a consolidated approach work?&lt;/p&gt;&lt;h2 id=&quot;the-state-of-networking&quot;&gt;The state of networking&lt;/h2&gt;&lt;p&gt;In the complex world of &lt;a href=&quot;https://traefik.io/glossary/understanding-cloud-networking/?ref=containous.ghost.io&quot;&gt;cloud networking&lt;/a&gt;, it’s easy to end up with separate ingress controllers, proxies, load balancers, and other tools with overlapping functionalities. The diagram below shows a representative example of the infrastructure used by many organizations running a networking stack, for instance, in a public cloud provider.&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/03/Diagram-1--4-.jpg&quot; class=&quot;kg-image&quot; alt=&quot;infrastructure architecture with seperate load balancers, reverse proxies, ingress controllers, and API gateways&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1600&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/03/Diagram-1--4-.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/03/Diagram-1--4-.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/03/Diagram-1--4-.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/03/Diagram-1--4-.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The example architecture above includes a Kubernetes cluster with a number of pods that are running, user applications, as well as API services. These apps and services live behind an &lt;a href=&quot;https://traefik.io/solutions/kubernetes-ingress/?ref=containous.ghost.io&quot;&gt;ingress controller&lt;/a&gt; in the cluster and a cloud load balancer that fronts the ingress controller itself. This infrastructure also includes a collection of API services running outside of Kubernetes — those could be running on virtual machine (VM) instances or containers outside of a Kubernetes orchestration platform. And last but not least, a set of virtual machine instances is used to run applications. &lt;/p&gt;&lt;p&gt;In this scenario, you would implement a reverse proxy in front of those VM applications, a load balancer across the copies of our API server, and an &lt;a href=&quot;https://traefik.io/solutions/api-gateway/?ref=containous.ghost.io&quot;&gt;API gateway&lt;/a&gt; in front of the API instances and API pods in your cluster. &lt;/p&gt;&lt;p&gt;As you can see, this is getting complicated quickly, having to configure and manage different tools deployed into your stack that, in many cases, handle relatively similar or overlapping functionalities.&lt;/p&gt;&lt;p&gt;The multitude of tools used in an infrastructure like this one often translates to a multitude of different vendors, which in turn increases costs, configuration, and management complexity. Managing that level of complexity often requires a significant amount of internal  IT resources in the form of dedicated representation for each tool or asset. Communication between different tools and vendors is also tricky and may require a lot of internal resources to implement workarounds that guarantee each tool works the way you need it to. &lt;/p&gt;&lt;!--kg-card-begin: html--&gt;&lt;post-cta-inline data-slug=&quot;watch-webinar-traefikee&quot; data-variant=&quot;large-no-image&quot;&gt;&lt;/post-cta-inline&gt;&lt;!--kg-card-end: html--&gt;&lt;h2 id=&quot;key-considerations-for-consolidation&quot;&gt;Key considerations for consolidation&lt;/h2&gt;&lt;p&gt;Consolidating tools is a process that takes time to happen. You and your team need to identify tools that can take over multiple roles within your network (effectively replacing the various tools you currently use), fill gaps where needed, and formulate a migration plan. But how do you reach the decision to consolidate? How and when is it the right option for you? And where to begin? Here are five key questions that will help you kick off your consolidation efforts.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Where do tool functionalities overlap in my network architecture?&lt;/li&gt;&lt;li&gt;Which tools are flexible enough to fill multiple ingress network roles?&lt;/li&gt;&lt;li&gt;What constraints exist that inform where tools can be consolidated? (networking rules, compliance, performance)&lt;/li&gt;&lt;li&gt;Where should my consolidated network stack run primarily?&lt;/li&gt;&lt;li&gt;Do I need multiple layers of load balancing?&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Once you have answered these questions with the help of your IT team, move on to the four main steps of consolidation.&lt;/p&gt;&lt;ol&gt;&lt;li&gt;Diagram network flows. Visualize your infrastructure by mapping out your network flow.&lt;/li&gt;&lt;li&gt;Identify duplicate components within the diagram of your architecture.&lt;/li&gt;&lt;li&gt;Pick a tool to use as a consolidated ingress.&lt;/li&gt;&lt;li&gt;Plan migration approach from current routing to consolidated routing.&lt;/li&gt;&lt;/ol&gt;&lt;p&gt;The last step of consolidation (i.e., migration) is the most critical. This process is not something that you can plug and play overnight and magically solve all your issues. Teams have multiple projects to handle, sprint schedules to adhere to, deadlines to meet, etc. Migrations are never easy but sometimes necessary, the timing of a consolidation effort should be planned so that minimal downtime is achieved.&lt;/p&gt;&lt;h2 id=&quot;consolidating-networking-tools-saves-you-time-and-money&quot;&gt;Consolidating networking tools saves you time and money&lt;/h2&gt;&lt;p&gt;As it is universally accepted, time is money. The complexities of managing different tools and vendors weigh in on the time management of your IT staff. That is why consolidating your networking tools into a unified platform or tool that handles all of these major categories (load balancers, reverse proxies, ingress controllers, and API gateways) can be a game changer.&lt;/p&gt;&lt;p&gt;Let’s revisit that architecture diagram we went through earlier and take a look at how that&lt;/p&gt;&lt;p&gt;example architecture can be condensed down to a more streamlined, consolidated approach.&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/03/Diagram-2--4-.jpg&quot; class=&quot;kg-image&quot; alt=&quot;consolidated infrastructure architecture with unified ingress controller&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1600&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/03/Diagram-2--4-.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/03/Diagram-2--4-.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/03/Diagram-2--4-.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/03/Diagram-2--4-.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;In the consolidated version of the example architecture, you can see that the separate tools for load balancer, reverse proxy, API gateway, and ingress controller are consolidated down to a single component. &lt;/p&gt;&lt;p&gt;While that component is within the Kubernetes cluster, labeled in the diagram as an ingress controller, it’s actually handling all of those different functionalities, doing load balancing to your instances on the backend, handling routing based on the reverse proxy-like rules either to your pods within the Kubernetes cluster, or the resources outside of it, and handling the routing for your non-Kubernetes workloads. It also handles the API gateway type functionality, so it handles your security measures — like authorization and authentication — or the rate limiting and more sophisticated traffic handling functionalities.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; In the example diagram, not every functionality has been consolidated down into a single ingress tool — the load balancer still lives in front of the consolidated ingress controller. The reason for this is that, in many cases, multiple layers of load balancing may need to happen. So, that means having a consolidated ingress tool handling most of your routing and load balancing for your existing APIs and applications but still needing some load balancing for the ingress controller components.&lt;/p&gt;&lt;p&gt;At this point, it is important to note that consolidating all the separate tools into a single component requires a tool that is flexible enough to route to all those different instances — whether that means plugging in different service discovery mechanisms, being able to route statically to the different instances, handling higher level functions like security, authorization, and authentication, and any other functionality that’s going to be critical in selecting exactly what we’re going to consolidate on.&lt;/p&gt;&lt;h2 id=&quot;consolidation-with-traefik-enterprise&quot;&gt;Consolidation with Traefik Enterprise&lt;/h2&gt;&lt;p&gt;Consolidating your networking tools may sound like a lot of work, but its benefits come in many different forms. In my day-to-day talks with customers, these are the main benefits that I most encounter that resonate with them as their key reasons for moving to a consolidated networking solution like Traffic Enterprise:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Cost-saving in the form of reduced cloud spend or on-prem hardware reallocation&lt;/li&gt;&lt;li&gt;Time-saving on the management of separate networking tools&lt;/li&gt;&lt;li&gt;Fewer network hops and reduced latency improves overall performance&lt;/li&gt;&lt;li&gt;Easier enforcement of security standards&lt;/li&gt;&lt;/ul&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 unified enterprise-grade solution for ingress and API gateway functionality with a distributed architecture for High availability and enables you to scale with your business needs. With these features in mind, let’s revisit that initial architecture diagram once more and look at how exactly you would use a tool like Traefik Enterprise to be the consolidated ingress and API gateway solution in this type of consolidated network architecture.&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/03/Diagram-3--2-.jpg&quot; class=&quot;kg-image&quot; alt=&quot;consolidated infrastructure architecture with unified api gateway&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1600&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/03/Diagram-3--2-.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/03/Diagram-3--2-.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/03/Diagram-3--2-.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/03/Diagram-3--2-.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Traefik Enterprise leverages the multiple providers that can be used for service discovery — i.e., the ingress definition for your routing rules or an ingress route custom resource. Outside of Kubernetes, Traefik Enterprise leverages a file provider or a KV store to point to your non-Kubernetes workloads while still being able to route all of those different routing rules from a single consolidated ingress rule. It also allows you to handle those &lt;a href=&quot;https://traefik.io/solutions/api-management/?ref=containous.ghost.io&quot;&gt;API gateway-type functionalities&lt;/a&gt; — handling various methods of authentication and authorization through middlewares, handling, automated TLS, termination, and certificate management, as well as rate limiting, and a bunch of other features you would expect from an API gateway. &lt;/p&gt;&lt;p&gt;If you want to learn more about how Traefik Enterprise can help your team reduce infrastructure costs, don’t hesitate to &lt;a href=&quot;https://info.traefik.io/en/request-demo-traefik-enterprise?ref=containous.ghost.io&quot;&gt;book a demo&lt;/a&gt; with us or start your &lt;a href=&quot;https://info.traefik.io/get-traefik-enterprise-free-for-30-days?ref=containous.ghost.io&quot;&gt;free 30-day trial today&lt;/a&gt;!&lt;/p&gt;&lt;!--kg-card-begin: html--&gt;&lt;post-cta-inline data-slug=&quot;demo-traefikee&quot; data-variant=&quot;large-with-image&quot;&gt;&lt;/post-cta-inline&gt;&lt;!--kg-card-end: html--&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt;&lt;p&gt;&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Building Your Networking Strategy Using Multi-Cloud, Hybrid Cloud or Multi-Orchestrator Architectures]]></title>
            <description><![CDATA[Explore hybrid cloud, multi-cloud, and multi-orchestrator architectures for your networking strategy and the differences between their basic and unified forms.]]></description>
            <link>https://traefik.io/networking-strategies-with-multi-cloud-hybrid-cloud-multi-orchestrator-architectures</link>
            <guid isPermaLink="true">https://traefik.io/networking-strategies-with-multi-cloud-hybrid-cloud-multi-orchestrator-architectures</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Microservices]]></category>
            <category><![CDATA[Kubernetes]]></category>
            <category><![CDATA[DevOps]]></category>
            <category><![CDATA[Strategy]]></category>
            <dc:creator><![CDATA[Kate Mikula]]></dc:creator>
            <pubDate>Tue, 07 Mar 2023 15:23: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/2023/03/Blog-without-copies@2x.jpg&quot; class=&quot;kg-image&quot; alt=&quot;networking strategies with hybrid-cloud vs multi-cloud vs multi-orchestrator 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/2023/03/Blog-without-copies@2x.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/03/Blog-without-copies@2x.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/03/Blog-without-copies@2x.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/03/Blog-without-copies@2x.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;As businesses and their applications grow, so do the demands placed on their networks. &lt;a href=&quot;https://traefik.io/glossary/understanding-cloud-networking/?ref=containous.ghost.io&quot;&gt;Networking&lt;/a&gt; strategies are required to manage so many services spread across such a broad surface. But with so many kinds of networks out there, it isn’t always obvious which kind your organization is managing. &lt;/p&gt;&lt;p&gt;The terms hybrid cloud, multi-cloud, and multi-orchestrator are often used interchangeably, but they are three distinctly different architectures used in networking strategies, each with its own advantages and disadvantages. In this article, we will explore each in detail and highlight the differences between their basic and unified forms.&lt;/p&gt;&lt;h2 id=&quot;hybrid-cloud-architectures&quot;&gt;Hybrid cloud architectures&lt;/h2&gt;&lt;p&gt;Hybrid cloud architectures run workloads in both data centers controlled by the organization as well as in public or private cloud infrastructures. There are many reasons a company would pursue this architecture. &lt;/p&gt;&lt;p&gt;A hybrid cloud setup may be a temporary phase of a wider cloud migration project. For example, a company may run legacy services in VMs or bare servers in an internal data center while also introducing microservices to a container orchestrator in a public cloud provider. A hybrid cloud setup may also be required in industries, such as healthcare and financial services, that handle sensitive information and are highly regulated. Sensitive information can be stored in internal data centers, while less sensitive information in the cloud.&lt;/p&gt;&lt;p&gt;Let’s examine what basic and unified hybrid cloud architectures look like.&lt;/p&gt;&lt;h3 id=&quot;what-is-a-basic-hybrid-cloud-architecture&quot;&gt;What is a basic hybrid cloud architecture?&lt;/h3&gt;&lt;p&gt;&lt;a href=&quot;https://traefik.io/glossary/hybrid-cloud-vs-multi-cloud-architectures/?ref=containous.ghost.io&quot;&gt;Hybrid cloud architectures&lt;/a&gt; combine public and private clouds. An example of an architecture might have some legacy services running in VMs in a data center with a &lt;a href=&quot;https://traefik.io/glossary/reverse-proxy/?ref=containous.ghost.io&quot;&gt;reverse proxy&lt;/a&gt; routing traffic to individual services and also have a Kubernetes cluster running applications within pods in the cluster. An ingress controller handles a similar role to the &lt;a href=&quot;https://traefik.io/traefik/?ref=containous.ghost.io&quot;&gt;reverse proxy&lt;/a&gt; on-prem, handling incoming requests and routing them to the correct pod in the backend. DNS records point traffic to the cloud and data center. This architecture is usually the first step in a cloud migration process.&lt;/p&gt;&lt;p&gt;Thee are several challenges to be aware of when adopting this architecture, such as how to handle the initial routing by environment. The DNS will route traffic based on the environment within which an application is living. The routing infrastructure is redundant, as the &lt;a href=&quot;https://traefik.io/glossary/kubernetes-ingress-and-ingress-controller-101/?ref=containous.ghost.io&quot;&gt;ingress controller&lt;/a&gt; and reverse proxy handle similar functions but in different 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/2023/03/BASIC-HYBRID-MULTICLOUD-ARCHITECTURE.jpg&quot; class=&quot;kg-image&quot; alt=&quot;basic hybrid cloud architecture&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1835&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/03/BASIC-HYBRID-MULTICLOUD-ARCHITECTURE.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/03/BASIC-HYBRID-MULTICLOUD-ARCHITECTURE.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/03/BASIC-HYBRID-MULTICLOUD-ARCHITECTURE.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/03/BASIC-HYBRID-MULTICLOUD-ARCHITECTURE.jpg 2127w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h3 id=&quot;what-is-a-unified-hybrid-cloud-architecture&quot;&gt;What is a unified hybrid cloud architecture?&lt;/h3&gt;&lt;p&gt;A unified hybrid cloud architecture is a variation of a basic hybrid cloud architecture that consolidates the routing approach. A centralized ingress controller handles everything, routing traffic from the internet to internal pods within a cluster and also to legacy services within a data center. This approach is simpler to manage, as there are fewer routing tools and infrastructure components to manage. This reduces maintenance and room for error.&lt;/p&gt;&lt;p&gt;Pick a &lt;a href=&quot;https://traefik.io/traefik-enterprise/?ref=containous.ghost.io&quot;&gt;unified ingress tool&lt;/a&gt; that is compatible with different workload types. It should be able to handle Kubernetes &lt;a href=&quot;https://traefik.io/glossary/service-discovery/?ref=containous.ghost.io&quot;&gt;service discovery&lt;/a&gt; as well as the routing of traffic to static IPs or host names in VMs in the data center. While less maintenance is required, more planning is involved. &lt;/p&gt;&lt;p&gt;Ask yourself a few &lt;a href=&quot;https://traefik.io/blog/acing-cloud-networking-with-traefik-enterprise/?ref=containous.ghost.io&quot;&gt;key questions when adopting a unified ingress tool&lt;/a&gt;. Is your application particularly sensitive to latency? Do you need to think about networking and firewall rules, so ports and protocols open effectively to communicate across different environments? Is everything that shouldn’t be open for communication secure? Your chosen tool should effectively and securely handle separate workload types across multiple 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/2023/03/UNIFIED-HYBRID-MULTICLOUD-ARCHITECTURE.jpg&quot; class=&quot;kg-image&quot; alt=&quot;unified hybrid cloud architecture&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1835&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/03/UNIFIED-HYBRID-MULTICLOUD-ARCHITECTURE.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/03/UNIFIED-HYBRID-MULTICLOUD-ARCHITECTURE.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/03/UNIFIED-HYBRID-MULTICLOUD-ARCHITECTURE.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/03/UNIFIED-HYBRID-MULTICLOUD-ARCHITECTURE.jpg 2127w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;!--kg-card-begin: html--&gt;&lt;post-cta-inline data-slug=&quot;download-pdf-ingress&quot; data-variant=&quot;large-with-image&quot;&gt;&lt;/post-cta-inline&gt;&lt;!--kg-card-end: html--&gt;&lt;h2 id=&quot;multi-cloud-architectures&quot;&gt;Multi-cloud architectures&lt;/h2&gt;&lt;p&gt;Rather than running a set of workloads in a single cloud provider, companies leveraging multi-cloud architectures use several. They might have one Kubernetes deployment running in GKE and GCP, some containers running as ECS services in AWS, and maybe a few VMs running in Azure. Obviously, these workload types are interchangeable across different cloud providers. &lt;a href=&quot;https://hackernoon.com/cloud-wars-aws-vs-azure-vs-google-cloud?ref=containous.ghost.io&quot;&gt;Hyperscale cloud providers&lt;/a&gt; have long competed with each other for market share, and multi-cloud architectures allow companies to take advantage of several.&lt;/p&gt;&lt;p&gt;There are many benefits to this approach. &lt;a href=&quot;https://traefik.io/glossary/hybrid-cloud-vs-multi-cloud-architectures/?ref=containous.ghost.io&quot;&gt;Multi-cloud architectures&lt;/a&gt; increase resilience and fault tolerance. While you hopefully don’t need to plan for a major public cloud outage, it’s still a good idea to have a risk mitigation strategy that spreads your deployments across vendors. A multi-cloud architecture could be part of an overall strategy for cost optimization, as different cloud providers might have comparable services at varying prices. You may also want to take advantage of unique services offered by different providers. Multi-cloud architectures also help you avoid the &lt;a href=&quot;https://www.infoworld.com/article/3623721/cloud-lock-in-is-real.html?ref=containous.ghost.io&quot;&gt;vendor lock-in&lt;/a&gt; that comes from putting all your eggs in one basket (just be careful of avoiding multi-cloud lock-in).&lt;/p&gt;&lt;h3 id=&quot;what-is-a-basic-multi-cloud-architecture&quot;&gt;What is a basic multi-cloud architecture?&lt;/h3&gt;&lt;p&gt;Let’s walk through an example of a standard multi-cloud architecture, which takes a DNS-based approach.&lt;/p&gt;&lt;p&gt;In the diagram below, a few ECS services live in an ECS cluster, a few Kubernetes pods in a GKE cluster, and a few VMs in Azure. In front of each set of workloads is a reverse proxy or ingress controller. The two terms can be used interchangeably here as they both transmit incoming requests to the correct back-end service. The biggest challenge to overcome with this approach is that it is prescriptive, meaning the routing options are somewhat inflexible.&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/03/BASIC-MULTI-CLOUD-ARCHITECTURE-1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;basic multi-cloud architecture&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1835&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/03/BASIC-MULTI-CLOUD-ARCHITECTURE-1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/03/BASIC-MULTI-CLOUD-ARCHITECTURE-1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/03/BASIC-MULTI-CLOUD-ARCHITECTURE-1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/03/BASIC-MULTI-CLOUD-ARCHITECTURE-1.jpg 2127w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h3 id=&quot;what-is-a-unified-multi-cloud-architecture&quot;&gt;What is a unified multi-cloud architecture?&lt;/h3&gt;&lt;p&gt;A more evolved multi-cloud architecture adds a reverse proxy in the front that can be thought of as an edge reverse proxy or a layer one reverse proxy. The reverse proxy handles the initial routing to individual clusters and unifies routing.&lt;/p&gt;&lt;p&gt;A unified multi-cloud architecture allows for far more &lt;a href=&quot;https://academy.traefik.io/courses/advanced-load-balancing-w-traefik-proxy?ref=containous.ghost.io&quot;&gt;sophisticated load balancing schemes&lt;/a&gt;. For example, you can expose and route unified API host names across multiple clouds by leveraging path-based routing. You can abstract the location of the actual services away from client requests.&lt;/p&gt;&lt;p&gt;Unified multi-cloud architectures can increase latency, as they add an additional stop to the routing path. They also require manual configuration to keep the list of locations in the first layer up to date — unless you have a tool that supports the dynamic syncing of service lists. Either way, make sure you get up to speed on best practices for networking and security.&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/03/UNIFIED-MULTI-CLOUD-ARCHITECTURE.jpg&quot; class=&quot;kg-image&quot; alt=&quot;unified multi-cloud architecture&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1835&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/03/UNIFIED-MULTI-CLOUD-ARCHITECTURE.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/03/UNIFIED-MULTI-CLOUD-ARCHITECTURE.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/03/UNIFIED-MULTI-CLOUD-ARCHITECTURE.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/03/UNIFIED-MULTI-CLOUD-ARCHITECTURE.jpg 2127w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;multi-orchestrator-architectures&quot;&gt;Multi-orchestrator architectures&lt;/h2&gt;&lt;p&gt;Multi-orchestrator architectures consist of applications running as containers within more than one container orchestrator. This could take the form of different orchestrators running within the same cloud or environment, and it could also overlap with a hybrid or multi-cloud architecture.&lt;/p&gt;&lt;p&gt;For example, you could have a greenfield application running in a cloud-based Kubernetes cluster as well as existing services in Docker Swarm. A multi-orchestrator architecture could be temporary if you’re migrating between orchestrators. You might be consolidating on Kubernetes from Docker Swarm. This architecture might be less temporary if you have some applications with specific requirements that prevent full standardization on a particular orchestrator type.&lt;/p&gt;&lt;p&gt;Multi-orchestrator architectures must be unified, as it’s very difficult to network traffic without a consolidated solution. In a unified multi-orchestrator architecture, a reverse proxy sits in layer one to distribute traffic to reverse proxies and ingress controllers associated with different orchestrators. In the diagram below, we have Docker, Kubernetes, and &lt;a href=&quot;https://traefik.io/glossary/hashicorp-nomad-101/?ref=containous.ghost.io&quot;&gt;Nomad&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/2023/03/UNIFIED-MULTI-ORCHESTRATOR-ARCHITECTURE.jpg&quot; class=&quot;kg-image&quot; alt=&quot;unified multi-orchestrator architecture&quot; loading=&quot;lazy&quot; width=&quot;2000&quot; height=&quot;1835&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/03/UNIFIED-MULTI-ORCHESTRATOR-ARCHITECTURE.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/03/UNIFIED-MULTI-ORCHESTRATOR-ARCHITECTURE.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/03/UNIFIED-MULTI-ORCHESTRATOR-ARCHITECTURE.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/03/UNIFIED-MULTI-ORCHESTRATOR-ARCHITECTURE.jpg 2127w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;The benefits and challenges of multi-orchestrator architectures are similar to those found in a multi-cloud setup. This approach allows for flexibility. Networking updates are more readily changeable. If you choose to adopt a multi-orchestrator architecture, it’s important to select tools that can handle service discovery across different orchestrators, and that can hook into various orchestrator APIs. Automation is important too, as you will have to think about manual configurations if you don’t have a tool that automates the process for you. It will allow you to centrally configure security across all clusters.&lt;/p&gt;&lt;h2 id=&quot;how-to-evolve-your-advanced-networking-architecture-with-a-multi-layered-setup&quot;&gt;How to evolve your advanced networking architecture with a multi-layered setup&lt;/h2&gt;&lt;p&gt;Organizations managing advanced architectures will gain much from unifying their network. In hybrid cloud, multi-cloud, or multi-orchestrator architectures, a consolidated solution will increase efficiency and enable automation at scale. By adding a second reverse proxy or ingress controller to a second layer in front of your applications, you can unify your architecture.&lt;/p&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 unified &lt;a href=&quot;https://traefik.io/glossary/understanding-cloud-networking/?ref=containous.ghost.io&quot;&gt;cloud native networking&lt;/a&gt; solution that brings ingress control, API management, and &lt;a href=&quot;https://traefik.io/glossary/service-mesh-101/?ref=containous.ghost.io&quot;&gt;service mesh&lt;/a&gt; together in one simple &lt;a href=&quot;https://traefik.io/glossary/kubernetes-control-data-and-worker-planes/?ref=containous.ghost.io&quot;&gt;control plane&lt;/a&gt;. It eases microservices networking complexity for developers and operators across an organization. The Traefik Provider allows organizations to build and operate a multi-layer architecture, and many companies have found success in doing so. &lt;a href=&quot;https://www.amerisave.com/?ref=containous.ghost.io&quot;&gt;AmeriSave&lt;/a&gt; uses Traefik Enterprise to build a two-layer architecture within which they can seamlessly transfer traffic between Kubernetes clusters in Microsoft Azure and Docker clusters in on-prem environments.&lt;/p&gt;&lt;!--kg-card-begin: html--&gt;&lt;post-cta-inline data-slug=&quot;case-study&quot; data-variant=&quot;large-no-image&quot;&gt;&lt;/post-cta-inline&gt;&lt;!--kg-card-end: html--&gt;&lt;p&gt;In many organizations that have reached a certain scale, more than one architecture will be in play. Some of the approaches we’ve looked at are a temporary product of a migration effort. Others are set up intentionally for the long term. &lt;/p&gt;&lt;p&gt;Think about your &lt;a href=&quot;https://info.traefik.io/en/webinar-advanced-networking-architectures?ref=containous.ghost.io&quot;&gt;overall routing strategy when architecting&lt;/a&gt;. Make sure security is in place throughout. Learn whether it’s important to consolidate your networking solution with a multi-layered setup. Whether you embrace a hybrid-cloud, multi-cloud, and/or multi-orchestrator architecture, choose tools that are compatible with your setup and that simplify its management and configuration.&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;&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 hybrid cloud architecture?&quot;,
        &quot;acceptedAnswer&quot;: {
          &quot;@type&quot;: &quot;Answer&quot;,
          &quot;text&quot;: &quot;&lt;p&gt;Hybrid cloud architectures combine public and private clouds. An example of an architecture might have some legacy services running in VMs in a data center with a reverse proxy routing traffic to individual services and also have a Kubernetes cluster running applications within pods in the cluster. An ingress controller handles a similar role to the reverse proxy on-prem, handling incoming requests and routing them to the correct pod in the back-end. DNS records point traffic to the cloud and data center. This architecture is usually the first step in a cloud migration process.&lt;/p&gt;&quot;
        }
      },
      {
        &quot;@type&quot;: &quot;Question&quot;,
        &quot;name&quot;: &quot;What is unified hybrid cloud architecture?&quot;,
        &quot;acceptedAnswer&quot;: {
          &quot;@type&quot;: &quot;Answer&quot;,
          &quot;text&quot;: &quot;&lt;p&gt;A unified hybrid cloud architecture is a variation of a basic hybrid cloud architecture that consolidates the routing approach. A centralized ingress controller handles everything, routing traffic from the internet to internal pods within a cluster and also to legacy services within a data center. This approach is simpler to manage, as there are fewer routing tools and infrastructure components to manage. This reduces maintenance and room for error.&lt;/p&gt;&quot;
        }
      },
      {
        &quot;@type&quot;: &quot;Question&quot;,
        &quot;name&quot;: &quot;What is multi-cloud architecture?&quot;,
        &quot;acceptedAnswer&quot;: {
          &quot;@type&quot;: &quot;Answer&quot;,
          &quot;text&quot;: &quot;&lt;p&gt;Rather than running a set of workloads in a single cloud provider, companies leveraging multi-cloud architectures use several. They might have one Kubernetes deployment running in GKE and GCP, some containers running as ECS services in AWS, and maybe a few VMs running in Azure. Obviously, these workload types are interchangeable across different cloud providers. Hyperscale cloud providers have long competed with each other for market share, and multi-cloud architectures allow companies to take advantage of several.&lt;/p&gt;&quot;
        }
      },
      {
        &quot;@type&quot;: &quot;Question&quot;,
        &quot;name&quot;: &quot;What is unified multi-cloud architecture?&quot;,
        &quot;acceptedAnswer&quot;: {
          &quot;@type&quot;: &quot;Answer&quot;,
          &quot;text&quot;: &quot;&lt;p&gt;A unified multi-cloud architecture is a more evolved multi-cloud architecture that adds a reverse proxy in the front that can be thought of as an edge reverse proxy or a layer one reverse proxy. The reverse proxy handles the initial routing to individual clusters and unifies routing. A unified multi-cloud architecture allows for far more sophisticated load balancing schemes. For example, you can expose and route unified API host names across multiple clouds by leveraging path-based routing. You can abstract the location of the actual services away from client requests.&lt;/p&gt;&quot;
        }
      },
      {
        &quot;@type&quot;: &quot;Question&quot;,
        &quot;name&quot;: &quot;What is multi-orchestrator architecture?&quot;,
        &quot;acceptedAnswer&quot;: {
          &quot;@type&quot;: &quot;Answer&quot;,
          &quot;text&quot;: &quot;&lt;p&gt;Multi-orchestrator architectures consist of applications running as containers within more than one container orchestrator. This could take the form of different orchestrators running within the same cloud or environment, and it could also overlap with a hybrid or multi-cloud architecture. Multi-orchestrator architectures must be unified, as it’s very difficult to network traffic without a consolidated solution. In a unified multi-orchestrator architecture, a reverse proxy sits in layer one to distribute traffic to reverse proxies and ingress controllers associated with different orchestrators.&lt;/p&gt;&quot;
        }
      }
    ]
  }
&lt;/script&gt;&lt;!--kg-card-end: html--&gt;&lt;p&gt;&lt;/p&gt;&lt;p&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[Unlock the Potential of Data APIs with Strong Authentication and Traefik Enterprise]]></title>
            <description><![CDATA[Exposing data held within legacy systems in a controlled way through APIs, microservices, etc., is often a challenge. Here's how strong authentication can help.]]></description>
            <link>https://traefik.io/data-apis-with-strong-authentication</link>
            <guid isPermaLink="true">https://traefik.io/data-apis-with-strong-authentication</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Access Control]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[Microservices]]></category>
            <category><![CDATA[Strategy]]></category>
            <category><![CDATA[Guides]]></category>
            <dc:creator><![CDATA[Matt Elgin]]></dc:creator>
            <pubDate>Tue, 28 Feb 2023 14:00: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/2023/02/Blog_without_copies@2x--2-.jpg&quot; class=&quot;kg-image&quot; alt=&quot;data apis with strong authentication&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/02/Blog_without_copies@2x--2-.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/02/Blog_without_copies@2x--2-.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/02/Blog_without_copies@2x--2-.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/02/Blog_without_copies@2x--2-.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;When it comes to enterprise IT infrastructure, security is of paramount importance. Between the need for data protection and privacy, regulatory requirements, and the constant threat of bad actors on the network, there is little room for error when designing and maintaining enterprise systems.&lt;/p&gt;&lt;p&gt;Because of this, strong authentication is a critical component of any IT modernization project. One of the top goals for enterprises today is to open up the data held within legacy systems and expose it through &lt;a href=&quot;https://traefik.io/blog/the-history-and-evolution-of-apis/?ref=containous.ghost.io&quot;&gt;APIs&lt;/a&gt;, microservices, and other modern means. And yet, while this data represents untapped business value, it’s essential to only expose it in controlled ways by using authentication to ensure each request’s validity.&lt;/p&gt;&lt;p&gt;Traefik can help. As a modern, cloud native edge router,&lt;a href=&quot;https://traefik.io/traefik/?ref=containous.ghost.io&quot;&gt; Traefik Proxy&lt;/a&gt; directs valid requests from the external network to applications and services, while minimizing the risk posed by malformed, malicious, or fraudulent requests. One way it can do this is by acting as an intermediary to ensure that transactions are authorized. What’s more,&lt;a href=&quot;https://traefik.io/traefik-enterprise/?ref=containous.ghost.io&quot;&gt; Traefik Enterprise&lt;/a&gt; bundles additional, exclusive features to provide enterprise-grade authentication — including support for&lt;a href=&quot;https://traefik.io/glossary/openid-connect-everything-you-need-to-know/?ref=containous.ghost.io&quot;&gt; OpenID Connect (OIDC)&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-no-image&quot;&gt;&lt;/post-cta-inline&gt;
&lt;!--kg-card-end: html--&gt;
&lt;h2 id=&quot;who-goes-there&quot;&gt;Who goes there?&lt;/h2&gt;&lt;p&gt;One of Traefik’s key concepts is its use of&lt;a href=&quot;https://docs.traefik.io/v2.2/middlewares/overview/?ref=containous.ghost.io&quot;&gt; middlewares&lt;/a&gt;, which are pluggable components that provide conditional controls over network traffic. These controls can take various forms, including enabling security features such as rate limiting, restricting requests by IP address, and authentication.&lt;/p&gt;&lt;p&gt;Traefik Enterprise&apos;s authentication middlewares work by referencing external authentication sources. Traefik Enterprise can act as a gatekeeper at the edge of the internal network by intercepting incoming requests and authenticating them against the external source before forwarding them to the appropriate applications.&lt;/p&gt;&lt;p&gt;This model can be particularly critical for legacy modernization projects because it allows authentication to occur externally to the application. You can add &lt;a href=&quot;https://traefik.io/solutions/api-management/?ref=containous.ghost.io&quot;&gt;modern authentication&lt;/a&gt; methods to legacy applications to satisfy the latest security requirements, without making any direct modifications to legacy code.&lt;/p&gt;&lt;p&gt;But this model is not only beneficial for modernizing legacy applications. The benefits of standardizing authentication and authorization at the &lt;a href=&quot;https://traefik.io/solutions/api-gateway/?ref=containous.ghost.io&quot;&gt;API gateway&lt;/a&gt; level apply equally to cloud native and legacy projects. Those benefits include reducing/eliminating duplication of effort, promoting compliance with security standards, and freeing up developers to work directly on the end applications instead of security features.&lt;/p&gt;&lt;h2 id=&quot;enterprise-options&quot;&gt;Enterprise options&lt;/h2&gt;&lt;p&gt;Traefik Enterprise offers several middlewares for enterprise authentication, and the collection continues to grow. Among the methods that Traefik Enterprise supports are:&lt;/p&gt;&lt;h3 id=&quot;json-web-tokens-jwt&quot;&gt;JSON web tokens (JWT)&lt;/h3&gt;&lt;p&gt;JWT is a popular tool used to authenticate 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 the things that an authenticated user is allowed to do. The Traefik Enterprise JWT middleware can be added to routers in the dynamic configuration and verifies that a token is provided in the &lt;code&gt;Authorization&lt;/code&gt; header. In case the token can&apos;t be passed as an &lt;code&gt;Authorization&lt;/code&gt; header, you can also add it as form data or as a query parameter.&lt;/p&gt;
&lt;h3 id=&quot;openid-connect-oidc&quot;&gt;OpenID Connect (OIDC)&lt;/h3&gt;&lt;p&gt;Traefik Enterprise also includes support for OIDC, 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 the &lt;a href=&quot;https://docs.containo.us/middlewares/oidc/?ref=containous.ghost.io&quot;&gt;OIDC Authentication middleware&lt;/a&gt;, you can secure your applications by delegating the authentication process to an external provider (e.g. Google Accounts, LinkedIn, GitHub, etc.) and obtaining the end user&apos;s session &lt;strong&gt;claims&lt;/strong&gt; and &lt;strong&gt;scopes&lt;/strong&gt; for authorization purposes.&lt;/p&gt;&lt;h3 id=&quot;lightweight-directory-access-protocol-ldap&quot;&gt;Lightweight Directory Access Protocol (LDAP)&lt;/h3&gt;&lt;p&gt;To verify user credentials (i.e. usernames and passwords) LDAP connects with a directory service that uses the LDAP protocol. The Traefik Enterprise &lt;a href=&quot;https://doc.traefik.io/traefik-enterprise/middlewares/ldap/?ref=containous.ghost.io&quot;&gt;LDAP middleware&lt;/a&gt; connects to an LDAP server to verify said credentials and was designed to avoid having sensitive information — such as LDAP credentials specified as labels (or in CRDs) by applications — and to allow multiple middlewares to reuse the same authentication method.&lt;/p&gt;&lt;h3 id=&quot;oauth2&quot;&gt;oAuth2&lt;/h3&gt;&lt;p&gt;OAuth2 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. Traefik Enterprise comes with two oAuth2 middlewares:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik-enterprise/middlewares/oauth-intro/?ref=containous.ghost.io&quot;&gt;OAuth 2.0 Token Introspection Authentication Middleware&lt;/a&gt;: Retrieving metadata about an access token from an oAuth2 server which can be used to restrict access to applications.&lt;/li&gt;&lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik-enterprise/middlewares/oauth-client-creds/?ref=containous.ghost.io&quot;&gt;OAuth 2.0 Client Credentials Authentication Middleware&lt;/a&gt;: Securing routes using the OAuth2 Client Credentials flow described in &lt;a href=&quot;https://www.rfc-editor.org/rfc/rfc6749.html?ref=containous.ghost.io#section-4.4&quot;&gt;RFC 6749&lt;/a&gt;.&lt;/li&gt;&lt;/ul&gt;&lt;h3 id=&quot;open-policy-agent-opa&quot;&gt;Open Policy Agent (OPA)&lt;/h3&gt;&lt;p&gt;OPA is an open source policy engine. By providing a high-level declarative language, OPA helps unify the processes of policy enforcement across the networking stack. OPA allows you to specify policy-as-code and APIs you can use to offload policy decision-making and, among others, it works in microservices, Kubernetes, CI/CD pipelines, and API gateways. With the Traefik Enterprise &lt;a href=&quot;https://doc.traefik.io/traefik-enterprise/middlewares/opa/?ref=containous.ghost.io&quot;&gt;Open Policy Agent middleware&lt;/a&gt;, you can restrict access to your services and enrich request headers with data extracted from policies.&lt;/p&gt;&lt;h3 id=&quot;hash-based-message-authentication-codes-hmac&quot;&gt;Hash-based Message Authentication Codes (HMAC)&lt;/h3&gt;&lt;p&gt;HMAC is a method of using cryptographic hash functions with a shared secret (also known as a symmetric key) to ensure the content delivered in an HTTP request is valid and genuine. Like digital signatures, HMAC can verify a message sender’s identity and that the message’s content is unaltered from the moment of the HMAC’s  creation. The technique can be used to secure file transfers, API calls, and other machine-to-machine interactions. This HMAC middleware uses the content of an HTTP request and a shared secret to validate a digital signature computed. The HTTP request and the shared secret are sent to the proxy using the &lt;code&gt;Authorization&lt;/code&gt; or &lt;code&gt;Proxy-Authorization&lt;/code&gt; header, ensuring the identity of the sender and the integrity of the request.&lt;/p&gt;
&lt;h2 id=&quot;authentication-the-easy-way&quot;&gt;Authentication the easy way&lt;/h2&gt;&lt;p&gt;The best thing about &lt;a href=&quot;https://traefik.io/solutions/api-gateway/?ref=containous.ghost.io&quot;&gt;implementing enterprise authentication&lt;/a&gt; using Traefik Enterprise, however, is how easy it is to do. Enabling any of the authentication middleware mentioned here is generally as simple as adding a few lines to your Traefik configuration to supply the necessary connection details, creating a middleware that points to your authentication source, and attaching that middleware to desired routers.&lt;/p&gt;&lt;p&gt;The authentication options available in Traefik Enterprise today offer a powerful range of options for exposing enterprise applications and data securely, without requiring extensive and risky legacy code changes. You can expect other such features to be included over time, as we continue our commitment to ensure Traefik Enterprise is a premier tool for enterprise application networking. To learn more about how Traefik and Traefik Enterprise can help you lock down enterprise data with secure authentication, watch our recent webinar, “&lt;a href=&quot;https://info.containo.us/webinar-recording-enterprise-best-practices-to-expose-and-secure-microservices-apis?ref=containous.ghost.io&quot;&gt;Enterprise best practices to expose and secure microservices and APIs&lt;/a&gt;”. In this webinar, we discuss deploying OAuth and OpenID Connect with Okta to secure user logins, and we walk you through enabling mutual TLS (mTLS) for secure machine-to-machine communications.&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;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Achieve Zero Downtime Access Control for Your Applications]]></title>
            <description><![CDATA[Learn how to implement access control for all applications, including legacy, in just a few clicks, with zero downtime, and no changes to the original app.]]></description>
            <link>https://traefik.io/zero-downtime-access-control-for-your-applications</link>
            <guid isPermaLink="true">https://traefik.io/zero-downtime-access-control-for-your-applications</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Access Control]]></category>
            <category><![CDATA[Strategy]]></category>
            <category><![CDATA[Guides]]></category>
            <dc:creator><![CDATA[Julien Salleyron]]></dc:creator>
            <pubDate>Tue, 21 Feb 2023 10:27:26 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/02/Blog@2x--25--1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;zero downtime access control&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/02/Blog@2x--25--1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/02/Blog@2x--25--1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/02/Blog@2x--25--1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/02/Blog@2x--25--1.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Access control secures your public-facing services and it is critical for all modern web applications. And it goes without saying that security is priority no.1 for the Traeifk Labs team and our users, that&apos;s why we provide access control as a built-in feature for &lt;a href=&quot;https://traefik.io/traefik-hub/?ref=containous.ghost.io&quot;&gt;Traefik Hub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;If you don’t already know our motto, Traefik Labs is on a mission to Make Networking Boring! Just providing built-in access control features wouldn’t cut it — it had to be simple and easy for the user to implement. So, we made sure Traefik Hub users could implement access control for their public-facing applications in just a few clicks, with zero downtime, and no changes to the original application.&lt;/p&gt;
&lt;p&gt;But wait! What do you mean by “access control” and how does it work, I can hear someone asking.&lt;/p&gt;
&lt;p&gt;Let’s take it from the beginning, shall we?&lt;/p&gt;
&lt;h2 id=&quot;defining-access-control&quot;&gt;Defining access control&lt;/h2&gt;
&lt;p&gt;Access control is the mechanism you implement between your application and the outside world to control and secure who can access your application. Needless to say, access control is critical. Without it, anyone can potentially gain access to your application and try to hack your data or break your system.&lt;/p&gt;
&lt;p&gt;Implementing access control for a single application is (almost) a piece of cake. Now, setting up access control for applications within a microservice architecture? That is a whole different monster. To properly protect your microservice applications, you need to implement access control policies for every single application in your system. Leave one application unprotected and you open a hole in your system, easily exploitable by malicious attackers.&lt;/p&gt;
&lt;p&gt;Not to mention, choosing a way to secure your applications — Google authentication, &lt;a href=&quot;https://traefik.io/glossary/openid-connect-everything-you-need-to-know/?ref=containous.ghost.io&quot;&gt;OpenID Connect (OIDC)&lt;/a&gt;, etc. — comes with its own configuration hustles.&lt;/p&gt;
&lt;p&gt;That’s where Traefik Hub comes in to simplify the way you set up and implement access control.&lt;/p&gt;
&lt;h2 id=&quot;complicated-access-control-mechanisms-are-a-thing-of-the-past&quot;&gt;Complicated access control mechanisms are a thing of the past&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&quot;https://doc.traefik.io/traefik-hub/access-control-policies/overview/?ref=containous.ghost.io&quot;&gt;Access Control Policy (ACP)&lt;/a&gt; feature in Traefik Hub is based on the &lt;a href=&quot;https://doc.traefik.io/traefik/middlewares/http/forwardauth/?ref=containous.ghost.io&quot;&gt;forward authentication mechanism&lt;/a&gt;. This means that your &lt;a href=&quot;https://traefik.io/glossary/reverse-proxy/?ref=containous.ghost.io&quot;&gt;reverse proxy&lt;/a&gt;, or &lt;a href=&quot;https://traefik.io/glossary/kubernetes-ingress-and-ingress-controller-101/?ref=containous.ghost.io&quot;&gt;ingress controller&lt;/a&gt; in Kubernetes, delegates the authentication process to the &lt;a href=&quot;https://github.com/traefik/hub-agent-kubernetes?ref=containous.ghost.io&quot;&gt;Traefik Hub agent&lt;/a&gt; to allow or deny access to your application.&lt;/p&gt;
&lt;p&gt;This way you can add advanced authentication mechanisms, like OIDC or JWT, on any application — yes, even legacy apps!&lt;/p&gt;
&lt;p&gt;When you enable an ACP on one of your services, Hub automatically configures the ForwardAuth feature on the reverse proxy you used to expose your application. ForwardAuth calls a URL on the Traefik Hub agent to validate and process the authentication workflow. Once this process is complete, and if the user is authorized, they get redirected to your application.&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/02/Diagram--3-.jpg&quot; class=&quot;kg-image&quot; alt=&quot;access control mechanism with zero downtime&quot; 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/02/Diagram--3-.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/02/Diagram--3-.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/02/Diagram--3-.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/02/Diagram--3-.jpg 2000w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Bottom line, the only thing you had to do was to configure your Access Control Policy within the Traefik Hub UI, and enjoy the fact that your services are now protected in just a few clicks — with zero configuration changes to your applications or your infrastructure!&lt;/p&gt;&lt;p&gt;But that’s enough talk — let’s get down to business and see the ACP feature in action. I have two examples prepared for you: a homelab setup and a production use case.&lt;/p&gt;&lt;p&gt;Let’s jump in.&lt;/p&gt;
&lt;!--kg-card-begin: html--&gt;
&lt;post-cta-inline data-slug=&quot;academy-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;access-control-for-your-homelab-project&quot;&gt;Access control for your homelab project&lt;/h2&gt;
&lt;p&gt;Let’s begin with a simple example of how to implement access control with Traefik Hub. In this example, I will show you how to publish a basic homelab project. For this example, I am using a simple &lt;a href=&quot;https://github.com/Motion-Project/motion?ref=containous.ghost.io&quot;&gt;motion-detecting application&lt;/a&gt;. To keep it simple, in my example I will only use this app to expose my camera. You can also configure the app to detect motion on your camera but we will not use this feature here.&lt;/p&gt;
&lt;p&gt;Before we get started, make sure you have the following installed on your machine:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Docker&lt;/li&gt;
&lt;li&gt;docker-compose&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;create-your-traefik-hub-cluster-with-docker-compose&quot;&gt;Create your Traefik Hub cluster with docker-compose&lt;/h3&gt;
&lt;p&gt;The first thing you need to do is to create your Traefk Hub account and install your first Traefik Hub Agent.&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/02/unnamed--7-.png&quot; alt=&quot;unnamed--7-&quot; loading=&quot;lazy&quot;&gt;&lt;/p&gt;
&lt;p&gt;Once the agent is installed, you can deploy the Traefik Hub Agent in your cluster. In this example, I am using the &lt;code&gt;docker-compose&lt;/code&gt; mode. Copy and paste the proposed &lt;code&gt;docker-compose&lt;/code&gt; command to deploy all this directly in your cluster.&lt;/p&gt;
&lt;p&gt;Now let’s create the configuration file for our motion application to expose the first camera. Create a &lt;code&gt;motion.conf&lt;/code&gt; file with this content:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;stream_port 8080
stream_localhost off
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then, we add our application in the &lt;code&gt;./docker-compose-hub-agent.yaml&lt;/code&gt; file created by this command.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# start the motion project (with privileged: true to simplify the camera configuration)
  motion:
	image: motionproject/motion:latest
	volumes:
	- ./motion.conf:/usr/local/etc/motion/motion.conf
	privileged: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now let’s reload the &lt;code&gt;docker-compose&lt;/code&gt; project:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;docker-compose -f ./docker-compose-hub-agent.yaml up -d
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Note I:&lt;/strong&gt; Here, for the sake of simplicity, I use the same &lt;code&gt;docker-compose&lt;/code&gt; for both my Traefik Hub Agent, Traefik Proxy, and MyApp. If you want to use a different &lt;code&gt;docker-compose&lt;/code&gt; for each, don&apos;t forget to add the &lt;code&gt;motion&lt;/code&gt; network on the Traefik Proxy container to allow Traefik Proxy to contact MyApp.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note II:&lt;/strong&gt; If you already have a Traefik Proxy instance installed, you can add the Traefik Hub configuration and reuse it instead of deploying a new one.&lt;/p&gt;
&lt;h3 id=&quot;publish-your-app&quot;&gt;Publish your app&lt;/h3&gt;
&lt;p&gt;To publish your application, click on the &lt;strong&gt;Service&lt;/strong&gt; name that represents your application, then click the &lt;strong&gt;Publish the service&lt;/strong&gt; button.&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/02/unnamed--4-.png&quot; alt=&quot;unnamed--4-&quot; loading=&quot;lazy&quot;&gt;&lt;br&gt;
&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/02/unnamed--8-.png&quot; alt=&quot;unnamed--8-&quot; loading=&quot;lazy&quot;&gt;&lt;/p&gt;
&lt;p&gt;Finally, type the port we configured for our motion application, &lt;code&gt;8080&lt;/code&gt;, in the &lt;strong&gt;Service Port&lt;/strong&gt; field, and click &lt;strong&gt;Save and Publish&lt;/strong&gt; to publish your application.&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/02/unnamed--3-.png&quot; alt=&quot;unnamed--3-&quot; loading=&quot;lazy&quot;&gt;&lt;br&gt;
&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/02/unnamed--6-.png&quot; alt=&quot;unnamed--6-&quot; loading=&quot;lazy&quot;&gt;&lt;/p&gt;
&lt;p&gt;Go to the URL Traefik Hub published for you, and you should see your camera.&lt;/p&gt;
&lt;p&gt;If you take a look at the URL, you may notice that it uses HTTPS with a valid certificate for your domain. However, this URL is not protected at all. To keep malicious individuals from watching your camera, you need to set an Access Control Policy.&lt;/p&gt;
&lt;h3 id=&quot;set-up-access-control-with-oidc-to-protect-your-service&quot;&gt;Set up access control with OIDC to protect your service&lt;/h3&gt;
&lt;p&gt;For this application, let’s add an ACP with OIDC and Google.&lt;/p&gt;
&lt;p&gt;First, go to &lt;a href=&quot;https://console.cloud.google.com/apis/credentials?ref=containous.ghost.io&quot;&gt;https://console.cloud.google.com/apis/credentials&lt;/a&gt; and create an OAuth client ID in the &lt;strong&gt;Create credentials&lt;/strong&gt; section.&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/02/unnamed--2-.png&quot; alt=&quot;unnamed--2-&quot; loading=&quot;lazy&quot;&gt;&lt;br&gt;
&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/02/unnamed--5-.png&quot; alt=&quot;unnamed--5-&quot; loading=&quot;lazy&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; You need to configure the redirect URL with the domain of your published service followed by &lt;code&gt;/callback&lt;/code&gt;.&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/02/unnamed--1-.png&quot; alt=&quot;unnamed--1-&quot; loading=&quot;lazy&quot;&gt;&lt;/p&gt;
&lt;p&gt;Now head back to the Traefik Hub and create your new ACP using the OIDC method. In the &lt;strong&gt;Provider&lt;/strong&gt; field, select OIDC Google. Fill out the &lt;strong&gt;Client ID&lt;/strong&gt; and &lt;strong&gt;Client Secret&lt;/strong&gt; with the info you got from Google Credentials, and configure the redirect URL with &lt;code&gt;/callback&lt;/code&gt; (the path we configured in Google Credentials).&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/02/unnamed.png&quot; alt=&quot;unnamed&quot; loading=&quot;lazy&quot;&gt;&lt;/p&gt;
&lt;p&gt;Add the users you want to authorize to access your application and save the ACP.&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/02/unnamed--14-.png&quot; alt=&quot;unnamed--14-&quot; loading=&quot;lazy&quot;&gt;&lt;br&gt;
&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/02/unnamed--15-.png&quot; alt=&quot;unnamed--15-&quot; loading=&quot;lazy&quot;&gt;&lt;/p&gt;
&lt;p&gt;All is done! Your service is published and secured thanks to your OIDC Access Control Policy.&lt;/p&gt;
&lt;h2 id=&quot;publish-and-secure-your-production-api&quot;&gt;Publish and secure your production API&lt;/h2&gt;
&lt;p&gt;Implementing access control for a simple homelab project was insanely simple, right? Now, let’s take it up a notch! Taking our example from your homelab to your production environment, let’s say you have a Kubernetes cluster with a service you want to publish and secure.&lt;/p&gt;
&lt;p&gt;Before we get started, make sure you have your Kubernetes cluster up and running.&lt;/p&gt;
&lt;h3 id=&quot;create-your-traefik-hub-cluster-with-kubernetes&quot;&gt;Create your Traefik Hub cluster with Kubernetes&lt;/h3&gt;
&lt;p&gt;Create your Hub cluster, just as we did earlier, choose the Kubernetes platform, and apply all the relevant snippets. This will deploy the Traefik Hub Agent and Traefik Proxy as the ingress in your cluster.&lt;/p&gt;
&lt;p&gt;Here’s an example of a service:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: apps/v1
kind: Deployment
metadata:
  labels:
    app: whami
  name: whoami
spec:
  replicas: 3
  selector:
    matchLabels:
      app: whoami
  template:
    metadata:
      labels:
        app: whoami
    spec:
      containers:
      - image: traefik/whoami
        name: whoami
        imagePullPolicy: Always
        ports:
        - containerPort: 80
          name: web
          protocol: TCP
---
apiVersion: v1
kind: Service
metadata:
  name: whoami
spec:
  ports:
  - name: web
    port: 80
    protocol: TCP
    targetPort: 80
  selector:
    app: whoami
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The only thing you have to do now is to find your service in the Traefik Hub UI and publish it.&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/02/unnamed--18-.png&quot; alt=&quot;unnamed--18-&quot; loading=&quot;lazy&quot;&gt;&lt;/p&gt;
&lt;p&gt;You can verify that it works with a curl call.&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/02/unnamed--19-.png&quot; alt=&quot;unnamed--19-&quot; loading=&quot;lazy&quot;&gt;&lt;/p&gt;
&lt;p&gt;Excellent! Now that your service is publicly available, let’s secure it with an ACP.&lt;/p&gt;
&lt;h3 id=&quot;set-up-access-control-with-jwt-to-protect-your-service&quot;&gt;Set up access control with JWT to protect your service&lt;/h3&gt;
&lt;p&gt;In this example, we will secure our service with the JWT Token Mechanism. Click on the &lt;strong&gt;Add Access Control&lt;/strong&gt; and select &lt;strong&gt;Create New ACP&lt;/strong&gt;. Here, we’ll create a new JWT policy with a signing secret.&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/02/unnamed--12-.png&quot; alt=&quot;unnamed--12-&quot; loading=&quot;lazy&quot;&gt;&lt;br&gt;
&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/02/unnamed--9-.png&quot; alt=&quot;unnamed--9-&quot; loading=&quot;lazy&quot;&gt;&lt;/p&gt;
&lt;p&gt;You can now add some forward headers, based on the claim you will add in the JWT token (see the step below).&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/02/unnamed--10-.png&quot; alt=&quot;unnamed--10-&quot; loading=&quot;lazy&quot;&gt;&lt;/p&gt;
&lt;p&gt;Now let’s try to call this service without a JWT Token.&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/02/unnamed--11-.png&quot; alt=&quot;unnamed--11-&quot; loading=&quot;lazy&quot;&gt;&lt;/p&gt;
&lt;p&gt;Indeed, we are not authorized to call this URL. Let’s add the JWT token. You can generate the JWT Token on jwt.io with a claim for name and the right signing secret. Then call the URL and add the Authorization Header.&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/02/unnamed--13-.png&quot; alt=&quot;unnamed--13-&quot; loading=&quot;lazy&quot;&gt;&lt;/p&gt;
&lt;h3 id=&quot;bonus-round-i&quot;&gt;Bonus round I&lt;/h3&gt;
&lt;p&gt;So, we just published a service and secured using ACP and we did so through Traefik Hub’s tunneling mechanism.&lt;/p&gt;
&lt;p&gt;But ACPs in Traefik Hub don’t necessarily have to use this tunneling mechanism. If you already have an ingress controller and an ingress set up to publish your service, you can add ACPs to your already existing ingress directly in the Traefik Hub UI.&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/02/unnamed--16-.png&quot; alt=&quot;unnamed--16-&quot; loading=&quot;lazy&quot;&gt;&lt;br&gt;
&lt;img src=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/02/unnamed--17-.png&quot; alt=&quot;unnamed--17-&quot; loading=&quot;lazy&quot;&gt;&lt;/p&gt;
&lt;p&gt;As you can see, when I tried to call the URL defined in my ingress, the JWT token and headers from the claim were automatically forwarded.&lt;/p&gt;
&lt;h3 id=&quot;bonus-round-ii&quot;&gt;Bonus round II&lt;/h3&gt;
&lt;p&gt;If you don’t want to use the Traefik Hub UI, but still want to take advantage of Traefik Hub’s ACP feature, you can use the AccessControlPolicy CRD directly in your cluster and apply it with the kubectl command.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: hub.traefik.io/v1alpha1
kind: AccessControlPolicy
metadata:
  name: jwt
spec:
  jwt:
    forwardHeaders:
      name: name
    signingSecret: my signing secret
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then you can add an annotation on your ingress to apply this ACP on your ingress&lt;br&gt;
&lt;code&gt;hub.traefik.io/access-control-policy&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: app-whoami
  annotations:
      hub.traefik.io/access-control-policy: jwt

spec:
  rules:
    - host: whoami.localhost
      http:
        paths:
          - path: /
            pathType: Prefix
            backend:
              service:
                name: whoami
                port:
                  number: 80
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;conclusion&quot;&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;And that’s how you do it!&lt;/p&gt;
&lt;p&gt;Simple and fast, Traefik Hub helps you secure your publicly available applications in, literally, a few clicks. If you want to learn more about the power of Traefik Hub, we have a bunch of resources that I recommend you check out:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Documentation — &lt;a href=&quot;https://doc.traefik.io/traefik-hub/?ref=containous.ghost.io&quot;&gt;Welcome to Traefik Hub&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Blog Post — &lt;a href=&quot;https://traefik.io/blog/traefik-hub-in-a-world-of-gitops/?ref=containous.ghost.io&quot;&gt;Traefik Hub in a World of GitOps&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;If you want to jump right in and start trying it out yourself, create your free account today!&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;!--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 access control?&quot;,
        &quot;acceptedAnswer&quot;: {
          &quot;@type&quot;: &quot;Answer&quot;,
          &quot;text&quot;: &quot;&lt;p&gt;Access control is the mechanism you implement between your application and the outside world to control and secure who can access your application. Needless to say, access control is critical. Without it, anyone can potentially gain access to your application and try to hack your data or break your system. &lt;/p&gt;&quot;
        }
      },
    ]
  }
&lt;/script&gt;
&lt;!--kg-card-end: html--&gt;
 ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[The History and Evolution of APIs]]></title>
            <description><![CDATA[Let's explore the history of APIs to understand how and why they have become such an integral part of modern software development.]]></description>
            <link>https://traefik.io/the-history-and-evolution-of-apis</link>
            <guid isPermaLink="true">https://traefik.io/the-history-and-evolution-of-apis</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[Microservices]]></category>
            <category><![CDATA[Strategy]]></category>
            <dc:creator><![CDATA[Kate Mikula]]></dc:creator>
            <pubDate>Tue, 07 Feb 2023 12:39: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/2023/02/Blog_without_copies@2x-1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;The history and evolution of apis&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/02/Blog_without_copies@2x-1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/02/Blog_without_copies@2x-1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/02/Blog_without_copies@2x-1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/02/Blog_without_copies@2x-1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;APIs have become an important part of the tech landscape. They’ve been around for decades and have evolved a fair amount since their inception. &lt;a href=&quot;https://en.wikipedia.org/wiki/API?ref=containous.ghost.io&quot;&gt;API&lt;/a&gt; stands for Application Programming Interface, which is a number of definitions for building application software. APIs use standardized protocols to allow services to communicate with each other without having to know how others are implemented. &lt;/p&gt;&lt;p&gt;In this blog post, we will explore their history in order to understand how and why they have become such an integral part of modern software development.&lt;/p&gt;&lt;h2 id=&quot;1950s-the-idea-of-an-api-was-born&quot;&gt;1950s: The idea of an API was born&lt;/h2&gt;&lt;p&gt;Back in the 1950s, an API was understood as a potential method to facilitate communication between two computers. The term was first mentioned in a 1951 book written by Maurice Wilkes and David Wheeler called ‘&lt;a href=&quot;https://en.wikipedia.org/wiki/The_Preparation_of_Programs_for_an_Electronic_Digital_Computer?ref=containous.ghost.io&quot;&gt;The Preparation of Programs for an Electronic Digital Computer&lt;/a&gt;&lt;em&gt;.&lt;/em&gt;’&lt;em&gt; &lt;/em&gt;It outlined several key computing terms, including an early version of an API. At this stage, an API was starting to exist, but they were limited to simple, command-line interfaces that enabled programmers to interact with computers. These early APIs set the stage for variations of APIs to crop up in the future.&lt;/p&gt;&lt;h2 id=&quot;1960s-and-70s-the-concept-of-an-api-evolved&quot;&gt;1960s and 70s: The concept of an API evolved&lt;/h2&gt;&lt;p&gt;Throughout the 1960s, computers started growing in popularity, and organizations were beginning to experiment with their uses&lt;em&gt;. &lt;/em&gt;The term API was understood at this time as the interaction of a single application with the rest of a computer system. By introducing a consistent application interface (usually Fortran subroutine calls), programmers could free themselves from the idiosyncrasies of the graphics display device. APIs were used to enable communication between mainframes and other systems, such as terminals and printers. They could benefit from hardware independence if a computer or display needed to be replaced.&lt;em&gt; &lt;/em&gt;In 1974 the term API was introduced in a paper called ‘The Relational and Network Approaches: Comparison of the Application Programming Interface.’&lt;em&gt; &lt;/em&gt;It introduced APIs to the world of databases. It became evident that APIs could combine different interfaces to support all types of programming.&lt;/p&gt;&lt;h2 id=&quot;1980s-apis-set-the-stage-for-the-internet&quot;&gt;1980s: APIs set the stage for the internet&lt;/h2&gt;&lt;p&gt;In the 1980s, computer networks started becoming commonplace and programmers needed to access libraries located both in their local computers and also in computers elsewhere. APIs enabled &lt;a href=&quot;https://en.wikipedia.org/wiki/Remote_procedure_call?ref=containous.ghost.io&quot;&gt;Remote Procedure Calls (RPCs)&lt;/a&gt; that were generally supported by Java. APIs played a critical role in enabling cross-platform compatibility, allowing developers to create applications that could run on multiple platforms.&lt;/p&gt;&lt;h2 id=&quot;1990s-apis-started-growing-in-popularity&quot;&gt;1990s: APIs started growing in popularity&lt;/h2&gt;&lt;p&gt;The 1990s saw the birth of the internet, and APIs were a way for applications to exchange data with the use of a standard set of protocols. Instead of only enabling an application to share messages with the rest of its computer system, APIs allowed applications to share messages with applications in other computer systems across the internet. &lt;a href=&quot;https://en.wikipedia.org/wiki/Carl_Malamud?ref=containous.ghost.io&quot;&gt;Carl Malamud&lt;/a&gt; described APIs as “a set of services available to a programmer for performing certain tasks.” APIs were still in their early stages, but they were to pave the way for the emergence of web services in the next decade.&lt;/p&gt;&lt;h2 id=&quot;2000s-api-adoption-allowed-new-business-models-to-take-off&quot;&gt;2000s: API adoption allowed new business models to take off&lt;/h2&gt;&lt;p&gt;In the early 2000s, the internet was taking off, and developers were looking for ways to simplify web development and programming. In 2000, a&lt;em&gt; &lt;/em&gt;dissertation by Roy Fielding called ‘&lt;a href=&quot;https://www.ics.uci.edu/~fielding/pubs/dissertation/top.htm?ref=containous.ghost.io&quot;&gt;Architectural Styles and the Design of Network-based Software Architectures&lt;/a&gt;’&lt;em&gt; &lt;/em&gt;defined REST as the protocol of choice, allowing for standardized communication between devices across the internet. &lt;/p&gt;&lt;p&gt;As online applications grew in popularity, organizations started moving everything to the cloud. Salesforce, eBay, and Amazon pioneered the delivery of services, using HTTP to provide access to machine-readable data in a JSON or XML format through web APIs. Very soon, both innovative startups and large-scale enterprises were implementing as-a-Service offerings that leveraged the cloud and its API-first model.&lt;em&gt; &lt;/em&gt;By the time Apple launched the iPhone in 2007, APIs had already revolutionized the way companies deployed infrastructure.&lt;/p&gt;&lt;p&gt;Not only were APIs infiltrating SaaS-based applications, but they were also being built on top of platforms that leveraged APIs. Amazon was one of the first cloud providers to pioneer an API-focused determination, mandating all shared digital resources to have an API. Others followed their lead, inspired by &lt;a href=&quot;https://docs.aws.amazon.com/s3/index.html?ref=containous.ghost.io&quot;&gt;Amazon Simple Storage (S3)&lt;/a&gt; and &lt;a href=&quot;https://docs.aws.amazon.com/AWSEC2/latest/UserGuide/concepts.html?ref=containous.ghost.io&quot;&gt;Amazon Elastic Compute (EC2)&lt;/a&gt;.&lt;/p&gt;&lt;h2 id=&quot;2010s-apis-continued-evolving&quot;&gt;2010s: APIs continued evolving&lt;/h2&gt;&lt;p&gt;By 2010, social media was overtaking the population, and its applications were setting the stage for a new generation of APIs. As the demand for efficient, cost-effective, and highly scalable applications became urgent, APIs made it easy for organizations to integrate their information systems with third-party services (such as payment processors and CRMs) as well as API-driven cloud platforms. &lt;/p&gt;&lt;p&gt;When Kubernetes entered the scene in the mid-2010s, it encouraged a move towards distributed systems consisting of loosely-coupled, ephemeral microservices, each implementing its own API. APIs empowered organizations to extend the reach of their web applications to a global user base. As APIs were based on standardized protocols, they enabled developers to create applications in multiple environments and with multiple services.&lt;/p&gt;&lt;h2 id=&quot;2020s-modernizing-apis&quot;&gt;2020s: Modernizing APIs&lt;/h2&gt;&lt;p&gt;By the time COVID-19 heightened our dependence on web services, APIs continued growing in sheer usage as systems continued being broken down into more microservices. Today, they are becoming vital for &lt;a href=&quot;https://en.wikipedia.org/wiki/Internet_of_things?ref=containous.ghost.io&quot;&gt;Internet of Things (IoT)&lt;/a&gt; devices and are building an interconnected yet distributed world of data. Moreover, they are increasingly important for the construction of AI. &lt;/p&gt;&lt;p&gt;Organizations are running applications across different cloud providers in distributed systems, and effective APIs are key for making sure all services can communicate with one another. They rely on well-designed APIs to reap the benefits of cloud native applications, such as &lt;a href=&quot;https://traefik.io/solutions/api-gateway/?ref=containous.ghost.io&quot;&gt;scalability, performance, and security&lt;/a&gt;. Today, rather than starting with the application itself, developers adopt an API-first approach, designing APIs first and then building applications around them.&lt;/p&gt;&lt;h2 id=&quot;the-future-evolution-of-apis&quot;&gt;The future evolution of APIs&lt;/h2&gt;&lt;p&gt;The evolution of APIs has so far been a long and winding road. APIs have been around for many years and have become the standard for businesses to remain digitally relevant. As API adoption continues growing, APIs themselves are evolving in two ways to address some of their inherent challenges.&lt;/p&gt;&lt;p&gt;Firstly, security is becoming more important each year, itself being a byproduct of the proliferation of APIs. As systems become increasingly distributed, hackers have a much wider surface area to attack meaning far more vulnerabilities to exploit. This makes the &lt;a href=&quot;https://traefik.io/blog/top-5-api-security-best-practices/?ref=containous.ghost.io&quot;&gt;case for API security&lt;/a&gt; imperative. &lt;/p&gt;&lt;ul&gt;&lt;li&gt;Zero-trust security is a hot trend at the moment as it addresses these concerns and will likely continue growing in adoption as a result. Zero-trust is essentially the principle that you should never trust, by default, any entities in your infrastructure or network. Even if a request entering your application comes from a client inside your network, you must verify the client is both &lt;a href=&quot;https://traefik.io/glossary/openid-connect-everything-you-need-to-know/?ref=containous.ghost.io&quot;&gt;authenticated and authorized&lt;/a&gt;. Your application needs to know who they are and that they have the right permissions. You must also make sure all network calls are encrypted.&lt;/li&gt;&lt;li&gt;&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; middleware is used to keep APIs secure, as it minimizes the risk of a server crashing from a &lt;a href=&quot;https://www.cloudflare.com/learning/ddos/glossary/denial-of-service/?ref=containous.ghost.io&quot;&gt;Denial of Service (DoS)&lt;/a&gt; attack. In these attacks, the attacker either floods your server with more requests than it can handle or transmits requests that prevent your user from accessing your application.&lt;/li&gt;&lt;li&gt;Observability is becoming even more critical for the evolution of APIs. Without effective methods for observability, you have no way to identify and troubleshoot breaches or incidents as they occur.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Secondly, API governance will continue to be a key focus in the future. API governance is a discipline that involves setting policies, standards, and guidelines for the development, deployment, and maintenance of APIs within an organization. The primary motivation for API Governance is to ensure that APIs are designed and implemented in a consistent, secure, and scalable manner that aligns with the overall goals and objectives of the organization.&lt;/p&gt;&lt;h2 id=&quot;acing-api-management-in-your-organization&quot;&gt;Acing API management in your organization&lt;/h2&gt;&lt;p&gt;Distributed systems are innately complex, and &lt;a href=&quot;https://traefik.io/solutions/api-management/?ref=containous.ghost.io&quot;&gt;API management&lt;/a&gt; is needed more than ever. Effective API management is the action of publishing, securing, managing, and observing APIs as they interact with a myriad of applications and services. It involves integrating an &lt;a href=&quot;https://traefik.io/solutions/api-gateway/?ref=containous.ghost.io&quot;&gt;API gateway&lt;/a&gt;, which is a technical layer that sits between the API consumers and the API provider, providing features such as security, traffic management, and request/response transformation. &lt;/p&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 an all-in-one ingress controller, service mesh, and API gateway created to ease microservice complexity. It helps you ace API management by focusing on the operational aspects of APIs, such as monitoring, performance, and analytics. &lt;/p&gt;&lt;p&gt;APIs have allowed developers to create more powerful and efficient applications quicker than ever before with ever-increasing abstraction levels. APIs truly have become the core of modern software development. What started out as a way for two computers to exchange data has become the foundation for modern applications and services, especially in distributed systems.&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[Reverse Proxy vs. Ingress Controller vs. API Gateway: Understanding the Differences and When to Use Them]]></title>
            <description><![CDATA[Learn everything you need to know about the reverse proxy, ingress controller, and API gateway, their differences, and when you need to use them. ]]></description>
            <link>https://traefik.io/reverse-proxy-vs-ingress-controller-vs-api-gateway</link>
            <guid isPermaLink="true">https://traefik.io/reverse-proxy-vs-ingress-controller-vs-api-gateway</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Microservices]]></category>
            <category><![CDATA[Ingress]]></category>
            <category><![CDATA[API Management]]></category>
            <category><![CDATA[Guides]]></category>
            <dc:creator><![CDATA[Eirini Eleni Papadopoulou]]></dc:creator>
            <pubDate>Tue, 31 Jan 2023 14:26: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/2023/01/Blog@2x--21-.jpg&quot; class=&quot;kg-image&quot; alt=&quot;reverse proxy vs ingress controller vs 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/01/Blog@2x--21-.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/01/Blog@2x--21-.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/01/Blog@2x--21-.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/01/Blog@2x--21-.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;If you are new to the networking ecosystem and you are trying to figure out what networking pieces you need and when, I’m sure you’ve come across these three terms: reverse proxy, API gateway, and ingress controller. And just like all of us when we first started in this industry, you must feel confused about what each of them means, what are the differences between them, and when you need to use which. &lt;/p&gt;&lt;p&gt;But fear not, my friends. Sit tight and allow me to help you through these confusing times by diving into the fundamentals of the networking stack.&lt;/p&gt;&lt;p&gt;Let’s start by breaking down every term, what it is, and its common use cases.&lt;/p&gt;&lt;h2 id=&quot;getting-to-know-the-reverse-proxy&quot;&gt;Getting to know the reverse proxy&lt;/h2&gt;&lt;p&gt;You can think of the &lt;a href=&quot;https://traefik.io/glossary/reverse-proxy/?ref=containous.ghost.io&quot;&gt;reverse proxy&lt;/a&gt; as that old-school phone operator, you know, back when there used to be call centers and phone operators. Back then, when someone was picking up the phone, they were connected to a call center, the caller stated the name and the address of the person they wanted to call, and the phone operator connected them. A reverse proxy does a similar job by receiving user requests and then forwarding said requests to the appropriate server, as you can see in the diagram 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/01/Reverse-Proxy.jpg&quot; class=&quot;kg-image&quot; alt=&quot;reverse proxy architecture diagram&quot; loading=&quot;lazy&quot; width=&quot;1852&quot; height=&quot;427&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/01/Reverse-Proxy.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/01/Reverse-Proxy.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/01/Reverse-Proxy.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/01/Reverse-Proxy.jpg 1852w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Reverse proxies have a very simple function — they are used in front of an application or group of applications and act as the middleman between the client and the application. &lt;/p&gt;&lt;p&gt;As I mentioned earlier, reverse proxies route user requests to the appropriate server, assuming that you are utilizing multiple servers. So, naturally, those of you using a single server are probably wondering whether or not it makes sense for you to even implement a reverse proxy. In fact, reverse proxies are useful even in single-server scenarios where you can take advantage of features like &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;, IP filtering and access control, authentication, request validation, and caching.&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/01/Single-Server.jpg&quot; class=&quot;kg-image&quot; alt=&quot;using a reverse proxy in a single-server scenario&quot; loading=&quot;lazy&quot; width=&quot;1852&quot; height=&quot;680&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/01/Single-Server.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/01/Single-Server.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/01/Single-Server.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/01/Single-Server.jpg 1852w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;If you want to dig deeper into reverse proxies and how they differ from forward proxies or load balancers, check out our &lt;a href=&quot;https://traefik.io/glossary/reverse-proxy/?ref=containous.ghost.io&quot;&gt;reverse proxy 101 article&lt;/a&gt;. &lt;/p&gt;&lt;!--kg-card-begin: html--&gt;&lt;post-cta-inline data-slug=&quot;promotion&quot; data-variant=&quot;large-no-image&quot;&gt;&lt;/post-cta-inline&gt;&lt;!--kg-card-end: html--&gt;&lt;h2 id=&quot;getting-to-know-the-ingress-controller&quot;&gt;Getting to know the ingress controller&lt;/h2&gt;&lt;p&gt;In a nutshell, an ingress controller is a reverse proxy for the Kubernetes universe. It acts as a reverse proxy, routing traffic from the outside world to the correct service within a Kubernetes cluster, and allows you to configure an HTTP or HTTPS load balancer for the said cluster.&lt;/p&gt;&lt;p&gt;To better understand this, let’s take a step back first and look at the Ingress itself. A Kubernetes &lt;a href=&quot;https://kubernetes.io/docs/concepts/services-networking/ingress/?ref=containous.ghost.io&quot;&gt;Ingress&lt;/a&gt; is an API object that determines how incoming traffic from the internet should reach the internal cluster &lt;a href=&quot;https://kubernetes.io/docs/concepts/services-networking/service/?ref=containous.ghost.io&quot;&gt;Services&lt;/a&gt;, which then in turn send requests to groups of &lt;a href=&quot;https://kubernetes.io/docs/concepts/workloads/pods/?ref=containous.ghost.io&quot;&gt;Pods&lt;/a&gt;. The Ingress itself has no power over the system — it is actually a configuration request for the &lt;em&gt;ingress controller&lt;/em&gt;. &lt;/p&gt;&lt;p&gt;The ingress controller accepts traffic from outside the Kubernetes platform and load balances it to Pods running inside the platform, this way adding a layer of abstraction to traffic routing. Ingress controllers convert configurations from Ingress resources into routing rules recognized and implemented by reverse proxies.&lt;/p&gt;&lt;p&gt;Ingress controllers are used to expose multiple services from within your Kubernetes cluster to the outside world, using a single endpoint — for example, a DNS name or IP address —  to access them. Specifically, ingress controllers are used to:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Expose multiple services under a single DNS name&lt;/li&gt;&lt;li&gt;Implement path-based routing, where different URLs map to different services&lt;/li&gt;&lt;li&gt;Implement host-based routing, where different hostnames map to different services&lt;/li&gt;&lt;li&gt;Implement basic authentication or other access control methods for your applications&lt;/li&gt;&lt;li&gt;Implement rate limiting for your applications&lt;/li&gt;&lt;li&gt;Offload SSL/TLS termination from your applications to the ingress controller&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;Ingress controllers are undeniably one of the most complicated pieces of a networking stack. You can find more details about how Ingress and ingress controllers work in our &lt;a href=&quot;https://traefik.io/glossary/kubernetes-ingress-and-ingress-controller-101/?ref=containous.ghost.io&quot;&gt;Kubernetes ingress controller 101 article&lt;/a&gt;.&lt;/p&gt;&lt;!--kg-card-begin: html--&gt;&lt;post-cta-inline data-slug=&quot;infographic-ingress-controller&quot; data-variant=&quot;large-with-image&quot;&gt;&lt;/post-cta-inline&gt;&lt;!--kg-card-end: html--&gt;&lt;h2 id=&quot;getting-to-know-the-api-gateway&quot;&gt;Getting to know the API gateway&lt;/h2&gt;&lt;p&gt;Deployed at the edge of your infrastructure, an &lt;a href=&quot;https://traefik.io/solutions/api-gateway/?ref=containous.ghost.io&quot;&gt;API gateway&lt;/a&gt; acts as a single entry point that routes client API requests to your backend microservices. Essentially, an API gateway is a reverse proxy handling incoming user requests and, although it includes many of the functionalities commonly found in reverse proxies, there is a key difference between the two.  &lt;/p&gt;&lt;p&gt;Contrary to reverse proxies, API gateways have the ability to address cross-cutting, or system-wide, concerns. Concerns refer to the parts of your system&apos;s architecture that have been branched based on its functionality. &lt;a href=&quot;https://en.wikipedia.org/wiki/Cross-cutting_concern?ref=containous.ghost.io&quot;&gt;Cross-cutting concerns&lt;/a&gt; are concerns that are shared among a number of different system components or APIs and include, among others, configuration management, security, auditing, exception management, and logging.&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/01/API-Gateway-Diagram--1-.jpg&quot; class=&quot;kg-image&quot; alt=&quot;microservices architecture with api gateway&quot; loading=&quot;lazy&quot; width=&quot;1852&quot; height=&quot;859&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/01/API-Gateway-Diagram--1-.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/01/API-Gateway-Diagram--1-.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/01/API-Gateway-Diagram--1-.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/01/API-Gateway-Diagram--1-.jpg 1852w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;API gateways are commonly used in architectures where you need to expose multiple microservices or serverless functions to the outside world &lt;a href=&quot;https://traefik.io/solutions/api-management/?ref=containous.ghost.io&quot;&gt;through a set of APIs&lt;/a&gt;, and they handle a number of tasks. On top of the functions we already saw as part of a typical reverse proxy, API gateways can handle:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;&lt;strong&gt;Load balancing:&lt;/strong&gt; Distributing incoming traffic across multiple servers to improve performance and availability.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;&lt;strong&gt;&lt;strong&gt;Rate limiting: &lt;/strong&gt;Matching the flow of traffic to your infrastructure’s capacity.&lt;/strong&gt;&lt;/strong&gt;&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Access control:&lt;/strong&gt; Adding an extra layer of security by authenticating incoming connections before they reach the web servers, and by hiding the internal IP addresses and network structure of the web servers from external clients.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;SSL/TLS termination:&lt;/strong&gt; &lt;a href=&quot;https://traefik.io/glossary/https-encryption-tls-ssl-letsencrypt/?ref=containous.ghost.io&quot;&gt;Offloading the task of handling SSL/TLS connections&lt;/a&gt; from the web servers to the reverse proxy, allowing the web servers to focus on handling requests.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Caching:&lt;/strong&gt; Improving performance by caching frequently-requested content closer to the client.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Request/response transformation:&lt;/strong&gt; Modifying incoming requests or outgoing responses to conform to specific requirements, such as adding or removing headers, compressing/decompressing, and encrypting/decrypting content.&lt;/li&gt;&lt;li&gt;&lt;strong&gt;Logging and monitoring:&lt;/strong&gt; Collecting API usage and performance data.&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;API Gateways also come with a few extra handy functionalities, namely &lt;a href=&quot;https://traefik.io/glossary/service-discovery/?ref=containous.ghost.io&quot;&gt;service discovery&lt;/a&gt;, &lt;a href=&quot;https://microservices.io/patterns/reliability/circuit-breaker.html?ref=containous.ghost.io&quot;&gt;circuit breaker&lt;/a&gt;, and &lt;a href=&quot;https://learn.microsoft.com/en-us/azure/architecture/patterns/gateway-aggregation?ref=containous.ghost.io&quot;&gt;request aggregation&lt;/a&gt;.&lt;/p&gt;&lt;p&gt;If you want to learn more about API gateways and the kinds of features you should expect from a modern API gateway, &lt;a href=&quot;https://traefik.io/solutions/api-gateway/?ref=containous.ghost.io&quot;&gt;see this page&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-no-image&quot;&gt;&lt;/post-cta-inline&gt;&lt;!--kg-card-end: html--&gt;&lt;h2 id=&quot;reverse-proxy-vs-ingress-controller-vs-api-gateway&quot;&gt;Reverse proxy vs. ingress controller vs. API gateway&lt;/h2&gt;&lt;p&gt;Now, to bring everything together, how do you differentiate those three? In essence, an ingress controller does the same job as a reverse proxy or an API gateway when it comes to handling incoming traffic and routing it to the appropriate server/Service. However, the ingress controller operates at a different level of the network stack.&lt;/p&gt;&lt;p&gt;What I mean here, of course, is that the ingress controller operates in a Kubernetes environment. In that sense, the ingress controller is a specific type of reverse proxy designed to operate within Kubernetes clusters. Just as the API gateway sits at the edge of your infrastructure, the ingress controller sits at the edge of the cluster, listening for incoming traffic, and then routes it to the appropriate Kubernetes Service within the cluster, based on the rules defined in the Ingress resource, as we saw earlier.&lt;/p&gt;&lt;h2 id=&quot;bonus-round-what-about-service-mesh&quot;&gt;Bonus round: What about service mesh?&lt;/h2&gt;&lt;p&gt;I know that we’ve covered a lot of ground already and I don’t want to scare you off but there is one more piece of the overall networking stack that I’d like to bring to your attention and that is the service mesh. &lt;/p&gt;&lt;p&gt;A service mesh is a piece of software that sits within the network and provides additional functionality for managing communication between microservices. It operates at the level of individual service-to-service communication and adds security, observability, and reliability to a microservices application.&lt;/p&gt;&lt;p&gt;There are also different types of service mesh architectures — sidecar proxy and host/node proxy — which I recommend you check out in our &lt;a href=&quot;https://traefik.io/glossary/service-mesh-101/?ref=containous.ghost.io&quot;&gt;service mesh 101 article&lt;/a&gt;.&lt;/p&gt;&lt;h2 id=&quot;can-i-use-reverse-proxies-api-gateways-ingress-controllers-and-service-mesh-all-at-once&quot;&gt;Can I use reverse proxies, API gateways, ingress controllers, and service mesh all at once?&lt;/h2&gt;&lt;p&gt;The simple answer to this question is yes, you can! Long story short, ingress controllers are the Kubernetes-native way to configure your reverse proxy, the API gateway is a specific type of reverse proxy — a reverse proxy on &quot;steroids,” if you will — while the service mesh is a network proxy tailored for microservices. Since all of those pieces operate on different layers of the application, you can use a combination of all four in your infrastructure. For example:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;You can set up a reverse proxy in front of your ingress controller and API gateway to handle SSL/TLS termination, caching, load balancing, and request/response transformation.&lt;/li&gt;&lt;li&gt;You can set up an ingress controller to handle the routing of incoming traffic from your reverse proxy to the appropriate Kubernetes Service within your cluster.&lt;/li&gt;&lt;li&gt;You can set up an API gateway to handle authentication, rate limiting, and request/response transformation for your microservices within the cluster.&lt;/li&gt;&lt;li&gt;You can set up a service mesh to handle internal communication (i.e. load balancing, traffic shaping, and service discovery) between your microservices. &lt;/li&gt;&lt;/ul&gt;&lt;p&gt;But doesn’t that add a ridiculous amount of complexity to my infrastructure, I hear you asking. Well, not necessarily. Although adding multiple layers of proxies and controllers can increase the complexity of your system, you won’t have to worry about it if you are using the right tools.&lt;/p&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 an all-in-one cloud native networking solution that brings the ingress controller, API gateway, and service mesh all together in one simple control plane. Built on top of open source &lt;a href=&quot;https://traefik.io/traefik/?ref=containous.ghost.io&quot;&gt;Traefik Proxy&lt;/a&gt; and &lt;a href=&quot;https://traefik.io/traefik-mesh/?ref=containous.ghost.io&quot;&gt;Traefik Mesh&lt;/a&gt;, Traefik Enterprise eases microservices networking complexity for developers and operations teams across your organization. Care to give it a try? 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; today!&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;!--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;Can I use reverse proxies, API gateways, ingress controllers, and service mesh all at once?&quot;,
        &quot;acceptedAnswer&quot;: {
          &quot;@type&quot;: &quot;Answer&quot;,
          &quot;text&quot;: &quot;&lt;p&gt;The simple answer to this question is yes, you can! Long story short, ingress controllers are the Kubernetes-native way to configure your reverse proxy, the API gateway is a specific type of reverse proxy — a reverse proxy on &quot;steroids,” if you will — while the service mesh is a network proxy tailored for microservices. Since all of those pieces operate on different layers of the application, you can use a combination of all four in your infrastructure.&lt;/p&gt;&quot;
        }
      },
      }
    ]
  }
&lt;/script&gt;&lt;!--kg-card-end: html--&gt;&lt;p&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[Exploring the Tailscale-Traefik Proxy Integration]]></title>
            <description><![CDATA[In this article, we explore two main ways Traefik Proxy uses Tailscale — one based on the utilization of the TLS management feature and one bonus story for nerds!]]></description>
            <link>https://traefik.io/exploring-the-tailscale-traefik-proxy-integration</link>
            <guid isPermaLink="true">https://traefik.io/exploring-the-tailscale-traefik-proxy-integration</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Access Control]]></category>
            <category><![CDATA[Guides]]></category>
            <dc:creator><![CDATA[Mathieu Lonjaret]]></dc:creator>
            <pubDate>Tue, 24 Jan 2023 12:57: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/2023/01/Blog@2x--18--1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;exploring the tailscale and traefik integration&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/01/Blog@2x--18--1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/01/Blog@2x--18--1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/01/Blog@2x--18--1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/01/Blog@2x--18--1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;Last month, we announced the &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;release of the first beta for Traefik Proxy 3.0&lt;/a&gt;, and with it came the exciting new integration with &lt;a href=&quot;https://tailscale.com/?ref=containous.ghost.io&quot;&gt;Tailscale&lt;/a&gt;, a VPN service that allows you to create your own private networks from your home, using whatever device you want.&lt;/p&gt;
&lt;p&gt;But Tailscale goes beyond providing a service to create a private network. It also offers TLS certificate management, where Tailscale provides you with a valid certificate for your internal Tailscale services. Behind the scenes, Tailscale gets the certificate from Let’s Encrypt. The biggest benefit here is that Tailscale manages the certificate lifecycle for you, so there is no need to worry about renewing or exposing an endpoint to resolve TLS challenges between Let’s Encrypt and your proxy instance.&lt;/p&gt;
&lt;p&gt;In this article, I want to show you the two main ways Traefik Proxy makes use of Tailscale — one based on the utilization of the TLS management feature and one bonus story for nerds!&lt;/p&gt;
&lt;p&gt;You can also check out the &lt;a href=&quot;https://www.tailscale.com/blog/traefik-certificate-resolver/?ref=containous.ghost.io&quot;&gt;announcement of the Tailscale-Traefik integration&lt;/a&gt; on the Tailscale Blog.&lt;/p&gt;
&lt;h2 id=&quot;tailscale-as-a-tls-certificates-provider&quot;&gt;Tailscale as a TLS certificates provider&lt;/h2&gt;
&lt;p&gt;Tailscale is, first and foremost, a VPN, which means all traffic between the nodes of your tailnet is already encrypted by &lt;a href=&quot;https://tailscale.com/blog/how-tailscale-works/?ref=containous.ghost.io&quot;&gt;WireGuard&lt;/a&gt;. If you&apos;re running, for example, a webserver on one of your nodes (i.e. your server), and you want to reach it from another of your nodes (i.e. your laptop), there is no need for HTTPS, in terms of security, and you could do it over HTTP.&lt;/p&gt;
&lt;p&gt;However, software at the application level (e.g. your browser) is unaware that traffic is already encrypted, and it might, rightfully so, &amp;quot;complain&amp;quot; about it — your browser will display the &lt;strong&gt;Not secure&lt;/strong&gt; warning near the URL bar. Other tools might even be stricter about it.&lt;/p&gt;
&lt;p&gt;For this reason, Tailscale also offers a (beta) feature for &lt;a href=&quot;https://tailscale.com/kb/1153/enabling-https/?ref=containous.ghost.io&quot;&gt;HTTPS certificates&lt;/a&gt;, which provides you with a &lt;a href=&quot;https://letsencrypt.org/?ref=containous.ghost.io&quot;&gt;Let&apos;s Encrypt&lt;/a&gt; TLS certificate for the nodes in your tailnet.&lt;br&gt;
Once this feature is enabled, instead of your laptop reaching your server with &lt;code&gt;http://your-server-tailscale-IP&lt;/code&gt;, you can reach it with&lt;code&gt;https://your-server-tailnet-name&lt;/code&gt; — assuming your server can do HTTPS as well — making your browser happy, as it sees you are using TLS, and your life easier.&lt;/p&gt;
&lt;p&gt;If you are interested in trying this feature &lt;em&gt;without&lt;/em&gt; Traefik Proxy, you need to follow the steps below:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Set up the Tailscale bits&lt;/li&gt;
&lt;li&gt;Set up your webserver (or reverse proxy) to handle TLS&lt;/li&gt;
&lt;li&gt;Call &lt;code&gt;tailscale cert&lt;/code&gt; on your server to ask Tailscale to provide you with the TLS certificate&lt;/li&gt;
&lt;li&gt;Adjust your webserver configuration to take that certificate into account&lt;/li&gt;
&lt;li&gt;Handle certificate renewal later on&lt;/li&gt;
&lt;/ul&gt;
&lt;h3 id=&quot;automating-tls-certificates-with-the-traefik-tailscale-integration&quot;&gt;Automating TLS certificates with the Traefik-Tailscale integration&lt;/h3&gt;
&lt;p&gt;Now, if you want to try this Tailscale feature &lt;em&gt;with&lt;/em&gt; Traefik Proxy, you have a way of automating this process. Traefik comes with an &lt;a href=&quot;https://doc.traefik.io/traefik/v3.0/https/acme/?ref=containous.ghost.io&quot;&gt;ACME provider&lt;/a&gt;, which can be configured to automatically ask Let&apos;s Encrypt for certificates, for the relevant routes described on its configured routers.&lt;/p&gt;
&lt;p&gt;In that respect, Tailscale&apos;s role as a certificate provider is very similar to Let&apos;s Encrypt, so it made sense for us to capitalize on the experience we already had with the ACME provider, and adapt the work to add the same feature for &lt;a href=&quot;https://doc.traefik.io/traefik/v3.0/https/tailscale/?ref=containous.ghost.io&quot;&gt;Tailscale&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Let&apos;s showcase the feature with an example of a setup from A to Z.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Start with the &lt;a href=&quot;https://tailscale.com/kb/1153/enabling-https/?ref=containous.ghost.io&quot;&gt;Tailscale part&lt;/a&gt;: In your tailnet’s &lt;a href=&quot;https://login.tailscale.com/admin/dns?ref=containous.ghost.io&quot;&gt;DNS settings&lt;/a&gt;, enable &lt;code&gt;MagicDNS&lt;/code&gt;, make a note of your tailnet name for later (in the example below, you&apos;ll have to replace &lt;code&gt;yak-bebop.ts.net&lt;/code&gt; with your own), and enable &lt;code&gt;HTTPS Certificates&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Configure Traefik Proxy: We&apos;ll use the file provider for simplicity, but there are examples for the other providers on our &lt;a href=&quot;https://doc.traefik.io/traefik/v3.0/https/tailscale/?ref=containous.ghost.io&quot;&gt;documentation page&lt;/a&gt; that you can easily adapt for this example.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Static configuration:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;[entryPoints]
	[entryPoints.websecure]
		address = &amp;quot;:443&amp;quot;

[providers]
	[providers.file]
		filename = &amp;quot;/path/to/your/dynamic.toml&amp;quot;

[certificatesResolvers.myresolver.tailscale]

[api]
	debug = true

[log]
	level = &amp;quot;DEBUG&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Dynamic configuration:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-toml&quot;&gt;[http]
	[http.routers]
		[http.routers.towhoami]
			service = &amp;quot;whoami&amp;quot;
			rule = &amp;quot;Host(`myserver.yak-bebop.ts.net`)&amp;quot;
			[http.routers.towhoami.tls]
				certResolver = &amp;quot;myresolver&amp;quot;

	[http.services]
		[http.services.whoami]
			[http.services.whoami.loadBalancer]
				[[http.services.whoami.loadBalancer.servers]]
					# docker run -d -p 6060:80 traefik/whoami
					url = &amp;quot;&amp;lt;http://localhost:6060&amp;gt;&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; In the &lt;code&gt;Host&lt;/code&gt; rule, we&apos;re using our full Tailscale hostname for the server — the concatenation of the server&apos;s machine name, &lt;code&gt;myserver&lt;/code&gt;, (that you can find in your Tailscale &lt;a href=&quot;https://login.tailscale.com/admin/machines?ref=containous.ghost.io&quot;&gt;admin console&lt;/a&gt;, or with the &lt;code&gt;tailscale status&lt;/code&gt; command), and the tailnet name, &lt;code&gt;yak-bebop.ts.net&lt;/code&gt;, that is provided with MagicDNS.&lt;/p&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;Start Traefik Proxy: On startup, Traefik should automatically try to get certificates for TLS routes with a &lt;code&gt;Host&lt;/code&gt; rule, which, in our example, means that, if everything goes well, you should see log lines (if your log level is &lt;code&gt;DEBUG&lt;/code&gt;) such as:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;2023-01-09T11:02:51+01:00 DBG ../../pkg/server/router/tcp/manager.go:235 &amp;gt; Adding route for myserver.yak-bebop.ts.net with TLS options default entryPointName=websecure
2023-01-09T11:03:36+01:00 DBG ../../pkg/provider/tailscale/provider.go:253 &amp;gt; Fetched certificate for domain &amp;quot;myserver.yak-bebop.ts.net&amp;quot; providerName=myresolver.tailscale
2023-01-09T11:03:36+01:00 DBG ../../pkg/server/configurationwatcher.go:226 &amp;gt; Configuration received config={&amp;quot;http&amp;quot;:{},&amp;quot;tcp&amp;quot;:{},&amp;quot;tls&amp;quot;:{},&amp;quot;udp&amp;quot;:{}} providerName=myresolver.tailscale
2023-01-09T11:03:36+01:00 DBG ../../pkg/tls/certificate.go:158 &amp;gt; Adding certificate for domain(s) myserver.yak-bebop.ts.net
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Enjoy your TLS route! You can now access your Tailscale hostname (&lt;code&gt;https://myserver.yak-bebop.ts.net&lt;/code&gt; in the example) over HTTPS in your browser.&lt;/p&gt;
&lt;h2 id=&quot;tailscale-as-a-tunnel-between-a-mac-host-and-containers&quot;&gt;Tailscale as a tunnel between a Mac host and containers&lt;/h2&gt;
&lt;h3 id=&quot;the-convoluted-background&quot;&gt;The (convoluted) background&lt;/h3&gt;
&lt;p&gt;The Traefik project, just like most large software projects, has integration test suites that we run both on our development machines (mostly laptops), and automatically on our Continuous Integration (CI) platform when submitting a pull request, notably to detect regressions.&lt;/p&gt;
&lt;p&gt;In our case, that usually means we use at least three components for a test: Traefik itself, a third-party component, like a backend (e.g. the &lt;code&gt;traefik/whoami&lt;/code&gt; webserver), and the test itself, which can be mainly viewed as an (HTTP, or not) client that makes requests in Go.&lt;/p&gt;
&lt;p&gt;For historic reasons, at some point, we ended up in a situation where all of these components would, by default, run in Docker. The rationale is the usual: you want reproducibility so that the setup is the same everywhere, and the test will run on the CI, as well as your laptop. And on your dev laptop, it also allows you to avoid the need to install and configure various third parties — think databases, for example.&lt;/p&gt;
&lt;p&gt;However, on Mac machines, there are two (sort of interlinked) major drawbacks to that situation: slow run time, and inconvenient workflow.&lt;/p&gt;
&lt;p&gt;When we are debugging, or working on a new feature, it is pretty important to be able to make a change, rerun one test in particular, and get some feedback in a decent amount of time. Otherwise, aside from being tedious, you&apos;re stuck in this in-between where there&apos;s not enough time to context-switch to something else, and it&apos;s not fast enough to stay in the ideal flow where you can keep on iterating.&lt;br&gt;
Having Traefik Proxy in Docker is an obstacle for two reasons. First, the Docker image has to be rebuilt for every little iteration you want to try, which is automated but is still somewhat slow. Second, it means the whole test setup and run is also way slower than it should be, especially on Mac, mostly because there&apos;s a Linux VM in between.&lt;/p&gt;
&lt;p&gt;As the vast majority of the Traefik team is using Mac now, this has become an annoying enough problem that we wanted to take care of it. And that is when one of us nerd-sniped another into using Tailscale. Why, you ask? Because of the aforementioned Linux VM.&lt;/p&gt;
&lt;p&gt;See, the best of both worlds would be to keep the third-party backends in Docker (for convenience), but take Traefik and the client code out of Docker. This means the clients, and Traefik, have to be able to reach the backends in their containers (and sometimes vice-versa). On Linux, it is somewhat doable, but on Mac, it gets considerably harder, given that there is a Linux VM in between the Mac host and the containers. So, we wanted to see if Tailscale allowed us to achieve that with minimal work.&lt;/p&gt;
&lt;h3 id=&quot;the-solution&quot;&gt;The solution&lt;/h3&gt;
&lt;p&gt;The basic idea that is key to the solution is another nifty Tailscale feature, the &lt;a href=&quot;https://tailscale.com/kb/1019/subnets/?ref=containous.ghost.io&quot;&gt;subnet router&lt;/a&gt;. If a Tailscale node sits in a container that is in the same Docker network as all our other Docker containers, then it can reach all these containers. And since it is also part of our tailnet, it can also reach our Mac host (assuming that this host is also part of the tailnet, of course), acting as a gateway between both networks. For the more technically inclined, most of the changes related to that idea are in &lt;a href=&quot;https://github.com/traefik/traefik/commit/b7199a7a9ba874681b611ebec94727addad774bc?ref=containous.ghost.io&quot;&gt;this commit&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The gist of it is that now we have a flag (&lt;code&gt;IN_DOCKER&lt;/code&gt; environment variable) which conveys the intent whether to build Traefik Proxy and to run the tests in Docker or directly on the host.&lt;/p&gt;
&lt;p&gt;If not true, we look for a &lt;code&gt;tailscale.secret&lt;/code&gt; file, which should contain a Tailscale auth key (ephemeral, but reusable). We then start, with the &lt;code&gt;docker compose API&lt;/code&gt;, a &lt;a href=&quot;https://hub.docker.com/r/tailscale/tailscale?ref=containous.ghost.io&quot;&gt;tailscale/tailscale&lt;/a&gt; container in the same Docker network as the other containers, in which we run Tailscale with the auth key, and &lt;code&gt;--advertise-routes=172.31.42.0/24&lt;/code&gt;, in order to make it a subnet router for all the Docker containers.&lt;/p&gt;
&lt;p&gt;Finally, for the gritty details on the Tailscale side, I want to mention two things:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;As seen above, you need to generate an ephemeral, reusable &lt;code&gt;auth key&lt;/code&gt;, which can be done on your &lt;strong&gt;Keys&lt;/strong&gt; page at &lt;a href=&quot;https://login.tailscale.com/admin/settings/keys?ref=containous.ghost.io&quot;&gt;https://login.tailscale.com/admin/settings/keys&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;You need an &lt;code&gt;autoApprovers&lt;/code&gt; section in the ACLs, in order to automatically approve the routes to the subnet relay. For our purposes, it looks like this:&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code class=&quot;language-json&quot;&gt;&amp;quot;autoApprovers&amp;quot;: {
		// Allow myself to automatically advertize routes for docker networks
		&amp;quot;routes&amp;quot;: {
			&amp;quot;172.0.0.0/8&amp;quot;: [&amp;quot;your_tailscale_identity&amp;quot;],
		},
	},
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And that&apos;s pretty much it!&lt;/p&gt;
&lt;p&gt;So even if the idea of using a VPN to communicate between your host and some containers in Docker seems like overkill, it actually works! And it does make our life simpler as it considerably improves the feedback loop for us when iterating on tests.&lt;/p&gt;
&lt;p&gt;Is there a better solution? Probably.&lt;/p&gt;
&lt;p&gt;Would it require considerably more changes to our tests setup? Maybe.&lt;/p&gt;
&lt;p&gt;Was it fun to do? Definitely 😉&lt;/p&gt;
&lt;p&gt;Don’t forget to check out the &lt;a href=&quot;https://www.tailscale.com/blog/traefik-certificate-resolver/?ref=containous.ghost.io&quot;&gt;announcement of the Tailscale-Traefik Proxy integration&lt;/a&gt; on the Tailscale Blog and their &lt;a href=&quot;https://www.tailscale.com/kb/1234/traefik-certificates/?ref=containous.ghost.io&quot;&gt;official documentation&lt;/a&gt;.&lt;/p&gt;
&lt;!--kg-card-end: markdown--&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Distributed Tracing with Traefik and Jaeger on Kubernetes]]></title>
            <description><![CDATA[In the third part of this blog series, we explore the open source project Jaeger, and how to perform request tracing for applications on Kubernetes.]]></description>
            <link>https://traefik.io/distributed-tracing-with-traefik-and-jaeger-on-kubernetes</link>
            <guid isPermaLink="true">https://traefik.io/distributed-tracing-with-traefik-and-jaeger-on-kubernetes</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Kubernetes]]></category>
            <category><![CDATA[Microservices]]></category>
            <category><![CDATA[Observability]]></category>
            <category><![CDATA[Guides]]></category>
            <dc:creator><![CDATA[Michel Loiseleur]]></dc:creator>
            <pubDate>Wed, 18 Jan 2023 16:43: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/01/Blog@2x--19--1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;distributed tracing in kubernetes with traefik and jaeger&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/01/Blog@2x--19--1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/01/Blog@2x--19--1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/01/Blog@2x--19--1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/01/Blog@2x--19--1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Originally published: March 2021&lt;br&gt;Updated: December 2022&lt;/p&gt;&lt;hr&gt;&lt;p&gt;Hello, and welcome back to this blog series on &lt;a href=&quot;https://sre.google/sre-book/table-of-contents/?ref=containous.ghost.io&quot;&gt;Site Reliability Engineering&lt;/a&gt; and how Traefik Proxy can help supply the monitoring and visibility that are necessary to maintain application health.&lt;/p&gt;&lt;p&gt;In the &lt;a href=&quot;https://traefik.io/blog/log-aggregation-in-kubernetes-with-traefik-proxy/?ref=containous.ghost.io&quot;&gt;first article&lt;/a&gt;, we discussed log analysis while the &lt;a href=&quot;https://traefik.io/blog/capture-traefik-metrics-for-apps-on-kubernetes-with-prometheus/?ref=containous.ghost.io&quot;&gt;second&lt;/a&gt; covered Traefik metrics with Prometheus. In this article, we will explore another open source project, &lt;a href=&quot;https://www.jaegertracing.io/?ref=containous.ghost.io&quot;&gt;Jaeger&lt;/a&gt;, and how to perform distributed tracing for applications on Kubernetes.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Part I: &lt;a href=&quot;https://traefik.io/blog/log-aggregation-in-kubernetes-with-traefik-proxy/?ref=containous.ghost.io&quot;&gt;Log Aggregation in Kubernetes with Traefik Proxy&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Part II: &lt;a href=&quot;https://traefik.io/blog/capture-traefik-metrics-for-apps-on-kubernetes-with-prometheus/?ref=containous.ghost.io&quot;&gt;Capture Traefik Metrics for Apps on Kubernetes with Prometheus&lt;/a&gt;&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-with-image&quot;&gt;&lt;/post-cta-inline&gt;&lt;!--kg-card-end: html--&gt;&lt;h2 id=&quot;what-is-distributed-tracing&quot;&gt;What is distributed tracing?&lt;/h2&gt;&lt;p&gt;Debugging anomalies, bottlenecks, and performance issues is a challenge in distributed architectures, such as microservices. Each user request typically involves the collaboration of many services to deliver the intended outcome. Because traditional monitoring methods like application logs and metrics tend to target monolithic applications, they can fail to capture the full performance trail for every request.&lt;/p&gt;&lt;p&gt;&lt;strong&gt;Distributed Tracing&lt;/strong&gt;, therefore, is an important profiling technique that complements log monitoring and metrics. It captures the transaction flow distributed across various application components and services involved in processing a user request. The captured data can then be visualized to show which component malfunctioned and caused an issue, such as an error or bottleneck.&lt;/p&gt;&lt;p&gt;This post demonstrates how to integrate Traefik Proxy with &lt;a href=&quot;https://www.jaegertracing.io/?ref=containous.ghost.io&quot;&gt;Jaeger&lt;/a&gt;, an open source end-to-end distributed tracing application that is also a &lt;a href=&quot;https://www.cncf.io/projects/jaeger/?ref=containous.ghost.io&quot;&gt;Cloud Native Computing Foundation&lt;/a&gt; (CNCF) project. The integration captures traces for user requests across the various components of a hypothetical application running on a Kubernetes cluster.&lt;/p&gt;&lt;h2 id=&quot;prerequisites&quot;&gt;Prerequisites&lt;/h2&gt;&lt;p&gt;This post will walk you through the process of integrating Traefik Proxy and Jaeger, but you&apos;ll need to have a few things setup first:&lt;/p&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;ol&gt;
&lt;li&gt;A Kubernetes cluster running at &lt;code&gt;localhost&lt;/code&gt;. The Traefik Labs team often uses k3d for this purpose, which creates a local cluster in Docker containers. However, k3d comes bundled with the latest version of k3s, and &lt;code&gt;k3s&lt;/code&gt; comes packaged with Traefik ver 1.7, which you&apos;ll want to disable so you can use the latest version. The following command creates the cluster and exposes it on port 8081:&lt;br&gt;
&lt;code&gt;k3d cluster create dev -p &amp;quot;8081:80@loadbalancer&amp;quot; --k3s-arg &amp;quot;--no-deploy=traefik@server:*&amp;quot;&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;kubectl&lt;/code&gt; command-line tool, configured to point to your cluster. (If you created your cluster using K3d and the instructions above, this will already be done for you.)&lt;/li&gt;
&lt;li&gt;A recent version of the Helm package manager for Kubernetes.&lt;/li&gt;
&lt;li&gt;The set of configuration files that accompany this article, which is available on GitHub:&lt;br&gt;
&lt;code&gt;git clone https://github.com/traefik-tech-blog/traefik-sre-tracing/&lt;/code&gt;&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;You &lt;strong&gt;do not&lt;/strong&gt; need to have Traefik 2.x preinstalled, as you&apos;ll do that along the way.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; To keep this tutorial simple, everything is deployed on the default namespace and without any kind of protection on the Traefik dashboard. On production, you should use custom namespaces and implement access control for the dashboard.&lt;/p&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;h2 id=&quot;set-up-distributed-tracing&quot;&gt;Set up distributed tracing&lt;/h2&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;First, you&apos;ll need to install and configure Jaeger on your Kubernetes cluster. The simplest way is to use the official &lt;a href=&quot;https://jaegertracing.github.io/helm-charts?ref=containous.ghost.io&quot;&gt;Helm chart&lt;/a&gt;. As a first step, add the &lt;code&gt;jaegertracing&lt;/code&gt; repository to your Helm repo list and update its contents:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;helm repo add jaegertracing https://jaegertracing.github.io/helm-charts
helm repo update
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The Jaeger repository provides two charts: &lt;code&gt;jaeger&lt;/code&gt; and &lt;code&gt;jaeger-operator&lt;/code&gt;. For the purpose of this tutorial, we deploy the jaeger-operator chart, which makes it easy to configure a minimal installation. To learn more about the Jaeger Operator for Kubernetes, consult the &lt;a href=&quot;https://www.jaegertracing.io/docs/operator/?ref=containous.ghost.io&quot;&gt;official documentation&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;As it’s explained in the documentation, you’ll need to install cert-manager before installing this operator:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.10.1/cert-manager.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And after, we can install jaeger-operator:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;helm install jaeger-op --set rbac.clusterRole=true jaegertracing/jaeger-operator
&lt;/code&gt;&lt;/pre&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;h3 id=&quot;minimal-deployment&quot;&gt;Minimal deployment&lt;/h3&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;Deploying Jaeger in all its details is a topic well beyond the scope of this article. Here, we deploy Jaeger with &lt;a href=&quot;https://traefik.io/blog/application-request-tracing-with-traefik-and-jaeger-on-kubernetes/?ref=containous.ghost.io&quot;&gt;all-in-one&lt;/a&gt; topology using the below configuration, which will be sufficient to demonstrate the integration:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;# jaeger.yaml
apiVersion: jaegertracing.io/v1
kind: Jaeger
metadata:
  name: jaeger
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The above configuration creates an instance named &lt;code&gt;jaeger&lt;/code&gt;. It also creates a &lt;code&gt;query-ui&lt;/code&gt;, an &lt;code&gt;agent&lt;/code&gt;, and a &lt;code&gt;collector&lt;/code&gt;. All these related services are prefixed with &lt;code&gt;jaeger&lt;/code&gt;. It does not deploy a database like Cassandra or Elastic; instead, it relies on in-memory data processing.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kubectl apply -f jaeger.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You can confirm Jaeger is running by doing a lookup on this CRD and on deployed&lt;br&gt;
services:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ kubectl get jaegers.jaegertracing.io
NAME 	STATUS	VERSION   STRATEGY   STORAGE   AGE
jaeger   Running   1.39.0	allinone   memory	5m52s

$ kubectl get services
NAME                                TYPE        CLUSTER-IP      EXTERNAL-IP   PORT(S)                                  AGE
kubernetes                          ClusterIP   10.43.0.1       &amp;lt;none&amp;gt;        443/TCP                                  76m
jaeger-op-jaeger-operator-metrics   ClusterIP   10.43.86.167    &amp;lt;none&amp;gt;        8383/TCP,8686/TCP                        82s
jaeger-collector-headless           ClusterIP   None            &amp;lt;none&amp;gt;        9411/TCP,14250/TCP,14267/TCP,14268/TCP   47s
jaeger-collector                    ClusterIP   10.43.163.147   &amp;lt;none&amp;gt;        9411/TCP,14250/TCP,14267/TCP,14268/TCP   47s
jaeger-query                        ClusterIP   10.43.27.251    &amp;lt;none&amp;gt;        16686/TCP                                47s
jaeger-agent                        ClusterIP   None            &amp;lt;none&amp;gt;        5775/UDP,5778/TCP,6831/UDP,6832/UDP      47s
&lt;/code&gt;&lt;/pre&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;h3 id=&quot;install-and-configure-traefik-proxy&quot;&gt;Install and configure Traefik Proxy&lt;/h3&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;Now it&apos;s time to deploy Traefik Proxy, which you&apos;ll do using the official &lt;a href=&quot;https://github.com/traefik/traefik-helm-chart?ref=containous.ghost.io&quot;&gt;Helm chart&lt;/a&gt;. If you haven&apos;t already, add Traefik Labs to your Helm repository list using the below commands:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;helm repo add traefik https://traefik.github.io/charts
helm repo update
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next, deploy the latest version of Traefik in the &lt;code&gt;kube-system&lt;/code&gt; namespace. For this demo, however, the standard configuration of the Helm chart won&apos;t be enough. As part of the deployment, you need to ensure that Jaeger integration is enabled in Traefik. You do this by passing &lt;code&gt;additionalArguments&lt;/code&gt; configuration flags in the &lt;code&gt;traefik-values.yaml&lt;/code&gt; file:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;tracing:
  jaeger:
    samplingServerURL: http://jaeger-agent.default.svc:5778/sampling
    localAgentHostPort: jaeger-agent.default.svc:6831
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;As shown in the above configuration, you need to provide an address for the Jaeger agent. By default, this is &lt;code&gt;localhost&lt;/code&gt;, and if you deploy &lt;code&gt;jaeger-agent&lt;/code&gt; as a sidecar, this works as expected. In this deployment, however, you need to provide an explicit address for &lt;code&gt;jaeger-agent&lt;/code&gt;, which corresponds to the &lt;code&gt;jaeger-agent.default.svc&lt;/code&gt; hostname that was configured by the Helm chart.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;helm install traefik traefik/traefik -f ./traefik-values.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Once the pods are created, you can verify the Jaeger integration by using port forwarding to expose the Traefik dashboard:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kubectl port-forward $(kubectl -n kube-system get pods --selector &amp;quot;app.kubernetes.io/name=traefik&amp;quot; --output=name) 9000:9000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If you access the Traefik dashboard at &lt;code&gt;http://localhost:9000/dashboard/&lt;/code&gt;, you will see that Jaeger distributed tracing is enabled under the &lt;strong&gt;Features&lt;/strong&gt; section:&lt;/p&gt;
&lt;!--kg-card-end: markdown--&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/01/unnamed.png&quot; class=&quot;kg-image&quot; alt loading=&quot;lazy&quot; width=&quot;1600&quot; height=&quot;1254&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/01/unnamed.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/01/unnamed.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/01/unnamed.png 1600w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;Now is also a good time to expose the Jaeger UI, which is served on port &lt;code&gt;16686&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kubectl  port-forward service/jaeger-query 16686:16686
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;When you access the Jaeger dashboard at &lt;code&gt;http://localhost:16686/&lt;/code&gt;, you will see &lt;code&gt;traefik&lt;/code&gt; in the &lt;strong&gt;Service&lt;/strong&gt; pull-down, and the Traefik endpoints will be listed in the &lt;strong&gt;Operations&lt;/strong&gt; pull-down:&lt;/p&gt;
&lt;!--kg-card-end: markdown--&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/01/unnamed--1-.png&quot; class=&quot;kg-image&quot; alt loading=&quot;lazy&quot; width=&quot;1600&quot; height=&quot;846&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/01/unnamed--1-.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/01/unnamed--1-.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/01/unnamed--1-.png 1600w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;h2 id=&quot;deploy-hot-rod&quot;&gt;Deploy Hot R.O.D.&lt;/h2&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;Now that your integration is working, you need an application to trace. For this purpose, let’s deploy &lt;a href=&quot;https://github.com/jaegertracing/jaeger/tree/master/examples/hotrod?ref=containous.ghost.io&quot;&gt;Hot R.O.D. - Rides On Demand&lt;/a&gt;, which is an example application created by the Jaeger team. It is a demo ride-booking service that consists of three microservices: &lt;code&gt;driver-service&lt;/code&gt;, &lt;code&gt;customer-service&lt;/code&gt;, and &lt;code&gt;route-service&lt;/code&gt;. Each service also has accompanying storage, such as a MySQL database or Redis cache.&lt;/p&gt;
&lt;p&gt;The application includes four pre-built &amp;quot;customer personas&amp;quot; who can book a ride using the application UI. When a car is booked, the application will find a driver and dispatch the car.&lt;/p&gt;
&lt;p&gt;Throughout the process, Jaeger will capture the user request as it flows through the various services (&lt;code&gt;driver-service&lt;/code&gt;, &lt;code&gt;customer-service&lt;/code&gt;, &lt;code&gt;route-service&lt;/code&gt;). Individual service handling will be shown as a span, and all related &lt;strong&gt;spans&lt;/strong&gt; are visualized in a graph known as the &lt;strong&gt;trace&lt;/strong&gt;.&lt;/p&gt;
&lt;p&gt;Deploy the Service along with the IngressRoute using this following configuration file:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ kubectl apply -f hotrod.yaml
deployment.apps/hotrod created
service/hotrod created
ingressroute.traefik.containo.us/hotrod created
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;hotrod&lt;/code&gt; route will match the hostname &lt;code&gt;hotrod.localhost&lt;/code&gt;, which allows you to open the application UI on &lt;code&gt;http://hotrod.localhost:8081/&lt;/code&gt;.&lt;/p&gt;
&lt;!--kg-card-end: markdown--&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/01/unnamed--2-.png&quot; class=&quot;kg-image&quot; alt loading=&quot;lazy&quot; width=&quot;1600&quot; height=&quot;411&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/01/unnamed--2-.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/01/unnamed--2-.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/01/unnamed--2-.png 1600w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;In the above UI, you can see the four prebuilt customer personas. This UI is not required for this distributed tracing demo, however, as you can use command-line tools.&lt;/p&gt;&lt;h2 id=&quot;application-traces&quot;&gt;Application traces&lt;/h2&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;To see Jaeger in action, send a few user requests to the application using a sample customer persona. For example, try the following &lt;code&gt;curl&lt;/code&gt; commands:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -I &amp;quot;http://localhost:8081/dispatch?customer=392&amp;quot; -H &amp;quot;host:hotrod.localhost&amp;quot;
curl -I &amp;quot;http://localhost:8081/dispatch?customer=123&amp;quot; -H &amp;quot;host:hotrod.localhost&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Each command triggers a sequence of requests to produce the expected result. You can see the generated traces in the Jaeger UI when you select &lt;code&gt;traefik&lt;/code&gt; as the &lt;strong&gt;Service&lt;/strong&gt; and &lt;code&gt;hotrod.localhost&lt;/code&gt; as the &lt;strong&gt;Operation&lt;/strong&gt; and click &lt;strong&gt;Find Traces&lt;/strong&gt;:&lt;/p&gt;
&lt;!--kg-card-end: markdown--&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/01/unnamed--3-.png&quot; class=&quot;kg-image&quot; alt loading=&quot;lazy&quot; width=&quot;1600&quot; height=&quot;762&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/01/unnamed--3-.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/01/unnamed--3-.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/01/unnamed--3-.png 1600w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Select either of the traces to explore the detailed request flow.&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/01/unnamed--4-.png&quot; class=&quot;kg-image&quot; alt loading=&quot;lazy&quot; width=&quot;1600&quot; height=&quot;1064&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/01/unnamed--4-.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/01/unnamed--4-.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/01/unnamed--4-.png 1600w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;The display above shows the top two spans expanded to show the information forwarded by Traefik Proxy. Each span shows the request duration, along with non-mandatory sections for &lt;strong&gt;Tags&lt;/strong&gt;, &lt;strong&gt;Process&lt;/strong&gt;, and &lt;strong&gt;Logs&lt;/strong&gt;. The &lt;strong&gt;Tags&lt;/strong&gt; section contains key-value pairs that can be associated with request handling.&lt;/p&gt;
&lt;p&gt;The Tags field of the topmost &lt;code&gt;traefik&lt;/code&gt; span shows information related to HTTP handling, such as the status code, URL, host, and so on. The next span shows the routing information for the request, including the router and service names.&lt;/p&gt;
&lt;p&gt;Jaeger can also deduce an overall architecture by analyzing the request traces. This diagram is available under the &lt;strong&gt;System Architecture &amp;gt; DAG&lt;/strong&gt; tab:&lt;/p&gt;
&lt;!--kg-card-end: markdown--&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/01/unnamed--6-.png&quot; class=&quot;kg-image&quot; alt loading=&quot;lazy&quot; width=&quot;1600&quot; height=&quot;953&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/01/unnamed--6-.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/01/unnamed--6-.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/01/unnamed--6-.png 1600w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;The graph shows that you made two requests, which were routed to the &lt;code&gt;frontend&lt;/code&gt; service. The &lt;code&gt;frontend&lt;/code&gt; service then fanned out requests to the &lt;code&gt;customer&lt;/code&gt;, &lt;code&gt;driver&lt;/code&gt;, and &lt;code&gt;route&lt;/code&gt; services.&lt;/p&gt;
&lt;p&gt;Returning to the &lt;strong&gt;Search&lt;/strong&gt; tab of the Jaeger UI, you can see that in the current cluster, you have traces generated for the following three entrypoints :&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;traefik-dashboard&lt;/code&gt;, which you used for lookup&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ping api&lt;/code&gt;, used by Kubernetes for health checks&lt;/li&gt;
&lt;li&gt;&lt;code&gt;hotrod.localhost&lt;/code&gt;, used by the Hot R.O.D. application&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;As you deploy more applications to your cluster, you will see more entries in the &lt;strong&gt;Operations&lt;/strong&gt; drop-down, based on the &lt;code&gt;entrypoint&lt;/code&gt; match.&lt;/p&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;h2 id=&quot;wrap-up&quot;&gt;Wrap up&lt;/h2&gt;&lt;p&gt;This post has presented a very simple demonstration of integrating Traefik Proxy with Jaeger. There is much more to explore with Jaeger, and similar integrations can be done with other distributed tracing systems, such as NewRelic or Datadog. Whichever one you choose, Traefik makes it easy to follow the progress of each request and gain insights into the application flow.&lt;/p&gt;&lt;p&gt;We hope you&apos;ve enjoyed this series of articles on how Traefik&apos;s capabilities can enable app monitoring and health analysis for SRE. If you missed the earlier installments on log aggregation and metrics, respectively, be sure to take a look:&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Part I: &lt;a href=&quot;https://traefik.io/blog/log-aggregation-in-kubernetes-with-traefik-proxy/?ref=containous.ghost.io&quot;&gt;Log Aggregation in Kubernetes with Traefik Proxy&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Part II: &lt;a href=&quot;https://traefik.io/blog/capture-traefik-metrics-for-apps-on-kubernetes-with-prometheus/?ref=containous.ghost.io&quot;&gt;Capture Traefik Metrics for Apps on Kubernetes with Prometheus&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;All three articles demonstrate how readily available open source software, including Traefik Proxy, can empower practices that both increase application uptime and contribute to improving the design of distributed systems.&lt;/p&gt;&lt;p&gt;If you&apos;d like to explore new features of Traefik on monitoring and visibility, check out &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 v3 Beta 1&lt;/a&gt;, with native OpenTelemetry support.&lt;/p&gt;&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 distributed tracing?&quot;,
        &quot;acceptedAnswer&quot;: {
          &quot;@type&quot;: &quot;Answer&quot;,
          &quot;text&quot;: &quot;&lt;p&gt;Distributed tracing, is an important profiling technique that complements log monitoring and metrics. It captures the transaction flow distributed across various application components and services involved in processing a user request. The captured data can then be visualized to show which component malfunctioned and caused an issue, such as an error or bottleneck.&lt;/p&gt;&quot;
        }
      }
    ]
  }
&lt;/script&gt;&lt;!--kg-card-end: html--&gt;&lt;p&gt;&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Log Aggregation in Kubernetes with Traefik Proxy]]></title>
            <description><![CDATA[This is the first part of our blog series on Traefik Proxy and SRE techniques that explores how Traefik's built-in logging features can help to provide visibility.]]></description>
            <link>https://traefik.io/log-aggregation-in-kubernetes-with-traefik-proxy</link>
            <guid isPermaLink="true">https://traefik.io/log-aggregation-in-kubernetes-with-traefik-proxy</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Kubernetes]]></category>
            <category><![CDATA[Microservices]]></category>
            <category><![CDATA[Observability]]></category>
            <category><![CDATA[Guides]]></category>
            <dc:creator><![CDATA[Michel Loiseleur]]></dc:creator>
            <pubDate>Wed, 18 Jan 2023 16:38:55 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/01/Blog@2x--15--1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;log aggregation in kubernetes with 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/01/Blog@2x--15--1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/01/Blog@2x--15--1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/01/Blog@2x--15--1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/01/Blog@2x--15--1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;p&gt;Originally published: February 2021&lt;br&gt;Updated: December 2022&lt;/p&gt;&lt;hr&gt;&lt;p&gt;When deployed as a Kubernetes ingress controller, Traefik Proxy can process and route many thousands of requests without a complaint! And yet, for the operations team, visibility into what&apos;s happening behind the scenes is essential. Is the application healthy? Is it working as intended? Monitoring distributed systems is one of the core principles of the set of practices known as &lt;a href=&quot;https://sre.google/sre-book/table-of-contents/?ref=containous.ghost.io&quot;&gt;Site Reliability Engineering&lt;/a&gt; (SRE).&lt;/p&gt;&lt;p&gt;This article is the first in a series of posts on Traefik Proxy and SRE techniques that explores how Traefik&apos;s built-in logging features can help to provide visibility. When combined with a set of open source observability projects like &lt;a href=&quot;https://opentelemetry.io/?ref=containous.ghost.io&quot;&gt;Open Telemetry&lt;/a&gt;, &lt;a href=&quot;https://www.elastic.co/what-is/elk-stack?ref=containous.ghost.io&quot;&gt;Elastic Stack&lt;/a&gt;, &lt;a href=&quot;https://grafana.com/products/enterprise/?ref=containous.ghost.io&quot;&gt;Grafana Stack&lt;/a&gt;, etc., Traefik becomes part of a rich set of tools for network log analysis and visualization.&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;prerequisites&quot;&gt;Prerequisites&lt;/h2&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;If you&apos;d like to follow along with this tutorial on your own machine, you&apos;ll need a few things first:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A Kubernetes cluster running at localhost. One way to achieve this is to create a local cluster running in Docker containers using &lt;a href=&quot;https://kind.sigs.k8s.io/?ref=containous.ghost.io&quot;&gt;kind&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Helm v3.9+ installed&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;kubectl&lt;/code&gt; command-line tool is installed and configured to access your cluster.&lt;/li&gt;
&lt;li&gt;kind requires some config in order to use an IngressController on localhost:&lt;pre&gt;&lt;code&gt;$ cat kind.config
kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
- role: control-plane
  extraPortMappings:
  - containerPort: 30000
    hostPort: 80
    protocol: TCP
  - containerPort: 30001
    hostPort: 443
    protocol: TCP
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;p&gt;All config files are in the public GitHub &lt;a href=&quot;https://github.com/traefik-tech-blog/traefik-sre-logging.git?ref=containous.ghost.io&quot;&gt;repository&lt;/a&gt; that accompanies this article, so you just have to clone it and create our local cluster with this network configuration:&lt;/p&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;pre&gt;&lt;code&gt;$ git clone https://github.com/traefik-tech-blog/traefik-sre-logging/ 
$ cd traefik-sre-logging 
$ kind create cluster --config=kind.config 
$ kubectl cluster-info
$ kubectl get nodes
&lt;/code&gt;&lt;/pre&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; To keep this tutorial simple, everything is deployed on the default namespace and without any kind of protection on the Traefik dashboard. On production, you should use custom namespaces and implement access control for the dashboard.&lt;/p&gt;&lt;h2 id=&quot;set-up-traefik-proxy&quot;&gt;Set up Traefik Proxy&lt;/h2&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;First, let’s start by deploying Traefik Proxy using the Helm chart and enabling logs. We can configure Helm chart deployment with a values file. We’ll start by just enabling &lt;code&gt;access.logs&lt;/code&gt;. By default, they will be on stdout of the Traefik pod.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ cat traefik-values-01.yaml 
ports:
  web:
    nodePort: 30000
  websecure:
    nodePort: 30001
logs:
  access:
    enabled: true
ingressRoute:
  dashboard:
    enabled: true
    # You should protect your dashboard if it’s on the internet matchRule:
    matchRule: Host(`dashboard.docker.localhost`)
    entryPoints: [&amp;quot;web&amp;quot;]      
additionalArguments:
- &amp;quot;--ping&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The &lt;code&gt;ports&lt;/code&gt; with &lt;code&gt;nodePort&lt;/code&gt; is only needed with our kind setup. Let&apos;s deploy it:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ helm repo add traefik https://traefik.github.io/charts
$ helm install traefik -f traefik-values traefik/traefik
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You should be able to access Traefik dashboard on the configured Host:&lt;/p&gt;
&lt;!--kg-card-end: markdown--&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/01/unnamed--5-.png&quot; class=&quot;kg-image&quot; alt loading=&quot;lazy&quot; width=&quot;1600&quot; height=&quot;806&quot; srcset=&quot;https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w600/2023/01/unnamed--5-.png 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/01/unnamed--5-.png 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/01/unnamed--5-.png 1600w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;And to see logs on stdout of Traefik pods:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;kubectl logs -f -l app.kubernetes.io/name=traefik
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;deploy-a-sample-application&quot;&gt;Deploy a sample application&lt;/h3&gt;
&lt;p&gt;For the purpose of this tutorial, I am using our sample app, &lt;code&gt;whoami&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ kubectl apply -f apps/
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;It can then be accessed with a browser or with curl:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ curl http://whoami.docker.localhost
&lt;/code&gt;&lt;/pre&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;h3 id=&quot;configure-logging-for-a-collector&quot;&gt;Configure logging for a collector&lt;/h3&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;If you want to collect logs, you need to put those logs into a file, and often you&apos;ll also need to convert it from raw to JSON. For this, we use a local volume (emptyDir). You can change the format and set a path for access logs with those values:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;--- traefik-values-01.yaml	2022-12-02 16:14:07.973877899 +0100
+++ traefik-values-02.yaml	2022-12-05 17:18:34.839234310 +0100
@@ -6,6 +6,14 @@
 logs:
   access:
     enabled: true
+    format: json
+    filePath: &amp;quot;/var/log/traefik/access.log&amp;quot;
+deployment:
+  additionalVolumes:
+  - name: logs
+additionalVolumeMounts:
+- name: logs
+  mountPath: /var/log/traefik
 ingressRoute:
   dashboard:
     enabled: true
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To see the logs, we&apos;ll use a sidecar container to tail this file:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;--- traefik-values-02.yaml	2022-12-05 17:18:34.839234310 +0100
+++ traefik-values-03.yaml	2022-12-05 17:21:47.387319123 +0100
@@ -9,6 +9,13 @@
     format: json
     filePath: &amp;quot;/var/log/traefik/access.log&amp;quot;
 deployment:
+  additionalContainers:
+  - name: tail-accesslogs
+    image: busybox
+    args: [ &amp;quot;/bin/sh&amp;quot;, &amp;quot;-c&amp;quot;, &amp;quot;tail -n+1 -F /var/log/traefik/access.log&amp;quot; ]
+    volumeMounts:
+    - name: logs
+      mountPath: /var/log/traefik
   additionalVolumes:
   - name: logs
 additionalVolumeMounts:
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Instead of tail, you can, of course, use a log collector. After applying it, we can see logs in JSON format on the &lt;code&gt;tail-accesslogs&lt;/code&gt; sidecar:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ helm upgrade -i -f traefik-values-03.yaml traefik traefik/traefik
$ kubectl logs -f -l app.kubernetes.io/name=traefik -c tail-accesslogs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You should see all current fields of ping requests:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  &amp;quot;ClientAddr&amp;quot;: &amp;quot;10.244.0.1:41388&amp;quot;,
  &amp;quot;ClientHost&amp;quot;: &amp;quot;10.244.0.1&amp;quot;,
  &amp;quot;ClientPort&amp;quot;: &amp;quot;41388&amp;quot;,
  &amp;quot;ClientUsername&amp;quot;: &amp;quot;-&amp;quot;,
  &amp;quot;DownstreamContentSize&amp;quot;: 2,
  &amp;quot;DownstreamStatus&amp;quot;: 200,
  &amp;quot;Duration&amp;quot;: 34633,
  &amp;quot;OriginContentSize&amp;quot;: 2,
  &amp;quot;OriginDuration&amp;quot;: 7325,
  &amp;quot;OriginStatus&amp;quot;: 200,
  &amp;quot;Overhead&amp;quot;: 27308,
  &amp;quot;RequestAddr&amp;quot;: &amp;quot;10.244.0.13:9000&amp;quot;,
  &amp;quot;RequestContentSize&amp;quot;: 0,
  &amp;quot;RequestCount&amp;quot;: 64,
  &amp;quot;RequestHost&amp;quot;: &amp;quot;10.244.0.13&amp;quot;,
  &amp;quot;RequestMethod&amp;quot;: &amp;quot;GET&amp;quot;,
  &amp;quot;RequestPath&amp;quot;: &amp;quot;/ping&amp;quot;,
  &amp;quot;RequestPort&amp;quot;: &amp;quot;9000&amp;quot;,
  &amp;quot;RequestProtocol&amp;quot;: &amp;quot;HTTP/1.1&amp;quot;,
  &amp;quot;RequestScheme&amp;quot;: &amp;quot;http&amp;quot;,
  &amp;quot;RetryAttempts&amp;quot;: 0,
  &amp;quot;RouterName&amp;quot;: &amp;quot;ping@internal&amp;quot;,
  &amp;quot;StartLocal&amp;quot;: &amp;quot;2022-12-05T16:25:29.38659907Z&amp;quot;,
  &amp;quot;StartUTC&amp;quot;: &amp;quot;2022-12-05T16:25:29.38659907Z&amp;quot;,
  &amp;quot;entryPointName&amp;quot;: &amp;quot;traefik&amp;quot;,
  &amp;quot;level&amp;quot;: &amp;quot;info&amp;quot;,
  &amp;quot;msg&amp;quot;: &amp;quot;&amp;quot;,
  &amp;quot;time&amp;quot;: &amp;quot;2022-12-05T16:25:29Z&amp;quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;h3 id=&quot;add-headers-to-accesslogs&quot;&gt;Add headers to access.logs&lt;/h3&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;As you can see and, aligned with the &lt;a href=&quot;https://doc.traefik.io/traefik/observability/access-logs/?ref=containous.ghost.io#limiting-the-fieldsincluding-headers&quot;&gt;documentation&lt;/a&gt;, there is no header by default. Let&apos;s try to add an HTTP header to those &lt;code&gt;access.logs&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;--- traefik-values-03.yaml	2022-12-05 17:21:47.387319123 +0100
+++ traefik-values-04.yaml	2022-12-05 17:42:44.140244962 +0100
@@ -8,6 +8,9 @@
     enabled: true
     format: json
     filePath: &amp;quot;/var/log/traefik/access.log&amp;quot;
+    fields:
+      headers:
+        defaultmode: keep
 deployment:
   additionalContainers:
   - name: tail-accesslogs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Apply the change:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ helm upgrade -i -f traefik-values-04.yaml traefik traefik/traefik
$ kubectl logs -f -l app.kubernetes.io/name=traefik -c tail-accesslogs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And see &lt;code&gt;headerfields&lt;/code&gt; on the sidecar container, prefixed with &lt;code&gt;request&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  [...],
  &amp;quot;request_Accept&amp;quot;: &amp;quot;*/*&amp;quot;,
  &amp;quot;request_Connection&amp;quot;: &amp;quot;close&amp;quot;,
  &amp;quot;request_User-Agent&amp;quot;: &amp;quot;kube-probe/1.25&amp;quot;,
  &amp;quot;request_X-Forwarded-Host&amp;quot;: &amp;quot;10.244.0.16:9000&amp;quot;,
  &amp;quot;request_X-Forwarded-Port&amp;quot;: &amp;quot;9000&amp;quot;,
  &amp;quot;request_X-Forwarded-Proto&amp;quot;: &amp;quot;http&amp;quot;,
  &amp;quot;request_X-Forwarded-Server&amp;quot;: &amp;quot;traefik-b6b999947-wb5lw&amp;quot;,
  &amp;quot;request_X-Real-Ip&amp;quot;: &amp;quot;10.244.0.1&amp;quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;h3 id=&quot;protect-sensitive-header&quot;&gt;Protect sensitive header&lt;/h3&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;Now let&apos;s say that we want to:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Check that &lt;code&gt;Authorization&lt;/code&gt; header with a token is here, but without writing this sensitive value.&lt;/li&gt;
&lt;li&gt;Drop Accept and Connection fields&lt;/li&gt;
&lt;/ol&gt;
&lt;pre&gt;&lt;code&gt;--- traefik-values-04.yaml	2022-12-05 17:42:44.140244962 +0100
+++ traefik-values-05.yaml	2022-12-05 17:56:34.397503223 +0100
@@ -11,6 +11,10 @@
     fields:
       headers:
         defaultmode: keep
+        names:
+          Accept: drop
+          Connection: drop
+          Authorization: redact
 deployment:
   additionalContainers:
   - name: tail-accesslogs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;After applying it:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ helm upgrade -i -f traefik-values-05.yaml traefik traefik/traefik
$ kubectl logs -f -l app.kubernetes.io/name=traefik -c tail-accesslogs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And after sending a request with the &lt;code&gt;Authorization&lt;/code&gt; header:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;curl -X GET &amp;quot;http://whoami.docker.localhost&amp;quot; -H &amp;quot;Authorization: Bearer Thiswontbeintheaccesslogs&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;We can see the new format, with sensitive the &lt;code&gt;Authorization&lt;/code&gt; header redacted:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  [...],
  &amp;quot;origin_Accept-Ranges&amp;quot;: &amp;quot;bytes&amp;quot;,
  &amp;quot;origin_Content-Length&amp;quot;: &amp;quot;3124&amp;quot;,
  &amp;quot;origin_Content-Security-Policy&amp;quot;: &amp;quot;frame-src self https://traefik.io https://*.traefik.io;&amp;quot;,
  &amp;quot;origin_Content-Type&amp;quot;: &amp;quot;text/html; charset=utf-8&amp;quot;,
  &amp;quot;request_Authorization&amp;quot;: &amp;quot;REDACTED&amp;quot;,
  &amp;quot;request_User-Agent&amp;quot;: &amp;quot;curl/7.74.0&amp;quot;,
  &amp;quot;request_X-Forwarded-Host&amp;quot;: &amp;quot;dashboard.docker.localhost&amp;quot;,
  &amp;quot;request_X-Forwarded-Port&amp;quot;: &amp;quot;80&amp;quot;,
  &amp;quot;request_X-Forwarded-Proto&amp;quot;: &amp;quot;http&amp;quot;,
  &amp;quot;request_X-Forwarded-Server&amp;quot;: &amp;quot;traefik-74d455649f-ndhcj&amp;quot;,
  &amp;quot;request_X-Real-Ip&amp;quot;: &amp;quot;10.244.0.1&amp;quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And there are also new origin headers sent by Curl with our test.&lt;/p&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;h3 id=&quot;timezone-and-buffering&quot;&gt;Timezone and buffering&lt;/h3&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;Now, let&apos;s try to change the timezone and use the buffering feature to increase performance.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;--- traefik-values-05.yaml	2022-12-05 17:56:34.397503223 +0100
+++ traefik-values-06.yaml	2022-12-06 09:27:12.536753905 +0100
@@ -8,6 +8,7 @@
     enabled: true
     format: json
     filePath: &amp;quot;/var/log/traefik/access.log&amp;quot;
+    bufferingSize: 1000
     fields:
       headers:
         defaultmode: keep
@@ -15,6 +16,9 @@
           Accept: drop
           Connection: drop
           Authorization: redact
+env:
+- name: TZ
+  value: &amp;quot;Brazil/East&amp;quot;
 deployment:
   additionalContainers:
   - name: tail-accesslogs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Apply it like the other changes:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ helm upgrade -i -f traefik-values-06.yaml traefik traefik/traefik
$ kubectl logs -f -l app.kubernetes.io/name=traefik -c tail-accesslogs
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And see the difference in timezones:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;{
  [...],
  &amp;quot;StartLocal&amp;quot;: &amp;quot;2022-12-06T05:29:15.353148769-03:00&amp;quot;,
  &amp;quot;StartUTC&amp;quot;: &amp;quot;2022-12-06T08:29:15.353148769Z&amp;quot;,
  &amp;quot;time&amp;quot;: &amp;quot;2022-12-06T05:29:15-03:00&amp;quot;
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;StartLocal&lt;/code&gt; and &lt;code&gt;time&lt;/code&gt; are using the &lt;code&gt;Brazil/East&lt;/code&gt; timezone, which is UTC-3.&lt;br&gt;
For the buffering, we can see on a simple load test that Traefik Proxy can handle +16% more traffic:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ # Before bufferingSize
$ ab -n 10000 -C 100 http://whoami.docker.localhost/
[...]
Requests per second:    1448.70 [#/sec] (mean)
$ # After applying bufferingSize to 1000
Requests per second:    1687.53 [#/sec] (mean)
&lt;/code&gt;&lt;/pre&gt;
&lt;!--kg-card-end: markdown--&gt;&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;&lt;p&gt;This simple tutorial serves to demonstrate Traefik&apos;s comprehensive logging capabilities. You can really tailor Traefik Proxy logs before collecting them. It&apos;s a powerful tool for understanding the health and performance of services running on Kubernetes clusters.&lt;/p&gt;&lt;p&gt;In the next two articles of this series, I will cover the other two legs of observability: metrics and tracing, used with &lt;a href=&quot;https://opentelemetry.io/?ref=containous.ghost.io&quot;&gt;OpenTelemetry&lt;/a&gt;, &lt;a href=&quot;https://prometheus.io/?ref=containous.ghost.io&quot;&gt;Prometheus&lt;/a&gt;, and many others.&lt;/p&gt;&lt;ul&gt;&lt;li&gt;Part II: &lt;a href=&quot;https://traefik.io/blog/capture-traefik-metrics-for-apps-on-kubernetes-with-prometheus/?ref=containous.ghost.io&quot;&gt;Capture Traefik Metrics for Apps on Kubernetes with Prometheus&lt;/a&gt;&lt;/li&gt;&lt;li&gt;Part III: &lt;a href=&quot;https://traefik.io/blog/distributed-tracing-with-traefik-and-jaeger-on-kubernetes/?ref=containous.ghost.io&quot;&gt;Distributed Tracing with Traefik and Jaeger on Kubernetes&lt;/a&gt;&lt;/li&gt;&lt;/ul&gt;&lt;p&gt;As usual, if you love Traefik Proxy and there are features you&apos;d like to see in future releases, open a feature request or get in touch with other community members on our &lt;a href=&quot;https://community.traefik.io/?ref=containous.ghost.io&quot;&gt;Forum&lt;/a&gt;. And if you&apos;d like to dig deeper into how your Traefik Proxy instances operate, check out &lt;a href=&quot;https://traefik.io/traefik-hub/?ref=containous.ghost.io&quot;&gt;Traefik Hub&lt;/a&gt;, our Cloud Native networking platform.&lt;/p&gt;&lt;p&gt;&lt;br&gt;&lt;/p&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Secure Web Applications with Traefik Proxy, cert-manager, and Let’s Encrypt]]></title>
            <description><![CDATA[Let's dig into how you can use cert-manager to extend Traefik Proxy’s capabilities as a Kubernetes ingress controller to secure your web applications.]]></description>
            <link>https://traefik.io/secure-web-applications-with-traefik-proxy-cert-manager-and-lets-encrypt</link>
            <guid isPermaLink="true">https://traefik.io/secure-web-applications-with-traefik-proxy-cert-manager-and-lets-encrypt</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Kubernetes]]></category>
            <category><![CDATA[Access Control]]></category>
            <category><![CDATA[Guides]]></category>
            <dc:creator><![CDATA[Richard Hillmann]]></dc:creator>
            <pubDate>Tue, 17 Jan 2023 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/2023/01/Blog@2x--14--1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;secure web apps with traefik cert manager and lets encrypt&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/01/Blog@2x--14--1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2023/01/Blog@2x--14--1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2023/01/Blog@2x--14--1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2023/01/Blog@2x--14--1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;Managing TLS certificates has never been easier. Not that long ago, running secure websites was a tedious job for engineers as they had to deal with complex business processes and chores. Who does not remember the times when you had to make a purchase requisition, get in touch with your vendor with your Certificate Signing Request (CSR), watch out for an email to validate your domain, and eventually announce a maintenance window that you will have fun with deploying the certificate in production?&lt;/p&gt;
&lt;p&gt;Phew — I’m certainly glad those days are gone!&lt;/p&gt;
&lt;p&gt;Shaken by the revolutionary non-profit Certificate Authority, &lt;a href=&quot;https://letsencrypt.org/?ref=containous.ghost.io&quot;&gt;Let’s Encrypt&lt;/a&gt;, and its &lt;a href=&quot;https://en.wikipedia.org/wiki/Automatic_Certificate_Management_Environment?ref=containous.ghost.io&quot;&gt;ACME&lt;/a&gt; protocol, the market gradually moved into fully-automated solutions that enabled developers to deliver secure websites at no costs with the least effort.&lt;/p&gt;
&lt;p&gt;Since day one, &lt;a href=&quot;https://traefik.io/traefik/?ref=containous.ghost.io&quot;&gt;Traefik Proxy&lt;/a&gt; provides a native Let’s Encrypt integration to automate the full lifecycle of certificates. Without the need to handle any third-party tooling, Traefik Proxy is the natural choice for automated certificate management.&lt;/p&gt;
&lt;p&gt;While using a single instance of Traefik Proxy with Let&apos;s Encrypt works like a charm, however, running multiple instances can raise some issues. If your production environment requires you to use Let&apos;s Encrypt with high availability (HA) in Kubernetes, you always have the option of &lt;a href=&quot;https://traefik.io/traefik-enterprise/?ref=containous.ghost.io&quot;&gt;Traefik Enterprise&lt;/a&gt;, which includes distributed Let&apos;s Encrypt as a supported feature.&lt;/p&gt;
&lt;p&gt;But if you want to stick with Traefik Proxy, you have nothing to fear!&lt;/p&gt;
&lt;p&gt;With Kubernetes we got a powerful and extensible platform to solve a lot of complex scenarios. &lt;a href=&quot;https://cert-manager.io/?ref=containous.ghost.io&quot;&gt;cert-manager&lt;/a&gt; is a powerful solution that helps us automate and manage almost everything around TLS certificates. It provides a set of Custom Resource Definitions (CRD) for various scenarios and integrates well with native &lt;code&gt;Ingress&lt;/code&gt; or &lt;code&gt;Gateway&lt;/code&gt; resources.&lt;/p&gt;
&lt;p&gt;cert-manager stores and caches certificates and private keys in Kubernetes secrets, making them highly available for further consumption by ingress controllers (like Traefik Proxy) or applications.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; By default, cert-manager does not clean up secrets automatically, allowing it to re-attach to already issued certificates and avoid issuing new certificates. This becomes very handy in scenarios when you need to create and delete lots of resources and would not like to be rate limited.&lt;/p&gt;
&lt;p&gt;cert-manager can interact with a variety of sources to issue certificates including Let’s Encrypt, HashiCorp Vault as well as private PKI. For unsupported cases like &lt;a href=&quot;https://aws.amazon.com/certificate-manager/private-certificate-authority/?ref=containous.ghost.io&quot;&gt;AWS Private Certificate Authority&lt;/a&gt;, &lt;a href=&quot;https://cloud.google.com/certificate-authority-service/?ref=containous.ghost.io&quot;&gt;Google Cloud Certificate Authority Service&lt;/a&gt; or &lt;a href=&quot;https://developers.cloudflare.com/ssl/origin-configuration/origin-ca?ref=containous.ghost.io&quot;&gt;Cloudflare Origin CA&lt;/a&gt; the &lt;a href=&quot;https://cert-manager.io/docs/configuration/external/?ref=containous.ghost.io&quot;&gt;External Issuer&lt;/a&gt; allows you to extend cert-manager capabilities..&lt;/p&gt;
&lt;p&gt;But enough talk! Time to get down to business and dig into how you can use cert-manager to extend Traefik Proxy’s capabilities.&lt;/p&gt;
&lt;h2 id=&quot;prerequisites&quot;&gt;Prerequisites&lt;/h2&gt;
&lt;p&gt;To follow this tutorial, you’ll need the following:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;A Kubernetes cluster &amp;gt;= v1.20&lt;/li&gt;
&lt;li&gt;A public hosted DNS domain for Let’s Encrypt — for the purpose of this article I will use Cloudflare&lt;/li&gt;
&lt;li&gt;A Kubernetes native ingress controller: Traefik Proxy 2.9, you can install the &lt;a href=&quot;https://github.com/traefik/traefik-helm-chart?ref=containous.ghost.io&quot;&gt;helm chart&lt;/a&gt; with this command:&lt;pre&gt;&lt;code&gt;helm install traefik traefik/traefik
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;cert-manager 1.10 which you can install with this command:&lt;pre&gt;&lt;code&gt;kubectl apply -f https://github.com/cert-manager/cert-manager/releases/download/v1.10.1/cert-manager.yaml
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;A service providing a web port. In this tutorial, I’ll be using whoami as an example:&lt;pre&gt;&lt;code&gt;apiVersion: v1
kind: Namespace
metadata:
 name: whoami
---
apiVersion: v1
kind: Service
metadata:
 name: whoami
 namespace: whoami
spec:
 ports:
   - name: web
     port: 80
     targetPort: web
 selector:
   app: whoami
---
apiVersion: apps/v1
kind: Deployment
metadata:
 name: whoami
 namespace: whoami
spec:
 selector:
   matchLabels:
     app: whoami
 template:
   metadata:
     labels:
       app: whoami
   spec:
     containers:
       - name: whoami
         image: traefik/whoami
         ports:
           - name: web
             containerPort: 80
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;h2 id=&quot;traefik-proxy-with-cert-manager-and-let%E2%80%99s-encrypt&quot;&gt;Traefik Proxy with cert-manager and Let’s Encrypt&lt;/h2&gt;
&lt;p&gt;Let’s explore how we can secure a web application in combination with a Kubernetes ingress controller like Traefik Proxy and cert-manager. Let’s Encrypt provides multiple &lt;a href=&quot;https://letsencrypt.org/docs/challenge-types/?ref=containous.ghost.io&quot;&gt;challenge types&lt;/a&gt; to validate control of a domain name. Depending on your requirements you may choose &lt;code&gt;HTTP-01&lt;/code&gt; when your service is public reachable or &lt;code&gt;DNS-01&lt;/code&gt; for private endpoints.&lt;/p&gt;
&lt;p&gt;Please be aware of rate limits when using lets encrypt. To avoid unpleasant surprises it is recommended to use the Let’s Encrypt &lt;a href=&quot;https://letsencrypt.org/docs/staging-environment/?ref=containous.ghost.io&quot;&gt;staging environment&lt;/a&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;staging: https://acme-staging-v02.api.letsencrypt.org/directory`
production: https://acme-v02.api.letsencrypt.org/directory
&lt;/code&gt;&lt;/pre&gt;
&lt;h3 id=&quot;http-challenge&quot;&gt;HTTP challenge&lt;/h3&gt;
&lt;p&gt;For most common scenarios the &lt;a href=&quot;https://cert-manager.io/docs/configuration/acme/http01/?ref=containous.ghost.io&quot;&gt;HTTP-01&lt;/a&gt; challenge is a convenient start to solve an ACME based validation. To make this scenario work, Traefik Proxy needs to be reachable from the internet on HTTP port 80, and the used DNS domain has to be configured to point to it.&lt;/p&gt;
&lt;p&gt;When a new certificate needs to be issued (or renewed), cert-manager will create a temporary &lt;code&gt;Ingress&lt;/code&gt; resource to route requests made by the ACME server to the specific matched host and &lt;code&gt;./well-known/acme-challenge/xxx&lt;/code&gt; path, so it can answer with the desired response.&lt;/p&gt;
&lt;h4 id=&quot;implementing-the-challenge&quot;&gt;Implementing the challenge&lt;/h4&gt;
&lt;p&gt;First you need to define a new cert-manager &lt;a href=&quot;https://cert-manager.io/docs/concepts/issuer/?ref=containous.ghost.io&quot;&gt;Issuer&lt;/a&gt; to represent a certificate issuing authority. This example uses the ACME-based Certificate Authority in conjunction with Let’s Encrypt.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; You need to change the server to production to retrieve a certificate that will be accepted by your browser.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
 name: le-example-http
 namespace: whoami
spec:
 acme:
   email: user@example.com
   # We use the staging server here for testing to avoid hitting
   server: https://acme-staging-v02.api.letsencrypt.org/directory
   privateKeySecretRef:
     # if not existing, it will register a new account and stores it
     name: example-issuer-account-key
   solvers:
     - http01:
         # The ingressClass used to create the necessary ingress routes
         ingress:
           class: traefik
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Next, you’ll need a Kubernetes &lt;a href=&quot;https://kubernetes.io/docs/concepts/services-networking/ingress/?ref=containous.ghost.io&quot;&gt;Ingress&lt;/a&gt; resource to define the domain for TLS we want to attach.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
 name: whoami
 namespace: whoami
 annotations:
   cert-manager.io/issuer: &amp;quot;le-example-http&amp;quot;
spec:
 tls:
   - hosts:
       - whoami.example.com
     secretName: tls-whoami-ingress-http
 rules:
   - host: whoami.example.com
     http:
       paths:
         - path: /
           pathType: Prefix
           backend:
             service:
               name: whoami
               port:
                 name: web
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;cert-manager automatically creates a new &lt;a href=&quot;https://cert-manager.io/docs/concepts/certificate/?ref=containous.ghost.io&quot;&gt;Certificate&lt;/a&gt; resource for the specified domain with the given &lt;code&gt;secretName&lt;/code&gt;, provisions a &lt;a href=&quot;https://cert-manager.io/docs/concepts/certificaterequest/?ref=containous.ghost.io&quot;&gt;CertificateRequest&lt;/a&gt; to request a signed certificate from one of the configured issuers, and stores the certificate and private key with the same name as the secret. The annotation &lt;code&gt;cert-manager.io/issuer&lt;/code&gt; requires the name of the previously created Issuer and enables the resource to be managed by cert-manager.&lt;/p&gt;
&lt;p&gt;Once the secret has been created, Traefik Proxy will fetch the certificate and private key and will serve it when the requested domain is called. Alternatively, you can also deploy a &lt;code&gt;ClusterIssuer&lt;/code&gt; resource, which is accessible across all namespaces and referenced by the annotation &lt;code&gt;cert-manager.io/cluster-issuer&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; cert-manager will not clean up certificates on its own, so they can be easily re-attached even if someone makes changes to the given Ingress object. If there is already an existing and valid certificate in place, it will be re-used.&lt;/p&gt;
&lt;h3 id=&quot;dns-challenge&quot;&gt;DNS challenge&lt;/h3&gt;
&lt;p&gt;In some cases, you are not able to use the HTTP challenge (usually when your service is only internally available) and have to fall back to a DNS challenge. All you need to have in place is a registered DNS domain that can be resolved from the internet.&lt;/p&gt;
&lt;p&gt;Unfortunately, cert-manager only supports a small range of DNS providers natively or dynamic DNS via RFC2136. Luckily there is the option to extend this with &lt;a href=&quot;https://cert-manager.io/docs/configuration/acme/dns01/webhook/?ref=containous.ghost.io&quot;&gt;custom webhook solvers&lt;/a&gt;, so make sure to check out existing projects before implementing your own.&lt;/p&gt;
&lt;h4 id=&quot;implementing-the-challenge&quot;&gt;Implementing the challenge&lt;/h4&gt;
&lt;p&gt;The process looks almost the same as with the HTTP challenge. Instead of specifying the HTTP challenge, you need to set up the &lt;code&gt;Issuer&lt;/code&gt; for using the DNS challenge. cert-manager will take care of creating the necessary validation records in the respected DNS zone.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;apiVersion: v1
kind: Secret
metadata:
 name: cloudflare-api-token-secret
type: Opaque
stringData:
 api-token: &amp;lt;API Token&amp;gt;
---
apiVersion: cert-manager.io/v1
kind: Issuer
metadata:
 name: le-example-dns
 namespace: whoami
spec:
 acme:
   email: user@example.com
   # We use the staging server here for testing to avoid hitting
   server: https://acme-staging-v02.api.letsencrypt.org/directory
   privateKeySecretRef:
     # if not existing, it will register a new account and stores it
     name: example-issuer-account-key
   solvers:
     - dns01:
         cloudflare:
           apiTokenSecretRef:
             name: cloudflare-api-token-secret
             key: api-token

---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
 name: whoami
 namespace: whoami
 annotations:
   cert-manager.io/issuer: &amp;quot;le-example-dns&amp;quot;
spec:
 tls:
   - hosts:
       - whoami.example.com
     secretName: tls-whoami-ingress-dns
 rules:
   - host: whoami.example.com
     http:
       paths:
         - path: /
           pathType: Prefix
           backend:
             service:
               name: whoami
               port:
                 name: web
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;troubleshooting&quot;&gt;Troubleshooting&lt;/h2&gt;
&lt;p&gt;All cert--manager resources provide handy status and event information. It helps you understand problems and verify everything is working as expected.&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;$ kubectl -n whoami get issuer -o wide
NAME              READY   STATUS
le-example-http   True    The ACME account was registered with the ACME server

$ kubectl -n whoami get certificateRequest -o wide
NAME                            APPROVED   DENIED   READY   ISSUER            STATUS
tls-whoami-ingress-http-fdw2x   True                True    le-example-http   Certificate fetched from issuer successfully

$ kubectl -n whoami get certificates
NAME                      READY   SECRET                    ISSUER            STATUS
tls-whoami-ingress-http   True    tls-whoami-ingress-http   le-example-http   Certificate is up to date and has not expired

$ kubectl -n whoami describe secret tls-whoami-ingress-http
Annotations:  cert-manager.io/alt-names: whoami.example.com
             cert-manager.io/certificate-name: tls-whoami-ingress-http
             cert-manager.io/common-name: whoami.example.com
             cert-manager.io/issuer-name: le-example-http

Type:  kubernetes.io/tls

Data
====
tls.crt:  2449 bytes
tls.key:  1679 bytes
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;summary&quot;&gt;Summary&lt;/h2&gt;
&lt;p&gt;This blog post just scratched the surface on the possibilities of cert-manager in conjunction with Let’s Encrypt. It already helps users to automate enrolling our application with publicly valid certificates for HTTPS while keeping it up to date.&lt;/p&gt;
&lt;p&gt;Today, cert-manager is the almost perfect solution in Kubernetes for dealing with any kind of work with certificates. It is even possible to create your own simple private PKI without the need to deal with any CLI tools for automation.&lt;/p&gt;
&lt;p&gt;I’d also recommend you explore more advanced features and use cases, like securing your pod-to-pod communication by leveraging the &lt;a href=&quot;https://cert-manager.io/docs/projects/csi-driver/?ref=containous.ghost.io&quot;&gt;CSI driver&lt;/a&gt; for mTLS or the &lt;a href=&quot;https://cert-manager.io/docs/projects/csi-driver-spiffe/?ref=containous.ghost.io&quot;&gt;CSI SPIFFE driver&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Did you know that &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 1&lt;/a&gt; added native support for &lt;a href=&quot;https://spiffe.io/?ref=containous.ghost.io&quot;&gt;SPIFFE&lt;/a&gt;? Check out the &lt;a href=&quot;https://github.com/traefik/traefik/releases/tag/v3.0.0-beta1?ref=containous.ghost.io&quot;&gt;latest beta version of Traefik Proxy&lt;/a&gt;, play around with the new features and capabilities, and don’t forget to &lt;a href=&quot;https://community.traefik.io/?ref=containous.ghost.io&quot;&gt;share your feedback&lt;/a&gt;!&lt;/p&gt;
&lt;!--kg-card-end: markdown--&gt; ]]&gt;</content:encoded>
        </item>
        <item>
            <title><![CDATA[Mocktail: The Mock Generator for Strongly-Typed Mocks You’ve Been Looking For]]></title>
            <description><![CDATA[Mocktail, a mock generator for strongly-typed mocks, is a nifty little tool that can save you hours of frustration manually creating mocks. ]]></description>
            <link>https://traefik.io/mocktail-the-mock-generator-for-strongly-typed-mocks</link>
            <guid isPermaLink="true">https://traefik.io/mocktail-the-mock-generator-for-strongly-typed-mocks</guid>
            <category><![CDATA[Blog]]></category>
            <category><![CDATA[Community]]></category>
            <category><![CDATA[Guides]]></category>
            <dc:creator><![CDATA[Ludovic Fernandez]]></dc:creator>
            <pubDate>Tue, 10 Jan 2023 10:22: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/2022/12/Blog@2x--13--1.jpg&quot; class=&quot;kg-image&quot; alt=&quot;a mock generator for strongly typed mocks&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/2022/12/Blog@2x--13--1.jpg 600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1000/2022/12/Blog@2x--13--1.jpg 1000w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/size/w1600/2022/12/Blog@2x--13--1.jpg 1600w, https://storage.ghost.io/c/9f/0d/9f0dcb4f-3eeb-4186-b453-8ff9bae963b2/content/images/2022/12/Blog@2x--13--1.jpg 2400w&quot; sizes=&quot;(min-width: 720px) 720px&quot;&gt;&lt;/figure&gt;&lt;!--kg-card-begin: markdown--&gt;&lt;p&gt;In software development, mocks are important testing pieces used to produce isolation for a targeted code. When you need to test a piece of code, in some cases, you want to isolate that tested piece — for example, you want to test a service that uses a database, but you don&apos;t want to call the real database.&lt;/p&gt;
&lt;p&gt;There are several approaches to answering this problem, but in this article, I’ll only focus on the use of mocks. Mocks are simulated objects that mimic a behavior. The use of mocks is common and useful, but mocks have certain usage and maintainability constraints. Mocks can be simple or complex depending on the size of the tested piece and the complexity of the expected behavior.&lt;/p&gt;
&lt;h2 id=&quot;creating-mocks-manually-or-with-a-framework&quot;&gt;Creating mocks manually or with a framework&lt;/h2&gt;
&lt;p&gt;Mocks can be used to serve several needs that depend on how the piece that you are trying to replace is used inside the tested code. Maybe the object is just needed to compile, maybe the object needs to return always the same thing, or maybe the object needs to be &amp;quot;smart&amp;quot; enough to be able to return the right element based on some parameters.&lt;/p&gt;
&lt;p&gt;The first approach when you need a mock is to create it manually.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;package foo

import &amp;quot;fmt&amp;quot;

type API interface {
   Get(userID string) *User
   Save(user *User) error
}

type User struct {
   ID   	string
   username string
   Domain   string
}

type Service struct {
   api API
}

func (s Service) GetDomain(userID string) (string, error) {
   user := s.api.Get(userID)
   if user == nil {
  	return &amp;quot;&amp;quot;, fmt.Errorf(&amp;quot;user %q not found&amp;quot;, userID)
   }

   if user.Domain != &amp;quot;&amp;quot; {
  	return user.Domain, nil
   }

   user.Domain = user.username + &amp;quot;.example.com&amp;quot;

   err := s.api.Save(user)
   if err != nil {
  	return &amp;quot;&amp;quot;, err
   }

   return user.Domain, nil
}
&lt;/code&gt;&lt;/pre&gt;
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;package foo

import (
   &amp;quot;testing&amp;quot;

   &amp;quot;github.com/stretchr/testify/assert&amp;quot;
   &amp;quot;github.com/stretchr/testify/require&amp;quot;
)

type apiMock struct {
   getResponse  *User
   getCallCount int

   saveResponse  error
   saveCallCount int
}

func (m *apiMock) Get(_ string) *User {
   m.getCallCount++

   return m.getResponse
}

func (m *apiMock) Save(_ *User) error {
   m.saveCallCount++
   return m.saveResponse
}

func TestSimple(t *testing.T) {
   user := &amp;amp;User{
  	ID:   	&amp;quot;8411fd4127&amp;quot;,
  	username: &amp;quot;foo&amp;quot;,
  	Domain:   &amp;quot;&amp;quot;,
   }

   mck := &amp;amp;apiMock{
  	getResponse:  user,
  	saveResponse: nil,
   }

   service := Service{api: mck}

   data, err := service.GetDomain(&amp;quot;8411fd4127&amp;quot;)
   require.NoError(t, err)

   assert.Equal(t, &amp;quot;foo.example.com&amp;quot;, data)
   assert.Equal(t, 1, mck.getCallCount)
   assert.Equal(t, 1, mck.saveCallCount)
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The handwritten mocks can be enough in a lot of use cases, but sometimes you can have large objects or complex expected behavior. In those cases, the approach will be to use a framework that helps with that level of complexity.&lt;/p&gt;
&lt;p&gt;At Traefik Labs, we use Testify for test assertions. &lt;a href=&quot;https://github.com/stretchr/testify?ref=containous.ghost.io&quot;&gt;Testify&lt;/a&gt; is the most popular assertions library in Go, it helps to improve the test readability and reduce the size of the test plumbing, and it also contains a mock system.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;package foo

import (
   &amp;quot;testing&amp;quot;

   &amp;quot;github.com/stretchr/testify/assert&amp;quot;
   &amp;quot;github.com/stretchr/testify/mock&amp;quot;
   &amp;quot;github.com/stretchr/testify/require&amp;quot;
)

type apiMock struct{ mock.Mock }

func newAPIMock(tb testing.TB) *apiMock {
   tb.Helper()

   m := &amp;amp;apiMock{}
   m.Mock.Test(tb)

   tb.Cleanup(func() { m.AssertExpectations(tb) })

   return m
}

func (s *apiMock) Get(userID string) *User {
   ret := s.Called(userID)
   return ret.Get(0).(*User)
}

func (s *apiMock) Save(user *User) error {
   ret := s.Called(user)
   return ret.Error(0)
}

func TestTestify(t *testing.T) {
   mck := newAPIMock(t)

   service := Service{api: mck}

   user := &amp;amp;User{
  	ID:   	&amp;quot;8411fd4127&amp;quot;,
  	username: &amp;quot;foo&amp;quot;,
  	Domain:   &amp;quot;&amp;quot;,
   }
   mck.On(&amp;quot;Get&amp;quot;, &amp;quot;8411fd4127&amp;quot;).Return(user).Once()

   mck.On(&amp;quot;Save&amp;quot;, user).Return(nil).Once()

   data, err := service.GetDomain(&amp;quot;8411fd4127&amp;quot;)
   require.NoError(t, err)

   assert.Equal(t, &amp;quot;foo.example.com&amp;quot;, data)
}
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;The mock system of Testify is great, but you still have to write a lot of things by hand. It is at this moment that you realize you need a generator.&lt;/p&gt;
&lt;h2 id=&quot;the-problem-with-generic-generators&quot;&gt;The problem with generic generators&lt;/h2&gt;
&lt;p&gt;When our team started working on our latest product, &lt;a href=&quot;https://traefik.io/traefik-hub/?ref=containous.ghost.io&quot;&gt;Traefik Hub&lt;/a&gt;, we were faced with the need to use mocks for a number of tests. At first, we started with simple handwritten mocks. However, we quickly came across a few issues. The first problem that we faced with handwritten mocks was the fact that writing that kind of code is extremely repetitive and boring to maintain. After some discussion, the team decided to use a tool to generate them. There are some existing mock generators in Go, and they are great, but none provided exactly what we wanted. We expected to have fluent syntax and strongly typed mocks, and the generated mocks from these generators were weak against changes.&lt;/p&gt;
&lt;p&gt;The generated mocks used a string to call the method, and the arguments were just variadic of interfaces. When you are using strongly-typed languages like Go, you always prefer to stay in the world of strongly-typed things!&lt;/p&gt;
&lt;p&gt;The main problem with weakly-typed elements is maintainability: when you need to change the signature of a method (adding a new parameter, changing a type, etc.), the changes will not be propagated to the mocks, and the compiler will not be able to see if something is broken.&lt;/p&gt;
&lt;p&gt;At this point, the team thought that it was easier to come back to our precious handwritten mocks. However, I had a different idea. Why not create our own mock generator?&lt;/p&gt;
&lt;p&gt;And that’s how Mocktail was born!&lt;/p&gt;
&lt;h2 id=&quot;have-a-mocktail-i-say&quot;&gt;Have a Mocktail, I say!&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/traefik/mocktail?ref=containous.ghost.io&quot;&gt;Mocktail&lt;/a&gt; generates strongly typed mocks and provides a simple, fluent syntax. The methods of the mocks have the same signature as the real method signature. The number of parameters and the types of those parameters are the same as the real methods.&lt;/p&gt;
&lt;p&gt;Using Mocktail is extremely simple. Create a file called &lt;code&gt;mock_test.go&lt;/code&gt; and add directives for the mocks you need (for example, &lt;code&gt;// mocktail:MyObject&lt;/code&gt;).&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;package foo

// mocktail:Foo
// mocktail:Bar
// ...
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Then run Mocktail at the root of your project.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-console&quot;&gt;$ mocktail
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;You are now able to use your mocks easily!&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-go&quot;&gt;package foo

import (
   &amp;quot;testing&amp;quot;

   &amp;quot;github.com/stretchr/testify/assert&amp;quot;
   &amp;quot;github.com/stretchr/testify/mock&amp;quot;
   &amp;quot;github.com/stretchr/testify/require&amp;quot;
)

func TestMocktail(t *testing.T) {
   mck := newAPIMock(t)

   service := Service{api: mck}

   user := &amp;amp;User{
  	ID:   	&amp;quot;8411fd4127&amp;quot;,
  	username: &amp;quot;foo&amp;quot;,
  	Domain:   &amp;quot;&amp;quot;,
   }
   mck.OnGet(&amp;quot;8411fd4127&amp;quot;).TypedReturns(user).Once()

   mck.OnSave(user).TypedReturns(nil).Once()

   data, err := service.GetDomain(&amp;quot;8411fd4127&amp;quot;)
   require.NoError(t, err)

   assert.Equal(t, &amp;quot;foo.example.com&amp;quot;, data)
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h2 id=&quot;summing-up&quot;&gt;Summing up&lt;/h2&gt;
&lt;p&gt;The good thing about mocktails is that you can go wild with them without any severe side effects — except maybe for a bit of a sugar rush!&lt;/p&gt;
&lt;p&gt;We created Mocktail to serve the needs of our team and tackle the specific issues that we were facing in our process. But my sincere hope is that this nifty little tool will be of use to many of you and save you hours of frustration manually creating mocks.&lt;/p&gt;
&lt;p&gt;If you’re eager to try out Mocktail, you’ll find it on &lt;a href=&quot;https://github.com/traefik/mocktail?ref=containous.ghost.io&quot;&gt;GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Thanks for reading!&lt;/p&gt;
&lt;!--kg-card-end: markdown--&gt; ]]&gt;</content:encoded>
        </item>
    </channel>
</rss>