Skip to content

Commit fa96274

Browse files
authored
Update split design with some clearer details (#2836)
Cleared up the approach to configuring the nginx deployments when the control plane deploys them.
1 parent dd3892a commit fa96274

File tree

1 file changed

+4
-5
lines changed
  • docs/proposals/control-data-plane-split

1 file changed

+4
-5
lines changed

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

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -51,11 +51,10 @@ Whenever a user creates a Gateway resource, the control plane will provision an
5151

5252
- Both deployments should have read only filesystems.
5353
- Both deployments should have the minimal permissions required to perform their functions.
54-
- The nginx deployment should be configurable via the helm chart.
55-
- Downside of this is that these options will apply to all nginx instances.
56-
- We could introduce a CRD, but where would it attach? We already have NginxProxy which controls dynamic data plane configuration, and this may eventually attach to the Gateway instead of just the GatewayClass. Would a Deployment configuration fit in there, and would it be dynamic? That would require us to completely redeploy nginx if a user changes those settings.
57-
- We could start with the helm chart option, and rely on user feedback to see if we need to get more granular.
58-
- This could also involve creating a ConfigMap that the control plane consumes on startup and contains all nginx Deployment/Daemonset configuration, including NGINX Plus usage configuration.
54+
- The nginx deployment should be configurable via the helm chart and NginxProxy CRD.
55+
- The NginxProxy CRD needs to be enhanced to work at the Gateway level. The nginx Deployment/Service configuration can then live in the NginxProxy CRD and either be applied globally (GatewayClass) or per Gateway. Certain fields (like a Service's `loadBalancerIP`) would have to be applied per-Gateway, so a user needs to be aware of where to attach the NginxProxy resource for these types of cases.
56+
- The helm chart should allow for both globally setting configuration, as well as per Gateway. To start, we could just have the per-Gateway section of the values file contain the Gateway name, and it's up to a user to reference the resulting NginxProxy resource when they create that Gateway resource.
57+
- A user can update the NginxProxy at runtime to change the Deployment/Service config, and we'll attempt to patch the Deployment and/or Service. If it fails, logs, events, and status are written.
5958
- Resources created for the nginx deployment (Service, Secrets, ConfigMap, etc.) should have configurable labels and annotations via the GatewayInfrastructure field in the Gateway resource. See [the GEP](https://gateway-api.sigs.k8s.io/geps/gep-1762/#automated-deployments).
6059
- Control plane creates the nginx deployment and service when a Gateway resource is created, in the same namespace as the Gateway resource. When the Gateway is deleted, the control plane deletes nginx deployment and service.
6160
- Control plane should label the nginx service and deployment with something related to the name of the Gateway so it can easily be linked. See [the GEP](https://gateway-api.sigs.k8s.io/geps/gep-1762/#automated-deployments).

0 commit comments

Comments
 (0)