Kubernetes Gateway API

repository·main·Indexed 11 days ago

https://github.com/kubernetes-sigs/gateway-api

A collection of resources and a specification for managing network traffic in Kubernetes, providing a more expressive and role-oriented approach than the standard Ingress resource. Includes documentation on conformance reports, implementation requirements for versions v1.0.0 and v1.1.0+, and test results for implementations such as Cilium, Istio, NGINX Gateway Fabric, Kuma, and Contour.

Tokens
207.4K
Snippets
377
Records
799
Agent score
84%

What's inside Gateway API

  1. Overview of Kubernetes Gateway API

    main
    The Kubernetes Gateway API is a specification and set of Custom Resource Definitions (CRDs) managed by SIG Network. It provides a structured way to manage network traffic in Kubernetes through various resource types. The current supported version is v1 (as of release v1.6.1).
  2. Overview of Gateway API

    main

    Gateway API is an official Kubernetes project designed for L4 and L7 routing. It serves as the next generation of Kubernetes Ingress, Load Balancing, and Service Mesh APIs. It is designed to be generic, expressive, and role-oriented, supporting both North-South (Ingress) and East-West (Mesh) traffic using a shared configuration model.

    Key design goals include:

    • Role-oriented: Resources model organizational roles to balance distributed flexibility with centralized control.
    • Portable: A universal specification supported by many implementations.
    • Expressive: Supports advanced capabilities like header-based matching and traffic weighting natively.
    • Extensible: Allows custom resources to be linked at various layers of the API.
  3. AWS Load Balancer Controller Gateway API support

    main
    The AWS Load Balancer Controller manages AWS Elastic Load Balancers for Kubernetes clusters. It provides support for the Kubernetes Gateway API to enable provisioning and management of AWS Network Load Balancers (NLBs) and Application Load Balancers (ALBs) directly from the cluster. This allows for both Layer 4 (L4) and Layer 7 (L7) routing using the extensible Gateway API as a modern alternative to traditional Ingress and Service resources.
  4. Status of GEP-735: TCP and UDP addresses matching

    main

    The proposal for matching source and destination addresses on L4 APIs (GEP-735) has been Declined.

    While an implementation existed in main prior to v0.5.0, it was removed because:

    • It operated too much like WAF/firewall functionality, which is outside the project scope.
    • There were no implementations championing the specific use case.

    If you require this functionality, the maintainers suggest starting a new GitHub discussion or submitting a new PR with your specific use case and context.

  5. Use the SEO Resilience Toolkit to manage documentation links

    main

    The SEO Resilience Toolkit is a suite of tools designed to make the Gateway API documentation resilient to refactoring, file moves, and renames. It uses a Stable ID approach where every Markdown file is assigned a unique, permanent id in its frontmatter. This allows the system to track files even if their filenames or directory structures change.

    Core components include:

    • mkdocs_utils.py: The core engine for ID generation, frontmatter parsing, and link conversion.
    • mkdocs_linking.py: A CLI wrapper for manual maintenance tasks.
    • mkdocs_main.py: An MkDocs macros plugin providing the internal_link macro.
  6. Sunbeam Proxy conformance profiles and support

    main

    Sunbeam Proxy v0.2.0 implements the Kubernetes Gateway API v1.5.1 control plane and data plane. The following conformance profiles are exercised in the reports:

    • GATEWAY-HTTP
    • GATEWAY-GRPC
    • GATEWAY-TLS

    Note on support:

    • Service mesh profiles: Not supported (skipped).
    • TCPRoute & UDPRoute: Fully supported, but no conformance tests are currently available for them.
  7. Status of GEP-1282: Describing Backend Properties

    main

    The proposal GEP-1282, which aimed to provide a structured way to describe backend capabilities (such as TLS details, Websocket support, or protocol disambiguation) within the Gateway API, has been Declined.

    Reasons for Decline

    • The scope was considered too large with too many cross-cutting concerns.
    • For specific use cases involving TLS Backend Properties, this proposal is superseded by GEP-1897.
  8. What is TLSRoute and when to use it

    main

    A TLSRoute is a specialized route type in the Gateway API that uses the Server Name Indication (SNI) attribute from a TLS handshake to determine the destination backend.

    Unlike HTTPRoute which operates at Layer 7 (HTTP), TLSRoute is designed for non-HTTP TLS traffic or scenarios where end-to-end encryption is required.

    Use cases include:

    • Non-HTTP TLS services: Routing traffic for services like Kafka or Postgres that use TLS but are not HTTP-based.
    • Direct Client-Certificate Authentication: When backends require direct client-side certificates (e.g., for OAuth).
    • Traffic Convergence: Using a single LoadBalancer/IP to host multiple TLS services on the same port by differentiating them via SNI hostnames, reducing costs and complexity compared to using multiple TCPRoute or LoadBalancer services.
  9. What is out of scope for a Gateway Enhancement Proposal (GEP)

    main

    A GEP is intended for significant API changes and design decisions. The following are considered out of scope for the GEP process:

    • Bug fixes
    • Small changes (e.g., API validation, documentation updates, or minor fixups).

    Note: Reviewers may determine that a change initially considered "small" actually requires a formal GEP.

  10. Overview of GEP-1619: Session Persistence

    main

    GEP-1619 defines the concepts, terminology, and API specifications for Session Persistence within the Gateway API. It aims to establish a common language between implementations and provide a standardized way to configure how sessions are maintained across requests.

    Key distinctions:

    • Session Persistence: The mechanism used to ensure a client's requests are routed to the same backend for the duration of a session.
    • Session Affinity: A related but distinct concept that this GEP intentionally does not define (it is reserved for a separate GEP).

    Current Status: Experimental.