API Gateway vs Kubernetes Ingress Controller: Differences, Security, and Gateway API
API Gateway vs Kubernetes Ingress Controller
Kubernetes API architecture

API Gateway vs Kubernetes Ingress Controller: Differences, Security, and Gateway API

A Kubernetes Ingress Controller gets application traffic into a cluster. An API gateway governs how API consumers use backend APIs. The functions can overlap, but Kubernetes' frozen Ingress API, the rise of Gateway API, and the 2026 retirement of Ingress-NGINX make the distinction more important to understand.

Kubernetes request pathBoundary aware
ConsumerUser / app / partner
API GatewayAPI policy & identity
IngressCluster entry & routing
ServiceBusiness authorization
RoutingHost & path
API policyConsumer aware
KubernetesGateway API
RuntimeBehavior & data

A Kubernetes Ingress Controller is the runtime component that implements Kubernetes Ingress rules and brings primarily HTTP/HTTPS traffic to cluster services. An API gateway is an API-focused reverse proxy and policy layer that commonly manages consumer authentication, throttling, quotas, transformations, routing, and API lifecycle concerns. One product can perform both roles, but the concepts are not identical.

There is also a third term that now matters: Kubernetes Gateway API. Gateway API is the successor to the Ingress API for modern Kubernetes service networking. It is a Kubernetes configuration standard, not the same thing as an API gateway product. Some API gateways and ingress technologies implement it.

2026 context: Kubernetes still supports the GA Ingress API, but it is frozen and Kubernetes recommends Gateway instead. Separately, the community Ingress-NGINX controller was retired on March 24, 2026 and no longer receives releases, bug fixes, or security updates. Do not confuse that controller's retirement with removal of the Ingress API itself.

What a Kubernetes Ingress Controller does

The Kubernetes Ingress resource describes rules that map external HTTP/HTTPS traffic to Services, usually by hostname and path. The resource does nothing by itself: an Ingress Controller watches those resources and configures a data plane such as a reverse proxy, cloud load balancer, or other traffic system.

The core Ingress API is intentionally small. Kubernetes documents it as providing external access to cluster services and potentially load balancing, TLS termination, and name-based virtual hosting. The Gateway API migration guide notes that the Ingress API's standardized features are primarily TLS termination and simple content-based HTTP routing.

Ingress controllers often provide much more than the core API through annotations, ConfigMaps, custom resources, or vendor-specific configuration. Depending on the implementation, that can include:

  • TLS certificate handling and redirects.
  • Header manipulation and URL rewrites.
  • Authentication integrations.
  • IP allow/deny rules.
  • Rate limiting.
  • WAF integration.
  • Canary or weighted routing.
  • Observability and access logs.

This implementation-specific flexibility is also why “Ingress Controller” does not describe one fixed security feature set. An NGINX, HAProxy, cloud-managed, Envoy-based, or vendor API-gateway controller can expose different capabilities while all supporting Kubernetes ingress patterns.

What an API gateway does

An API gateway also acts as a reverse proxy, but its design center is usually the API consumer boundary. Microsoft’s Azure Architecture Center describes an API gateway as routing client requests to backend services while offloading cross-cutting functions such as authentication, TLS/mTLS, IP restrictions, and client rate limiting.

Common API gateway capabilities include:

  • OAuth/OIDC/JWT validation and client authentication.
  • API keys, consumer identities, subscriptions, and usage plans.
  • Per-consumer, tenant, route, burst, and quota controls.
  • API version, stage, host, path, method, and backend routing.
  • Request and response transformation.
  • Protocol mediation or aggregation in some products.
  • Schema/request validation and policy execution in some products.
  • API analytics, developer portals, and API products in API-management platforms.
  • Centralized external API logging and policy.

Not every API gateway includes full API management. Some are lightweight traffic gateways; others are complete lifecycle platforms. The right comparison is always against the exact controller and gateway implementation you plan to operate.

API gateway vs Kubernetes Ingress Controller

Typical differences between an API gateway and Kubernetes Ingress Controller
AreaKubernetes Ingress ControllerAPI gateway
Primary goalExpose and route traffic to Kubernetes ServicesExpose, govern, and manage APIs for consumers
Primary configurationIngress / controller-specific resources; increasingly Gateway APIGateway-native API/config; some implement Kubernetes Gateway API
Standardized routingIngress: host/path HTTP(S); Gateway API offers broader structured routingUsually rich host/path/method/header/consumer routing
TLS terminationCommonCommon
OAuth/JWTController/extension dependentCommon API-facing capability
API keysController/extension dependentCommon in API-management products
Consumer quotasNot part of core Ingress APICommon
Rate limitingImplementation-specificCommon by route/client/plan/tenant
TransformationsImplementation-specific, often annotations/CRDsCommon in many products
Developer portal/API productsNot an Ingress responsibilityAvailable in API-management platforms
Kubernetes-native role separationIngress is limited; Gateway API improves itDepends on product; may integrate with Gateway API/RBAC
Business authorizationUsually remains in the application/service that owns the resource

