|
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 |
|
@@ -129,9 +130,10 @@ order when more than one data source is connected. When any conflicts occur,
|
129 | 130 | for example if Services from different sources have the same IP, the following
|
130 | 131 | order will be used for precedence:
|
131 | 132 |
|
132 |
| -1. Kubernetes |
133 |
| -2. KVStore |
134 |
| -3. xDS |
| 133 | +1. Local API |
| 134 | +2. Kubernetes |
| 135 | +3. KVStore |
| 136 | +4. xDS |
135 | 137 |
|
136 | 138 | If there is interest, we may make this order configurable in a future
|
137 | 139 | enhancement.
|
@@ -191,10 +193,13 @@ Instead of building on top of existing xDS APIs, we could use a custom API on
|
191 | 193 | top of xDS-TP (xDS Transport Protocol). This would follow the pattern that
|
192 | 194 | Istio's Ztunnel project used when they developed
|
193 | 195 | [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. |
| 196 | +We could also just choose to send Cilium-specific protos over the wire. For |
| 197 | +example, we could use Cilium agent API JSON types encoded using the proto Struct |
| 198 | +type, such that the adapter would be responsible for unmarshalling it to the |
| 199 | +Cilium API Go types (via JSON). |
195 | 200 |
|
196 | 201 | #### Pros
|
197 |
| -* Very flexible, can specify ~anything |
| 202 | +* Very flexible and extensible, can specify or add ~anything |
198 | 203 | * Resulting API would likely be very focused on Cilium
|
199 | 204 |
|
200 | 205 | #### Cons
|
|
0 commit comments