From f72ef9139572ef8787649e2a2bbb5e923d554f97 Mon Sep 17 00:00:00 2001 From: Saylor Berman Date: Mon, 18 Sep 2023 12:15:46 -0600 Subject: [PATCH] Rename NGINX Kubernetes Gateway Renaming NGINX Kubernetes Gateway to NGINX Gateway Fabric. NKG is renamed to NGF --- .github/ISSUE_TEMPLATE/bug_report.md | 4 +- .github/ISSUE_TEMPLATE/enhancement.md | 4 +- .github/PULL_REQUEST_TEMPLATE.md | 2 +- .github/workflows/ci.yml | 48 +++--- .github/workflows/conformance.yml | 30 ++-- .github/workflows/mend.yml | 4 +- .github/workflows/update-docker-images.yml | 26 +-- .golangci.yml | 2 +- .goreleaser.yml | 2 +- CHANGELOG.md | 161 ++++++++++-------- CONTRIBUTING.md | 14 +- Makefile | 18 +- README.md | 64 +++---- SECURITY.md | 2 +- apis/doc.go | 2 +- apis/v1alpha1/nginxgateway_types.go | 2 +- build/Dockerfile | 8 +- cmd/gateway/commands.go | 18 +- conformance/Makefile | 48 +++--- conformance/README.md | 54 +++--- conformance/provisioner/README.md | 14 +- conformance/provisioner/provisioner.yaml | 2 +- .../provisioner/static-deployment.yaml | 6 +- conformance/tests/Dockerfile | 8 +- conformance/tests/conformance_test.go | 6 +- deploy/helm-chart/Chart.yaml | 10 +- deploy/helm-chart/README.md | 50 +++--- .../crds/gateway.nginx.org_nginxgateways.yaml | 2 +- deploy/helm-chart/values.yaml | 26 +-- .../crds/gateway.nginx.org_nginxgateways.yaml | 2 +- deploy/manifests/nginx-gateway.yaml | 16 +- .../service/loadbalancer-aws-nlb.yaml | 2 +- deploy/manifests/service/loadbalancer.yaml | 2 +- deploy/manifests/service/nodeport.yaml | 2 +- .../control-data-plane-separation/design.md | 32 ++-- design/resource-validation.md | 104 +++++------ docs/README.md | 26 +-- docs/architecture.md | 64 +++---- docs/building-the-images.md | 26 +-- docs/cli-help.md | 6 +- docs/control-plane-configuration.md | 8 +- docs/developer/branching-and-workflow.md | 18 +- docs/developer/design-principles.md | 12 +- docs/developer/go-style-guide.md | 2 +- docs/developer/implementing-a-feature.md | 12 +- docs/developer/logging-guidelines.md | 20 +-- docs/developer/quickstart.md | 22 +-- docs/developer/release-process.md | 20 +-- docs/gateway-api-compatibility.md | 24 +-- docs/guides/README.md | 10 +- docs/guides/advanced-routing.md | 18 +- docs/guides/integrating-cert-manager.md | 12 +- docs/guides/routing-traffic-to-your-app.md | 32 ++-- docs/guides/upgrade-apps-without-downtime.md | 28 +-- docs/images/cert-manager-gateway-workflow.png | Bin 151523 -> 209514 bytes docs/images/ngf-high-level.png | Bin 0 -> 138656 bytes docs/images/ngf-pod.png | Bin 0 -> 131533 bytes docs/images/nkg-high-level.png | Bin 138889 -> 0 bytes docs/images/nkg-pod.png | Bin 131746 -> 0 bytes docs/images/src/advanced-routing.mermaid | 18 +- .../images/src/route-all-traffic-flow.mermaid | 12 +- docs/installation.md | 52 +++--- docs/monitoring.md | 34 ++-- docs/proposals/README.md | 8 +- docs/proposals/control-plane-config.md | 30 ++-- docs/resource-validation.md | 30 ++-- docs/running-on-kind.md | 10 +- examples/cafe-example/README.md | 12 +- examples/cross-namespace-routing/README.md | 8 +- examples/http-header-filter/README.md | 10 +- examples/https-termination/README.md | 8 +- examples/traffic-splitting/README.md | 10 +- go.mod | 2 +- .../controller/controllerfakes/fake_getter.go | 2 +- .../framework/controller/filter/filter.go | 2 +- internal/framework/controller/reconciler.go | 2 +- .../framework/controller/reconciler_test.go | 6 +- internal/framework/controller/register.go | 2 +- .../framework/controller/register_test.go | 8 +- .../events/eventsfakes/fake_event_handler.go | 2 +- .../fake_first_event_batch_preparer.go | 2 +- .../events/eventsfakes/fake_reader.go | 2 +- .../events/first_eventbatch_preparer_test.go | 4 +- internal/framework/events/loop.go | 2 +- internal/framework/events/loop_test.go | 4 +- internal/framework/status/conditions.go | 2 +- internal/framework/status/conditions_test.go | 4 +- internal/framework/status/gateway.go | 2 +- internal/framework/status/gateway_test.go | 2 +- .../framework/status/gatewayclass_test.go | 2 +- internal/framework/status/httproute_test.go | 2 +- internal/framework/status/statuses.go | 6 +- .../status/statusfakes/fake_clock.go | 2 +- .../status/statusfakes/fake_updater.go | 2 +- internal/framework/status/updater.go | 12 +- internal/framework/status/updater_test.go | 32 ++-- internal/mode/provisioner/doc.go | 4 +- internal/mode/provisioner/handler.go | 8 +- internal/mode/provisioner/handler_test.go | 12 +- internal/mode/provisioner/manager.go | 16 +- internal/mode/provisioner/store.go | 2 +- internal/mode/static/build_statuses.go | 8 +- internal/mode/static/build_statuses_test.go | 10 +- internal/mode/static/config_updater.go | 20 +-- internal/mode/static/doc.go | 2 +- internal/mode/static/handler.go | 28 +-- internal/mode/static/handler_test.go | 42 ++--- internal/mode/static/manager.go | 48 +++--- internal/mode/static/manager_test.go | 2 +- internal/mode/static/metrics/metrics.go | 2 +- .../config/configfakes/fake_generator.go | 6 +- .../mode/static/nginx/config/execute_test.go | 2 +- .../mode/static/nginx/config/generator.go | 4 +- .../static/nginx/config/generator_test.go | 6 +- internal/mode/static/nginx/config/maps.go | 4 +- .../mode/static/nginx/config/maps_test.go | 4 +- internal/mode/static/nginx/config/servers.go | 8 +- .../mode/static/nginx/config/servers_test.go | 6 +- .../mode/static/nginx/config/split_clients.go | 4 +- .../static/nginx/config/split_clients_test.go | 4 +- .../mode/static/nginx/config/upstreams.go | 4 +- .../static/nginx/config/upstreams_template.go | 2 +- .../static/nginx/config/upstreams_test.go | 6 +- .../static/nginx/config/validation/doc.go | 2 +- .../nginx/config/validation/http_njs_match.go | 4 +- .../nginx/config/validation/http_validator.go | 2 +- .../static/nginx/config/variable_names.go | 2 +- .../fake_clear_folders_osfile_manager.go | 2 +- .../nginx/file/filefakes/fake_manager.go | 2 +- .../file/filefakes/fake_osfile_manager.go | 2 +- .../mode/static/nginx/file/folders_test.go | 4 +- .../mode/static/nginx/file/manager_test.go | 4 +- internal/mode/static/nginx/modules/README.md | 2 +- .../runtime/runtimefakes/fake_manager.go | 2 +- .../mode/static/state/change_processor.go | 13 +- .../static/state/change_processor_test.go | 20 +-- .../static/state/conditions/conditions.go | 12 +- .../state/conditions/conditions_test.go | 2 +- .../static/state/dataplane/configuration.go | 4 +- .../state/dataplane/configuration_test.go | 8 +- .../static/state/dataplane/convert_test.go | 2 +- internal/mode/static/state/dataplane/sort.go | 4 +- .../mode/static/state/dataplane/sort_test.go | 2 +- internal/mode/static/state/dataplane/types.go | 2 +- .../mode/static/state/graph/backend_refs.go | 4 +- .../static/state/graph/backend_refs_test.go | 6 +- internal/mode/static/state/graph/gateway.go | 14 +- .../static/state/graph/gateway_listener.go | 6 +- .../state/graph/gateway_listener_test.go | 6 +- .../mode/static/state/graph/gateway_test.go | 4 +- .../mode/static/state/graph/gatewayclass.go | 6 +- .../static/state/graph/gatewayclass_test.go | 6 +- internal/mode/static/state/graph/graph.go | 14 +- .../mode/static/state/graph/graph_test.go | 6 +- internal/mode/static/state/graph/httproute.go | 16 +- .../mode/static/state/graph/httproute_test.go | 14 +- .../state/graph/reference_grant_test.go | 2 +- .../mode/static/state/graph/validation.go | 2 +- .../static/state/relationship/capturer.go | 4 +- .../state/relationship/capturer_test.go | 6 +- .../relationshipfakes/fake_capturer.go | 2 +- .../state/relationship/relationships_test.go | 2 +- .../mode/static/state/resolver/resolver.go | 2 +- .../static/state/resolver/resolver_test.go | 2 +- .../resolverfakes/fake_service_resolver.go | 2 +- .../state/resolver/service_resolver_test.go | 6 +- .../state/statefakes/fake_change_processor.go | 4 +- internal/mode/static/state/store.go | 6 +- .../fake_httpfields_validator.go | 2 +- .../mode/static/state/validation/validator.go | 2 +- 170 files changed, 1013 insertions(+), 1001 deletions(-) create mode 100644 docs/images/ngf-high-level.png create mode 100644 docs/images/ngf-pod.png delete mode 100644 docs/images/nkg-high-level.png delete mode 100644 docs/images/nkg-pod.png diff --git a/.github/ISSUE_TEMPLATE/bug_report.md b/.github/ISSUE_TEMPLATE/bug_report.md index 44349beb12..551b7f5d79 100644 --- a/.github/ISSUE_TEMPLATE/bug_report.md +++ b/.github/ISSUE_TEMPLATE/bug_report.md @@ -20,10 +20,10 @@ Steps to reproduce the behavior: A clear and concise description of what you expected to happen. **Your environment** -* Version of the NGINX Kubernetes Gateway - release version or a specific commit. The first line of the nginx-gateway container logs includes the commit info. +* Version of the NGINX Gateway Fabric - release version or a specific commit. The first line of the nginx-gateway container logs includes the commit info. * Version of Kubernetes * Kubernetes platform (e.g. Mini-kube or GCP) -* Details on how you expose the NGINX Gateway Pod (e.g. Service of type LoadBalancer or port-forward) +* 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 -c nginx -- nginx -T` diff --git a/.github/ISSUE_TEMPLATE/enhancement.md b/.github/ISSUE_TEMPLATE/enhancement.md index e0fa12e99f..7139ce53bd 100644 --- a/.github/ISSUE_TEMPLATE/enhancement.md +++ b/.github/ISSUE_TEMPLATE/enhancement.md @@ -6,7 +6,7 @@ labels: 'enhancement' **Is your enhancement request related to a problem? Please describe.** @@ -23,5 +23,5 @@ Add any other context or screenshots about the enhancement request here. diff --git a/.github/PULL_REQUEST_TEMPLATE.md b/.github/PULL_REQUEST_TEMPLATE.md index bac3b514d6..e1fd9e0dee 100644 --- a/.github/PULL_REQUEST_TEMPLATE.md +++ b/.github/PULL_REQUEST_TEMPLATE.md @@ -19,7 +19,7 @@ Closes #ISSUE Before creating a PR, run through this checklist and mark each as complete. -- [ ] I have read the [CONTRIBUTING](https://github.com/nginxinc/nginx-kubernetes-gateway/blob/main/CONTRIBUTING.md) doc +- [ ] I have read the [CONTRIBUTING](https://github.com/nginxinc/nginx-gateway-fabric/blob/main/CONTRIBUTING.md) doc - [ ] I have added tests that prove my fix is effective or that my feature works - [ ] I have checked that all unit tests pass after adding my changes - [ ] I have updated necessary documentation diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index f7035a0be6..c7e58f8458 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -121,7 +121,7 @@ jobs: collapse-after: 20 notes-header: | *Below is the auto-generated changelog, which includes all PRs that went into the release. - For a shorter version that highlights only important changes, see [CHANGELOG.md](https://github.com/nginxinc/nginx-kubernetes-gateway/blob/{{version}}/CHANGELOG.md).* + For a shorter version that highlights only important changes, see [CHANGELOG.md](https://github.com/nginxinc/nginx-gateway-fabric/blob/{{version}}/CHANGELOG.md).* if: ${{ github.event_name == 'push' && github.ref != 'refs/heads/main' }} - name: Download Syft @@ -149,7 +149,7 @@ jobs: uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2 with: path: ${{ github.workspace }}/dist - key: nginx-kubernetes-gateway-${{ github.run_id }}-${{ github.run_number }} + key: nginx-gateway-fabric-${{ github.run_id }}-${{ github.run_number }} helm-tests: name: Helm Tests @@ -163,17 +163,17 @@ jobs: uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2 with: path: ${{ github.workspace }}/dist - key: nginx-kubernetes-gateway-${{ github.run_id }}-${{ github.run_number }} + key: nginx-gateway-fabric-${{ github.run_id }}-${{ github.run_number }} - name: Docker Buildx uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0 - - name: NKG Docker meta - id: nkg-meta + - name: NGF Docker meta + id: ngf-meta uses: docker/metadata-action@96383f45573cb7f253c731d3b3ab81c87ef81934 # v5.0.0 with: images: | - name=ghcr.io/nginxinc/nginx-kubernetes-gateway + name=ghcr.io/nginxinc/nginx-gateway-fabric tags: | type=semver,pattern={{version}} type=edge @@ -185,23 +185,23 @@ jobs: uses: docker/metadata-action@96383f45573cb7f253c731d3b3ab81c87ef81934 # v5.0.0 with: images: | - name=ghcr.io/nginxinc/nginx-kubernetes-gateway/nginx + name=ghcr.io/nginxinc/nginx-gateway-fabric/nginx tags: | type=semver,pattern={{version}} type=edge type=ref,event=pr type=ref,event=branch,suffix=-rc,enable=${{ startsWith(github.ref, 'refs/heads/release') }} - - name: Build NKG Docker Image + - name: Build NGF Docker Image uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 # v5.0.0 with: file: build/Dockerfile - tags: ${{ steps.nkg-meta.outputs.tags }} + tags: ${{ steps.ngf-meta.outputs.tags }} context: "." target: goreleaser load: true - cache-from: type=gha,scope=nkg - cache-to: type=gha,scope=nkg,mode=max + cache-from: type=gha,scope=ngf + cache-to: type=gha,scope=ngf,mode=max pull: true - name: Build NGINX Docker Image @@ -224,19 +224,19 @@ jobs: kube_config=${{ github.workspace }}/deploy/helm-chart/kube-${{ github.run_id }}-helm make create-kind-cluster KIND_KUBE_CONFIG=${kube_config} echo "KUBECONFIG=${kube_config}" >> "$GITHUB_ENV" - kind load docker-image ${{ steps.nkg-meta.outputs.tags }} ${{ steps.nginx-meta.outputs.tags }} + kind load docker-image ${{ steps.ngf-meta.outputs.tags }} ${{ steps.nginx-meta.outputs.tags }} kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v0.8.0/standard-install.yaml kubectl wait --for=condition=complete job/gateway-api-admission-patch job/gateway-api-admission -n gateway-system - name: Install Chart run: > helm install - helm-$(echo ${{ steps.nkg-meta.outputs.tags }} | tr '.' '-' | cut -d ":" -f 2) + helm-$(echo ${{ steps.ngf-meta.outputs.tags }} | tr '.' '-' | cut -d ":" -f 2) . --wait --create-namespace - --set nginxGateway.image.repository=$(echo ${{ steps.nkg-meta.outputs.tags }} | cut -d ":" -f 1) - --set nginxGateway.image.tag=$(echo ${{ steps.nkg-meta.outputs.tags }} | cut -d ":" -f 2) + --set nginxGateway.image.repository=$(echo ${{ steps.ngf-meta.outputs.tags }} | cut -d ":" -f 1) + --set nginxGateway.image.tag=$(echo ${{ steps.ngf-meta.outputs.tags }} | cut -d ":" -f 2) --set nginxGateway.image.pullPolicy=Never --set nginx.image.repository=$(echo ${{ steps.nginx-meta.outputs.tags }} | cut -d ":" -f 1) --set nginx.image.tag=$(echo ${{ steps.nginx-meta.outputs.tags }} | cut -d ":" -f 2) @@ -252,7 +252,7 @@ jobs: strategy: fail-fast: false matrix: - container: [nkg, nginx] + container: [ngf, nginx] permissions: contents: read # for docker/build-push-action to read repo content security-events: write # for github/codeql-action/upload-sarif to upload SARIF results @@ -265,7 +265,7 @@ jobs: uses: actions/cache@704facf57e6136b1bc63b828d79edcd491f0ee84 # v3.3.2 with: path: ${{ github.workspace }}/dist - key: nginx-kubernetes-gateway-${{ github.run_id }}-${{ github.run_number }} + key: nginx-gateway-fabric-${{ github.run_id }}-${{ github.run_number }} - name: Docker Buildx uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0 @@ -288,7 +288,7 @@ jobs: uses: docker/metadata-action@96383f45573cb7f253c731d3b3ab81c87ef81934 # v5.0.0 with: images: | - name=ghcr.io/nginxinc/nginx-kubernetes-gateway${{ matrix.container == 'nginx' && '/nginx' || '' }} + name=ghcr.io/nginxinc/nginx-gateway-fabric${{ matrix.container == 'nginx' && '/nginx' || '' }} tags: | type=semver,pattern={{version}} type=edge @@ -300,7 +300,7 @@ jobs: with: file: ${{ matrix.container == 'nginx' && 'build/Dockerfile.nginx' || 'build/Dockerfile' }} context: "." - target: ${{ matrix.container == 'nkg' && 'goreleaser' || '' }} + target: ${{ matrix.container == 'ngf' && 'goreleaser' || '' }} tags: ${{ steps.meta.outputs.tags }} labels: ${{ steps.meta.outputs.labels }} load: ${{ github.event_name == 'pull_request' }} @@ -320,23 +320,23 @@ jobs: uses: aquasecurity/trivy-action@fbd16365eb88e12433951383f5e99bd901fc618f # 0.12.0 continue-on-error: true with: - image-ref: ghcr.io/nginxinc/nginx-kubernetes-gateway${{ matrix.container == 'nginx' && '/nginx' || '' }}:${{ steps.meta.outputs.version }} + image-ref: ghcr.io/nginxinc/nginx-gateway-fabric${{ matrix.container == 'nginx' && '/nginx' || '' }}:${{ steps.meta.outputs.version }} format: "sarif" - output: trivy-results-nginx-kubernetes-gateway${{ matrix.container == 'nginx' && '-nginx' || '' }}.sarif + output: trivy-results-nginx-gateway-fabric${{ matrix.container == 'nginx' && '-nginx' || '' }}.sarif ignore-unfixed: "true" - name: Upload Trivy scan results to GitHub Security tab uses: github/codeql-action/upload-sarif@6a28655e3dcb49cb0840ea372fd6d17733edd8a4 # v2.21.8 continue-on-error: true with: - sarif_file: trivy-results-nginx-kubernetes-gateway${{ matrix.container == 'nginx' && '-nginx' || '' }}.sarif + sarif_file: trivy-results-nginx-gateway-fabric${{ matrix.container == 'nginx' && '-nginx' || '' }}.sarif - name: Upload Scan Results uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 continue-on-error: true with: - name: trivy-results-nginx-kubernetes-gateway${{ matrix.container == 'nginx' && '-nginx' || '' }}.sarif - path: trivy-results-nginx-kubernetes-gateway${{ matrix.container == 'nginx' && '-nginx' || '' }}.sarif + name: trivy-results-nginx-gateway-fabric${{ matrix.container == 'nginx' && '-nginx' || '' }}.sarif + path: trivy-results-nginx-gateway-fabric${{ matrix.container == 'nginx' && '-nginx' || '' }}.sarif if: always() publish-helm: diff --git a/.github/workflows/conformance.yml b/.github/workflows/conformance.yml index db10aae1ff..3288a66dab 100644 --- a/.github/workflows/conformance.yml +++ b/.github/workflows/conformance.yml @@ -45,12 +45,12 @@ jobs: - name: Docker Buildx uses: docker/setup-buildx-action@f95db51fddba0c2d1ec667646a06c2ce06100226 # v3.0.0 - - name: NKG Docker meta - id: nkg-meta + - name: NGF Docker meta + id: ngf-meta uses: docker/metadata-action@96383f45573cb7f253c731d3b3ab81c87ef81934 # v5.0.0 with: images: | - name=ghcr.io/nginxinc/nginx-kubernetes-gateway + name=ghcr.io/nginxinc/nginx-gateway-fabric tags: | type=semver,pattern={{version}} type=edge @@ -62,18 +62,18 @@ jobs: uses: docker/metadata-action@96383f45573cb7f253c731d3b3ab81c87ef81934 # v5.0.0 with: images: | - name=ghcr.io/nginxinc/nginx-kubernetes-gateway/nginx + name=ghcr.io/nginxinc/nginx-gateway-fabric/nginx tags: | type=semver,pattern={{version}} type=edge type=ref,event=pr type=ref,event=branch,suffix=-rc,enable=${{ startsWith(github.ref, 'refs/heads/release') }} - - name: Prepare NKG files + - name: Prepare NGF files run: | - nkg_prefix=$(echo ${{ steps.nkg-meta.outputs.tags }} | cut -d ":" -f 1) - nkg_tag=$(echo ${{ steps.nkg-meta.outputs.tags }} | cut -d ":" -f 2) - make update-nkg-manifest NKG_PREFIX=${nkg_prefix} NKG_TAG=${nkg_tag} + ngf_prefix=$(echo ${{ steps.ngf-meta.outputs.tags }} | cut -d ":" -f 1) + ngf_tag=$(echo ${{ steps.ngf-meta.outputs.tags }} | cut -d ":" -f 2) + make update-ngf-manifest NGF_PREFIX=${ngf_prefix} NGF_TAG=${ngf_tag} working-directory: ./conformance - name: Build binary @@ -82,16 +82,16 @@ jobs: version: latest args: build --snapshot --clean - - name: Build NKG Docker Image + - name: Build NGF Docker Image uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 # v5.0.0 with: file: build/Dockerfile - tags: ${{ steps.nkg-meta.outputs.tags }} + tags: ${{ steps.ngf-meta.outputs.tags }} context: "." target: goreleaser load: true - cache-from: type=gha,scope=nkg - cache-to: type=gha,scope=nkg,mode=max + cache-from: type=gha,scope=ngf + cache-to: type=gha,scope=ngf,mode=max pull: true - name: Build NGINX Docker Image @@ -142,12 +142,12 @@ jobs: - name: Setup conformance tests run: | - nkg_prefix=$(echo ${{ steps.nkg-meta.outputs.tags }} | cut -d ":" -f 1) - nkg_tag=$(echo ${{ steps.nkg-meta.outputs.tags }} | cut -d ":" -f 2) + ngf_prefix=$(echo ${{ steps.ngf-meta.outputs.tags }} | cut -d ":" -f 1) + ngf_tag=$(echo ${{ steps.ngf-meta.outputs.tags }} | cut -d ":" -f 2) if [ ${{ github.event_name }} == "schedule" ]; then export GW_API_VERSION=main fi - make install-nkg-local-no-build NKG_PREFIX=${nkg_prefix} NKG_TAG=${nkg_tag} + make install-ngf-local-no-build NGF_PREFIX=${ngf_prefix} NGF_TAG=${ngf_tag} working-directory: ./conformance - name: Run conformance tests diff --git a/.github/workflows/mend.yml b/.github/workflows/mend.yml index 25685df4a7..9cea493a9c 100644 --- a/.github/workflows/mend.yml +++ b/.github/workflows/mend.yml @@ -31,6 +31,6 @@ jobs: run: jarsigner -verify wss-unified-agent.jar - name: Scan and upload env: - PRODUCT_NAME: nginx-kubernetes-gateway_${{ github.ref_name }} - PROJECT_NAME: nginx-kubernetes-gateway + PRODUCT_NAME: nginx-gateway-fabric_${{ github.ref_name }} + PROJECT_NAME: nginx-gateway-fabric run: java -jar wss-unified-agent.jar -noConfig true -wss.url ${{ secrets.WSS_URL }} -apiKey ${{ secrets.WSS_NGINX_TOKEN }} -product $PRODUCT_NAME -project $PROJECT_NAME -d . diff --git a/.github/workflows/update-docker-images.yml b/.github/workflows/update-docker-images.yml index 5a1f4e54ba..82b01bdb72 100644 --- a/.github/workflows/update-docker-images.yml +++ b/.github/workflows/update-docker-images.yml @@ -23,7 +23,7 @@ jobs: name: Get versions of base images runs-on: ubuntu-22.04 outputs: - nkg_tag: ${{ steps.nkg.outputs.tag }} + ngf_tag: ${{ steps.ngf.outputs.tag }} nginx_version: ${{ steps.nginx.outputs.nginx_version }} steps: - name: Checkout Repository @@ -31,16 +31,16 @@ jobs: with: fetch-depth: 0 - - name: Set NKG version - id: nkg + - name: Set NGF version + id: ngf run: | tag="$(git tag --sort=-version:refname | head -n1)" echo "tag=${tag//v}" >> $GITHUB_OUTPUT - - name: Checkout Repository at ${{ steps.nkg.outputs.tag }} + - name: Checkout Repository at ${{ steps.ngf.outputs.tag }} uses: actions/checkout@3df4ab11eba7bda6032a0b82a6bb43b11571feac # v4.0.0 with: - ref: refs/tags/v${{ steps.nkg.outputs.tag }} + ref: refs/tags/v${{ steps.ngf.outputs.tag }} - name: Set NGINX version id: nginx @@ -60,7 +60,7 @@ jobs: uses: lucacome/docker-image-update-checker@f50d56412b948cfdbb842c5419372681e0db3df1 # v1.2.1 with: base-image: ${{ needs.variables.outputs.nginx_version }} - image: ghcr.io/nginxinc/nginx-kubernetes-gateway/nginx:${{ needs.variables.outputs.nkg_tag }} + image: ghcr.io/nginxinc/nginx-gateway-fabric/nginx:${{ needs.variables.outputs.ngf_tag }} platforms: ${{ env.platforms }} - id: needs @@ -101,9 +101,9 @@ jobs: uses: docker/metadata-action@96383f45573cb7f253c731d3b3ab81c87ef81934 # v5.0.0 with: images: | - name=ghcr.io/nginxinc/nginx-kubernetes-gateway/nginx + name=ghcr.io/nginxinc/nginx-gateway-fabric/nginx tags: | - ${{ needs.variables.outputs.nkg_tag }} + ${{ needs.variables.outputs.ngf_tag }} - name: Build Docker Image uses: docker/build-push-action@0565240e2d4ab88bba5387d719585280857ece09 # v5.0.0 @@ -126,21 +126,21 @@ jobs: uses: aquasecurity/trivy-action@fbd16365eb88e12433951383f5e99bd901fc618f # 0.12.0 continue-on-error: true with: - image-ref: ghcr.io/nginxinc/nginx-kubernetes-gateway/nginx:${{ needs.variables.outputs.nkg_tag }} + image-ref: ghcr.io/nginxinc/nginx-gateway-fabric/nginx:${{ needs.variables.outputs.ngf_tag }} format: "sarif" - output: trivy-results-nginx-kubernetes-gateway-nginx + output: trivy-results-nginx-gateway-fabric-nginx ignore-unfixed: "true" - name: Upload Trivy scan results to GitHub Security tab uses: github/codeql-action/upload-sarif@6a28655e3dcb49cb0840ea372fd6d17733edd8a4 # v2.21.8 continue-on-error: true with: - sarif_file: trivy-results-nginx-kubernetes-gateway-nginx + sarif_file: trivy-results-nginx-gateway-fabric-nginx - name: Upload Scan Results uses: actions/upload-artifact@a8a3f3ad30e3422c9c7b888a15615d19a852ae32 # v3.1.3 continue-on-error: true with: - name: trivy-results-nginx-kubernetes-gateway-nginx - path: trivy-results-nginx-kubernetes-gateway-nginx + name: trivy-results-nginx-gateway-fabric-nginx + path: trivy-results-nginx-gateway-fabric-nginx if: always() diff --git a/.golangci.yml b/.golangci.yml index 7b84de3ecc..fbdd3f4620 100644 --- a/.golangci.yml +++ b/.golangci.yml @@ -1,6 +1,6 @@ linters-settings: goimports: - local-prefixes: github.com/nginxinc/nginx-kubernetes-gateway + local-prefixes: github.com/nginxinc/nginx-gateway-fabric misspell: locale: US revive: diff --git a/.goreleaser.yml b/.goreleaser.yml index c494cc0a5a..a05a5ec53c 100644 --- a/.goreleaser.yml +++ b/.goreleaser.yml @@ -48,7 +48,7 @@ announce: slack: enabled: true channel: '#announcements' - message_template: 'NGINX Kubernetes Gateway {{ .Tag }} is out! Check it out: {{ .ReleaseURL }}' + message_template: 'NGINX Gateway Fabric {{ .Tag }} is out! Check it out: {{ .ReleaseURL }}' milestones: - close: true diff --git a/CHANGELOG.md b/CHANGELOG.md index 56927abd44..a93357a126 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -1,7 +1,7 @@ # Changelog This document includes a curated changelog for each release. We also publish a changelog as the description of -a [GitHub release](https://github.com/nginxinc/nginx-kubernetes-gateway/releases), which, by contrast, is auto-generated +a [GitHub release](https://github.com/nginxinc/nginx-gateway-fabric/releases), which, by contrast, is auto-generated and includes links to all PRs that went into the release. ## Release 0.6.0 @@ -12,37 +12,48 @@ This release adds a Helm chart, dynamic control plane logging, Prometheus metric FEATURES: -- Helm chart. [PR-840](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/840) -- Use custom nginx container. [PR-934](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/934) -- Support dynamic control plane logging. [PR-943](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/943) -- Support websocket connections. [PR-962](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/962) -- Support Prometheus metrics. [PR-999](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/999) +- Helm chart. [PR-840](https://github.com/nginxinc/nginx-gateway-fabric/pull/840) +- Use custom nginx container. [PR-934](https://github.com/nginxinc/nginx-gateway-fabric/pull/934) +- Support dynamic control plane logging. [PR-943](https://github.com/nginxinc/nginx-gateway-fabric/pull/943) +- Support websocket connections. [PR-962](https://github.com/nginxinc/nginx-gateway-fabric/pull/962) +- Support Prometheus metrics. [PR-999](https://github.com/nginxinc/nginx-gateway-fabric/pull/999) BUG FIXES: -- Ensure NGINX Kubernetes Gateway has least privileges. [PR-1004](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/1004) +- Ensure NGINX Kubernetes Gateway has least privileges. [PR-1004](https://github.com/nginxinc/nginx-gateway-fabric/pull/1004) DOCUMENTATION: -- Use case guides: https://github.com/nginxinc/nginx-kubernetes-gateway/tree/v0.6.0/docs/guides +- Use case guides: https://github.com/nginxinc/nginx-gateway-fabric/tree/v0.6.0/docs/guides + +COMPATIBILITY: + +- The Gateway API version: `0.8.0` +- NGINX version: `1.25.2` +- Kubernetes version: `1.23+` + +CONTAINER IMAGES: + +- Control plane: `ghcr.io/nginxinc/nginx-kubernetes-gateway:0.6.0` +- Data plane: `ghcr.io/nginxinc/nginx-kubernetes-gateway/nginx:0.6.0` ## Release 0.5.0 *July 17, 2023* -This release completes all v1beta1 Core features of the Gateway API resources. See the [Gateway Compatibility doc](https://github.com/nginxinc/nginx-kubernetes-gateway/blob/v0.5.0/docs/gateway-api-compatibility.md) +This release completes all v1beta1 Core features of the Gateway API resources. See the [Gateway Compatibility doc](https://github.com/nginxinc/nginx-gateway-fabric/blob/v0.5.0/docs/gateway-api-compatibility.md) FEATURES: -- Support cross-namespace BackendRefs in HTTPRoutes. [PR-806](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/806) -- Support dynamic certificate rotation with Kubernetes Secrets. [PR-807](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/807) -- Support SupportedKinds in ListenerStatus. [PR-809](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/809) +- Support cross-namespace BackendRefs in HTTPRoutes. [PR-806](https://github.com/nginxinc/nginx-gateway-fabric/pull/806) +- Support dynamic certificate rotation with Kubernetes Secrets. [PR-807](https://github.com/nginxinc/nginx-gateway-fabric/pull/807) +- Support SupportedKinds in ListenerStatus. [PR-809](https://github.com/nginxinc/nginx-gateway-fabric/pull/809) BUG FIXES: -- Set redirect port in location header according to the scheme. [PR-801](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/801) -- Set proxy host header to the exact value of the request host header. [PR-827](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/827) -- Ensure Prefix matching requires trailing slash. [PR-817](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/817) +- Set redirect port in location header according to the scheme. [PR-801](https://github.com/nginxinc/nginx-gateway-fabric/pull/801) +- Set proxy host header to the exact value of the request host header. [PR-827](https://github.com/nginxinc/nginx-gateway-fabric/pull/827) +- Ensure Prefix matching requires trailing slash. [PR-817](https://github.com/nginxinc/nginx-gateway-fabric/pull/817) COMPATIBILITY: @@ -62,46 +73,46 @@ CONTAINER IMAGES: This release brings: -- Support for more features of the Gateway API resources. See the [Gateway Compatibility doc](https://github.com/nginxinc/nginx-kubernetes-gateway/blob/v0.4.0/docs/gateway-api-compatibility.md) -- Support for running the conformance test suite. See the [Conformance tests README](https://github.com/nginxinc/nginx-kubernetes-gateway/blob/v0.4.0/conformance/README.md). -- Defined Enhancement Proposal process for NGINX Kubernetes Gateway project. See the [Enhancement Proposal README](https://github.com/nginxinc/nginx-kubernetes-gateway/blob/v0.4.0/docs/proposals/README.md). -- Improved developer documentation for contributing to the project. See the [Development quickstart](https://github.com/nginxinc/nginx-kubernetes-gateway/blob/v0.4.0/docs/developer/quickstart.md). -- Architecture document that explains how NGINX Kubernetes Gateway works at a high level. See the [Architecture doc](https://github.com/nginxinc/nginx-kubernetes-gateway/blob/v0.4.0/docs/architecture.md) +- Support for more features of the Gateway API resources. See the [Gateway Compatibility doc](https://github.com/nginxinc/nginx-gateway-fabric/blob/v0.4.0/docs/gateway-api-compatibility.md) +- Support for running the conformance test suite. See the [Conformance tests README](https://github.com/nginxinc/nginx-gateway-fabric/blob/v0.4.0/conformance/README.md). +- Defined Enhancement Proposal process for NGINX Kubernetes Gateway project. See the [Enhancement Proposal README](https://github.com/nginxinc/nginx-gateway-fabric/blob/v0.4.0/docs/proposals/README.md). +- Improved developer documentation for contributing to the project. See the [Development quickstart](https://github.com/nginxinc/nginx-gateway-fabric/blob/v0.4.0/docs/developer/quickstart.md). +- Architecture document that explains how NGINX Kubernetes Gateway works at a high level. See the [Architecture doc](https://github.com/nginxinc/nginx-gateway-fabric/blob/v0.4.0/docs/architecture.md) - Miscellaneous enhancements and bug fixes. FEATURES: -- Allow empty sectionName in HTTPRoute parentRef. [PR-626](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/626) -- Exact PathMatch support for HTTPRoutes. [PR-603](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/603) -- Set ResolvedRefs condition to true on HTTPRoutes. [PR-645](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/645) -- Set gateway Pod IP as GatewayStatus address. [PR-638](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/638) -- Set Accepted condition type on Gateway status. [PR-633](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/633) -- Drop unrequired capabilities from containers. [PR-677](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/677) -- Update route condition where listener is not found. [PR-675](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/675) -- Set Gateway Programmed condition. [PR-658](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/658) -- AllowedRoutes support for Listeners. [PR-721](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/721) -- Support custom listener ports. [PR-745](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/745) -- Add support for RequestHeaderModifier for HTTPRouteRule objects. [PR-717](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/717) -- Add wildcard hostname support. [PR-769](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/769) -- Add Programmed status for listener. [PR-786](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/786) -- ReferenceGrant from Gateway to Secret. [PR-791](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/791) +- Allow empty sectionName in HTTPRoute parentRef. [PR-626](https://github.com/nginxinc/nginx-gateway-fabric/pull/626) +- Exact PathMatch support for HTTPRoutes. [PR-603](https://github.com/nginxinc/nginx-gateway-fabric/pull/603) +- Set ResolvedRefs condition to true on HTTPRoutes. [PR-645](https://github.com/nginxinc/nginx-gateway-fabric/pull/645) +- Set gateway Pod IP as GatewayStatus address. [PR-638](https://github.com/nginxinc/nginx-gateway-fabric/pull/638) +- Set Accepted condition type on Gateway status. [PR-633](https://github.com/nginxinc/nginx-gateway-fabric/pull/633) +- Drop unrequired capabilities from containers. [PR-677](https://github.com/nginxinc/nginx-gateway-fabric/pull/677) +- Update route condition where listener is not found. [PR-675](https://github.com/nginxinc/nginx-gateway-fabric/pull/675) +- Set Gateway Programmed condition. [PR-658](https://github.com/nginxinc/nginx-gateway-fabric/pull/658) +- AllowedRoutes support for Listeners. [PR-721](https://github.com/nginxinc/nginx-gateway-fabric/pull/721) +- Support custom listener ports. [PR-745](https://github.com/nginxinc/nginx-gateway-fabric/pull/745) +- Add support for RequestHeaderModifier for HTTPRouteRule objects. [PR-717](https://github.com/nginxinc/nginx-gateway-fabric/pull/717) +- Add wildcard hostname support. [PR-769](https://github.com/nginxinc/nginx-gateway-fabric/pull/769) +- Add Programmed status for listener. [PR-786](https://github.com/nginxinc/nginx-gateway-fabric/pull/786) +- ReferenceGrant from Gateway to Secret. [PR-791](https://github.com/nginxinc/nginx-gateway-fabric/pull/791) BUG FIXES: -- Set upstream zone size to 512k. [PR-609](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/609) -- Allow empty HTTPRoute hostnames. [PR-650](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/650) -- Allow long server names. [PR-651](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/651) -- Add in required capabilities for writing TLS secrets. [PR-718](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/718) -- Fix binding to multiple listeners with empty section name. [PR-730](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/730) -- Add timeout and retry logic for finding NGINX PID file. [PR-676](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/676) -- Prioritize method matching. [PR-789](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/789) -- Add NewListenerInvalidRouteKinds condition. [PR-799](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/799) -- Set ResolvedRefs/False/InvalidKind condition on the HTTPRoute if a BackendRef specifies an unknown kind. [PR-800](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/800) -- Set GatewayClass status for ignored GatewayClasses. [PR-804](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/804) +- Set upstream zone size to 512k. [PR-609](https://github.com/nginxinc/nginx-gateway-fabric/pull/609) +- Allow empty HTTPRoute hostnames. [PR-650](https://github.com/nginxinc/nginx-gateway-fabric/pull/650) +- Allow long server names. [PR-651](https://github.com/nginxinc/nginx-gateway-fabric/pull/651) +- Add in required capabilities for writing TLS secrets. [PR-718](https://github.com/nginxinc/nginx-gateway-fabric/pull/718) +- Fix binding to multiple listeners with empty section name. [PR-730](https://github.com/nginxinc/nginx-gateway-fabric/pull/730) +- Add timeout and retry logic for finding NGINX PID file. [PR-676](https://github.com/nginxinc/nginx-gateway-fabric/pull/676) +- Prioritize method matching. [PR-789](https://github.com/nginxinc/nginx-gateway-fabric/pull/789) +- Add NewListenerInvalidRouteKinds condition. [PR-799](https://github.com/nginxinc/nginx-gateway-fabric/pull/799) +- Set ResolvedRefs/False/InvalidKind condition on the HTTPRoute if a BackendRef specifies an unknown kind. [PR-800](https://github.com/nginxinc/nginx-gateway-fabric/pull/800) +- Set GatewayClass status for ignored GatewayClasses. [PR-804](https://github.com/nginxinc/nginx-gateway-fabric/pull/804) DEPENDENCIES: -- Bump sigs.k8s.io/gateway-api from 0.7.0 to 0.7.1. [PR-711](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/711) +- Bump sigs.k8s.io/gateway-api from 0.7.0 to 0.7.1. [PR-711](https://github.com/nginxinc/nginx-gateway-fabric/pull/711) COMPATIBILITY: @@ -121,33 +132,33 @@ CONTAINER IMAGES: This release brings: -- Extensive validation of Gateway API resources for robustness, security and correctness. See the [validation doc](https://github.com/nginxinc/nginx-kubernetes-gateway/blob/v0.3.0/docs/resource-validation.md) +- Extensive validation of Gateway API resources for robustness, security and correctness. See the [validation doc](https://github.com/nginxinc/nginx-gateway-fabric/blob/v0.3.0/docs/resource-validation.md) for more details. -- Defined open-source development process for NGINX Kubernetes Gateway project. See the [Issue lifecycle doc](https://github.com/nginxinc/nginx-kubernetes-gateway/blob/v0.3.0/ISSUE_LIFECYCLE.md). +- Defined open-source development process for NGINX Kubernetes Gateway project. See the [Issue lifecycle doc](https://github.com/nginxinc/nginx-gateway-fabric/blob/v0.3.0/ISSUE_LIFECYCLE.md). - Miscellaneous enhancements and bug fixes. FEATURES: -- Report proper Conditions in status of HTTPRoute and Gateway when GatewayClass is invalid or doesn't exist. [PR-576](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/576) -- Implement NKG-specific field validation for GatewayClasses. [PR-295](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/495) -- Implement NKG-specific field validation for HTTPRoutes. [PR-455](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/455) -- Implement NKG-specific field validation for Gateways. [PR-407](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/407) -- Run webhook validation rules inside NKG control plane. [PR-388](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/388) -- Make NGINX error log visible in NGINX container logs. [PR-319](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/319) -- Always generate a root "/" location block in NGINX config to handle unmatched requests with 404 response. [PR-356](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/356) +- Report proper Conditions in status of HTTPRoute and Gateway when GatewayClass is invalid or doesn't exist. [PR-576](https://github.com/nginxinc/nginx-gateway-fabric/pull/576) +- Implement NKG-specific field validation for GatewayClasses. [PR-295](https://github.com/nginxinc/nginx-gateway-fabric/pull/495) +- Implement NKG-specific field validation for HTTPRoutes. [PR-455](https://github.com/nginxinc/nginx-gateway-fabric/pull/455) +- Implement NKG-specific field validation for Gateways. [PR-407](https://github.com/nginxinc/nginx-gateway-fabric/pull/407) +- Run webhook validation rules inside NKG control plane. [PR-388](https://github.com/nginxinc/nginx-gateway-fabric/pull/388) +- Make NGINX error log visible in NGINX container logs. [PR-319](https://github.com/nginxinc/nginx-gateway-fabric/pull/319) +- Always generate a root "/" location block in NGINX config to handle unmatched requests with 404 response. [PR-356](https://github.com/nginxinc/nginx-gateway-fabric/pull/356) BUG FIXES: -- Fix HTTPRoute section name related bugs. [PR-568](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/568) -- Fix Observed Generation for Gateway Status. [PR-351](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/351) -- Fix status for parentRef with invalid listener in HTTPRoute. [PR-350](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/350) -- Fix initContainer failure during pod restart. [PR-337](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/337). +- Fix HTTPRoute section name related bugs. [PR-568](https://github.com/nginxinc/nginx-gateway-fabric/pull/568) +- Fix Observed Generation for Gateway Status. [PR-351](https://github.com/nginxinc/nginx-gateway-fabric/pull/351) +- Fix status for parentRef with invalid listener in HTTPRoute. [PR-350](https://github.com/nginxinc/nginx-gateway-fabric/pull/350) +- Fix initContainer failure during pod restart. [PR-337](https://github.com/nginxinc/nginx-gateway-fabric/pull/337). Thanks to [Tom Plant](https://github.com/pl4nty) -- Generate default http server in NGINX if http listener exists in Gateway. [PR-320](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/320) +- Generate default http server in NGINX if http listener exists in Gateway. [PR-320](https://github.com/nginxinc/nginx-gateway-fabric/pull/320) DEPENDENCIES: -- Bump sigs.k8s.io/gateway-api from 0.6.0 to 0.6.2. [PR-471](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/471) +- Bump sigs.k8s.io/gateway-api from 0.6.0 to 0.6.2. [PR-471](https://github.com/nginxinc/nginx-gateway-fabric/pull/471) COMPATIBILITY: @@ -169,23 +180,23 @@ This release extends the support of the features of the Gateway API resources. FEATURES: -- Support the Pod IPs instead of the virtual IP of a Service in the NGINX upstream. Additionally, NGINX Kubernetes - Gateway will pick up any changes to the Pod IPs and update the NGINX upstream - accordingly. [PR-221](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/221) -- Support the redirect filter in an HTTPRoute rule. [PR-218](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/218) -- Support weights in backendRefs in the HTTPRoute (traffic splitting). [PR-261](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/261) -- Support the ObservedGeneration field in the HTTPRoute status. [PR-254](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/254) +- Support the Pod IPs instead of the virtual IP of a Service in the NGINX upstream. Additionally, NGINX Gateway + Fabric will pick up any changes to the Pod IPs and update the NGINX upstream + accordingly. [PR-221](https://github.com/nginxinc/nginx-gateway-fabric/pull/221) +- Support the redirect filter in an HTTPRoute rule. [PR-218](https://github.com/nginxinc/nginx-gateway-fabric/pull/218) +- Support weights in backendRefs in the HTTPRoute (traffic splitting). [PR-261](https://github.com/nginxinc/nginx-gateway-fabric/pull/261) +- Support the ObservedGeneration field in the HTTPRoute status. [PR-254](https://github.com/nginxinc/nginx-gateway-fabric/pull/254) BUG FIXES: -- Do not require the namespace in the `--gateway-ctlr-name` cli argument. [PR-235](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/235) -- Ensure NGINX Kubernetes Gateway exits gracefully during shutdown. [PR-250](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/250) -- Handle query param names in case-sensitive way. [PR-220](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/220) +- Do not require the namespace in the `--gateway-ctlr-name` cli argument. [PR-235](https://github.com/nginxinc/nginx-gateway-fabric/pull/235) +- Ensure NGINX Kubernetes Gateway exits gracefully during shutdown. [PR-250](https://github.com/nginxinc/nginx-gateway-fabric/pull/250) +- Handle query param names in case-sensitive way. [PR-220](https://github.com/nginxinc/nginx-gateway-fabric/pull/220) DEPENDENCIES: -- Use the latest NGINX 1.23 image. [PR-275](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/275) -- Bump sigs.k8s.io/gateway-api from 0.5.0 to 0.5.1 [PR-251](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/251) +- Use the latest NGINX 1.23 image. [PR-275](https://github.com/nginxinc/nginx-gateway-fabric/pull/275) +- Bump sigs.k8s.io/gateway-api from 0.5.0 to 0.5.1 [PR-251](https://github.com/nginxinc/nginx-gateway-fabric/pull/251) COMPATIBILITY: @@ -213,17 +224,17 @@ The release includes: - Support for NGINX as a data plane. - Kubernetes manifests for a Deployment with a single Pod with the control plane and data plane containers as well as Services to enable external connectivity to that Pod. -- Support for a subset of features of GatewayClass, Gateway and HTTPRoute resources (see the [Gateway API Compatibility doc](https://github.com/nginxinc/nginx-kubernetes-gateway/blob/v0.1.0/README.md)). +- Support for a subset of features of GatewayClass, Gateway and HTTPRoute resources (see the [Gateway API Compatibility doc](https://github.com/nginxinc/nginx-gateway-fabric/blob/v0.1.0/README.md)). We expect that the architecture of NGINX Kubernetes Gateway -- the number of pods and containers and their interaction -- will change as the project evolves. NGINX Kubernetes Gateway is ready for experimental usage. We included -the [docs](https://github.com/nginxinc/nginx-kubernetes-gateway/tree/v0.1.0/docs) as well -as [examples](https://github.com/nginxinc/nginx-kubernetes-gateway/tree/v0.1.0/examples). +the [docs](https://github.com/nginxinc/nginx-gateway-fabric/tree/v0.1.0/docs) as well +as [examples](https://github.com/nginxinc/nginx-gateway-fabric/tree/v0.1.0/examples). If you'd like to give us feedback or get involved, see -the [README](https://github.com/nginxinc/nginx-kubernetes-gateway) to learn how. +the [README](https://github.com/nginxinc/nginx-gateway-fabric) to learn how. COMPATIBILITY: diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 750be944cf..17777fa817 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -1,6 +1,6 @@ # Contributing Guidelines -The following is a set of guidelines for contributing to NGINX Kubernetes Gateway. We really appreciate that you are +The following is a set of guidelines for contributing to NGINX Gateway Fabric. We really appreciate that you are considering contributing! ## Table Of Contents @@ -20,20 +20,20 @@ considering contributing! ## Ask a Question -To ask a question, use [Github Discussions](https://github.com/nginxinc/nginx-kubernetes-gateway/discussions). +To ask a question, use [Github Discussions](https://github.com/nginxinc/nginx-gateway-fabric/discussions). [NGINX Community Slack](https://community.nginx.org/joinslack) has a dedicated channel for this -project -- `#nginx-kubernetes-gateway`. +project -- `#nginx-gateway-fabric`. Reserve GitHub issues for feature requests and bugs rather than general questions. ## Getting Started -Follow our [Installation Instructions](/docs/installation.md) to get the NGINX Kubernetes Gateway up and running. +Follow our [Installation Instructions](/docs/installation.md) to get the NGINX Gateway Fabric up and running. ### Project Structure -- NGINX Kubernetes Gateway is written in Go and uses the open source NGINX software as the data plane. +- NGINX Gateway Fabric is written in Go and uses the open source NGINX software as the data plane. - The project follows a standard Go project layout - The main code is found at `cmd/gateway/` - The internal code is found at `internal/` @@ -51,7 +51,7 @@ Follow our [Installation Instructions](/docs/installation.md) to get the NGINX K #### Open a Discussion If you have any questions, ideas, or simply want to engage in a conversation with the community and maintainers, we -encourage you to open a [discussion](https://github.com/nginxinc/nginx-kubernetes-gateway/discussions) on GitHub. +encourage you to open a [discussion](https://github.com/nginxinc/nginx-gateway-fabric/discussions) on GitHub. #### Report a Bug @@ -67,7 +67,7 @@ regarding the idea and its use cases, while also giving the community an opportu In some cases, the maintainers may ask you to write an Enhancement Proposal. For details on this process, see the [Enhancement Proposal](/docs/proposals/README.md) README. -[idea]: https://github.com/nginxinc/nginx-kubernetes-gateway/discussions/new?category=ideas +[idea]: https://github.com/nginxinc/nginx-gateway-fabric/discussions/new?category=ideas #### Issue lifecycle diff --git a/Makefile b/Makefile index 5fd725e3b3..f1242daa1b 100644 --- a/Makefile +++ b/Makefile @@ -13,8 +13,8 @@ GO_LINKER_FLAGS_OPTIMIZATIONS = -s -w GO_LINKER_FLAGS = $(GO_LINKER_FLAGS_OPTIMIZATIONS) $(GO_LINKER_FlAGS_VARS) # variables that can be overridden by the user -PREFIX ?= nginx-kubernetes-gateway## The name of the NKG image. For example, nginx-kubernetes-gateway -NGINX_PREFIX ?= $(PREFIX)/nginx## The name of the nginx image. For example: nginx-kubernetes-gateway/nginx +PREFIX ?= nginx-gateway-fabric## The name of the NGF image. For example, nginx-gateway-fabric +NGINX_PREFIX ?= $(PREFIX)/nginx## The name of the nginx image. For example: nginx-gateway-fabric/nginx TAG ?= $(VERSION:v%=%)## The tag of the image. For example, 0.3.0 TARGET ?= local## The target of the build. Possible values: local and container KIND_KUBE_CONFIG=$${HOME}/.kube/kind/config## The location of the kind kubeconfig @@ -32,10 +32,10 @@ help: Makefile ## Display this help @grep -E '^(override )?[a-zA-Z_-]+ \??\+?= .*?## .*$$' $< | sort | awk 'BEGIN {FS = " \\??\\+?= .*?## "; printf "\nVariables:\n\n"}; {gsub(/override /, "", $$1); printf " \033[36m%-30s\033[0m %s\n", $$1, $$2}' .PHONY: build-images -build-images: build-nkg-image build-nginx-image ## Build the NKG and nginx docker images +build-images: build-ngf-image build-nginx-image ## Build the NGF and nginx docker images -.PHONY: build-nkg-image -build-nkg-image: check-for-docker build ## Build the NKG docker image +.PHONY: build-ngf-image +build-ngf-image: check-for-docker build ## Build the NGF docker image docker build --platform linux/$(GOARCH) --target $(strip $(TARGET)) -f build/Dockerfile -t $(strip $(PREFIX)):$(strip $(TAG)) . .PHONY: build-nginx-image @@ -50,7 +50,7 @@ check-for-docker: ## Check if Docker is installed build: ## Build the binary ifeq (${TARGET},local) @go version || (code=$$?; printf "\033[0;31mError\033[0m: unable to build locally\n"; exit $$code) - CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go build -trimpath -a -ldflags "$(GO_LINKER_FLAGS)" $(ADDITIONAL_GO_BUILD_FLAGS) -o $(OUT_DIR)/gateway github.com/nginxinc/nginx-kubernetes-gateway/cmd/gateway + CGO_ENABLED=0 GOOS=$(GOOS) GOARCH=$(GOARCH) go build -trimpath -a -ldflags "$(GO_LINKER_FLAGS)" $(ADDITIONAL_GO_BUILD_FLAGS) -o $(OUT_DIR)/gateway github.com/nginxinc/nginx-gateway-fabric/cmd/gateway endif .PHONY: build-goreleaser @@ -106,7 +106,7 @@ vet: ## Run go vet against code .PHONY: lint lint: ## Run golangci-lint against code - docker run --pull always --rm -v $(shell pwd):/nginx-kubernetes-gateway -w /nginx-kubernetes-gateway -v $(shell go env GOCACHE):/cache/go -e GOCACHE=/cache/go -e GOLANGCI_LINT_CACHE=/cache/go -v $(shell go env GOPATH)/pkg:/go/pkg golangci/golangci-lint:latest golangci-lint --color always run + docker run --pull always --rm -v $(shell pwd):/nginx-gateway-fabric -w /nginx-gateway-fabric -v $(shell go env GOCACHE):/cache/go -e GOCACHE=/cache/go -e GOLANGCI_LINT_CACHE=/cache/go -v $(shell go env GOPATH)/pkg:/go/pkg golangci/golangci-lint:latest golangci-lint --color always run .PHONY: unit-test unit-test: ## Run unit tests for the go code @@ -129,8 +129,8 @@ debug-build: GO_LINKER_FLAGS=$(GO_LINKER_FlAGS_VARS) debug-build: ADDITIONAL_GO_BUILD_FLAGS=-gcflags "all=-N -l" debug-build: build ## Build binary with debug info, symbols, and no optimizations -.PHONY: build-nkg-debug-image -build-nkg-debug-image: debug-build build-nkg-image ## Build NKG image with debug binary +.PHONY: build-ngf-debug-image +build-ngf-debug-image: debug-build build-ngf-image ## Build NGF image with debug binary .PHONY: generate-manifests generate-manifests: ## Generate manifests using Helm. diff --git a/README.md b/README.md index 35151724ae..fb7cafb307 100644 --- a/README.md +++ b/README.md @@ -1,13 +1,13 @@ -[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/nginxinc/nginx-kubernetes-gateway/badge)](https://api.securityscorecards.dev/projects/github.com/nginxinc/nginx-kubernetes-gateway) -[![FOSSA Status](https://app.fossa.com/api/projects/custom%2B5618%2Fgithub.com%2Fnginxinc%2Fnginx-kubernetes-gateway.svg?type=shield)](https://app.fossa.com/projects/custom%2B5618%2Fgithub.com%2Fnginxinc%2Fnginx-kubernetes-gateway?ref=badge_shield) +[![OpenSSF Scorecard](https://api.securityscorecards.dev/projects/github.com/nginxinc/nginx-gateway-fabric/badge)](https://api.securityscorecards.dev/projects/github.com/nginxinc/nginx-gateway-fabric) +[![FOSSA Status](https://app.fossa.com/api/projects/custom%2B5618%2Fgithub.com%2Fnginxinc%2Fnginx-gateway-fabric.svg?type=shield)](https://app.fossa.com/projects/custom%2B5618%2Fgithub.com%2Fnginxinc%2Fnginx-gateway-fabric?ref=badge_shield) -# NGINX Kubernetes Gateway +# NGINX Gateway Fabric -NGINX Kubernetes Gateway is an open-source project that provides an implementation of +NGINX Gateway Fabric is an open-source project that provides an implementation of the [Gateway API](https://gateway-api.sigs.k8s.io/) using [NGINX](https://nginx.org/) as the data plane. The goal of this project is to implement the core Gateway APIs -- `Gateway`, `GatewayClass`, `HTTPRoute`, `TCPRoute`, `TLSRoute`, and `UDPRoute` -- to configure an HTTP or TCP/UDP load balancer, reverse-proxy, or API gateway for applications running -on Kubernetes. NGINX Kubernetes Gateway is currently under development and supports a subset of the Gateway API. +on Kubernetes. NGINX Gateway Fabric is currently under development and supports a subset of the Gateway API. For a list of supported Gateway API resources and features, see the [Gateway API Compatibility](docs/gateway-api-compatibility.md) doc. @@ -20,58 +20,50 @@ Learn about our [design principles](/docs/developer/design-principles.md) and [a ## Getting Started 1. [Quick Start on a kind cluster](docs/running-on-kind.md). -2. [Install](docs/installation.md) NGINX Kubernetes Gateway. -3. [Build](docs/building-the-images.md) an NGINX Kubernetes Gateway container image from source or use a pre-built image +2. [Install](docs/installation.md) NGINX Gateway Fabric. +3. [Build](docs/building-the-images.md) an NGINX Gateway Fabric container image from source or use a pre-built image available - on [GitHub Container Registry](https://github.com/nginxinc/nginx-kubernetes-gateway/pkgs/container/nginx-kubernetes-gateway). + on [GitHub Container Registry](https://github.com/nginxinc/nginx-gateway-fabric/pkgs/container/nginx-gateway-fabric). 4. Deploy various [examples](examples). 5. Read our [guides](/docs/guides). -## NGINX Kubernetes Gateway Releases +## NGINX Gateway Fabric Releases -We publish NGINX Kubernetes Gateway releases on GitHub. See -our [releases page](https://github.com/nginxinc/nginx-kubernetes-gateway/releases). +We publish NGINX Gateway Fabric releases on GitHub. See +our [releases page](https://github.com/nginxinc/nginx-gateway-fabric/releases). -The latest release is [0.6.0](https://github.com/nginxinc/nginx-kubernetes-gateway/releases/tag/v0.6.0). +The latest release is [0.6.0](https://github.com/nginxinc/nginx-gateway-fabric/releases/tag/v0.6.0). The edge version is useful for experimenting with new features that are not yet published in a release. To use, choose -the *edge* version built from the [latest commit](https://github.com/nginxinc/nginx-kubernetes-gateway/commits/main) +the *edge* version built from the [latest commit](https://github.com/nginxinc/nginx-gateway-fabric/commits/main) from the main branch. -To use NGINX Kubernetes Gateway, you need to have access to: - -- An NGINX Kubernetes Gateway image. -- Installation manifests. -- Documentation and examples. - -It is important that the versions of those things above match. - The table below summarizes the options regarding the images, manifests, documentation and examples and gives your links to the correct versions: -| Version | Description | Image | Installation Manifests | Documentation and Examples | -|----------------|------------------------------------------|----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|---------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Latest release | For experimental use | Use the 0.6.0 image from [GitHub](https://github.com/nginxinc/nginx-kubernetes-gateway/pkgs/container/nginx-kubernetes-gateway) | [Manifests](https://github.com/nginxinc/nginx-kubernetes-gateway/tree/v0.6.0/deploy). | [Documentation](https://github.com/nginxinc/nginx-kubernetes-gateway/tree/v0.6.0/docs). [Examples](https://github.com/nginxinc/nginx-kubernetes-gateway/tree/v0.6.0/examples). | -| Edge | For experimental use and latest features | Use the edge image from [GitHub](https://github.com/nginxinc/nginx-kubernetes-gateway/pkgs/container/nginx-kubernetes-gateway) | [Manifests](https://github.com/nginxinc/nginx-kubernetes-gateway/tree/main/deploy). | [Documentation](https://github.com/nginxinc/nginx-kubernetes-gateway/tree/main/docs). [Examples](https://github.com/nginxinc/nginx-kubernetes-gateway/tree/main/examples). | +| Version | Description | Installation Manifests | Documentation and Examples | +|----------------|------------------------------------------|---------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| +| Latest release | For experimental use | [Manifests](https://github.com/nginxinc/nginx-gateway-fabric/tree/v0.6.0/deploy). | [Documentation](https://github.com/nginxinc/nginx-gateway-fabric/tree/v0.6.0/docs). [Examples](https://github.com/nginxinc/nginx-gateway-fabric/tree/v0.6.0/examples). | +| Edge | For experimental use and latest features | [Manifests](https://github.com/nginxinc/nginx-gateway-fabric/tree/main/deploy). | [Documentation](https://github.com/nginxinc/nginx-gateway-fabric/tree/main/docs). [Examples](https://github.com/nginxinc/nginx-gateway-fabric/tree/main/examples). | ### Versioning -NKG uses semantic versioning for its releases. For more information, see https://semver.org. +NGF uses semantic versioning for its releases. For more information, see https://semver.org. > Major version zero `(0.Y.Z)` is reserved for development, anything MAY change at any time. The public API is not stable. ### Release Planning and Development The features that will go into the next release are reflected in the -corresponding [milestone](https://github.com/nginxinc/nginx-kubernetes-gateway/milestones). Refer to +corresponding [milestone](https://github.com/nginxinc/nginx-gateway-fabric/milestones). Refer to the [Issue Lifecycle](ISSUE_LIFECYCLE.md) document for information on issue creation and assignment to releases. ## Technical Specifications -The following table lists the software versions NGINX Kubernetes Gateway supports. +The following table lists the software versions NGINX Gateway Fabric supports. -| NGINX Kubernetes Gateway | Gateway API | Kubernetes | NGINX OSS | +| NGINX Gateway Fabric | Gateway API | Kubernetes | NGINX OSS | |--------------------------|-------------|------------|-----------| | Edge | 0.8.0 | 1.23+ | 1.25.2 | | 0.6.0 | 0.8.0 | 1.23+ | 1.25.2 | @@ -96,7 +88,7 @@ using [syft](https://github.com/anchore/syft) and are available in SPDX format. ### Docker Images The SBOM for the Docker image is available in -the [GitHub Container](https://github.com/nginxinc/nginx-kubernetes-gateway/pkgs/container/nginx-kubernetes-gateway) +the [GitHub Container](https://github.com/nginxinc/nginx-gateway-fabric/pkgs/container/nginx-gateway-fabric) repository. The SBOM is generated using [syft](https://github.com/anchore/syft) and stored as an attestation in the image manifest. @@ -104,7 +96,7 @@ For example to retrieve the SBOM for `linux/amd64` and analyze it using [grype]( can run the following command: ```shell -docker buildx imagetools inspect ghcr.io/nginxinc/nginx-kubernetes-gateway:edge --format '{{ json (index .SBOM "linux/amd64").SPDX }}' | grype +docker buildx imagetools inspect ghcr.io/nginxinc/nginx-gateway-fabric:edge --format '{{ json (index .SBOM "linux/amd64").SPDX }}' | grype ``` ## Troubleshooting @@ -116,14 +108,14 @@ For troubleshooting help, see the [Troubleshooting](/docs/troubleshooting.md) do We’d like to hear your feedback! If you experience issues with our Gateway Controller, please [open a bug][bug] in GitHub. If you have any suggestions or enhancement requests, please [open an idea][idea] on GitHub discussions. You can contact us directly via kubernetes@nginx.com or on the [NGINX Community Slack][slack] in -the `#nginx-kubernetes-gateway` +the `#nginx-gateway-fabric` channel. -[bug]:https://github.com/nginxinc/nginx-kubernetes-gateway/issues/new?assignees=&labels=&projects=&template=bug_report.md&title= +[bug]:https://github.com/nginxinc/nginx-gateway-fabric/issues/new?assignees=&labels=&projects=&template=bug_report.md&title= -[idea]:https://github.com/nginxinc/nginx-kubernetes-gateway/discussions/categories/ideas +[idea]:https://github.com/nginxinc/nginx-gateway-fabric/discussions/categories/ideas -[slack]: https://nginxcommunity.slack.com/channels/nginx-kubernetes-gateway +[slack]: https://nginxcommunity.slack.com/channels/nginx-gateway-fabric ## Contributing @@ -131,4 +123,4 @@ Please read our [Contributing guide](CONTRIBUTING.md) if you'd like to contribut ## Support -NGINX Kubernetes Gateway is not covered by any support contract. +NGINX Gateway Fabric is not covered by any support contract. diff --git a/SECURITY.md b/SECURITY.md index 5f54cbd90a..dec5750a61 100644 --- a/SECURITY.md +++ b/SECURITY.md @@ -2,7 +2,7 @@ ## Supported Versions -We advise users to run the most recent release of the NGINX Kubernetes Gateway. A table with the supported versions can +We advise users to run the most recent release of the NGINX Gateway Fabric. A table with the supported versions can be found in the [README](README.md#technical-specifications). ## Reporting a Vulnerability diff --git a/apis/doc.go b/apis/doc.go index 7eefd6bf3b..65741b340a 100644 --- a/apis/doc.go +++ b/apis/doc.go @@ -1,2 +1,2 @@ -// Package apis stores the API definitions for NGINX Kubernetes Gateway configuration. +// Package apis stores the API definitions for NGINX Gateway Fabric configuration. package apis diff --git a/apis/v1alpha1/nginxgateway_types.go b/apis/v1alpha1/nginxgateway_types.go index 77f4259083..4a64a04984 100644 --- a/apis/v1alpha1/nginxgateway_types.go +++ b/apis/v1alpha1/nginxgateway_types.go @@ -6,7 +6,7 @@ import metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" // +kubebuilder:storageversion // +kubebuilder:subresource:status -// NginxGateway represents the dynamic configuration for an NGINX Kubernetes Gateway control plane. +// NginxGateway represents the dynamic configuration for an NGINX Gateway Fabric control plane. type NginxGateway struct { metav1.TypeMeta `json:",inline"` metav1.ObjectMeta `json:"metadata,omitempty"` diff --git a/build/Dockerfile b/build/Dockerfile index ad70680a7b..701f7e8e3f 100644 --- a/build/Dockerfile +++ b/build/Dockerfile @@ -1,12 +1,12 @@ # syntax=docker/dockerfile:1.4 FROM golang:1.21 as builder -WORKDIR /go/src/github.com/nginxinc/nginx-kubernetes-gateway +WORKDIR /go/src/github.com/nginxinc/nginx-gateway-fabric -COPY go.mod go.sum /go/src/github.com/nginxinc/nginx-kubernetes-gateway +COPY go.mod go.sum /go/src/github.com/nginxinc/nginx-gateway-fabric RUN go mod download -COPY . /go/src/github.com/nginxinc/nginx-kubernetes-gateway +COPY . /go/src/github.com/nginxinc/nginx-gateway-fabric RUN make build FROM alpine:3.18 as capabilizer @@ -17,7 +17,7 @@ COPY ./build/out/gateway /usr/bin/ RUN setcap 'cap_kill=+ep' /usr/bin/gateway FROM capabilizer as container-capabilizer -COPY --from=builder /go/src/github.com/nginxinc/nginx-kubernetes-gateway/build/out/gateway /usr/bin/ +COPY --from=builder /go/src/github.com/nginxinc/nginx-gateway-fabric/build/out/gateway /usr/bin/ RUN setcap 'cap_kill=+ep' /usr/bin/gateway FROM capabilizer as goreleaser-capabilizer diff --git a/cmd/gateway/commands.go b/cmd/gateway/commands.go index 32eb9fa0ec..20d6f639bd 100644 --- a/cmd/gateway/commands.go +++ b/cmd/gateway/commands.go @@ -12,16 +12,16 @@ import ( "sigs.k8s.io/controller-runtime/pkg/log" ctlrZap "sigs.k8s.io/controller-runtime/pkg/log/zap" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/provisioner" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/config" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/provisioner" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/config" ) const ( domain = "gateway.nginx.org" gatewayClassFlag = "gatewayclass" gatewayClassNameUsage = `The name of the GatewayClass resource. ` + - `Every NGINX Gateway must have a unique corresponding GatewayClass resource.` + `Every NGINX Gateway Fabric must have a unique corresponding GatewayClass resource.` gatewayCtrlNameFlag = "gateway-ctlr-name" gatewayCtrlNameUsageFmt = `The name of the Gateway controller. ` + `The controller name must be of the form: DOMAIN/PATH. The controller's domain is '%s'` @@ -113,7 +113,7 @@ func createStaticModeCommand() *cobra.Command { logger := ctlrZap.New(ctlrZap.Level(atom)) logger.Info( - "Starting NGINX Kubernetes Gateway in static mode", + "Starting NGINX Gateway Fabric in static mode", "version", version, "commit", commit, "date", date, @@ -241,9 +241,9 @@ func createStaticModeCommand() *cobra.Command { &disableLeaderElection, leaderElectionDisableFlag, false, - "Disable leader election. Leader election is used to avoid multiple replicas of the NGINX Kubernetes Gateway"+ + "Disable leader election. Leader election is used to avoid multiple replicas of the NGINX Gateway Fabric"+ " reporting the status of the Gateway API resources. If disabled, "+ - "all replicas of NGINX Kubernetes Gateway will update the statuses of the Gateway API resources.", + "all replicas of NGINX Gateway Fabric will update the statuses of the Gateway API resources.", ) cmd.Flags().Var( @@ -259,12 +259,12 @@ func createStaticModeCommand() *cobra.Command { func createProvisionerModeCommand() *cobra.Command { return &cobra.Command{ Use: "provisioner-mode", - Short: "Provision a static-mode NGINX Gateway Deployment per Gateway resource", + Short: "Provision a static-mode NGINX Gateway Fabric Deployment per Gateway resource", Hidden: true, RunE: func(cmd *cobra.Command, args []string) error { logger := ctlrZap.New() logger.Info( - "Starting NGINX Kubernetes Gateway Provisioner", + "Starting NGINX Gateway Fabric Provisioner", "version", version, "commit", commit, "date", date, diff --git a/conformance/Makefile b/conformance/Makefile index 816d999709..6998b9f4d7 100644 --- a/conformance/Makefile +++ b/conformance/Makefile @@ -1,6 +1,6 @@ -NKG_TAG = edge -NKG_PREFIX = nginx-kubernetes-gateway -NGINX_IMAGE_NAME = $(NKG_PREFIX)/nginx +NGF_TAG = edge +NGF_PREFIX = nginx-gateway-fabric +NGINX_IMAGE_NAME = $(NGF_PREFIX)/nginx GW_API_VERSION ?= 0.8.0 GATEWAY_CLASS = nginx SUPPORTED_FEATURES = HTTPRoute,HTTPRouteQueryParamMatching,HTTPRouteMethodMatching,HTTPRoutePortRedirect,HTTPRouteSchemeRedirect,GatewayClassObservedGenerationBump @@ -8,7 +8,7 @@ KIND_IMAGE ?= $(shell grep -m1 'FROM kindest/node' Note: If you want to run the latest conformance tests from the Gateway API `main` branch, set the following -> environment variable before deploying NKG: +> environment variable before deploying NGF: ```bash export GW_API_VERSION=main @@ -80,30 +80,30 @@ make create-kind-cluster KIND_IMAGE=kindest/node:v1.27.3 > Otherwise, the latest stable version will be used by default. -#### *Option 1* Build and install Nginx Kubernetes Gateway from local to configured kind cluster +#### *Option 1* Build and install NGINX Gateway Fabric from local to configured kind cluster ```makefile -make install-nkg-local-build +make install-ngf-local-build ``` -#### *Option 2* Install Nginx Kubernetes Gateway from local already built image to configured kind cluster +#### *Option 2* Install NGINX Gateway Fabric from local already built image to configured kind cluster You can optionally skip the actual *build* step. ```makefile -make install-nkg-local-no-build +make install-ngf-local-no-build ``` > Note: If choosing this option, the following step *must* be completed manually *before* you build the image: ```makefile -make update-nkg-manifest NKG_PREFIX= NKG_TAG= +make update-ngf-manifest NGF_PREFIX= NGF_TAG= ``` -#### *Option 3* Install Nginx Kubernetes Gateway from edge to configured kind cluster -You can also skip the build NKG image step and prepare the environment to instead use the `edge` image +#### *Option 3* Install NGINX Gateway Fabric from edge to configured kind cluster +You can also skip the build NGF image step and prepare the environment to instead use the `edge` image ```makefile -make install-nkg-edge +make install-ngf-edge ``` ### Step 3 - Build conformance test runner image @@ -136,14 +136,14 @@ make build-test-runner-image make run-conformance-tests ``` -### Step 5 - Cleanup the conformance test fixtures and uninstall Nginx Kubernetes Gateway +### Step 5 - Cleanup the conformance test fixtures and uninstall NGINX Gateway Fabric ```makefile make cleanup-conformance-tests ``` ```makefile -make uninstall-nkg +make uninstall-ngf ``` ### Step 6 - Revert changes to Go modules diff --git a/conformance/provisioner/README.md b/conformance/provisioner/README.md index 58084e0ad5..04de6fa47e 100644 --- a/conformance/provisioner/README.md +++ b/conformance/provisioner/README.md @@ -1,6 +1,6 @@ # Provisioner -Provisioner implements data plane provisioning for NGINX Kubernetes Gateway (NKG): it creates an NKG static mode +Provisioner implements data plane provisioning for NGINX Gateway Fabric (NGF): it creates an NGF static mode Deployment for each Gateway that belongs to the provisioner GatewayClass. ```text @@ -12,20 +12,20 @@ Flags: Global Flags: --gateway-ctlr-name string The name of the Gateway controller. The controller name must be of the form: DOMAIN/PATH. The controller's domain is 'gateway.nginx.org' (default "") - --gatewayclass string The name of the GatewayClass resource. Every NGINX Gateway must have a unique corresponding GatewayClass resource. (default "") + --gatewayclass string The name of the GatewayClass resource. Every NGINX Gateway Fabric must have a unique corresponding GatewayClass resource. (default "") ``` > Note: Provisioner is not ready for production yet (see this issue for more details -https://github.com/nginxinc/nginx-kubernetes-gateway/issues/634). However, it can be used in the Gateway API conformance +https://github.com/nginxinc/nginx-gateway-fabric/issues/634). However, it can be used in the Gateway API conformance tests, which expect a Gateway API implementation to provision an independent data plane per Gateway. > -> Note: Provisioner uses [this manifest](/deploy/manifests/deployment.yaml) to create an NKG static mode Deployment. -This manifest gets included into the NKG binary during the NKG build. To customize the Deployment, modify the manifest -and **re-build** NKG. +> Note: Provisioner uses [this manifest](/deploy/manifests/deployment.yaml) to create an NGF static mode Deployment. +This manifest gets included into the NGF binary during the NGF build. To customize the Deployment, modify the manifest +and **re-build** NGF. How to deploy: -1. Follow the [installation](/docs/installation.md) instructions up until the Deploy the NGINX Kubernetes Gateway Step +1. Follow the [installation](/docs/installation.md) instructions up until the Deploy the NGINX Gateway Fabric step to deploy prerequisites for both the static mode Deployments and the provisioner. 1. Deploy provisioner: diff --git a/conformance/provisioner/provisioner.yaml b/conformance/provisioner/provisioner.yaml index e7585dc611..5a58889274 100644 --- a/conformance/provisioner/provisioner.yaml +++ b/conformance/provisioner/provisioner.yaml @@ -61,7 +61,7 @@ spec: spec: serviceAccountName: nginx-gateway-provisioner containers: - - image: ghcr.io/nginxinc/nginx-kubernetes-gateway:edge + - image: ghcr.io/nginxinc/nginx-gateway-fabric:edge imagePullPolicy: Always name: nginx-gateway-provisioner securityContext: diff --git a/conformance/provisioner/static-deployment.yaml b/conformance/provisioner/static-deployment.yaml index fa8c1b1415..0895770db8 100644 --- a/conformance/provisioner/static-deployment.yaml +++ b/conformance/provisioner/static-deployment.yaml @@ -1,5 +1,5 @@ --- -# Source: nginx-kubernetes-gateway/templates/deployment.yaml +# Source: nginx-gateway-fabric/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: @@ -43,7 +43,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.name - image: ghcr.io/nginxinc/nginx-kubernetes-gateway:edge + image: ghcr.io/nginxinc/nginx-gateway-fabric:edge imagePullPolicy: Always name: nginx-gateway ports: @@ -72,7 +72,7 @@ spec: mountPath: /etc/nginx/secrets - name: nginx-run mountPath: /var/run/nginx - - image: ghcr.io/nginxinc/nginx-kubernetes-gateway/nginx:edge + - image: ghcr.io/nginxinc/nginx-gateway-fabric/nginx:edge imagePullPolicy: Always name: nginx ports: diff --git a/conformance/tests/Dockerfile b/conformance/tests/Dockerfile index 0fa09b3071..5a1eeef574 100644 --- a/conformance/tests/Dockerfile +++ b/conformance/tests/Dockerfile @@ -4,10 +4,10 @@ FROM kindest/node:v1.28.0 FROM golang:1.21 -WORKDIR /go/src/github.com/nginxinc/nginx-kubernetes-gateway/conformance/tests/ +WORKDIR /go/src/github.com/nginxinc/nginx-gateway-fabric/conformance/tests/ -COPY --link go.mod /go/src/github.com/nginxinc/nginx-kubernetes-gateway/ -COPY --link go.sum /go/src/github.com/nginxinc/nginx-kubernetes-gateway/ +COPY --link go.mod /go/src/github.com/nginxinc/nginx-gateway-fabric/ +COPY --link go.sum /go/src/github.com/nginxinc/nginx-gateway-fabric/ RUN go mod download -COPY --link conformance/tests /go/src/github.com/nginxinc/nginx-kubernetes-gateway/conformance/tests/ +COPY --link conformance/tests /go/src/github.com/nginxinc/nginx-gateway-fabric/conformance/tests/ diff --git a/conformance/tests/conformance_test.go b/conformance/tests/conformance_test.go index b7ccbbabb1..86714e57a6 100644 --- a/conformance/tests/conformance_test.go +++ b/conformance/tests/conformance_test.go @@ -65,11 +65,11 @@ func TestConformance(t *testing.T) { }, Implementation: v1alpha1.Implementation{ Organization: "nginxinc", - Project: "nginx-kubernetes-gateway", - URL: "https://github.com/nginxinc/nginx-kubernetes-gateway", + Project: "nginx-gateway-fabric", + URL: "https://github.com/nginxinc/nginx-gateway-fabric", Version: *flags.ImplementationVersion, Contact: []string{ - "https://github.com/nginxinc/nginx-kubernetes-gateway/discussions/new/choose", + "https://github.com/nginxinc/nginx-gateway-fabric/discussions/new/choose", }, }, ConformanceProfiles: sets.New(suite.HTTPConformanceProfileName), diff --git a/deploy/helm-chart/Chart.yaml b/deploy/helm-chart/Chart.yaml index be6b022242..5887d8e862 100644 --- a/deploy/helm-chart/Chart.yaml +++ b/deploy/helm-chart/Chart.yaml @@ -1,13 +1,13 @@ apiVersion: v2 -name: nginx-kubernetes-gateway -description: NGINX Kubernetes Gateway +name: nginx-gateway-fabric +description: NGINX Gateway Fabric type: application version: 0.1.0 appVersion: "edge" -home: https://github.com/nginxinc/nginx-kubernetes-gateway -icon: https://raw.githubusercontent.com/nginxinc/nginx-kubernetes-gateway/tree/main/deploy/helm-chart/chart-icon.png +home: https://github.com/nginxinc/nginx-gateway-fabric +icon: https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/tree/main/deploy/helm-chart/chart-icon.png sources: - - https://github.com/nginxinc/nginx-kubernetes-gateway/tree/main/deploy/helm-chart + - https://github.com/nginxinc/nginx-gateway-fabric/tree/main/deploy/helm-chart keywords: - kubernetes - gateway diff --git a/deploy/helm-chart/README.md b/deploy/helm-chart/README.md index 815e1f1535..1ed38cfb85 100644 --- a/deploy/helm-chart/README.md +++ b/deploy/helm-chart/README.md @@ -1,8 +1,8 @@ -# NGINX Kubernetes Gateway Helm Chart +# NGINX Gateway Fabric Helm Chart ## Introduction -This chart deploys the NGINX Kubernetes Gateway in your Kubernetes cluster. +This chart deploys the NGINX Gateway Fabric in your Kubernetes cluster. ## Prerequisites @@ -12,8 +12,8 @@ This chart deploys the NGINX Kubernetes Gateway in your Kubernetes cluster. ### Installing the Gateway API resources > Note: The Gateway API resources from the standard channel (the CRDs and the validating webhook) must be installed -> before deploying NGINX Kubernetes Gateway. If they are already installed in your cluster, please ensure they are -> the correct version as supported by the NGINX Kubernetes Gateway - +> before deploying NGINX Gateway Fabric. If they are already installed in your cluster, please ensure they are +> the correct version as supported by the NGINX Gateway Fabric - > [see the Technical Specifications](../../README.md#technical-specifications). To install the Gateway resources from [the Gateway API repo](https://github.com/kubernetes-sigs/gateway-api), run: @@ -30,7 +30,7 @@ To install the chart with the release name `my-release` (`my-release` is the nam nginx-gateway namespace (with optional `--create-namespace` flag - you can omit if the namespace already exists): ```shell -helm install my-release oci://ghcr.io/nginxinc/charts/nginx-kubernetes-gateway --create-namespace --wait -n nginx-gateway +helm install my-release oci://ghcr.io/nginxinc/charts/nginx-gateway-fabric --create-namespace --wait -n nginx-gateway ``` This will install the latest stable release. To install the latest version from the `main` branch, specify the @@ -41,8 +41,8 @@ This will install the latest stable release. To install the latest version from #### Pulling the Chart ```shell -helm pull oci://ghcr.io/nginxinc/charts/nginx-kubernetes-gateway --untar -cd nginx-kubernetes-gateway +helm pull oci://ghcr.io/nginxinc/charts/nginx-gateway-fabric --untar +cd nginx-gateway-fabric ``` This will pull the latest stable release. To pull the latest version from the `main` branch, specify the @@ -62,7 +62,7 @@ helm install my-release . --create-namespace --wait -n nginx-gateway ### Upgrading the Gateway Resources Before you upgrade a release, ensure the Gateway API resources are the correct version as supported by the NGINX -Kubernetes Gateway - [see the Technical Specifications](../../README.md#technical-specifications).: +Gateway Fabric - [see the Technical Specifications](../../README.md#technical-specifications).: To upgrade the Gateway resources from [the Gateway API repo](https://github.com/kubernetes-sigs/gateway-api), run: @@ -72,7 +72,7 @@ kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/downloa ### Upgrading the CRDs -Helm does not upgrade the NGINX Kubernetes Gateway CRDs during a release upgrade. Before you upgrade a release, you +Helm does not upgrade the NGINX Gateway Fabric CRDs during a release upgrade. Before you upgrade a release, you must [pull the chart](#pulling-the-chart) from GitHub and run the following command to upgrade the CRDs: ```shell @@ -90,7 +90,7 @@ Warning: kubectl apply should be used on resource created by either kubectl crea To upgrade the release `my-release`, run: ```shell -helm upgrade my-release oci://ghcr.io/nginxinc/charts/nginx-kubernetes-gateway -n nginx-gateway +helm upgrade my-release oci://ghcr.io/nginxinc/charts/nginx-gateway-fabric -n nginx-gateway ``` This will upgrade to the latest stable release. To upgrade to the latest version from the `main` branch, specify @@ -131,33 +131,33 @@ kubectl delete -f https://github.com/kubernetes-sigs/gateway-api/releases/downlo ## Configuration -The following tables lists the configurable parameters of the NGINX Kubernetes Gateway chart and their default values. +The following tables lists the configurable parameters of the NGINX Gateway Fabric chart and their default values. | Parameter | Description | Default Value | |---------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------| -| `nginxGateway.image.repository` | The repository for the NGINX Kubernetes Gateway image. | ghcr.io/nginxinc/nginx-kubernetes-gateway | -| `nginxGateway.image.tag` | The tag for the NGINX Kubernetes Gateway image. | edge | -| `nginxGateway.image.pullPolicy` | The `imagePullPolicy` for the NGINX Kubernetes Gateway image. | Always | -| `nginxGateway.gatewayClassName` | The name of the GatewayClass for the NGINX Kubernetes Gateway deployment. | nginx | +| `nginxGateway.image.repository` | The repository for the NGINX Gateway Fabric image. | ghcr.io/nginxinc/nginx-gateway-fabric | +| `nginxGateway.image.tag` | The tag for the NGINX Gateway Fabric image. | edge | +| `nginxGateway.image.pullPolicy` | The `imagePullPolicy` for the NGINX Gateway Fabric image. | Always | +| `nginxGateway.gatewayClassName` | The name of the GatewayClass for the NGINX Gateway Fabric deployment. | nginx | | `nginxGateway.gatewayControllerName` | The name of the Gateway controller. The controller name must be of the form: DOMAIN/PATH. The controller's domain is gateway.nginx.org. | gateway.nginx.org/nginx-gateway-controller | -| `nginxGateway.kind` | The kind of the NGINX Kubernetes Gateway installation - currently, only Deployment is supported. | deployment | +| `nginxGateway.kind` | The kind of the NGINX Gateway Fabric installation - currently, only Deployment is supported. | deployment | | `nginxGateway.config` | The dynamic configuration for the control plane that is contained in the NginxGateway resource | [See nginxGateway.config section](values.yaml) | | `nginxGateway.readinessProbe.enable` | Enable the /readyz endpoint on the control plane. | true | | `nginxGateway.readinessProbe.port` | Port in which the readiness endpoint is exposed. | 8081 | | `nginxGateway.readinessProbe.initialDelaySeconds` | The number of seconds after the Pod has started before the readiness probes are initiated. | 3 | -| `nginxGateway.replicaCount` | The number of replicas of the NGINX Kubernetes Gateway Deployment. | 1 | -| `nginxGateway.leaderElection.enable` | Enable leader election. Leader election is used to avoid multiple replicas of the NGINX Kubernetes Gateway reporting the status of the Gateway API resources. | true | +| `nginxGateway.replicaCount` | The number of replicas of the NGINX Gateway Fabric Deployment. | 1 | +| `nginxGateway.leaderElection.enable` | Enable leader election. Leader election is used to avoid multiple replicas of the NGINX Gateway Fabric reporting the status of the Gateway API resources. | true | | `nginxGateway.leaderElection.lockName` | The name of the leader election lock. A Lease object with this name will be created in the same Namespace as the controller. | Autogenerated | -| `nginx.image.repository` | The repository for the NGINX image. | ghcr.io/nginxinc/nginx-kubernetes-gateway/nginx | +| `nginx.image.repository` | The repository for the NGINX image. | ghcr.io/nginxinc/nginx-gateway-fabric/nginx | | `nginx.image.tag` | The tag for the NGINX image. | edge | | `nginx.image.pullPolicy` | The `imagePullPolicy` for the NGINX image. | Always | -| `serviceAccount.annotations` | The `annotations` for the ServiceAccount used by the NGINX Kubernetes Gateway deployment. | {} | -| `serviceAccount.name` | Name of the ServiceAccount used by the NGINX Kubernetes Gateway deployment. | Autogenerated | -| `service.create` | Creates a service to expose the NGINX Kubernetes Gateway pods. | true | -| `service.type` | The type of service to create for the NGINX Kubernetes Gateway. | Loadbalancer | +| `serviceAccount.annotations` | The `annotations` for the ServiceAccount used by the NGINX Gateway Fabric deployment. | {} | +| `serviceAccount.name` | Name of the ServiceAccount used by the NGINX Gateway Fabric deployment. | Autogenerated | +| `service.create` | Creates a service to expose the NGINX Gateway Fabric pods. | true | +| `service.type` | The type of service to create for the NGINX Gateway Fabric. | Loadbalancer | | `service.externalTrafficPolicy` | The `externalTrafficPolicy` of the service. The value `Local` preserves the client source IP. | Local | -| `service.annotations` | The `annotations` of the NGINX Kubernetes Gateway service. | {} | -| `service.ports` | A list of ports to expose through the NGINX Kubernetes Gateway service. Update it to match the listener ports from your Gateway resource. Follows the conventional Kubernetes yaml syntax for service ports. | [ port: 80, targetPort: 80, protocol: TCP, name: http; port: 443, targetPort: 443, protocol: TCP, name: https ] | +| `service.annotations` | The `annotations` of the NGINX Gateway Fabric service. | {} | +| `service.ports` | A list of ports to expose through the NGINX Gateway Fabric service. Update it to match the listener ports from your Gateway resource. Follows the conventional Kubernetes yaml syntax for service ports. | [ port: 80, targetPort: 80, protocol: TCP, name: http; port: 443, targetPort: 443, protocol: TCP, name: https ] | | `metrics.disable` | Disable exposing metrics in the Prometheus format. | false | | `metrics.port` | Set the port where the Prometheus metrics are exposed. Format: [1024 - 65535] | 9113 | | `metrics.secure` | Enable serving metrics via https. By default metrics are served via http. Please note that this endpoint will be secured with a self-signed certificate. | false | diff --git a/deploy/helm-chart/crds/gateway.nginx.org_nginxgateways.yaml b/deploy/helm-chart/crds/gateway.nginx.org_nginxgateways.yaml index a5829d407c..cceb83de3f 100644 --- a/deploy/helm-chart/crds/gateway.nginx.org_nginxgateways.yaml +++ b/deploy/helm-chart/crds/gateway.nginx.org_nginxgateways.yaml @@ -18,7 +18,7 @@ spec: schema: openAPIV3Schema: description: NginxGateway represents the dynamic configuration for an NGINX - Kubernetes Gateway control plane. + Gateway Fabric control plane. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation diff --git a/deploy/helm-chart/values.yaml b/deploy/helm-chart/values.yaml index c45b488d8a..fd16c1c21a 100644 --- a/deploy/helm-chart/values.yaml +++ b/deploy/helm-chart/values.yaml @@ -1,8 +1,8 @@ nginxGateway: - ## The kind of the NGINX Kubernetes Gateway installation - currently, only deployment is supported. + ## The kind of the NGINX Gateway Fabric installation - currently, only deployment is supported. kind: deployment ## gatewayClassName is the name of the GatewayClass that will be created as part of this release. Every NGINX Gateway - ## must have a unique corresponding GatewayClass resource. NGINX Kubernetes Gateway only processes resources that + ## Fabric must have a unique corresponding GatewayClass resource. NGINX Gateway Fabric only processes resources that ## belong to its class - i.e. have the "gatewayClassName" field resource equal to the class. gatewayClassName: nginx ## The name of the Gateway controller. The controller name must be of the form: DOMAIN/PATH. The controller's domain @@ -13,12 +13,12 @@ nginxGateway: logging: ## Log level. Supported values "info", "debug", "error". level: info - ## The number of replicas of the NGINX Kubernetes Gateway Deployment. + ## The number of replicas of the NGINX Gateway Fabric Deployment. replicaCount: 1 ## The configuration for leader election. leaderElection: - ## Enable leader election. Leader election is used to avoid multiple replicas of the NGINX Kubernetes Gateway - ## reporting the status of the Gateway API resources. If not enabled, all replicas of NGINX Kubernetes Gateway + ## Enable leader election. Leader election is used to avoid multiple replicas of the NGINX Gateway Fabric + ## reporting the status of the Gateway API resources. If not enabled, all replicas of NGINX Gateway Fabric ## will update the statuses of the Gateway API resources. enable: true ## The name of the leader election lock. A Lease object with this name will be created in the same Namespace as @@ -36,8 +36,8 @@ nginxGateway: initialDelaySeconds: 3 image: - ## The NGINX Kubernetes Gateway image to use - repository: ghcr.io/nginxinc/nginx-kubernetes-gateway + ## The NGINX Gateway Fabric image to use + repository: ghcr.io/nginxinc/nginx-gateway-fabric tag: edge pullPolicy: Always @@ -48,27 +48,27 @@ nginxGateway: nginx: ## The NGINX image to use image: - repository: ghcr.io/nginxinc/nginx-kubernetes-gateway/nginx + repository: ghcr.io/nginxinc/nginx-gateway-fabric/nginx tag: edge pullPolicy: Always serviceAccount: annotations: {} - ## The name of the service account of the NGINX Kubernetes Gateway pods. Used for RBAC. + ## The name of the service account of the NGINX Gateway Fabric pods. Used for RBAC. ## Autogenerated if not set or set to "". # name: nginx-gateway service: - ## Creates a service to expose the NGINX Kubernetes Gateway pods. + ## Creates a service to expose the NGINX Gateway Fabric pods. create: true - ## The type of service to create for the NGINX Kubernetes Gateway. + ## The type of service to create for the NGINX Gateway Fabric. type: LoadBalancer ## The externalTrafficPolicy of the service. The value Local preserves the client source IP. externalTrafficPolicy: Local - ## The annotations of the NGINX Kubernetes Gateway service. + ## The annotations of the NGINX Gateway Fabric service. annotations: {} - ## A list of ports to expose through the NGINX Kubernetes Gateway service. Update it to match the listener ports from + ## A list of ports to expose through the NGINX Gateway Fabric service. Update it to match the listener ports from ## your Gateway resource. Follows the conventional Kubernetes yaml syntax for service ports. ports: - port: 80 diff --git a/deploy/manifests/crds/gateway.nginx.org_nginxgateways.yaml b/deploy/manifests/crds/gateway.nginx.org_nginxgateways.yaml index a5829d407c..cceb83de3f 100644 --- a/deploy/manifests/crds/gateway.nginx.org_nginxgateways.yaml +++ b/deploy/manifests/crds/gateway.nginx.org_nginxgateways.yaml @@ -18,7 +18,7 @@ spec: schema: openAPIV3Schema: description: NginxGateway represents the dynamic configuration for an NGINX - Kubernetes Gateway control plane. + Gateway Fabric control plane. properties: apiVersion: description: 'APIVersion defines the versioned schema of this representation diff --git a/deploy/manifests/nginx-gateway.yaml b/deploy/manifests/nginx-gateway.yaml index 8adf00fc94..648785e01d 100644 --- a/deploy/manifests/nginx-gateway.yaml +++ b/deploy/manifests/nginx-gateway.yaml @@ -3,7 +3,7 @@ kind: Namespace metadata: name: nginx-gateway --- -# Source: nginx-kubernetes-gateway/templates/rbac.yaml +# Source: nginx-gateway-fabric/templates/rbac.yaml apiVersion: v1 kind: ServiceAccount metadata: @@ -16,7 +16,7 @@ metadata: annotations: {} --- -# Source: nginx-kubernetes-gateway/templates/rbac.yaml +# Source: nginx-gateway-fabric/templates/rbac.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRole metadata: @@ -90,7 +90,7 @@ rules: - get - update --- -# Source: nginx-kubernetes-gateway/templates/rbac.yaml +# Source: nginx-gateway-fabric/templates/rbac.yaml apiVersion: rbac.authorization.k8s.io/v1 kind: ClusterRoleBinding metadata: @@ -108,7 +108,7 @@ subjects: name: nginx-gateway namespace: nginx-gateway --- -# Source: nginx-kubernetes-gateway/templates/deployment.yaml +# Source: nginx-gateway-fabric/templates/deployment.yaml apiVersion: apps/v1 kind: Deployment metadata: @@ -155,7 +155,7 @@ spec: valueFrom: fieldRef: fieldPath: metadata.name - image: ghcr.io/nginxinc/nginx-kubernetes-gateway:edge + image: ghcr.io/nginxinc/nginx-gateway-fabric:edge imagePullPolicy: Always name: nginx-gateway ports: @@ -186,7 +186,7 @@ spec: mountPath: /etc/nginx/secrets - name: nginx-run mountPath: /var/run/nginx - - image: ghcr.io/nginxinc/nginx-kubernetes-gateway/nginx:edge + - image: ghcr.io/nginxinc/nginx-gateway-fabric/nginx:edge imagePullPolicy: Always name: nginx ports: @@ -231,7 +231,7 @@ spec: - name: nginx-lib emptyDir: {} --- -# Source: nginx-kubernetes-gateway/templates/gatewayclass.yaml +# Source: nginx-gateway-fabric/templates/gatewayclass.yaml apiVersion: gateway.networking.k8s.io/v1beta1 kind: GatewayClass metadata: @@ -243,7 +243,7 @@ metadata: spec: controllerName: gateway.nginx.org/nginx-gateway-controller --- -# Source: nginx-kubernetes-gateway/templates/nginxgateway.yaml +# Source: nginx-gateway-fabric/templates/nginxgateway.yaml apiVersion: gateway.nginx.org/v1alpha1 kind: NginxGateway metadata: diff --git a/deploy/manifests/service/loadbalancer-aws-nlb.yaml b/deploy/manifests/service/loadbalancer-aws-nlb.yaml index 81efdeaf13..ab64f656cf 100644 --- a/deploy/manifests/service/loadbalancer-aws-nlb.yaml +++ b/deploy/manifests/service/loadbalancer-aws-nlb.yaml @@ -1,5 +1,5 @@ --- -# Source: nginx-kubernetes-gateway/templates/service.yaml +# Source: nginx-gateway-fabric/templates/service.yaml apiVersion: v1 kind: Service metadata: diff --git a/deploy/manifests/service/loadbalancer.yaml b/deploy/manifests/service/loadbalancer.yaml index 1aed2a6aab..660a236579 100644 --- a/deploy/manifests/service/loadbalancer.yaml +++ b/deploy/manifests/service/loadbalancer.yaml @@ -1,5 +1,5 @@ --- -# Source: nginx-kubernetes-gateway/templates/service.yaml +# Source: nginx-gateway-fabric/templates/service.yaml apiVersion: v1 kind: Service metadata: diff --git a/deploy/manifests/service/nodeport.yaml b/deploy/manifests/service/nodeport.yaml index 64c9f3d86a..83c236da7d 100644 --- a/deploy/manifests/service/nodeport.yaml +++ b/deploy/manifests/service/nodeport.yaml @@ -1,5 +1,5 @@ --- -# Source: nginx-kubernetes-gateway/templates/service.yaml +# Source: nginx-gateway-fabric/templates/service.yaml apiVersion: v1 kind: Service metadata: diff --git a/design/control-data-plane-separation/design.md b/design/control-data-plane-separation/design.md index 4c1630c8ed..655aa06b7c 100644 --- a/design/control-data-plane-separation/design.md +++ b/design/control-data-plane-separation/design.md @@ -2,13 +2,13 @@ This document proposes a design for separating the control and data planes. -Issue #292: https://github.com/nginxinc/nginx-kubernetes-gateway/issues/292 +Issue #292: https://github.com/nginxinc/nginx-gateway-fabric/issues/292 > Note: I use data plane and agent interchangeably in this document. ## Background -NKG composes its control and data plane containers into a single Kubernetes Pod. The control plane uses OS signals and a +NGF composes its control and data plane containers into a single Kubernetes Pod. The control plane uses OS signals and a shared file system to configure and reload nginx. This architecture is problematic because the same RBAC policies govern the control and data planes and share CVE potential. A compromised control plane may impact the customer’s traffic. The Kubernetes API server may be affected if the data plane is compromised. In addition to security concerns, this @@ -39,7 +39,7 @@ I propose using the [nginx agent](https://github.com/nginx/agent) as our data pl #### Evaluation of Requirements -The following list outlines all of NKG's requirements for an agent and whether the nginx agent meets them: +The following list outlines all of NGF's requirements for an agent and whether the nginx agent meets them: - [x] It is open source. - [x] It supports both OSS and Plus versions of nginx. @@ -202,7 +202,7 @@ this option as a last resort that we can decide to adopt if we hit a roadblock w ![Deployment architecture](deployment-architecture.png) -- _Control Plane Deployment_: The control plane is a Kubernetes Deployment with one container running the NKG +- _Control Plane Deployment_: The control plane is a Kubernetes Deployment with one container running the NGF controller. Initially, the control plane will be limited to a single Pod. Once we add leader election, the control plane will be able to scale. The control plane will perform the same functions as it does today, but instead of configuring nginx by writing files to a shared volume, it will send the configuration to the agent via gRPC. @@ -223,11 +223,11 @@ the control plane. In the future, we may reconsider this model if there’s a us multiple `Gateway` resources. For example, in that model, it might make sense for the control plane to be responsible for provisioning a separate data plane for each `Gateway.` -### Running Multiple NKG Controllers +### Running Multiple NGF Controllers -Users can run multiple NKG controllers in the same cluster by leveraging the `GatewayClass` resource. Multiple NKG +Users can run multiple NGF controllers in the same cluster by leveraging the `GatewayClass` resource. Multiple NGF controllers will be able to coexist in the same cluster as long as they each have a unique corresponding `GatewayClass` -resource. In this case, each installation of NKG will contain a unique `GatewayClass` resource, a control plane +resource. In this case, each installation of NGF will contain a unique `GatewayClass` resource, a control plane Deployment, and a data plane Deployment/DaemonSet. ### Communication Channels @@ -388,7 +388,7 @@ message NginxConfig { comparing configuration against previous deployments) and to interrogate the file system before applying the configuration. -I found that for NKG’s use case, the `access_logs,` `error_logs,` and `ssl` fields are unnecessary. For more details on +I found that for NGF’s use case, the `access_logs,` `error_logs,` and `ssl` fields are unnecessary. For more details on how the control plane pushes nginx config to the agent, see the [Configuration Download](#configuration-download) section. @@ -408,7 +408,7 @@ following names: The Secrets will be mounted to the control plane and agent containers, respectively. If desired, we can make the Secret names and mount path configurable via flags. For production, we will direct the user to provide their own certificates. For development and testing purposes, we will provide a self-signed default certificate. In order to be secure by -default, NKG should generate the default certificates and keypair during installation using a Kubernetes Job. +default, NGF should generate the default certificates and keypair during installation using a Kubernetes Job. #### Certificate Rotation @@ -535,7 +535,7 @@ the enabled features, extensions, tags, log configuration, and alias for the age #### Building the NginxConfig message -Currently, NKG configures nginx by translating the Gateway API resources into +Currently, NGF configures nginx by translating the Gateway API resources into an [internal representation of the nginx config][internal-config], executing a template with this data to generate the nginx configuration as bytes, and then writing the bytes to the filesystem. @@ -573,7 +573,7 @@ The TLS certificates and keys specified in the [`GatewayTLSConfig`][gw-tls-confi to Kubernetes Secrets. In the future, we will support other forms of authentication data, such as JWT tokens and user/pass files. Users will also store this secret data in Kubernetes Secrets. -Currently, NKG watches all Secrets, stores them in memory, and then selectively writes them to the filesystem. We only +Currently, NGF watches all Secrets, stores them in memory, and then selectively writes them to the filesystem. We only write Secrets that are referenced by `Listeners` to the filesystem. As part of the separation work, we need to figure out a way for the data plane to have access to these TLS certificates and keys. @@ -664,7 +664,7 @@ command and then download the config chunks over the `DownloadChannel .`It will configuration and attempt to apply it. It will send the status of the configuration application over the `CommandChannel` in a `NginxConfigResponse` message. -[internal-config]: https://github.com/nginxinc/nginx-kubernetes-gateway/blob/main/internal/nginx/config/http/config.go +[internal-config]: https://github.com/nginxinc/nginx-gateway-fabric/blob/main/internal/nginx/config/http/config.go [zip-file]: https://github.com/nginx/agent/blob/ea3a1b4df5d7ecf95bd3d9297d26e420f5e1dd57/sdk/proto/common.pb.go#L668 @@ -729,7 +729,7 @@ Since the data plane is deployed in its own Pod, a user can horizontally scale t control plane. When a new agent Pod spins up, the agent will register itself with the control plane. The control plane will have to keep track of all the agents. -We will need to figure out how many agent instances can be supported by NKG’s control plane. As an example data point, +We will need to figure out how many agent instances can be supported by NGF’s control plane. As an example data point, NGINX Controller can monitor and manage up to 100 N+ instances or up to 30 N+ instances with App Protect enabled. Since our use case for the agent is much simpler than NGINX Controller, we may be able to support more instances of the agent. @@ -776,8 +776,8 @@ ok command-line-arguments 17.727s ### Performance goals -- NKG can handle frequent configuration changes (1 change per second) -- NKG can handle large configurations: +- NGF can handle frequent configuration changes (1 change per second) +- NGF can handle large configurations: - 5000 server blocks - 64 TLS certs/keys - 50 JWT keys @@ -785,6 +785,6 @@ ok command-line-arguments 17.727s - 50 CA certs - 50 basic auth files - 50 OIDC secrets -- NKG can scale to X number of data plane pods (we need to figure out what X is) +- NGF can scale to X number of data plane pods (we need to figure out what X is) [performance]: https://github.com/nginx/agent/blob/main/test/performance/user_workflow_test.go diff --git a/design/resource-validation.md b/design/resource-validation.md index ccbe654e26..c78adde7ef 100644 --- a/design/resource-validation.md +++ b/design/resource-validation.md @@ -1,25 +1,25 @@ # Resource Validation -NGINX Kubernetes Gateway (NKG) must validate Gateway API resources for reliability, security, and conformity with the +NGINX Gateway Fabric (NGF) must validate Gateway API resources for reliability, security, and conformity with the Gateway API specification. ## Background ### Why Validate? -NKG transforms the Gateway API resources into NGINX configuration. Before transforming a resource, NKG needs to ensure +NGF transforms the Gateway API resources into NGINX configuration. Before transforming a resource, NGF needs to ensure its validity, which is important for the following reasons: 1. *To prevent an invalid value from propagating into NGINX configuration*. For example, the URI in a path-based routing rule. The propagating has the following consequences: 1. Invalid input will make NGINX fail to reload. Moreover, until the corresponding invalid config is removed from - NGINX configuration, NKG will not be able to reload NGINX for any future configuration changes. This affects the - reliability of NKG. - 2. Malicious input can breach the security of NKG. For example, if a malicious user can insert raw NGINX config ( + NGINX configuration, NGF will not be able to reload NGINX for any future configuration changes. This affects the + reliability of NGF. + 2. Malicious input can breach the security of NGF. For example, if a malicious user can insert raw NGINX config ( something similar to an SQL injection), they can configure NGINX to serve the files on the container filesystem. - This affects the security of NKG. + This affects the security of NGF. 2. *To conform to the Gateway API spec*. For example, if an HTTPRoute configures an unsupported filter, an - implementation like NKG needs to "set Accepted Condition for the Route to `status: False`, with a Reason + implementation like NGF needs to "set Accepted Condition for the Route to `status: False`, with a Reason of `UnsupportedValue`". ### Validation by the Gateway API Project @@ -34,14 +34,14 @@ To help the implementations with the validation, the Gateway API already include Gateway API installation files. The validation covers additional logic, not possible to implement in the CRDs. It does not repeat the validation from the CRDs. Note: a user can bypass this validation if the webhook is not installed. -However, the built-in validation rules do not cover all validation needs of NKG: +However, the built-in validation rules do not cover all validation needs of NGF: - The rules are not enough for NGINX. For example, the validation rule for the `value` of the path in a path-based routing rule allows symbols like `;`, `{` and `}`, which can break NGINX configuration for the corresponding [location](https://nginx.org/en/docs/http/ngx_http_core_module.html#location) block. - The rules don't cover unsupported field cases. For example, the webhook does not know which filters are implemented by - NKG, thus it cannot generate an appropriate error for NKG. + NGF, thus it cannot generate an appropriate error for NGF. Additionally, as mentioned in [GEP-922](https://gateway-api.sigs.k8s.io/geps/gep-922/#implementers), "implementers must not rely on webhook or CRD validation as a security mechanism. If field values need to be escaped to @@ -53,20 +53,20 @@ Design a validation mechanism for Gateway API resources. ### Personas -- *Cluster admin* who installs Gateway API (the CRDs and Webhook), installs NKG, creates Gateway and GatewayClass +- *Cluster admin* who installs Gateway API (the CRDs and Webhook), installs NGF, creates Gateway and GatewayClass resources. - *Application developer* who creates HTTPRoutes and other routes. ### User Stories -1. As a cluster admin, I'd like to share NKG among multiple application developers, specifically in a way that invalid +1. As a cluster admin, I'd like to share NGF among multiple application developers, specifically in a way that invalid resources of one developer do not affect on the resources of the other developers. -2. As a cluster admin/application developer, I expect that NKG rejects any invalid resources I create and I am able to +2. As a cluster admin/application developer, I expect that NGF rejects any invalid resources I create and I am able to see the reasons (errors) for that. ### Goals -- Ensure that NKG continues to work and/or fails predictably in the face of invalid input. +- Ensure that NGF continues to work and/or fails predictably in the face of invalid input. - Ensure that both cluster admin and application developers can see the validation errors reported about the resource they create (own). - For the best UX, minimize the feedback loop: users should be able to see most of the validation errors reported by a @@ -80,14 +80,14 @@ Design a validation mechanism for Gateway API resources. ## Design -We will introduce two validation methods to be run by NKG control plane: +We will introduce two validation methods to be run by NGF control plane: 1. Re-run of the Gateway API webhook validation -2. NKG-specific field validation +2. NGF-specific field validation ### Re-run of Webhook Validation -Before processing a resource, NKG will validate it using the functions from +Before processing a resource, NGF will validate it using the functions from the [validation package](https://github.com/kubernetes-sigs/gateway-api/tree/b241afc88e68c952cc0a59a5c72a51358dc2bada/apis/v1beta1/validation) from the Gateway API. This will ensure that the webhook validation cannot be bypassed (it can be bypassed if the webhook is not installed, misconfigured, or running a different version), and it will allow us to avoid repeating the same @@ -95,91 +95,91 @@ validation in our code. If a resource is invalid: -- NKG will not process it -- it will treat it as if the resource didn't exist. This also means that if the resource was - updated from a valid to an invalid state, NKG will also ignore any previous valid state. For example, it will remove +- NGF will not process it -- it will treat it as if the resource didn't exist. This also means that if the resource was + updated from a valid to an invalid state, NGF will also ignore any previous valid state. For example, it will remove the generation configuration for an HTTPRoute resource. -- NKG will report the validation error as a +- NGF will report the validation error as a Warning [Event](https://kubernetes.io/docs/reference/kubernetes-api/cluster-resources/event-v1/) for that resource. The Event message will describe the error and explain that the resource was ignored. We chose to - report an Event instead of updating the status, because to update the status, NKG first needs to look inside the + report an Event instead of updating the status, because to update the status, NGF first needs to look inside the resource to determine whether it belongs to it or not. However, since the webhook validation applies to all parts of - the spec of resource, it means NKG has to look inside the invalid resource and parse potentially invalid parts. To - avoid that, NKG will report an Event. The owner of the resource will be able to see the Event. -- NGK will also report the validation error in the NGK logs. + the spec of resource, it means NGF has to look inside the invalid resource and parse potentially invalid parts. To + avoid that, NGF will report an Event. The owner of the resource will be able to see the Event. +- NGF will also report the validation error in the NGF logs. -### NKG-specific validation +### NGF-specific validation -After re-running the webhook validation, NKG will run NKG-specific validation, written in go. +After re-running the webhook validation, NGF will run NGF-specific validation, written in go. -NKG-specific validation will: +NGF-specific validation will: 1. Ensure field values are considered valid by NGINX (cannot make NGINX fail to reload). 2. Ensure valid field values do not include any malicious configuration. 3. Report an error if an unsupported field is present in a resource (as the Gateway API spec prescribes). -NKG-specific validation will not include: +NGF-specific validation will not include: -- *All* validation done by CRDs. NKG will only repeat the validation that addresses (1) and (2) in the list above with - extra rules required by NGINX but missing in the CRDs. For example, NKG will not ensure the limits of field values. +- *All* validation done by CRDs. NGF will only repeat the validation that addresses (1) and (2) in the list above with + extra rules required by NGINX but missing in the CRDs. For example, NGF will not ensure the limits of field values. - The validation done by the webhook (because it is done in the previous step). -If a resource is invalid, NKG will report the error in its status. +If a resource is invalid, NGF will report the error in its status. ### Summary of Validation -The table below summarizes the validation methods NKG will use. Any Gateway API resource will be validated by the +The table below summarizes the validation methods NGF will use. Any Gateway API resource will be validated by the following methods in order of their appearance in the table. | Name | Type | Component | Scope | Feedback loop for errors | Can be bypassed? | |------------------------------|---------|-----------------------|-------------------------|----------------------------------------------------------------------------------|--------------------------------------------------------------------------------------| | CRD validation | OpenAPI | Kubernetes API server | Structure, field values | Kubernetes API server returns any errors a response for an API call. | Yes, if the CRDs are modified. | | Webhook validation | Go code | Gateway API webhook | Field values | Kubernetes API server returns any errors a response for an API call. | Yes, if the webhook is not installed, misconfigured, or running a different version. | -| Re-run of webhook validation | Go code | NKG control plane | Field values | Errors are reported as Event for the resource. | No | -| NGK-specific validation | Go code | NKG control plane | Field values | Errors are reported in the status of a resource after its creation/modification. | No | +| Re-run of webhook validation | Go code | NGF control plane | Field values | Errors are reported as Event for the resource. | No | +| NGF-specific validation | Go code | NGF control plane | Field values | Errors are reported in the status of a resource after its creation/modification. | No | Notes: -- The amount and the extent of the validation should allow multiple application developers to share a single NKG (User +- The amount and the extent of the validation should allow multiple application developers to share a single NGF (User story 1). - We expect that most of the validation problems will be caught by CRD and webhook validation and reported quickly to users as a response to a Kubernetes API call (User story 2). ### Evolution -NKG will support more resources: +NGF will support more resources: -- More Gateway API resources. For those, NGK will use the four validation methods from the table in the previous +- More Gateway API resources. For those, NGF will use the four validation methods from the table in the previous section. -- Introduce NKG resources. For those, NKG will use CRD validation (the rules of which are fully controlled by us). The +- Introduce NGF resources. For those, NGF will use CRD validation (the rules of which are fully controlled by us). The CRD validation will include the validation to prevent invalid NGINX configuration values and malicious values. Because - the CRD validation can be bypassed, NKG control plane will need to run the same validation rules. In addition to that, - NKG control plane will run any extra validation not possible to define via CRDs. + the CRD validation can be bypassed, NGF control plane will need to run the same validation rules. In addition to that, + NGF control plane will run any extra validation not possible to define via CRDs. -We will not introduce any NKG webhook in the cluster (it adds operational complexity for the cluster admin and is a +We will not introduce any NGF webhook in the cluster (it adds operational complexity for the cluster admin and is a source of potential downtime -- a webhook failure disables CRUD operations on the relevant resources) unless we find good reasons for that. ### Upgrades -Since NKG will use the validation package from the Gateway API project, when a new release happens, we will need to -upgrade the dependency and release a new version of NKG, provided that the validation code changed. However, if it did +Since NGF will use the validation package from the Gateway API project, when a new release happens, we will need to +upgrade the dependency and release a new version of NGF, provided that the validation code changed. However, if it did not change, we do not need to release a new version. Note: other things from a new Gateway API release might prompt us to release a new version like supporting a new field. See also [GEP-922](https://gateway-api.sigs.k8s.io/geps/gep-922/#). ### Reliability -NGK processes two kinds of transactions: +NGF processes two kinds of transactions: - *Data plane transactions*. NGINX handles requests from clients that want to connect to applications exposed through - NKG. -- *Control plane transactions*. NKG handles configuration requests (ex. a new HTTPRoute is created) from NKG users. + NGF. +- *Control plane transactions*. NGF handles configuration requests (ex. a new HTTPRoute is created) from NGF users. Invalid user input makes NGINX config invalid, which means NGINX will fail to reload, which will prevent any new control plane transactions until that invalid value is fixed or removed. The proposed design addresses this issue by preventing -NKG from generating invalid NGINX configuration. +NGF from generating invalid NGINX configuration. -However, in case of bugs in the NKG validation code, NKG might still generate an invalid NGINX config. When that +However, in case of bugs in the NGF validation code, NGF might still generate an invalid NGINX config. When that happens, NGINX will fail to reload, but it will continue to use the last known valid config, so that the data plane transactions will not be stopped. This situation must be reported to both the cluster admin and the app developers. However, this is out of the scope of this design doc. @@ -188,14 +188,14 @@ However, this is out of the scope of this design doc. The proposed design ensures that the configuration values are properly validated before reaching NGINX config, which will prevent a malicious user from misusing them. For example, it will not be possible to inject NGINX configuration -which can turn it into a web server serving the contents of the NKG data plane container file system. +which can turn it into a web server serving the contents of the NGF data plane container file system. ## Alternatives Considered ### Utilize CRD Validation It is [possible](https://github.com/hasheddan/k8s-cr-validator) to run CRD validation from Go code. However, this will -require NKG to be shipped with the Gateway API CRDs, which will increase the coupling between NKG and the Gateway API +require NGF to be shipped with the Gateway API CRDs, which will increase the coupling between NGF and the Gateway API version. Additionally, the extra benefits are not clear: the validation proposed in this design document should adequately @@ -205,14 +205,14 @@ developer -- they need to be a cluster admin to update the CRDs in the cluster. At the same time, if a [convenient validation package](https://github.com/kubernetes-sigs/gateway-api/issues/926) that includes CRD validation is developed, we will revisit the design. -### Write NKG-specific Validation Rules in Validation Language +### Write NGF-specific Validation Rules in Validation Language -It is possible to define validation rules in an expression language like [CEL](https://github.com/google/cel-spec). NKG +It is possible to define validation rules in an expression language like [CEL](https://github.com/google/cel-spec). NGF can load those rules, compile and run them. Because (1) we need to define validation rules only to parts of Gateway API resources and (2) it is not necessary to load them on the fly, the approach will not provide any benefits over defining those rules in go. -At the same time, we might use CEL for validating future NGK CRDs (CEL +At the same time, we might use CEL for validating future NGF CRDs (CEL is [supported](https://kubernetes.io/docs/tasks/extend-kubernetes/custom-resources/custom-resource-definitions/#validation-rules) in CRDs). diff --git a/docs/README.md b/docs/README.md index f1903ffaaf..d93ff1c5a6 100644 --- a/docs/README.md +++ b/docs/README.md @@ -1,27 +1,27 @@ -# NGINX Kubernetes Gateway Documentation +# NGINX Gateway Fabric Documentation -This directory contains all of the documentation relating to NGINX Kubernetes Gateway. +This directory contains all of the documentation relating to NGINX Gateway Fabric. ## Contents -- [Architecture](architecture.md): An overview of the architecture and design principles of NGINX Kubernetes Gateway. -- [Gateway API Compatibility](gateway-api-compatibility.md): Describes which Gateway API resources NGINX Kubernetes -Gateway supports and the extent of that support. -- [Installation](installation.md): Walkthrough on how to install NGINX Kubernetes Gateway on a generic Kubernetes cluster. -- [Resource Validation](resource-validation.md): Describes how NGINX Kubernetes Gateway validates Gateway API +- [Architecture](architecture.md): An overview of the architecture and design principles of NGINX Gateway Fabric. +- [Gateway API Compatibility](gateway-api-compatibility.md): Describes which Gateway API resources NGINX Gateway +Fabric supports and the extent of that support. +- [Installation](installation.md): Walkthrough on how to install NGINX Gateway Fabric on a generic Kubernetes cluster. +- [Resource Validation](resource-validation.md): Describes how NGINX Gateway Fabric validates Gateway API resources. - [Control Plane Configuration](control-plane-configuration.md): Describes how to dynamically update the NGINX -Kubernetes Gateway control plane configuration. -- [Building the Images](building-the-images.md): Steps on how to build the NGINX Kubernetes Gateway container images +Gateway Fabric control plane configuration. +- [Building the Images](building-the-images.md): Steps on how to build the NGINX Gateway Fabric container images yourself. -- [Running on Kind](running-on-kind.md): Walkthrough on how to run NGINX Kubernetes Gateway on a `kind` cluster. -- [CLI Help](cli-help.md): Describes the commands available in the `gateway` binary of `nginx-kubernetes-gateway` +- [Running on Kind](running-on-kind.md): Walkthrough on how to run NGINX Gateway Fabric on a `kind` cluster. +- [CLI Help](cli-help.md): Describes the commands available in the `gateway` binary of `nginx-gateway-fabric` container. -- [Monitoring](monitoring.md): Information on monitoring NGINX Kubernetes Gateway using Prometheus metrics. +- [Monitoring](monitoring.md): Information on monitoring NGINX Gateway Fabric using Prometheus metrics. - [Troubleshooting](troubleshooting.md): Troubleshooting guide for common or known issues. ### Directories -- [Guides](guides): Guides about configuring NGINX Kubernetes Gateway for various use cases. +- [Guides](guides): Guides about configuring NGINX Gateway Fabric for various use cases. - [Developer](developer/): Docs for developers of the project. Contains guides relating to processes and workflows. - [Proposals](proposals/): Enhancement proposals for new features. diff --git a/docs/architecture.md b/docs/architecture.md index 007d605e87..86f1f2177e 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -1,6 +1,6 @@ # Architecture -This document provides an overview of the architecture and design principles of the NGINX Kubernetes Gateway. The target +This document provides an overview of the architecture and design principles of the NGINX Gateway Fabric. The target audience includes the following groups: - *Cluster Operators* who would like to know how the software works and also better understand how it can fail. @@ -9,29 +9,29 @@ audience includes the following groups: We assume that the reader is familiar with core Kubernetes concepts, such as Pods, Deployments, Services, and Endpoints. Additionally, we recommend reading [this blog post][blog] for an overview of the NGINX architecture. -[contribute]: https://github.com/nginxinc/nginx-kubernetes-gateway/blob/main/CONTRIBUTING.md +[contribute]: https://github.com/nginxinc/nginx-gateway-fabric/blob/main/CONTRIBUTING.md [blog]: https://www.nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale/ -## What is NGINX Kubernetes Gateway? +## What is NGINX Gateway Fabric? -The NGINX Kubernetes Gateway is a component in a Kubernetes cluster that configures an HTTP load balancer according to +The NGINX Gateway Fabric is a component in a Kubernetes cluster that configures an HTTP load balancer according to Gateway API resources created by Cluster Operators and Application Developers. > If you’d like to read more about the Gateway API, refer to [Gateway API documentation][sig-gateway]. -This document focuses specifically on the NGINX Kubernetes Gateway, also known as NKG, which uses NGINX as its data +This document focuses specifically on the NGINX Gateway Fabric, also known as NGF, which uses NGINX as its data plane. [sig-gateway]: https://gateway-api.sigs.k8s.io/ -## NGINX Kubernetes Gateway at a High Level +## NGINX Gateway Fabric at a High Level -To start, let's take a high-level look at the NGINX Kubernetes Gateway (NKG). The accompanying diagram illustrates an -example scenario where NKG exposes two web applications hosted within a Kubernetes cluster to external clients on the +To start, let's take a high-level look at the NGINX Gateway Fabric (NGF). The accompanying diagram illustrates an +example scenario where NGF exposes two web applications hosted within a Kubernetes cluster to external clients on the internet: -![NKG High Level](/docs/images/nkg-high-level.png) +![NGF High Level](/docs/images/ngf-high-level.png) The figure shows: @@ -40,9 +40,9 @@ The figure shows: cluster through the Kubernetes API by creating Kubernetes objects. - *Clients A* and *Clients B* connect to *Applications A* and *B*, respectively. This applications have been deployed by the corresponding users. -- The *NKG Pod*, [deployed by *Cluster Operator*](/docs/installation.md) in the Namespace *nginx-gateway*. For -scalability and availability, you can have multiple replicas. This Pod consists of two containers: `NGINX` and `NKG`. -The *NKG* container interacts with the Kubernetes API to retrieve the most up-to-date Gateway API resources created +- The *NGF Pod*, [deployed by *Cluster Operator*](/docs/installation.md) in the Namespace *nginx-gateway*. For +scalability and availability, you can have multiple replicas. This Pod consists of two containers: `NGINX` and `NGF`. +The *NGF* container interacts with the Kubernetes API to retrieve the most up-to-date Gateway API resources created within the cluster. It then dynamically configures the *NGINX* container based on these resources, ensuring proper alignment between the cluster state and the NGINX configuration. - *Gateway AB*, created by *Cluster Operator*, requests a point where traffic can be translated to Services within the @@ -54,7 +54,7 @@ and attaches it to `Gateway AB`. - *Application B* with one Pod deployed in the *applications* Namespace by *Application Developer B*. To expose the application to its clients (*Clients B*) via the host `b.example.com`, *Application Developer B* creates *HTTPRoute B* and attaches it to `Gateway AB`. -- *Public Endpoint*, which fronts the *NKG* Pod. This is typically a TCP load balancer (cloud, software, or hardware) +- *Public Endpoint*, which fronts the *NGF* Pod. This is typically a TCP load balancer (cloud, software, or hardware) or a combination of such load balancer with a NodePort Service. *Clients A* and *B* connect to their applications via the *Public Endpoint*. @@ -66,11 +66,11 @@ all the green resources. > Note: For simplicity, many necessary Kubernetes resources like Deployment and Services aren't shown, > which the Cluster Operator and the Application Developers also need to create. -Next, let's explore the NKG Pod. +Next, let's explore the NGF Pod. -## The NGINX Kubernetes Gateway Pod +## The NGINX Gateway Fabric Pod -The NGINX Kubernetes Gateway consists of two containers: +The NGINX Gateway Fabric consists of two containers: 1. `nginx`: the data plane. Consists of an NGINX master process and NGINX worker processes. The master process controls the worker processes. The worker processes handle the client traffic and load balance the traffic to the backend @@ -84,35 +84,35 @@ the [controller-runtime][runtime] library. It watches Kubernetes objects (Servic CRDs), translates them to NGINX configuration, and configures NGINX. This configuration happens in two stages. First, NGINX configuration files are written to the NGINX configuration volume shared by the `nginx-gateway` and `nginx` containers. Next, the control plane reloads the NGINX process. This is possible because the two -containers [share a process namespace][share], which allows the NKG process to send signals to the NGINX master process. +containers [share a process namespace][share], which allows the NGF process to send signals to the NGINX master process. The diagram below provides a visual representation of the interactions between processes within the `nginx` and `nginx-gateway` containers, as well as external processes/entities. It showcases the connections and relationships between these components. -![NKG pod](/docs/images/nkg-pod.png) +![NGF pod](/docs/images/ngf-pod.png) The following list provides a description of each connection, along with its corresponding type indicated in parentheses. To enhance readability, the suffix "process" has been omitted from the process descriptions below. 1. (HTTPS) - - Read: *NKG* reads the *Kubernetes API* to get the latest versions of the resources in the cluster. - - Write: *NKG* writes to the *Kubernetes API* to update the handled resources' statuses and emit events. If there's - more than one replica of *NKG* and [leader election](/deploy/helm-chart/README.md#configuration) is enabled, only - the *NKG* Pod that is leading will write statuses to the *Kubernetes API*. -2. (HTTP, HTTPS) *Prometheus* fetches the `controller-runtime` and NGINX metrics via an HTTP endpoint that *NKG* exposes. - The default is :9113/metrics. Note: Prometheus is not required by NKG, the endpoint can be turned off. + - Read: *NGF* reads the *Kubernetes API* to get the latest versions of the resources in the cluster. + - Write: *NGF* writes to the *Kubernetes API* to update the handled resources' statuses and emit events. If there's + more than one replica of *NGF* and [leader election](/deploy/helm-chart/README.md#configuration) is enabled, only + the *NGF* Pod that is leading will write statuses to the *Kubernetes API*. +2. (HTTP, HTTPS) *Prometheus* fetches the `controller-runtime` and NGINX metrics via an HTTP endpoint that *NGF* exposes. + The default is :9113/metrics. Note: Prometheus is not required by NGF, the endpoint can be turned off. 3. (File I/O) - - Write: *NKG* generates NGINX *configuration* based on the cluster resources and writes them as `.conf` files to the + - Write: *NGF* generates NGINX *configuration* based on the cluster resources and writes them as `.conf` files to the mounted `nginx-conf` volume, located at `/etc/nginx/conf.d`. It also writes *TLS certificates* and *keys* from [TLS Secrets][secrets] referenced in the accepted Gateway resource to the `nginx-secrets` volume at the path `/etc/nginx/secrets`. - - Read: *NKG* reads the PID file `nginx.pid` from the `nginx-run` volume, located at `/var/run/nginx`. *NKG* + - Read: *NGF* reads the PID file `nginx.pid` from the `nginx-run` volume, located at `/var/run/nginx`. *NGF* extracts the PID of the nginx process from this file in order to send reload signals to *NGINX master*. -4. (File I/O) *NKG* writes logs to its *stdout* and *stderr*, which are collected by the container runtime. -5. (HTTP) *NKG* fetches the NGINX metrics via the unix:/var/run/nginx/nginx-status.sock UNIX socket and converts it to +4. (File I/O) *NGF* writes logs to its *stdout* and *stderr*, which are collected by the container runtime. +5. (HTTP) *NGF* fetches the NGINX metrics via the unix:/var/run/nginx/nginx-status.sock UNIX socket and converts it to *Prometheus* format used in #2. -6. (Signal) To reload NGINX, *NKG* sends the [reload signal][reload] to the **NGINX master**. +6. (Signal) To reload NGINX, *NGF* sends the [reload signal][reload] to the **NGINX master**. 7. (File I/O) - Write: The *NGINX master* writes its PID to the `nginx.pid` file stored in the `nginx-run` volume. - Read: The *NGINX master* reads *configuration files* and the *TLS cert and keys* referenced in the configuration when @@ -129,8 +129,8 @@ parentheses. To enhance readability, the suffix "process" has been omitted from 10. (File I/O) An *NGINX worker* writes logs to its *stdout* and *stderr*, which are collected by the container runtime. 11. (Signal) The *NGINX master* controls the [lifecycle of *NGINX workers*][lifecycle] it creates workers with the new configuration and shutdowns workers with the old configuration. -12. (HTTP) To consider a configuration reload a success, *NKG* ensures that at least one NGINX worker has the new - configuration. To do that, *NKG* checks a particular endpoint via the unix:/var/run/nginx/nginx-config-version.sock +12. (HTTP) To consider a configuration reload a success, *NGF* ensures that at least one NGINX worker has the new + configuration. To do that, *NGF* checks a particular endpoint via the unix:/var/run/nginx/nginx-config-version.sock UNIX socket. 13. (HTTP,HTTPS) A *client* sends traffic to and receives traffic from any of the *NGINX workers* on ports 80 and 443. 14. (HTTP,HTTPS) An *NGINX worker* sends traffic to and receives traffic from the *backends*. @@ -145,7 +145,7 @@ parentheses. To enhance readability, the suffix "process" has been omitted from [lifecycle]: https://nginx.org/en/docs/control.html#reconfiguration -[conf-file]: https://github.com/nginxinc/nginx-kubernetes-gateway/blob/main/internal/mode/static/nginx/conf/nginx.conf +[conf-file]: https://github.com/nginxinc/nginx-gateway-fabric/blob/main/internal/mode/static/nginx/conf/nginx.conf [share]: https://kubernetes.io/docs/tasks/configure-pod-container/share-process-namespace/ diff --git a/docs/building-the-images.md b/docs/building-the-images.md index 14ab698c3a..c43f471cb9 100644 --- a/docs/building-the-images.md +++ b/docs/building-the-images.md @@ -2,7 +2,7 @@ ## Prerequisites -Before you can build the NGINX Kubernetes Gateway and NGINX images, make sure you have the following software +Before you can build the NGINX Gateway Fabric and NGINX images, make sure you have the following software installed on your machine: - [git](https://git-scm.com/) @@ -12,40 +12,40 @@ installed on your machine: ## Steps -1. Clone the repo and change into the `nginx-kubernetes-gateway` directory: +1. Clone the repo and change into the `nginx-gateway-fabric` directory: ```shell - git clone https://github.com/nginxinc/nginx-kubernetes-gateway.git - cd nginx-kubernetes-gateway + git clone https://github.com/nginxinc/nginx-gateway-fabric.git + cd nginx-gateway-fabric ``` 1. Build the images: - - To build both the NGINX Kubernetes Gateway and NGINX images: + - To build both the NGINX Gateway Fabric and NGINX images: ```makefile - make PREFIX=myregistry.example.com/nginx-kubernetes-gateway build-images + make PREFIX=myregistry.example.com/nginx-gateway-fabric build-images ``` - - To build just the NGINX Kubernetes Gateway image: + - To build just the NGINX Gateway Fabric image: ```makefile - make PREFIX=myregistry.example.com/nginx-kubernetes-gateway build-nkg-image + make PREFIX=myregistry.example.com/nginx-gateway-fabric build-ngf-image ``` - To build just the NGINX image: ```makefile - make PREFIX=myregistry.example.com/nginx-kubernetes-gateway build-nginx-image + make PREFIX=myregistry.example.com/nginx-gateway-fabric build-nginx-image ``` Set the `PREFIX` variable to the name of the registry you'd like to push the image to. By default, the images will be - named `nginx-kubernetes-gateway:edge` and `nginx-kubernetes-gateway/nginx:edge`. + named `nginx-gateway-fabric:edge` and `nginx-gateway-fabric/nginx:edge`. 1. Push the images to your container registry: ```shell - docker push myregistry.example.com/nginx-kubernetes-gateway:edge - docker push myregistry.example.com/nginx-kubernetes-gateway/nginx:edge + docker push myregistry.example.com/nginx-gateway-fabric:edge + docker push myregistry.example.com/nginx-gateway-fabric/nginx:edge ``` - Make sure to substitute `myregistry.example.com/nginx-kubernetes-gateway` with your registry. + Make sure to substitute `myregistry.example.com/nginx-gateway-fabric` with your registry. diff --git a/docs/cli-help.md b/docs/cli-help.md index 0bb4985388..48869c44c0 100644 --- a/docs/cli-help.md +++ b/docs/cli-help.md @@ -1,6 +1,6 @@ # Command-line Help -This document describes the commands available in the `gateway` binary of `nginx-kubernetes-gateway` container. +This document describes the commands available in the `gateway` binary of the `nginx-gateway` container. ## Static Mode @@ -17,7 +17,7 @@ Flags: | Name | Type | Description | |------------------------------|----------|---------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| | `gateway-ctlr-name` | `string` | The name of the Gateway controller. The controller name must be of the form: `DOMAIN/PATH`. The controller's domain is `gateway.nginx.org`. | -| `gatewayclass` | `string` | The name of the GatewayClass resource. Every NGINX Gateway must have a unique corresponding GatewayClass resource. | +| `gatewayclass` | `string` | The name of the GatewayClass resource. Every NGINX Gateway Fabric must have a unique corresponding GatewayClass resource. | | `gateway` | `string` | The namespaced name of the Gateway resource to use. Must be of the form: `NAMESPACE/NAME`. If not specified, the control plane will process all Gateways for the configured GatewayClass. However, among them, it will choose the oldest resource by creation timestamp. If the timestamps are equal, it will choose the resource that appears first in alphabetical order by {namespace}/{name}. | | `config` | `string` | The name of the NginxGateway resource to be used for this controller's dynamic configuration. Lives in the same Namespace as the controller. | | `metrics-disable` | `bool` | Disable exposing metrics in the Prometheus format. (default false) | @@ -26,5 +26,5 @@ Flags: | `update-gatewayclass-status` | `bool` | Update the status of the GatewayClass resource. (default true) | | `health-disable` | `bool` | Disable running the health probe server. (default false) | | `health-port` | `int` | Set the port where the health probe server is exposed. Format: `[1024 - 65535]` (default `8081`) | -| `leader-election-disable` | `bool` | Disable leader election. Leader election is used to avoid multiple replicas of the NGINX Kubernetes Gateway reporting the status of the Gateway API resources. If disabled, all replicas of NGINX Kubernetes Gateway will update the statuses of the Gateway API resources. (default false) | +| `leader-election-disable` | `bool` | Disable leader election. Leader election is used to avoid multiple replicas of the NGINX Gateway Fabric reporting the status of the Gateway API resources. If disabled, all replicas of NGINX Gateway Fabric will update the statuses of the Gateway API resources. (default false) | | `leader-election-lock-name` | `string` | The name of the leader election lock. A Lease object with this name will be created in the same Namespace as the controller. (default "nginx-gateway-leader-election-lock") | diff --git a/docs/control-plane-configuration.md b/docs/control-plane-configuration.md index 901160518d..2d2a13d033 100644 --- a/docs/control-plane-configuration.md +++ b/docs/control-plane-configuration.md @@ -1,12 +1,12 @@ # Control Plane Configuration -This document describes how to dynamically update the NGINX Kubernetes Gateway control plane configuration. +This document describes how to dynamically update the NGINX Gateway Fabric control plane configuration. ## Overview -NGINX Kubernetes Gateway offers a way to update the control plane configuration dynamically without the need for a +NGINX Gateway Fabric offers a way to update the control plane configuration dynamically without the need for a restart. The control plane configuration is stored in the NginxGateway custom resource. This resource is created -during the installation of NGINX Kubernetes Gateway. +during the installation of NGINX Gateway Fabric. If using manifests, the default name of the resource is `nginx-gateway-config`. If using Helm, the default name of the resource is `-config`. It is deployed in the same Namespace as the controller @@ -14,7 +14,7 @@ of the resource is `-config`. It is deployed in the same Namespace The control plane only watches this single instance of the custom resource. If the resource is invalid per the OpenAPI schema, the Kubernetes API server will reject the changes. If the resource is deleted or deemed invalid by NGINX -Kubernetes Gateway, a warning Event is created in the `nginx-gateway` Namespace, and the default values will be used by +Gateway Fabric, a warning Event is created in the `nginx-gateway` Namespace, and the default values will be used by the control plane for its configuration. Additionally, the control plane updates the status of the resource (if it exists) to reflect whether it is valid or not. diff --git a/docs/developer/branching-and-workflow.md b/docs/developer/branching-and-workflow.md index a86c8c9366..50c1f82695 100644 --- a/docs/developer/branching-and-workflow.md +++ b/docs/developer/branching-and-workflow.md @@ -1,19 +1,19 @@ # Branching and Workflow -NKG is an open source and public repository; our goal is to keep the number of branches in the repository to a minimum: +NGF is an open source and public repository; our goal is to keep the number of branches in the repository to a minimum: the main branch, release branches and long-term feature branches. Internal developers and external contributors will follow a fork and merge process. Each contributor should fork the -repo to their own space; branch, experiment, develop and prepare a pull request (PR) to merge their work into NKG’s main +repo to their own space; branch, experiment, develop and prepare a pull request (PR) to merge their work into NGF’s main branch. This way ephemeral developer branches will remain outside the main repository. Below is an example of following the merge and fork process. Developer Alice: -- Forks `github.com/nginxinc/nginx-kubernetes-gateway` → `github.com//nginx-kubernetes-gateway` +- Forks `github.com/nginxinc/nginx-gateway-fabric` → `github.com//nginx-gateway-fabric` - Adds upstream: ```shell - git remote add upstream git@github.com:nginxinc/nginx-kubernetes-gateway.git + git remote add upstream git@github.com:nginxinc/nginx-gateway-fabric.git ``` - Alice lists all of her configured remotes: @@ -25,15 +25,15 @@ Below is an example of following the merge and fork process. Developer Alice: Which shows the following: ```text - origin git@github.com:/nginx-kubernetes-gateway.git (fetch) - origin git@github.com:/nginx-kubernetes-gateway.git (push) - upstream git@github.com:nginxinc/nginx-kubernetes-gateway.git (fetch) - upstream git@github.com:nginxinc/nginx-kubernetes-gateway.git (push) + origin git@github.com:/nginx-gateway-fabric.git (fetch) + origin git@github.com:/nginx-gateway-fabric.git (push) + upstream git@github.com:nginxinc/nginx-gateway-fabric.git (fetch) + upstream git@github.com:nginxinc/nginx-gateway-fabric.git (push) ``` - Alice develops a feature or bugfix - using as many ephemeral branches as she needs. - Alice creates a - PR `github.com//nginx-kubernetes-gateway:feature/some-feature` → `github.com/nginxinc/nginx-kubernetes-gateway:main` + PR `github.com//nginx-gateway-fabric:feature/some-feature` → `github.com/nginxinc/nginx-gateway-fabric:main` - Alice keeps her fork up to date by running: ```shell diff --git a/docs/developer/design-principles.md b/docs/developer/design-principles.md index 3ab17b7ccf..c770e214ec 100644 --- a/docs/developer/design-principles.md +++ b/docs/developer/design-principles.md @@ -1,6 +1,6 @@ # Design Principles -The aim of the NGINX Kubernetes Gateway is to become a fundamental infrastructure component within a Kubernetes cluster, +The aim of the NGINX Gateway Fabric is to become a fundamental infrastructure component within a Kubernetes cluster, serving as both an ingress and egress point for traffic directed towards the services (applications) running within or outside the cluster. Leveraging NGINX as a data plane technology, it harnesses the well-established reputation of NGINX as an open-source project widely recognized for its role as a web server, proxy, load balancer, and content cache. NGINX @@ -8,8 +8,8 @@ is renowned for its stability, high performance, security, and rich feature set, infrastructure tool. Notably, once properly configured and operational, NGINX requires minimal attention, making it reliable and steady software. -The NGINX Kubernetes Gateway aims to embody the same qualities as NGINX and become familiar, trustworthy and reliable -software. The principles outlined below serve as a guide for engineering the NGINX Kubernetes Gateway with the intention +The NGINX Gateway Fabric aims to embody the same qualities as NGINX and become familiar, trustworthy and reliable +software. The principles outlined below serve as a guide for engineering the NGINX Gateway Fabric with the intention of achieving this goal. ## Security @@ -22,7 +22,7 @@ authentication, authorization, and encryption mechanisms. ## Availability As a critical infrastructure component, we must be highly available. We design and review features with redundancy and -fault tolerance in mind. We regularly test the NGINX Kubernetes Gateway's availability by simulating failure scenarios +fault tolerance in mind. We regularly test the NGINX Gateway Fabric's availability by simulating failure scenarios and conducting load testing. We work to identify potential weaknesses and bottlenecks, and address them to ensure high availability under various conditions. @@ -43,10 +43,10 @@ policies. We provide comprehensive logging, metrics, and tracing capabilities to gain insights into our behavior and performance. We prioritize Kubernetes-native observability tools like Prometheus, Grafana, and distributed tracing systems to help -users monitor the health of NGINX Kubernetes Gateway and to assist in diagnosing issues. +users monitor the health of NGINX Gateway Fabric and to assist in diagnosing issues. ## Ease of Use -NGINX Kubernetes Gateway must be easy and intuitive to use. This means that it should be easy to install, easy to +NGINX Gateway Fabric must be easy and intuitive to use. This means that it should be easy to install, easy to configure, and easy to monitor. Its defaults should be sane and should lead to "out-of-box" success. The documentation should be clear and provide meaningful examples that customer's can use to inform their deployments and configurations. diff --git a/docs/developer/go-style-guide.md b/docs/developer/go-style-guide.md index 4be183e443..57955c205c 100644 --- a/docs/developer/go-style-guide.md +++ b/docs/developer/go-style-guide.md @@ -359,7 +359,7 @@ func main() { Panics should be used in the following cases: -1. Unrecoverable errors. An unrecoverable error is when NKG cannot continue running or its behavior or internal state +1. Unrecoverable errors. An unrecoverable error is when NGF cannot continue running or its behavior or internal state cannot be guaranteed. One example of this is if an error occurs when adding the Kubernetes API types to the Scheme, or if an error occurs when marking a CLI flag as required. 2. Programming errors. A programming error is an error that is only possible if there was a programming mistake. For diff --git a/docs/developer/implementing-a-feature.md b/docs/developer/implementing-a-feature.md index fad70cabee..262a93ef7c 100644 --- a/docs/developer/implementing-a-feature.md +++ b/docs/developer/implementing-a-feature.md @@ -14,7 +14,7 @@ practices to ensure a successful feature development process. visibility. If any discussions regarding the issue occur outside the issue thread, provide a summary of the conversation as a comment on the issue itself. This ensures that all relevant information and discussions are consolidated in one place for easy reference. -3. **Fork the repo**: NKG follows a fork workflow, which you can learn more about in +3. **Fork the repo**: NGF follows a fork workflow, which you can learn more about in the [branching and workflow](/docs/developer/branching-and-workflow.md) documentation. 4. **Branch**: Create a branch following the [naming conventions](/docs/developer/branching-and-workflow.md#branch-naming-conventions). @@ -38,13 +38,13 @@ practices to ensure a successful feature development process. - **New Use Case:** If your feature introduces a new use case, add an example of how to use it in the [examples](/examples) directory. This example will help users understand how to leverage the new feature. > For security, a Docker image used in an example must be either managed by F5/NGINX or be an [official image](https://docs.docker.com/docker-hub/official_images/). - - **Installation Changes**: If your feature involves changes to the installation process of NKG, update + - **Installation Changes**: If your feature involves changes to the installation process of NGF, update the [installation](/docs/installation.md) documentation. - - **Helm Changes**: If your feature introduces or changes any values of the NKG Helm Chart, update the + - **Helm Changes**: If your feature introduces or changes any values of the NGF Helm Chart, update the [Helm README](/deploy/helm-chart/README.md). - **Command-line Changes**: If your feature introduces or changes a command-line flag or subcommand, update the [cli help](/docs/cli-help.md) documentation. - - **Other Documentation Updates**: For any other changes that affect the behavior, usage, or configuration of NKG, + - **Other Documentation Updates**: For any other changes that affect the behavior, usage, or configuration of NGF, review the existing documentation and update it as necessary. Ensure that the documentation remains accurate and up to date with the latest changes. 11. **Lint code**: See the [run the linter](/docs/developer/quickstart.md#run-the-linter) section of the quickstart @@ -53,8 +53,8 @@ practices to ensure a successful feature development process. [Update Generated Manifests](/docs/developer/quickstart.md#update-generated-manifests) sections of the quickstart guide for instructions. 13. **Open pull request**: Open a pull request targeting the `main` branch of - the [nginx-kubernetes-gateway](https://github.com/nginxinc/nginx-kubernetes-gateway/tree/main) repository. The - entire `nginx-kubernetes-gateway` group will be automatically requested for review. If you have a specific or + the [nginx-gateway-fabric](https://github.com/nginxinc/nginx-gateway-fabric/tree/main) repository. The + entire `nginx-gateway-fabric` group will be automatically requested for review. If you have a specific or different reviewer in mind, you can request them as well. Refer to the [pull request](/docs/developer/pull-request.md) documentation for expectations and guidelines. 14. **Obtain the necessary approvals**: Work with code reviewers to maintain the required number of approvals. diff --git a/docs/developer/logging-guidelines.md b/docs/developer/logging-guidelines.md index 10f3208e62..dfda385fdf 100644 --- a/docs/developer/logging-guidelines.md +++ b/docs/developer/logging-guidelines.md @@ -1,8 +1,8 @@ # Logging Guidelines -This document describes the logging guidelines for the control plane of NGINX Kubernetes Gateway (NKG). +This document describes the logging guidelines for the control plane of NGINX Gateway Fabric (NGF). -> The data plane logging is not covered here: such a concern is owned by NGINX developers, and NKG developers +> The data plane logging is not covered here: such a concern is owned by NGINX developers, and NGF developers > don't have control over it. ## Table of Contents @@ -50,11 +50,11 @@ understanding of what these guidelines intend to address: ### User Stories -There are two distinct personas of NKG: +There are two distinct personas of NGF: -- *User*, who uses NKG. For logging, the user persona maps to the cluster operator from +- *User*, who uses NGF. For logging, the user persona maps to the cluster operator from the [Gateway API personas](https://gateway-api.sigs.k8s.io/concepts/security-model/#roles-and-personas). -- *Developer*, who develops NKG. +- *Developer*, who develops NGF. Below are common user stories for both personas and also persona-specific stories. @@ -365,7 +365,7 @@ because the runtime adds context to that logger with the group, kind, namespace more key-value pairs. Note that the runtime creates that logger from the one we inject into it during the runtime initialization (see [External Libraries](#external-libraries)). Also note that logger is compatible with our logging guidelines. -[reconciler-logger]:https://github.com/nginxinc/nginx-kubernetes-gateway/blob/5547fe5472d1742a937c8adbbd399893ee30f9e1/internal/framework/controller/reconciler.go#L63 +[reconciler-logger]:https://github.com/nginxinc/nginx-gateway-fabric/blob/5547fe5472d1742a937c8adbbd399893ee30f9e1/internal/framework/controller/reconciler.go#L63 #### Unit Tests @@ -375,7 +375,7 @@ To initialize a logger, use `zap.New()` from [controller-runtime helpers][cr-zap ### External Libraries -There are two critical libraries for NKG that log: +There are two critical libraries for NGF that log: - [controller-runtime](https://github.com/kubernetes-sigs/controller-runtime). - The [log levels][cr-log-levels] are compatible with our project. @@ -389,17 +389,17 @@ There are two critical libraries for NKG that log: verbosity. However, errors are logged at the default verbosity like in [this line](https://github.com/kubernetes/client-go/blob/c5b1c13ccbedeb03c00ba162ef27566b0dfb512d/tools/record/event.go#L240). -[inject]:https://github.com/nginxinc/nginx-kubernetes-gateway/blob/9b3ae2c7c59f28213a7690e049d9996443dbd3fc/internal/mode/static/manager.go#L54 +[inject]:https://github.com/nginxinc/nginx-gateway-fabric/blob/9b3ae2c7c59f28213a7690e049d9996443dbd3fc/internal/mode/static/manager.go#L54 [cr-logging-guidelines]:https://github.com/kubernetes-sigs/controller-runtime/blob/b1d6919d3e12fa85a119dd9792bdfdc17bdf8c3b/TMP-LOGGING.md When adding a new library, evaluate if it does logging and how. If it is possible, configure the library logging to -be compatible with NKG logging. If not, document the logs in the user documentation for control plane logging, so that +be compatible with NGF logging. If not, document the logs in the user documentation for control plane logging, so that the users are prepared for them. ### Evolution -As NKG evolves, we might change the logging. For example: +As NGF evolves, we might change the logging. For example: - Change the meaning of levels. - Change the default key-value pairs and their representation. diff --git a/docs/developer/quickstart.md b/docs/developer/quickstart.md index 85e905a355..20d90f6a6a 100644 --- a/docs/developer/quickstart.md +++ b/docs/developer/quickstart.md @@ -1,6 +1,6 @@ # Development Quickstart -This guide will assist you in setting up your development environment for NGINX Kubernetes Gateway, covering the steps +This guide will assist you in setting up your development environment for NGINX Gateway Fabric, covering the steps to build, install, and execute tasks necessary for submitting pull requests. By following this guide, you'll have a fully prepared development environment that allows you to contribute to the project effectively. @@ -36,12 +36,12 @@ Follow these steps to set up your development environment. in the project root directory to install the git hooks. -2. [Fork the project repository](https://github.com/nginxinc/nginx-kubernetes-gateway/fork) +2. [Fork the project repository](https://github.com/nginxinc/nginx-gateway-fabric/fork) 3. Clone your repository, and install the project dependencies: ```shell - git clone https://github.com//nginx-kubernetes-gateway.git - cd nginx-kubernetes-gateway + git clone https://github.com//nginx-gateway-fabric.git + cd nginx-gateway-fabric ``` ```makefile @@ -62,13 +62,13 @@ This command will build the binary and output it to the `/build/.out` directory. ### Build the Images -To build the NGINX Kubernetes Gateway and NGINX container images from source run the following make command: +To build the NGINX Gateway Fabric and NGINX container images from source run the following make command: ```makefile make TAG=$(whoami) build-images ``` -This will build the docker images `nginx-kubernetes-gateway:` and `nginx-kubernetes-gateway/nginx:`. +This will build the docker images `nginx-gateway-fabric:` and `nginx-gateway-fabric/nginx:`. ## Deploy on Kind @@ -81,7 +81,7 @@ This will build the docker images `nginx-kubernetes-gateway:` and `ng 2. Load the previously built images onto your `kind` cluster: ```shell - kind load docker-image nginx-kubernetes-gateway:$(whoami) nginx-kubernetes-gateway/nginx:$(whoami) + kind load docker-image nginx-gateway-fabric:$(whoami) nginx-gateway-fabric/nginx:$(whoami) ``` 3. Install Gateway API Resources @@ -90,12 +90,12 @@ This will build the docker images `nginx-kubernetes-gateway:` and `ng kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v0.8.0/standard-install.yaml ``` -4. Install NKG using your custom image and expose NKG with a NodePort Service: +4. Install NGF using your custom image and expose NGF with a NodePort Service: - To install with Helm (where your release name is `my-release`): ```shell - helm install my-release ./deploy/helm-chart --create-namespace --wait --set service.type=NodePort --set nginxGateway.image.repository=nginx-kubernetes-gateway --set nginxGateway.image.tag=$(whoami) --set nginxGateway.image.pullPolicy=Never --set nginx.image.repository=nginx-kubernetes-gateway/nginx --set nginx.image.tag=$(whoami) --set nginx.image.pullPolicy=Never -n nginx-gateway + helm install my-release ./deploy/helm-chart --create-namespace --wait --set service.type=NodePort --set nginxGateway.image.repository=nginx-gateway-fabric --set nginxGateway.image.tag=$(whoami) --set nginxGateway.image.pullPolicy=Never --set nginx.image.repository=nginx-gateway-fabric/nginx --set nginx.image.tag=$(whoami) --set nginx.image.pullPolicy=Never -n nginx-gateway ``` > For more information on helm configuration options see the Helm [README](/deploy/helm-chart/README.md). @@ -103,7 +103,7 @@ This will build the docker images `nginx-kubernetes-gateway:` and `ng - To install with manifests: ```shell - make generate-manifests HELM_TEMPLATE_COMMON_ARGS="--set nginxGateway.image.repository=nginx-kubernetes-gateway --set nginxGateway.image.tag=$(whoami) --set nginxGateway.image.pullPolicy=Never --set nginx.image.repository=nginx-kubernetes-gateway/nginx --set nginx.image.tag=$(whoami) --set nginx.image.pullPolicy=Never" + make generate-manifests HELM_TEMPLATE_COMMON_ARGS="--set nginxGateway.image.repository=nginx-gateway-fabric --set nginxGateway.image.tag=$(whoami) --set nginxGateway.image.pullPolicy=Never --set nginx.image.repository=nginx-gateway-fabric/nginx --set nginx.image.tag=$(whoami) --set nginx.image.pullPolicy=Never" kubectl apply -f deploy/manifests/crds kubectl apply -f deploy/manifests/nginx-gateway.yaml kubectl apply -f deploy/manifests/service/nodeport.yaml @@ -111,7 +111,7 @@ This will build the docker images `nginx-kubernetes-gateway:` and `ng ### Run Examples -To make sure NKG is running properly, try out the [examples](/examples). +To make sure NGF is running properly, try out the [examples](/examples). ## Run the Unit Tests diff --git a/docs/developer/release-process.md b/docs/developer/release-process.md index 5aa411ede3..6d099eeb01 100644 --- a/docs/developer/release-process.md +++ b/docs/developer/release-process.md @@ -1,17 +1,17 @@ # Release Process -This document outlines the release process for NGINX Kubernetes Gateway (NKG). +This document outlines the release process for NGINX Gateway Fabric (NGF). ## Versioning -NKG uses semantic versioning for its releases. For more information, see https://semver.org. +NGF uses semantic versioning for its releases. For more information, see https://semver.org. > Major version zero `(0.Y.Z)` is reserved for development, anything MAY change at any time. The public API is not stable. ## Release Planning and Development The features that will go into the next release are reflected in the -corresponding [milestone](https://github.com/nginxinc/nginx-kubernetes-gateway/milestones). Refer to +corresponding [milestone](https://github.com/nginxinc/nginx-gateway-fabric/milestones). Refer to the [Issue Lifecycle](/ISSUE_LIFECYCLE.md) document for information on issue creation and assignment to releases. ## Releasing @@ -34,9 +34,9 @@ To create a new release, follow these steps: 6. Prepare and merge a PR into the release branch to update the repo files for the release: 1. Update the Helm [Chart.yaml](../deploy/helm-chart/Chart.yaml): the `appVersion` to `X.Y.Z`, the icon and source URLs to point at `vX.Y.Z`, and bump the `version`. - 2. Adjust the `VERSION` variable in the [Makefile](../Makefile) and the `NKG_TAG` in the + 2. Adjust the `VERSION` variable in the [Makefile](../Makefile) and the `NGF_TAG` in the [conformance tests Makefile](../conformance/Makefile) to `X.Y.Z`. - 3. Update the tag of NKG container images used in the Helm [values.yaml](../deploy/helm-chart/values.yaml) file, the + 3. Update the tag of NGF container images used in the Helm [values.yaml](../deploy/helm-chart/values.yaml) file, the [provisioner manifest](../conformance/provisioner/provisioner.yaml), and all docs to `X.Y.Z`. 4. Ensure that the `imagePullPolicy` is `IfNotPresent` in the Helm [values.yaml](../deploy/helm-chart/values.yaml) file. @@ -45,13 +45,13 @@ To create a new release, follow these steps: 7. Modify any docs links that refer to `main` to instead refer to `vX.Y.Z`. 8. Update the [README](../README.md) to include information about the release. 9. Update the [changelog](../CHANGELOG.md). The changelog includes only important (from the user perspective) - changes to NKG. This is in contrast with the autogenerated full changelog, which is created in the next step. As + changes to NGF. This is in contrast with the autogenerated full changelog, which is created in the next step. As a starting point, copy the important features, bug fixes, and dependencies from the autogenerated draft of the full changelog. This draft can be found under - the [GitHub releases](https://github.com/nginxinc/nginx-kubernetes-gateway/releases) after the release branch is + the [GitHub releases](https://github.com/nginxinc/nginx-gateway-fabric/releases) after the release branch is created. Use the previous changelog entries for formatting and content guidance. 7. Create and push the release tag in the format `vX.Y.Z`. As a result, the CI/CD pipeline will: - - Build NKG container images with the release tag `X.Y.Z` and push it to the registry. + - Build NGF container images with the release tag `X.Y.Z` and push it to the registry. - Package and publish the Helm chart to the registry. - Create a GitHub release with an autogenerated changelog and attached release artifacts. 8. Prepare and merge a PR into the main branch to update the [README](../README.md) to include the information about the @@ -59,8 +59,8 @@ To create a new release, follow these steps: 9. Close the issue created in Step 1. 10. Submit the `conformance-profile.yaml` artifact from the release to the [Gateway API repo](https://github.com/kubernetes-sigs/gateway-api/tree/main/conformance/reports). - Create a fork of the repository - - Name the file `nginxinc-nginx-kubernetes-gateway.yaml` and set `gatewayAPIVersion` in the file to the - supported version by NKG. Also update the site source if necessary (see following example). + - Name the file `nginxinc-nginx-gateway-fabric.yaml` and set `gatewayAPIVersion` in the file to the + supported version by NGF. Also update the site source if necessary (see following example). - Open a PR. [Example](https://github.com/kubernetes-sigs/gateway-api/pull/2368) If it's your first time submitting a PR, you will need to sign a CLA using F5, Inc. as the organization. diff --git a/docs/gateway-api-compatibility.md b/docs/gateway-api-compatibility.md index 0c1f867bd6..488ca4ed61 100644 --- a/docs/gateway-api-compatibility.md +++ b/docs/gateway-api-compatibility.md @@ -1,6 +1,6 @@ # Gateway API Compatibility -This document describes which Gateway API resources NGINX Kubernetes Gateway supports and the extent of that support. +This document describes which Gateway API resources NGINX Gateway Fabric supports and the extent of that support. ## Summary @@ -27,10 +27,10 @@ resource field: - *Not supported*. The resource or field is not yet supported. It will become partially or fully supported in future releases. -> Note: it might be possible that NGINX Kubernetes Gateway will never support some resources +> Note: it might be possible that NGINX Gateway Fabric will never support some resources > and/or fields of the Gateway API. We will document these decisions on a case by case basis. > -> NGINX Kubernetes Gateway doesn't support any features from the experimental release channel. +> NGINX Gateway Fabric doesn't support any features from the experimental release channel. ## Resources @@ -47,7 +47,7 @@ the [Gateway API documentation](https://gateway-api.sigs.k8s.io/references/spec/ > - Extended: Not supported. > - Implementation-specific: Not supported. -NGINX Kubernetes Gateway supports only a single GatewayClass resource configured via `--gatewayclass` flag of +NGINX Gateway Fabric supports only a single GatewayClass resource configured via `--gatewayclass` flag of the [static-mode](./cli-help.md#static-mode) command. Fields: @@ -71,8 +71,8 @@ Fields: > - Extended: Not supported. > - Implementation-specific: Not supported. -NGINX Kubernetes Gateway supports only a single Gateway resource. The Gateway resource must reference NGINX Kubernetes -Gateway's corresponding GatewayClass. See [static-mode](./cli-help.md#static-mode) command for more info. +NGINX Gateway Fabric supports only a single Gateway resource. The Gateway resource must reference NGINX Gateway +Fabric's corresponding GatewayClass. See [static-mode](./cli-help.md#static-mode) command for more info. Fields: @@ -100,11 +100,11 @@ Fields: - `Accepted/False/UnsupportedValue`- custom reason for when a value of a field in a Gateway is invalid or not supported. - `Accepted/False/GatewayConflict`- custom reason for when the Gateway is ignored due to a conflicting Gateway. - NKG only supports a single Gateway. + NGF only supports a single Gateway. - `Programmed/True/Programmed` - `Programmed/False/Invalid` - `Programmed/False/GatewayConflict`- custom reason for when the Gateway is ignored due to a conflicting - Gateway. NKG only supports a single Gateway. + Gateway. NGF only supports a single Gateway. - `listeners` - `name` - supported. - `supportedKinds` - supported. @@ -117,7 +117,7 @@ Fields: - `Accepted/False/UnsupportedValue`- custom reason for when a value of a field in a Listener is invalid or not supported. - `Accepted/False/GatewayConflict` - custom reason for when the Gateway is ignored due to a conflicting - Gateway. NKG only supports a single Gateway. + Gateway. NGF only supports a single Gateway. - `Programmed/True/Programmed` - `Programmed/False/Invalid` - `ResolvedRefs/True/ResolvedRefs` @@ -148,10 +148,10 @@ Fields: - `filters` - `type` - supported. - `requestRedirect` - supported except for the experimental `path` field. If multiple filters - with `requestRedirect` are configured, NGINX Kubernetes Gateway will choose the first one and ignore the + with `requestRedirect` are configured, NGINX Gateway Fabric will choose the first one and ignore the rest. - `requestHeaderModifier` - supported. If multiple filters with `requestHeaderModifier` are configured, - NGINX Kubernetes Gateway will choose the first one and ignore the rest. + NGINX Gateway Fabric will choose the first one and ignore the rest. - `responseHeaderModifier`, `requestMirror`, `urlRewrite`, `extensionRef` - not supported. - `backendRefs` - partially supported. Backend ref `filters` are not supported. - `status` @@ -211,7 +211,7 @@ Fields: > Status: Not supported. -Custom policies will be NGINX Kubernetes Gateway-specific CRDs that will allow supporting features like timeouts, +Custom policies will be NGINX Gateway Fabric-specific CRDs that will allow supporting features like timeouts, load-balancing methods, authentication, etc. - important data-plane features that are not part of the Gateway API spec. While those CRDs are not part of the Gateway API, the mechanism of attaching them to Gateway API resources is part of diff --git a/docs/guides/README.md b/docs/guides/README.md index 2268d72087..6869f98838 100644 --- a/docs/guides/README.md +++ b/docs/guides/README.md @@ -1,14 +1,14 @@ # Guides -This directory contains guides for configuring NGINX Kubernetes Gateway for various use cases. +This directory contains guides for configuring NGINX Gateway Fabric for various use cases. ## Contents -- [Routing Traffic to Your Application](routing-traffic-to-your-app.md): How to use NGINX Kubernetes Gateway to route +- [Routing Traffic to Your Application](routing-traffic-to-your-app.md): How to use NGINX Gateway Fabric to route all Ingress traffic to your Kubernetes application. - [Routing to Applications Using HTTP Matching Conditions](advanced-routing.md): Guide on how to deploy multiple applications and HTTPRoutes with request conditions such as paths, methods, headers, and query parameters. - [Securing Traffic using Let's Encrypt and Cert-Manager](integrating-cert-manager.md): Shows how to secure - traffic from clients to NGINX Kubernetes Gateway with TLS using Let's Encrypt and Cert-Manager. -- [Using NGINX Kubernetes Gateway to Upgrade Applications without Downtime](upgrade-apps-without-downtime.md): - Explains how to use NGINX Kubernetes Gateway to upgrade applications without downtime. + traffic from clients to NGINX Gateway Fabric with TLS using Let's Encrypt and Cert-Manager. +- [Using NGINX Gateway Fabric to Upgrade Applications without Downtime](upgrade-apps-without-downtime.md): + Explains how to use NGINX Gateway Fabric to upgrade applications without downtime. diff --git a/docs/guides/advanced-routing.md b/docs/guides/advanced-routing.md index d930b7b6c0..6ddba9249b 100644 --- a/docs/guides/advanced-routing.md +++ b/docs/guides/advanced-routing.md @@ -16,9 +16,9 @@ and `coffee` applications share the same Gateway. ## Prerequisites -- [Install](/docs/installation.md) NGINX Kubernetes Gateway. -- [Expose NGINX Kubernetes Gateway](/docs/installation.md#expose-nginx-kubernetes-gateway) and save the public IP - address and port of NGINX Kubernetes Gateway into shell variables: +- [Install](/docs/installation.md) NGINX Gateway Fabric. +- [Expose NGINX Gateway Fabric](/docs/installation.md#expose-nginx-gateway-fabric) and save the public IP + address and port of NGINX Gateway Fabric into shell variables: ```text GW_IP=XXX.YYY.ZZZ.III @@ -36,7 +36,7 @@ and `coffee` applications share the same Gateway. Begin by deploying the `coffee-v1` and `coffee-v2` applications: ```shell -kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-kubernetes-gateway/main/examples/advanced-routing/coffee.yaml +kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/main/examples/advanced-routing/coffee.yaml ``` ### Deploy the Gateway API Resources for the Coffee Applications @@ -120,7 +120,7 @@ the `coffee-v2` Service: ### Send Traffic to Coffee -Using the external IP address and port for NGINX Kubernetes Gateway, we can send traffic to our coffee +Using the external IP address and port for NGINX Gateway Fabric, we can send traffic to our coffee applications. > **Note** @@ -166,7 +166,7 @@ have their own set of rules, but will still attach to the same Gateway listener ### Deploy the Tea Applications ```shell -kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-kubernetes-gateway/main/examples/advanced-routing/tea.yaml +kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/main/examples/advanced-routing/tea.yaml ``` ### Deploy the HTTPRoute for the Tea Services @@ -213,7 +213,7 @@ The properties of this HTTPRoute include: ### Send Traffic to Tea -Using the external IP address and port for NGINX Kubernetes Gateway, we can send traffic to our tea +Using the external IP address and port for NGINX Gateway Fabric, we can send traffic to our tea applications. > **Note** @@ -250,8 +250,8 @@ result in a `404 Not Found` response. If you have any issues while sending traffic, try the following to debug your configuration and setup: -- Make sure you set the shell variables $GW_IP and $GW_PORT to the public IP and port of the NGINX Kubernetes Gateway - Service. Instructions for finding those values are [here](/docs/installation.md#expose-nginx-kubernetes-gateway). +- Make sure you set the shell variables $GW_IP and $GW_PORT to the public IP and port of the NGINX Gateway Fabric + Service. Instructions for finding those values are [here](/docs/installation.md#expose-nginx-gateway-fabric). - Check the status of the Gateway: diff --git a/docs/guides/integrating-cert-manager.md b/docs/guides/integrating-cert-manager.md index 2ac6c41d00..543da76068 100644 --- a/docs/guides/integrating-cert-manager.md +++ b/docs/guides/integrating-cert-manager.md @@ -17,8 +17,8 @@ This guide will demonstrate how to: 1. Administrator access to a Kubernetes cluster. 2. [Helm](https://helm.sh) and [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) must be installed locally. -3. Deploy NGINX Kubernetes Gateway (NKG) following the [deployment instructions](/docs/installation.md). -4. A DNS resolvable domain name is required. It must resolve to the public endpoint of the NKG deployment, and this +3. Deploy NGINX Gateway Fabric (NGF) following the [deployment instructions](/docs/installation.md). +4. A DNS resolvable domain name is required. It must resolve to the public endpoint of the NGF deployment, and this public endpoint must be an external IP address or alias accessible over the internet. The process here will depend on your DNS provider. This DNS name will need to be resolvable from the Let’s Encrypt servers, which may require that you wait for the record to propagate before it will work. @@ -39,7 +39,7 @@ At a high level, the process looks like this: annotation. 3. This kicks off the certificate issuance process – cert-manager contacts Let’s Encrypt to obtain a certificate, and Let’s Encrypt starts the ACME challenge. As part of this challenge, a temporary HTTPRoute resource is created by - cert-manager which directs the traffic through NKG to verify we control the domain name in the certificate request. + cert-manager which directs the traffic through NGF to verify we control the domain name in the certificate request. 4. Once the domain has been verified, the certificate is issued. Cert-manager stores the keypair in a Kubernetes secret that is referenced by the Gateway resource. As a result, NGINX is configured to terminate HTTPS traffic from clients using this signed keypair. @@ -49,7 +49,7 @@ At a high level, the process looks like this: 6. When the client connects to https://cafe.example.com/coffee, the request is routed to the coffee-app application and the communication is secured using the signed keypair contained in the cafe-secret Secret. 7. The certificate will be automatically renewed when it is close to expiry, the Secret will be updated using the new - Certificate, and NKG will dynamically update the keypair on the filesystem used by NGINX for HTTPS termination once + Certificate, and NGF will dynamically update the keypair on the filesystem used by NGINX for HTTPS termination once the Secret is updated. ## Details @@ -105,7 +105,7 @@ spec: privateKeySecretRef: # Secret resource that will be used to store the account's private key. name: issuer-account-key - # Add a single challenge solver, HTTP01 using NKG + # Add a single challenge solver, HTTP01 using NGF solvers: - http01: gatewayHTTPRoute: @@ -299,7 +299,7 @@ Request ID: e64c54a2ac253375ac085d48980f000a [ACME troubleshooting guide](https://cert-manager.io/docs/troubleshooting/acme/). - Note that for the HTTP01 Challenge to work using the Gateway resource, HTTPS redirect must not be configured. - The temporary HTTPRoute created by cert-manager routes the traffic between cert-manager and the Let's Encrypt server - through NKG. If the Challenge is not successful, it may be useful to inspect the NGINX logs to see the ACME + through NGF. If the Challenge is not successful, it may be useful to inspect the NGINX logs to see the ACME Challenge requests. You should see something like the following: ```shell diff --git a/docs/guides/routing-traffic-to-your-app.md b/docs/guides/routing-traffic-to-your-app.md index 5316aaff43..200e8dd826 100644 --- a/docs/guides/routing-traffic-to-your-app.md +++ b/docs/guides/routing-traffic-to-your-app.md @@ -1,14 +1,14 @@ # Routing Traffic to Your Application In this guide, you will learn how to route external traffic to your Kubernetes applications using the Gateway API and -NGINX Kubernetes Gateway. Whether you're managing a web application or a REST backend API, you can use NGINX Kubernetes -Gateway to expose your application outside the cluster. +NGINX Gateway Fabric. Whether you're managing a web application or a REST backend API, you can use NGINX Gateway +Fabric to expose your application outside the cluster. ## Prerequisites -- [Install](/docs/installation.md) NGINX Kubernetes Gateway. -- [Expose NGINX Kubernetes Gateway](/docs/installation.md#expose-nginx-kubernetes-gateway) and save the public IP - address and port of NGINX Kubernetes Gateway into shell variables: +- [Install](/docs/installation.md) NGINX Gateway Fabric. +- [Expose NGINX Gateway Fabric](/docs/installation.md#expose-nginx-gateway-fabric) and save the public IP + address and port of NGINX Gateway Fabric into shell variables: ```text GW_IP=XXX.YYY.ZZZ.III @@ -24,7 +24,7 @@ The application we are going to use in this guide is a simple coffee application With this architecture, the coffee application is not accessible outside the cluster. We want to expose this application on the hostname `cafe.example.com` so that clients outside the cluster can access it. -To do this, we will install NGINX Kubernetes Gateway and create two Gateway API resources: +To do this, we will install NGINX Gateway Fabric and create two Gateway API resources: a [Gateway](https://gateway-api.sigs.k8s.io/v1alpha2/references/spec/#gateway.networking.k8s.io/v1beta1.Gateway) and an [HTTPRoute](https://gateway-api.sigs.k8s.io/v1alpha2/references/spec/#gateway.networking.k8s.io/v1beta1.HTTPRoute). With these resources, we will configure a simple routing rule to match all HTTP traffic with the @@ -90,7 +90,7 @@ NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE service/coffee ClusterIP 10.96.75.77 80/TCP 77s ``` -## Application Architecture with NGINX Kubernetes Gateway +## Application Architecture with NGINX Gateway Fabric To route traffic to the coffee application, we will create a Gateway and HTTPRoute. The following diagram shows the configuration we'll be creating in the next step: @@ -104,12 +104,12 @@ To route HTTP traffic from the Gateway to the coffee Service, we need to create to the Gateway. This HTTPRoute will have a single routing rule that routes all traffic to the hostname `cafe.example.com` from the Gateway to the coffee Service. -Once NGINX Kubernetes Gateway processes the `cafe` Gateway and `coffee` HTTPRoute, it will configure its dataplane, NGINX, +Once NGINX Gateway Fabric processes the `cafe` Gateway and `coffee` HTTPRoute, it will configure its dataplane, NGINX, to route all HTTP requests to `cafe.example.com` to the Pods that the `coffee` Service targets: ![Traffic Flow](/docs/images/route-all-traffic-flow.png) -The coffee Service is omitted from the diagram above because the NGINX Kubernetes Gateway routes directly to the Pods +The coffee Service is omitted from the diagram above because the NGINX Gateway Fabric routes directly to the Pods that the coffee Service targets. > **Note** @@ -137,8 +137,8 @@ spec: EOF ``` -This Gateway is associated with the NGINX Kubernetes Gateway through the `gatewayClassName` field. The default -installation of NGINX Kubernetes Gateway creates a GatewayClass with the name `nginx`. NGINX Kubernetes Gateway will +This Gateway is associated with the NGINX Gateway Fabric through the `gatewayClassName` field. The default +installation of NGINX Gateway Fabric creates a GatewayClass with the name `nginx`. NGINX Gateway Fabric will only configure Gateways with a `gatewayClassName` of `nginx` unless you change the name via the `--gatewayclass` [command-line flag](/docs/cli-help.md#static-mode). @@ -193,12 +193,12 @@ Service using the `backendRef` field. ## Test the Configuration -To test the configuration, we will send a request to the public IP and port of NGINX Kubernetes Gateway that you saved +To test the configuration, we will send a request to the public IP and port of NGINX Gateway Fabric that you saved in the [prerequisites](#prerequisites) section and verify that the response comes from one of the coffee Pods. > **Note** > Your clients should be able to resolve the domain name `cafe.example.com` to the public IP of the -> NGINX Kubernetes Gateway. In this guide we will simulate that using curl's `--resolve` option. +> NGINX Gateway Fabric. In this guide we will simulate that using curl's `--resolve` option. First, let's send a request to the path `/`: @@ -259,8 +259,8 @@ You should receive a 404 Not Found error: If you have any issues while testing the configuration, try the following to debug your configuration and setup: -- Make sure you set the shell variables $GW_IP and $GW_PORT to the public IP and port of the NGINX Kubernetes Gateway - Service. Instructions for finding those values are [here](/docs/installation.md#expose-nginx-kubernetes-gateway). +- Make sure you set the shell variables $GW_IP and $GW_PORT to the public IP and port of the NGINX Gateway Fabric + Service. Instructions for finding those values are [here](/docs/installation.md#expose-nginx-gateway-fabric). - Check the status of the Gateway: @@ -394,7 +394,7 @@ If you have any issues while testing the configuration, try the following to deb > The entire configuration is not shown because it is subject to change. > Ellipses indicate that there's configuration not shown. -If your issue persists, [contact us](https://github.com/nginxinc/nginx-kubernetes-gateway#contacts). +If your issue persists, [contact us](https://github.com/nginxinc/nginx-gateway-fabric#contacts). ## Further Reading diff --git a/docs/guides/upgrade-apps-without-downtime.md b/docs/guides/upgrade-apps-without-downtime.md index e6c068d8ac..4287c3b1b2 100644 --- a/docs/guides/upgrade-apps-without-downtime.md +++ b/docs/guides/upgrade-apps-without-downtime.md @@ -1,21 +1,21 @@ -# Using NGINX Kubernetes Gateway to Upgrade Applications without Downtime +# Using NGINX Gateway Fabric to Upgrade Applications without Downtime -This guide explains how to use NGINX Kubernetes Gateway to upgrade applications without downtime. +This guide explains how to use NGINX Gateway Fabric to upgrade applications without downtime. Multiple upgrade methods are mentioned, assuming existing familiarity: this guide focuses primarily on how to use NGINX -Kubernetes Gateway to accomplish them. +Gateway Fabric to accomplish them. -> See the [Architecture document](/docs/architecture.md) to learn more about NGINX Kubernetes Gateway architecture. +> See the [Architecture document](/docs/architecture.md) to learn more about NGINX Gateway Fabric architecture. -## NGINX Kubernetes Gateway Functionality +## NGINX Gateway Fabric Functionality To understand the upgrade methods, you should be aware of the NGINX features that help prevent application downtime: graceful configuration reloads and upstream server updates. ### Graceful Configuration Reloads -If a relevant Gateway API or built-in Kubernetes resource is changed, NGINX Kubernetes Gateway will update NGINX by -regenerating the NGINX configuration. NGINX Kubernetes Gateway then sends a reload signal to the master NGINX process to +If a relevant Gateway API or built-in Kubernetes resource is changed, NGINX Gateway Fabric will update NGINX by +regenerating the NGINX configuration. NGINX Gateway Fabric then sends a reload signal to the master NGINX process to apply the new configuration. We call such an operation a reload, during which client requests are not dropped - which defines it as a graceful reload. @@ -27,7 +27,7 @@ This process is further explained in [NGINX's documentation](https://nginx.org/e Endpoints frequently change during application upgrades: Kubernetes creates Pods for the new version of an application and removes the old ones, creating and removing the respective Endpoints as well. -NGINX Kubernetes Gateway detects changes to Endpoints by watching their corresponding [EndpointSlices][endpoint-slices]. +NGINX Gateway Fabric detects changes to Endpoints by watching their corresponding [EndpointSlices][endpoint-slices]. [endpoint-slices]:https://kubernetes.io/docs/concepts/services-networking/endpoint-slices/ @@ -40,16 +40,16 @@ In NGINX configuration, a Service is represented as an [upstream][upstream], and Two common cases are adding and removing Endpoints: -- If an Endpoint is added, NGINX Kubernetes Gateway adds an upstream server to NGINX that corresponds to the Endpoint, +- If an Endpoint is added, NGINX Gateway Fabric adds an upstream server to NGINX that corresponds to the Endpoint, then reload NGINX. After that, NGINX will start proxying traffic to that Endpoint. -- If an Endpoint is removed, NGINX Kubernetes Gateway removes the corresponding upstream server from NGINX. After +- If an Endpoint is removed, NGINX Gateway Fabric removes the corresponding upstream server from NGINX. After a reload, NGINX will stop proxying traffic to it. However, it will finish proxying any pending requests to that server before switching to another Endpoint. As long as you have more than one ready Endpoint, the clients should not experience any downtime during upgrades. > It is good practice to configure a [Readiness probe][readiness-probe] in the Deployment so that a Pod can advertise -> when it is ready to receive traffic. Note that NGINX Kubernetes Gateway will not add any Endpoint to NGINX that is not +> when it is ready to receive traffic. Note that NGINX Gateway Fabric will not add any Endpoint to NGINX that is not > ready. [readiness-probe]:https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/ @@ -114,8 +114,8 @@ back to the green. There are two ways to switch the traffic: -- Update the Service selector to select the Pods of the blue version instead of the green. As a result, NGINX Kubernetes - Gateway removes the green upstream servers from NGINX and add the blue ones. With this approach, it is not +- Update the Service selector to select the Pods of the blue version instead of the green. As a result, NGINX Gateway + Fabric removes the green upstream servers from NGINX and add the blue ones. With this approach, it is not necessary to update the HTTPRoute. - Create a separate Service for the blue version and update the backend reference in the HTTPRoute to reference this Service, which leads to the same result as with the previous option. @@ -125,7 +125,7 @@ There are two ways to switch the traffic: To support canary releases, you can implement an approach with two Deployments behind the same Service (see [Canary deployment][canary] in the Kubernetes documentation). However, this approach lacks precision for defining the traffic split between the old and the canary version. You can greatly influence it by controlling the number of Pods -(for example, four Pods of the old version and one Pod of the canary). However, note that NGINX Kubernetes Gateway uses +(for example, four Pods of the old version and one Pod of the canary). However, note that NGINX Gateway Fabric uses [`random two least_conn`][random-method] load balancing method, which doesn't guarantee an exact split based on the number of Pods (80/20 in the given example). diff --git a/docs/images/cert-manager-gateway-workflow.png b/docs/images/cert-manager-gateway-workflow.png index ff248df02bc9c5821c5df3faf51dfcead5c2fe0c..c4de785951702cbc3d2e6116c319ad8bd9e55945 100644 GIT binary patch literal 209514 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%0DNC`zzJ7PDb%2|dKsC&g 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 yOqsm|tYOr=)owc{(x5#o|03^SW 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

1w{9~aUPJ{bB@4M-#d{zK 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 JS$A}v{a^RHwyFRC literal 151523 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

MSTL;|Gj^dh-5j+R7QX%z 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�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

ExGgIZh2KyhNhbtMBw(q z4|j8w{O9(=F9bkyVA#sz$0jYQa%z{tLC1m%*z>>6YXT^rKZP9(UUybG$KL;MZ0OW_ zdCrw_M1J#yZ>%@%`_(LNLj8O3VrZf$TRbUOla-sNTXg?;c^+^xm)!ZE&G`+306CM! zs0v|H2nq=$f3kUd>FZk{h=ujO-!L(ynSdROihlEE+}tZ(IS>d(lz&><()EQ<#eVp< zoM0KpgLcxYtz;*f;)hJ03hrQKt4jNvir1N=bmE@H5X<)MB8f-R<_rI0-W9mZVxI*m z!hMkww(Ch0K>7O|?_U-X8L2YJ*IxKp*l6!G^ZxyNc0C##B6<`Gj=8R?o&oiRU`F3Z zB|ZyG?dj41qD%DM-Q8lxf@Cha69E*m3fKAO|#ke!V%SuK<4|Gv*^ zF>D5{P2jSckqyI=hL&{6Uc$0dG}-$IRmKPk^-?fQ^TB=4GIEtfC65ACQ=G#nZ)?l_ z{_f-C4iQZ5zk5Zu!j|^=^XJ<@EoXpC3Di361R)b}l$t`efxL()D=McwyLC$*1LN4f z@tRxjImG(Qz%M>o>1*5aJrIN5(IneOuxN1YZDb?oP-}&=dK-KMn!$+hpDZTvew6fQ z4;u$Il!?bDg4A!D=bv;_%y_yiELO$ZFCK_Xg7t576E`RE5?o;m9#5G{c~8}2@Yn;` zoWtyIqL@Se=(_&B$s82w9@YJfTgHsuol0K-4j{Ddx>x1OKDd4s%aDTVe`e<($nyez zpkCP&s5r)5T8x=v5L)lAgmM7{07M;;ms;Q#zL`3J4cY;ZB@+I6(t0I?q&tcH&4>EH zwSvQjJBYkA3=G1{ZARXNBl50EXwuhibOkY53s5Q1uU`kjOU%5yFwCWdEA`YuV{$2K z%_x3!uh$eM72We-^>IuDJhTk1r%nAfe6xKnvNUB(kWH>^Zbl-G(m(?R{YOxYq?y83 zy7@3rLnA})_!qEI>8zC$ZDU6qCql8MnuhvQ8D`wxPb4VJuxG(0O(xAg3{KhMtPRl5 z5lW>!Hsy8yTI;rD*>MR{#{I3CC`4cgS~M^$fVF`M1rUryi2$+1n``~TKpVHEihD&T zC54uiU5h=nrv|tlLE1SuIuh@j+8-}3KepejH0En@fs;Ma@ARi}yAl2OzFDR<0^hIB zFZ#9v{L1KgQ;%LruBaQ5dg`0M6&{6&!m;ie)utC4RyzLXN zjk|dZ8K(R`<0UoC;rS4AB%7%*+d@JLP)kB^nLb#d=I@c};a`5k9&?Taom4Lt-7N_VxzVVH`v-p9>D6LEsS ze21JJ|6!kFUc`0hX-96)W3=yUo0ve}Dk>{myQL8_+ib_JIf#nh*v?|nG$Tu*8S|wj z(2q78^-v20r~jPXt;sa`V%_l3QQd`~;c-6?&tgxjoG*usQL*MAwsJek3peVxzE;_S zb%vuWNM@{sdH&NgC<^SLTcR-%A&0Q#_2g;zMJaw{3yNOrd#}J@@~tIhgd9o8UO#T7 zGe5RqDsyMj81dGKim3WR^?vaOh7HW0SzY%Y1-&RWut_NQlq zPp@Benz4jvIz9d%RHfScV?#D+SeyG=Zuac*GCPc+c>{&EKeA~dKteZ*^~ve!&Nmf4 z>3qu{><^j;kTW-i76NapgG$qnlrK5F`NDcD6Eip>1(f9;Jqp6y(i*Hk>&f;o|1Hzz zIG0Kv%Jq`o#3&VxY)Yk6%Hhd(aJ^`$uc1D_z8_hpl1PjC+h>I(T_4s{H+#x`r zJuKE;{h@mwwly5$O$2b2e-Hhyc3r=^w|_6QR6V`Ywk{kmf8UNyi#=hkn3(Z-b{e$8 zDgctJ1t}VA9qZPyFDyJ$}6(&`O{9+p8sq=`)u7 zHqPMW@Jxcja`KVO@pzZM`=Lkrt;V`xI}2yp)T3Rz&Rb%&zXaeO_&gkV-dVSK&o?+H z`#&N`kAp77ANYS4xn`7h;m3~ZdTPg$ZsRv`KGrD(!#qbFFHF8p5O25RLp{Re8ptfJgdEMS2C2CI6b9EjU%Zp|CfM?-WAHpOxTRytNN?C*#5RqH!OVoE7YPKysN zkzT+5+BisSf-L4x_IM3l;SOHMDAv23-mr-tY*FT{7YnJ9eanQDuqrMHJd&E?lVc&qdXq}$>A=zR-2+84SuZ$f$GswQ#kx(`aB<%KSrk+`G2~g zmy?$(Qft>a;JdxCa$!q~51T*4v#8>=PfZF0nr*L40n4*1HlDO^+dwm=t#W`{NvPXK$hv`&Js$6gcWxV#yqSF0LkiA4 z!dmptC!_+8i>9!6;V1kmSf2Y;97h#E5n++qEwfzBjglH&eTEzHqrV9zetat~QJ31% zFutQFN}IuQEaLI%NzaL4E*W)EU_} z_Y2gBOh&k%718N``k=r6Y ztXJ|>yVBZ=5Y9PRvRJ6?&LB42m+M@+x#Tf~z{8wvY0Fjgd`p+VUme?!Phl1?ga@Gv zZNRFbN_593C8w5F%$1v6JvDq|qEeQ*cslkwWxWKN@o2#Hy@at zh(7W+PGFpQl^$r5LhwxFdB)%xX06(H=pw}j>nIqyVA^5@&6N8ijc4~)IS1?zoeB$E zHCqbVCw^GG9bXHhOxG5)Y}b}g%bz6u{ZsA&xzBxa;Wbw8RZ~Pr^|H7d30C}SMr{{t zRODbEg;ckQ8MKGO0a`Qlz-y0A~vkY?G&?%)pS1=KUPu z1|qx*B<2jSv3ac3zDpnHRP+)v0%Q?mhiJ3ahK7gc61Ema>u~?~}e-C(t>G z8C7O4bf@HwQpID(rVisOnMrs?*F?%jcgF2|d@O|j4zY0!LAp>#&t+v2F6Aleh1cbI z;L=lES-ojfuK)IICW%*UI$ld>P9&Xp(q|G&+<{q8y|Y9e4l0+oP&jZ5T!6MWl>boL zRi^l`Im&fRf#hk|q`zZ$?wNXDx~Ys-+?19E-y645AoK_hmgg`3TLYduiVS90mx8^0 zHH@ovH!&gVL%RASM(Je7Y__Zi`NdTqULB;!t_P4~iCHmQr{>4`z^PU6d;7wZqMcy} zO~m;4?P&!CY9Ox?^I40*T&LiJl&n>29_5lXO=G)pTd#RT0U32dQ~=db`M=hTdaolx zxTyh3|IEfVejUEv)%8};}9lVJCa17ii1)(+Ctc{Dm!+23DLt>MLM|ni&@OBE!Or!f7lHo&h?8sRLY6&9C(RCI?lR1C z`OXiTw$NiDxb9M2a9yu?;|Vbw_uHVfhhCMWVpv?8hDZ(;Pq6$DIdWkxBHdTA_v zzq8B~;7THbb$Y?JOkUH7Q?PJRCMlI~x2)zmqvTC=8E;aWZxieolo8eLqNcNh4OQFr zM6Bb>etwmee^al-i^_6C*Z(s{Ypwa^|BjPRdekMD;=aC~(g`@+Lxk4S7}rr6Z?!&i z!=TWI5hd!HLd{}fV~iy9PPlC&0p?1u zYcd#~M^^5y9V_uh#Ut_WqUTNiDFC=hcVOFw*FQ zflwUZtjnrSp5XhA(M5d@zi2mY%${I+^pX?zq9lphU5*U(V2E>=S?=SfGANWkN=Z)o z9;r?AM#3|+Hq(LO>y3new^9W-3NT;H(gb@tbckS=EiIoWFqBq&)LtE=V%3lxBEOd~ zJiA*Uw848kB*~5mby*X#ljMe8K(1x`l43lT833qjwGrZ&JP^?@gDoxakhX_+ARQw@ zR?r>8LMl)E=Q+GKUa^KYdEAx|Fy6#b7qUF=cx)gV_pRVmZ$C6-owPfI#6=v(ij>Mu zH>5Ci!g@p+#wKK@BK>9;U3V7QGO}SVxpldt<7$oZ;vk;|u1{A^K9xjwK<6~F8el+S z^RVno99k&Lm`hY3LmA_bP&<63fvUNtYsxk0GX)nIGxc}LGLz9E*KQvAKh&l7J0kvj zk3*lw-w)6vK26bE?-6;z?A7}Bs?Aj(rLoav;KD#viG{(KJyMtFA5;<`13?EE!2b?= z>3Eg2GaeK5(fT?$a`ipUnuo@Tmkevq>^@VWUnjF_5GT`nZh?%X?0gML%cV93m=ZGq zV61@W?jsOor{dCW~|KfzW974TUqV8 z7UTw#d*1ZuEg0@*{_v5a@%30d(ACF+NRlJHGt*$E7BbZGZ&w27LJ5D0rSlPayP&?d z1YZCPIwQmL)>1{*&%<0g{QTT^ihjH9J%v+IuHqB_I}(ltiLuQRb(R&vj@3Ub$V2kP zgg&a0OZyaMjxNrqbGpmSB@Rk@dkC||KB{TV@ba%bzQw@6F#X5=`&o8Q^j~CaYs5pQ%N`VqMJn}WWOa5nP*PCfii27w&ujny<<1HuA!+eG^+7{%008l6 zth9D_wEQY%oH83+e2;x>?3;k@j=LHAM9=sROOwU3RuhH}s^r=?F9Cu|5 z{@6u}EjFv&t?TaUf)U!7Zq-X;Omb6%-4bJ2FJI!r;1TgVckjO1`Dxk`1iCNy^5VVp zw!SA<{}~X91%r-cjCo;?@U|&nh1gEck_Ld;VZi#QPrTxr)umSO4YNxVWq-=xE}Rf& zN7ro`BtNH&STg$3a@LEZ8LbD?jxKA&rldral$7v_Z@oBl$0WpE`({Qqh7ROl+2PZZ zCqJ?eSHAU+(|?NoViDryD(c&4MLD0E(q|GF@9yPwv9ZDXkKi@BhykrkhRn=Nbmb4< z4)rrMpfIl8{XVT+S6)eGaWx<2aAZ!vA;7a&AcVKS}AA490J zJ+Y~27d3_W$+F)|1~}`qO;0LswtBBu>kl>6zq0p=2`eF ztso(X&V;~!25ZJdgwfEV!2qyphmU6()Fh3-8FND#?VTj`QOIVDQhXFh8+d3srFP=--4jxz zI{3x6`z}UWH5f%^3rjvr?`-(AHL2A4Pym#ZX5RIF=f2)x!=`aHzNaEx4Oqix5f??~ z0ej@%nA-%CLka5-W$2d0B`65v7>s}a&xtiQIpf`AbH}BFrCP~JQNCp@K zhk@eubR~WJq4I2-yOX<2pZ3ZVweu~4EC~rLA|fIZl~&!|b!P9A@eb7PDfdSkYkvF5 z8+oY*AHc2m&#!!rItHUt$Lv&=7?QR7dp9Z%&?Ei+s3Z$h-|u_QTvCyq&UA8i&}gL*&h31xy7HbSf#0)>BqLj1_{wkPf-g3VeiK#6 zE$LWE3!F;_Z$fgob_^3bi4KpBANG_zAf2hH5j}A`u+O_TUvNLyacxnFUfj8r<`X=- zrX0?9;S-M_KbCZC80;@C$YOwuCZbS5l@<#g-onrMOy-j^hqU3oV_2c=BFETKG~q=# zMQW1jnFV*D4EJGN?=ZH??`R<2ue_;CD!@jsZs&{qhyGFk<1o0|e{yOHp(?rcN-zU( zh^ah9hk8BS-I1neq=y(93d3&R6l14&bfjK)~?F}e1=v2LqkLCE(0TVjqUHp_9NCa)wr;R&D9im-_1mun7wXGJNv`& zsll(@$;Z&}l3H5_3&7t3Ex|2=gQcnqBOmYGaNFmOQ~n?zg|QlNjmyaJE8B|VP?GL` z?y<9*TL(0G3iup7g{^#tGOXOj$gljMW-bMYwaBQQup=sfmoLo9bvqWq$wyr+pr_Z<=Z7c;k}-<6fH`fE^O7)%(AeVEaV7FAi4qb*W zdX?uC*m=`>ff)-y!g@vz?oTYOB*OV0Q%uU&mB>nCJTKau`MEuOY<&4l$~(A2f4@txRAeI%S2xiN z_q(m99eLc3E~1F*mg6+H4o?EOG2~qXk>9hf0#kmNsl?LZfg<(QSFIozMw{tsngwkl z2d?0J4o&ic&^7~8hDx+Ho!vgU+hJu*i%_2X9?aM^JlmREdM4k`Yke1e&Gn;lJkyGf zmL`VIL010qb8O7H@_r-P&l#BBznew!Et9TQp10&N-qxkCX^cHBx;>Un`Xrd;N=e}W zLWjwjyCDbhTEkJ&4-A#hFpjOWkG6y;?uYVQ31_-s-y7!p>No zmGm9uLP;Cre&61a^Lwiin5PzOj3cRf$S(5znHB#*L7^4=9~ht}G#yPEmyYB`byPnV zYO+%(-)3g|;vUu**7LVfDtrmrm82@IxMBFRy7y>apV;GFvnEuwkE0n8tG!XWNIsSV zseHlPs+Xr1iOXx(2de_j5H$ZR1Bxd(b9r!7zXK{}6w1vCCX`)f79#@$z&XRpG!5{d zwX9F^N=z~M2;QkYi)Z0vZJ9d@H;$-Q>p3aQVTGy6Ky<@*Q8y#TMl zLsqPHOlQW=G-ju#OApBR=(&&K%jC?BMa3Qoh)>cYW8qyE$xore`@LPj6qBMUlA~Gp zaVxGk<-J<;jW-QEHx%i?B^Fyo$n`CoeMjzeRsb8J)-&C1K^f;Y>iM03cobu=K8^>UXlSLI zdQHq?To*$Bgc^$^xW%fFgo~WH~BCDPV4Wjl1(!=NZr-24^=vK(S=* zOq*4h_`GNbV~*7YG`_%JrF7lXhXQq$Ny?a?d5tcTH!|_K%XZz}uJS&BG5xtPkf|M7 z`++Hgaz-@j4m%{fPcI_Cl9W!on6;{f6B}S0vA#qMMhpOy4c#NqxPsJ4<2$9LB^qF< zek<#lcHYLTSGqi305JyO*s|M_l=lC|3a0!Y(~=^1zYtDwzdc4 zE046>HeNna9^iOixl>*{c?rJr3Lj?&U*pMhPOWU$E+;6Eq8-;LZq?nI<#iJ=OfY8O zwGdFAb|bjipK)Gn#Py5yB*LEQ5EIal3K{-MYPl1(Y2opyp`pH3 zNadI`W(j)MqwM zRA5y797FQdoIpD~Nf^7~tl|IT>MOva+S;~JL^*K41eFjKP(VVYhZF>)r5jWPhVCv4 zQ7J)6knWa-p%et9q?-Ye8d^Grf&baQ@AX~Z_s@0CB@DA?uf5i@p1jv{-x@nSP{`?y zZp?!iCWWcu0nXylWi_Lk5Qf2(?_RsMXzedgK~Mha7;0btRZV_14>=;d*v#Hpx;N)G znVeB$;-{@TzY&4@s=i2c<_xm_jBajjNK+$#_(-bw+dh3mqI$W{vP{tLS50>xT6Hy2 zWSrafoB`G_xP8^wR~(5$jEDOBf7MsJF|x3bN(E3@sq?J9JoIK_zLk=Z(fn+m(7q<% zVW_V9s>4ZF(l~@V{%G>5qK`KjUf0<~FPJ*oPx%{{{q1kn^2HO;10^oe|snaBozv+9Hrx!^E zAQ~1z*G0n%nX-b1JcRGMbCqi}r&OZW(x>o6bfvEqhPYu~QxRr3MI%%M-EZ!~L5~XSW zc_r}W5=pZ!^=VW*O)r<0PKRg<_J&zvpcSFNpcll2*$zQ2w`iH0&JDSF&H>y*-?BG5rW}ETH@^^}ROOz$(+?`J7ff)FtUcIP ztH1H2x%^C&$aT43Npfwy3tHYQ>xEb6omtxMEcRM?^J?g7rH40MAn`x_$&jo--9{hP7)DGFutZHA}am&1xfe2pNTb(UH{21H{UeEhMmit zIA0rVbC%shLLj(Cu3q;jjz8XOK_!}>MprdLJ55DBZ^%Pt(?CS~!Q-hnIc>Sme5@*V zY(}}fifRX10;IPGL?;7>o~xeU_%k!6MfALxGjix2$0Z^;j`}^o%pJhP%0qLzCKpiMn|t3YT%X zqf~hx9?gK=Ypx!LNpWW^MhShq4$Tip`~^dS=Q@92ieA>4jb~_itj2cr(Aw^jBK{QQ zrVEmolchs9$aIYrd)^*bqj%oH z3HRD8!Yts4kf$9Me#$Jz+{B!dm&H4=Mmtf_>SQFSnM6EBS?M!Y=|#X^?GrmeM3j_k zA%|AgRQnlAP1OCZp|P^y3r1FcC)V0|}j8%yLps z8L4{3b#6@E*dX7s>bEe~*Uu%>_kX_`sOfzauCGGq{|vvLe7Oh2NijSBz)eJh`p=!nC z_y3Gi0}*3ye^~MAJ8UfXP6npDyjjwIU%++YklD1ROxEkDXblq*TIUt9>g^uhkkZgm zM@1wdQ0g2jeZNk0X6hU7O`=#?^a&ztdq#&NeQV+1c#-e>kU#v@bQO}1Pkc>(zu_1! z*>!2tB=3@2ay!qBSprONqnRnm<-KqmnBZlcr)&m-GeHp`G`-S zvH|pzRa%PABYsz4^8M|38e!KwNS39F`5eR;Qrg{GO#sMoGzE{VrBh-O$SQAFQ6HN8~;A zvzGH1l}~?H0ec~tWHC288_o~JBHiyw6z&VSEe~_USQPDQx1*rrLb9D7er#iFi?^D6 zJc*Q@2dvJ-z)jFEq!=VZn?zuzBTODK@V37zb zy{zWJ(Is~awbC7{9 zQIHaFYW3B50~~*{^yP2rM3^ME zNe@|=b23uWZXc(4*B^X4Yh#%}L9qzEvCJlIb2YWJ7NY z4o`dM;9%&gA?w!oSBNF(GXgM0K5z!Pd1>m^8>?2ryN&G~zG`-7samgXRgDJ`X38XqBjHLiEs=aYC5HL7P-_9^F<>4gVFMOrQNU1RxtFW=^*-}Zhqs?DeZ@zOk%QiMO znOjQVIe5ayOSsloXm*yGK6+O=q0QRG#pkGXzSy>ezxo)y$pwPo&XCaPL~%bsH}k*R zjEGkT?O?*j!J%nnl(4?}is$lqt)xZ|Pj@y4+Z5mR%tVD8JY9mYn=+Dqt}dl4^VpoD z6k5wut&8O!*FG^3RBXd>lKj`{J_DVeTsN*xpJxR!A+*_Ve~@~3mifG3R^d|FrdS(G z@mX3Eu-IV|-EL4nxOc2z%Fr=by)-fK>7zLfy}GV$Hiw19YiirYj^vUd(Up%(NApeA(NPAQIsDShm`8jFh`#GVm0O{hnEVXa3qEwWVRefDCQp+s+DS1|!#1#eNT<C=yyu0JT z*c^vFRr&2-dcl5DcI9|fI<$MjE{EH{y77g`_T1HK*M+A~lKaYyYP~G>@3iyb=I)zC z58Zrado3-~$X$MNZ$e-TpGYtQ6U0A}o0r$0ndqBSZQgOWT9J3EcV7YZW%h&E(dN%3 zl-R+lDrV({J|DV6qQs5_hJw4Rq{JwRK9R)pU?;Rc#ILS=#M&(S7412&^dtn_u6Xa) zWMUV7e4d!!nnYZe+tlH{jFh}Nb4Ra~ig^D_sY+Q{Suxd!^SVJ8DDL1DkCsj0nFPi+ z0knlu4O0E)5_Tjzlo0{4({?4N{7)^MsVBTB&#)fA@GS+cTqY-XK?zhCQvX=(6W6fw z-gv{b&^ch|@*{Ri0tiN*wKkHrG*C z;K90pUtYU(w5GaxYDbs&(093y9h`(Wf2~+$qPlF?C&QEWSV)Yzpxw&XH{YIT?BL8+ zKc`0|fsYaODu*U)&cG_=;nAZxL3NIT7&{I}$%BUq8s3AqXX8g8HuZ6?Z1<(#C$;HC-5V`;2Ky@_J!nn{;FLnf3ih8kXqvLJ+UKf8Vb%yvnbADf0 zWBj^E0~wJ-g=2P&R#};LCueF{7^5srp$+pa#=hK1cIf0v`j?5VvT$DeB>b_iqql2hzKXKSA72_l>;GTsHoYI(M5qsKiZ<|^CJ_-t>V%W5L5HiA;AGWvJJ1%hd( zaB~-gRU6yeeARi%(&!iE4@)vESH#0PnZD?K+|}Dl{JC(T zB=t#SK*bap`aMDI(~iy2GA7dpV{v#6^y587RwAOix=){`K+hJ&Y}<&Y#kFHy)zs6L z-#MgspSi#GKGeB>!LToSzX|1m3%VyJh%5DhkD5iBk!1ulYzundQ^+3NWtLmZtS_7b zGBLlOTtBrfWu{k{O_`gIXnQC6XH?Z=u|`Ikw$^^r@#0om%gbgJ#@Tf#pJ$_;rILv7=5~@fa_ObklS;jynUZKGg%6=83M@1pF*3y}0`BY=?^2 zShk$W+J}m>$AvPxQm{Ww%6l+jR{`InCrbhJ3bZ z)IH&ZP;FrdJ7b-kjl8d^(b)i(U;JKl5wkUGDjg6S#}BG;{d{Y1s$uz9XE~%bm7o&%S-+ym!T)#DBrENs~(JQu&f=;K^X~ zY0cGq(W_qlcPgW0La*ju6ZMQC^hgqy$n0B=+8dL&Z(8dGem#k62C}m4vX=S`uyDaP z%>K;Sn|XgjOM=~MW>WWcx$wgJ!a1>f+Dn6Z>e3!nhll&G-1Ykh`xpNN0657rm&~!w zdV4+UT%eh#OU0W>Aw{txF|$cZA|muJa2z90N2H{t!YnzzrlvPp;0lUgu8C$gjfr}? zSBj`OjTsJ%^zSTL^p)GzdoL7IGNAHsSA5U7@|_U7_VoAC60+**P&s5ft-LTen#p6|vurQs&9bQ}vb{5VsP=DfXnGd) zFPov=(l09@7K~Wt-wzrBZ8vSrJ}Y}C_+aOkuO1BCjL;m2#JJb}iERnm#WXEvpm`8) z_E+=F!b0{5;?wA_&rdXGkrU0Kmk^U_pPo@JV@zG@+b@Et8_g~ABw&ZAuAqA^8tcoW zd*o^Pt-FD6GauLrOBB9|Lo6JR1Am=kw5zYZZ_iC3)L}M^!FzIHzEQZK@Zu;v-Gsw; zQg$Yb<{|SRn9iI){~<~mgLiRP&1=dvBiI@(Yv;Jh6O`^&UoH4Mk=@);$|Wp6Dgs1A z#{Fo{6UAqWW}LrKD&fOd#;1o5Wr{T5?1`7k{E;fVdzJ6xg7x~MDhCMrZM^LJ zJyz?v+dF%6Zr=JW63Y-hrzK7%VY1j#>WRJR7W#AMf|j#(Dq{-Y(crpS^i&kI$U?jR zgMJP>E<B#dT%+c>a~>+Tn@C=|(V%32RMOU$aO( z+%fZi%!!CP!nahh$6iaYY+r~TUy~#U*X%loa*sNf$UqL^mE=o3pMUG_c`w^jFbLOl z&VP!$t59;m?30ghzS;-%B$cD`CB*&^tST&jza0BdOo_Wi%JFkFCdB-foV($8X8xxzJ-1`7~5~daCDD&7x1q{g0O8X)7;-*z{{B_sT_N zm7;EzqT|#1*uxhG86CBSJcQ)S>Wp^}+CS3J@aF}aKhVB+&pV>7)F-=$vH60QL4ani z)vPV4*xNiu&mF z=1U6g25u^uwJ~F{e9V@o`cg$HR9BgA-(JG?q;71aiK3k148|0c zR+G}7@CoHGNHqi5%B9)Dizlz*8u>fM*D zI=xcI7j@N7K4thi-FpIo(5-3>qg;jAvYh-{OIKE?YQk)RZ?CB}5vg2Tz*u_alJJ*S zAG&1eky*!*xPS8P_X63|^(M8oj&8(rw((VerVMlF&zZC}NF{H&tXI0WHtC_Mshu-g z8v=~c2V-ZJO7XZd;+UO#EYCh1)*SLWe|@yQgyp{RZ}+DwPfmPo4G9(3YMpJTx%cdC zipf*O{Mm;6&CzP}P^N|QF+1)0BSNQbg7Vb#S}Lwu_G+JmW~9LJ;b*{YR(7_I z<=zuS5~6Yp1Np+50>KYkI1|W;R$hcrWBcCz2%`~0S8^I+@?P9{h1wn!$Io>I51nzO zL{I;WkQrlMsH^nbUyM24ca!TqZ2gCZmTz#_$odYy(GbH(Si*jCFOPTx6TOhnu*J;x zm>b;kF&GK(rS((&mdDXSHN$=zJW6!?0|z8KWYv`MsH~Lmo6=|B4Lia zTd3zunCvBb?9M`Ow;1T2ByzGqGIbpdV-vls=f8+x@GR^(g{#V+3$n)S!UN2A@vm-y zY9iV^ujeeDa4muUf>uq5)yI?G9L-&(kvq!u6>y{AyGc`+^QMumCeLIBBH0M0OSH{i zJyMIPtS+hqO=aJZlZ2CH_6M&P87>s8;44_Cvoy!V$8zA2DzYeB&>w<@)j!L)e&+l! z;IDA`67F)=NJS_2j$GH_ql(a&>w$^s((|${aJa4)8itlROv`w9lo@O9|9`m~B3ueG z?Cm=f;Y{0si@C28#lHSWH={_Br9rJOqCURzUT}6!KgxRjv%mlMSnBCeTaCnApO$~$ z^*ry!Z0i*(o63d1*{W|P75OcrqSmaM%V~h=M&}0}1O`>So<4kX!(oGk7q zRf3hn_1@2tW6`KcKY2zwnvsGPZ^mJ05DZxU-hwCoOeA~mEMJ%7oYWx++AS@O_5GM3 zhWhj$eHQbwTas*N?Hc2l(}tr48n2f8!e?x|=Imsxj?b%l)O>VwUH_z*&d|cHfZ4;K z)lc?zsXb&bd|%M?9^aC?m+>-3{NVn9B~9iOvFw$x#efT$oSz*rEwQ7qT1xdZf_}=r z%Bj!ipBcHv5eLEu5B?0FLH^gP+dK1~G#IycdQB#VEN2PK=PxD)>6Fu$r zO2Kh(de>(A?W>(femyI5|1S7_Jg@vOgPTL!K>`&H}(o&lZD!fYb)AlGbcwP-r? z!aYmN+!M*f8k&Rwmca1h3;w6x@X~nnL~u(zb;kAI559UK_3E@as&;;QV2A7W&ejU6 zIG4DGhZif$^(B;LSM0lTKL2?h?Brv=v-|EY!Cxg0*#56xZI>p#f8ze))kj0w*uIL)k=YnC z>wcYW@&aq! zl14g%{6-^m0YjMH)>i%0mDM&tT!oBH11y$sL$DTtG_KrBYvnQ7am#> zn$nQUG{CU|xwT8E$y-7V8gv_4JY_rJTE7d%0x%3L@jWoU0RSf`a79nso!6H z^k_tDZ{4}007UOO1qJ-omkuw2--Em)F01>dTLr|wre1B-GV4=V(z1Zd zBm-@;QZSNK11^m0WSmqnh9P6EU0p-a#(Z|R33$p#{(Ci%UT}AVXhcLLlF*mz2fB*jNJ*Y966zQOt@?!Yfv=uUSdD(-mry(vZypo7@yrIPk z3wu6a^(7+P8E4gCCf4CeQH(Xl3ta>mZ}|MBnWZ|b^U|+na0~vE1BQ&NS`bY`_3I2N z#d7YADX9)l;_XwQHHRmq#Ee$))s5^AM7~mdZETmyghr^PYwm^miy`Z_``q;D=4h2^ z7fqLR&IB%N2LjyRjCN#F0q%foD2ssQi5|^}uu% z0};_z>x#4Ms=5Q3*o!OXfBmzhb6ldnnRu5W=lSlFxJApt!JLfp=H+|OU8j7H&p?Hh zh)Cev@>;S-k+I8!8lv*uOf(Xru_GG%_korTC{hbd1vS)Wp#MO7m|Ex~&=1c2p z=I2-r7mDuW=G5g(U(RvqF*QKz1XS&n+)8g|ViSvn3y@OYoAoJ?xpL z27jToIX>!;$PDR73ti?6HHHNDV?P*@(~i~fRB!+MC&Fm?WS(jn*&l~B*0&gaL1tDS5guntk8oZ0d986>7`icIxWUB{N zgwdn>3na4%U8YkjT9Df41wNiF;EZwo@p}v{x_hWZjttB;Bebbe=WTUe@g3L^6wh04 z;@#Pv)YKnhT7TzZeQwygsjF$F^cJgWYG`L=<^5Q8L}}Fj@{JW2y1#k*Hv0Duj75eG zFdvP7>b1#KBwM3O#{J=r^_nNVrovHs8q|75iqjKg4dfi&9UZh8gG>q3?NX3HVPNmY z^ypFjm{PtMy5mu&dU???#(+;PzLf=_fzs5?W}KXTH$e@ zd}Mbm4Hu1>T(IH_Wfg!^a%C{=p~`%nb6m~L$qB}8J7R>n>bv0OU#HJqx&S2_G?puQ z$|S&QZ+OZq+SYy1KU2@=EKIiH`THc#X{FubuC>KOe7JDf3Soaw_A-_0ir}B3b*JMG z_9Y6Emzy*m8Ir3ISAILh$%=8%61^b#)eML{7bw%(jFl_tSJ)0fQzj&x1*Ox)L47-fqG)Dq z?J%GgI%>%E7Mr$Tx^N){j+dC|yOFU^cyB7v3)&~O?ygnMUxS84VJXP{B+f9F-ZfUT z35MO*1_>LZpZwsSNgYf+J6tB^;$MB(bIAJ7;^p416R$4fYSBAx&R8{k6}0=BLA z@Kd@uSy}cT){h>2fX*};Iy&yywL-nJw%Iacuaz?XM7(Dq_WVh2kxR>KHyF5f3D_sp zC&|B3AQfGCMa2jv4!zQc(8z2M+V7PCWs%K9jV@Q+UdqANLhACewa>ipq{WWG(a}*X zk9i1iO!Y177C{#k%KB!Q4RmQIav3zCgM@+=t~)tA?f9VZcySAV8Yba6ZJ6*I>TgFb z@gb`%RlJ_{nGh0C(y9`Q&7&0Lz{f>CsxR3Pe~$_kO+N?9w(g%zydv ziA;Cb=h1p1{9qAkT0n>(Z4gS^BnB={-Uv z#l=BGAtp=4ld9VH@4o<^zCvKP!PMAV`M-Y6!o>8Te!tVs`IxYKM_5=N8PRjVyMRp> zR6IMdFEe>5U&vt>r?`5RVwK(kmNqA^x8SLM5fXG7TjI_2U8Z_TH^ByB ztK9@JzLu6bP<=5`bkaN)feY-Sf8Atf&l6?%tG$!_NjXr)-s5yWp0nyD?KpdI_YYQ@ z`GU)L$yYPSWEJmL*HF&tRR8{M-ZV5`QKjq!faWE!^87Wo8F&<5um9ta0qq%f6|$1{ zJR!;iP_)ajc;y6Lz&A;?0jZm?JEC+8_*K%KAKBFC~ z1-PVX$w;Zq7=ONTy%C~N5&FWp<5p|XU22A;y%VW-3I>fdEmX6~RE#6?hX)JhPj~Yh zi5V^OBvqXBI@4C4SuY~;i5~KLU;kabpqGbKX)B_nzli&}F6Z0|`V0ZRY^C?w+}k+Q z^^zFFo6o5MJ~#f*!=nn|jLZWrrEU>5H6o0850#Z&V|y*2)xYPj7iUTV0vfH(YFOj0 zD(t%aq23S6aO<{8LLP#4K_vg)y?eYs6M%JW=Ro-#)xeB6Z*~d@2VZgsy6yo&6Q5D! z*bgn4@_?eGOz@eY(_9cpzB4fYn2bR`!-%M;3_$MSZj0~BRhJvOXqGwd_$8C+OOL6X zPQq$xYc4fhCc*rXeo^CHgB1BZ_W!ip0FmdZR6xHdu(Q`mJ3aaJA}ig`cD411n^=K; zV<<$Uc~YKy4Zd{Qk1wxKG(+0*eX5hVm{?uU!9_%a@L5Hr6*l-EKs(UjFAYz|D;>fY zU%s@u%3~J9#LCRvwBXCU0FAH)z{a#|1;0fOH6dGW30d&Jq5JNm4{2VjRhd2Iz@1jMH_BuFlXtLCrxYD_;lc%H{7QutfTDt5eux5gzo7_L zbsDTOfR-*?yvX;Y;S^yby52gP=!cfII=HfNUBpS78pCYP>*Lb?lw>yeR`98H*{PYC zn9zTIeKU)8#4fv5L(51*4ui_>Wwp^|pa6XT?p+uY9A#4guv_rXyLa!9U2Eh=a4Bgg z!HCG{Ip;MRKVuy@sAFR7=K3JIy zOBNRxT99R2zrVr#WL`_`ZCh$rfNtK|;O4P(!R zP2^d=2JhkVv{u?PGc%>Qn2n7khI_Q2%YYwIV85%ROKj}Mu8=eC5nE>He(uf`St70ng(b9{$Y&~|WP{s1qS(P*usuaFt-__;;ZO-oBF)r4N1 zN$BU8JsVT*Kn|QVKwe%(reBd>J^;uZg z=0>UzQ0jc+zwZBL@OQ0XZ8dpz14vNs)ym|Pk@%8$&U|^OaQ1D z8=P!u^+P$*Q)JsdXoYiGTkXb2YOSrU;c19x01m{8Sw^MMb&dYKd^80J-hp zJRu`j< zy>_hO%PoP8Wf2G$dwLQR6AR(ywLsGtyh;EDp+|5pc4~zZn=QNJ9lQ4-A%oEArm)IL z+Qp>|dIV<6eY|A>Ts$(uO0m4zJ@aO>ZIQ9!es$_AceL^zLHlup053HkZ2Ks#1kr)C zi2=wZFmKAqkyu*+F}shqlzO3ga?t$j9$p$I4aVsL+=d*w#Sgf-xsfSfw_eOWuA7bp zoftd{M=+J(6m#=D)2&<03kJ~iORvl_a(%MxB?)7w%JKXFl^W3(S z>xG8H6FFAUvQb{mQ1F-K>o<(N=yn`Mz`@dE4Q=f^e0&3@U%_rwpn()NJWbSVr&K{d zBQ5P=4lU@mDR3_;xgqRA!>o+f`BcAu|32dL=RD9@K7YQQX%<5sJ=)ke8;EcsBO=fM zIf>;qkqP`+4+Pm%moMKD7dM86XE5nno}QSVZ}@|y!aMBjih%r=h36zpz`9MGA@HBulw%b-% z!P=9NldG$$hQalvfG(E1w<-+r9Jr_Oh9z$fBQvvfU#5yS8ojB08eW!!gYED|)N0%& zSVL9t^5m73wZMr1QeFgQ4Z4JnCh|ibqv8lWHMH2zhK&Ks zl$DnD0HzC>X&~TUpeF1-UroK^|DX8a+BIx_Uysof?V|k3mD`TQP@ZQir^;QF-`)GI zmb{`6-zIMAdQ}3c{Ei3J*VltL$eC@+mb&IWFFac1lnIWFhLKT0ys+D%toT9LdVa<2 zL~pfJmrR(D_>jzjb^FaQ`u;}R9*|voD zU{w&uu@98tnM?^LF0L*emB#aZ8UP$n6!v)zsCQTXB2wu&ay88=<*Dyv$wR+bEP?m-ulFJ9QxZm*6pXRqme5 zwbyUnEDmTJ^JQ>&0--NROw#t!kg-!IiEJ>CRz)^FRfR8Z?;!u3K!J7;Wm zJdC(U*{)_?CY509xxftgZ8lzB4QLk1vltv0_%S*-x%)LMyRuRT z($5DFenObC8UToW=xVE1=Us*DYuG6Y;XSOAe?IY=BbvI>Ar(=qz^)LjE(g-F2tvUPLuL<>RJ#P)5u#Q+nqc-=6f?S;(5#X9_IAGBa|iSBZR zhPuk)pi|AO5liSe<97e>PpqZ6SbJ~Inw(O-8<+P{h0w6PC`9a?tM zFJy2VM}LDTP!D%rD}3(4d^N`aXZ})n>e9;QtTM(`kEq*A#^|!tVVn zV*#FR`{bmtT|J>(>;T7z+ziQ=btg;lnKb{41q$cp1Dc`UKYH60yNd$~FJ8Q8uIK}O zgK7i(Mx4(vY=ZD--tFTzL_}(&=iQv23B!?b%(xx!;ezrH*Vt7$KA;Jig9ON3)Dn;d zkKznK#smi6eORo!{+m>au1^eHrd|sMZ94U<^g@nlJzl9Y!M$J-o>h$TJ^fB9*9(M` zNbW8o;u2(eXvcO}#xnKoYBfQyWQHGCj8W0j<|4ra7(F18C8MCw1Va~(>gAvgL`-UU z_*2DH@U#jLM)t+7cmEAA%D~{%{%IihTu6_;L_IfdQEEBB#`qeeC0u3cmc8HA1b1bY zLt2qvdM;QnpXCB49uDx6#|2>Y(=#)z_BUn`ud3W;>~lj@Muw8h>kA><+H{G5un#C0 z#KtX*Tb%WkupgN~;VXx4%|;v3q;k^?`sHsw==S+U4?%jq{+c~F#V-k1r<8E0*loj! zi#wXy{e2bYfg#yYny+dofuhjJZ-UBPeE$bushQ~&6YC1?VNFfL^bcRpW%?+z$v;~! zyMos;%vLMP*NN0-j)OWIX=RIb!i&{Le$oS#ow+?wGG`R;uX!nl&--p!L!09@C zz-wWwtP|bP?)pYpQ{nnr4!|~0E>jVEyiu50_elniz% z-MYHxiMQCnxi=gMaqe$GrkYe9imMeIzS3 zBx2`;M=}JQnduw5yKWvfetv$_bqPK@BTJTXQG*mvCkrbWun>oKFmgW`Z!%q-tg$WddEFSlHP+7K~^) z?K$LBMAlz}SFyEPy+-q`N9wF-|DtP1Xs9-Xxxk081$`m~UAiHqMf;=)zQNS{2~dTs z#IE$Kg{TT4t;!Rm)Ne8}Zi5%P1hm!K;G=-2VFA*z^gf`?hjtt|&9h4m7hX1X+?&!Ed1$QkL&+tPiiNj0X zH1|ukvAuX_Vt5kNWeisJ0ipuQTP@GIfadarA~)8ZIsHo)uB3eQxLxL8{{C8>SJ9iZ zdE~suMNX**Ze^C-?>bZ$P3g)O3D`BE_==;WwKZQAV0RI4R#Y0M`(}6Imy_66UNViKY>2uk1ZDCEjiv588YyD(6Wo9Q11pDy-rmYfx`Kik za}I~oF|I8=Q$~LG7vBU*&Ckur=fpMqDB^#$rI|HlDbLcf57AI6Ng4f`e!f22CRc;Ddmf;mw-Fz*RQ*v5bQGI%};LbGj zWYw>}-WqsFc1E@um2u5UWIpj|E3;W_oA_=^iEG|f?PD<{;{jUDVjxEoQUWKC0lJ{l z($kB4NtlWuzcUl_!_n>`Hz+j@KwdSKdfNGw=nOvV|AZ77}aj`YK9A15;yTjLzvN}j$ z5{#-AT%{G!I@$12LWvCmWZ?L;S?OE6mnkzQcrqyA#Qo!OyWBbD*i5Rk1RcUl{DK`r zUf+w)ihpkiSUN_1f2EeLYdk9@#LoOD|0ag-zDs>2%E~II5XBxgU^x)ZtPn&wQ~q-# z5i*WoL^u#%h8_CiV8Dx?VDU!(Sm!u^)But!fP4(%na3`&+`Fd+vVg=O5L`t-;sePO zfS-#5NWdI{N~2dNA*_e`@xBZJ3U&=xHof9!?|Q<-9A_SOCWww@Z;o?2-ehHMweU=Z z<0!dFNfOYtTY1StP-c`9;#Od3K@x@FMFoZIzyUEKmzTn$jH053;`ouS(JhgWpw*lP z>=5q-rpuMVaO(4JQr zo#;|^>0S&$V=mJ&J*1$4WB|UsL>^QwZuB(vOtSQR47YCvz$*|{Biy1G#*}$Isjf@K zHv@n*NNMSGfHchsX@V+AV1_t*cEKw@se?Eg9;W6iqEmoiKty28d&LWiW-4M6Vl-m* zuK`hFlEa)@;J`Br)=n|3pQ|#lStgh-BrMIzfBthwm0zz2AnUS>ABtmz%-+MtH4U>Z zof!rh6D>PFT=8)lOjX{Uy0ZOCelS}K0Wg8^-w8~Vo{U*9^xRu*f}6`gaEEeUOv(s~ z&jH*8l;`?~vx<;Ew9v3``OL?#Heb?4%6cNipdkS%!~$y2oa`qrz5|NlxWguI9x+ad zYQX3ruZu`j3PFp!oLmp^aBqVfPXjirv!RQEikjLIICj8XIW4|*RjlH%n-GC=2L+^5 zAL*A{tAd+?tlA2;S{vZqR;AQ0QeTOK+(P;U@p#L8@UGLb2n%-xJ$y$WBygxMUSyQ> z1ddUt8Q3iVDU-~+GgOPf&H0>hnu3CY5A|(HC16pfMKYY*FoLNwhP#ne4PdiKIt-#< zFr`u;zlczuVeo#uTn`=CGfl>xPBr+;=fnHXG|8r!+@0O916hl(u=rv>!>uW@56S{ zhNGg0#}3RC3Q)&^MB2$|B%vG>)DNr=yucU7q4Pxo9u>-mF?}chRA61>`sO)q-I4(T z=ailL)eI*teXLFS4LR%k;asGOD1z)^T6iiq9i|M++1A?CldOJbyX1J^ZJI&$c70L# ztBTOo`sov3;N)}2&oAcY6!gv+#%gph6 za8E{Da8TpQ-N(-%szwJ@qW4Oq8X^B<2U(XaaO0AbliONbEqJ#>?m$@y5{A(r2f$w?GDC%2gH%RYlB7`B;#XnYpE z5Nnk$?c+&yd1RjQrVndrXe;nqrsa7!$vi^%d4`@kigHj8=S&3=;pRkAPQ<;rlTFHNxvT zWp_V{bh~0~#T5xDMvF`W5QgwnryZa;d;}uBZi6_VnbR~!_1YZBKtuC;d=A_x4yi2BXJS^XFw6<~%V+ zj|P57ygs+wE+>95v1`C14rT1b$Ga`EnAkV)@WbGEsFeD=#mZ)mpMid+l+^B!ZgNwv zg-asg`Xp^8lIeD3pT(3~FP{*7yIFAF)$|btt_Ly?EdX`D|mC6cm1fu6_i~#W$D~d8= zYzfj>Gx8Z-sX@mPF`R`{5U=C@3u3$b4t9}KmuM#R4pKvM31HoMEqa;2##ulPfa9Rt zPu4;4ERrBcGST1ys46N3L87Bz72+0y7i-8;m!v|u@(A!hGMRn=*9DY*`>>m}MjqlT z5euEsa7mX(VCG6~h1(l%q7lqE05lPN@_Vw-Ua&9+2N5KoR!U9nVwqYeD>xq>EPodR z>!k)hJL34r^$J(>UrqkDJzD1%2QiosHZb?guerC$a8U$cbdVU$cc*eN?NHB3&DW;C z`_II*3^rLRladWU&M-s-K-uT41<*l@mKUKehszF#yC?DU1i+*oRg8<&VH1l0y(#(9 zvjXpNg6D3-Uj?OjiH3#^sz>t)UdrLTmi;WEn;ksCgBNkuu+fm53YjhSeV_H8WB1GYhMy& z(wnxuR@fD?rVg`StW4j#JT`|L@$XvLjWb5PP(V@}?uv#2gclIL+lj~S(g2x8q&aAv z$8gmPfTjpwE0JzA8Bk8<)_x$djKAz%)({9+`-H}H30&!cyTC{o^X$^bL9cr_I5d=!avOePeFUg@frw(ii-qECc`d88zr+ zBNYDGuLAlhE@WpW+^c4aj=4Zagoz1k@^Aam@yONIH83a>TLm8GSIjz(5& zY&k`$&AW(Q^@y-f$w>)61HFA}=1okWnf;h7wB2bA>i8Fa&dSNjX|%$qc4vSNuIzE? z-+Ba) z{~xq$OxxMj(61+nFj>iAQu;M(KShPN#tWkaMiZQF$#xMetNvemXC4oA_x}HBUnF;% zBuk4DMM| z&*$@feE<0U`F;OWkMUm5xz0J)Ip=ykufLA(wkIU|YxqkzG2XbZzQ;~3akc+tfvfrU z=lkF)Gc=4?s0XJ;dq}4FH;>okYP8%IqXmYq`>HHw>%kv?^v2QbxNmBAn}1@6@*ujx zKRfiU<~uov-N#yN&MKzPQDP{Ar#A^_FG)O}>L2?-Got$3h4My9_7yV}C}h#q?%e^H0)Wn-204ia%|FI6OYbnGO9(+wA*4J1Fz%q%WwR% zNocG=s1UOcM|4$tc&STQ1SKIYUM=Q}OZYhoOPoQd3;UUUYO41lK(u-0RVL#EbBQN* zL!Z2=Hy6yM=Q?-TGDZ39#eVro_iwsHnm+&hy8(TN?7w4{oyYvkbiIJU6F>$k;wijz?M!aHed67PxBJEs~?|({c<5dc-`uJVe z$BXNDoZyFMn`_w->*e;)26LWA7FcpihF8-ik{Wq=)Jq<0scoJYmUwP+x%q7~x^s0& z#MMkCkI1BogD?BIS(Ad+Z>|0__DSQeeY>C(lE1wwD=XjmjXNy$pwZR&%d6+t?8M&k zzS7#@Drntxcn@`d_hsMGE!T{7TW@mR zsxEGAyKB_hzgG@Im6Hz=-PGa()HSgY!SyE0+#;C{zrdT!ob%Z zx_K^%BZXZPV+yVySBJkJ!YLnflnpO9=QC9})igC;7OHPbqJcs5zdY1o-=}BCF;>H( zS)QG3V`6`$R_Z3#=Vv@Vf3jEiu!lNNK2#0hIY@db+P|tYNIY4NNcvv4sbDr>LG58; zRJDU~yZ9BB_UwxxAt9p^BO1S+T!w~7xISZ74aVtx+v}XYqwJHFK*{t{GOM49IsdJ&|Prt4>t3Q3UwXo=1+c83 zI+fVU+j=TxL5AG@WQhIlgRYlK-oddY&7SzIYL-x4>&j~}(b4jsEgA2{q6?u@#Rg5k zxe{xWXd^Oz>{88#riYHFI#0w5N4_;ViHd8a>ZyF5f6FBwsz&JJDtY3LoorDC$i}5hOXwL(yFC~y#YIg`!Pt9A{#1WL`tRcxDA-$X02lse=Rk{ww68-cq(b44ixVRG%@pxNr%a++JYns&l z@Y!-{#sw2sGFqjY4=c!oZF4yjIQ+u*)tLzB zAr;xBKeKUOYb#QK3+vx8)=YdOdwGuyiKnzSF+N1_)@3WdQ0fjo-8Ww~8(x0xCT%uz z^X4rzQ(SW)j#GV!_R`K;sCvX_ZbBPG6+!QBEabzLzCHQKxji<~Cu^>ovD=HuXWtKL zmm;;I1v$0!NS;2=UB2B0syay%3)%Xf=`8&n1~XIUAtfWuoOhK}u04KE?_YRYlpHG6 zK9&l_u6RL-t2)_b*w2~l931kntJ#-}HIXHe+YBnhR%|Y%fk79+&Lx)iC(cubw9LTH z+Uy(2$il3X7qUj@lomL}+>_vA$z&z>+CLAXRwX6N^!3O}guDuMMZ1Nq5d26>c>vl? zRUikTstOdf36XX3G=l-UO_HvUtNBtOc?ef1Rj9<71C=+FgG2RwZF(Pl{-pu32p$|ajq%B}qtSJOw}6o#Ez-Bo!mK4`-u(>DwxifS zHg2YmMFmw@vevvjy0+=D;cTzHi}67Ji|g^?aojQN-44c|r+l0q?G^pJ(c&}_xMtDG zkCH?l1 zVo$ERK`hcA+3Ul(C*f}Az3~b0O{HTTSW<=yqvH6fTc3o`$(yEla&DP>I;3+6O~ONQ zMYHb}N_*}HJK3FbpqIs8im7HZx=_lWVIRBx0ZUDKhpxrtw)(H)ebOCZvZyBLjvp-- zZ?=UyYQxagC@^d=6mQdD4(g3-3wKM?nZcU!UyhBJDZ5;?FB~Z0KgR!z$76i+i6r5% zFE1TOJ72T2NnJ#xQC)QGWDCvd5t%wYbgjL@0ir}Cr#^`EZ-B<=lbC3(3#hef2xeY4 zlWQMiv=o9Jh=S*6^|~~%kyOU~VE=tq{KbESh{&K}QeEYmN~F~_!i~1rdy~4CoqkmM zG@i5~88?P*juTf@oFg6Ue!*i}GmR_F`dn}7JkGUaUKCd&I=JxQ%2g*v$G*>=0qlln z$-b)mU}uqC1%(e&cLevvxwfObw}>9NB@>yob(lp+zeAj%6hkMIokjY7srm)#6AF@O zk1oZ}ZF$Qc_dPc9t&Nyih~+?RlRUM*n>sI>JpUuR^ptKl)99gkauU1L)7e@RarXza zb6=$z9M0xT?KjA5eSB9`yg>BS?bs_sXbdtoE!%b1&NbRf05QUHvFI8Y2XT^0&X)<* z%=jbX$?i2wWl{l&)JH?2ixJPrH;dhrx}(L#&-_pJo%MvP7pt^79FHI4&;RvI(${j- z(^F22Xz$HVXlfo%DLR+?mZ)g`=1Iy;3M*~)me$j`V61C{>7{sN5s|!)BoY&<>gu#6 zcIPL#CRbYD7fcdc9rH^}b_>oYdN^K^Qf1zts;O_B??SW0`LrL;3}BzKNwnS9r>t17 zQsR-!IhQ-DhqEMVcHsY9Dd&ECGV;J{9Z>F!)pY}@~-wL)+MK^WGEdm;k+#)-;F65)7TKhdAJ z7<+I&7j~&buWHV9YT%Y#EVuWm>`H%V1YNe~7lQ6MI-0fIH=Tvy>yp`-zW1G$K?{AS zYK)MPtDhIxB-nB zVzlY6vQbu|&1;wL$;F{@U2gwT=qx}Nnz&Fj!M+>Y-uuc!&O=^%+wW0t+ozqZyXW5xfn33+6FiLF4jG$kqWwfOd zvW&1>wDc06bT-)~_BV9Ih#Wiy4ra#WP%=IAf8|m=P|r z+RQ9r6W%>*?&54qH&2%Aw3?jPiBa9&82MI25j4db+UkVM)Sqm3zxUZ3B8!~#;Dbzl zm}}7uZ%o5SH$!x)+g?!rL$|+MkTqkL?E=O6+{Z&71+%;HpROn>`qXBTbwY8sv3PYd z^3Pw9n|@{}=Lz?(_Il92y)N5k=!<+S2WOjrP7&ZyjXK^J__QM?U&rYM4e)$l4IXcs z4c}_Q-2g+Z2zF4AUXEWtqdeyqsbl?&0Uk>P zz|ERP`6N&^=#>NDiK3X&L09tgO(DJ*$!Q z+DpRVamRNuXJ_#OdDs`q%*V2xI^Qj^%5{daAV%KN4rOXcZ!H@t&vgxeKTouD_+^;( zw?d$()Am=B_|bcmj2{~w?ct>QnufAJV1kYfc?FI=J%<|)S?SGnG|ry~2V2EZHJm}N zRQ5J~5#26T-;@mbC8{$InSQAg_vP!vQ6eZ3VehHB__m*f1 zn9vEjAatrbIcOoik?}mLI6{_FEYMWXz)$|X&#h507#J&qCfs;>!40t|wq$+2!+rp zPpJ=FvYMvTzn!*b0-jk5JgkYaA-dji-l8`!f}hUyM7|762w*k-WT$k;bfPtNLb755 z4E8XznSt|-T4gVspap)LJPT(c_};;NPouP4Mz3mUX!O1{5NL!#GzV90Vm6skH%KLc zS1`fCgnkv(74Gs>P9&V(;uq!mw%>qMxX%E*N%>%AYPH|Dca0P+X=gJJeR{cT+y~9? zbzEofo<$P@`6DnPG(Gcl`&C@zlHVRUteuw)=qZdPy~xFpa1o~?e~{zvT9NJ`$8EgX%s zJxy2qZX8cHy*}_kzE-Nad?1ibQZ+Tw!ZeEk^U_}b(0NU0qkQ0*4Hg})-YeogAD$l31$e8I;*X${0`!}R!9-5vwyx7t%mMOtcIZgPHH`Ib*$T3TOk zV1bG~gx+u)%x^q=;v4{aXfR>+{xTEblA`OduG{-`(VXv|(#+&~yGF;5tz*VtY7?uw zY{8*Pvq|42$*&1Ba?wEd^71qf&?BvfOcgutoND}n zCcVfHpEMyyL+@Sbq7>+Om@F%cm+FWfEP9(|I#{#~S$wAMc3pKnK~dK4cG*?e&;Pi{ z%zaAlbP#^cxg`2ep`6{1xVUsljV0`C;wnIJAWH9V`S?%&dprl?=rq#3Fm8k2-c8;! z4yd}W;G!}mFa=+gt5G`^)&+CwTn^@Yz9OT(+eSyGPQbuIy9PT;D4d9=&9Ohxao~i! z-71W3bXIg$bCs;$YWFn~XEOes?$O-LoD>(UP4VRzO35`0IblRO604=ss?1~BQC*-L zFuNN!uM?ja_fIJ!JIJ?5XMI0rqJBo^dvJ(VdDWi{6_jvP^!tx>V8%=EfTuBCp!Molmp-HIV;nvZ^q= zbTaWmcD#LPd*jzaVUrkGgc^tR#C1obwDN9ckEgM zcD>xz18;gFz>zW6FpEnYO+wowhOm;9vkFa&faDnXM~mdMZltJuQL#-oe>6Dzr^D%v zpHjY6#hkmpPmYh*+{Eh158o_%sS8uNAr8}X0TxPwlX+wv6Y+E8ZsB#K)HZu6w}oQAT1<6HZg zGwQY-TRa~1y3|5@KPz`7xFfM`kbf36pn;??W`&{7OKYBQ* zE>DXaIMF+h>h+r4HjBUD(^_z$cgYAG8=nvlYB3p*qjLfX4IbAM;Z9F>z3rF8rV9bY zJ@$KDT00xhQd(RGgmG$Aw~#;)!>s79C+i3N-0Vu8sbH#eu>rJ?Rx-!bf|Xg)DsJj9QdjYo%-|GR;I-R!Ec!OiX$;GC+?hHvKF8Q&79 z8~x|%TsCf3C?~EMq zIW}4w6*QzmxYqH-Og5*a zGzHuXL%y1L;VI{&S}K>_118w&-#xPp&f4MXyKexFr8Qy<+y zDV1+qN(iuc2%=>doAfoi20BjQ36&nKnOL*efzglXH^yQbMaovo zP?-LwuHpj4PAqq`fSFTWS(n*Zo1J$Wriydr=7(?JXWdraIXXOiyL2xDjSCRN?M$``knS5#P%WxZt;b$`MK#ca=V+G9dFT!viNeua>gEC`s-3f zAt#2gW4Wh%cjGMGokUGf7y0!>HGVuPC&@;;qm?*GBKD?ue%a6=eob>k}GrJsqxU^lSC4Wx(nhlJHVZ`8 zHVdY5QT59iqU{ zei;DhYfX43`TFbj!;UqI9J_KoI^N)7kvwHr>tC4=$T&Nyb{EA3xV)#=iHg1XOh42M zVVCWhj8NcR$g%8+1hOBo(Fvq&bs)-r_B1pSw(+wFid!%Oe-F&t7Gzv2_0L?fo>F=| zQP3uM&+E~Gy(gEmU3l|r_AfhMp^zsKbhDk63o{7gL4^omZPy}u{kQ($s45NSE2W}% zNeI$F{5KTxIrDS}3hx+UczkDS$vG&uTM#caNfk5GfQ|JN2O*ZMI<0maAIxhOh+vDLBfGmMCnTAhkW5nrHa`N3eT@6-^5aD zTd!zgbLC+?1;fHySc=iq+${0$tdfS`l+%M+2F+#<<7P*1pUvwipYF`QMb5oyHE zl(TBZa(i|rt@eOuhOSJb%||Fj%E1f8KOHz)IS-!hQ|1JiQ@mUw@hD|>kD{W@y0D2A zZ}YGof3gOV*tjRWijzay>1%Iy0cDCU`QB=G9$d)=-^YMFB!ySUde^RdTk5zoRkY(f z=@k#zaeBwWwcz}#ma3ZPH5fqb5BfVhd-b`9N((j8iGTJ&Xb)=f_*NWWr-rjN*I7H4 zH&v&CM-3STpiBV30>Wvlc|GmeI!hqh+8+Y6c=&jP&O=|07bCXE-L{+3iMcGq%Zml`K$?M6vf}_gQ0(Lv(~e}tkmM@;a1_uDeFh<8;n|Bg<}aMd z$B*wm!Yh3No`b+`sg^?_`=JE;t^IWR{Ws2+#^0;Eu68x zb97|VbTRS_4F!_&9ehr&@u-7UY1*gbETA~JP^t5%Oy95(+6qka_%gI&p=m?KUFry4 z@OI93)>Vrrlw8;o097i1A#GWm6bM~*Hj`ig@w*T#oFR5BWm@M31b&>kps?*S z=GQftj{ZKbNysmIJK$LV-4G1X!27pjfpj{~PM=EdDN(Z6cb>lJhr-te)ZDi22ErdE z-OCDb7Z(pVruU4B=yrYRQEERtu{I7^73S5IjTD-ThtT501^su~$1#H~=Klg<{ZG>* zxPR52Wh(`zw)fxvKMilWAA{kL#GOB@{?BvrD^^~@ZSXqGgcSD#~_Gn*1U14K3Uu_=&WBrP{2{ff>R4i-u-Pi$~5Xbxo~6{OXqGW(5=P zMwna$;kQ;9FPF58=&tQ`t#|M$j%PEq%qs;q(V`$CNie|Rv`Zo1{NZ$k)r&KM#as16 zADFu!L4V~iX#+ZhKLO3W8hsXVymb-X+{ z)o|6m-rYQpxST_q+W@pz#Sosejh@a(C6)?K?dx}>I2U#UQZDu`Q(x9Q!V7~nNHZUBj!n8-T1VSn{)jv->#IGRn~zXSPpu>Y>) zJFxQH2=My$BenmvZGv}IaX75LH2(}|Eb1Z()RJ+$rqO%?#2YX!QcBtjJtB=!uCSo`uQD* z08R^LOPkRFso$lJ`PQ&vfdA33-Fmf2i)1Uf$j$Dg`LpC`<|z#~dzODLD^RJurZB7i zsRuFo8f5_tnHMPN}dJW;_e-B@?@YuG}xc`Yz zwAi?8jIdEn`rrIt-+1@R>lh5q=ylm%yA}pnToV6XTrr%fcL#u?SCU;B-yPC}FrqIw zLtSs>b737pNSu?n?7shwjYTULpaT`s@810@u4hy(U7?scqSJ)92z0rRlH4pkx=L;f zn~)6F$wegX;7srhh#7o=XU%;J`9~aWS{=K(|NL`f40V5%4vN!TJgkrp4tWX?#$Liw za8}&rR}b*${D95>z0uW4C-t0>$gN>3xyeV*V4P}Jyk`*xYa;;)$NBobjuG1mX8vpOE;o3q{g8fy$8=E?DS15Q#c5(7Q8T3b7?9g`EjT$!Un zdCON}Fe|+y=9)zG{onnf9;~n(#Vt8zzalnNo&47omxGI#Ot{Z(m=7OaOzM&xh~JEI zF)jb)e`sm{^_>6Ru<|{K=%Y)ys^YD)7dzNVAuWPr-l%pQS z)#X~_LwB=(w(XU+2gUtg$3lY1PpyrTS63DgVPV;K#iZVUZ$0Oyt_{FD#5wPcV8^MY zNVg3o%6Tm}fA4{zL%5cwS7ELVXROJdjF@~Ko>-Wiw0Cer+fUeRnhs4Xpb;m%%Z(Fq6RqAZ%Ixq9MiXYGfbjw_z9 zKo#ZtelJUw=A+3H#N&Cl>-kb3AoSrtS6u5s@(;?8`{`b5Aaf)Tr9qAhg=hKC%@&ko zZWAal>l+$uW9ma6Y{2BE0WqZqv<;7W0I{$f)(d2JbU7r>TzwWs_AQ5Ne-|AF6TR|1 z|LOm^FT%q1LBxL4=TONS&_(RrxijkPSH1M0_dv`G2ad_j>{fiC0UqBrFo(&NTDGV# zFNKR2t3Ev3A^GDgFeUh2u>qL?6m)0%jsV?dP=>v7WqV++ncP?^FJX!{*PnQ%F zY{dJ*fbA4pX_hIW7yyFzi5BzZIFJege+cRNKpt$JoD{8j`&B|p%5Wg@TWoo~1Nw0Y zeDLoKuRiH?qncipNr^)-+x z5BM3x#xN{d|N8Z7kyci?O=+QGrVXgVo`w>`g#UJhs{E0D0>D~+Q6NDCwe3YeK)v{w zK5av1dO>qW8{SMq2C}=K)d1dQ7{jM-OFF1Tq_d(qbWXEzIkI?*f2{dmC8z z4<0-ROe93;uy#$*OjH9|nrd>F`rxoST$fcz3mRE?N2UhA1KsJ&`39-T4WS3GC^mA#B2bakj#wXiNu23!LaTv zAZ-v#sZ=VtU@}lMS)W#SS|LEN9+(N<-8x0Svs3xN7cu&ASwVWQT^_!(v(smgZ~y-H zaacepinubIW1Mu;jeUUNVEO7OFqEa|J6VD!9|ACd>M|(|U^#`+)}qlX^ozYG| zPKGN`l8}gh?r9WA!(K;6gA$h?7)qcjggxJr^87cT#k z01n6)rC46T*1-ur@~V3M=_BK{$_nvJA#g3?DM66}oI}hfgAL#k*2=zQ#NFJn!zjZB z5Lp12$-G(4+NFn>6F{QU^ZjGB1pD&1U3Gu|xd%Ovp>nou$b}aNioF^T%0ld&WMR1f zQ7t52L%#uL#Q*W*Frc5xbB+LF2-Il^MuRe$E%FA=%i1h~n8LuW&EX=*5RT%@`IHAJvRC}ZK>^xE=mtcOfI*=isGEHx=#b#v z$4NiWE)lAk-Qzr}yUFwsz+uK+N=v+%p z&d2YKd*bi^x;{Z`FSY!7DqG|Q=uBF_Q#V%WulSk-cfbt+nG&%FA$In$w99-BkGSHh zA3~6YNM1T7Dyj!8va}B8SC?!c9Yg2f?1L|D)Ej6?m6?3J|C~1wWJ?fRxCc~~S(Y71 z0RBn%2Sr9Ro1{v-U@`*;;8$4?_^PCak0H~|0Vzl^mA)VYa=jy7A0wc8`9atUeHOx^ zA-Q9#MP8x?^<#OtLUQ43Jak!MAchiCtX6jooh9zWL60qQ`^TTI7f*-=6B(yNN0NXUOIo-q@m^SDs#uYEZfknx-{{k5j zYuU~=pHMphNJ-E|f>8EZy_tyA27s#8!=`_*ul3r4%&nOWo7>(>h-6dSa&T+nrcAd< zNXxr42%idPw5(YIc*QWzjU&?^a{&Yz&-;z-mfU`9KB3 zF3gW9QAC^>%;z>x0{NkDkS8-g5{GoTJaM4AQq1armcX;bVNn8RQ^vG7hW2pTyCb+8 z(L83E1a`BsN+f<(39U4?nSBejt=9EqH}eHGF^T-E+cm}9A9;IwAKu;T0$eQMslA5r z46x9Z8<{}bT-SHn>dhk+Jf5~wSFEsesOMP`E2ThO{@w=)1#!~4zXT(c9Sm-^fd9$7 zqkAOIB6pD@pqugOMc*ewI6<)W8_)qQM`l2cQ=LKto9@4zah{AMyZH|3(DNd$F=7I+ z5x29mo4qPO;a42aFo}ebpKT-!1fWLzF^&38m8LC6DBYFYF6C_ByZ0y#2q@MG?gzpS zrY^4*R^1;TCjmuvz1To&HuX-M6@4v5bdZxHc$WFzI?6NbRxmmk&CFFz=%DiDsaIU5 zzA!yERAc}EzO+`FJns}>j(lt+8jd{<+^VT({pOL?;8*b&ns0x$u>>#hCIN=swU-W% z6__=ZI_~oo*{=(Ptvc?CVkk;PNC*b0B zy%pi$yq?_(jDf2e7>TO(<=KbZVW3Vy)2TYgf_xen_fZe+t-5urn`*yV0IDPtkUc+t z{py2p9RXqBG3`D1;Jr0~1GbE8z+wwN_juBY}q(M@EYPswVJoo0y!y^+|o%fG$WBMpbiiQ$s&Jf;}+Dv z*43$lYjp$^wFs`4XGiqvN26s7xP@fUsRu$X3Y1z9yaJ<^c<4hbH(o;2O`s7d21{rF zj1}pl;f(RGHq_78QxReVMjN1Inr7U|P#68n5HSTLY~!K2MUc)HINwk)N>dHnVc^n* zvVj2*{b6FT?J9s1zz45MNG@!NA1--cUS58O3$O-jD9^5-@f|wOUEr{yaXRv(Zh7@- zR5joPjGQScE(TxyW~w&K8!}954}-fa)@HNhmhAP32jfr*^+Cf{C^P7|jZT$8Lqg~V zRQ}*fg7+nqrBDMTSaWB2^mR)(DoMrQ{{~Wsg3rd;uF@=#`+E0FRTs>;fE>IyOKK?r zU&>qV7&yV2*vTeH^bN_-4|8;UNG`I<;sGN^Y&gg74|$Q7=;ycH$caDzJqm&1{@Irf zCVlG0r^oVha9$aVs|WY7GX}nCv+M`d=1-Cu*dhq)EyfGmEVN)`l|6S3u|Dn#`i?=r ziSFyOdM&hmaI_^9FQ_l*+T|5gTl>y-y@Vu66%g}Nsi(ZpRhK=PN0ZRIJ(C zDg?vj{x+|kQmL6AJGv$StXC-*gIiiL%=K||!*op)E_AeWMjqZ?YRJJD(rr3~-~3+i z&pYliN<4SgD%d>WI6xHq5w}V^o!`pUGYY< zK8xrG3X}7kTRqJJf04KzQF?K^H^IuajLH1`=)~-7AY@L&s0LO38aTtYrRJ&Nc4!lB zUwWqIL|$H2>W+zt(M@i&72~J@yx+G_v(_wdr2D`VAlcj7YZd4p$I>D!DP1EkxWL04 z&W2TpKx+5I%#4GbG~1Rwz^f0WtHQ39$Q->8G;?N|x@3ne?PF$Q9MQb`JZO(Cc#Of& zXJKLK-2>MfMlfs^6wGy$?(v7#@URH+GCoewVP^<0DNJ>ho zx#FUL0#qatiLGXV(e3T+h4WT_z^ZJ|%Z!G=m30l@|cNN?i+A|fJoy3!>AVhlY*WfYX=fQo>Cf`#5| zLa|Upnn(#fNS8oD3jspNz8{=<&ws76&WE$t+Mo6?lNnaXuRYIQulu_4;LK?Q-e30o zg27;T4NvHu#b9{KFqjRY|Jexdlpk3VhyVR%cjBxu2IDJ*!QB26gIR{RZjWOy_#+t1 z#1#xi{TT)$c;h+AR1^NN(bmX755qb?HQua8dt z)F(zT`dcTN8_sWn6R*Q5RoC~JoBZ#?}soghQ_H=F)jOsoZje`~4#S1H+( zfv0uo8yXrue)2@g^8n`hI^#X$wZ+0Lk`5g>@Ia;CTS8o%Piy|mr~3MIubv0nq>tDP-7t59>(sOTp|EfB0d%bNUVc`K`q01?deJV~l^BA+pwMUuc z#poZvnp49y=)2<8@ee(xx?N}d*zbA7s&21apOlkx~KtyGurYSF~Z1VJiK> zS3lm@*VAiG(6VcICeL(>>vCIJoGJW3gZr-D7j3yU-?8ztx%RcMuZHmf0Rf>xDp?m( ztS?@CD(q+X%jV50d%P)SZ!;Zr$&MziaE99WhGSi>DH`wZc^ggN?hh zGcpd}=M&ijCw#cFvQjdcSD*Ca#cvf$jqWvr)ggAH4KeaQv%~vkWWw&O=czeoqIJQ& zm=!D_q3oT7p0Fe@8`650GC6j{q`}){m3J08#sE4u(N;U*{zAWg{aV88un;Pv z7F=shDkwNQJ2!{D*QYcxGE!aQF=YGc(O!?Gk!T9J?~=op7smulMUFeES1LYy_|SIX z-JOs)|M1~Z15uw> zrrG?rWla8AkiQzHsY5kk={tU+jJ=Mwei$5#Yf^Jc-s@>?ZT;M%X1C#6yj^zydn$@@ z=wikRYZKVRjeNq-EQwdIUL77AGtjG=DyE7CZsh&^OS#d>lY@&x5fNZV`>f~!0?Eh2 zy2qy{F|XqOZmf#L(Yo%{y|1T-U$nZUGPkTScaBBxBj?srCFjPPO{~TIr{4>h_N8k1 zFHQ%i@R4dG#Ka^F!b3N0ld6LK7uV6zfd|i9D2EkGhPC?TmtS05b+8>7H5I2YMZf*s z;9Yk(tv2#_|Ni~KNl8iGgAb&YOI*#&x*QV|Nv~en2NDk+JXkTWHrf;~M6vR+(mUTw zi;qe4TU}YIV{Q>rJ{-d(8%9Z?omO4ww384Y%&iqQ3ReQd4-PH?@58!M^PQR-ecdsg zq@(m<;Wa1zUB)=}=mPF!yeg6mMcufuu`!B|7JI7LM(=!3 zFItDl$VmG>S@PsrEPFk_=9y@fcgm;!*~*u9@7~>|dgBT>rY!O{j!q+*_fxkB6bqhY?C*=9mqZhfZdbF(2<>ChXKL{S4_554#vhxIcR3Vx&zF^{R_0T)vNR{ej>L4{{cl9k7z~z3a%xU6H8Vc4EKM7Au%E-vbl}opd`S#Vw$cVOOQE{E8V<$6q&XYL( zo~N(~-Laj`R*c1?e+=|y%-;94VM3S2mdnb@b}87O(9=T}aXdoQ>QI|?v71#xyoSm~ z-aXq<=n4)N@#@XZmCJkzCM-R7D`J~uRR10QW0K2Y-TrXD?fQ)G2extI&biZS4uR|NQBuZ(p^8nxGeflo|8?+JhEacq zB@`pwNZ;Q)J972IMIldv^Ikp?aD%BHy(J!oomvohOO{6C@{8oa^T>44AzJL*+?*W* zF!}49IW-l+n4%Ydqc%0NKdpI9=L!l_;PuBK2gtU(GW6vk$bg@~>O1$BEgdh;Oi2kY z#8Qq!II@f8eRt{izpWkf`@!8`e|R3||0cL5_NeE&-__4wxKN#>9|GG_kZZICZ=DE( z%r@RziW?ptJ_^-EkK`SdoMRU*T<`$*u4;%;6e4d&D}K9eqPq|)>@)nAN9WZbREP9z zzoT*{8v@lX^hOu6qU&ZIY-LxtlHuBUQz>&f5>XV$DAy)$Vv08XNw1gFpYoT&iS&Kv4h@tz8 zo+7))*gPPxdQ?!I>D>Cp*e*KHczR9}GmRe_GsILJzN7Naah6VI)YwI6?<8{BROA-7 zvm4^(sG%xjmAiFBSB5$XtUe*~^Ye3S#|{7YxSX3KpGz41Y!?~#E)Os)Ud)yJbju5S zo}_DkHecvWj;OvTXthgYGDp`gI{GA&quI4&L00y>hQY*Hbs1m>hxm2s%tz7b_M_W4 zLRg;9V7cz$YAblA_D*iZ6kY2f zCL2!nm*R!tdUXmqCO=KY-mUOyY|$`~q##YpYNfxuyWYj3V?DR1^c0E0Q2cg0eev~FM?p;aDD4PBZljaP`}FutSq8Z$u9b*xK|g_ zFSbD0I1aVJEhzSK>$~>r#{QTxymLHnZ7uroKJPZqsFUfJvcsWvsLi?hF$vNj`kct$ zs6tN6c0ob(2NxNXVnsYV;WUB1GH@^2OT$qa4sePPC_%5ce|*0AZ;bkiqR(iIQ(ixd zMv?Pn(M70>H7a|^M>|tYw3j3kh^tH9&|F9)k$O;r7#bo=O35`!kKWt(V`y?kF-8sN zI7_mr4De`>ul*0%FbrxQ`3hD!L%%YB6X~Gn)D-&p^XD4bOzVFJC7oLyhJ@tzuhsQN zcjbmtlEXjyR^Isbp++`!?L%j;H5wcm41aG>D-sytHhFfy=s>LeKKd^ITPsUN-@>eZ z!Q|{%yrF;1za;7CL5f>RNZL(Thrpux>lS79KIqM~v@~TBVJS^%=G()s`)vx}G>wR5 z?e7~{g^ejJs&6Cb5>!S+uh*|m$N3E!+!L$~P0d#JJn&A+mr>4&q(BMW-ev4EGCZtT z?A8~_N(@-OW*2>44i#d*Kg?Ki)<24EIauW0U6yOK*IyL#Zq#ceA}cI7_@a-@Pz{g4 zaY#M!J&is~VI@<=teSh5c*8#~i=M@zJCbL{2-+>omzu(@c961oJfS_O2@_0I70gGA zQVJP?MDN3n6-P9DMcO4~Nu$rr>m|fx#R5ET(MoON3kfUV(uURPiASZx#kIY;$-6wi zeF~$q7ve%}hes$-P6qefKOUsjqq1O-XLyiu@%U1jiS65tQf7eXJBmS^vg;o5&x>b0 zp&Ndt;%=>{hpJURh)A&Vr`5qAPP`VGHLs0H77bT4(CY1c?eCzSo)H`r^n7>y=*nw& z+O&`K#u=YUk1xeT4W|6H-*gtuP=TDY!_4ZU=($9n@0+JADqM`WkZ;&)F1`D6zjdA_ zNwjm{X>Io6IR1P@aPZ~n9KnPl%a{%p1#y7q({C z)1iU}SAoo)QG-@TW7M=T*x;ypjF7(K8)%qSCKrt3YMq|!Fm!T#f0ZLH9_gS# z@0IGN7ZUv~%T!PH$3_bu%6G3J&pFoUXmcbzyED&a`mUN?*b(BSB_{A!+m|miw-cP* zi5D*FeJAVJX_u1eqJE-n8aI2U1bW(c{gmrm^Z2r|J77+;%?)@*|s30Fjt=MyLK+e zX0nw`>=?Uv)b3=N5~nMp*^c99J~!vwFRp?<)>&v&Z2mEkg6G6Iz@5l>e!_}~9kzbd zJ4T35JK*`ft+2^2W~o0QXVKj>*YUzp_rHY5x0Wx)Q@_O$4Ja2b*37Cn)$)XJcLpWC zZiR+qV{L->`BMSQ_e#dz@C>EVWUoyJ#N@DHvrnq0Q79zWfY1_GXJqdMpIimRh$RQj ziyPgi)tWT9kJr3^_^nOw2ZmU_A=~;Ea{xIkasj~4+U->reDX)7KfbnsKNyShm3i0A zdb=AM&Q`p@zV)TWs$c^S`}moa*_0`C71givYoFN9g{Ze(=CbexD~;;YnK-+a53l91 z-Pl}5rnE=HZS9s)quN(Z4Mj27#rnrFEpPf{J-&S7k$j0C>HfSpz=^Q^CdANdxm%r! z4N^u{X;xe3&2H2;CCv_H&^{fmzeSMqABy*0YR*s6PZvpU_Mm1JOH}x`$9m(MK1haA z3w7fRBU@)-l>6jv!YhF_#~smZG$5`?pgSZkIf{>1)A5*JpTz1 z3GnK&U5jL%{JWoGhH9!-4iG~ZtoTocSIWnoCF_SfZX5S^rb_-M1DOUJ7ppGTtrD)y(6NO`a=GHl>9U13g2%L>PI#cnifLY>PI{W{ zpfN>HPmi6&Q$3@b)vR7K&n-Qm9pLVO?nCwF^b@nhZz~5(90@!w zE>z}=aliM4b)3FVuQ7P$re%5?(`R0b=)Bdta%Dh9p7>cTzbVG2a<$xMscGezZ|$dy zX2tx;fv5oCL;V2~PvxGSqiH8D)5usY%Oh9YcFfH9gIy%>7 z@F&0=MO&S$Z=7uK^*Eh*#ama~(sWOH{bz_q1-R3_14S}8i>k(XukYPC!=NMxO2}1eyRoOra~a31lCI^uSM{lcLWRN zB-WaQ#K<*-!?m9uZaz%*U##|E@!I8wD=mE&OoGINCG1oh)3dRmtS48!t}Od)({TMI zLL{CyhEg6rv3Gjom2}6o2%Yjk#cErl#c1_yZi(7P>cZP`;&=BXFu29V^6HuQgB$8R z5A`o$x6T(ae9tK8u#k1naG5>^^?W{=D!xq-R10A_9dFzug~6`#SfH^ukPua;V(iI% zWadN8GC}9y=la2FKLcU~ab{5R`6O&QFRAH%hfOQ3IW+9yY#uUFRd!`!=p2Kfy>X?s zv894`Oh6!aVCij?YjY)Q34LH9wn=Qy7?tfWjJt|=#cG@X^>YqS;{4F?`*j&UG%J*Ft*`Sa(Cbt8e|;)CBb5>jwYH0F~s3#|>O zvy*+V&%DfGCw$RBiGFZjy=U}$OVQ<3KUffV1K4A!+KiJxU8GKAIQB-=%;gvy~?U==1{sYBe=U@f5 zUL$GBnq7-33wocgKG|Jlm%v}`g|VA-75l1VmP$=T0=%|P>+8jTRHcke=gU6$*t~3Z z^SSP6Efw*!^^Ff_FVuOKZ?t~?=Lbep+-`10+Q|<7Z~31e4)2O-PQp?rPQSRYuRaq0nz2(~4=>2{R8yCtcP8yYN`Ui=z0~++R2d;#M?reB?d7@a z(NR&)$q*`1_REFrU>x;#s~yS~7GX0r)S!{jL{(b+`=y6otFfAoZ%j=4Mb0ThWmjwI z?K&&cu%*@J9Hh+Ws*@}aScWt&XK&1lwU%IBJ(} zwW)>6Zs*r&O3*GohTjQ+8{(&cpe1wYRbV+>dZ_Kav=k-x04|j~(UES)AZVZ(IN73^ zGicGb5FY$#;t%4&%*3@PsAtF$UTV#l3nwuynX#M*DDmi1o^M0tSh?=&_3t_mh40G)7BK26)G<{r01H#0^tEOKmdLrCz6(Z}H_ zd|wn_P8awE2rAZwJwQ=8o_~sL_>G#x-Mp2SRymq?>I#X_I_lAIk0SNn)mX-}i^(mL z38{=Gl+56`)L$v_zM>bfR*iczxYi3-(ca#Ya=JSiJQ2IOK!1&Xe7C zpMmep6%a5C_Jxym{F2%;S!koD*OAjL6Y%w~%z5=r#t zg%!WV2o&RYZ`H(^C{PPy6e!E zDVkJB^kM2i5%wZ+tAK!O_te?3XzB?=Ta(I+rhaF~336!uyXH0nW_k_wJ3{GF`2?_J zyT~)8=39-f{5rHq@1^%~c2IL3hpNYra^txEQkr_uJM9%7osdx(T$I{tTAI$bh2we| z?Aq=OJj&yT6PSNIesZ{R!rMJ1R%9Ss3vUz8I@)@{vdI5hL1(G!BrV zXoSsV2W)*R>qqcau)#Yn&UN^C)~VA`%cY?xWzaSI8s8*jbq*q32r4Cr1bXi9vAZZr z{@N=PM`oiiCaU6IcrK7(D0MqKl{8nnoZ!FGKWI*UV!T9edkZz?Vei%Nmzk^NxB}|3 zf)!J#eTOp^@#o=7g)@IeQy!=7;x&CleCw+|gzPrztPIv)!SKBjz0p0c^ewIa=gydJ7q_TQOxn591u@<<)|851b;h;q>RGQ#ZLtRa z=WfySoXTnDMcwi~@oKdp&5gmO*=?d%opp~98rkbG78(c-vv@)p9q+GLQYl{a!QP+H zm@0D045#3^mo1!bbj`KRRh;3VNI%9{$sT@&iiPiG;lUe&UMXq3Q`z~9JJdRn_4L$@ z_)Ue1@%`kfOB|!7hUcB=h%`Jmh3}ph?eWi<(A8G8N~~&aD(&&oa!xLE3NMG^J7vGk z4k#L=tY%`awyD^o27?yHt4Mv6wP?(nqf(7Ft|~5TsnUEdk8WH?wKloSZcMdpOq(D+ zjdqbsh^%yIOUTsw~bw?%}?*!9eBHWx1Js3b3s2B*+3(t916?YX8bPTKqU{=|T@T3W`9 zkG$-9It0ThlLcr1o%msAZLBvfN|kwq>pVea~6~PqQaI z!n&Nez2vZxpLS3xbhRwmZ|Sbu481JIOgEPCh@##k%)F6FpzxOnnRC-39So0jK|Sfw zJ5p(+?xQ1X-8*okXteY+huMesl+Mluz@+n9@oChyEIM7dpuqK(`VTd^=PGi7+%$W$ z6}u@a%xjxP4W!s8ux<79g3u$3GAPMwtT7{hVd~~h+sXiH#L~IdT_KKIVkrOZZqif? zUA~VnHJ|caS#B&%JAJXB$+hTwr--T6(SRC5N_bt`*c~p5BXhH9luPNVTpe47xh{0` z=FLGaXZFJyGSn#_;drk@X{0z+bdwWW_UH9YX*+}&-CJ_3Hr2P zVw}KcYnxsC)KxtNF;9Xh061vxP}SB{Ht_gUU7g`V<@e~~+6xq`uP^2TaJ3Ub=ef#^ zsW7*=QWfUCN~NG}?lI&UO!=Fz4J!aGHvU2;;%V)5+9T;5*Js|bXTJ%$pB?kp)1wtF zSrkZNI-fUugKTwiU+X=~R>9p9e&-s5RivPrNSb>|h&tm3y``-~?b~&v1;aH|WfI!i=PCMOS zCkHv_CIj1qVwwMfH-w>+*1q9Byi}eo-+20?rhPKO`>7*Wmbs_08<;1GB%VJtXeMWGH3n#%{A#7_ zgH*53jKV34*2GM_iGps4fxTBa(KKD>vh~<3b4)Ya$6W#E<}Rxg$lk$dOGumn2;f1q zSlR22_3I$~JokBjpaqJ0yfjn9q|H1LQnXH~{~0|!gur^cO#W$p>_$z{p_47mLmcJs9@y1KdRImvuV-ExIW;7Co~Wq zJ?@OKAcnVi>~*T7r%Qa?b@Hlz2cYS>&fg+~I~V=?cngbcU1xo3cWOvdF5}#$0fP6Q zDQzYe$sMvPG;50Y81~{zuTYU|N}aoNn`%wKX)1aCaXu@vH)HIcE1E->aTa>yfs$gp z3VbQXQO~96Lc6u5`xmxg!p^z3EAj|jL2aW)=erO)CQtnk>I4DX=@uVb$;cDm{kg1J zO~-^3%&&R%%;9Itw@^C^M*ZOK$7R>~%YH=i5o^DR3e>85Fz!*qD#rNxu5jZ0L`6_b zeluLzZ%WXe>u?r9J*XQlfF2&5VrPZw-UT^L8S}|rW#0r}Yt+4>7s~!K5hgn5{MG9? zCTrjoAT8VYtpm)3m8S=t^Cx2^RuS6r==tm~&ufpZXo`zFY6Uo*b&|@+rX@_4;NtAf^s2r& zS)IjZEg0uguGZEhU3%k4sBvX=>nu%L2aG>eonFiz9AfRP?bXo|7ON~)#a?E~8i*z` ze|sO@Vmnq;=cJ5G6}3L=BeLmv=8J=W4!;avU+J~rs3wN_qN;FbftM1F@Nc|ZYvx!$ z3oS)de(qk^%<%ecwlMN&849K&Oj1B#rY^R!_W5piNnO8Uz;Sc~=JFfQ+EBOo)^fEq zjDBK(Fd1ktQVT0azl?J^^*wp_SF=nUSEqXd{M^eHdqWrBZ+Khv zL8bozm*8!yr?>AD7B`tnmc?R(m0fC4Duaynl5 zywd&o&By8r?iU z>~I~7u5vd0h*rp&5Pq}f{(x7!vhaG_r(W$PyIX)|z1U|@ZX5v|NLn|B@;uuQI#$)y z&n+{H#8pYO>D`ls)Z@(-`K!U7(kdAnC^hT3jN#x#|0d`@a8c9wj!ribv}*G==1 za2lO~j>!}20wu2DThBM)4L;%I6)%K$8P+nFaVHrtuZW@`gel`Uf*o{OjmzN~MEXbK z^pczlYP?VZA%ArqFyknM)sjTD28;+qPe#X~QvR4nr3hhoFU?T}2REF(@yBtl5pf&Y zi?(Cm=CPVuhD>-ZcTO7Lw3(|f0@+M&Zf9xxon_y#@RS6Tvb`T`*JCV-WAAtpP+zLL z@+<*Cd#K0tT|aJTqIobz*AE8?{lVVKB{KxmXX2w01NI`A5dfZ3_vNzd5#o1$Wl<1~ zj3VOn>QRN`7YCk4rfU7?VsJ#6OcE`kOz}O9||p7S+=)IFMEoBPS)#>qxrJx zGH7VGghQ2fPDM~vuC(Y5bR7f&p_kein#{F2QiJDA$_`8EaQ;}EDG#(ngk+lGioCRPjGlAnnz=exar`5E*UtTz|Aw@uUs6GX%H?7rhi1cdnH0aBSs%Jv zaj>W-Ehs@f#~^$0n~AK;WMq*G`oK_~j`nT=0T~VYHnPY}AI#pbq~{FASJptQn4x&s z8rs9l02p_Aj48JO@RHv_xM(JT)%MoWURn%vE_aG{?pILh@GlS-6}{=Gr}v!5n5*-I zQQ$st@$c`lux11$C8*lEJR<@tteoC5{vIv8YEq}Qep$x4RYJV7ouX2zMEm&bNtcv@ z5}OWZL&?1(T_=1hj;M(B(W^pG`h~hY6qa+B14j^^`B$aiv2v@1nC6#R>nKc{ai^1CD_XWvfFKo^SFYR>y|M_2;3QS%VZ_rN`t=>; znk*|)yI)w0s}79SGC1s5=PqB$FfNthtFq9SswBta5=51W0q%-VQMw#5$JQIWH?E1O#B-*2eC#U$El5pLH%YV*849c7CC@7#I51 zeYm_D?F1z-l>-0~(DaN%7_>K|%~A1{h1hwHbusL~?cUqmAN8B&<5F7Yei7 z=`gRsK$gx!S)R!!crj=VAABz41_w{P?52?@LL{zGS|Nb=C;P1g7%~SQm~^aYd3NE) z(7-6~{-tK;Pb_z%{pM%3HtU=t=oB*(rETJrBx?FCIAn@-xo@?;;8Gv0<3&k{>V00J zi&&py$Bs?reB_I}m64a1=gsQ#k`Pa_D0Y*-G4QUYLUZv0V&_I^&YsY_-p6hFimL0K z$b=;(Ha)PI>@B+Z?&+p=^-tw8>CdOW95A~Cc^C>(v-n(qbqep+k)FDyyb0sIV4Y9% zvr{fyz29be=|5d%4sPXEBnW)xo1?6TdWFtX#=d;O()Wvn?vsr`~4U}rR~vE^?#E0(V=i>O;T3f#WMgn;&AD%WKafYy=0;w&>m z`pf-lRVrq}jI}#}{}=U6XwhY@J3N??o^k5_Fx_wUi{uw}iMI#B$^}gQoToAk8g#vHtT#)h_AMRHH0U&ssvPR^QaJA8AVBVcSqY-@3 zFVI%kq<&;PfT5N&%30_YBc_(*8$N3My~M3y*(P9m6k#&wE^wdD&juEwQQfJ2v4DIEAf#Cy`V_f`5i-kR{a zWfxuCNU7Y1(5_)R$*+K3(o9iagfm^C&Gq{+_GR}Jxw7xwm*?3N4RfyBnJ4F-mLh~t z*>kr|&vNmf2)ee5Ml3a<_BY0Hz!zHlsR%pygNTa341@r8@CS$O|G4Nk)zD7x$E7ef zK!5y)O{C&O1^)iq+2lmDjl|7ArR`XAl=htG2s z=`reP0i5M(`C8%D&VB2`oXIt^f8YO}r2nytFaG*RZGGY%ut4Q}`ifk8VuNdHZkD_5Uya?ix`LGtHdMCSI(LWknx%SgM7x>-u@RsFf|-y~ue| z0o~YbUvPoj*;P)7Sq}zdwheLATK51|OR|TUuRqy4^1?Zv`z=?Owh(5;hdzEL5C~7V zW$5`Plq#6oMd!qwU!H7Lnpu5*O`f$%MW;b@P;}xwx8Ol6+Ne5~qBsWEICBK}?qN@5 zER;Qc&SY0|rrdLVnG+cf*;JN|$3O)46RSk4nvCH#Bmn`_3rj$^`WeojV^+2}7$RiJ{i4gSUmGqm}T%+4^ zufd2nmFZX?)iEd19wB}qxP1OnGk2vKcyziQd1Hx0?bZ3WI@Moa8`*t+e8A(wCh4P| zF=s-Mf$g~hk9mD^D;$I=dd4TB-nNJ255gH(=n>9%azuxa_oWLL^gTR0{FlGKZAm@% zcB9wbY|Bywaoeb%Q_Yi7r^x$?!7;B zDJ%3Z34#0*%3Lxr#+wOAs*4tg;!ky8K#? zGwK@~!x#Z9vPbu|w+`*+0GC911u~;TBYlCEMb2tczm#RUn_qMK_sqRRI2>+BT4%}d z;HZ?z=C#N8lCo;LWVT(-T=dBfuJh#CE6L`JSg|G7Ss+t@z6tSZtLDGA!fg4^ZKqRq zoN)R;mx$0*;8T0$yId@t;4MDd7$;c&R3^laQLchbL@aXC@v0xdnd()NH{yD&7Rx_H0=klEl1HA!3qL0%@qn| ztw=}HpMqqr8Xk5#kMND(Z%uV8i379keISqYF|ScyMg^Nb?AsAts?tZohd^A@r*&iw zAq8BJsPF!)%GKrZudhSg7>#;sVuPa(O>|O&xrBkz%L`3@DA?q=iN+8EN?+q>B0RS{Jf@c!-wq}Th@*w{GHM2Dre^qVS_ckeIr zrezjKe(?rRHB|NQ!&COvv**8WgN+XtwDFe@0CsZi^tX?+40q6e;P3Z=4SGPG1S~-Q zfayT{T~M!}nA}WUox4oBbq(ZoTRT0Z?KfCTrh!}J};_Bvkuq)Vy3^xS{@iU z#OjY^4Si=z)lez^5VhV3!YGUSpt5}R^vZw}HKK2!w=lPU9cJvdu;>kaTszU^&YwHi!t1`;w1|RA2JpiRza?_rj zhc7>BQ-QsgoD2_M1UHR@5&rsN$Hv&|18<*iMHZkrQ?(7xCsDDQ*YGR7S#$2xb0D(< z_V8AR1NC73Aq{D1X+#4zzvI=YMz$exm>DnoV1eya=Nf-#ru<)PA3hKkmV*Qgu7gez><8kXpCN zYprkEySW?|H6l1gso7hPIXyRlRK(@DI$G@5vU8;Xo)c6GL1F2b#kq~vM#<%)5fav1zx{o+`l z?IfD3=1#`52F0EvR;$FiQ9DOqEZ~X4#J1C_dr|G;O)njbyjp?1-v`o0`{y8qZGk&; z2HB+ozo(Ug2!*%Mr9EvNf@(vYid?`#eqwbwtKVYmV_wWsVey~Ke@q2Weyhj2zyZj7 zW1ej$;duEehzSWP)&7bf%>u|lV4dv18M;l?a z8+~ocoPAJQ%c(BFQe+`gf#)5rFQa$n+F5#bIkZ6JvM-^N?jLQw7w*GUQRH19E|hEeRfh?O$qtJrZWM z75b^UUR<-jUKRLhUvP?OlRsQfz*NiSTw^#5Bv&13Hl7d{q1o*(^C|3rosrqNW!JCK zmNyME@o+{&3D~9W@2#hYlDHWT&nTo=*U@$yy4coDM41u10hn6LA1IYT^ao+FkIz)% zl7em_r2vE!&y-!wGmn&+I(qQLum0dOGjoYt&F{8Z zyC)z;E5&fxkw&tH;iXWWAw?)KgFbAQ%P6h@->lwo$x=W-00or{Nc?62!+#loRF7As z_t6fwY%8+zn%$rr)eK2TutFtQ|E)=s<4%ovSlxsi3t^-=wtl%mu{rdg+yz3* zMDZlw%QKKmN}!xZ$v@<^QFILm`3519gk)KfYeu4NM7c|e+}%devSCKDrIK*6sM9mZ zdns8~Dwpk`MjM2C4?{WS{+8X54P%6UpRsC4_d@89^y~_CI0Tu{rgjt6Z-2tS+bX8Z zzk}T>M0h*$(L<3#PPC`zle)1TK2RhXAajK{-rUW26?J+!O=r;c=|8o6#T$jb7Cgif zqgxYg2SAygm~pjUB2A;ny<%w;dFx<|Q^EsuMibChtImJXl>n`r1R70wjgUExw~NzBz?1TycPIV9qoJTTLYw!2XO^*9+35D?F5d$ z_143QH$H6g_;QS=`VNoiWf}>zG>+wOmYX>BHmeE=5GTAxo?Jqf-I8fhjBaD7WGFnu zDUqPOQ`YiX!_|b;Ih2h+X}KnHg_Sa1_})kM>L~J8`=>Elj3v!}K2$kff$n*(Sw{!? zqd5(1@7&ldiutAf9M_5TL(w$VP|RC8qnGbBK3jIt(;F`C zI1FU*+H98VFHMk{71z)ypTHt$9ff|QVG!H3ua9LoA$ku|1)fWR8_ z#|qbUoR$jE7M!@|9~x$GFrQyh#Dd@Cp0|A3@`x_|n0+d01+}Pd0Bg*DtQmPXrDqM-So@egOt_ei&Hc|0Bm{rxW%vR zHqNK6o~jh*Emheq#LiM`!xCeJ1Ozf?&1+aqlVU*GhFDsqbGp&IAJ#m3B>?m8srZjZ zyFwYkbqFsOPa~5RKWcF&L(>6y%O}Bg!$h5G+AigPpvQ)56xy63jK01MT8juOdwyde z;$R!@?*=NjN7HL3LYCKQ;(D)|v^%UmR0{59OO_yrYrtm$RnI%>EdG ziC%C@LL6Qf=6^!T46%eVIUg41RsHgCenf;ji}oY~8$-4WY_5FCR$|6P!#HK^FP?q; zh5#v^sz|459|3qdCe#TTcX0tk&F0}yc>Z`jk6Ar@FBoR(TMb31E%(?obEYWGgFVrPTL^o z?n$9F!lPYNy?fQ428khP11XTW@R8haDy%AaM(Ox=z&C4Cu)uAd_>#}qRG$A+4^WwE zh}_vCLaDoF!x^MOl#P|Rv?}pxDc+(%<#LU?MU~kGBiytaW!FqxzEBJq11cuzes|lA@-* zRI&W4HyRN{J6z}1<_C_wuQK*B*ut!-VO&NjaK?}Tq0Xf8*A3Ke#fPg!l4jayGKOA2 zm!4THH*xBVh-JZ5-d6oR?;1j6yt`TPMQNrRPeen7*a;%xp|*1-VNm-W4OsjrRs&x# z@D(tCo?rio6Y_q`y+9?~g5CJUOOs$1sPS5HP61K7J9De~@O&11Be%;VDMtO)I|1Fi zG?uHNd)nZ9a}1|ZBu=`A4kQipbvHmBWvJp?gKQAJ&7J<{uv9>}N+^zb?HsWRJE zvc>kJL8XcI83GmPwbhO>M2#V$+wN$5BVyLNaT`j3Ll=P#uFPKYoBj3u=p&yaNuy3t zrO|%dZ*^u+>L|5*8t1uvknn4VW@^PE(6?NG1TOhfwzUVOy&6#0^>*(2=|J({1tezr zLfy{~w8F;|3d>$zWkG;LWFll8zT_7Y;@wmI%0A`8Qw~fwBtrRGC@kRdvCwW!%_bIr zGiiXp51!Z1t&Ph-N+Xm93tdMvnE>?cGD zMJgv?iP`%z8dmWg76n&4U>K2aGc|y7sN+G3y5VL-w%PDKXd#ua&}HLi=|qA*A{-m; zw?YCu(5L~ez2L^RSsz|70A${hEEl+WJBVXKw@fCYQl$syO0y-zQ6d?}Q@4eO1_vWj zjzByANi+;Yue?T-FB(%}^Gc@E-pkM5KZKNQGm}H-^5_)MAON>Hi?8%8@U4(Q97e=- zd$c*|F*#8+RfQ_NsW=}(Jk0o4^}cp#gQ?2{#TC&cU_>0S7++WsF|FSS@;AV)iqJP& zz?YTOmX0L|ap!cn+n~*Lo&0)xJDMxNkH1XY7D(GY^WSbkAg%eKWPpKU*T%6MS*3K& z;1eNDx>|Jn4y4OLBkWDeidKaJ?R%Zxgs5yg?{xn}qLS}F5fmA4dojcI~kkTi2fO!w3 zhtZLKnlKXwwOC1?La}~_aOV`OQ>owL>{b}r7%s#weVF8JYOP2`Oen1LV$?>FM5XQi zjaP>+ML($pmS&pDyZ-G^WY^&rG-qE7KTD>wFFej(w$HZ`voS%lh6Cr`w3X7~D`mnF zTto*TWw9k9zmU-*K^#5~ zA|-hc%Sqi~AwM4#YW_JA0=5%xZaf-8xwKzY+#)mHeE@rT+99Oh$eQB+pBGtbwXiu- zcl^nHUar$jEA5rRjJ*!S~LkLmAPyhzK)3B<5z}tA7?M)L!7wzCP=O8jM(Yh={ST(PQf$puqzKOVxN%xGR zDDmXUm@+pgp$go3as+;Tq1_m#;yzt;UzkBlZ3`Chy=_1NY-A8qOA>et9GZ3WBdOmf(J9#;teW>k4H{8Cf{z($<4EK<@Fyx`Hs^P;izJ zSY2hCR;n6h`H+(OXKYqaD&9IT1F~Zh`z4!VTB~Atr zY2PTGk>kXcJdYG_!@^2p=R42B8Eo5>iuLrE!Xq)IO)9LiZxF8JVe(4YE@zg&v_fS= z0&q&i#ZT|LTvDC2L-`ea8xnj)l2g^d`@kXS`rIdP{*Sdt*?mgZyhQSla6D)M&3h2GN*IR5C zahDHC@4Oeor6XM<4r?A37e@s81kjnF&!McOT}#jqC2=0uUuJ+_r0>4ii^i2@T1}<%8Ax?lCm#g*6FvXcEAL?a5&cYcv8PYvdxEgy3zLqr(HOgq z#{fG**ed)9O7f`LUOZwFsw21JaEtL@U9ndZ7_ zn$5-0y@80KY^71~07}jsh|pZxG)G)bZoDb#94xBkTeaKi`Bho>E6Hm(66PJ{xKwXE zIQ=UNxb~>f!ZMy_5#zVMoo@k^`o!?W#ex|M$6!Z0BQ!n%oBHOmZ0k>>5Bz z^SYXI3%y-CLU;KwT%jWbz_(;PDP#}%Rd$tJz)Z*@Gn-i6GNtZ0x$AAbr@18{8!fqZ zwKcLrCpP_4{&{@4%2S2fDx9v<{WA1Wy!1;pJZ?ZRnCLBbES?sP_ey7#peA>Gur+y_ zUAv}31@_?O{AH+y5pkylO2oVmZBU(+KtnbNX7~^V!=w!%$smXwzxmF(#f?=|=gGX6 zh?il&G`wWy{a3M!(YK&S#Liqa7fq^p4RCWIcqiiI*#rK9u~q(cHkMLBK(B9E%Q$>j;y)@>i(RSW zO7ke@MwF))FMh^FSptxt(6-|NMmSZ)LZHq}TSL7%5L{>Hy)NZP--VtW`CADJr3ha> z2vbo&ju9SN%(Q{l_GGdbbl6z`>NWlRbD4|mJ~N#FMDf_L4xW{=z)ET+IV%7|Vr z-1dB;{W%$U3vEkMRw!>Usc2B0I@!Ta7!q)dQ45E9?t`*EP__Dj@+DWEY`?y~w#rVt z^w;2jrS$T%=yni#n?|H57)?TFBf@n-l>PokcQgJD4`-EGs!{!cpfc#|9FcU+ z{J`FE?%!RlQ2*!hlt)}|W;H)*ZXyyl6=G3R8uZVKp*~SKD&F;|>K@{cLgC&j3GGbO zF9(E`j?L9;a(?CBke3{5lPJm&ICM9o2_&q{Tdr|$vp%{uzESV@9ES`_&h>z904C;C zEp1VzkJ^=g524G!D>3LFVJs2i&OlYr`AP_s6f7^1ovGsA!PFu5PmQ}{3{Uta6HJ+r zaZf^(kHTBeg@KKLUjHxYpkgc##i7M=qNgP1e&s798~Gm9tPNDcek)AE1d^s5kt7*p zo7u)!&;xv=_<~RG7&6&R0n&f~Xzn3_Mx++EZ=cNSsH&)**eWd}y9$Z_os{$INZ&jO zG#;cN1^SOB+ZrHo{Ca6-xEkf-KvWEd@bl--AT38FEgJ!PTlt)})T zqH%QQnN`2NXpBnXNFL@NkwPTlNR|ST92ODR4Q7Q;6_ThgJgSkb1St$Ws$H64Ek*5m zFQJ;&Z)Lh~u~L#y*iF-0dDI(~bDCa(h(WG$5y91dv z_^vD5s{_j>-qpcrgXUnw0BIt&ZC5G=P*zv((;BtUFR)S&0~h~Zum%S zSV#z}eT6(71>DEp<4(`Q#u~#YqOUTwF`Dt(%XLZ2>h03ErAf%W7t_)+kSd<|Is}&+ z`g`}kyl{mF2zu9P_2X*5fLbxRljE9+YZU=z>Q6aZk?^?r2(Zx zMRFYa1HJyZ`_X3;VibIBY~09Ofb?HTSlFq!ie-QYM%?!n{yr`X7vJabX&WoVmht6l z7iNwk>CBCHX)9wYCg7ftU>_@?2tE2`39ykqHgZr14`#wbzJ8;!2rPj8FbZ=G^;D=_ zBuYx0*pLfdTV>pUH|9Oxd<+B^k>cUT5*M}A_d|k;_pI0?ovk6{xf6IyMjCDZkv@{Q z(%TEikE)d6<4fOBD4^6i0@OE9d;=BK<%P+(_U21ap?ZOnhFLUIg*OoQ$&L$ULfP=nY>xZttj7#G8q zGNgSgLFa`jau}$p1l7(w!i*3@-~Q9Ki%>8;B5K>Sod{iTkiWMH+^}nVV96jewy*u& zLh7xA4Z&8T%VaSW%#0!H&m22kGNjf|-;srposL9v4b5R6488GV!0ChJ)QG;LEv?=Z z7U4xGdc1g{Tj5>=wZ+j6evq*3wj)XLm(8{yjZ$MEv`l?H87N#lBY7g|*E0C#I$F9d z6o8;im;n8!B_BaUGPtR9NE%7bzIdT+=$1q-ho6-s>gj^!P4SuUntm4^P#NxnGCZif zzT04^eDx&ky}zF(A-zjQfihtzpS8!^yHvh9v~ORH{ZD!whp3RBYyDqkc%Q-tf2=~5 z%X;3*2Ca zzW}XvCL<##3H4hYKj4ETK!M+S7+Ib@Y{IEmsGp()+gz$ZbCG_@x!%XqkpX2%aH8N< zCr^#T1QCyjKQ!ThwTOgF!P=*}e4T%;Z)QMw>n3&=P3x0mEAhPpqvY*>jiZ_v+?ME% z{8p6=jQ%$yTaKy4_?|=3Z84Y!$WG|c1v#5AHVRF#C2O#kbqyNPSipoZa|ytU9}E?U z-$I=qB$y*9I=Z^LRyg2Hl`;6i-@wypPsS;acaXm`UzQC8LyCw;p!teeOepzw@bKX( zC`22BQIDF_2SCtuBB8|dsHv$b@}Rmhj+%fzfHQ>FaSd)1KCy>WLKr=6W|~sDAHWX* z;g;R)s3zp4>FThDc!6>65d;DMqY|b?Cayyd6iPu3K$EJe%>syKZDdOWcL@X>)i9#o zWrk7~_b_}a-G#c0h2&|b3u(^E+WfqcoGg74(_d1E+1LFPaEwXuG!XHtA=JDz?2Oqm z1#ZFVNp+^UunU+ktpx|%cZUaGr@@tEXlYZX2kU|<5yqyECqb_E4oJk3)qXTeE$BbV zUWbDC>lZJK1H?~REg@j>y>|DmU5M9!-K%W~a^8V5YXDQDff-XkhNUP$NAL&P)Z-q? zm|=Q@7*w|JBW+jM{koKhlC`->H`z9fkr-3vBoGq(kO^=@TEt+)Q_mmxd>Doq)Zud1 zJY>Ml7tgjR8iRtj4vVMF%?zz9wm~*9Z1<6^hczy7!_o~Ttxuj{kY*xqf*?8#bH#Ph zV}9&sIq(9c9Dr}|U{%x|j1P(!-5V>1=3q$QyUNcszL8n!{Al6^bo75qQNMf4kfenU z1NEI%@N-012X7>GA#|xm?c=C&0+pH#L5f)1-d7L@O3+Jow-0C*pAY@`TjUVw71 z0lnXiYC?N!L&4XN4RaQ)C4_Ux2OxP8$31H#FBjgAg@0zWB$hL_Ok=K)KMP z75Hp$`*$oYEd?MDOk&VPHUv9IV1viRAl8QheukB_c%5t}1egx_Go)K?Md6S!jz;Hp6@Lwg=TNA7(6$^wS@uz+Fdr#YZASi?<% z=5|f4o?RJ` zeIz09(PixI4f>v3ine1ER3w52kwOpzf2(;$r>+@6Ni#3GK5gL+3aH)6GDl|i;o$Q@ zA0$uw$Xe=5_yZ{tse400g)Zd>zRHK2aT+n$%GI@Pekc5Tc=y zhN-;?<)ysG6JQ)61bG3A1%X)*3ao5>z~fQ~RIaU8Dt^6~((^Xz5wk&{9!JYk`s zrUoA1o51t76Ik`~D(wVb?vpuosICtubK(Tb({O*lcT%O0Rufdej<{DGn&ZlVvXDt1 z(yd`X#t~7lYLu)g(}aXepwQbcGa%(zePC|yj6vQ3_Xa=FAPUdq1C~A#)Ie%3f-2%E z%&gdZ4^TgZ8X5WzNk*b}7B^61lg*;&hr7va6iL4HXs<

a9z}u}L29^~#$+cqK{$ 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 literal 0 HcmV?d00001 diff --git a/docs/images/nkg-high-level.png b/docs/images/nkg-high-level.png deleted file mode 100644 index aa87f15975f5d80ee9b16cd74817bc3868ca3871..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138889 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

MSTL;|Gj^dh-5j+R7QX%z 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

@cFC9Sr|L5Ix9%Sa4G5(M(MV;oJ!}^iHzK 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%0ARIncr*2RsUW|9RXwSj$Um%UUGQH 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ⅅ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 diff --git a/docs/images/nkg-pod.png b/docs/images/nkg-pod.png deleted file mode 100644 index 48e2e60a35a2a4c39981817b6aa7ff0f93c4a1f4..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 131746 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

M~Q@8qwa~spxh!hB&RYP&tuk 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 nkgPod - nkgPod --/coffee--> coffeeV1Pod - nkgPod --/coffee\nheader: version=v2\nOR\n/coffee?TEST=v2--> coffeeV2Pod - nkgPod --GET /tea--> teaPod - nkgPod --POST /tea--> teaPostPod - users --> nkgSvc + ngfSvc --> ngfPod + ngfPod --/coffee--> coffeeV1Pod + ngfPod --/coffee\nheader: version=v2\nOR\n/coffee?TEST=v2--> coffeeV2Pod + ngfPod --GET /tea--> teaPod + ngfPod --POST /tea--> teaPostPod + users --> ngfSvc class clusterPadding,nsPadding,clusterPadding2 noBorder class gwNS,appNs namespace - class nkgSvc,nkgPod nginxNode + class ngfSvc,ngfPod nginxNode class coffeeV1Pod,coffeeV2Pod coffeeNode class teaPod,teaPostPod teaNode classDef noBorder stroke:none,fill:none diff --git a/docs/images/src/route-all-traffic-flow.mermaid b/docs/images/src/route-all-traffic-flow.mermaid index c136618128..f53d35ae54 100644 --- a/docs/images/src/route-all-traffic-flow.mermaid +++ b/docs/images/src/route-all-traffic-flow.mermaid @@ -1,14 +1,14 @@ %% mermaid source for route-all-traffic-flow.png diagram graph LR clients[Clients] - nkgSvc["Public IP Address\nfor\ncafe.example.com"] + ngfSvc["Public IP Address\nfor\ncafe.example.com"] subgraph cluster [Kubernetes Cluster] style cluster fill:#FFFFFF,stroke:#000000 subgraph clusterPadding [" "] subgraph clusterPadding2 [" "] subgraph gwNS [Namespace\nnginx-gateway] - nkgPod[Pod\nnginx-gateway] + ngfPod[Pod\nnginx-gateway] end end end @@ -23,13 +23,13 @@ graph LR - nkgSvc --> nkgPod - nkgPod --> coffeePod1 & coffeePod2 - clients --> nkgSvc + ngfSvc --> ngfPod + ngfPod --> coffeePod1 & coffeePod2 + clients --> ngfSvc class clusterPadding,nsPadding,clusterPadding2 noBorder class gwNS,appNs namespace - class nkgPod,nkgSvc nginxNode + class ngfPod,ngfSvc nginxNode class coffeePod1,coffeePod2 coffeeNode class clients clientNode diff --git a/docs/installation.md b/docs/installation.md index a6a0f4e7db..3eb7899da2 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -1,27 +1,35 @@ # Installation -This guide walks you through how to install NGINX Kubernetes Gateway on a generic Kubernetes cluster. +This guide walks you through how to install NGINX Gateway Fabric on a generic Kubernetes cluster. ## Prerequisites - [kubectl](https://kubernetes.io/docs/tasks/tools/) -## Deploy NGINX Kubernetes Gateway using Helm +## Deploy NGINX Gateway Fabric using Helm -To deploy NGINX Kubernetes Gateway using Helm, please follow the instructions on [this](/deploy/helm-chart/README.md) +To deploy NGINX Gateway Fabric using Helm, please follow the instructions on [this](/deploy/helm-chart/README.md) page. -## Deploy NGINX Kubernetes Gateway from Manifests +## Deploy NGINX Gateway Fabric from Manifests -> Note: By default, NGINX Kubernetes Gateway (NKG) will be installed into the nginx-gateway Namespace. -> It is possible to run NKG in a different Namespace, although you'll need to make modifications to the installation +> Note: By default, NGINX Gateway Fabric (NGF) will be installed into the nginx-gateway Namespace. +> It is possible to run NGF in a different Namespace, although you'll need to make modifications to the installation > manifests. -1. Clone the repo and change into the `nginx-kubernetes-gateway` directory: +1. Clone the repo and change into the `nginx-gateway-fabric` directory: ```shell - git clone https://github.com/nginxinc/nginx-kubernetes-gateway.git - cd nginx-kubernetes-gateway + git clone https://github.com/nginxinc/nginx-gateway-fabric.git + cd nginx-gateway-fabric + ``` + +1. Check out the latest tag (unless you are installing the `edge` version from the `main` branch): + + ```shell + git fetch --tags + latestTag=$(git describe --tags `git rev-list --tags --max-count=1`) + git checkout $latestTag ``` 1. Install the Gateway API resources from the standard channel (the CRDs and the validating webhook): @@ -30,19 +38,19 @@ page. kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v0.8.0/standard-install.yaml ``` -1. Deploy the NGINX Kubernetes Gateway CRDs: +1. Deploy the NGINX Gateway Fabric CRDs: ```shell kubectl apply -f deploy/manifests/crds ``` -1. Deploy the NGINX Kubernetes Gateway: +1. Deploy the NGINX Gateway Fabric: ```shell kubectl apply -f deploy/manifests/nginx-gateway.yaml ``` -1. Confirm the NGINX Kubernetes Gateway is running in `nginx-gateway` namespace: +1. Confirm the NGINX Gateway Fabric is running in `nginx-gateway` namespace: ```shell kubectl get pods -n nginx-gateway @@ -53,13 +61,13 @@ page. nginx-gateway-5d4f4c7db7-xk2kq 2/2 Running 0 112s ``` -## Expose NGINX Kubernetes Gateway +## Expose NGINX Gateway Fabric -You can gain access to NGINX Kubernetes Gateway by creating a `NodePort` Service or a `LoadBalancer` Service. +You can gain access to NGINX Gateway Fabric by creating a `NodePort` Service or a `LoadBalancer` Service. > Important > -> The Service manifests expose NGINX Kubernetes Gateway on ports 80 and 443, which exposes any +> The Service manifests expose NGINX Gateway Fabric on ports 80 and 443, which exposes any > Gateway [Listener](https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1beta1.Listener) > configured for those ports. If you'd like to use different ports in your listeners, > update the manifests accordingly. @@ -72,7 +80,7 @@ Create a Service with type `NodePort`: kubectl apply -f deploy/manifests/service/nodeport.yaml ``` -A `NodePort` Service will randomly allocate one port on every Node of the cluster. To access NGINX Kubernetes Gateway, +A `NodePort` Service will randomly allocate one port on every Node of the cluster. To access NGINX Gateway Fabric, use an IP address of any Node in the cluster along with the allocated port. ### Create a LoadBalancer Service @@ -92,7 +100,7 @@ Create a Service with type `LoadBalancer` using the appropriate manifest for you kubectl get svc nginx-gateway -n nginx-gateway ``` - Use the public IP of the load balancer to access NGINX Kubernetes Gateway. + Use the public IP of the load balancer to access NGINX Gateway Fabric. - For AWS: @@ -114,11 +122,11 @@ Create a Service with type `LoadBalancer` using the appropriate manifest for you nslookup ``` -## Uninstalling NGINX Kubernetes Gateway +## Uninstalling NGINX Gateway Fabric -### Uninstall NGINX Kubernetes Gateway from Manifests +### Uninstall NGINX Gateway Fabric from Manifests -1. Uninstall the NGINX Kubernetes Gateway: +1. Uninstall the NGINX Gateway Fabric: ```shell kubectl delete -f deploy/manifests/nginx-gateway.yaml @@ -138,7 +146,7 @@ Create a Service with type `LoadBalancer` using the appropriate manifest for you kubectl delete -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v0.8.0/standard-install.yaml ``` -### Uninstall NGINX Kubernetes Gateway using Helm +### Uninstall NGINX Gateway Fabric using Helm -To uninstall NGINX Kubernetes Gateway when the deployment method is Helm, please follow the instructions +To uninstall NGINX Gateway Fabric when the deployment method is Helm, please follow the instructions [here](/deploy/helm-chart/README.md#uninstalling-the-chart). diff --git a/docs/monitoring.md b/docs/monitoring.md index 1a47141a7c..34b7af8624 100644 --- a/docs/monitoring.md +++ b/docs/monitoring.md @@ -1,6 +1,6 @@ # Monitoring -The NGINX Kubernetes Gateway exposes a number of metrics in the [Prometheus](https://prometheus.io/) format. Those +The NGINX Gateway Fabric exposes a number of metrics in the [Prometheus](https://prometheus.io/) format. Those include NGINX and the controller-runtime metrics. These are delivered using a metrics server orchestrated by the controller-runtime package. Metrics are enabled by default, and are served via http on port `9113`. @@ -14,12 +14,12 @@ controller-runtime package. Metrics are enabled by default, and are served via h ### Using Helm -If you're using *Helm* to install the NGINX Kubernetes Gateway, set the `metrics.*` parameters to the required values +If you're using *Helm* to install the NGINX Gateway Fabric, set the `metrics.*` parameters to the required values for your environment. See the [Helm README](/deploy/helm-chart/README.md). ### Using Manifests -If you're using *Kubernetes manifests* to install NGINX Kubernetes Gateway, you can modify the +If you're using *Kubernetes manifests* to install NGINX Gateway Fabric, you can modify the [manifest](/deploy/manifests/nginx-gateway.yaml) to change the default metrics configuration: #### Disabling metrics @@ -27,15 +27,15 @@ If you're using *Kubernetes manifests* to install NGINX Kubernetes Gateway, you 1. Set the `-metrics-disable` [command-line argument](/docs/cli-help.md) to `true` and remove the other `-metrics-*` command line arguments. -2. Remove the metrics port entry from the list of the ports of the NGINX Kubernetes Gateway container in the template - of the NGINX Kubernetes Gateway Pod: +2. Remove the metrics port entry from the list of the ports of the NGINX Gateway Fabric container in the template + of the NGINX Gateway Fabric Pod: ```yaml - name: metrics containerPort: 9113 ``` -3. Remove the following annotations from the template of the NGINX Kubernetes Gateway Pod: +3. Remove the following annotations from the template of the NGINX Gateway Fabric Pod: ```yaml annotations: @@ -47,15 +47,15 @@ If you're using *Kubernetes manifests* to install NGINX Kubernetes Gateway, you 1. Set the `-metrics-port` [command-line argument](/docs/cli-help.md) to the required value. -2. Change the metrics port entry in the list of the ports of the NGINX Kubernetes Gateway container in the template - of the NGINX Kubernetes Gateway Pod: +2. Change the metrics port entry in the list of the ports of the NGINX Gateway Fabric container in the template + of the NGINX Gateway Fabric Pod: ```yaml - name: metrics containerPort: ``` -3. Change the following annotation in the template of the NGINX Kubernetes Gateway Pod: +3. Change the following annotation in the template of the NGINX Gateway Fabric Pod: ```yaml annotations: @@ -68,7 +68,7 @@ If you're using *Kubernetes manifests* to install NGINX Kubernetes Gateway, you 1. Set the `-metrics-secure-serving` [command-line argument](/docs/cli-help.md) to `true`. -2. Add the following annotation in the template of the NGINX Kubernetes Gateway Pod: +2. Add the following annotation in the template of the NGINX Gateway Fabric Pod: ```yaml annotations: @@ -79,21 +79,21 @@ If you're using *Kubernetes manifests* to install NGINX Kubernetes Gateway, you ## Available Metrics -NGINX Kubernetes Gateway exports the following metrics: +NGINX Gateway Fabric exports the following metrics: - NGINX metrics: - Exported by NGINX. Refer to the [NGINX Prometheus Exporter developer docs](https://github.com/nginxinc/nginx-prometheus-exporter#metrics-for-nginx-oss) - - These metrics have the namespace `nginx_kubernetes_gateway`, and include the label `class` which is set to the - Gateway class of NKG. For example, `nginx_kubernetes_gateway_connections_accepted{class="nginx"}`. + - These metrics have the namespace `nginx_gateway_fabric`, and include the label `class` which is set to the + Gateway class of NGF. For example, `nginx_gateway_fabric_connections_accepted{class="nginx"}`. -- NGINX Kubernetes Gateway metrics: +- NGINX Gateway Fabric metrics: - nginx_reloads_total. Number of successful NGINX reloads. - nginx_reload_errors_total. Number of unsuccessful NGINX reloads. - - nginx_stale_config. 1 means NKG failed to configure NGINX with the latest version of the configuration, which means + - nginx_stale_config. 1 means NGF failed to configure NGINX with the latest version of the configuration, which means NGINX is running with a stale version. - nginx_last_reload_milliseconds. Duration in milliseconds of NGINX reloads (histogram). - - These metrics have the namespace `nginx_kubernetes_gateway`, and include the label `class` which is set to the - Gateway class of NKG. For example, `nginx_kubernetes_gateway_nginx_reloads_total{class="nginx"}`. + - These metrics have the namespace `nginx_gateway_fabric`, and include the label `class` which is set to the + Gateway class of NGF. For example, `nginx_gateway_fabric_nginx_reloads_total{class="nginx"}`. - [controller-runtime](https://github.com/kubernetes-sigs/controller-runtime) metrics. These include: - Total number of reconciliation errors per controller diff --git a/docs/proposals/README.md b/docs/proposals/README.md index dcc0e5e0c3..c36104fb8b 100644 --- a/docs/proposals/README.md +++ b/docs/proposals/README.md @@ -1,7 +1,7 @@ # Enhancement Proposal This document describes the process of submitting an Enhancement Proposal. Enhancement Proposals are a way to propose, -communicate, and coordinate on enhancements for the NGINX Kubernetes Gateway. It is based off of +communicate, and coordinate on enhancements for the NGINX Gateway Fabric. It is based off of the [Gateway Enhancement Proposals][gep]. Their purpose is to: - Make changes and proposals discoverable (current and future). @@ -21,7 +21,7 @@ Enhancement Proposal. For example, here are some examples of requests that may n - Small changes (validation, documentation, fixups). It is always possible that the maintainers will determine a "small" change ends up requiring a Enhancement Proposal. -[discussion]: https://github.com/nginxinc/nginx-kubernetes-gateway/discussions +[discussion]: https://github.com/nginxinc/nginx-gateway-fabric/discussions ## Process @@ -41,7 +41,7 @@ Before creating an issue or Enhancement Proposal, [open an idea][idea] on GitHub you would like, any use cases you have, and other relevant details. Beginning with a discussion allows you to get feedback from the maintainers and the community before you invest time in writing an Enhancement Proposal. -[idea]: https://github.com/nginxinc/nginx-kubernetes-gateway/discussions/new?category=ideas +[idea]: https://github.com/nginxinc/nginx-gateway-fabric/discussions/new?category=ideas ### 2. Create an Issue @@ -51,7 +51,7 @@ maintainer will ask you to [open an issue][issue] on GitHub. Not every enhancement warrants an Enhancement Proposal. _If_ the enhancement issue requires an Enhancement Proposals, the maintainers will add the label `enhancement-proposal` to the issue. -[issue]: https://github.com/nginxinc/nginx-kubernetes-gateway/issues/new?assignees=&labels=proposal&projects=&template=enhancement.md&title= +[issue]: https://github.com/nginxinc/nginx-gateway-fabric/issues/new?assignees=&labels=proposal&projects=&template=enhancement.md&title= ### 3. Agree on the Goals (Provisional) diff --git a/docs/proposals/control-plane-config.md b/docs/proposals/control-plane-config.md index fc781776f5..8ae2bc07bd 100644 --- a/docs/proposals/control-plane-config.md +++ b/docs/proposals/control-plane-config.md @@ -1,17 +1,17 @@ # Enhancement Proposal-928: Control Plane Dynamic Configuration -- Issue: https://github.com/nginxinc/nginx-kubernetes-gateway/issues/928 +- Issue: https://github.com/nginxinc/nginx-gateway-fabric/issues/928 - Status: Completed ## Summary -This proposal contains the design for how to dynamically configure the NGINX Kubernetes Gateway (NKG) control plane. +This proposal contains the design for how to dynamically configure the NGINX Gateway Fabric (NGF) control plane. Through the use of a Custom Resource Definition (CRD), we'll be able to configure fields such as log level or telemetry at runtime. ## Goals -Define a CRD to dynamically configure mutable options for the NKG control plane. The only initial configurable +Define a CRD to dynamically configure mutable options for the NGF control plane. The only initial configurable option that we will support is log level. ## Non-Goals @@ -20,12 +20,12 @@ This proposal is *not* defining a way to dynamically configure the data plane. ## Introduction -The NKG control plane will evolve to have various user-configurable options. These could include, but are not +The NGF control plane will evolve to have various user-configurable options. These could include, but are not limited to, log level, tracing, or metrics. For the best user experience, these options should be able to be -changed at runtime, to avoid having to restart NKG. The first option that we will allow users to configure is the +changed at runtime, to avoid having to restart NGF. The first option that we will allow users to configure is the log level. The easiest and most intuitive way to implement a Kubernetes-native API is through a CRD. -In this doc, the term "user" will refer to the cluster operator (the person who installs and manages NKG). The +In this doc, the term "user" will refer to the cluster operator (the person who installs and manages NGF). The cluster operator owns this CRD resource. ## API, Customer Driven Interfaces, and User Experience @@ -51,10 +51,10 @@ status: ``` - The CRD would be Namespace-scoped, living in the same Namespace as the controller that it applies to. -- CRD is initialized and created when NKG is deployed. -- NKG references the name of this CRD via CLI arg (`--nginx-gateway-config-name`), and only watches this CRD. +- CRD is initialized and created when NGF is deployed. +- NGF references the name of this CRD via CLI arg (`--nginx-gateway-config-name`), and only watches this CRD. If the resource doesn't exist, then an error is logged and event created, and default values are used. -- If user deletes resource, NKG logs an error and creates an event. NKG will revert to default values. +- If user deletes resource, NGF logs an error and creates an event. NGF will revert to default values. This resource won't be referenced in the `parametersRef` of the GatewayClass, reserving that option for a data plane CRD. The control plane may end up supporting multiple GatewayClasses, so linking the control CRD to a @@ -68,10 +68,10 @@ For discussion with team: ## Use Cases -The high level use case for dynamically changing settings in the NKG control plane is to allow users to alter -behavior without the need for restarting NKG and experiencing downtime. +The high level use case for dynamically changing settings in the NGF control plane is to allow users to alter +behavior without the need for restarting NGF and experiencing downtime. -For the specific log level use case, users may be experiencing problems with NKG that require more information to +For the specific log level use case, users may be experiencing problems with NGF that require more information to diagnose. These problems could include: - Not seeing or processing Kubernetes resources that it should be. @@ -83,7 +83,7 @@ the state of the control plane without losing that state due to a required resta ## Testing -Unit tests can be leveraged for verifying that NKG properly watches and acts on CRD changes. These tests would +Unit tests can be leveraged for verifying that NGF properly watches and acts on CRD changes. These tests would be similar in behavior as the current unit tests that verify Gateway API resource processing. ## Security Considerations @@ -96,7 +96,7 @@ OpenAPI schema validation. If necessary as the CRD evolves, CEL or webhooks coul - Have a valid use case. The more fields we expose, the more attack vectors we create. We should only be exposing fields that are genuinely useful for a user to change dynamically. -RBAC via the Kubernetes API server will ensure that only authorized users can update the CRD containing NKG control +RBAC via the Kubernetes API server will ensure that only authorized users can update the CRD containing NGF control plane configuration. ## Alternatives @@ -106,7 +106,7 @@ A ConfigMap is another type of resource that a user can provide configuration op benefits of a CRD, specifically built-in schema validation, versioning, and conversion webhooks. - Custom API server -The NKG control plane could implement its own custom API server. However the overhead of implementing this, which +The NGF control plane could implement its own custom API server. However the overhead of implementing this, which would include auth, validation, endpoints, and so on, would not be worth it due to the fact that the Kubernetes API server already does all of these things for us. diff --git a/docs/resource-validation.md b/docs/resource-validation.md index da2647be67..26461e12c2 100644 --- a/docs/resource-validation.md +++ b/docs/resource-validation.md @@ -1,10 +1,10 @@ # Gateway API Resource Validation -This document describes how NGINX Kubernetes Gateway (NKG) validates Gateway API resources. +This document describes how NGINX Gateway Fabric (NGF) validates Gateway API resources. ## Overview -There are several reasons why NKG validates Gateway API resources: +There are several reasons why NGF validates Gateway API resources: - *Robustness*: to gracefully handle invalid resources. - *Security*: to prevent malicious input from propagating to the NGINX configuration. @@ -17,11 +17,11 @@ A Gateway API resource (a new resource or an update for the existing one) is val 1. OpenAPI schema validation by the Kubernetes API server. 2. Webhook validation by the Gateway API webhook. -3. Webhook validation by NKG. -4. Validation by NKG. +3. Webhook validation by NGF. +4. Validation by NGF. -To confirm that a resource is valid and accepted by NKG, check that the `Accepted` condition in the resource status -has the Status field set to `True`. For example, in a status of a valid HTTPRoute, if NKG accepts a parentRef, +To confirm that a resource is valid and accepted by NGF, check that the `Accepted` condition in the resource status +has the Status field set to `True`. For example, in a status of a valid HTTPRoute, if NGF accepts a parentRef, the status of that parentRef will look like this: ```text @@ -82,13 +82,13 @@ Error from server: error when creating "prod-gateway.yaml": admission webhook "v > Bypassing this validation step is possible if the webhook is not running in the cluster. > If this happens, Step 3 will reject the invalid values. -### Step 3 - Webhook validation by NKG +### Step 3 - Webhook validation by NGF The previous step relies on the Gateway API webhook running in the cluster. To ensure that the resources are validated -with the webhook validation rules, even if the webhook is not running, NKG performs the same validation. However, NKG +with the webhook validation rules, even if the webhook is not running, NGF performs the same validation. However, NGF performs the validation *after* the Kubernetes API server accepts the resource. -Below is an example of how NKG rejects an invalid resource (a Gateway resource with a TCP listener that configures a +Below is an example of how NGF rejects an invalid resource (a Gateway resource with a TCP listener that configures a hostname) with a Kubernetes event: ```shell @@ -100,18 +100,18 @@ kubectl describe gateway prod-gateway Events: Type Reason Age From Message ---- ------ ---- ---- ------- - Warning Rejected 6s nginx-kubernetes-gateway-nginx the resource failed webhook validation, however the Gateway API webhook failed to reject it with the error; make sure the webhook is installed and running correctly; validation error: spec.listeners[1].hostname: Forbidden: should be empty for protocol TCP; NKG will delete any existing NGINX configuration that corresponds to the resource + Warning Rejected 6s nginx-gateway-fabric-nginx the resource failed webhook validation, however the Gateway API webhook failed to reject it with the error; make sure the webhook is installed and running correctly; validation error: spec.listeners[1].hostname: Forbidden: should be empty for protocol TCP; NGF will delete any existing NGINX configuration that corresponds to the resource ``` > This validation step always runs and cannot be bypassed. -> NKG will ignore any resources that fail the webhook validation, like in the example above. -> If the resource previously existed, NKG will remove any existing NGINX configuration for that resource. +> NGF will ignore any resources that fail the webhook validation, like in the example above. +> If the resource previously existed, NGF will remove any existing NGINX configuration for that resource. -### Step 4 - Validation by NKG +### Step 4 - Validation by NGF This step catches the following cases of invalid values: -- Valid values from the Gateway API perspective but not supported by NKG yet. For example, a feature in an +- Valid values from the Gateway API perspective but not supported by NGF yet. For example, a feature in an HTTPRoute routing rule. Note: for the list of supported features, see [Gateway API Compatibility](gateway-api-compatibility.md) doc. - Valid values from the Gateway API perspective, but invalid for NGINX, because NGINX has stricter validation @@ -121,7 +121,7 @@ This step catches the following cases of invalid values: - Malicious values that inject unrestricted NGINX config into the NGINX configuration (similar to an SQL injection attack). -Below is an example of how NKG rejects an invalid resource. The validation error is reported via the status: +Below is an example of how NGF rejects an invalid resource. The validation error is reported via the status: ```shell kubectl describe httproutes.gateway.networking.k8s.io coffee diff --git a/docs/running-on-kind.md b/docs/running-on-kind.md index efa90c53e4..db181b3d15 100644 --- a/docs/running-on-kind.md +++ b/docs/running-on-kind.md @@ -1,6 +1,6 @@ # Running on `kind` -This guide walks you through how to run NGINX Kubernetes Gateway on a [kind](https://kind.sigs.k8s.io/) cluster. +This guide walks you through how to run NGINX Gateway Fabric on a [kind](https://kind.sigs.k8s.io/) cluster. ## Prerequisites @@ -17,11 +17,11 @@ command at the root of the repository: make create-kind-cluster ``` -## Deploy NGINX Kubernetes Gateway +## Deploy NGINX Gateway Fabric -Follow the [installation](./installation.md) instructions to deploy NGINX Kubernetes Gateway on your Kind cluster. +Follow the [installation](./installation.md) instructions to deploy NGINX Gateway Fabric on your Kind cluster. -## Access NGINX Kubernetes Gateway +## Access NGINX Gateway Fabric Forward local ports 8080 and 8443 to ports 80 and 443 of the nginx-gateway Pod: @@ -32,6 +32,6 @@ kubectl -n nginx-gateway port-forward 8080:80 8443:443 > Note: NGINX will not listen on any ports until you configure a > [Gateway](https://gateway-api.sigs.k8s.io/api-types/gateway/#gateway) resource with a valid listener. -## Use NGINX Kubernetes Gateway +## Use NGINX Gateway Fabric To get started, follow the tutorials in the [examples](../examples) directory. diff --git a/examples/cafe-example/README.md b/examples/cafe-example/README.md index 28f60ea76f..fba0e30dba 100644 --- a/examples/cafe-example/README.md +++ b/examples/cafe-example/README.md @@ -1,21 +1,21 @@ # Example -In this example we deploy NGINX Kubernetes Gateway, a simple web application, and then configure NGINX Gateway to route -traffic to that application using HTTPRoute resources. +In this example we deploy NGINX Gateway Fabric, a simple web application, and then configure NGINX Gateway Fabric +to route traffic to that application using HTTPRoute resources. ## Running the Example -## 1. Deploy NGINX Kubernetes Gateway +## 1. Deploy NGINX Gateway Fabric -1. Follow the [installation instructions](/docs/installation.md) to deploy NGINX Kubernetes Gateway. +1. Follow the [installation instructions](/docs/installation.md) to deploy NGINX Gateway Fabric. -1. Save the public IP address of NGINX Kubernetes Gateway into a shell variable: +1. Save the public IP address of NGINX Gateway Fabric into a shell variable: ```text GW_IP=XXX.YYY.ZZZ.III ``` -1. Save the port of NGINX Kubernetes Gateway: +1. Save the port of NGINX Gateway Fabric: ```text GW_PORT= diff --git a/examples/cross-namespace-routing/README.md b/examples/cross-namespace-routing/README.md index 955e214801..d8c2ba2e41 100644 --- a/examples/cross-namespace-routing/README.md +++ b/examples/cross-namespace-routing/README.md @@ -5,17 +5,17 @@ in a different namespace from our HTTPRoutes. ## Running the Example -## 1. Deploy NGINX Kubernetes Gateway +## 1. Deploy NGINX Gateway Fabric -1. Follow the [installation instructions](/docs/installation.md) to deploy NGINX Kubernetes Gateway. +1. Follow the [installation instructions](/docs/installation.md) to deploy NGINX Gateway Fabric. -1. Save the public IP address of NGINX Kubernetes Gateway into a shell variable: +1. Save the public IP address of NGINX Gateway Fabric into a shell variable: ```text GW_IP=XXX.YYY.ZZZ.III ``` -1. Save the port of NGINX Kubernetes Gateway: +1. Save the port of NGINX Gateway Fabric: ```text GW_PORT= diff --git a/examples/http-header-filter/README.md b/examples/http-header-filter/README.md index 33b1687844..6bc85d0f31 100644 --- a/examples/http-header-filter/README.md +++ b/examples/http-header-filter/README.md @@ -1,21 +1,21 @@ # Example -In this example we will deploy NGINX Kubernetes Gateway and configure traffic routing for a simple echo server. +In this example we will deploy NGINX Gateway Fabric and configure traffic routing for a simple echo server. We will use HTTPRoute resources to route traffic to the echo server, using the `RequestHeaderModifier` filter to modify headers to the request. ## Running the Example -## 1. Deploy NGINX Kubernetes Gateway +## 1. Deploy NGINX Gateway Fabric -1. Follow the [installation instructions](/docs/installation.md) to deploy NGINX Kubernetes Gateway. +1. Follow the [installation instructions](/docs/installation.md) to deploy NGINX Gateway Fabric. -1. Save the public IP address of NGINX Kubernetes Gateway into a shell variable: +1. Save the public IP address of NGINX Gateway Fabric into a shell variable: ```text GW_IP=XXX.YYY.ZZZ.III ``` -1. Save the port of NGINX Kubernetes Gateway: +1. Save the port of NGINX Gateway Fabric: ```text GW_PORT= diff --git a/examples/https-termination/README.md b/examples/https-termination/README.md index c6d6a8b63f..1fc37dab3c 100644 --- a/examples/https-termination/README.md +++ b/examples/https-termination/README.md @@ -6,17 +6,17 @@ reference a Secret in a different Namespace. ## Running the Example -## 1. Deploy NGINX Kubernetes Gateway +## 1. Deploy NGINX Gateway Fabric -1. Follow the [installation instructions](/docs/installation.md) to deploy NGINX Kubernetes Gateway. +1. Follow the [installation instructions](/docs/installation.md) to deploy NGINX Gateway Fabric. -1. Save the public IP address of NGINX Kubernetes Gateway into a shell variable: +1. Save the public IP address of NGINX Gateway Fabric into a shell variable: ```text GW_IP=XXX.YYY.ZZZ.III ``` -1. Save the ports of NGINX Kubernetes Gateway: +1. Save the ports of NGINX Gateway Fabric: ```text GW_HTTP_PORT= diff --git a/examples/traffic-splitting/README.md b/examples/traffic-splitting/README.md index c84fcba5d5..02c3d2fef4 100644 --- a/examples/traffic-splitting/README.md +++ b/examples/traffic-splitting/README.md @@ -1,23 +1,23 @@ # Example -In this example we will deploy NGINX Kubernetes Gateway and configure traffic splitting for a simple cafe application. +In this example we will deploy NGINX Gateway Fabric and configure traffic splitting for a simple cafe application. We will use HTTPRoute resources to split traffic between two versions of the application -- `coffee-v1` and `coffee-v2`. ## Running the Example -## 1. Deploy NGINX Kubernetes Gateway +## 1. Deploy NGINX Gateway Fabric -1. Follow the [installation instructions](/docs/installation.md) to deploy NGINX Kubernetes Gateway. +1. Follow the [installation instructions](/docs/installation.md) to deploy NGINX Gateway Fabric. -1. Save the public IP address of NGINX Kubernetes Gateway into a shell variable: +1. Save the public IP address of NGINX Gateway Fabric into a shell variable: ```text GW_IP=XXX.YYY.ZZZ.III ``` -1. Save the port of NGINX Kubernetes Gateway: +1. Save the port of NGINX Gateway Fabric: ```text GW_PORT= diff --git a/go.mod b/go.mod index 16a2f4c0a0..656886bbe7 100644 --- a/go.mod +++ b/go.mod @@ -1,4 +1,4 @@ -module github.com/nginxinc/nginx-kubernetes-gateway +module github.com/nginxinc/nginx-gateway-fabric go 1.21.1 diff --git a/internal/framework/controller/controllerfakes/fake_getter.go b/internal/framework/controller/controllerfakes/fake_getter.go index 466622e1e1..47a344cdef 100644 --- a/internal/framework/controller/controllerfakes/fake_getter.go +++ b/internal/framework/controller/controllerfakes/fake_getter.go @@ -5,7 +5,7 @@ import ( "context" "sync" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/controller" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/controller" "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/client" ) diff --git a/internal/framework/controller/filter/filter.go b/internal/framework/controller/filter/filter.go index 86901fd809..7a9a1c2349 100644 --- a/internal/framework/controller/filter/filter.go +++ b/internal/framework/controller/filter/filter.go @@ -5,7 +5,7 @@ import ( "k8s.io/apimachinery/pkg/types" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/controller" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/controller" ) // CreateSingleResourceFilter creates a filter function that filters out all resources except the one diff --git a/internal/framework/controller/reconciler.go b/internal/framework/controller/reconciler.go index d3bc000583..7d7f84115f 100644 --- a/internal/framework/controller/reconciler.go +++ b/internal/framework/controller/reconciler.go @@ -11,7 +11,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/log" "sigs.k8s.io/controller-runtime/pkg/reconcile" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/events" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/events" ) // NamespacedNameFilterFunc is a function that returns true if the resource should be processed by the reconciler. diff --git a/internal/framework/controller/reconciler_test.go b/internal/framework/controller/reconciler_test.go index 103abd7a7a..120a40a2ee 100644 --- a/internal/framework/controller/reconciler_test.go +++ b/internal/framework/controller/reconciler_test.go @@ -14,9 +14,9 @@ import ( "sigs.k8s.io/controller-runtime/pkg/reconcile" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/controller" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/controller/controllerfakes" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/events" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/controller" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/controller/controllerfakes" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/events" ) type getFunc func(ctx context.Context, key client.ObjectKey, obj client.Object, opts ...client.GetOption) error diff --git a/internal/framework/controller/register.go b/internal/framework/controller/register.go index a101e66c65..b48fd2258a 100644 --- a/internal/framework/controller/register.go +++ b/internal/framework/controller/register.go @@ -10,7 +10,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/manager" "sigs.k8s.io/controller-runtime/pkg/predicate" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/controller/index" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/controller/index" ) const ( diff --git a/internal/framework/controller/register_test.go b/internal/framework/controller/register_test.go index 97faa26ae0..ea55464088 100644 --- a/internal/framework/controller/register_test.go +++ b/internal/framework/controller/register_test.go @@ -16,10 +16,10 @@ import ( "sigs.k8s.io/controller-runtime/pkg/log/zap" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/controller" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/controller/controllerfakes" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/controller/index" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/controller/predicate" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/controller" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/controller/controllerfakes" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/controller/index" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/controller/predicate" ) func TestRegister(t *testing.T) { diff --git a/internal/framework/events/eventsfakes/fake_event_handler.go b/internal/framework/events/eventsfakes/fake_event_handler.go index bfb6ab896b..0b0df59437 100644 --- a/internal/framework/events/eventsfakes/fake_event_handler.go +++ b/internal/framework/events/eventsfakes/fake_event_handler.go @@ -5,7 +5,7 @@ import ( "context" "sync" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/events" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/events" ) type FakeEventHandler struct { diff --git a/internal/framework/events/eventsfakes/fake_first_event_batch_preparer.go b/internal/framework/events/eventsfakes/fake_first_event_batch_preparer.go index 874543c64b..66f02b6455 100644 --- a/internal/framework/events/eventsfakes/fake_first_event_batch_preparer.go +++ b/internal/framework/events/eventsfakes/fake_first_event_batch_preparer.go @@ -5,7 +5,7 @@ import ( "context" "sync" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/events" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/events" ) type FakeFirstEventBatchPreparer struct { diff --git a/internal/framework/events/eventsfakes/fake_reader.go b/internal/framework/events/eventsfakes/fake_reader.go index 1674faf3cc..7e6c2d4fa2 100644 --- a/internal/framework/events/eventsfakes/fake_reader.go +++ b/internal/framework/events/eventsfakes/fake_reader.go @@ -5,7 +5,7 @@ import ( "context" "sync" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/events" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/events" "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/client" ) diff --git a/internal/framework/events/first_eventbatch_preparer_test.go b/internal/framework/events/first_eventbatch_preparer_test.go index 69972d8105..5450325528 100644 --- a/internal/framework/events/first_eventbatch_preparer_test.go +++ b/internal/framework/events/first_eventbatch_preparer_test.go @@ -16,8 +16,8 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/events" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/events/eventsfakes" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/events" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/events/eventsfakes" ) var _ = Describe("FirstEventBatchPreparer", func() { diff --git a/internal/framework/events/loop.go b/internal/framework/events/loop.go index ee330080f8..a7e8055047 100644 --- a/internal/framework/events/loop.go +++ b/internal/framework/events/loop.go @@ -21,7 +21,7 @@ import ( // (2) A reload can have side-effects for the data plane traffic. // FIXME(pleshakov): better document the side effects and how to prevent and mitigate them. // So when the EventLoop have 100 saved events, it is better to process them at once rather than one by one. -// https://github.com/nginxinc/nginx-kubernetes-gateway/issues/551 +// https://github.com/nginxinc/nginx-gateway-fabric/issues/551 type EventLoop struct { handler EventHandler preparer FirstEventBatchPreparer diff --git a/internal/framework/events/loop_test.go b/internal/framework/events/loop_test.go index 5fbdf7277d..ea53d9ade3 100644 --- a/internal/framework/events/loop_test.go +++ b/internal/framework/events/loop_test.go @@ -8,8 +8,8 @@ import ( . "github.com/onsi/gomega" "sigs.k8s.io/controller-runtime/pkg/log/zap" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/events" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/events/eventsfakes" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/events" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/events/eventsfakes" ) var _ = Describe("EventLoop", func() { diff --git a/internal/framework/status/conditions.go b/internal/framework/status/conditions.go index ba958bc63c..a3dd38bfda 100644 --- a/internal/framework/status/conditions.go +++ b/internal/framework/status/conditions.go @@ -3,7 +3,7 @@ package status import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/conditions" ) func convertConditions( diff --git a/internal/framework/status/conditions_test.go b/internal/framework/status/conditions_test.go index eb247a9479..0685508bb1 100644 --- a/internal/framework/status/conditions_test.go +++ b/internal/framework/status/conditions_test.go @@ -7,8 +7,8 @@ import ( . "github.com/onsi/gomega" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/conditions" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" ) func CreateTestConditions(condType string) []conditions.Condition { diff --git a/internal/framework/status/gateway.go b/internal/framework/status/gateway.go index 4e2c26d2b5..366aaa920b 100644 --- a/internal/framework/status/gateway.go +++ b/internal/framework/status/gateway.go @@ -16,7 +16,7 @@ func prepareGatewayStatus( listenerStatuses := make([]v1beta1.ListenerStatus, 0, len(gatewayStatus.ListenerStatuses)) // FIXME(pleshakov) Maintain the order from the Gateway resource - // https://github.com/nginxinc/nginx-kubernetes-gateway/issues/689 + // https://github.com/nginxinc/nginx-gateway-fabric/issues/689 names := make([]string, 0, len(gatewayStatus.ListenerStatuses)) for name := range gatewayStatus.ListenerStatuses { names = append(names, name) diff --git a/internal/framework/status/gateway_test.go b/internal/framework/status/gateway_test.go index 4af1ad4659..b01832915d 100644 --- a/internal/framework/status/gateway_test.go +++ b/internal/framework/status/gateway_test.go @@ -8,7 +8,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" ) func TestPrepareGatewayStatus(t *testing.T) { diff --git a/internal/framework/status/gatewayclass_test.go b/internal/framework/status/gatewayclass_test.go index 65b23f85f2..9918c603c4 100644 --- a/internal/framework/status/gatewayclass_test.go +++ b/internal/framework/status/gatewayclass_test.go @@ -8,7 +8,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" ) func TestPrepareGatewayClassStatus(t *testing.T) { diff --git a/internal/framework/status/httproute_test.go b/internal/framework/status/httproute_test.go index b0363e6ceb..deafbde2d6 100644 --- a/internal/framework/status/httproute_test.go +++ b/internal/framework/status/httproute_test.go @@ -9,7 +9,7 @@ import ( "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" ) func TestPrepareHTTPRouteStatus(t *testing.T) { diff --git a/internal/framework/status/statuses.go b/internal/framework/status/statuses.go index 9da49c4b9f..89284f1661 100644 --- a/internal/framework/status/statuses.go +++ b/internal/framework/status/statuses.go @@ -4,8 +4,8 @@ import ( "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/gateway-api/apis/v1beta1" - nkgAPI "github.com/nginxinc/nginx-kubernetes-gateway/apis/v1alpha1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/conditions" + ngfAPI "github.com/nginxinc/nginx-gateway-fabric/apis/v1alpha1" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/conditions" ) // Status is the status of one or more Kubernetes resources that the StatusUpdater will update. @@ -36,7 +36,7 @@ type NginxGatewayStatus struct { } func (n *NginxGatewayStatus) APIGroup() string { - return nkgAPI.GroupName + return ngfAPI.GroupName } // ListenerStatuses holds the statuses of listeners where the key is the name of a listener in the Gateway resource. diff --git a/internal/framework/status/statusfakes/fake_clock.go b/internal/framework/status/statusfakes/fake_clock.go index a1a33166c2..5b51ea34e9 100644 --- a/internal/framework/status/statusfakes/fake_clock.go +++ b/internal/framework/status/statusfakes/fake_clock.go @@ -4,7 +4,7 @@ package statusfakes import ( "sync" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/status" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/status" v1 "k8s.io/apimachinery/pkg/apis/meta/v1" ) diff --git a/internal/framework/status/statusfakes/fake_updater.go b/internal/framework/status/statusfakes/fake_updater.go index 423b4f6584..6fcc488c62 100644 --- a/internal/framework/status/statusfakes/fake_updater.go +++ b/internal/framework/status/statusfakes/fake_updater.go @@ -5,7 +5,7 @@ import ( "context" "sync" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/status" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/status" ) type FakeUpdater struct { diff --git a/internal/framework/status/updater.go b/internal/framework/status/updater.go index c11dc7a8a1..7ed2c08bd6 100644 --- a/internal/framework/status/updater.go +++ b/internal/framework/status/updater.go @@ -11,7 +11,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/gateway-api/apis/v1beta1" - nkgAPI "github.com/nginxinc/nginx-kubernetes-gateway/apis/v1alpha1" + ngfAPI "github.com/nginxinc/nginx-gateway-fabric/apis/v1alpha1" ) //go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 . Updater @@ -76,7 +76,7 @@ type UpdaterConfig struct { // Gateway is removed, our Gateway will not restore the status until the EventLoop invokes the StatusUpdater as a // result of processing some other new change to a resource(s). // FIXME(pleshakov): Make updater production ready -// https://github.com/nginxinc/nginx-kubernetes-gateway/issues/691 +// https://github.com/nginxinc/nginx-gateway-fabric/issues/691 // UpdaterImpl needs to be modified to support new resources. Consider making UpdaterImpl extendable, so that it // goes along the Open-closed principle. @@ -128,7 +128,7 @@ func NewUpdater(cfg UpdaterConfig) *UpdaterImpl { func (upd *UpdaterImpl) Update(ctx context.Context, status Status) { // FIXME(pleshakov) Merge the new Conditions in the status with the existing Conditions - // https://github.com/nginxinc/nginx-kubernetes-gateway/issues/558 + // https://github.com/nginxinc/nginx-gateway-fabric/issues/558 defer upd.lock.Unlock() upd.lock.Lock() @@ -154,9 +154,9 @@ func (upd *UpdaterImpl) updateNginxGateway(ctx context.Context, status *NginxGat upd.cfg.Logger.Info("Updating Nginx Gateway status") if status != nil { - upd.writeStatuses(ctx, status.NsName, &nkgAPI.NginxGateway{}, func(object client.Object) { - ng := object.(*nkgAPI.NginxGateway) - ng.Status = nkgAPI.NginxGatewayStatus{ + upd.writeStatuses(ctx, status.NsName, &ngfAPI.NginxGateway{}, func(object client.Object) { + ng := object.(*ngfAPI.NginxGateway) + ng.Status = ngfAPI.NginxGatewayStatus{ Conditions: convertConditions( status.Conditions, status.ObservedGeneration, diff --git a/internal/framework/status/updater_test.go b/internal/framework/status/updater_test.go index c3ee8876e9..05b6af4ba6 100644 --- a/internal/framework/status/updater_test.go +++ b/internal/framework/status/updater_test.go @@ -15,11 +15,11 @@ import ( "sigs.k8s.io/controller-runtime/pkg/log/zap" "sigs.k8s.io/gateway-api/apis/v1beta1" - nkgAPI "github.com/nginxinc/nginx-kubernetes-gateway/apis/v1alpha1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/status" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/status/statusfakes" - staticConds "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/conditions" + ngfAPI "github.com/nginxinc/nginx-gateway-fabric/apis/v1alpha1" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/status" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/status/statusfakes" + staticConds "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/conditions" ) type unsupportedStatus struct{} @@ -42,7 +42,7 @@ var _ = Describe("Updater", func() { scheme := runtime.NewScheme() Expect(v1beta1.AddToScheme(scheme)).Should(Succeed()) - Expect(nkgAPI.AddToScheme(scheme)).Should(Succeed()) + Expect(ngfAPI.AddToScheme(scheme)).Should(Succeed()) client = fake.NewClientBuilder(). WithScheme(scheme). @@ -50,7 +50,7 @@ var _ = Describe("Updater", func() { &v1beta1.GatewayClass{}, &v1beta1.Gateway{}, &v1beta1.HTTPRoute{}, - &nkgAPI.NginxGateway{}, + &ngfAPI.NginxGateway{}, ). Build() @@ -72,7 +72,7 @@ var _ = Describe("Updater", func() { gc *v1beta1.GatewayClass gw, ignoredGw *v1beta1.Gateway hr *v1beta1.HTTPRoute - ng *nkgAPI.NginxGateway + ng *ngfAPI.NginxGateway ipAddrType = v1beta1.IPAddressType addr = v1beta1.GatewayStatusAddress{ Type: &ipAddrType, @@ -232,8 +232,8 @@ var _ = Describe("Updater", func() { } } - createExpectedNGWithGeneration = func(gen int64) *nkgAPI.NginxGateway { - return &nkgAPI.NginxGateway{ + createExpectedNGWithGeneration = func(gen int64) *ngfAPI.NginxGateway { + return &ngfAPI.NginxGateway{ ObjectMeta: metav1.ObjectMeta{ Namespace: "nginx-gateway", Name: "nginx-gateway-config", @@ -242,7 +242,7 @@ var _ = Describe("Updater", func() { Kind: "NginxGateway", APIVersion: "gateway.nginx.org/v1alpha1", }, - Status: nkgAPI.NginxGatewayStatus{ + Status: ngfAPI.NginxGatewayStatus{ Conditions: status.CreateExpectedAPIConditions("Test", gen, fakeClockTime), }, } @@ -299,7 +299,7 @@ var _ = Describe("Updater", func() { APIVersion: "gateway.networking.k8s.io/v1beta1", }, } - ng = &nkgAPI.NginxGateway{ + ng = &ngfAPI.NginxGateway{ ObjectMeta: metav1.ObjectMeta{ Namespace: "nginx-gateway", Name: "nginx-gateway-config", @@ -383,7 +383,7 @@ var _ = Describe("Updater", func() { }) It("should have the updated status of NginxGateway in the API server", func() { - latestNG := &nkgAPI.NginxGateway{} + latestNG := &ngfAPI.NginxGateway{} expectedNG := createExpectedNGWithGeneration(1) err := client.Get( @@ -497,7 +497,7 @@ var _ = Describe("Updater", func() { }) It("should not have the updated status of the Nginx Gateway resource in the API server", func() { - latestNG := &nkgAPI.NginxGateway{} + latestNG := &ngfAPI.NginxGateway{} expectedNG := createExpectedNGWithGeneration(1) err := client.Get( @@ -534,7 +534,7 @@ var _ = Describe("Updater", func() { }) It("should have the updated status of the Nginx Gateway resource in the API server", func() { - latestNG := &nkgAPI.NginxGateway{} + latestNG := &ngfAPI.NginxGateway{} expectedNG := createExpectedNGWithGeneration(2) err := client.Get( @@ -577,7 +577,7 @@ var _ = Describe("Updater", func() { updater.Update(context.Background(), createNGStatus(3)) }) It("should have the updated status of Nginx Gateway in the API server", func() { - latestNG := &nkgAPI.NginxGateway{} + latestNG := &ngfAPI.NginxGateway{} expectedNG := createExpectedNGWithGeneration(3) err := client.Get( diff --git a/internal/mode/provisioner/doc.go b/internal/mode/provisioner/doc.go index 689924d87c..589ab68527 100644 --- a/internal/mode/provisioner/doc.go +++ b/internal/mode/provisioner/doc.go @@ -1,6 +1,6 @@ /* -Package provisioner contains all the packages that relate to the provisioner-mode implementation of NKG. -Provisioner-mode implements data plane provisioning for NGINX Kubernetes Gateway (NKG): it creates an NKG static mode +Package provisioner contains all the packages that relate to the provisioner-mode implementation of NGF. +Provisioner-mode implements data plane provisioning for NGINX Gateway Fabric (NGF): it creates an NGF static mode Deployment for each Gateway that belongs to the provisioner GatewayClass. */ package provisioner diff --git a/internal/mode/provisioner/handler.go b/internal/mode/provisioner/handler.go index 3dafc663a5..14d3cdd77d 100644 --- a/internal/mode/provisioner/handler.go +++ b/internal/mode/provisioner/handler.go @@ -9,13 +9,13 @@ import ( "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/client" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/conditions" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/events" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/status" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/events" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/status" ) // eventHandler ensures each Gateway for the specific GatewayClass has a corresponding Deployment -// of NKG configured to use that specific Gateway. +// of NGF configured to use that specific Gateway. // // eventHandler implements events.Handler interface. type eventHandler struct { diff --git a/internal/mode/provisioner/handler_test.go b/internal/mode/provisioner/handler_test.go index 2ef1bddff3..38d105c438 100644 --- a/internal/mode/provisioner/handler_test.go +++ b/internal/mode/provisioner/handler_test.go @@ -16,12 +16,12 @@ import ( . "github.com/onsi/gomega" - embeddedfiles "github.com/nginxinc/nginx-kubernetes-gateway" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/conditions" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/events" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/status" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/status/statusfakes" + embeddedfiles "github.com/nginxinc/nginx-gateway-fabric" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/events" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/status" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/status/statusfakes" ) var _ = Describe("handler", func() { diff --git a/internal/mode/provisioner/manager.go b/internal/mode/provisioner/manager.go index 16f481a67f..2a1b4a09b2 100644 --- a/internal/mode/provisioner/manager.go +++ b/internal/mode/provisioner/manager.go @@ -13,11 +13,11 @@ import ( "sigs.k8s.io/controller-runtime/pkg/manager" gatewayv1beta1 "sigs.k8s.io/gateway-api/apis/v1beta1" - embeddedfiles "github.com/nginxinc/nginx-kubernetes-gateway" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/controller" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/controller/predicate" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/events" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/status" + embeddedfiles "github.com/nginxinc/nginx-gateway-fabric" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/controller" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/controller/predicate" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/events" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/status" ) // Config is configuration for the provisioner mode. @@ -28,13 +28,13 @@ type Config struct { } // StartManager starts a Manager for the provisioner mode, which provisions -// a Deployment of NKG (static mode) for each Gateway of the provisioner GatewayClass. +// a Deployment of NGF (static mode) for each Gateway of the provisioner GatewayClass. // -// The provisioner mode is introduced to allow running Gateway API conformance tests for NKG, which expects +// The provisioner mode is introduced to allow running Gateway API conformance tests for NGF, which expects // an independent data plane instance being provisioned for each Gateway. // // The provisioner mode is not intended to be used in production (in the short term), as it lacks support for -// many important features. See https://github.com/nginxinc/nginx-kubernetes-gateway/issues/634 for more details. +// many important features. See https://github.com/nginxinc/nginx-gateway-fabric/issues/634 for more details. func StartManager(cfg Config) error { scheme := runtime.NewScheme() utilruntime.Must(gatewayv1beta1.AddToScheme(scheme)) diff --git a/internal/mode/provisioner/store.go b/internal/mode/provisioner/store.go index c1a861165f..2c262ed1c1 100644 --- a/internal/mode/provisioner/store.go +++ b/internal/mode/provisioner/store.go @@ -7,7 +7,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/events" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/events" ) // store stores the cluster state needed by the provisioner and allows to update it from the events. diff --git a/internal/mode/static/build_statuses.go b/internal/mode/static/build_statuses.go index 82ef6edf4b..8a51dd4cbd 100644 --- a/internal/mode/static/build_statuses.go +++ b/internal/mode/static/build_statuses.go @@ -5,10 +5,10 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/conditions" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/status" - staticConds "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/conditions" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/graph" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/status" + staticConds "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/graph" ) type nginxReloadResult struct { diff --git a/internal/mode/static/build_statuses_test.go b/internal/mode/static/build_statuses_test.go index b84c3f0bf2..77d803840a 100644 --- a/internal/mode/static/build_statuses_test.go +++ b/internal/mode/static/build_statuses_test.go @@ -10,11 +10,11 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/conditions" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/status" - staticConds "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/conditions" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/graph" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/status" + staticConds "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/graph" ) var ( diff --git a/internal/mode/static/config_updater.go b/internal/mode/static/config_updater.go index 92eebc33a5..c08c9b12ca 100644 --- a/internal/mode/static/config_updater.go +++ b/internal/mode/static/config_updater.go @@ -13,8 +13,8 @@ import ( "k8s.io/apimachinery/pkg/util/validation/field" "k8s.io/client-go/tools/record" - nkgAPI "github.com/nginxinc/nginx-kubernetes-gateway/apis/v1alpha1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" + ngfAPI "github.com/nginxinc/nginx-gateway-fabric/apis/v1alpha1" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" ) // ZapLogLevelSetter defines an interface for setting the logging level of a zap logger. @@ -41,9 +41,9 @@ func (z zapSetterImpl) SetLevel(level string) error { field.NewPath("logging.level"), level, []string{ - string(nkgAPI.ControllerLogLevelInfo), - string(nkgAPI.ControllerLogLevelDebug), - string(nkgAPI.ControllerLogLevelError), + string(ngfAPI.ControllerLogLevelInfo), + string(ngfAPI.ControllerLogLevelDebug), + string(ngfAPI.ControllerLogLevelError), }) return fieldErr } @@ -60,16 +60,16 @@ func (z zapSetterImpl) Enabled(level zapcore.Level) bool { // updateControlPlane updates the control plane configuration with the given user spec. // If any fields are not set within the user spec, the default configuration values are used. func updateControlPlane( - cfg *nkgAPI.NginxGateway, + cfg *ngfAPI.NginxGateway, logger logr.Logger, eventRecorder record.EventRecorder, configNSName types.NamespacedName, logLevelSetter ZapLogLevelSetter, ) error { // build up default configuration - controlConfig := nkgAPI.NginxGatewaySpec{ - Logging: &nkgAPI.Logging{ - Level: helpers.GetPointer(nkgAPI.ControllerLogLevelInfo), + controlConfig := ngfAPI.NginxGatewaySpec{ + Logging: &ngfAPI.Logging{ + Level: helpers.GetPointer(ngfAPI.ControllerLogLevelInfo), }, } @@ -88,7 +88,7 @@ func updateControlPlane( msg := "NginxGateway configuration was deleted; using defaults" logger.Info(msg) eventRecorder.Event( - &nkgAPI.NginxGateway{ + &ngfAPI.NginxGateway{ ObjectMeta: metav1.ObjectMeta{ Namespace: configNSName.Namespace, Name: configNSName.Name, diff --git a/internal/mode/static/doc.go b/internal/mode/static/doc.go index 5dcf35b75a..3b386ac027 100644 --- a/internal/mode/static/doc.go +++ b/internal/mode/static/doc.go @@ -1,5 +1,5 @@ /* -Package static contains all the packages that relate to the static-mode implementation of NKG. +Package static contains all the packages that relate to the static-mode implementation of NGF. Static-mode configures NGINX in the scope of a single Gateway resource. */ package static diff --git a/internal/mode/static/handler.go b/internal/mode/static/handler.go index 442d7ba171..eededfa5f7 100644 --- a/internal/mode/static/handler.go +++ b/internal/mode/static/handler.go @@ -10,17 +10,17 @@ import ( "k8s.io/client-go/tools/record" "sigs.k8s.io/controller-runtime/pkg/client" - nkgAPI "github.com/nginxinc/nginx-kubernetes-gateway/apis/v1alpha1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/conditions" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/events" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/status" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/config" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/file" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/runtime" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state" - staticConds "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/conditions" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/dataplane" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/resolver" + ngfAPI "github.com/nginxinc/nginx-gateway-fabric/apis/v1alpha1" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/events" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/status" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/config" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/file" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/runtime" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state" + staticConds "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/dataplane" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/resolver" ) // eventHandlerConfig holds configuration parameters for eventHandlerImpl. @@ -71,13 +71,13 @@ func (h *eventHandlerImpl) HandleEventBatch(ctx context.Context, batch events.Ev for _, event := range batch { switch e := event.(type) { case *events.UpsertEvent: - if cfg, ok := e.Resource.(*nkgAPI.NginxGateway); ok { + if cfg, ok := e.Resource.(*ngfAPI.NginxGateway); ok { h.updateControlPlaneAndSetStatus(ctx, cfg) } else { h.cfg.processor.CaptureUpsertChange(e.Resource) } case *events.DeleteEvent: - if _, ok := e.Type.(*nkgAPI.NginxGateway); ok { + if _, ok := e.Type.(*ngfAPI.NginxGateway); ok { h.updateControlPlaneAndSetStatus(ctx, nil) } else { h.cfg.processor.CaptureDeleteChange(e.Type, e.NamespacedName) @@ -133,7 +133,7 @@ func (h *eventHandlerImpl) updateNginx(ctx context.Context, conf dataplane.Confi // updateControlPlaneAndSetStatus updates the control plane configuration and then sets the status // based on the outcome -func (h *eventHandlerImpl) updateControlPlaneAndSetStatus(ctx context.Context, cfg *nkgAPI.NginxGateway) { +func (h *eventHandlerImpl) updateControlPlaneAndSetStatus(ctx context.Context, cfg *ngfAPI.NginxGateway) { var cond []conditions.Condition if err := updateControlPlane( cfg, diff --git a/internal/mode/static/handler_test.go b/internal/mode/static/handler_test.go index 04b68e3b74..799e041985 100644 --- a/internal/mode/static/handler_test.go +++ b/internal/mode/static/handler_test.go @@ -13,20 +13,20 @@ import ( ctlrZap "sigs.k8s.io/controller-runtime/pkg/log/zap" "sigs.k8s.io/gateway-api/apis/v1beta1" - nkgAPI "github.com/nginxinc/nginx-kubernetes-gateway/apis/v1alpha1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/conditions" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/events" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/status" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/status/statusfakes" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/config/configfakes" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/file" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/file/filefakes" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/runtime/runtimefakes" - staticConds "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/conditions" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/dataplane" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/graph" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/statefakes" + ngfAPI "github.com/nginxinc/nginx-gateway-fabric/apis/v1alpha1" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/events" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/status" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/status/statusfakes" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/config/configfakes" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/file" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/file/filefakes" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/runtime/runtimefakes" + staticConds "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/dataplane" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/graph" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/statefakes" ) var _ = Describe("eventHandler", func() { @@ -155,14 +155,14 @@ var _ = Describe("eventHandler", func() { }) When("receiving control plane configuration updates", func() { - cfg := func(level nkgAPI.ControllerLogLevel) *nkgAPI.NginxGateway { - return &nkgAPI.NginxGateway{ + cfg := func(level ngfAPI.ControllerLogLevel) *ngfAPI.NginxGateway { + return &ngfAPI.NginxGateway{ ObjectMeta: metav1.ObjectMeta{ Namespace: namespace, Name: configName, }, - Spec: nkgAPI.NginxGatewaySpec{ - Logging: &nkgAPI.Logging{ + Spec: ngfAPI.NginxGatewaySpec{ + Logging: &ngfAPI.Logging{ Level: helpers.GetPointer(level), }, }, @@ -181,7 +181,7 @@ var _ = Describe("eventHandler", func() { } It("handles a valid config", func() { - batch := []interface{}{&events.UpsertEvent{Resource: cfg(nkgAPI.ControllerLogLevelError)}} + batch := []interface{}{&events.UpsertEvent{Resource: cfg(ngfAPI.ControllerLogLevelError)}} handler.HandleEventBatch(context.Background(), batch) Expect(fakeStatusUpdater.UpdateCallCount()).Should(Equal(1)) @@ -192,7 +192,7 @@ var _ = Describe("eventHandler", func() { }) It("handles an invalid config", func() { - batch := []interface{}{&events.UpsertEvent{Resource: cfg(nkgAPI.ControllerLogLevel("invalid"))}} + batch := []interface{}{&events.UpsertEvent{Resource: cfg(ngfAPI.ControllerLogLevel("invalid"))}} handler.HandleEventBatch(context.Background(), batch) Expect(fakeStatusUpdater.UpdateCallCount()).Should(Equal(1)) @@ -211,7 +211,7 @@ var _ = Describe("eventHandler", func() { }) It("handles a deleted config", func() { - batch := []interface{}{&events.DeleteEvent{Type: &nkgAPI.NginxGateway{}}} + batch := []interface{}{&events.DeleteEvent{Type: &ngfAPI.NginxGateway{}}} handler.HandleEventBatch(context.Background(), batch) Expect(len(fakeEventRecorder.Events)).To(Equal(1)) event := <-fakeEventRecorder.Events diff --git a/internal/mode/static/manager.go b/internal/mode/static/manager.go index e84bc1404f..bcde121ee0 100644 --- a/internal/mode/static/manager.go +++ b/internal/mode/static/manager.go @@ -21,23 +21,23 @@ import ( k8spredicate "sigs.k8s.io/controller-runtime/pkg/predicate" gatewayv1beta1 "sigs.k8s.io/gateway-api/apis/v1beta1" - nkgAPI "github.com/nginxinc/nginx-kubernetes-gateway/apis/v1alpha1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/controller" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/controller/filter" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/controller/index" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/controller/predicate" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/events" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/status" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/config" - nkgmetrics "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/metrics" - ngxcfg "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/config" - ngxvalidation "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/config/validation" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/file" - ngxruntime "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/runtime" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/relationship" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/resolver" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/validation" + ngfAPI "github.com/nginxinc/nginx-gateway-fabric/apis/v1alpha1" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/controller" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/controller/filter" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/controller/index" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/controller/predicate" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/events" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/status" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/config" + ngfmetrics "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/metrics" + ngxcfg "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/config" + ngxvalidation "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/config/validation" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/file" + ngxruntime "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/runtime" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/relationship" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/resolver" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/validation" ) const ( @@ -51,7 +51,7 @@ func init() { utilruntime.Must(gatewayv1beta1.AddToScheme(scheme)) utilruntime.Must(apiv1.AddToScheme(scheme)) utilruntime.Must(discoveryV1.AddToScheme(scheme)) - utilruntime.Must(nkgAPI.AddToScheme(scheme)) + utilruntime.Must(ngfAPI.AddToScheme(scheme)) } func StartManager(cfg config.Config) error { @@ -82,7 +82,7 @@ func StartManager(cfg config.Config) error { } } - recorderName := fmt.Sprintf("nginx-kubernetes-gateway-%s", cfg.GatewayClassName) + recorderName := fmt.Sprintf("nginx-gateway-fabric-%s", cfg.GatewayClassName) recorder := mgr.GetEventRecorderFor(recorderName) logLevelSetter := newZapLogLevelSetter(cfg.AtomicLevel) @@ -274,7 +274,7 @@ func registerControllers( if cfg.ConfigName != "" { controllerRegCfgs = append(controllerRegCfgs, ctlrCfg{ - objectType: &nkgAPI.NginxGateway{}, + objectType: &ngfAPI.NginxGateway{}, options: []controller.Option{ controller.WithNamespacedNameFilter(filter.CreateSingleResourceFilter(controlConfigNSName)), }, @@ -342,7 +342,7 @@ func setInitialConfig( ctx, cancel := context.WithTimeout(context.Background(), 10*time.Second) defer cancel() - var config nkgAPI.NginxGateway + var config ngfAPI.NginxGateway if err := reader.Get(ctx, configName, &config); err != nil { return err } @@ -357,11 +357,11 @@ func setInitialConfig( func createAndRegisterMetricsCollectors(metricsEnabled bool, gwClassName string) (ngxruntime.ManagerCollector, error) { if !metricsEnabled { // return a no-op collector to avoid nil pointer errors when metrics are disabled - return nkgmetrics.NewManagerNoopCollector(), nil + return ngfmetrics.NewManagerNoopCollector(), nil } constLabels := map[string]string{"class": gwClassName} - ngxCollector, err := nkgmetrics.NewNginxMetricsCollector(constLabels) + ngxCollector, err := ngfmetrics.NewNginxMetricsCollector(constLabels) if err != nil { return nil, fmt.Errorf("cannot create NGINX status metrics collector: %w", err) } @@ -369,7 +369,7 @@ func createAndRegisterMetricsCollectors(metricsEnabled bool, gwClassName string) return nil, fmt.Errorf("failed to register NGINX status metrics collector: %w", err) } - mgrCollector := nkgmetrics.NewManagerMetricsCollector(constLabels) + mgrCollector := ngfmetrics.NewManagerMetricsCollector(constLabels) if err := metrics.Registry.Register(mgrCollector); err != nil { return nil, fmt.Errorf("failed to register NGINX manager runtime metrics collector: %w", err) } diff --git a/internal/mode/static/manager_test.go b/internal/mode/static/manager_test.go index 43f2d95616..4bd34230ed 100644 --- a/internal/mode/static/manager_test.go +++ b/internal/mode/static/manager_test.go @@ -12,7 +12,7 @@ import ( metricsserver "sigs.k8s.io/controller-runtime/pkg/metrics/server" gatewayv1beta1 "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/config" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/config" ) func TestPrepareFirstEventBatchPreparerArgs(t *testing.T) { diff --git a/internal/mode/static/metrics/metrics.go b/internal/mode/static/metrics/metrics.go index 1d9e85e7e6..1f6b62b127 100644 --- a/internal/mode/static/metrics/metrics.go +++ b/internal/mode/static/metrics/metrics.go @@ -1,4 +1,4 @@ package metrics // nolint:gosec // flagged as potential hardcoded credentials, but is not sensitive -const metricsNamespace = "nginx_kubernetes_gateway" +const metricsNamespace = "nginx_gateway_fabric" diff --git a/internal/mode/static/nginx/config/configfakes/fake_generator.go b/internal/mode/static/nginx/config/configfakes/fake_generator.go index 4b058a3553..828e41951b 100644 --- a/internal/mode/static/nginx/config/configfakes/fake_generator.go +++ b/internal/mode/static/nginx/config/configfakes/fake_generator.go @@ -4,9 +4,9 @@ package configfakes import ( "sync" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/config" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/file" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/dataplane" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/config" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/file" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/dataplane" ) type FakeGenerator struct { diff --git a/internal/mode/static/nginx/config/execute_test.go b/internal/mode/static/nginx/config/execute_test.go index 0e452f7b6a..4456c7370a 100644 --- a/internal/mode/static/nginx/config/execute_test.go +++ b/internal/mode/static/nginx/config/execute_test.go @@ -5,7 +5,7 @@ import ( . "github.com/onsi/gomega" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/config/http" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/config/http" ) func TestExecute(t *testing.T) { diff --git a/internal/mode/static/nginx/config/generator.go b/internal/mode/static/nginx/config/generator.go index 851d8147f8..77cb2220d0 100644 --- a/internal/mode/static/nginx/config/generator.go +++ b/internal/mode/static/nginx/config/generator.go @@ -3,8 +3,8 @@ package config import ( "path/filepath" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/file" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/dataplane" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/file" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/dataplane" ) //go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 . Generator diff --git a/internal/mode/static/nginx/config/generator_test.go b/internal/mode/static/nginx/config/generator_test.go index 465a1d5fe1..34cd858d05 100644 --- a/internal/mode/static/nginx/config/generator_test.go +++ b/internal/mode/static/nginx/config/generator_test.go @@ -7,9 +7,9 @@ import ( . "github.com/onsi/gomega" "k8s.io/apimachinery/pkg/types" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/config" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/file" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/dataplane" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/config" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/file" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/dataplane" ) func TestGenerate(t *testing.T) { diff --git a/internal/mode/static/nginx/config/maps.go b/internal/mode/static/nginx/config/maps.go index b5cc695f4f..2ced93fece 100644 --- a/internal/mode/static/nginx/config/maps.go +++ b/internal/mode/static/nginx/config/maps.go @@ -4,8 +4,8 @@ import ( "strings" gotemplate "text/template" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/config/http" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/dataplane" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/config/http" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/dataplane" ) var mapsTemplate = gotemplate.Must(gotemplate.New("maps").Parse(mapsTemplateText)) diff --git a/internal/mode/static/nginx/config/maps_test.go b/internal/mode/static/nginx/config/maps_test.go index b6ac952a82..1e6f1a30a9 100644 --- a/internal/mode/static/nginx/config/maps_test.go +++ b/internal/mode/static/nginx/config/maps_test.go @@ -6,8 +6,8 @@ import ( . "github.com/onsi/gomega" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/config/http" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/dataplane" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/config/http" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/dataplane" ) func TestExecuteMaps(t *testing.T) { diff --git a/internal/mode/static/nginx/config/servers.go b/internal/mode/static/nginx/config/servers.go index cd62e68871..d91d33d8f1 100644 --- a/internal/mode/static/nginx/config/servers.go +++ b/internal/mode/static/nginx/config/servers.go @@ -6,8 +6,8 @@ import ( "strings" gotemplate "text/template" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/config/http" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/dataplane" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/config/http" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/dataplane" ) var serversTemplate = gotemplate.Must(gotemplate.New("servers").Parse(serversTemplateText)) @@ -109,7 +109,7 @@ func createLocations(pathRules []dataplane.PathRule, listenerPort int32) []http. // FIXME(pleshakov): Ensure dataplane.Configuration -related types don't include v1beta1 types, so that // we don't need to make any assumptions like above here. After fixing this, ensure that there is a test // for checking the imported Webhook validation catches the case above. - // https://github.com/nginxinc/nginx-kubernetes-gateway/issues/660 + // https://github.com/nginxinc/nginx-gateway-fabric/issues/660 // RequestRedirect and proxying are mutually exclusive. if r.Filters.RequestRedirect != nil { @@ -419,7 +419,7 @@ func convertSetHeaders(headers []dataplane.HTTPHeader) []http.Header { func convertMatchesToString(matches []httpMatch) string { // FIXME(sberman): De-dupe matches and associated locations // so we don't need nginx/njs to perform unnecessary matching. - // https://github.com/nginxinc/nginx-kubernetes-gateway/issues/662 + // https://github.com/nginxinc/nginx-gateway-fabric/issues/662 b, err := json.Marshal(matches) if err != nil { // panic is safe here because we should never fail to marshal the match unless we constructed it incorrectly. diff --git a/internal/mode/static/nginx/config/servers_test.go b/internal/mode/static/nginx/config/servers_test.go index 1741be30fc..ef9477f739 100644 --- a/internal/mode/static/nginx/config/servers_test.go +++ b/internal/mode/static/nginx/config/servers_test.go @@ -9,9 +9,9 @@ import ( . "github.com/onsi/gomega" "k8s.io/apimachinery/pkg/types" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/config/http" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/dataplane" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/config/http" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/dataplane" ) func TestExecuteServers(t *testing.T) { diff --git a/internal/mode/static/nginx/config/split_clients.go b/internal/mode/static/nginx/config/split_clients.go index 7728c52307..61d63aaec0 100644 --- a/internal/mode/static/nginx/config/split_clients.go +++ b/internal/mode/static/nginx/config/split_clients.go @@ -5,8 +5,8 @@ import ( "math" gotemplate "text/template" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/config/http" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/dataplane" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/config/http" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/dataplane" ) var splitClientsTemplate = gotemplate.Must(gotemplate.New("split_clients").Parse(splitClientsTemplateText)) diff --git a/internal/mode/static/nginx/config/split_clients_test.go b/internal/mode/static/nginx/config/split_clients_test.go index 685de1a28f..31e0ed445b 100644 --- a/internal/mode/static/nginx/config/split_clients_test.go +++ b/internal/mode/static/nginx/config/split_clients_test.go @@ -6,8 +6,8 @@ import ( . "github.com/onsi/gomega" "k8s.io/apimachinery/pkg/types" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/config/http" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/dataplane" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/config/http" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/dataplane" ) func TestExecuteSplitClients(t *testing.T) { diff --git a/internal/mode/static/nginx/config/upstreams.go b/internal/mode/static/nginx/config/upstreams.go index 3410f01c18..75f36e3ae9 100644 --- a/internal/mode/static/nginx/config/upstreams.go +++ b/internal/mode/static/nginx/config/upstreams.go @@ -4,8 +4,8 @@ import ( "fmt" gotemplate "text/template" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/config/http" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/dataplane" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/config/http" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/dataplane" ) var upstreamsTemplate = gotemplate.Must(gotemplate.New("upstreams").Parse(upstreamsTemplateText)) diff --git a/internal/mode/static/nginx/config/upstreams_template.go b/internal/mode/static/nginx/config/upstreams_template.go index ff9a4f9198..bf28a6e2e7 100644 --- a/internal/mode/static/nginx/config/upstreams_template.go +++ b/internal/mode/static/nginx/config/upstreams_template.go @@ -2,7 +2,7 @@ package config // FIXME(kate-osborn): Dynamically calculate upstream zone size based on the number of upstreams. // 512k will support up to 648 upstream servers. -// https://github.com/nginxinc/nginx-kubernetes-gateway/issues/483 +// https://github.com/nginxinc/nginx-gateway-fabric/issues/483 var upstreamsTemplateText = ` {{ range $u := . }} upstream {{ $u.Name }} { diff --git a/internal/mode/static/nginx/config/upstreams_test.go b/internal/mode/static/nginx/config/upstreams_test.go index c24a5820f2..6ec0bbfd48 100644 --- a/internal/mode/static/nginx/config/upstreams_test.go +++ b/internal/mode/static/nginx/config/upstreams_test.go @@ -5,9 +5,9 @@ import ( . "github.com/onsi/gomega" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/config/http" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/dataplane" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/resolver" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/config/http" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/dataplane" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/resolver" ) func TestExecuteUpstreams(t *testing.T) { diff --git a/internal/mode/static/nginx/config/validation/doc.go b/internal/mode/static/nginx/config/validation/doc.go index f733288138..ab0cb5a162 100644 --- a/internal/mode/static/nginx/config/validation/doc.go +++ b/internal/mode/static/nginx/config/validation/doc.go @@ -4,7 +4,7 @@ Package validation includes validators to validate values that will propagate to The validation rules prevent two cases: (1) Invalid values. Such values will cause NGINX to fail to reload the configuration. (2) Malicious values. Such values will cause NGINX to succeed to reload, but will configure NGINX maliciously, outside -of the NKG capabilities. For example, configuring NGINX to serve the contents of the file system of its container. +of the NGF capabilities. For example, configuring NGINX to serve the contents of the file system of its container. The validation rules are based on the types in the parent config package and how they are used in the NGINX configuration templates. Changes to those might require changing the validation rules. diff --git a/internal/mode/static/nginx/config/validation/http_njs_match.go b/internal/mode/static/nginx/config/validation/http_njs_match.go index 6675f049fa..d207766c20 100644 --- a/internal/mode/static/nginx/config/validation/http_njs_match.go +++ b/internal/mode/static/nginx/config/validation/http_njs_match.go @@ -8,7 +8,7 @@ import ( k8svalidation "k8s.io/apimachinery/pkg/util/validation" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/config" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/config" ) // HTTPNJSMatchValidator validates values used for matching a request. @@ -38,7 +38,7 @@ func (HTTPNJSMatchValidator) ValidatePathInMatch(path string) error { } // FIXME(pleshakov): This function will no longer be - // needed once https://github.com/nginxinc/nginx-kubernetes-gateway/issues/428 is fixed. + // needed once https://github.com/nginxinc/nginx-gateway-fabric/issues/428 is fixed. // That's because the location path gets into the set directive in the location block. // Example: set $http_matches "[{\"redirectPath\":\"/coffee_route0\" ... // Where /coffee is tha path. diff --git a/internal/mode/static/nginx/config/validation/http_validator.go b/internal/mode/static/nginx/config/validation/http_validator.go index 55af7e3367..10c98aec34 100644 --- a/internal/mode/static/nginx/config/validation/http_validator.go +++ b/internal/mode/static/nginx/config/validation/http_validator.go @@ -1,7 +1,7 @@ package validation import ( - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/validation" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/validation" ) // HTTPValidator validates values that will propagate into the NGINX configuration http context. diff --git a/internal/mode/static/nginx/config/variable_names.go b/internal/mode/static/nginx/config/variable_names.go index 7e5680b8fb..0b8cd6430d 100644 --- a/internal/mode/static/nginx/config/variable_names.go +++ b/internal/mode/static/nginx/config/variable_names.go @@ -15,7 +15,7 @@ func convertStringToSafeVariableName(s string) string { // proxy_headers_hash_max_size and variables_hash_max_size to 1024 to support the longest header name as allowed // by the schema (256 characters). This ensures NGINX will not fail to reload. // FIXME(ciarams87): Investigate if any there are any performance related concerns with changing these directives. -// https://github.com/nginxinc/nginx-kubernetes-gateway/issues/772 +// https://github.com/nginxinc/nginx-gateway-fabric/issues/772 func generateAddHeaderMapVariableName(name string) string { return strings.ToLower(convertStringToSafeVariableName(name)) + "_header_var" } diff --git a/internal/mode/static/nginx/file/filefakes/fake_clear_folders_osfile_manager.go b/internal/mode/static/nginx/file/filefakes/fake_clear_folders_osfile_manager.go index dc4595e44c..49bd5658ee 100644 --- a/internal/mode/static/nginx/file/filefakes/fake_clear_folders_osfile_manager.go +++ b/internal/mode/static/nginx/file/filefakes/fake_clear_folders_osfile_manager.go @@ -5,7 +5,7 @@ import ( "io/fs" "sync" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/file" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/file" ) type FakeClearFoldersOSFileManager struct { diff --git a/internal/mode/static/nginx/file/filefakes/fake_manager.go b/internal/mode/static/nginx/file/filefakes/fake_manager.go index 1e03abfefe..557202ae1d 100644 --- a/internal/mode/static/nginx/file/filefakes/fake_manager.go +++ b/internal/mode/static/nginx/file/filefakes/fake_manager.go @@ -4,7 +4,7 @@ package filefakes import ( "sync" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/file" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/file" ) type FakeManager struct { diff --git a/internal/mode/static/nginx/file/filefakes/fake_osfile_manager.go b/internal/mode/static/nginx/file/filefakes/fake_osfile_manager.go index edcac47d2b..d1e5128a33 100644 --- a/internal/mode/static/nginx/file/filefakes/fake_osfile_manager.go +++ b/internal/mode/static/nginx/file/filefakes/fake_osfile_manager.go @@ -6,7 +6,7 @@ import ( "os" "sync" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/file" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/file" ) type FakeOSFileManager struct { diff --git a/internal/mode/static/nginx/file/folders_test.go b/internal/mode/static/nginx/file/folders_test.go index 67fa0d12f7..10057be477 100644 --- a/internal/mode/static/nginx/file/folders_test.go +++ b/internal/mode/static/nginx/file/folders_test.go @@ -8,8 +8,8 @@ import ( . "github.com/onsi/gomega" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/file" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/file/filefakes" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/file" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/file/filefakes" ) func writeFile(t *testing.T, name string, data []byte) { diff --git a/internal/mode/static/nginx/file/manager_test.go b/internal/mode/static/nginx/file/manager_test.go index 783a3314fc..c6f52a526c 100644 --- a/internal/mode/static/nginx/file/manager_test.go +++ b/internal/mode/static/nginx/file/manager_test.go @@ -9,8 +9,8 @@ import ( . "github.com/onsi/gomega" "sigs.k8s.io/controller-runtime/pkg/log/zap" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/file" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/file/filefakes" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/file" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/file/filefakes" ) var _ = Describe("EventHandler", func() { diff --git a/internal/mode/static/nginx/modules/README.md b/internal/mode/static/nginx/modules/README.md index d75409df83..11dfbcf162 100644 --- a/internal/mode/static/nginx/modules/README.md +++ b/internal/mode/static/nginx/modules/README.md @@ -1,6 +1,6 @@ # NGINX JavaScript Modules -This directory contains the [njs](http://nginx.org/en/docs/njs/) modules for NGINX Kubernetes Gateway. +This directory contains the [njs](http://nginx.org/en/docs/njs/) modules for NGINX Gateway Fabric. ## Prerequisites diff --git a/internal/mode/static/nginx/runtime/runtimefakes/fake_manager.go b/internal/mode/static/nginx/runtime/runtimefakes/fake_manager.go index 1fd6724c7d..f841eaf099 100644 --- a/internal/mode/static/nginx/runtime/runtimefakes/fake_manager.go +++ b/internal/mode/static/nginx/runtime/runtimefakes/fake_manager.go @@ -5,7 +5,7 @@ import ( "context" "sync" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/nginx/runtime" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/nginx/runtime" ) type FakeManager struct { diff --git a/internal/mode/static/state/change_processor.go b/internal/mode/static/state/change_processor.go index 6ccf00d751..cbce3340fd 100644 --- a/internal/mode/static/state/change_processor.go +++ b/internal/mode/static/state/change_processor.go @@ -17,9 +17,9 @@ import ( gwapivalidation "sigs.k8s.io/gateway-api/apis/v1beta1/validation" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/graph" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/relationship" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/validation" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/graph" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/relationship" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/validation" ) const ( @@ -172,7 +172,7 @@ func NewChangeProcessorImpl(cfg ChangeProcessorConfig) *ChangeProcessorImpl { // We don't validate GatewayClass or ReferenceGrant, because as of the latest version, // the webhook doesn't validate them. // It only validates a GatewayClass update that requires the previous version of the resource, - // which NKG cannot reliably provide - for example, after NKG restarts). + // which NGF cannot reliably provide - for example, after NGF restarts). // https://github.com/kubernetes-sigs/gateway-api/blob/v0.8.0/apis/v1beta1/validation/gatewayclass.go#L28 case *v1beta1.Gateway: err = gwapivalidation.ValidateGateway(o).ToAggregate() @@ -196,8 +196,9 @@ func NewChangeProcessorImpl(cfg ChangeProcessorConfig) *ChangeProcessorImpl { // Currently, changes (upserts/delete) trigger rebuilding of the configuration, even if the change doesn't change // the configuration or the statuses of the resources. For example, a change in a Gateway resource that doesn't -// belong to the NGINX Gateway or an HTTPRoute that doesn't belong to any of the Gateways of the NGINX Gateway. -// Find a way to ignore changes that don't affect the configuration and/or statuses of the resources. +// belong to the NGINX Gateway Fabric or an HTTPRoute that doesn't belong to any of the Gateways of the +// NGINX Gateway Fabric. Find a way to ignore changes that don't affect the configuration and/or statuses of +// the resources. // FIXME(pleshakov) // Remove CaptureUpsertChange() and CaptureDeleteChange() from ChangeProcessor and pass all changes directly to diff --git a/internal/mode/static/state/change_processor_test.go b/internal/mode/static/state/change_processor_test.go index a22088b7ad..1a3fee8bb4 100644 --- a/internal/mode/static/state/change_processor_test.go +++ b/internal/mode/static/state/change_processor_test.go @@ -16,16 +16,16 @@ import ( "sigs.k8s.io/gateway-api/apis/v1alpha2" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/conditions" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/controller/index" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state" - staticConds "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/conditions" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/graph" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/relationship" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/relationship/relationshipfakes" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/validation" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/validation/validationfakes" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/controller/index" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state" + staticConds "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/graph" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/relationship" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/relationship/relationshipfakes" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/validation" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/validation/validationfakes" ) const ( diff --git a/internal/mode/static/state/conditions/conditions.go b/internal/mode/static/state/conditions/conditions.go index 9ad84eb35b..0c3b33c104 100644 --- a/internal/mode/static/state/conditions/conditions.go +++ b/internal/mode/static/state/conditions/conditions.go @@ -6,8 +6,8 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/gateway-api/apis/v1beta1" - nkgAPI "github.com/nginxinc/nginx-kubernetes-gateway/apis/v1alpha1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/conditions" + ngfAPI "github.com/nginxinc/nginx-gateway-fabric/apis/v1alpha1" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/conditions" ) const ( @@ -546,9 +546,9 @@ func NewGatewayConflictNotProgrammed() conditions.Condition { // NewNginxGatewayValid returns a Condition that indicates that the NginxGateway config is valid. func NewNginxGatewayValid() conditions.Condition { return conditions.Condition{ - Type: string(nkgAPI.NginxGatewayConditionValid), + Type: string(ngfAPI.NginxGatewayConditionValid), Status: metav1.ConditionTrue, - Reason: string(nkgAPI.NginxGatewayReasonValid), + Reason: string(ngfAPI.NginxGatewayReasonValid), Message: "NginxGateway is valid", } } @@ -556,9 +556,9 @@ func NewNginxGatewayValid() conditions.Condition { // NewNginxGatewayInvalid returns a Condition that indicates that the NginxGateway config is invalid. func NewNginxGatewayInvalid(msg string) conditions.Condition { return conditions.Condition{ - Type: string(nkgAPI.NginxGatewayConditionValid), + Type: string(ngfAPI.NginxGatewayConditionValid), Status: metav1.ConditionFalse, - Reason: string(nkgAPI.NginxGatewayReasonInvalid), + Reason: string(ngfAPI.NginxGatewayReasonInvalid), Message: msg, } } diff --git a/internal/mode/static/state/conditions/conditions_test.go b/internal/mode/static/state/conditions/conditions_test.go index 2f7aea48b9..8729994c29 100644 --- a/internal/mode/static/state/conditions/conditions_test.go +++ b/internal/mode/static/state/conditions/conditions_test.go @@ -6,7 +6,7 @@ import ( . "github.com/onsi/gomega" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/conditions" ) func TestDeduplicateConditions(t *testing.T) { diff --git a/internal/mode/static/state/dataplane/configuration.go b/internal/mode/static/state/dataplane/configuration.go index d438c1ec66..f47eed14f2 100644 --- a/internal/mode/static/state/dataplane/configuration.go +++ b/internal/mode/static/state/dataplane/configuration.go @@ -9,8 +9,8 @@ import ( "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/graph" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/resolver" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/graph" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/resolver" ) const wildcardHostname = "~^" diff --git a/internal/mode/static/state/dataplane/configuration_test.go b/internal/mode/static/state/dataplane/configuration_test.go index 4e8ecc3c64..a2c819edae 100644 --- a/internal/mode/static/state/dataplane/configuration_test.go +++ b/internal/mode/static/state/dataplane/configuration_test.go @@ -13,10 +13,10 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/graph" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/resolver" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/resolver/resolverfakes" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/graph" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/resolver" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/resolver/resolverfakes" ) func TestBuildConfiguration(t *testing.T) { diff --git a/internal/mode/static/state/dataplane/convert_test.go b/internal/mode/static/state/dataplane/convert_test.go index 19ea4bf232..0d944d6e37 100644 --- a/internal/mode/static/state/dataplane/convert_test.go +++ b/internal/mode/static/state/dataplane/convert_test.go @@ -6,7 +6,7 @@ import ( . "github.com/onsi/gomega" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" ) func TestConvertMatch(t *testing.T) { diff --git a/internal/mode/static/state/dataplane/sort.go b/internal/mode/static/state/dataplane/sort.go index 23c4c19bff..553d522768 100644 --- a/internal/mode/static/state/dataplane/sort.go +++ b/internal/mode/static/state/dataplane/sort.go @@ -3,7 +3,7 @@ package dataplane import ( "sort" - nkgsort "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/sort" + ngfsort "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/sort" ) func sortMatchRules(matchRules []MatchRule) { @@ -67,5 +67,5 @@ func higherPriority(rule1, rule2 MatchRule) bool { } // If still tied, compare the object meta of the two routes. - return nkgsort.LessObjectMeta(rule1.Source, rule2.Source) + return ngfsort.LessObjectMeta(rule1.Source, rule2.Source) } diff --git a/internal/mode/static/state/dataplane/sort_test.go b/internal/mode/static/state/dataplane/sort_test.go index edaca77da3..9ab1ca5b4b 100644 --- a/internal/mode/static/state/dataplane/sort_test.go +++ b/internal/mode/static/state/dataplane/sort_test.go @@ -8,7 +8,7 @@ import ( . "github.com/onsi/gomega" metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" ) func TestSort(t *testing.T) { diff --git a/internal/mode/static/state/dataplane/types.go b/internal/mode/static/state/dataplane/types.go index 9964227829..98d61c73f5 100644 --- a/internal/mode/static/state/dataplane/types.go +++ b/internal/mode/static/state/dataplane/types.go @@ -6,7 +6,7 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "k8s.io/apimachinery/pkg/types" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/resolver" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/resolver" ) // PathType is the type of the path in a PathRule. diff --git a/internal/mode/static/state/graph/backend_refs.go b/internal/mode/static/state/graph/backend_refs.go index a5a9b2b42f..2bfbb5695d 100644 --- a/internal/mode/static/state/graph/backend_refs.go +++ b/internal/mode/static/state/graph/backend_refs.go @@ -8,8 +8,8 @@ import ( "k8s.io/apimachinery/pkg/util/validation/field" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/conditions" - staticConds "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/conditions" + staticConds "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/conditions" ) // BackendRef is an internal representation of a backendRef in an HTTPRoute. diff --git a/internal/mode/static/state/graph/backend_refs_test.go b/internal/mode/static/state/graph/backend_refs_test.go index 2cd03de6d3..b5ed7e5f91 100644 --- a/internal/mode/static/state/graph/backend_refs_test.go +++ b/internal/mode/static/state/graph/backend_refs_test.go @@ -11,9 +11,9 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/conditions" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" - staticConds "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" + staticConds "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/conditions" ) func getNormalRef() v1beta1.BackendRef { diff --git a/internal/mode/static/state/graph/gateway.go b/internal/mode/static/state/graph/gateway.go index 908aa7ef19..a7eb0b150c 100644 --- a/internal/mode/static/state/graph/gateway.go +++ b/internal/mode/static/state/graph/gateway.go @@ -8,9 +8,9 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/conditions" - nkgsort "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/sort" - staticConds "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/conditions" + ngfsort "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/sort" + staticConds "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/conditions" ) // Gateway represents the winning Gateway resource. @@ -25,13 +25,13 @@ type Gateway struct { Valid bool } -// processedGateways holds the resources that belong to NKG. +// processedGateways holds the resources that belong to NGF. type processedGateways struct { Winner *v1beta1.Gateway Ignored map[types.NamespacedName]*v1beta1.Gateway } -// GetAllNsNames returns all the NamespacedNames of the Gateway resources that belong to NKG +// GetAllNsNames returns all the NamespacedNames of the Gateway resources that belong to NGF func (gws processedGateways) GetAllNsNames() []types.NamespacedName { winnerCnt := 0 if gws.Winner != nil { @@ -55,7 +55,7 @@ func (gws processedGateways) GetAllNsNames() []types.NamespacedName { return allNsNames } -// processGateways determines which Gateway resource belong to NKG (determined by the Gateway GatewayClassName field). +// processGateways determines which Gateway resource belong to NGF (determined by the Gateway GatewayClassName field). func processGateways( gws map[types.NamespacedName]*v1beta1.Gateway, gcName string, @@ -75,7 +75,7 @@ func processGateways( } sort.Slice(referencedGws, func(i, j int) bool { - return nkgsort.LessObjectMeta(&referencedGws[i].ObjectMeta, &referencedGws[j].ObjectMeta) + return ngfsort.LessObjectMeta(&referencedGws[i].ObjectMeta, &referencedGws[j].ObjectMeta) }) ignoredGws := make(map[types.NamespacedName]*v1beta1.Gateway) diff --git a/internal/mode/static/state/graph/gateway_listener.go b/internal/mode/static/state/graph/gateway_listener.go index eb77ab2902..5bea0aa545 100644 --- a/internal/mode/static/state/graph/gateway_listener.go +++ b/internal/mode/static/state/graph/gateway_listener.go @@ -10,8 +10,8 @@ import ( "k8s.io/apimachinery/pkg/util/validation/field" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/conditions" - staticConds "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/conditions" + staticConds "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/conditions" ) // Listener represents a Listener of the Gateway resource. @@ -32,7 +32,7 @@ type Listener struct { // SupportedKinds is the list of RouteGroupKinds allowed by the listener. SupportedKinds []v1beta1.RouteGroupKind // Valid shows whether the Listener is valid. - // A Listener is considered valid if NKG can generate valid NGINX configuration for it. + // A Listener is considered valid if NGF can generate valid NGINX configuration for it. Valid bool } diff --git a/internal/mode/static/state/graph/gateway_listener_test.go b/internal/mode/static/state/graph/gateway_listener_test.go index ed4689e1ab..a1b25bf08f 100644 --- a/internal/mode/static/state/graph/gateway_listener_test.go +++ b/internal/mode/static/state/graph/gateway_listener_test.go @@ -8,9 +8,9 @@ import ( metav1 "k8s.io/apimachinery/pkg/apis/meta/v1" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/conditions" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" - staticConds "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" + staticConds "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/conditions" ) func TestValidateHTTPListener(t *testing.T) { diff --git a/internal/mode/static/state/graph/gateway_test.go b/internal/mode/static/state/graph/gateway_test.go index f500c74cfc..6816e6c5a5 100644 --- a/internal/mode/static/state/graph/gateway_test.go +++ b/internal/mode/static/state/graph/gateway_test.go @@ -12,8 +12,8 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" - staticConds "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" + staticConds "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/conditions" ) func TestProcessedGatewaysGetAllNsNames(t *testing.T) { diff --git a/internal/mode/static/state/graph/gatewayclass.go b/internal/mode/static/state/graph/gatewayclass.go index feb0e7989f..819f7a4860 100644 --- a/internal/mode/static/state/graph/gatewayclass.go +++ b/internal/mode/static/state/graph/gatewayclass.go @@ -6,8 +6,8 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/conditions" - staticConds "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/conditions" + staticConds "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/conditions" ) // GatewayClass represents the GatewayClass resource. @@ -20,7 +20,7 @@ type GatewayClass struct { Valid bool } -// processedGatewayClasses holds the resources that belong to NKG. +// processedGatewayClasses holds the resources that belong to NGF. type processedGatewayClasses struct { Winner *v1beta1.GatewayClass Ignored map[types.NamespacedName]*v1beta1.GatewayClass diff --git a/internal/mode/static/state/graph/gatewayclass_test.go b/internal/mode/static/state/graph/gatewayclass_test.go index 0ec15001d7..b5e899b00b 100644 --- a/internal/mode/static/state/graph/gatewayclass_test.go +++ b/internal/mode/static/state/graph/gatewayclass_test.go @@ -9,9 +9,9 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/conditions" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" - staticConds "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" + staticConds "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/conditions" ) func TestProcessGatewayClasses(t *testing.T) { diff --git a/internal/mode/static/state/graph/graph.go b/internal/mode/static/state/graph/graph.go index cc9ab1da4b..f5b0102ead 100644 --- a/internal/mode/static/state/graph/graph.go +++ b/internal/mode/static/state/graph/graph.go @@ -6,7 +6,7 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/validation" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/validation" ) // ClusterState includes cluster resources necessary to build the Graph. @@ -26,13 +26,13 @@ type Graph struct { GatewayClass *GatewayClass // Gateway holds the winning Gateway resource. Gateway *Gateway - // IgnoredGatewayClasses holds the ignored GatewayClass resources, which reference NGINX Gateway in the - // controllerName, but are not configured via the NGINX Gateway CLI argument. It doesn't hold the GatewayClass - // resources that do not belong to the NGINX Gateway. + // IgnoredGatewayClasses holds the ignored GatewayClass resources, which reference NGINX Gateway Fabric in the + // controllerName, but are not configured via the NGINX Gateway Fabric CLI argument. It doesn't hold the GatewayClass + // resources that do not belong to the NGINX Gateway Fabric. IgnoredGatewayClasses map[types.NamespacedName]*v1beta1.GatewayClass - // IgnoredGateways holds the ignored Gateway resources, which belong to the NGINX Gateway (based on the + // IgnoredGateways holds the ignored Gateway resources, which belong to the NGINX Gateway Fabric (based on the // GatewayClassName field of the resource) but ignored. It doesn't hold the Gateway resources that do not belong to - // the NGINX Gateway. + // the NGINX Gateway Fabric. IgnoredGateways map[types.NamespacedName]*v1beta1.Gateway // Routes holds Route resources. Routes map[types.NamespacedName]*Route @@ -51,7 +51,7 @@ func (g *Graph) IsReferenced(resourceType client.Object, nsname types.Namespaced // FIMXE(pleshakov): For now, only works with Secrets. // Support EndpointSlices and Namespaces so that we can remove relationship.Capturer and use the Graph // as source to determine the relationships. - // See https://github.com/nginxinc/nginx-kubernetes-gateway/issues/824 + // See https://github.com/nginxinc/nginx-gateway-fabric/issues/824 switch resourceType.(type) { case *v1.Secret: diff --git a/internal/mode/static/state/graph/graph_test.go b/internal/mode/static/state/graph/graph_test.go index d7340036ac..bdd16771c0 100644 --- a/internal/mode/static/state/graph/graph_test.go +++ b/internal/mode/static/state/graph/graph_test.go @@ -11,9 +11,9 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/validation" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/validation/validationfakes" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/validation" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/validation/validationfakes" ) func TestBuildGraph(t *testing.T) { diff --git a/internal/mode/static/state/graph/httproute.go b/internal/mode/static/state/graph/httproute.go index 39edf32ade..5a6dc0966e 100644 --- a/internal/mode/static/state/graph/httproute.go +++ b/internal/mode/static/state/graph/httproute.go @@ -12,9 +12,9 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/conditions" - staticConds "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/conditions" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/validation" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/conditions" + staticConds "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/validation" ) const wildcardHostname = "~^" @@ -24,7 +24,7 @@ type Rule struct { // BackendRefs is a list of BackendRefs for the rule. BackendRefs []BackendRef // ValidMatches indicates whether the matches of the rule are valid. - // If the matches are invalid, NGK should not generate any configuration for the rule. + // If the matches are invalid, NGF should not generate any configuration for the rule. ValidMatches bool // ValidFilters indicates whether the filters of the rule are valid. // If the filters are invalid, the data-plane should return 500 error provided that the matches are valid. @@ -33,7 +33,7 @@ type Rule struct { // ParentRef describes a reference to a parent in an HTTPRoute. type ParentRef struct { - // Attachment is the attachment status of the ParentRef. It could be nil. In that case, NGK didn't attempt to + // Attachment is the attachment status of the ParentRef. It could be nil. In that case, NGF didn't attempt to // attach because of problems with the Route. Attachment *ParentRefAttachmentStatus // Gateway is the NamespacedName of the referenced Gateway @@ -58,7 +58,7 @@ type ParentRefAttachmentStatus struct { type Route struct { // Source is the source resource of the Route. Source *v1beta1.HTTPRoute - // ParentRefs includes ParentRefs with NKG Gateways only. + // ParentRefs includes ParentRefs with NGF Gateways only. ParentRefs []ParentRef // Conditions include Conditions for the HTTPRoute. Conditions []conditions.Condition @@ -66,7 +66,7 @@ type Route struct { // If the Route is invalid, this field is nil Rules []Rule // Valid tells if the Route is valid. - // If it is invalid, NGK should not generate any configuration for it. + // If it is invalid, NGF should not generate any configuration for it. Valid bool } @@ -234,7 +234,7 @@ func buildRoute( if atLeastOneValid { // FIXME(pleshakov): Partial validity for HTTPRoute rules is not defined in the Gateway API spec yet. - // See https://github.com/nginxinc/nginx-kubernetes-gateway/issues/485 + // See https://github.com/nginxinc/nginx-gateway-fabric/issues/485 msg = "Some rules are invalid: " + msg r.Conditions = append(r.Conditions, staticConds.NewTODO(msg)) } else { diff --git a/internal/mode/static/state/graph/httproute_test.go b/internal/mode/static/state/graph/httproute_test.go index 557ac1b9e8..4d3fa26bb4 100644 --- a/internal/mode/static/state/graph/httproute_test.go +++ b/internal/mode/static/state/graph/httproute_test.go @@ -13,10 +13,10 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/conditions" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" - staticConds "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/conditions" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/validation/validationfakes" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" + staticConds "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/conditions" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/validation/validationfakes" ) const ( @@ -348,7 +348,7 @@ func TestBuildRoute(t *testing.T) { addFilterToPath(hr, "/filter", validFilter) hrInvalidHostname := createHTTPRoute("hr", gatewayNsName.Name, "", "/") - hrNotNKG := createHTTPRoute("hr", "some-gateway", "example.com", "/") + hrNotNGF := createHTTPRoute("hr", "some-gateway", "example.com", "/") hrInvalidMatches := createHTTPRoute("hr", gatewayNsName.Name, "example.com", invalidPath) hrInvalidFilters := createHTTPRoute("hr", gatewayNsName.Name, "example.com", "/filter") @@ -405,9 +405,9 @@ func TestBuildRoute(t *testing.T) { }, { validator: &validationfakes.FakeHTTPFieldsValidator{}, - hr: hrNotNKG, + hr: hrNotNGF, expected: nil, - name: "not NKG route", + name: "not NGF route", }, { validator: &validationfakes.FakeHTTPFieldsValidator{}, diff --git a/internal/mode/static/state/graph/reference_grant_test.go b/internal/mode/static/state/graph/reference_grant_test.go index eba07e3de1..aa84446b92 100644 --- a/internal/mode/static/state/graph/reference_grant_test.go +++ b/internal/mode/static/state/graph/reference_grant_test.go @@ -7,7 +7,7 @@ import ( "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" ) func TestReferenceGrantResolver(t *testing.T) { diff --git a/internal/mode/static/state/graph/validation.go b/internal/mode/static/state/graph/validation.go index 9103533140..049721c20c 100644 --- a/internal/mode/static/state/graph/validation.go +++ b/internal/mode/static/state/graph/validation.go @@ -32,7 +32,7 @@ func validateHostname(hostname string) error { } // panicForBrokenWebhookAssumption panics with the error message because an assumption about the webhook validation -// (run by NKG) is broken. +// (run by NGF) is broken. // Use it when you expect a validated Gateway API resource, but the actual resource breaks the validation constraints. // For example, a field that must not be nil is nil. func panicForBrokenWebhookAssumption(err error) { diff --git a/internal/mode/static/state/relationship/capturer.go b/internal/mode/static/state/relationship/capturer.go index ed2a784ea4..bd76ccd5e3 100644 --- a/internal/mode/static/state/relationship/capturer.go +++ b/internal/mode/static/state/relationship/capturer.go @@ -9,8 +9,8 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/controller/index" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/graph" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/controller/index" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/graph" ) //go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 . Capturer diff --git a/internal/mode/static/state/relationship/capturer_test.go b/internal/mode/static/state/relationship/capturer_test.go index f62baf085f..8f9321ef4b 100644 --- a/internal/mode/static/state/relationship/capturer_test.go +++ b/internal/mode/static/state/relationship/capturer_test.go @@ -10,9 +10,9 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/controller/index" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/relationship" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/controller/index" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/relationship" ) func createBackendRefs(backendNames ...v1beta1.ObjectName) []v1beta1.HTTPBackendRef { diff --git a/internal/mode/static/state/relationship/relationshipfakes/fake_capturer.go b/internal/mode/static/state/relationship/relationshipfakes/fake_capturer.go index 7f85ab6f8f..ea4f3b6783 100644 --- a/internal/mode/static/state/relationship/relationshipfakes/fake_capturer.go +++ b/internal/mode/static/state/relationship/relationshipfakes/fake_capturer.go @@ -4,7 +4,7 @@ package relationshipfakes import ( "sync" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/relationship" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/relationship" "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/client" ) diff --git a/internal/mode/static/state/relationship/relationships_test.go b/internal/mode/static/state/relationship/relationships_test.go index 74d6f3f885..838ac52172 100644 --- a/internal/mode/static/state/relationship/relationships_test.go +++ b/internal/mode/static/state/relationship/relationships_test.go @@ -8,7 +8,7 @@ import ( "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/gateway-api/apis/v1beta1" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" ) func TestGetBackendServiceNamesFromRoute(t *testing.T) { diff --git a/internal/mode/static/state/resolver/resolver.go b/internal/mode/static/state/resolver/resolver.go index 149edcbb09..2dab45a392 100644 --- a/internal/mode/static/state/resolver/resolver.go +++ b/internal/mode/static/state/resolver/resolver.go @@ -10,7 +10,7 @@ import ( "k8s.io/apimachinery/pkg/util/intstr" "sigs.k8s.io/controller-runtime/pkg/client" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/controller/index" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/controller/index" ) //go:generate go run github.com/maxbrunsfeld/counterfeiter/v6 . ServiceResolver diff --git a/internal/mode/static/state/resolver/resolver_test.go b/internal/mode/static/state/resolver/resolver_test.go index bf20e37d59..baedda7f96 100644 --- a/internal/mode/static/state/resolver/resolver_test.go +++ b/internal/mode/static/state/resolver/resolver_test.go @@ -9,7 +9,7 @@ import ( discoveryV1 "k8s.io/api/discovery/v1" "k8s.io/apimachinery/pkg/util/intstr" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" ) var ( diff --git a/internal/mode/static/state/resolver/resolverfakes/fake_service_resolver.go b/internal/mode/static/state/resolver/resolverfakes/fake_service_resolver.go index 06f223d39b..c1116462fb 100644 --- a/internal/mode/static/state/resolver/resolverfakes/fake_service_resolver.go +++ b/internal/mode/static/state/resolver/resolverfakes/fake_service_resolver.go @@ -5,7 +5,7 @@ import ( "context" "sync" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/resolver" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/resolver" v1 "k8s.io/api/core/v1" ) diff --git a/internal/mode/static/state/resolver/service_resolver_test.go b/internal/mode/static/state/resolver/service_resolver_test.go index 741e49896d..412eb72fc1 100644 --- a/internal/mode/static/state/resolver/service_resolver_test.go +++ b/internal/mode/static/state/resolver/service_resolver_test.go @@ -13,9 +13,9 @@ import ( "sigs.k8s.io/controller-runtime/pkg/client" "sigs.k8s.io/controller-runtime/pkg/client/fake" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/controller/index" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/framework/helpers" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/resolver" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/controller/index" + "github.com/nginxinc/nginx-gateway-fabric/internal/framework/helpers" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/resolver" ) func createSlice( diff --git a/internal/mode/static/state/statefakes/fake_change_processor.go b/internal/mode/static/state/statefakes/fake_change_processor.go index b24b784043..69a69af7b9 100644 --- a/internal/mode/static/state/statefakes/fake_change_processor.go +++ b/internal/mode/static/state/statefakes/fake_change_processor.go @@ -4,8 +4,8 @@ package statefakes import ( "sync" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/graph" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/graph" "k8s.io/apimachinery/pkg/types" "sigs.k8s.io/controller-runtime/pkg/client" ) diff --git a/internal/mode/static/state/store.go b/internal/mode/static/state/store.go index 40663ce458..5e776d0ce2 100644 --- a/internal/mode/static/state/store.go +++ b/internal/mode/static/state/store.go @@ -9,7 +9,7 @@ import ( "k8s.io/client-go/tools/record" "sigs.k8s.io/controller-runtime/pkg/client" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/relationship" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/relationship" ) // Updater updates the cluster state. @@ -214,7 +214,7 @@ func (s *changeTrackingUpdater) Upsert(obj client.Object) { // FIXME(pleshakov): Check generation in all cases to minimize the number of Graph regeneration. // s.changed can be true even if the generation of the object did not change, because // capturer and triggerStateChange don't take the generation into account. - // See https://github.com/nginxinc/nginx-kubernetes-gateway/issues/825 + // See https://github.com/nginxinc/nginx-gateway-fabric/issues/825 s.changed = s.changed || changingUpsert || relationshipExisted || relationshipExists || forceChanged } @@ -285,7 +285,7 @@ func (u *validatingUpsertUpdater) Upsert(obj client.Object) { obj, apiv1.EventTypeWarning, "Rejected", - "%s; NKG will delete any existing NGINX configuration that corresponds to the resource", + "%s; NGF will delete any existing NGINX configuration that corresponds to the resource", err.Error(), ) diff --git a/internal/mode/static/state/validation/validationfakes/fake_httpfields_validator.go b/internal/mode/static/state/validation/validationfakes/fake_httpfields_validator.go index f19519a322..4a82f1c08c 100644 --- a/internal/mode/static/state/validation/validationfakes/fake_httpfields_validator.go +++ b/internal/mode/static/state/validation/validationfakes/fake_httpfields_validator.go @@ -4,7 +4,7 @@ package validationfakes import ( "sync" - "github.com/nginxinc/nginx-kubernetes-gateway/internal/mode/static/state/validation" + "github.com/nginxinc/nginx-gateway-fabric/internal/mode/static/state/validation" ) type FakeHTTPFieldsValidator struct { diff --git a/internal/mode/static/state/validation/validator.go b/internal/mode/static/state/validation/validator.go index ad06077c65..d1ff623853 100644 --- a/internal/mode/static/state/validation/validator.go +++ b/internal/mode/static/state/validation/validator.go @@ -2,7 +2,7 @@ package validation // Validators include validators for Gateway API resources from the perspective of a data-plane. // It is used for fields that propagate into the data plane configuration. For example, the path in a routing rule. -// However, not all such fields are validated: NKG will not validate a field using Validators if it is confident that +// However, not all such fields are validated: NGF will not validate a field using Validators if it is confident that // the field is valid. type Validators struct { HTTPFieldsValidator HTTPFieldsValidator