Gateway API changes the Kubernetes side of the comparison

Kubernetes recommends Gateway instead of Ingress because the Ingress API is frozen. “Frozen” does not mean removed: Kubernetes states that Ingress remains generally available with stability guarantees and that there are no plans to remove it. It means no new features are being added.

Gateway API addresses several Ingress limitations. Its migration guide identifies three major improvements: clearer personas/ownership, a broader standardized feature set, and structured extensibility rather than heavy reliance on implementation-specific string annotations.

Key Gateway API resources

  • GatewayClass: identifies a class of gateway implementation and its controller.
  • Gateway: defines listeners and the traffic entry point controlled by an infrastructure or cluster operator.
  • HTTPRoute: defines HTTP routing rules and can be owned by application teams.
  • GRPCRoute, TCPRoute, UDPRoute and TLSRoute: protocol-specific routing resources according to release/channel support.
  • ReferenceGrant: controls permitted cross-namespace references.

As of September 2026, Gateway API v1.6 is the current major release line documented by Kubernetes; the v1.6.0 release graduated TCPRoute and UDPRoute to Standard. The Gateway API project also publishes conformance information so teams can compare which implementations actually support which profiles and features.

Gateway API is not an API gateway product

The Gateway API FAQ is explicit: Gateway API is a set of Kubernetes resources for service networking, while an API gateway is a tool that exposes application APIs through a managed interface and can centralize authentication, authorization, and request limits. Some API gateway products can be programmed through Gateway API.

That distinction prevents a common architecture mistake: migrating from Ingress to Gateway/HTTPRoute improves the Kubernetes networking model, but it does not automatically add API consumer management, subscriptions, schema policy, sensitive-data detection, or a developer portal.

Security responsibilities by layer

Ingress/Gateway layer: cluster entry and traffic safety

The Kubernetes traffic entry layer should provide a hardened public/private listener, current TLS, supported software, safe routing, namespace/RBAC boundaries, request-size and timeout controls, and controller-specific protections. Restrict who can modify routes, listeners, certificates, and privileged extensions.

If the controller allows arbitrary snippets, plugins, or annotations that affect generated proxy configuration, treat those as privileged code/configuration paths. Gateway API's structured resources reduce some annotation dependence, but implementation-specific extensions still need governance.

API gateway layer: consumer and API policy

The API gateway is well placed to validate public/partner identity, enforce per-consumer quotas and rate limits, normalize requests, and centralize declared API policy. The per-user rate limiting guide explains why identity-, tenant-, route-, and cost-aware limits are stronger than one IP-based threshold.

Application layer: definitive business authorization

Neither Ingress nor an API gateway should be the only control for resource ownership and changing business state. A backend service should still determine whether the authenticated principal can access the requested object, invoke the function, modify the field, or perform the transaction.

Runtime layer: behavior and response context

A request can pass TLS, JWT validation, route policy, and rate limits and still be abusive. Valid users can probe object identifiers, extract data gradually, call workflows in abnormal sequences, or trigger expensive operations within static thresholds.

For that layer, runtime API security complements ingress and gateway policy with request/response inspection, API discovery, behavioral context, sensitive-data visibility, and security evidence.

Common deployment patterns

Ingress/Gateway API only

Suitable when the main need is Kubernetes-native TLS and routing and the application already owns authentication, rate limits, and API lifecycle. Choose a maintained controller with the required security features.

API gateway as Kubernetes gateway

Some API gateway products can directly implement Gateway API. This can consolidate Kubernetes routing and API policy while preserving the role-oriented Gateway API configuration model.

Ingress in front of API gateway

An infrastructure ingress layer terminates or forwards cluster traffic to a separate API gateway. Useful when platform and API teams own different layers, but avoid redundant TLS, routing, retries, and policy.

External API gateway in front of cluster

A managed or edge gateway applies consumer/API policy before forwarding to a Kubernetes Gateway/Ingress layer that handles service routing. Preserve trusted identity and original request context across the boundary.

A clean responsibility flow

API consumer
    |
    | OAuth/JWT, API key, quota, consumer policy
    v
API Gateway
    |
    | trusted identity / request context
    v
Kubernetes Gateway or Ingress data plane
    |
    | host/path/service routing
    v
Application Service
    |
    +-- object + function + business authorization
    +-- response minimization

Runtime API monitoring observes supported traffic where application
requests and responses are available.

