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