Skip to content

Separate control plane and data plane; support multiple Gateways #3318

New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Merged
merged 32 commits into from
May 15, 2025
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
Show all changes
32 commits
Select commit Hold shift + click to select a range
8362868
CP/DP Split: Remove NGINX manager and deployment (#2936)
sjberman Dec 30, 2024
814c550
CP/DP Split: Add agent/nginx container and deployment (#2958)
sjberman Jan 2, 2025
b6a6dd6
CP/DP Split: track agent connections (#2970)
sjberman Jan 6, 2025
2a45ba3
Support NginxProxy at the Gateway level (#3058)
kate-osborn Jan 28, 2025
f94dbe0
CP/DP Split: write configuration to agent (#2999)
sjberman Jan 28, 2025
94b295f
CP/DP Split: Fix empty plus file, blocking calls (#3078)
sjberman Jan 31, 2025
3164943
CP/DP split: Add leader election (#3092)
bjee19 Feb 10, 2025
0ac4d53
CP/DP Split: Support basic NGINX OSS provisioning (#3114)
sjberman Feb 13, 2025
1e7f4d9
Revert "CP/DP split: Add leader election (#3092)"
salonichf5 Feb 14, 2025
0bdd7a6
Fix revert commit for leader election (#3136)
salonichf5 Feb 18, 2025
38cd73a
CP/DP split: Support nginx debug mode when provisioning Data Plane (#…
bjee19 Feb 20, 2025
a3caad7
CP/DP Split: provision NGINX Plus (#3148)
sjberman Feb 25, 2025
49353cb
CP/DP Split: remove unneeded provisioner mode (#3180)
sjberman Mar 4, 2025
64955f1
Update counterfeiter commands
sjberman Mar 4, 2025
cab059e
CP/DP split: update/delete user secrets (#3193)
sjberman Mar 5, 2025
01bb416
CP/DP Split: Update functional tests (#3207)
bjee19 Mar 23, 2025
8e83ddd
CP/DP split: Secure connection (#3244)
sjberman Mar 24, 2025
bf3faa9
CP/DP Split: handle kill signal (#3260)
sjberman Mar 31, 2025
0592d90
CP/DP Split: Openshift support (#3278)
sjberman Apr 7, 2025
d3b5319
Add support for multiple gateways (#3275)
salonichf5 Apr 22, 2025
1598552
CP/DP Update non-functional tests (#3305)
bjee19 Apr 22, 2025
7766279
Fix lint issue on rebase
sjberman Apr 23, 2025
79b55b8
Fix helm README generation
sjberman Apr 23, 2025
c4da0bb
CP/DP Split: Add ability to set loadBalancerClass for load balancer S…
bjee19 Apr 28, 2025
eb0ede6
CP/DP Split: optimize configuration events (#3320)
sjberman Apr 28, 2025
9f6cab3
CP/DP Split: Remove prometheus logger (#3349)
sjberman Apr 30, 2025
87f44ff
CP/DP Split: Support configuring NodePorts (#3343)
sjberman Apr 30, 2025
700af68
CP/DP Split: Update documentation on accessing nginx container (#3338)
bjee19 Apr 30, 2025
ba08495
CP/DP Split: Collect telemetry for cp dp split (#3352)
bjee19 May 1, 2025
b422854
CP/DP Split: update a few more container references (#3359)
sjberman May 6, 2025
34094d5
CP/DP Split: fix label updates (#3370)
sjberman May 14, 2025
a66267b
Remove unused service annotations (#3362)
bjee19 May 14, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Prev Previous commit
Next Next commit
CP/DP Split: Support basic NGINX OSS provisioning (#3114)
This commit updates the control plane to deploy an NGINX data plane when a valid Gateway resource is created. When the Gateway is deleted or becomes invalid, the data plane is removed. The NginxProxy resource has been updated with numerous configuration options related to the k8s deployment and service configs, which the control plane will apply to the NGINX resources when set. The control plane fully owns the NGINX deployment resources, so users who want to change any configuration must do so using the NginxProxy resource.

This does not yet support NGINX Plus or NGINX debug mode. Those will be added in followup pull requests. This also adds some basic daemonset fields, but does not yet support deploying a daemosnet. That will also be added soon.
  • Loading branch information
sjberman committed May 14, 2025
commit 0ac4d53ec1eb34972a49a50840e93a4ac41afef8
2 changes: 1 addition & 1 deletion .github/workflows/helm.yml
Original file line number Diff line number Diff line change
Expand Up @@ -176,4 +176,4 @@ jobs:
--set=nginx.plus=${{ inputs.image == 'plus' }} \
--set=nginx.image.tag=nightly \
--set=nginxGateway.productTelemetry.enable=false \
${{ inputs.image == 'plus' && '--set=serviceAccount.imagePullSecret=nginx-plus-registry-secret --set=nginx.image.repository=private-registry.nginx.com/nginx-gateway-fabric/nginx-plus' || '' }}"
${{ inputs.image == 'plus' && '--set=nginx.imagePullSecret=nginx-plus-registry-secret --set=nginx.image.repository=private-registry.nginx.com/nginx-gateway-fabric/nginx-plus' || '' }}"
4 changes: 3 additions & 1 deletion .yamllint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -14,7 +14,9 @@ rules:
require-starting-space: true
ignore-shebangs: true
min-spaces-from-content: 1
comments-indentation: enable
comments-indentation:
ignore: |
charts/nginx-gateway-fabric/values.yaml
document-end: disable
document-start: disable
empty-lines: enable
Expand Down
4 changes: 2 additions & 2 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -226,13 +226,13 @@ install-ngf-local-build-with-plus: check-for-plus-usage-endpoint build-images-wi

.PHONY: helm-install-local
helm-install-local: install-gateway-crds ## Helm install NGF on configured kind cluster with local images. To build, load, and install with helm run make install-ngf-local-build.
helm install nginx-gateway $(CHART_DIR) --set nginx.image.repository=$(NGINX_PREFIX) --create-namespace --wait --set nginxGateway.image.pullPolicy=Never --set service.type=NodePort --set nginxGateway.image.repository=$(PREFIX) --set nginxGateway.image.tag=$(TAG) --set nginx.image.tag=$(TAG) --set nginx.image.pullPolicy=Never --set nginxGateway.gwAPIExperimentalFeatures.enable=$(ENABLE_EXPERIMENTAL) -n nginx-gateway $(HELM_PARAMETERS)
helm install nginx-gateway $(CHART_DIR) --set nginx.image.repository=$(NGINX_PREFIX) --create-namespace --wait --set nginxGateway.image.pullPolicy=Never --set nginx.service.type=NodePort --set nginxGateway.image.repository=$(PREFIX) --set nginxGateway.image.tag=$(TAG) --set nginx.image.tag=$(TAG) --set nginx.image.pullPolicy=Never --set nginxGateway.gwAPIExperimentalFeatures.enable=$(ENABLE_EXPERIMENTAL) -n nginx-gateway $(HELM_PARAMETERS)

.PHONY: helm-install-local-with-plus
helm-install-local-with-plus: check-for-plus-usage-endpoint install-gateway-crds ## Helm install NGF with NGINX Plus on configured kind cluster with local images. To build, load, and install with helm run make install-ngf-local-build-with-plus.
kubectl create namespace nginx-gateway || true
kubectl -n nginx-gateway create secret generic nplus-license --from-file $(PLUS_LICENSE_FILE) || true
helm install nginx-gateway $(CHART_DIR) --set nginx.image.repository=$(NGINX_PLUS_PREFIX) --wait --set nginxGateway.image.pullPolicy=Never --set service.type=NodePort --set nginxGateway.image.repository=$(PREFIX) --set nginxGateway.image.tag=$(TAG) --set nginx.image.tag=$(TAG) --set nginx.image.pullPolicy=Never --set nginxGateway.gwAPIExperimentalFeatures.enable=$(ENABLE_EXPERIMENTAL) -n nginx-gateway --set nginx.plus=true --set nginx.usage.endpoint=$(PLUS_USAGE_ENDPOINT) $(HELM_PARAMETERS)
helm install nginx-gateway $(CHART_DIR) --set nginx.image.repository=$(NGINX_PLUS_PREFIX) --wait --set nginxGateway.image.pullPolicy=Never --set nginx.service.type=NodePort --set nginxGateway.image.repository=$(PREFIX) --set nginxGateway.image.tag=$(TAG) --set nginx.image.tag=$(TAG) --set nginx.image.pullPolicy=Never --set nginxGateway.gwAPIExperimentalFeatures.enable=$(ENABLE_EXPERIMENTAL) -n nginx-gateway --set nginx.plus=true --set nginx.usage.endpoint=$(PLUS_USAGE_ENDPOINT) $(HELM_PARAMETERS)

.PHONY: check-for-plus-usage-endpoint
check-for-plus-usage-endpoint: ## Checks that the PLUS_USAGE_ENDPOINT is set in the environment. This env var is required when deploying or testing with N+.
Expand Down
Loading