You do not need all four logical layers in every environment. The point is to assign ownership explicitly. One product can implement several boxes if it provides the required controls and the operating model remains clear.

2026: migrating from Ingress and Ingress-NGINX

The biggest current migration issue is specific to the community Ingress-NGINX project. Kubernetes announced its retirement in November 2025 and states that it was retired on March 24, 2026. Existing deployments continue to function, but there are no further project releases, bug fixes, or security updates.

If you use Ingress-NGINX, continuing to run the existing binary is therefore materially different from continuing to use the Kubernetes Ingress API with a maintained controller. Kubernetes recommends moving Ingress-NGINX users to Gateway API or another maintained Ingress controller.

Inventory before translating manifests

Migration is not a simple YAML rename. Ingress-NGINX commonly used annotations, ConfigMaps, snippets, defaults, and controller-specific behaviors that may not map one-for-one to a new implementation. Kubernetes' migration guidance specifically warns that implementation-specific features require implementation-specific conversion.

  • List all Ingress and IngressClass objects.
  • Identify the actual controller image/version and ownership.
  • Inventory every annotation and ConfigMap setting.
  • Record TLS secrets, redirects, rewrites, auth integrations, IP rules, timeouts, request limits, and canary behavior.
  • Capture externally observable behaviors before migration: status codes, redirects, headers, cookies, source IP forwarding, TLS, timeouts, and body limits.
  • Map rules to Gateway/HTTPRoute or the target controller.
  • Test shadow/canary traffic and rollback before changing DNS/load-balancer ownership.

Kubernetes released ingress2gateway 1.0 in March 2026 to assist with converting Ingress configuration to Gateway API. Treat generated output as migration assistance, not proof of equivalent runtime behavior.

Do not migrate security assumptions blindly

An old annotation may have enforced authentication, a body-size limit, a WAF hook, a rate limit, or source-IP handling. If it has no direct target equivalent, decide where that control will live instead of silently dropping it. Use regression tests for security headers, unauthorized requests, oversized payloads, routing conflicts, TLS modes, and admin paths.

The Kubernetes API runtime visibility guide is useful after cutover because it focuses on what endpoints and data are actually exposed through ingress and east-west paths.

Decision guide: what should you deploy?

Architecture decision guide
RequirementUsually choose/evaluateReason
Simple host/path routing to cluster servicesGateway API or maintained Ingress ControllerKubernetes-native service exposure is the main requirement.
New Kubernetes networking designGateway API implementationKubernetes recommends Gateway; Ingress is frozen.
OAuth/JWT + consumer quotas + API keysAPI gateway/API managementConsumer identity and usage policy are API-gateway concerns.
Developer portal/API productsAPI management platformNot part of Kubernetes Ingress or Gateway API itself.
One Kubernetes-native product for routing + API policyAPI gateway with Gateway API supportCan combine roles if implementation features and conformance meet requirements.
Existing supported Ingress deployment that meets needsKeep or plan staged migrationIngress is still GA; migration urgency depends on controller support and requirements.
Ingress-NGINX deploymentMigrateThe community project has been retired and no longer receives security updates.
Runtime abuse/sensitive data behaviorRuntime API security + gateway/ingress controlsRouting and declared policy do not explain all valid-request abuse.

Evaluation questions for an ingress/Gateway API implementation

  • Is the project/vendor actively supported and how are security fixes delivered?
  • Which Gateway API version, profiles, route types, and conformance tests are supported?
  • How are cross-namespace routes and secrets authorized?
  • Which controller-specific policies still require CRDs or annotations?
  • How are TLS, client IP, proxy protocol, HTTP/2/HTTP/3, WebSocket, and gRPC handled?
  • What request/header/body/time/concurrency limits can be enforced?
  • How is high availability designed and how are upgrades rolled back?

Evaluation questions for an API gateway

  • Which identity methods are native: OAuth/OIDC/JWT, mTLS, API keys, custom auth?
  • Can limits be keyed by user, app, tenant, route, subscription, and cost?
  • Does it support the protocols your APIs actually use?
  • Are transformations, schema validation, API versions, and lifecycle workflows required?
  • Does it expose Gateway API resources if Kubernetes-native ownership matters?
  • Can request identity and trace context be passed safely to backend services?
  • Does it preserve enough request/response context for security operations?

Common mistakes

“Ingress-NGINX” means “Ingress”

The retired community controller is confused with the still-GA Kubernetes Ingress API or with other supported controllers.

Gateway API means API management

A team adopts Gateway/HTTPRoute and assumes consumer subscriptions, API keys, quotas, and portals now exist automatically.

Annotations become invisible policy

Critical auth, timeout, rewrite, or security behavior lives in controller-specific strings nobody inventories before migration.

