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

Draft
wants to merge 30 commits into
base: main
Choose a base branch
from
Draft
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
30 commits
Select commit Hold shift + click to select a range
ad10305
CP/DP Split: Remove NGINX manager and deployment (#2936)
sjberman Dec 30, 2024
df91597
CP/DP Split: Add agent/nginx container and deployment (#2958)
sjberman Jan 2, 2025
05efaaa
CP/DP Split: track agent connections (#2970)
sjberman Jan 6, 2025
c3c4388
Support NginxProxy at the Gateway level (#3058)
kate-osborn Jan 28, 2025
c21b3af
CP/DP Split: write configuration to agent (#2999)
sjberman Jan 28, 2025
589a0d0
CP/DP Split: Fix empty plus file, blocking calls (#3078)
sjberman Jan 31, 2025
0d4af16
CP/DP split: Add leader election (#3092)
bjee19 Feb 10, 2025
e304a75
CP/DP Split: Support basic NGINX OSS provisioning (#3114)
sjberman Feb 13, 2025
c34c430
Revert "CP/DP split: Add leader election (#3092)"
salonichf5 Feb 14, 2025
af91add
Fix revert commit for leader election (#3136)
salonichf5 Feb 18, 2025
2b06bc7
CP/DP split: Support nginx debug mode when provisioning Data Plane (#…
bjee19 Feb 20, 2025
0cbbd62
CP/DP Split: provision NGINX Plus (#3148)
sjberman Feb 25, 2025
401f72b
CP/DP Split: remove unneeded provisioner mode (#3180)
sjberman Mar 4, 2025
1f43951
Update counterfeiter commands
sjberman Mar 4, 2025
35afb15
CP/DP split: update/delete user secrets (#3193)
sjberman Mar 5, 2025
4bbd22b
CP/DP Split: Update functional tests (#3207)
bjee19 Mar 23, 2025
027fffb
CP/DP split: Secure connection (#3244)
sjberman Mar 24, 2025
9145640
CP/DP Split: handle kill signal (#3260)
sjberman Mar 31, 2025
9249c3b
CP/DP Split: Openshift support (#3278)
sjberman Apr 7, 2025
a3078ed
Add support for multiple gateways (#3275)
salonichf5 Apr 22, 2025
e9cb450
CP/DP Update non-functional tests (#3305)
bjee19 Apr 22, 2025
f467ae5
Fix lint issue on rebase
sjberman Apr 23, 2025
e65a85f
Fix helm README generation
sjberman Apr 23, 2025
b819af2
CP/DP Split: Add ability to set loadBalancerClass for load balancer S…
bjee19 Apr 28, 2025
e309f4b
CP/DP Split: optimize configuration events (#3320)
sjberman Apr 28, 2025
088a101
CP/DP Split: Remove prometheus logger (#3349)
sjberman Apr 30, 2025
e0c6c8c
CP/DP Split: Support configuring NodePorts (#3343)
sjberman Apr 30, 2025
7268b22
CP/DP Split: Update documentation on accessing nginx container (#3338)
bjee19 Apr 30, 2025
5d55b02
CP/DP Split: Collect telemetry for cp dp split (#3352)
bjee19 May 1, 2025
dca6b4b
CP/DP Split: update a few more container references (#3359)
sjberman May 6, 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
4 changes: 2 additions & 2 deletions .github/ISSUE_TEMPLATE/bug_report.md
Original file line number Diff line number Diff line change
Expand Up @@ -24,8 +24,8 @@ A clear and concise description of what you expected to happen.
* Version of Kubernetes
* Kubernetes platform (e.g. Mini-kube or GCP)
* Details on how you expose the NGINX Gateway Fabric Pod (e.g. Service of type LoadBalancer or port-forward)
* Logs of NGINX container: `kubectl -n nginx-gateway logs -l app=nginx-gateway -c nginx`
* NGINX Configuration: `kubectl -n nginx-gateway exec <gateway-pod> -c nginx -- nginx -T`
* Logs of NGINX container: `kubectl -n <nginx-deployment-namespace> logs deployments/<nginx-deployment>`
* NGINX Configuration: `kubectl -n <nginx-deployment-namespace> exec -it deployments/<nginx-deployment> -- nginx -T`

**Additional context**
Add any other context about the problem here. Any log files you want to share.
8 changes: 0 additions & 8 deletions .github/workflows/conformance.yml
Original file line number Diff line number Diff line change
Expand Up @@ -76,13 +76,6 @@ jobs:
type=ref,event=pr
type=ref,event=branch,suffix=-rc,enable=${{ startsWith(github.ref, 'refs/heads/release') }}

- name: Generate static deployment
run: |
ngf_prefix=ghcr.io/nginx/nginx-gateway-fabric
ngf_tag=${{ steps.ngf-meta.outputs.version }}
make generate-static-deployment PLUS_ENABLED=${{ inputs.image == 'plus' && 'true' || 'false' }} PREFIX=${ngf_prefix} TAG=${ngf_tag}
working-directory: ./tests

- name: Build binary
uses: goreleaser/goreleaser-action@9c156ee8a17a598857849441385a2041ef570552 # v6.3.0
with:
Expand Down Expand Up @@ -151,7 +144,6 @@ jobs:
ngf_tag=${{ steps.ngf-meta.outputs.version }}
if [ ${{ github.event_name }} == "schedule" ]; then export GW_API_VERSION=main; fi
make helm-install-local${{ inputs.image == 'plus' && '-with-plus' || ''}} PREFIX=${ngf_prefix} TAG=${ngf_tag}
make deploy-updated-provisioner PREFIX=${ngf_prefix} TAG=${ngf_tag}
working-directory: ./tests

- name: Run conformance tests
Expand Down
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' || '' }}"
7 changes: 7 additions & 0 deletions .github/workflows/nfr.yml
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,13 @@ jobs:
workload_identity_provider: ${{ secrets.GCP_WORKLOAD_IDENTITY }}
service_account: ${{ secrets.GCP_SERVICE_ACCOUNT }}

- name: Login to GAR
uses: docker/login-action@74a5d142397b4f367a81961eba4e8cd7edddf772 # v3.4.0
with:
registry: us-docker.pkg.dev
username: oauth2accesstoken
password: ${{ steps.auth.outputs.access_token }}

- name: Set up Cloud SDK
uses: google-github-actions/setup-gcloud@77e7a554d41e2ee56fc945c52dfd3f33d12def9a # v2.1.4
with:
Expand Down
7 changes: 4 additions & 3 deletions .yamllint.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -2,8 +2,7 @@
ignore:
- charts/nginx-gateway-fabric/templates
- config/crd/bases/
- deploy/crds.yaml
- deploy/*nginx-plus
- deploy
- site/static

rules:
Expand All @@ -15,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
282 changes: 0 additions & 282 deletions apis/v1alpha1/nginxproxy_types.go

This file was deleted.

2 changes: 0 additions & 2 deletions apis/v1alpha1/register.go
Original file line number Diff line number Diff line change
Expand Up @@ -34,8 +34,6 @@ func addKnownTypes(scheme *runtime.Scheme) error {
scheme.AddKnownTypes(SchemeGroupVersion,
&NginxGateway{},
&NginxGatewayList{},
&NginxProxy{},
&NginxProxyList{},
&ObservabilityPolicy{},
&ObservabilityPolicyList{},
&ClientSettingsPolicy{},
Expand Down
Loading