|
2 | 2 |
|
3 | 3 | **SIG:** Agent
|
4 | 4 |
|
5 |
| -**Begin Design Discussion:** 2023-01-03 |
| 5 | +**Begin Design Discussion:** 2024-01-03 |
6 | 6 |
|
7 | 7 | **Cilium Release:** 1.16
|
8 | 8 |
|
|
11 | 11 | ## Summary
|
12 | 12 |
|
13 | 13 | Add a new xDS adapter in Cilium that could take advantage of some of the
|
14 |
| -strengths of xDS, particularly the feedback loop via LRS and the overall |
15 |
| -potential for scalability improvements when adjustments to routing |
16 |
| -configurations don't need to round trip through the Kubernetes API Server. |
17 |
| -This adapter would be an alternative source of endpoints and would not replace |
18 |
| -the existing default behavior of reading directly from Kubernetes APIs. |
| 14 | +strengths of xDS, particularly the feedback loop via [Load Reporting Service |
| 15 | +(LRS)](https://www.envoyproxy.io/docs/envoy/latest/intro/arch_overview/upstream/load_reporting_service) |
| 16 | +and the overall potential for scalability improvements when adjustments to |
| 17 | +routing configurations don't need to round trip through the Kubernetes API |
| 18 | +Server. This adapter would be an alternative source of endpoints and would not |
| 19 | +replace the existing default behavior of reading directly from Kubernetes APIs. |
19 | 20 |
|
20 | 21 | ## Motivation
|
21 | 22 |
|
@@ -53,15 +54,16 @@ to [cncf/xds](https://github.com/cncf/xds) repo as part of that overall vision.
|
53 | 54 | In parallel to these efforts by the xDS community, GKE is planning to introduce
|
54 | 55 | xDS as an additional data source for DPv2 configuration. This feels sufficiently
|
55 | 56 | generic and helpful that it could be something that could be contributed to
|
56 |
| -upstream Cilium. This could be particularly useful for at least two common use |
| 57 | +upstream Cilium. This could be particularly useful for at least three common use |
57 | 58 | cases:
|
58 | 59 |
|
59 | 60 | 1. Supporting Services and Endpoints from outside of the local cluster.
|
60 | 61 | 1. Supporting advanced routing techniques, such as topology aware routing.
|
| 62 | +1. Using load information obtained via bidirectional xDS to steer traffic. |
61 | 63 |
|
62 | 64 | Although it is out of scope for this specific CFP to provide complete solutions
|
63 | 65 | for either of these use cases, it will demonstrate the benefits of having an
|
64 |
| -xDS adapter when developing a solution for either of these use cases. |
| 66 | +xDS adapter when developing a solution for any of these use cases. |
65 | 67 |
|
66 | 68 | ### Use Cases
|
67 | 69 |
|
@@ -129,9 +131,10 @@ order when more than one data source is connected. When any conflicts occur,
|
129 | 131 | for example if Services from different sources have the same IP, the following
|
130 | 132 | order will be used for precedence:
|
131 | 133 |
|
132 |
| -1. Kubernetes |
133 |
| -2. KVStore |
134 |
| -3. xDS |
| 134 | +1. Local API |
| 135 | +2. Kubernetes |
| 136 | +3. KVStore |
| 137 | +4. xDS |
135 | 138 |
|
136 | 139 | If there is interest, we may make this order configurable in a future
|
137 | 140 | enhancement.
|
@@ -191,10 +194,13 @@ Instead of building on top of existing xDS APIs, we could use a custom API on
|
191 | 194 | top of xDS-TP (xDS Transport Protocol). This would follow the pattern that
|
192 | 195 | Istio's Ztunnel project used when they developed
|
193 | 196 | [WDS](https://github.com/istio/ztunnel/blob/db0a74212c42c66b611a71a9613afb501074e257/proto/workload.proto).
|
194 |
| -We could also just choose to send Cilium-specific protos over the wire. |
| 197 | +We could also just choose to send Cilium-specific protos over the wire. For |
| 198 | +example, we could use Cilium agent API JSON types encoded using the proto Struct |
| 199 | +type, such that the adapter would be responsible for unmarshalling it to the |
| 200 | +Cilium API Go types (via JSON). |
195 | 201 |
|
196 | 202 | #### Pros
|
197 |
| -* Very flexible, can specify ~anything |
| 203 | +* Very flexible and extensible, can specify or add ~anything |
198 | 204 | * Resulting API would likely be very focused on Cilium
|
199 | 205 |
|
200 | 206 | #### Cons
|
|
0 commit comments