Two proxy layers, no ownership

Ingress and API gateway both rewrite, retry, rate-limit, and terminate TLS, producing hard-to-debug conflicts.

Gateway authorization replaces app authorization

A valid JWT passes the edge and the backend fails to check tenant/object/function access.

Migration tests only routing

Hosts and paths work, but source IP, body limits, redirects, TLS, headers, auth, or security logging change silently.

Production checklist

API gateway and Kubernetes ingress readiness
AreaPass condition
Controller supportThe selected ingress/Gateway controller is actively maintained and security update ownership is known.
API choiceNew networking evaluates Gateway API; existing Ingress usage has a documented support/migration plan.
IdentityConsumer authentication is enforced at the intended layer and identity is propagated safely.
AuthorizationBusiness/object authorization remains in the owning service even when edge policy exists.
TLSTermination/passthrough, certificates, mTLS, and backend encryption are explicit and tested.
LimitsRequest size, headers, timeouts, concurrency, rates, and expensive routes have bounded behavior.
ExtensionsAnnotations, CRDs, plugins, and snippets are inventoried, reviewed, and access controlled.
HAData plane has adequate replicas/capacity and upgrade/rollback is tested.
MigrationRouting plus TLS, auth, headers, source IP, redirects, limits, logging, and failure behavior are regression-tested.
Runtime visibilityActive endpoints, responses, sensitive data, abuse behavior, and new routes remain observable after changes.

Authoritative references

Separate Kubernetes traffic entry from API consumer governance

Ingress Controllers and API gateways overlap because both are reverse proxies at application boundaries. The useful architectural distinction is intent: Kubernetes ingress/Gateway resources describe how traffic reaches cluster services, while API gateways commonly add consumer-aware API policy and management.

For new Kubernetes networking, evaluate Gateway API rather than building new dependencies on a frozen Ingress feature model. If you run Ingress-NGINX specifically, plan migration because the project is retired. In every design, keep application authorization authoritative and make sure runtime API behavior remains visible after the traffic path changes.

Frequently asked questions

What is the main difference between an API gateway and a Kubernetes Ingress Controller?

A Kubernetes Ingress Controller implements cluster ingress routing from Kubernetes Ingress resources, primarily exposing HTTP/HTTPS services. An API gateway is an API-facing policy layer that commonly adds consumer authentication, rate limits, quotas, transformations, analytics, and API management capabilities. Specific products overlap.

Can a Kubernetes Ingress Controller replace an API gateway?

It can for simple routing, TLS termination, and any extra security features your selected controller explicitly supports. It is not automatically a replacement for API consumer management, API keys, OAuth policy, quotas, developer portals, API products, schema controls, or lifecycle workflows.

Is Kubernetes Ingress deprecated?

The Ingress API is not deprecated and Kubernetes says there are no plans to remove it, but the API is frozen and no longer receives new features. Kubernetes recommends Gateway API for new, more expressive service-networking use cases.

Was Ingress-NGINX retired?

Yes. The community Ingress-NGINX project was retired on March 24, 2026. Existing deployments can keep running, but the project no longer receives releases, bug fixes, or security updates. This retirement applies to Ingress-NGINX, not to the Kubernetes Ingress API or every other ingress controller.

Is Kubernetes Gateway API the same as an API gateway?

No. Gateway API is a Kubernetes configuration interface made of resources such as GatewayClass, Gateway, and HTTPRoute. An API gateway is a traffic-processing product or service. Some API gateways implement Gateway API, but Gateway API itself is not an API management platform.

Should new Kubernetes deployments use Ingress or Gateway API?

Kubernetes recommends Gateway instead of Ingress because Ingress is frozen. New deployments should evaluate a conformant Gateway API implementation, while existing Ingress deployments can remain valid if their controller is supported and current requirements are met.

Where should authentication and rate limiting be enforced?

Use the layer that has the necessary identity and policy context. Public API authentication, consumer quotas, and per-client rate limits usually fit an API gateway. Cluster ingress can enforce TLS and controller-supported edge policy. Business authorization still belongs in the application or service that owns the resource.

How can Ammune complement Kubernetes ingress or an API gateway?

Ingress controllers and API gateways route and enforce declared policy. Where supported API traffic is visible, Ammune can complement them with API discovery, request and response inspection, behavioral analysis, sensitive-data visibility, and runtime detection of abuse that may use valid requests and identities.

Keep API visibility intact as Kubernetes networking evolves

Whether you use Ingress, Gateway API, an API gateway, or a layered design, preserve consistent identity, policy, request/response visibility, and security evidence across the traffic path.

© Ammune.ai — Practical Kubernetes and API security architecture guidance.