Skip to content

Commit 245f57f

Browse files
committed
Update non-leader connection method
1 parent 4c72e5d commit 245f57f

File tree

1 file changed

+3
-2
lines changed
  • docs/proposals/control-data-plane-split

1 file changed

+3
-2
lines changed

docs/proposals/control-data-plane-split/README.md

+3-2
Original file line numberDiff line numberDiff line change
@@ -89,8 +89,9 @@ not an issue. The gRPC runtime will handle the connection establishment and mana
8989
- Each Gateway graph that the control plane builds internally should be directly tied to an nginx deployment.
9090
- Whenever the control plane sees an nginx instance become Ready, we send its config to it (it doesn't matter if this is a new pod or a restarted pod).
9191
- If no nginx instances exist, control plane should not send any configuration.
92-
- The control plane should check if a connection exists first before sending the config (all replicas, even non-leaders, should be able to send the config because the agent may connect to a non-leader).
93-
- Different pods within an nginx deployment may connect to a different NGF control plane if the NGF control plane has also been scaled. So each NGF control plane may have a different list of connected agents that they would be sending to. However, each NGF pod should have the exact same internal graph of nginx configuration.
92+
- The control plane should check if a connection exists first before sending the config.
93+
- If the control plane is scaled, then we should mark non-leaders as Unready (return non-200 readiness probe). This will prevent nginx agents from connecting to the non-leaders (k8s removes the Unready Pods from the Endpoint pool), and therefore only the leader will send config and write statuses.
94+
- We will need to ensure that the leader Pod can handle many nginx connections.
9495

9596
<img src="graph-conns.png" alt="Scaled connections" width=500 style="display: block; margin: 0 auto">
9697

0 commit comments

Comments
 (0)