github.com/cilium/cilium@v1.16.2/Documentation/network/servicemesh/gateway-api/gamma.rst (about)

     1  .. only:: not (epub or latex or html)
     2  
     3      WARNING: You are looking at unreleased Cilium documentation.
     4      Please use the official rendered version released here:
     5      https://docs.cilium.io
     6  
     7  .. _gs_gamma:
     8  
     9  *******************
    10  GAMMA Support
    11  *******************
    12  
    13  What is GAMMA?
    14  ####################
    15  
    16  (From the `GAMMA page <https://gateway-api.sigs.k8s.io/mesh/gamma/>`__
    17  on the Gateway API site):
    18  
    19  The GAMMA initiative is a dedicated workstream within the Gateway API
    20  subproject, shepherded by the GAMMA leads, rather than being a separate
    21  subproject. GAMMA’s goal is to define how Gateway API can be used to configure
    22  a service mesh, with the intention of making minimal changes to Gateway API and
    23  always preserving the role-oriented nature of Gateway API. Additionally, GAMMA
    24  strives to advocate for consistency between implementations of Gateway API by
    25  service mesh projects, regardless of their technology stack or proxy.
    26  
    27  In Gateway API v1.0, GAMMA supports adding extra HTTP routing to Services by
    28  binding a HTTPRoute to a Service as a parent (as opposed to the north/south
    29  Gateway API usage of binding a HTTPRoute to a Gateway as a parent).
    30  
    31  This allows Cilium to intercept layer 7 traffic flowing to a parent Service and
    32  route the traffic through the per-node Envoy proxy. Because of this, GAMMA
    33  performs the same function as Cilium's
    34  :ref:`Layer 7 traffic management <gs_l7_traffic_management>`, without the user
    35  needing to know anything about configuring Envoy directly.
    36  
    37  Types of GAMMA configuration
    38  ############################
    39  
    40  In GAMMA, there are two types of HTTPRoutes: "producer" and "consumer" Routes.
    41  
    42  "Producer" routes are HTTPRoutes that bind to a Service that lives in the same
    43  namespace and have the same owner as the owner of the Service whose traffic is
    44  being managed. So, for an application ``foo``, in the namespace ``foo``, with a
    45  Service called ``foo-svc``, the owner of ``foo`` would create a HTTPRoute in the ``foo``
    46  namespace that lists ``foo-svc`` as its parent. The routing then affects all traffic
    47  coming to the ``foo`` service from the whole cluster, and is controlled by the
    48  "producer" of the ``foo`` service - its owner.
    49  
    50  "Consumer" routes are HTTPRoutes that bind to a Service that lives in a different
    51  namespace than that Service. These Routes are called "consumer" Routes because
    52  they are owned by the _consumer_ of the Service they bind to. For the ``foo`` Service
    53  above, a Route in the ``bar`` namespace, to be used by the app in that namespace,
    54  that binds to the ``foo-svc`` Service in the ``foo`` namespace is a _consumer_ Service
    55  because it changes the routing for the ``bar`` service, which _consumes_ the ``foo``
    56  Service.
    57  
    58  Cilium currently supports only "Producer" Routes, and so HTTPRoutes must be
    59  in the same namespace as the Service that they are binding to.
    60  
    61  Cilium GAMMA Support
    62  ##########################
    63  
    64  Cilium supports GAMMA v1.0.0 for the following resources:  
    65  
    66  - `HTTPRoute <https://gateway-api.sigs.k8s.io/api-types/httproute/>`_  
    67  - `ReferenceGrant <https://gateway-api.sigs.k8s.io/api-types/referencegrant/>`_  
    68  
    69  Cilium support is limited to passing the Core conformance  
    70  tests and two out of three Extended Mesh tests. Note that GAMMA is itself  
    71  experimental as at Gateway API v1.0.0.  
    72  
    73  Cilium currently does not support "consumer" HTTPRoutes, and so does not  
    74  support the ``MeshConsumerRoute`` feature of the Mesh conformance profile.  
    75  
    76  .. include:: installation.rst