From f4cc86e6f8fa6fceadf6211b510c4b2d6f6404a8 Mon Sep 17 00:00:00 2001 From: Alan Dooley Date: Wed, 22 Jan 2025 12:17:11 +0000 Subject: [PATCH 1/6] Remove documentation site and GitHub Action, update README references As of late December, NGINX has open sourced its documentation repository. The next stage of this effort is to consolidate all of the existing documentation into the single repository. This commit removes the entire `/site` folder that was being used to manage the documentation for NGINX Gateway Fabric separately from the main pipeline, as well as the GitHub action used for deployment. It also updates references to the folder to instead point towards the documentation repository, where all updates will be made in the future. --- .github/workflows/docs-build-push.yml | 63 - CONTRIBUTING.md | 4 +- README.md | 2 +- site/.gitignore | 3 - site/.markdownlint.json | 22 - site/Makefile | 64 - site/README.md | 164 - site/config/_default/config.toml | 67 - site/config/api/config.json | 28 - site/config/api/members.tpl | 48 - site/config/api/pkg.tpl | 57 - site/config/api/type.tpl | 83 - site/config/development/config.toml | 4 - site/config/docker/config.toml | 1 - site/config/production/config.toml | 4 - site/config/staging/config.toml | 4 - site/content/_index.md | 7 - site/content/changelog.md | 8 - site/content/get-started.md | 524 ---- site/content/how-to/_index.md | 4 - .../how-to/control-plane-configuration.md | 57 - .../how-to/data-plane-configuration.md | 198 -- site/content/how-to/monitoring/_index.md | 4 - site/content/how-to/monitoring/dashboard.md | 29 - site/content/how-to/monitoring/prometheus.md | 165 -- site/content/how-to/monitoring/tracing.md | 335 --- .../how-to/monitoring/troubleshooting.md | 478 --- .../how-to/traffic-management/_index.md | 4 - .../traffic-management/advanced-routing.md | 367 --- .../traffic-management/client-settings.md | 280 -- .../traffic-management/https-termination.md | 262 -- .../redirects-and-rewrites.md | 516 ---- .../request-response-headers.md | 354 --- .../routing-traffic-to-your-app.md | 390 --- .../how-to/traffic-management/snippets.md | 473 --- .../traffic-management/tls-passthrough.md | 237 -- .../upgrade-apps-without-downtime.md | 140 - .../traffic-management/upstream-settings.md | 395 --- .../content/how-to/traffic-security/_index.md | 4 - .../integrating-cert-manager.md | 311 -- .../securing-backend-traffic.md | 342 --- site/content/includes/index.md | 3 - .../delay-pod-termination-overview.md | 9 - .../termination-grace-period.md | 9 - .../expose-nginx-gateway-fabric.md | 53 - .../installation/helm/pulling-the-chart.md | 12 - ...stall-gateway-api-experimental-features.md | 24 - .../install-gateway-api-resources.md | 24 - .../installation/jwt-password-note.md | 11 - .../nginx-plus/docker-registry-secret.md | 19 - .../installation/nginx-plus/download-jwt.md | 10 - .../nginx-plus/nginx-plus-secret.md | 13 - .../uninstall-gateway-api-resources.md | 17 - site/content/installation/_index.md | 4 - .../installation/building-the-images.md | 81 - .../installation/installing-ngf/_index.md | 9 - .../installation/installing-ngf/helm.md | 330 --- .../installation/installing-ngf/manifests.md | 286 -- site/content/installation/nginx-plus-jwt.md | 242 -- site/content/overview/_index.md | 9 - site/content/overview/custom-policies.md | 160 - .../overview/gateway-api-compatibility.md | 379 --- site/content/overview/gateway-architecture.md | 115 - site/content/overview/nginx-plus.md | 15 - site/content/overview/product-telemetry.md | 56 - site/content/overview/resource-validation.md | 170 -- site/content/reference/_index.md | 4 - site/content/reference/api.md | 2625 ----------------- site/content/reference/cli-help.md | 70 - .../reference/technical-specifications.md | 13 - site/content/releases.md | 11 - site/content/support.md | 38 - site/go.mod | 5 - site/go.sum | 2 - site/hugo-entrypoint.sh | 4 - site/layouts/shortcodes/call-out.html | 3 - site/layouts/shortcodes/custom-styles.html | 43 - site/md-linkcheck-config.json | 13 - site/static/grafana-dashboard.json | 815 ----- site/static/img/advanced-routing.png | Bin 64807 -> 0 bytes .../img/cert-manager-gateway-workflow.png | Bin 209514 -> 0 bytes site/static/img/direct-policy-attachment.png | Bin 12638 -> 0 bytes site/static/img/hierarchy.png | Bin 16091 -> 0 bytes .../img/inherited-policy-attachment.png | Bin 74305 -> 0 bytes site/static/img/jaeger-trace-attributes.png | Bin 55067 -> 0 bytes site/static/img/jaeger-trace-overview.png | Bin 74862 -> 0 bytes site/static/img/ngf-high-level.png | Bin 138656 -> 0 bytes site/static/img/ngf-pod.png | Bin 131533 -> 0 bytes site/static/img/nginx-plus-dashboard.png | Bin 78194 -> 0 bytes site/static/img/route-all-traffic-app.png | Bin 35134 -> 0 bytes site/static/img/route-all-traffic-config.png | Bin 40397 -> 0 bytes site/static/img/route-all-traffic-flow.png | Bin 47364 -> 0 bytes site/static/img/src/README.md | 3 - site/static/img/src/advanced-routing.mermaid | 38 - .../img/src/route-all-traffic-app.mermaid | 13 - .../img/src/route-all-traffic-config.mermaid | 42 - .../img/src/route-all-traffic-flow.mermaid | 42 - site/static/jaeger.yaml | 37 - site/static/otel-collector.yaml | 72 - 99 files changed, 3 insertions(+), 12452 deletions(-) delete mode 100644 .github/workflows/docs-build-push.yml delete mode 100644 site/.gitignore delete mode 100644 site/.markdownlint.json delete mode 100644 site/Makefile delete mode 100644 site/README.md delete mode 100644 site/config/_default/config.toml delete mode 100644 site/config/api/config.json delete mode 100644 site/config/api/members.tpl delete mode 100644 site/config/api/pkg.tpl delete mode 100644 site/config/api/type.tpl delete mode 100644 site/config/development/config.toml delete mode 100644 site/config/docker/config.toml delete mode 100644 site/config/production/config.toml delete mode 100644 site/config/staging/config.toml delete mode 100644 site/content/_index.md delete mode 100644 site/content/changelog.md delete mode 100644 site/content/get-started.md delete mode 100644 site/content/how-to/_index.md delete mode 100644 site/content/how-to/control-plane-configuration.md delete mode 100644 site/content/how-to/data-plane-configuration.md delete mode 100644 site/content/how-to/monitoring/_index.md delete mode 100644 site/content/how-to/monitoring/dashboard.md delete mode 100644 site/content/how-to/monitoring/prometheus.md delete mode 100644 site/content/how-to/monitoring/tracing.md delete mode 100644 site/content/how-to/monitoring/troubleshooting.md delete mode 100644 site/content/how-to/traffic-management/_index.md delete mode 100644 site/content/how-to/traffic-management/advanced-routing.md delete mode 100644 site/content/how-to/traffic-management/client-settings.md delete mode 100644 site/content/how-to/traffic-management/https-termination.md delete mode 100644 site/content/how-to/traffic-management/redirects-and-rewrites.md delete mode 100644 site/content/how-to/traffic-management/request-response-headers.md delete mode 100644 site/content/how-to/traffic-management/routing-traffic-to-your-app.md delete mode 100644 site/content/how-to/traffic-management/snippets.md delete mode 100644 site/content/how-to/traffic-management/tls-passthrough.md delete mode 100644 site/content/how-to/traffic-management/upgrade-apps-without-downtime.md delete mode 100644 site/content/how-to/traffic-management/upstream-settings.md delete mode 100644 site/content/how-to/traffic-security/_index.md delete mode 100644 site/content/how-to/traffic-security/integrating-cert-manager.md delete mode 100644 site/content/how-to/traffic-security/securing-backend-traffic.md delete mode 100644 site/content/includes/index.md delete mode 100644 site/content/includes/installation/delay-pod-termination/delay-pod-termination-overview.md delete mode 100644 site/content/includes/installation/delay-pod-termination/termination-grace-period.md delete mode 100644 site/content/includes/installation/expose-nginx-gateway-fabric.md delete mode 100644 site/content/includes/installation/helm/pulling-the-chart.md delete mode 100644 site/content/includes/installation/install-gateway-api-experimental-features.md delete mode 100644 site/content/includes/installation/install-gateway-api-resources.md delete mode 100644 site/content/includes/installation/jwt-password-note.md delete mode 100644 site/content/includes/installation/nginx-plus/docker-registry-secret.md delete mode 100644 site/content/includes/installation/nginx-plus/download-jwt.md delete mode 100644 site/content/includes/installation/nginx-plus/nginx-plus-secret.md delete mode 100644 site/content/includes/installation/uninstall-gateway-api-resources.md delete mode 100644 site/content/installation/_index.md delete mode 100644 site/content/installation/building-the-images.md delete mode 100644 site/content/installation/installing-ngf/_index.md delete mode 100644 site/content/installation/installing-ngf/helm.md delete mode 100644 site/content/installation/installing-ngf/manifests.md delete mode 100644 site/content/installation/nginx-plus-jwt.md delete mode 100644 site/content/overview/_index.md delete mode 100644 site/content/overview/custom-policies.md delete mode 100644 site/content/overview/gateway-api-compatibility.md delete mode 100644 site/content/overview/gateway-architecture.md delete mode 100644 site/content/overview/nginx-plus.md delete mode 100644 site/content/overview/product-telemetry.md delete mode 100644 site/content/overview/resource-validation.md delete mode 100644 site/content/reference/_index.md delete mode 100644 site/content/reference/api.md delete mode 100644 site/content/reference/cli-help.md delete mode 100644 site/content/reference/technical-specifications.md delete mode 100644 site/content/releases.md delete mode 100644 site/content/support.md delete mode 100644 site/go.mod delete mode 100644 site/go.sum delete mode 100755 site/hugo-entrypoint.sh delete mode 100644 site/layouts/shortcodes/call-out.html delete mode 100644 site/layouts/shortcodes/custom-styles.html delete mode 100644 site/md-linkcheck-config.json delete mode 100644 site/static/grafana-dashboard.json delete mode 100644 site/static/img/advanced-routing.png delete mode 100644 site/static/img/cert-manager-gateway-workflow.png delete mode 100644 site/static/img/direct-policy-attachment.png delete mode 100644 site/static/img/hierarchy.png delete mode 100644 site/static/img/inherited-policy-attachment.png delete mode 100644 site/static/img/jaeger-trace-attributes.png delete mode 100644 site/static/img/jaeger-trace-overview.png delete mode 100644 site/static/img/ngf-high-level.png delete mode 100644 site/static/img/ngf-pod.png delete mode 100644 site/static/img/nginx-plus-dashboard.png delete mode 100644 site/static/img/route-all-traffic-app.png delete mode 100644 site/static/img/route-all-traffic-config.png delete mode 100644 site/static/img/route-all-traffic-flow.png delete mode 100644 site/static/img/src/README.md delete mode 100644 site/static/img/src/advanced-routing.mermaid delete mode 100644 site/static/img/src/route-all-traffic-app.mermaid delete mode 100644 site/static/img/src/route-all-traffic-config.mermaid delete mode 100644 site/static/img/src/route-all-traffic-flow.mermaid delete mode 100644 site/static/jaeger.yaml delete mode 100644 site/static/otel-collector.yaml diff --git a/.github/workflows/docs-build-push.yml b/.github/workflows/docs-build-push.yml deleted file mode 100644 index ffff97d78b..0000000000 --- a/.github/workflows/docs-build-push.yml +++ /dev/null @@ -1,63 +0,0 @@ -name: Build and deploy documentation -on: - workflow_dispatch: - inputs: - environment: - description: 'Environment to deploy to' - required: true - default: 'preview' - type: choice - options: - - preview - - dev - - staging - - prod - hugo_theme_override: - description: "Hugo theme version (Leave blank for latest)" - required: false - default: "" - type: string - pull_request: - branches: - - "*" - paths: - - "site/**" - -concurrency: - group: ${{ github.ref_name }}-docs-push - cancel-in-progress: true - -permissions: - contents: read - -jobs: - vars: - runs-on: ubuntu-24.04 - outputs: - azure_creds: ${{ steps.vars.outputs.defined }} - steps: - - name: Check if variable is set - id: vars - env: - AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS_DOCS }} - if: "${{ env.AZURE_CREDENTIALS != '' }}" - run: echo "defined=true" >> $GITHUB_OUTPUT - - call-docs-build-push: - needs: [vars] - if: ${{ github.event.repository.fork == false && needs.vars.outputs.azure_creds == 'true' }} - uses: nginxinc/docs-actions/.github/workflows/docs-build-push.yml@9c59fab05a8131f4d691ba6ea2b6a119f3ef832a # v1.0.7 - permissions: - pull-requests: write # Required to add the preview URL comment - contents: read - with: - production_url_path: "/nginx-gateway-fabric" - preview_url_path: "/previews/nginx-gateway-fabric" - docs_source_path: "public/nginx-gateway-fabric" - docs_build_path: "./site" - doc_type: "hugo" - environment: ${{ inputs.environment }} - force_hugo_theme_version: ${{ inputs.hugo_theme_override }} - secrets: - AZURE_CREDENTIALS: ${{ secrets.AZURE_CREDENTIALS_DOCS }} - AZURE_KEY_VAULT: ${{ secrets.AZURE_KEY_VAULT_DOCS }} diff --git a/CONTRIBUTING.md b/CONTRIBUTING.md index 141929153f..5428414b42 100644 --- a/CONTRIBUTING.md +++ b/CONTRIBUTING.md @@ -46,7 +46,7 @@ Follow our [Installation Instructions](https://docs.nginx.com/nginx-gateway-fabr - We use [Go Modules](https://github.com/golang/go/wiki/Modules) for managing dependencies. - We use [Ginkgo](https://onsi.github.io/ginkgo/) and [Gomega](https://onsi.github.io/gomega/) for our BDD style unit tests. -- The documentation website is found under `site/`. +- The documentation is managed in [the NGINX documentation repository](https://github.com/nginx/documentation). ## Contributing @@ -97,7 +97,7 @@ Before beginning development, familiarize yourself with the following documents: conventions to follow when writing Go code for the project. - [Architecture](https://docs.nginx.com/nginx-gateway-fabric/overview/gateway-architecture/): A high-level overview of the project's architecture. - [Design Principles](/docs/developer/design-principles.md): An overview of the project's design principles. -- [NGINX Gateway Fabric Documentation](/site/README.md): An explanation of the documentation tooling and conventions. +- [The NGINX documentation repository](https://github.com/nginx/documentation): The repository for NGINX documentation, which is used for the website. ## F5 Contributor License Agreement (CLA) diff --git a/README.md b/README.md index 96461179b0..26a3df593f 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Learn about our [design principles](/docs/developer/design-principles.md) and [a ## Getting Started -1. [Quick Start on a kind cluster](https://docs.nginx.com/nginx-gateway-fabric/get-started/). +1. [Get started using a kind cluster](https://docs.nginx.com/nginx-gateway-fabric/get-started/). 2. [Install](https://docs.nginx.com/nginx-gateway-fabric/installation/) NGINX Gateway Fabric. 3. Deploy various [examples](examples). 4. Read our [How-to guides](https://docs.nginx.com/nginx-gateway-fabric/how-to/). diff --git a/site/.gitignore b/site/.gitignore deleted file mode 100644 index 919b131ed5..0000000000 --- a/site/.gitignore +++ /dev/null @@ -1,3 +0,0 @@ -public -.hugo_build.lock -resources diff --git a/site/.markdownlint.json b/site/.markdownlint.json deleted file mode 100644 index f25d51518a..0000000000 --- a/site/.markdownlint.json +++ /dev/null @@ -1,22 +0,0 @@ -{ - "MD009": false, - "MD012": false, - "MD010": false, - "MD013": false, - "MD004": { - "style": "dash" - }, - "MD022": false, - "MD033": false, - "MD041": false, - "MD003": false, - "MD002": false, - "MD024": { - "siblings_only": true - }, - "MD046": false, - "MD001": false, - "MD049": false, - "MD055": false, - "MD056": false -} diff --git a/site/Makefile b/site/Makefile deleted file mode 100644 index bb62ce8b67..0000000000 --- a/site/Makefile +++ /dev/null @@ -1,64 +0,0 @@ -HUGO?=hugo -HUGO_VERSION?=$(shell hugo version 2>/dev/null | awk '{print $$2}' | cut -d '.' -f 2) -HUGO_IMG?=hugomods/hugo:std-go-git-0.134.3 - -THEME_MODULE = github.com/nginxinc/nginx-hugo-theme - -ifeq ($(shell [ $(HUGO_VERSION) -gt 133 2>/dev/null ] && echo true || echo false), true) - $(info Hugo is available and has a version greater than 133. Proceeding with build.) -else - $(warning Hugo is not available or using a version less than 134. Attempting to use docker. HUGO_VERSION=$(HUGO_VERSION)) - HUGO=docker run --rm -it -v ${CURDIR}:/src -p 1313:1313 ${HUGO_IMG} /src/hugo-entrypoint.sh - ifeq (, $(shell docker version 2> /dev/null)) - $(error Hugo (>0.134) or Docker are required to build the local previews.) - endif -endif - -MARKDOWNLINT?=markdownlint -MARKDOWNLINT_IMG?=ghcr.io/igorshubovych/markdownlint-cli:latest - -ifeq (, $(shell ${MARKDOWNLINT} version 2> /dev/null)) -ifeq (, $(shell docker version 2> /dev/null)) -else - MARKDOWNLINT=docker run --rm -i -v ${CURDIR}:/src --workdir /src ${MARKDOWNLINT_IMG} -endif -endif - -MARKDOWNLINKCHECK?=markdown-link-check -MARKDOWNLINKCHECK_IMG?=ghcr.io/tcort/markdown-link-check:stable - -ifeq (, $(shell ${MARKDOWNLINKCHECK} --version 2> /dev/null)) -ifeq (, $(shell docker version 2> /dev/null)) -else - MARKDOWNLINKCHECK=docker run --rm -it -v ${CURDIR}:/docs --workdir /docs ${MARKDOWNLINKCHECK_IMG} -endif -endif - - -.PHONY: docs docs-draft docs-local clean hugo-get hugo-tidy lint-markdown link-check - -docs: - ${HUGO} - -watch: - ${HUGO} --bind 0.0.0.0 -p 1313 server --disableFastRender - -drafts: - ${HUGO} --bind 0.0.0.0 -p 1313 server -D --disableFastRender - -clean: - [ -d "public" ] && rm -rf "public" - -hugo-get: - hugo mod get -u github.com/nginxinc/nginx-hugo-theme - -hugo-tidy: - hugo mod tidy - -hugo-update: hugo-get hugo-tidy - -lint-markdown: - ${MARKDOWNLINT} -c .markdownlint.yaml -- content - -link-check: - ${MARKDOWNLINKCHECK} $(shell find content -name '*.md') diff --git a/site/README.md b/site/README.md deleted file mode 100644 index 5128219d77..0000000000 --- a/site/README.md +++ /dev/null @@ -1,164 +0,0 @@ -# NGINX Gateway Fabric Documentation - -This directory contains all of the user documentation for NGINX Gateway Fabric, as well as the requirements for building and publishing the documentation. - -We write our documentation in Markdown. We build it with [Hugo](https://gohugo.io) and our custom [NGINX Hugo theme](https://github.com/nginxinc/nginx-hugo-theme). We set up previews and deployments using our [docs-actions](https://github.com/nginxinc/docs-actions?tab=readme-ov-file#docs-actions) workflow. - -## Setup - -Hugo is the only requirement for building documentation, but the repository's integration tooling uses markdownlint-cli. - -> **Note**: We currently use [Hugo v0.115.3](https://github.com/gohugoio/hugo/releases/tag/v0.115.3) in production. - -Although not a strict requirement, markdown-link-check is also used in documentation development. - -If you have [Docker](https://www.docker.com/get-started/) installed, there are fallbacks for all in the [Makefile](Makefile), meaning you do need to install them. - -- [Installing Hugo](https://gohugo.io/getting-started/installing/) -- [Installing markdownlint-cli](https://github.com/igorshubovych/markdownlint-cli?tab=readme-ov-file#installation) -- [Installing markdown-link-check](https://github.com/tcort/markdown-link-check?tab=readme-ov-file#installation). - -The configuration files are as follows: - -- *Hugo*: `config/default/config.toml` -- *markdownlint-cli*: `.markdownlint.json` -- *markdown-link-check* `md-linkcheck-config.json` - -## Repository guidelines - -Documentation follows the conventions of the regular codebase: use the following guides. - -- [Pull Request Guidelines](../docs/developer/pull-request.md) -- [Branching and Workflow](../docs/developerr/branching-and-workflow.md) -- [Release Process](../docs/developer/developer/release-process.md) - -To work on documentation, create a feature branch in a forked repository then target `main` with your pull requests, which is the default repository branch. - -The documentation is published from the latest public release branch. If your changes require immediate publication, create a pull request to cherry-pick changes from `main` to the public release branch. - -## Developing documentation locally - -To build the documentation locally, use the `make` command in the documentation folder with these targets: - -```text -make docs - Builds the documentation -make watch - Runs a local Hugo server to automatically preview changes -make drafts - Runs a local Hugo server, and displays documentation marked as drafts -make clean - Removes the output 'public' directory created by Hugo -make hugo-get - Updates the go module file with the latest version of the theme -make hugo-tidy - Removes unnecessary dependencies from the go module file -make hugo-update - Runs the hugo-get and hugo-tidy targets in sequence -make lint-markdown - Runs markdownlint on the content folder -make link-check - Runs markdown-link-check on all Markdown files -``` - -## Adding new documentation - -### Generate a new documentation file using Hugo - -To create a new documentation file containing the pre-configured Hugo front-matter with the task template, **run the following command in the documentation directory**: - -`hugo new /.` - -For example: - -```shell -hugo new getting-started/install.md -``` - -The default template -- task -- should be used for most documentation. To create documentation using the other content templates, you can use the `--kind` flag: - -```shell -hugo new tutorials/deploy.md --kind tutorial -``` - -The available content templates (`kind`) are: - -- concept: Help a user learn about a specific feature or feature set. -- tutorial: Walk a user through an example use case scenario. -- reference: Describes an API, command line tool, configuration options, etc. -- troubleshooting: Guide a user towards solving a specific problem. -- openapi: A template with the requirements to render an openapi.yaml specification. - -## Documentation formatting - -### Basic markdown formatting - -There are multiple ways to format text: for consistency and clarity, these are our conventions: - -- Bold: Two asterisks on each side - `**Bolded text**`. -- Italic: One underscore on each side - `_Italicized text_`. -- Unordered lists: One dash - `- Unordered list item`. -- Ordered lists: The 1 character followed by a stop - `1. Ordered list item`. - -> **Note**: The ordered notation automatically enumerates lists when built by Hugo. - -Close every section with a horizontal line by using three dashes: `---`. - -### How to format internal links - -Internal links should use Hugo [ref and relref shortcodes](https://gohugo.io/content-management/cross-references/). - -- Although file extensions are optional for Hugo, we include them as best practice for page anchors. -- Relative paths are preferred, but just the filename is permissible. -- Paths without a leading forward slash (`/`) are first resolved relative to the current page, then the remainder of the website. - -Here are two examples: - -```md -To install , refer to the [installation instructions]({{< ref "install.md" >}}). -To install , refer to the [integration instructions]({{< relref "/integration/thing.md#section" >}}). -``` - -### How to add images - -Use the `img` [shortcode](#using-hugo-shortcodes) to add images into your documentation. - -1. Add the image to the `/static/img` directory. -1. Add the `img` shortcode: - `{{< img src="" >}}` - - **Do not include a forward slash at the beginning of the file path.** - - This will break the image when it's rendered: read about the [Hugo relURL Function](https://gohugo.io/functions/relurl/#input-begins-with-a-slash) to learn more. - -> **Note**: The `img` shortcode accepts all of the same parameters as the Hugo [figure shortcode](https://gohugo.io/content-management/shortcodes/#figure). - -### Using Hugo shortcodes - -[Hugo shortcodes](https://github.com/nginxinc/nginx-hugo-theme/tree/main/layouts/shortcodes) are used to format callouts, add images, and reuse content across different pages. - -For example, to use the `note` callout: - -```md -{{< note >}}Provide the text of the note here.{{< /note >}} -``` - -The callout shortcodes support multi-line blocks: - -```md -{{< caution >}} -You should probably never do this specific thing in a production environment. - -If you do, and things break, don't say we didn't warn you. -{{< /caution >}} -``` - -Supported callouts: - -- `caution` -- `important` -- `note` -- `see-also` -- `tip` -- `warning` - -Here are some other shortcodes: - -- `fa`: Inserts a Font Awesome icon -- `collapse`: Make a section collapsible -- `tab`: Create mutually exclusive tabbed window panes, useful for parallel instructions -- `table`: Add scrollbars to wide tables for browsers with smaller viewports -- `link`: Link to a file, prepending its path with the Hugo baseUrl -- `openapi`: Loads an OpenAPI specifcation and render it as HTML using ReDoc -- `include`: Include the content of a file in another file; the included file must be present in the '/content/includes/' directory -- `raw-html`: Include a block of raw HTML -- `readfile`: Include the content of another file in the current file, which can be in an arbitrary location. diff --git a/site/config/_default/config.toml b/site/config/_default/config.toml deleted file mode 100644 index 2359305a03..0000000000 --- a/site/config/_default/config.toml +++ /dev/null @@ -1,67 +0,0 @@ -title = "NGINX Gateway Fabric" -enableGitInfo = true -baseURL = "/" -staticDir = ["static"] -languageCode = "en-us" -description = "NGINX Gateway Fabric." -refLinksErrorLevel = "ERROR" -enableRobotsTXT = "true" -#canonifyURLs = true -pluralizeListTitles = false -pygmentsCodeFences = true -pygmentsUseClasses = true - -[caches] - [caches.modules] - maxAge = -1 - -[module] -[[module.imports]] - path="github.com/nginxinc/nginx-hugo-theme" - -[markup] - [markup.highlight] - codeFences = true - guessSyntax = true - hl_Lines = "" - lineNoStart = 1 - lineNos = false - lineNumbersInTable = true - noClasses = true - style = "monokai" - tabWidth = 4 - [markup.goldmark] - [markup.goldmark.extensions] - definitionList = true - footnote = true - linkify = true - strikethrough = true - table = true - taskList = true - typographer = true - [markup.goldmark.parser] - attribute = true - autoHeadingID = true - autoHeadingIDType = "gitlab" - [markup.goldmark.renderer] - hardWraps = false - unsafe = true - xhtml = false - -[params] - useSectionPageLists = "false" - buildtype = "webdocs" - RSSLink = "/index.xml" - author = "NGINX Inc." # add your company name - github = "nginx" # add your github profile name - twitter = "@nginx" # add your twitter profile - #email = "" - noindex_kinds = [ - "taxonomy", - "taxonomyTerm" - ] - logo = "NGINX-Gateway-Fabric-product-icon.svg" - -sectionPagesMenu = "docs" - -ignoreFiles = [ "\\.sh$", "\\.DS_Store$", "\\.git.*$", "\\.txt$", "\\/config\\/.*", "README\\.*"] diff --git a/site/config/api/config.json b/site/config/api/config.json deleted file mode 100644 index e75a2cef56..0000000000 --- a/site/config/api/config.json +++ /dev/null @@ -1,28 +0,0 @@ -{ - "hideMemberFields": [ - "TypeMeta" - ], - "hideTypePatterns": [ - "ParseError$", - "List$" - ], - "externalPackages": [ - { - "typeMatchPrefix": "^k8s\\.io/apimachinery/pkg/apis/meta/v1\\.Duration$", - "docsURLTemplate": "https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#Duration" - }, - { - "typeMatchPrefix": "^k8s\\.io/(api|apimachinery/pkg/apis)/", - "docsURLTemplate": "https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#{{lower .TypeIdentifier}}-{{arrIndex .PackageSegments -1}}-{{arrIndex .PackageSegments -2}}" - }, - { - "typeMatchPrefix": "^sigs.k8s.io/gateway-api/apis/", - "docsURLTemplate": "https://pkg.go.dev/sigs.k8s.io/gateway-api/apis/{{arrIndex .PackageSegments -1}}#{{.TypeIdentifier}}" - } - ], - "typeDisplayNamePrefixOverrides": { - "k8s.io/api/": "Kubernetes ", - "k8s.io/apimachinery/pkg/apis/": "Kubernetes " - }, - "markdownDisabled": false -} diff --git a/site/config/api/members.tpl b/site/config/api/members.tpl deleted file mode 100644 index 5cba6ecee1..0000000000 --- a/site/config/api/members.tpl +++ /dev/null @@ -1,48 +0,0 @@ -{{ define "members" }} - -{{ range .Members }} -{{ if not (hiddenMember .)}} - - - {{ fieldName . }}
- - {{ if linkForType .Type }} - - {{ typeDisplayName .Type }} - - {{ else }} - {{ typeDisplayName .Type }} - {{ end }} - - - - {{ if fieldEmbedded . }} -

- (Members of {{ fieldName . }} are embedded into this type.) -

- {{ end}} - - {{ if isOptionalMember .}} - (Optional) - {{ end }} - - {{ safe (renderComments .CommentLines) }} - - {{ if and (eq (.Type.Name.Name) "ObjectMeta") }} - Refer to the Kubernetes API documentation for the fields of the - metadata field. - {{ end }} - - {{ if or (eq (fieldName .) "spec") }} -
-
- - {{ template "members" .Type }} -
- {{ end }} - - -{{ end }} -{{ end }} - -{{ end }} diff --git a/site/config/api/pkg.tpl b/site/config/api/pkg.tpl deleted file mode 100644 index c5250235f7..0000000000 --- a/site/config/api/pkg.tpl +++ /dev/null @@ -1,57 +0,0 @@ -{{ define "packages" }} ---- -title: "API reference" -weight: 100 -toc: false ---- - -## Overview - -NGINX Gateway API Reference - -{{ with .packages}} -

Packages:

- -{{ end}} - -{{ range .packages }} -

- {{- packageDisplayName . -}} -

- - {{ with (index .GoPackages 0 )}} - {{ with .DocComments }} -

- {{ safe (renderComments .) }} -

- {{ end }} - {{ end }} - - Resource Types: -
    - {{- range (visibleTypes (sortedTypes .Types)) -}} - {{ if isExportedType . -}} -
  • - {{ typeDisplayName . }} -
  • - {{- end }} - {{- end -}} -
- - {{ range (visibleTypes (sortedTypes .Types))}} - {{ template "type" . }} - {{ end }} -
-{{ end }} - -

- Generated with gen-crd-api-reference-docs -

- -{{ end }} diff --git a/site/config/api/type.tpl b/site/config/api/type.tpl deleted file mode 100644 index 5d1d3950f6..0000000000 --- a/site/config/api/type.tpl +++ /dev/null @@ -1,83 +0,0 @@ -{{ define "type" }} - -

- {{- .Name.Name }} - {{ if eq .Kind "Alias" }}({{.Underlying}} alias)

{{ end -}} - ΒΆ -

-{{ with (typeReferences .) }} -

- (Appears on: - {{- $prev := "" -}} - {{- range . -}} - {{- if $prev -}},{{ end -}} - {{ $prev = . }} - {{ typeDisplayName . }} - {{- end -}} - ) -

-{{ end }} - - -

- {{ safe (renderComments .CommentLines) }} -

- -{{ with (constantsOfType .) }} - - - - - - - - - {{- range . -}} - - {{- /* - renderComments implicitly creates a

element, so we - add one to the display name as well to make the contents - of the two cells align evenly. - */ -}} -

- - - {{- end -}} - -
ValueDescription

{{ typeDisplayName . }}

{{ safe (renderComments .CommentLines) }}
-{{ end }} - -{{ if .Members }} - - - - - - - - - {{ if isExportedType . }} - - - - - - - - - {{ end }} - {{ template "members" .}} - -
FieldDescription
- apiVersion
- string
- - {{apiGroup .}} - -
- kind
- string -
{{.Name.Name}}
-{{ end }} - -{{ end }} diff --git a/site/config/development/config.toml b/site/config/development/config.toml deleted file mode 100644 index 6d96e11dfa..0000000000 --- a/site/config/development/config.toml +++ /dev/null @@ -1,4 +0,0 @@ -baseURL = "https://docs-dev.nginx.com/nginx-gateway-fabric" -title = "DEV -- NGINX Gateway Fabric" -publishDir = "public/nginx-gateway-fabric" -canonifyURLs = false diff --git a/site/config/docker/config.toml b/site/config/docker/config.toml deleted file mode 100644 index 98082a86de..0000000000 --- a/site/config/docker/config.toml +++ /dev/null @@ -1 +0,0 @@ -enableGitInfo = false diff --git a/site/config/production/config.toml b/site/config/production/config.toml deleted file mode 100644 index 864fe5a2a3..0000000000 --- a/site/config/production/config.toml +++ /dev/null @@ -1,4 +0,0 @@ -baseURL = "/nginx-gateway-fabric" -title = "NGINX Gateway Fabric" -publishDir = "public/nginx-gateway-fabric" -canonifyURLs = false diff --git a/site/config/staging/config.toml b/site/config/staging/config.toml deleted file mode 100644 index 60ad87efda..0000000000 --- a/site/config/staging/config.toml +++ /dev/null @@ -1,4 +0,0 @@ -baseURL = "https://docs-staging.nginx.com/nginx-gateway-fabric" -title = "STAGING -- NGINX Gateway Fabric" -publishDir = "public/nginx-gateway-fabric" -canonifyURLs = false diff --git a/site/content/_index.md b/site/content/_index.md deleted file mode 100644 index 999aa3155e..0000000000 --- a/site/content/_index.md +++ /dev/null @@ -1,7 +0,0 @@ ---- -title: "Welcome to the NGINX Gateway Fabric documentation" -description: -weight: 300 -linkTitle: "NGINX Gateway Fabric" -menu: docs ---- diff --git a/site/content/changelog.md b/site/content/changelog.md deleted file mode 100644 index cd22389b78..0000000000 --- a/site/content/changelog.md +++ /dev/null @@ -1,8 +0,0 @@ ---- -title: "Changelog" -description: "No description" -weight: 10000 -toc: true -draft: true -docs: "DOCS-1358" ---- diff --git a/site/content/get-started.md b/site/content/get-started.md deleted file mode 100644 index 13bc1de073..0000000000 --- a/site/content/get-started.md +++ /dev/null @@ -1,524 +0,0 @@ ---- -title: Get started -toc: true -weight: 200 -docs: DOCS-000 ---- - -This is a guide for getting started with NGINX Gateway Fabric. It explains how to: - -- Set up a [kind (Kubernetes in Docker)](https://kind.sigs.k8s.io/) cluster -- Install [NGINX Gateway Fabric](https://github.com/nginx/nginx-gateway-fabric) with [NGINX](https://nginx.org/) -- Test NGINX Gateway Fabric with an example application - -By following the steps in order, you will finish with a functional NGINX Gateway Fabric cluster. - ---- - -## Before you begin - -To complete this guide, you need the following prerequisites installed: - -- [Go 1.16](https://go.dev/dl/) or newer, which is used by kind -- [Docker](https://docs.docker.com/get-started/get-docker/), for creating and managing containers -- [kind](https://kind.sigs.k8s.io/#installation-and-usage), which allows for running a local Kubernetes cluster using Docker -- [kubectl](https://kubernetes.io/docs/tasks/tools/), which provides a command line interface (CLI) for interacting with Kubernetes clusters -- [Helm 3.0](https://helm.sh/docs/intro/install/) or newer to install NGINX Gateway Fabric -- [curl](https://curl.se/), to test the example application - -## Set up a kind cluster - -Create the file _cluster-config.yaml_ with the following contents, noting the highlighted lines: - -```yaml {linenos=true, hl_lines=[6, 9]} -apiVersion: kind.x-k8s.io/v1alpha4 -kind: Cluster -nodes: -- role: control-plane - extraPortMappings: - - containerPort: 31437 - hostPort: 8080 - protocol: TCP - - containerPort: 31438 - hostPort: 8443 - protocol: TCP -``` - -{{< warning >}} -Take note of the two _containerPort_ values. They are necessary for later configuring a _NodePort_. -{{< /warning >}} - -Run the following command: - -```shell -kind create cluster --config cluster-config.yaml -``` - -```text -Creating cluster "kind" ... - βœ“ Ensuring node image (kindest/node:v1.31.0) πŸ–Ό - βœ“ Preparing nodes πŸ“¦ - βœ“ Writing configuration πŸ“œ - βœ“ Starting control-plane πŸ•ΉοΈ - βœ“ Installing CNI πŸ”Œ - βœ“ Installing StorageClass πŸ’Ύ -Set kubectl context to "kind-kind" -You can now use your cluster with: - -kubectl cluster-info --context kind-kind - -Thanks for using kind! 😊 -``` - -{{< note >}} -If you have cloned [the NGINX Gateway Fabric repository](https://github.com/nginx/nginx-gateway-fabric/tree/main), you can also create a kind cluster from the root folder with the following *make* command: - -```shell -make create-kind-cluster -``` - -{{< /note >}} - ---- - -## Install NGINX Gateway Fabric - -### Add Gateway API resources - -Use `kubectl` to add the API resources for NGINX Gateway Fabric with the following command: - -```shell -kubectl kustomize "https://github.com/nginx/nginx-gateway-fabric/config/crd/gateway-api/standard?ref=v1.6.0" | kubectl apply -f - -``` - -```text -customresourcedefinition.apiextensions.k8s.io/gatewayclasses.gateway.networking.k8s.io created -customresourcedefinition.apiextensions.k8s.io/gateways.gateway.networking.k8s.io created -customresourcedefinition.apiextensions.k8s.io/grpcroutes.gateway.networking.k8s.io created -customresourcedefinition.apiextensions.k8s.io/httproutes.gateway.networking.k8s.io created -customresourcedefinition.apiextensions.k8s.io/referencegrants.gateway.networking.k8s.io created -``` - -{{< note >}} -To use experimental features, you'll need to install the API resources from the experimental channel instead. - -```shell -kubectl kustomize "https://github.com/nginx/nginx-gateway-fabric/config/crd/gateway-api/experimental?ref=v1.6.0" | kubectl apply -f - -``` - -{{< /note >}} - ---- - -### Install the Helm chart - -Use `helm` to install NGINX Gateway Fabric with the following command: - -```shell -helm install ngf oci://ghcr.io/nginx/charts/nginx-gateway-fabric --create-namespace -n nginx-gateway --set service.create=false -``` - -```text -Pulled: ghcr.io/nginx/charts/nginx-gateway-fabric:1.6.0 -Digest: sha256:9bbd1a2fcbfd5407ad6be39f796f582e6263512f1f3a8969b427d39063cc6fee -NAME: ngf -LAST DEPLOYED: Mon Oct 21 14:45:14 2024 -NAMESPACE: nginx-gateway -STATUS: deployed -REVISION: 1 -TEST SUITE: None -``` - -{{< note >}} -If you installed the API resources from the experimental channel during the last step, you will need to enable the _nginxGateway.gwAPIExperimentalFeatures_ option: - -```shell -helm install ngf oci://ghcr.io/nginx/charts/nginx-gateway-fabric --create-namespace -n nginx-gateway --set service.create=false --set nginxGateway.gwAPIExperimentalFeatures.enable=true -``` - -{{< /note >}} - ---- - -### Set up a NodePort - -Create the file _nodeport-config.yaml_ with the following contents: - -{{< note >}} -The highlighted _nodePort_ values should equal the _containerPort_ values from _cluster-config.yaml_ [when you created the kind cluster](#set-up-a-kind-cluster). -{{< /note >}} - -```yaml {linenos=true, hl_lines=[20, 25]} -apiVersion: v1 -kind: Service -metadata: - name: nginx-gateway - namespace: nginx-gateway - labels: - app.kubernetes.io/name: nginx-gateway-fabric - app.kubernetes.io/instance: ngf - app.kubernetes.io/version: "1.6.0" -spec: - type: NodePort - selector: - app.kubernetes.io/name: nginx-gateway-fabric - app.kubernetes.io/instance: ngf - ports: - - name: http - port: 80 - protocol: TCP - targetPort: 80 - nodePort: 31437 - - name: https - port: 443 - protocol: TCP - targetPort: 443 - nodePort: 31438 -``` - -Apply it using `kubectl`: - -```shell -kubectl apply -f nodeport-config.yaml -``` - -```text -service/nginx-gateway created -``` - -{{< warning >}} -The NodePort resource must be deployed in the same namespace as NGINX Gateway Fabric. - -If you are making customizations, ensure your `labels:` and `selectors:` also match the labels of the NGINX Gateway Fabric Deployment. -{{< /warning >}} - ---- - -## Create an example application - -In the previous section, you deployed NGINX Gateway Fabric to a local cluster. This section shows you how to deploy a simple web application to test that NGINX Gateway Fabric works. - -{{< note >}} -The YAML code in the following sections can be found in the [cafe-example folder](https://github.com/nginx/nginx-gateway-fabric/tree/main/examples/cafe-example) of the GitHub repository. -{{< /note >}} - ---- - -### Create the application resources - -Create the file _cafe.yaml_ with the following contents: - -{{< ghcode `https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/refs/heads/main/examples/cafe-example/cafe.yaml`>}} - -Apply it using `kubectl`: - -```shell -kubectl apply -f cafe.yaml -``` - -```text -deployment.apps/coffee created -service/coffee created -deployment.apps/tea created -service/tea created -``` - -Verify that the new pods are in the `default` namespace: - -```shell -kubectl -n default get pods -``` - -```text -NAME READY STATUS RESTARTS AGE -coffee-6db967495b-wk2mm 1/1 Running 0 10s -tea-7b7d6c947d-d4qcf 1/1 Running 0 10s -``` - ---- - -### Create Gateway and HTTPRoute resources - -Create the file _gateway.yaml_ with the following contents: - -{{< ghcode `https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/refs/heads/main/examples/cafe-example/gateway.yaml`>}} - -Apply it using `kubectl`: - -```shell -kubectl apply -f gateway.yaml -``` - -```text -gateway.gateway.networking.k8s.io/gateway created -``` - -Create the file _cafe-routes.yaml_ with the following contents: - -{{< ghcode `https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/refs/heads/main/examples/cafe-example/cafe-routes.yaml`>}} - -Apply it using `kubectl`: - -```shell -kubectl apply -f cafe-routes.yaml -``` - -```text -httproute.gateway.networking.k8s.io/coffee created -httproute.gateway.networking.k8s.io/tea created -``` - ---- - -### Verify the configuration - -You can check that all of the expected services are available using `kubectl get`: - -```shell -kubectl get service --all-namespaces -``` - -```text -NAMESPACE NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE -default coffee ClusterIP 10.96.18.163 80/TCP 2m51s -default kubernetes ClusterIP 10.96.0.1 443/TCP 4m41s -default tea ClusterIP 10.96.169.132 80/TCP 2m51s -kube-system kube-dns ClusterIP 10.96.0.10 53/UDP,53/TCP,9153/TCP 4m40s -nginx-gateway nginx-gateway NodePort 10.96.186.45 80:31437/TCP,443:31438/TCP 3m6s -``` - -You can also use `kubectl describe` on the new resources to check their status: - -```shell -kubectl describe httproutes -``` - -```text -Name: coffee -Namespace: default -Labels: -Annotations: -API Version: gateway.networking.k8s.io/v1 -Kind: HTTPRoute -Metadata: - Creation Timestamp: 2024-10-21T13:46:51Z - Generation: 1 - Resource Version: 821 - UID: cc591089-d3aa-44d3-a851-e2bbfa285029 -Spec: - Hostnames: - cafe.example.com - Parent Refs: - Group: gateway.networking.k8s.io - Kind: Gateway - Name: gateway - Section Name: http - Rules: - Backend Refs: - Group: - Kind: Service - Name: coffee - Port: 80 - Weight: 1 - Matches: - Path: - Type: PathPrefix - Value: /coffee -Status: - Parents: - Conditions: - Last Transition Time: 2024-10-21T13:46:51Z - Message: The route is accepted - Observed Generation: 1 - Reason: Accepted - Status: True - Type: Accepted - Last Transition Time: 2024-10-21T13:46:51Z - Message: All references are resolved - Observed Generation: 1 - Reason: ResolvedRefs - Status: True - Type: ResolvedRefs - Controller Name: gateway.nginx.org/nginx-gateway-controller - Parent Ref: - Group: gateway.networking.k8s.io - Kind: Gateway - Name: gateway - Namespace: default - Section Name: http -Events: - - -Name: tea -Namespace: default -Labels: -Annotations: -API Version: gateway.networking.k8s.io/v1 -Kind: HTTPRoute -Metadata: - Creation Timestamp: 2024-10-21T13:46:51Z - Generation: 1 - Resource Version: 823 - UID: d72d2a19-1c4d-48c4-9808-5678cff6c331 -Spec: - Hostnames: - cafe.example.com - Parent Refs: - Group: gateway.networking.k8s.io - Kind: Gateway - Name: gateway - Section Name: http - Rules: - Backend Refs: - Group: - Kind: Service - Name: tea - Port: 80 - Weight: 1 - Matches: - Path: - Type: Exact - Value: /tea -Status: - Parents: - Conditions: - Last Transition Time: 2024-10-21T13:46:51Z - Message: The route is accepted - Observed Generation: 1 - Reason: Accepted - Status: True - Type: Accepted - Last Transition Time: 2024-10-21T13:46:51Z - Message: All references are resolved - Observed Generation: 1 - Reason: ResolvedRefs - Status: True - Type: ResolvedRefs - Controller Name: gateway.nginx.org/nginx-gateway-controller - Parent Ref: - Group: gateway.networking.k8s.io - Kind: Gateway - Name: gateway - Namespace: default - Section Name: http -Events: -``` - -```shell -kubectl describe gateways -``` - -```text -Name: gateway -Namespace: default -Labels: -Annotations: -API Version: gateway.networking.k8s.io/v1 -Kind: Gateway -Metadata: - Creation Timestamp: 2024-10-21T13:46:36Z - Generation: 1 - Resource Version: 824 - UID: 2ae8ec42-70eb-41a4-b249-3e47177aea48 -Spec: - Gateway Class Name: nginx - Listeners: - Allowed Routes: - Namespaces: - From: Same - Hostname: *.example.com - Name: http - Port: 80 - Protocol: HTTP -Status: - Addresses: - Type: IPAddress - Value: 10.244.0.5 - Conditions: - Last Transition Time: 2024-10-21T13:46:51Z - Message: Gateway is accepted - Observed Generation: 1 - Reason: Accepted - Status: True - Type: Accepted - Last Transition Time: 2024-10-21T13:46:51Z - Message: Gateway is programmed - Observed Generation: 1 - Reason: Programmed - Status: True - Type: Programmed - Listeners: - Attached Routes: 2 - Conditions: - Last Transition Time: 2024-10-21T13:46:51Z - Message: Listener is accepted - Observed Generation: 1 - Reason: Accepted - Status: True - Type: Accepted - Last Transition Time: 2024-10-21T13:46:51Z - Message: Listener is programmed - Observed Generation: 1 - Reason: Programmed - Status: True - Type: Programmed - Last Transition Time: 2024-10-21T13:46:51Z - Message: All references are resolved - Observed Generation: 1 - Reason: ResolvedRefs - Status: True - Type: ResolvedRefs - Last Transition Time: 2024-10-21T13:46:51Z - Message: No conflicts - Observed Generation: 1 - Reason: NoConflicts - Status: False - Type: Conflicted - Name: http - Supported Kinds: - Group: gateway.networking.k8s.io - Kind: HTTPRoute - Group: gateway.networking.k8s.io - Kind: GRPCRoute -Events: -``` - ---- - -## Test NGINX Gateway Fabric - -By configuring the cluster with the ports `31437` and `31438`, there is implicit port forwarding from your local machine to NodePort, allowing for direct communication to the NGINX Gateway Fabric service. - -You can use `curl` to test the new services by targeting the hostname (_cafe.example.com_) with the _/coffee_ and _/tea_ paths: - -```shell -curl --resolve cafe.example.com:8080:127.0.0.1 http://cafe.example.com:8080/coffee -``` - -```text -Server address: 10.244.0.6:8080 -Server name: coffee-6db967495b-wk2mm -Date: 21/Oct/2024:13:52:13 +0000 -URI: /coffee -Request ID: fb226a54fd94f927b484dd31fb30e747 -``` - -```shell -curl --resolve cafe.example.com:8080:127.0.0.1 http://cafe.example.com:8080/tea -``` - -```text -Server address: 10.244.0.7:8080 -Server name: tea-7b7d6c947d-d4qcf -Date: 21/Oct/2024:13:52:17 +0000 -URI: /tea -Request ID: 43882f2f5794a1ee05d2ea017a035ce3 -``` - ---- - -## See also - -- [Install NGINX Gateway Fabric]({{< ref "/installation/installing-ngf/" >}}), for additional ways to install NGINX Gateway Fabric -- [How-to guides]({{< ref "/how-to/" >}}), for configuring your cluster -- [Traffic management]({{< ref "/how-to/traffic-management/" >}}), for more in-depth traffic management configuration diff --git a/site/content/how-to/_index.md b/site/content/how-to/_index.md deleted file mode 100644 index 8d72a5689e..0000000000 --- a/site/content/how-to/_index.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "How-to guides" -weight: 400 ---- diff --git a/site/content/how-to/control-plane-configuration.md b/site/content/how-to/control-plane-configuration.md deleted file mode 100644 index 6c9b06d88a..0000000000 --- a/site/content/how-to/control-plane-configuration.md +++ /dev/null @@ -1,57 +0,0 @@ ---- -title: "Control plane configuration" -toc: true -weight: 400 -type: how-to -product: NGF -docs: DOCS-1416 ---- - -Learn how to dynamically update the NGINX Gateway Fabric control plane configuration. - -## Overview - -NGINX Gateway Fabric can dynamically update the control plane configuration without restarting. The control plane configuration is stored in the NginxGateway custom resource, created during the installation of NGINX Gateway Fabric. - -NginxGateway is deployed in the same namespace as the controller (Default: `nginx-gateway`). The resource's default name is based on your [installation method]({{< relref "/installation/installing-ngf" >}}): - -- Helm: `-config` -- Manifests: `nginx-gateway-config` - -The control plane only watches this single instance of the custom resource. - -If the resource is invalid to the OpenAPI schema, the Kubernetes API server will reject the changes. If the resource is deleted or deemed invalid by NGINX 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. - -**For a full list of configuration options that can be set, see the `NginxGateway spec` in the [API reference]({{< relref "reference/api.md" >}}).** - -## Viewing and Updating the Configuration - -{{< note >}} For the following examples, the name `ngf-config` should be updated to the name of the resource created for your installation.{{< /note >}} - -To view the current configuration and its status: - -```shell -kubectl -n nginx-gateway describe nginxgateways ngf-config -``` - -```text -... -Status: - Conditions: - Last Transition Time: 2024-08-13T19:22:14Z - Message: NginxGateway is valid - Observed Generation: 1 - Reason: Valid - Status: True - Type: Valid -``` - -To update the configuration: - -```shell -kubectl -n nginx-gateway edit nginxgateways ngf-config -``` - -This will open the configuration in your default editor. You can then update and save the configuration, which is applied automatically to the control plane. diff --git a/site/content/how-to/data-plane-configuration.md b/site/content/how-to/data-plane-configuration.md deleted file mode 100644 index d12fa03fa7..0000000000 --- a/site/content/how-to/data-plane-configuration.md +++ /dev/null @@ -1,198 +0,0 @@ ---- -title: "Data plane configuration" -toc: true -weight: 500 -type: how-to -product: NGF -docs: DOCS-000 ---- - -Learn how to dynamically update the NGINX Gateway Fabric global data plane configuration. - -## Overview - -NGINX Gateway Fabric can dynamically update the global data plane configuration without restarting. The data plane configuration is a global configuration for NGINX that has options that are not available using the standard Gateway API resources. This includes such things as setting an OpenTelemetry collector config, disabling http2, changing the IP family, or setting the NGINX error log level. - -The data plane configuration is stored in the NginxProxy custom resource, which is a cluster-scoped resource that is attached to the `nginx` GatewayClass. - -By default, the NginxProxy resource is not created when installing NGINX Gateway Fabric. However, you can set configuration options in the `nginx.config` Helm values, and the resource will be created and attached when NGINX Gateway Fabric is installed using Helm. You can also [manually create and attach](#manually-creating-the-configuration) the resource after NGINX Gateway Fabric is already installed. - -When installed using the Helm chart, the NginxProxy resource is named `-proxy-config`. - -**For a full list of configuration options that can be set, see the `NginxProxy spec` in the [API reference]({{< relref "reference/api.md" >}}).** - -{{}}Some global configuration also requires an [associated policy]({{< relref "overview/custom-policies.md" >}}) to fully enable a feature (such as [tracing]({{< relref "/how-to/monitoring/tracing.md" >}}), for example).{{}} - -## Viewing and Updating the Configuration - -If the `NginxProxy` resource already exists, you can view and edit it. - -{{< note >}} For the following examples, the name `ngf-proxy-config` should be updated to the name of the resource created for your installation.{{< /note >}} - -To view the current configuration: - -```shell -kubectl describe nginxproxies ngf-proxy-config -``` - -To update the configuration: - -```shell -kubectl edit nginxproxies ngf-proxy-config -``` - -This will open the configuration in your default editor. You can then update and save the configuration, which is applied automatically to the data plane. - -To view the status of the configuration, check the GatewayClass that it is attached to: - -```shell -kubectl describe gatewayclasses nginx -``` - -```text -... -Status: - Conditions: - ... - Message: parametersRef resource is resolved - Observed Generation: 1 - Reason: ResolvedRefs - Status: True - Type: ResolvedRefs -``` - -If everything is valid, the `ResolvedRefs` condition should be `True`. Otherwise, you will see an `InvalidParameters` condition in the status. - -## Manually Creating the Configuration - -If the `NginxProxy` resource doesn't exist, you can create it and attach it to the GatewayClass. - -The following command creates a basic `NginxProxy` configuration that sets the IP family to `ipv4` instead of the default value of `dual`: - -```yaml -kubectl apply -f - <}}). - -{{< note >}}For `debug` logging to work, NGINX needs to be built with `--with-debug` or "in debug mode". NGINX Gateway Fabric can easily -be [run with NGINX in debug mode](#run-nginx-gateway-fabric-with-nginx-in-debug-mode) upon startup through the addition -of a few arguments. {{}} - -### Run NGINX Gateway Fabric with NGINX in debug mode - -To run NGINX Gateway Fabric with NGINX in debug mode, follow the [installation document]({{< relref "installation/installing-ngf" >}}) with these additional steps: - -Using Helm: Set `nginx.debug` to true. - -Using Kubernetes Manifests: Under the `nginx` container of the deployment manifest, add `-c` and `rm -rf /var/run/nginx/*.sock && nginx-debug -g 'daemon off;'` -as arguments and add `/bin/sh` as the command. The deployment manifest should look something like this: - -```text -... -- args: - - -c - - rm -rf /var/run/nginx/*.sock && nginx-debug -g 'daemon off;' - command: - - /bin/sh -... -``` - -## Configure PROXY protocol and RewriteClientIP settings - -When a request is passed through multiple proxies or load balancers, the client IP is set to the IP address of the server that last handled the request. To preserve the original client IP address, you can configure `RewriteClientIP` settings in the `NginxProxy` resource. `RewriteClientIP` has the fields: _mode_, _trustedAddresses_ and _setIPRecursively_. - -**Mode** determines how the original client IP is passed through multiple proxies and the way the load balancer is set to receive it. It can have two values: - - 1. `ProxyProtocol` is a protocol that carries connection information from the source requesting the connection to the destination for which the connection was requested. - 2. `XForwardedFor` is a multi-value HTTP header that is used by proxies to append IP addresses of the hosts that passed the request. - -The choice of mode depends on how the load balancer fronting NGINX Gateway Fabric receives information. - -**TrustedAddresses** are used to specify the IP addresses of the trusted proxies that pass the request. These can be in the form of CIDRs, IPs, or hostnames. For example, if a load balancer is forwarding the request to NGINX Gateway Fabric, the IP address of the load balancer should be specified in the `trustedAddresses` list to inform NGINX that the forwarded request is from a known source. - -**SetIPRecursively** is a boolean field used to enable recursive search when selecting the client's address from a multi-value header. It is applicable in cases where we have a multi-value header containing client IPs to select from, i.e., when using `XForwardedFor` mode. - -The following command creates an `NginxProxy` resource with `RewriteClientIP` settings that set the mode to ProxyProtocol and sets a CIDR in the list of trusted addresses to find the original client IP address. - -```yaml -kubectl apply -f - <}}). - -{{< note >}} When sending curl requests to a server expecting proxy information, use the flag `--haproxy-protocol` to avoid broken header errors. {{< /note >}} diff --git a/site/content/how-to/monitoring/_index.md b/site/content/how-to/monitoring/_index.md deleted file mode 100644 index 58123fbf0c..0000000000 --- a/site/content/how-to/monitoring/_index.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "Monitoring and troubleshooting" -weight: 300 ---- diff --git a/site/content/how-to/monitoring/dashboard.md b/site/content/how-to/monitoring/dashboard.md deleted file mode 100644 index 835363d65e..0000000000 --- a/site/content/how-to/monitoring/dashboard.md +++ /dev/null @@ -1,29 +0,0 @@ ---- -title: "NGINX Plus dashboard" -weight: 300 -toc: true -docs: "DOCS-1417" ---- - -Learn how to view the NGINX Plus dashboard to see real-time metrics. - -## Overview - -The NGINX Plus dashboard offers a real-time live activity monitoring interface that shows key load and performance metrics of your server infrastructure. The dashboard is enabled by default for NGINX Gateway Fabric deployments that use NGINX Plus as the data plane. The dashboard is available on port 8765. - -To access the dashboard: - -1. Use port-forwarding to forward connections to port 8765 on your local machine to port 8765 on the NGINX Gateway Fabric pod (replace `` with the actual name of the pod). - - ```shell - kubectl port-forward 8765:8765 -n nginx-gateway - ``` - -1. Open your browser to [http://127.0.0.1:8765/dashboard.html](http://127.0.0.1:8765/dashboard.html) to access the dashboard. - -The dashboard will look like this: - -{{}} - - -{{< note >}}The [API](https://nginx.org/en/docs/http/ngx_http_api_module.html), which the dashboard uses to get the metrics, is also accessible using the `/api` path.{{< /note >}} diff --git a/site/content/how-to/monitoring/prometheus.md b/site/content/how-to/monitoring/prometheus.md deleted file mode 100644 index 17746ba719..0000000000 --- a/site/content/how-to/monitoring/prometheus.md +++ /dev/null @@ -1,165 +0,0 @@ ---- -title: "Prometheus metrics" -weight: 100 -toc: true -docs: "DOCS-1418" ---- - -This document describes how to monitor NGINX Gateway Fabric using Prometheus and Grafana. It explains installation and configuration, as well as what metrics are available. - -## Overview - -NGINX Gateway Fabric metrics are displayed in [Prometheus](https://prometheus.io/) format. These metrics are served through a metrics server orchestrated by the controller-runtime package on HTTP port `9113`. When installed, Prometheus automatically scrapes this port and collects metrics. [Grafana](https://grafana.com/) can be used for rich visualization of these metrics. - -{{}} -Metrics are served over HTTP by default. Enabling HTTPS will secure the metrics endpoint with a self-signed certificate. When using HTTPS, adjust the Prometheus Pod scrape settings by adding the `insecure_skip_verify` flag to handle the self-signed certificate. For further details, refer to the [Prometheus documentation](https://prometheus.io/docs/prometheus/latest/configuration/configuration/#tls_config). -{{}} - -## Installing Prometheus and Grafana - -{{< note >}}These installations are for demonstration purposes and have not been tuned for a production environment.{{< /note >}} - -### Prometheus - -```shell -helm repo add prometheus-community https://prometheus-community.github.io/helm-charts -helm repo update -helm install prometheus prometheus-community/prometheus -n monitoring --create-namespace --set server.global.scrape_interval=15s -``` - -Once running, you can access the Prometheus dashboard by using port-forwarding in the background: - -```shell -kubectl port-forward -n monitoring svc/prometheus-server 9090:80 & -``` - -Visit [http://127.0.0.1:9090](http://127.0.0.1:9090) to view the dashboard. - -### Grafana - - -```shell -helm repo add grafana https://grafana.github.io/helm-charts -helm repo update -helm install grafana grafana/grafana -n monitoring --create-namespace -``` - -Once running, you can access the Grafana dashboard by using port-forwarding in the background: - -```shell -kubectl port-forward -n monitoring svc/grafana 3000:80 & -``` - -Visit [http://127.0.0.1:3000](http://127.0.0.1:3000) to view the Grafana UI. - -The username for login is `admin`. The password can be acquired by running: - -```shell -kubectl get secret -n monitoring grafana -o jsonpath="{.data.admin-password}" | base64 --decode ; echo -``` - -#### Configuring Grafana - -In the Grafana UI menu, go to `Connections` then `Data sources`. Add your Prometheus service (`http://prometheus-server.monitoring.svc`) as a data source. - -Download the following sample dashboard and Import as a new Dashboard in the Grafana UI. - -- {{< download "grafana-dashboard.json" "ngf-grafana-dashboard.json" >}} - -## Available metrics in NGINX Gateway Fabric - -NGINX Gateway Fabric provides a variety of metrics for monitoring and analyzing performance. These metrics are categorized as follows: - -### NGINX/NGINX Plus metrics - -NGINX metrics cover specific NGINX operations such as the total number of accepted client connections. For a complete list of available NGINX/NGINX Plus metrics, refer to the [NGINX Prometheus Exporter developer docs](https://github.com/nginx/nginx-prometheus-exporter#exported-metrics). - -These metrics use the `nginx_gateway_fabric` namespace and include the `class` label, indicating the NGINX Gateway class. For example, `nginx_gateway_fabric_connections_accepted{class="nginx"}`. - -### NGINX Gateway Fabric metrics - -Metrics specific to NGINX Gateway Fabric include: - -- `nginx_reloads_total`: Counts successful NGINX reloads. -- `nginx_reload_errors_total`: Counts NGINX reload failures. -- `nginx_stale_config`: Indicates if NGINX Gateway Fabric couldn't update NGINX with the latest configuration, resulting in a stale version. -- `nginx_reloads_milliseconds`: Time in milliseconds for NGINX reloads. -- `event_batch_processing_milliseconds`: Time in milliseconds to process batches of Kubernetes events. - -All these metrics are under the `nginx_gateway_fabric` namespace and include a `class` label set to the Gateway class of NGINX Gateway Fabric. For example, `nginx_gateway_fabric_nginx_reloads_total{class="nginx"}`. - -### Controller-runtime metrics - -Provided by the [controller-runtime](https://github.com/kubernetes-sigs/controller-runtime) library, these metrics include: - -- General resource usage like CPU and memory. -- Go runtime metrics such as the number of Go routines, garbage collection duration, and Go version. -- Controller-specific metrics, including reconciliation errors per controller, length of the reconcile queue, and reconciliation latency. - -## Change the default metrics configuration - -You can configure monitoring metrics for NGINX Gateway Fabric using Helm or Manifests. - -### Using Helm - -If you're setting up NGINX Gateway Fabric with Helm, you can adjust the `metrics.*` parameters to fit your needs. For detailed options and instructions, see the [Helm README](https://github.com/nginx/nginx-gateway-fabric/blob/v1.6.0/charts/nginx-gateway-fabric/README.md). - -### Using Kubernetes manifests - -For setups using Kubernetes manifests, change the metrics configuration by editing the NGINX Gateway Fabric manifest that you want to deploy. You can find some examples in the [deploy](https://github.com/nginx/nginx-gateway-fabric/tree/v1.6.0/deploy) directory. - -#### Disabling metrics - -If you need to disable metrics: - -1. Set the `-metrics-disable` [command-line argument]({{< relref "reference/cli-help.md">}}) to `true` in the NGINX Gateway Fabric Pod's configuration. Remove any other `-metrics-*` arguments. -2. In the Pod template for NGINX Gateway Fabric, delete the metrics port entry from the container ports list: - - ```yaml - - name: metrics - containerPort: 9113 - ``` - -3. Also, remove the following annotations from the NGINX Gateway Fabric Pod template: - - ```yaml - annotations: - prometheus.io/scrape: "true" - prometheus.io/port: "9113" - ``` - -#### Changing the default port - -To change the default port for metrics: - -1. Update the `-metrics-port` [command-line argument]({{< relref "reference/cli-help.md">}}) in the NGINX Gateway Fabric Pod's configuration to your chosen port number. -2. In the Pod template, change the metrics port entry to reflect the new port: - - ```yaml - - name: metrics - containerPort: - ``` - -3. Modify the `prometheus.io/port` annotation in the Pod template to match the new port: - - ```yaml - annotations: - <...> - prometheus.io/port: "" - <...> - ``` - -#### Enabling HTTPS for metrics - -For enhanced security with HTTPS: - -1. Enable HTTPS security by setting the `-metrics-secure-serving` [command-line argument]({{< relref "reference/cli-help.md">}}) to `true` in the NGINX Gateway Fabric Pod's configuration. - -2. Add an HTTPS scheme annotation to the Pod template: - - ```yaml - annotations: - <...> - prometheus.io/scheme: "https" - <...> - ``` diff --git a/site/content/how-to/monitoring/tracing.md b/site/content/how-to/monitoring/tracing.md deleted file mode 100644 index 3b440a33c4..0000000000 --- a/site/content/how-to/monitoring/tracing.md +++ /dev/null @@ -1,335 +0,0 @@ ---- -title: "Tracing" -weight: 200 -toc: true -docs: "DOCS-000" ---- - -Learn how to configure tracing in NGINX Gateway Fabric. - -## Overview - -NGINX Gateway Fabric supports tracing using [OpenTelemetry](https://opentelemetry.io/). The official [NGINX OpenTelemetry Module](https://github.com/nginxinc/nginx-otel) instruments the NGINX data plane to export traces to a configured collector. Tracing data can be used with an OpenTelemetry Protocol (OTLP) exporter, such as the [OpenTelemetry Collector](https://github.com/open-telemetry/opentelemetry-collector). This collector can then export data to one or more upstream collectors like [Jaeger](https://www.jaegertracing.io/), [DataDog](https://docs.datadoghq.com/tracing/), and many others. This is called the [Agent model](https://opentelemetry.io/docs/collector/deployment/agent/). - -This guide explains how to enable tracing on HTTPRoutes using NGINX Gateway Fabric. It uses the OpenTelemetry Collector and Jaeger to process and collect the traces. - -## Install the collectors - -The first step is to install the collectors. NGINX Gateway Fabric will be configured to export to the OpenTelemetry Collector, which is configured to export to Jaeger. This model allows the visualization collector (Jaeger) to be swapped with something else, or to add more collectors without needing to reconfigure NGINX Gateway Fabric. It is also possible to configure NGINX Gateway Fabric to export directly to Jaeger. - -Create the namespace: - -```shell -kubectl create namespace tracing -``` - -Download the following files containing the configurations for the collectors: - -- {{< download "otel-collector.yaml" "otel-collector.yaml" >}} -- {{< download "jaeger.yaml" "jaeger.yaml" >}} - -{{< note >}}These collectors are for demonstration purposes and are not tuned for production use.{{< /note >}} - -Then install them: - -```shell -kubectl apply -f otel-collector.yaml -f jaeger.yaml -n tracing -``` - -Ensure the Pods are running: - -```shell -kubectl -n tracing get pods -``` - -```text -NAME READY STATUS RESTARTS AGE -jaeger-8469f69b86-bfpk9 1/1 Running 0 9s -otel-collector-f786b7dfd-h2x9l 1/1 Running 0 9s -``` - -Once running, you can access the Jaeger dashboard by using port-forwarding in the background: - -```shell -kubectl port-forward -n tracing svc/jaeger 16686:16686 & -``` - -Visit [http://127.0.0.1:16686](http://127.0.0.1:16686) to view the dashboard. - -## Enable tracing - -To enable tracing, you must configure two resources: - -- `NginxProxy`: This resource contains global settings relating to the NGINX data plane. It is created and managed by the [cluster operator](https://gateway-api.sigs.k8s.io/concepts/roles-and-personas/), and is referenced in the `parametersRef` field of the GatewayClass. This resource can be created and linked when we install NGINX Gateway Fabric using its helm chart, or it can be added later. This guide installs the resource using the helm chart, but the resource can also be created for an existing deployment. - - The `NginxProxy` resource contains configuration for the collector, and applies to all Gateways and routes under the GatewayClass. It does not enable tracing, but is a prerequisite to the next piece of configuration. - -- `ObservabilityPolicy`: This resource is a [Direct Policy Attachment](https://gateway-api.sigs.k8s.io/reference/policy-attachment/) that targets HTTPRoutes or GRPCRoutes. It is created by the [application developer](https://gateway-api.sigs.k8s.io/concepts/roles-and-personas/) and enables tracing for a specific route or routes. It requires the `NginxProxy` resource to exist in order to complete the tracing configuration. - -For all the possible configuration options for these resources, see the [API reference]({{< relref "reference/api.md" >}}). - -### Install NGINX Gateway Fabric with global tracing configuration - -{{< note >}}Ensure that you [install the Gateway API resources]({{< relref "installation/installing-ngf/helm.md#installing-the-gateway-api-resources" >}}).{{< /note >}} - -Referencing the previously deployed collector, create the following `values.yaml` file for installing NGINX Gateway Fabric: - -```yaml -cat < values.yaml -nginx: - config: - telemetry: - exporter: - endpoint: otel-collector.tracing.svc:4317 - spanAttributes: - - key: cluster-attribute-key - value: cluster-attribute-value -EOT -``` - -The span attribute will be added to all tracing spans. - -To install: - -```shell -helm install ngf oci://ghcr.io/nginx/charts/nginx-gateway-fabric --create-namespace -n nginx-gateway -f values.yaml -``` - -You should see the following configuration: - -```shell -kubectl get nginxproxies.gateway.nginx.org ngf-proxy-config -o yaml -``` - -```yaml -apiVersion: gateway.nginx.org/v1alpha1 -kind: NginxProxy -metadata: - name: ngf-proxy-config -spec: - telemetry: - exporter: - endpoint: otel-collector.tracing.svc:4317 - spanAttributes: - - key: cluster-attribute-key - value: cluster-attribute-value -``` - -```shell -kubectl get gatewayclasses.gateway.networking.k8s.io nginx -o yaml -``` - -```yaml -apiVersion: gateway.networking.k8s.io/v1 -kind: GatewayClass -metadata: - name: nginx -spec: - controllerName: gateway.nginx.org/nginx-gateway-controller - parametersRef: - group: gateway.nginx.org - kind: NginxProxy - name: ngf-proxy-config -status: - conditions: - - lastTransitionTime: "2024-05-22T15:18:35Z" - message: GatewayClass is accepted - observedGeneration: 1 - reason: Accepted - status: "True" - type: Accepted - - lastTransitionTime: "2024-05-22T15:18:35Z" - message: Gateway API CRD versions are supported - observedGeneration: 1 - reason: SupportedVersion - status: "True" - type: SupportedVersion - - lastTransitionTime: "2024-05-22T15:18:35Z" - message: parametersRef resource is resolved - observedGeneration: 1 - reason: ResolvedRefs - status: "True" - type: ResolvedRefs -``` - -If you already have NGINX Gateway Fabric installed, then you can create the `NginxProxy` resource and link it to the GatewayClass `parametersRef`: - -```shell -kubectl edit gatewayclasses.gateway.networking.k8s.io nginx -``` - -Save the public IP address and port of NGINX Gateway Fabric into shell variables: - - ```text - GW_IP=XXX.YYY.ZZZ.III - GW_PORT= - ``` - -You can now create the application, route, and tracing policy. - -### Create the application and route - -Create the basic **coffee** application: - -```yaml -kubectl apply -f - <}}If you have a DNS record allocated for `cafe.example.com`, you can send the request directly to that hostname, without needing to resolve.{{< /note >}} - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/coffee -``` - -You should receive a response from the coffee Pod. - -```text -Server address: 10.244.0.69:8080 -Server name: coffee-6b8b6d6486-k5w5w -URI: /coffee -``` - -You shouldn't see any information from the [Jaeger dashboard](http://127.0.0.1:16686) yet: you need to create the `ObservabilityPolicy`. - -### Create the ObservabilityPolicy - -To enable tracing for the coffee HTTPRoute, create the following policy: - -```yaml -kubectl apply -f - <:`. - -{{}} - -

- -Select a trace to view the attributes. - -{{}} - -The trace includes the attribute from the global NginxProxy resource as well as the attribute from the ObservabilityPolicy. - -## Further reading - -- [Custom policies]({{< relref "overview/custom-policies.md" >}}): learn about how NGINX Gateway Fabric custom policies work. -- [API reference]({{< relref "reference/api.md" >}}): all configuration fields for the policies mentioned in this guide diff --git a/site/content/how-to/monitoring/troubleshooting.md b/site/content/how-to/monitoring/troubleshooting.md deleted file mode 100644 index 5c8cc89e4c..0000000000 --- a/site/content/how-to/monitoring/troubleshooting.md +++ /dev/null @@ -1,478 +0,0 @@ ---- -title: "Troubleshooting" -weight: 400 -toc: true -docs: "DOCS-1419" ---- - -This topic describes possible issues when using NGINX Gateway Fabric and general troubleshooting techniques. When possible, suggested workarounds are provided. - -### General troubleshooting - -When investigating a problem or requesting help, there are important data points that can be collected to help understand what issues may exist. - -#### Resource status - -To check the status of a resource, use `kubectl describe`. This example checks the status of the `coffee` HTTPRoute, which has an error: - -```shell -kubectl describe httproutes.gateway.networking.k8s.io coffee -n nginx-gateway -``` - -```text -... -Status: - Parents: - Conditions: - Last Transition Time: 2024-05-31T17:20:51Z - Message: The route is accepted - Observed Generation: 4 - Reason: Accepted - Status: True - Type: Accepted - Last Transition Time: 2024-05-31T17:20:51Z - Message: spec.rules[0].backendRefs[0].name: Not found: "bad-backend" - Observed Generation: 4 - Reason: BackendNotFound - Status: False - Type: ResolvedRefs - Controller Name: gateway.nginx.org/nginx-gateway-controller - Parent Ref: - Group: gateway.networking.k8s.io - Kind: Gateway - Name: gateway - Namespace: default - Section Name: http -``` - -If a resource has errors relating to its configuration or relationship to other resources, they can likely be read in the status. The `ObservedGeneration` in the status should match the `ObservedGeneration` of the resource. Otherwise, this could mean that the resource hasn't been processed yet or that the status failed to update. - -If no `Status` is written on the resource, further debug by checking if the referenced resources exist and belong to NGINX Gateway Fabric. - -#### Events - -Events created by NGINX Gateway Fabric or other Kubernetes components could indicate system or configuration issues. To see events: - -```shell -kubectl get events -n nginx-gateway -``` - -For example, a warning event when the NginxGateway configuration CRD is deleted: - -```text -kubectl -n nginx-gateway get event -LAST SEEN TYPE REASON OBJECT MESSAGE -5s Warning ResourceDeleted nginxgateway/ngf-config NginxGateway configuration was deleted; using defaults -``` - -#### Get shell access to NGINX container - -Getting shell access to containers allows developers and operators to view the environment of a running container, see its logs or diagnose any problems. To get shell access to the NGINX container, use `kubectl exec`: - -```shell -kubectl exec -it -n nginx-gateway -c nginx -- /bin/sh -``` - -#### Logs - -Logs from the NGINX Gateway Fabric control plane and data plane can contain information that isn't available to status or events. These can include errors in processing or passing traffic. - -{{< note >}} -You can see logs for a crashed or killed container by adding the `-p` flag to the `kubectl logs` commands below. -{{< /note >}} - -1. Container Logs - - To see logs for the control plane container: - - ```shell - kubectl -n nginx-gateway logs -c nginx-gateway - ``` - - To see logs for the data plane container: - - ```shell - kubectl -n nginx-gateway logs -c nginx - ``` - -1. Error Logs - - For the _nginx-gateway_ container, you can `grep` the logs for the word `error`: - - ```shell - kubectl -n nginx-gateway logs -c nginx-gateway | grep error - ``` - - For the _nginx_ container you can `grep` for various [error](https://nginx.org/en/docs/ngx_core_module.html#error_log) logs. For example, to search for all logs logged at the `emerg` level: - - ```shell - kubectl -n nginx-gateway logs -c nginx | grep emerg - ``` - - For example, if a variable is too long, NGINX may display such an error message: - - ```text - kubectl logs -n nginx-gateway ngf-nginx-gateway-fabric-bb8598998-jwk2m -c nginx | grep emerg - 2024/06/13 20:04:17 [emerg] 27#27: too long parameter, probably missing terminating """ character in /etc/nginx/conf.d/http.conf:78 - ``` - -1. Access Logs - - NGINX access logs record all requests processed by the NGINX server. These logs provide detailed information about each request, which can be useful for troubleshooting and analyzing web traffic. - Access logs can be viewed with the above method of using `kubectl logs`, or by viewing the access log file directly. To do that, get shell access to your NGINX container using these [steps](#get-shell-access-to-nginx-container). The access logs are located in the file `/var/log/nginx/access.log` in the NGINX container. - -1. Modify Log Levels - - To modify log levels for the control plane in NGINX Gateway Fabric, edit the `NginxGateway` configuration. This can be done either before or after deploying NGINX Gateway Fabric. Refer to this [guide](https://docs.nginx.com/nginx-gateway-fabric/how-to/control-plane-configuration/) to do so. - To check error logs, modify the log level to `error` to view error logs. Similarly, change the log level to `debug` and `grep` for the word `debug` to view debug logs. - -#### Understanding the generated NGINX configuration - -Understanding the NGINX configuration is key for fixing issues because it shows how NGINX handles requests. This helps tweak settings to make sure NGINX behaves the way you want it to for your application. To see your current configuration, you can open a shell in the _nginx_ container by following these [steps](#get-shell-access-to-nginx-container) and run `nginx -T`. To understand the usage of NGINX directives in the configuration file, consult this list of [NGINX directives](https://nginx.org/en/docs/dirindex.html). - -In this section, we will see how the configuration gets updated as we configure different Services, Deployments and HTTPRoutes with NGINX Gateway Fabric. In the configuration file, you'll often find several server blocks, each assigned to specific ports and server names. NGINX selects the appropriate server for a request and evaluates the URI against the location directives within that block. -When only a Gateway resource is defined, but no Services or HTTPRoutes are configured, NGINX generates a basic configuration. This includes a default server listening on the ports specified in the Gateway listeners, handling all incoming requests. Additionally, there are blocks to manage errors with status codes 500 or 503. - -This is a default `server` block listening on port 80: - -```text -server { - listen 80 default_server; - - default_type text/html; - return 404; -} -``` - -Once a HTTPRoute with path matches and rules are defined, nginx.conf is updated accordingly to determine which location block will manage incoming requests. To demonstrate how `nginx.conf` is changed, create some resources: - -1. A Gateway with single listener with the hostname `*.example.com` on port 80. -2. A simple `coffee` application. -3. An HTTPRoute that exposes the `coffee` application outside the cluster using the listener created in step 1. The path and rule matches create different location blocks in `nginx.conf` to route requests as needed. - -For example, this `coffee` route matches requests with path `/coffee` and type `prefix`. Examine how the `nginx.conf` is modified: - -```yaml -apiVersion: gateway.networking.k8s.io/v1 -kind: HTTPRoute -metadata: - name: coffee -spec: - parentRefs: - - name: gateway - sectionName: http - hostnames: - - "cafe.example.com" - rules: - - matches: - - path: - type: PathPrefix - value: /coffee - backendRefs: - - name: coffee - port: 80 -``` - -The modified `nginx.conf`: - -```shell -server { - listen 80 default_server; - - default_type text/html; - return 404; -} - -server { - listen 80; - - server_name cafe.example.com; - - - location /coffee/ { - proxy_set_header Host "$gw_api_compliant_host"; - proxy_set_header X-Forwarded-For "$proxy_add_x_forwarded_for"; - proxy_set_header Upgrade "$http_upgrade"; - proxy_set_header Connection "$connection_upgrade"; - proxy_http_version 1.1; - proxy_pass http://default_coffee_80$request_uri; - } - - location = /coffee { - proxy_set_header Host "$gw_api_compliant_host"; - proxy_set_header X-Forwarded-For "$proxy_add_x_forwarded_for"; - proxy_set_header Upgrade "$http_upgrade"; - proxy_set_header Connection "$connection_upgrade"; - proxy_http_version 1.1; - proxy_pass http://default_coffee_80$request_uri; - } - - location / { - return 404 ""; - } - -} -upstream default_coffee_80 { - random two least_conn; - zone default_coffee_80 512k; - - server 10.244.0.13:8080; -} -``` - -Key information to note is: - -1. A new `server` block is created with the hostname of the HTTPRoute. When a request is sent to this hostname, it will be handled by this `server` block. -2. Within the `server` block, three new `location` blocks are added for _coffee_, each with distinct prefix and exact paths. Requests directed to the _coffee_ application with a path prefix `/coffee/hello` will be managed by the first location block, while those with an exact path `/coffee` will be handled by the second location block. Any other requests not recognized by the server block for this hostname will default to the third location block, returning a 404 Not Found status. -3. Each `location` block has headers and directives that configure the NGINX proxy to forward requests to the `/coffee` path correctly, preserving important client information and ensuring compatibility with the upstream server. -4. The `upstream` block in the given NGINX configuration defines a group of backend servers and configures how NGINX should load balance requests among them. - -Review the behaviour when a curl request is sent to the `coffee` application: - -Matches location /coffee/ block - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/coffee/hello -Handling connection for 8080 -Server address: 10.244.0.13:8080 -Server name: coffee-56b44d4c55-hwpkp -Date: 13/Jun/2024:22:51:52 +0000 -URI: /coffee/hello -Request ID: 21fc2baad77337065e7cf2cd57e04383 -``` - -Matches location = /coffee block - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/coffee -Handling connection for 8080 -Server address: 10.244.0.13:8080 -Server name: coffee-56b44d4c55-hwpkp -Date: 13/Jun/2024:22:51:40 +0000 -URI: /coffee -Request ID: 4d8d719e95063303e290ad74ecd7339f -``` - -Matches location / block - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/ -Handling connection for 8080 - -404 Not Found - -

404 Not Found

-
nginx/1.25.4
- -``` - -{{< warning >}} -The configuration may change in future releases. This configuration is valid for version 1.3. -{{< /warning >}} - -#### Metrics for troubleshooting - -Metrics can be useful to identify performance bottlenecks and pinpoint areas of high resource consumption within NGINX Gateway Fabric. To set up metrics collection, refer to the [Prometheus Metrics guide]({{< relref "prometheus.md" >}}). The metrics dashboard will help you understand problems with the way NGINX Gateway Fabric is set up or potential issues that could show up with time. - -For example, metrics `nginx_reloads_total` and `nginx_reload_errors_total` offer valuable insights into the system's stability and reliability. A high `nginx_reloads_total` value indicates frequent updates or configuration changes, while a high `nginx_reload_errors_total` value suggests issues with the configuration or other problems preventing successful reloads. Monitoring these metrics helps identify and resolve configuration errors, ensuring consistent service reliability. - -In such situations, it's advisable to review the logs of both NGINX and NGINX Gateway containers for any potential error messages. Additionally, verify the configured resources to ensure they are in a valid state. - -#### Access the NGINX Plus Dashboard - -If you have NGINX Gateway Fabric installed with NGINX Plus, you can access the NGINX Plus dashboard at `http://localhost:8080/dashboard.html`. -Verify that the port number (for example, `8080`) matches the port number you have port-forwarded to your NGINX Gateway Fabric Pod. For further details, see the [dashboard guide]({{< relref "dashboard.md" >}}) - -### Common errors - -{{< bootstrap-table "table table-striped table-bordered" >}} - -| Problem Area | Symptom | Troubleshooting Method | Common Cause | -|------------------------------|----------------------------------------|---------------------------------------------------------------------------------------------------------------------|-----------------------------------------------------------------------------------------------------------------------------------------| -| Startup | NGINX Gateway Fabric fails to start. | Check logs for _nginx_ and _nginx-gateway_ containers. | Readiness probe failed. | -| Resources not configured | Status missing on resources. | Check referenced resources. | Referenced resources do not belong to NGINX Gateway Fabric. | -| NGINX errors | Reload failures on NGINX | Fix permissions for control plane. | Security context not configured. | -| NGINX Plus errors | Failure to start; traffic interruptions | Set up the [NGINX Plus JWT]({{< relref "installation/nginx-plus-jwt.md" >}}) | License is not configured or has expired. | -| Client Settings | Request entity too large error | Adjust client settings. Refer to [Client Settings Policy]({{< relref "../traffic-management/client-settings.md" >}}) | Payload is greater than the [`client_max_body_size`](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size) value.| - -{{< /bootstrap-table >}} - -##### NGINX fails to reload - -NGINX reload errors can occur for various reasons, including syntax errors in configuration files, permission issues, and more. To determine if NGINX has failed to reload, check logs for your _nginx-gateway_ and _nginx_ containers. -You will see the following error in the _nginx-gateway_ logs: `failed to reload NGINX:`, followed by the reason for the failure. Similarly, error logs in _nginx_ container start with `emerg`. For example, `2024/06/12 14:25:11 [emerg] 12345#0: open() "/var/run/nginx.pid" failed (13: Permission denied)` shows a critical error, such as a permission problem preventing NGINX from accessing necessary files. - -To debug why your reload has failed, start with verifying the syntax of your configuration files by opening a shell in the NGINX container following these [steps](#get-shell-access-to-nginx-container) and running `nginx -T`. If there are errors in your configuration file, the reload will fail and specify the reason for it. - -##### NGINX Gateway Fabric Pod is not running or ready - -To understand why the NGINX Gateway Fabric Pod has not started running or is not ready, check the state of the Pod to get detailed information about the current status and events happening in the Pod. To do this, use `kubectl describe`: - -```shell -kubectl describe pod -n nginx-gateway -``` - -The Pod description includes details about the image name, tags, current status, and environment variables. Verify that these details match your setup and cross-check with the events to ensure everything is functioning as expected. For example, the Pod below has two containers that are running and the events reflect the same. - -```text -Containers: - nginx-gateway: - Container ID: containerd://06c97a9de938b35049b7c63e251418395aef65dd1ff996119362212708b79cab - Image: nginx-gateway-fabric - Image ID: docker.io/library/import-2024-06-13@sha256:1460d63bd8a352a6e455884d7ebf51ce9c92c512cb43b13e44a1c3e3e6a08918 - Ports: 9113/TCP, 8081/TCP - Host Ports: 0/TCP, 0/TCP - State: Running - Started: Thu, 13 Jun 2024 11:47:46 -0600 - Ready: True - Restart Count: 0 - Readiness: http-get http://:health/readyz delay=3s timeout=1s period=1s #success=1 #failure=3 - Environment: - POD_IP: (v1:status.podIP) - POD_NAMESPACE: nginx-gateway (v1:metadata.namespace) - POD_NAME: ngf-nginx-gateway-fabric-66dd665756-zh7d7 (v1:metadata.name) - nginx: - Container ID: containerd://c2f3684fd8922e4fac7d5707ab4eb5f49b1f76a48893852c9a812cd6dbaa2f55 - Image: nginx-gateway-fabric/nginx - Image ID: docker.io/library/import-2024-06-13@sha256:c9a02cb5665c6218373f8f65fc2c730f018d0ca652ae827cc913a7c6e9db6f45 - Ports: 80/TCP, 443/TCP - Host Ports: 0/TCP, 0/TCP - State: Running - Started: Thu, 13 Jun 2024 11:47:46 -0600 - Ready: True - Restart Count: 0 - Environment: -Events: - Type Reason Age From Message - ---- ------ ---- ---- ------- - Normal Scheduled 40s default-scheduler Successfully assigned nginx-gateway/ngf-nginx-gateway-fabric-66dd665756-zh7d7 to kind-control-plane - Normal Pulled 40s kubelet Container image "nginx-gateway-fabric" already present on machine - Normal Created 40s kubelet Created container nginx-gateway - Normal Started 39s kubelet Started container nginx-gateway - Normal Pulled 39s kubelet Container image "nginx-gateway-fabric/nginx" already present on machine - Normal Created 39s kubelet Created container nginx - Normal Started 39s kubelet Started container nginx -``` - -##### Insufficient Privileges errors - -Depending on your environment's configuration, the control plane may not have the proper permissions to reload NGINX. The NGINX configuration will not be applied and you will see the following error in the _nginx-gateway_ logs: - -`failed to reload NGINX: failed to send the HUP signal to NGINX main: operation not permitted` - -To **resolve** this issue you will need to set `allowPrivilegeEscalation` to `true`. - -- If using Helm, you can set the `nginxGateway.securityContext.allowPrivilegeEscalation` value. -- If using the manifests directly, you can update this field under the `nginx-gateway` container's `securityContext`. - -##### NGINX Plus failure to start or traffic interruptions - -Beginning with NGINX Gateway Fabric 1.5.0, NGINX Plus requires a valid JSON Web Token (JWT) to run. If this is not set up properly, or your JWT token has expired, you may see errors in the NGINX logs that look like the following: - -```text -nginx: [error] invalid license token -``` - -```text -nginx: [emerg] License file is required. Download JWT license from MyF5 and configure its location... -``` - -```text -nginx: [emerg] license expired -``` - -These errors could prevent NGINX Plus from starting or prevent traffic from flowing. To fix these issues, see the [NGINX Plus JWT]({{< relref "installation/nginx-plus-jwt.md" >}}) guide. - -##### 413 Request Entity Too Large - -If you receive the following error: - -```text - -413 Request Entity Too Large - -

413 Request Entity Too Large

-
nginx/1.25.5
- - -``` - -Or view the following error message in the NGINX logs: - -```text -2024/05/30 21:48:22 [error] 138#138: *43 client intended to send too large body: 112 bytes, client: 127.0.0.1, server: cafe.example.com, request: "POST /coffee HTTP/1.1", host: "cafe.example.com:8080" -``` - -The request body exceeds the [client_max_body_size](https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size). -To **resolve** this, you can configure the `client_max_body_size` using the `ClientSettingsPolicy` API. Read the [Client Settings Policy]({{< relref "how-to/traffic-management/client-settings.md" >}}) documentation for more information. - -##### IP Family Mismatch Errors - -If you `describe` your HTTPRoute and see the following error: - -```text - Conditions: - Last Transition Time: 2024-07-14T23:36:37Z - Message: The route is accepted - Observed Generation: 1 - Reason: Accepted - Status: True - Type: Accepted - Last Transition Time: 2024-07-14T23:36:37Z - Message: Service configured with IPv4 family but NginxProxy is configured with IPv6 - Observed Generation: 1 - Reason: InvalidServiceIPFamily - Status: False - Type: ResolvedRefs - Controller Name: gateway.nginx.org/nginx-gateway-controller -``` - -The Service associated with your HTTPRoute is configured with a IP Family different than the one specified in the NginxProxy configuration. -To **resolve** this, you can do one of the following: - -- Update the NginxProxy configuration with the proper [`ipFamily`]({{< relref "reference/api.md" >}}) field. You can edit the NginxProxy configuration using `kubectl edit`. For example: - - ```shell - kubectl edit -n nginx-gateway nginxproxies.gateway.nginx.org ngf-proxy-config - ``` - -- When installing NGINX Gateway Fabric, change the IPFamily by modifying the field `nginx.config.ipFamily` in the `values.yaml` or add the `--set nginx.config.ipFamily=` flag to the `helm install` command. The supported IPFamilies are `ipv4`, `ipv6` and `dual` (default). - -- Adjust the IPFamily of your Service to match that of the NginxProxy configuration. - -##### Policy cannot be applied to target - -If you `describe` your Policy and see the following error: - -```text - Conditions: - Last Transition Time: 2024-08-20T14:48:53Z - Message: Policy cannot be applied to target "default/route1" since another Route "default/route2" shares a hostname:port/path combination with this target - Observed Generation: 3 - Reason: TargetConflict - Status: False - Type: Accepted -``` - -This means you are attempting to attach a Policy to a Route that has an overlapping hostname:port/path combination with another Route. To work around this, you can do one of the following: - -- Combine the Route rules for the overlapping path into a single Route. -- If the Policy allows it, specify both Routes in the `targetRefs` list. - -##### Broken Header error - -If you check your _nginx_ container logs and see the following error: - -```text - 2024/07/25 00:50:45 [error] 211#211: *22 broken header: "GET /coffee HTTP/1.1" while reading PROXY protocol, client: 127.0.0.1, server: 0.0.0.0:80 -``` - -It indicates that `proxy_protocol` is enabled for the gateway listeners, but the request sent to the application endpoint does not contain proxy information. To **resolve** this, you can do one of the following: - -- Unassign the field [`rewriteClientIP.mode`]({{< relref "reference/api.md" >}}) in the NginxProxy configuration. - -- Send valid proxy information with requests being handled by your application. - -### Further reading - -You can view the [Kubernetes Troubleshooting Guide](https://kubernetes.io/docs/tasks/debug/debug-application/) for more debugging guidance. diff --git a/site/content/how-to/traffic-management/_index.md b/site/content/how-to/traffic-management/_index.md deleted file mode 100644 index eb4895183f..0000000000 --- a/site/content/how-to/traffic-management/_index.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "Traffic management" -weight: 100 ---- diff --git a/site/content/how-to/traffic-management/advanced-routing.md b/site/content/how-to/traffic-management/advanced-routing.md deleted file mode 100644 index cdac87aa6b..0000000000 --- a/site/content/how-to/traffic-management/advanced-routing.md +++ /dev/null @@ -1,367 +0,0 @@ ---- -title: "Application routes using HTTP matching conditions" -toc: true -weight: 200 -type: how-to -product: NGF -docs: DOCS-1422 ---- - -Learn how to deploy multiple applications and HTTPRoutes with request conditions such as paths, methods, headers, and query parameters - ---- - -## Overview - -In this guide we will configure advanced routing rules for multiple applications. These rules will showcase request matching by path, headers, query parameters, and method. For an introduction to exposing your application, we recommend that you follow the [basic guide]({{< relref "/how-to/traffic-management/routing-traffic-to-your-app.md" >}}) first. - -The following image shows the traffic flow that we will be creating with these rules. - -{{}} - -The goal is to create a set of rules that will result in client requests being sent to specific backends based on the request attributes. In this diagram, we have two versions of the `coffee` service. Traffic for v1 needs to be directed to the old application, while traffic for v2 needs to be directed towards the new application. We also have two `tea` services, one that handles GET operations and one that handles POST operations. Both the `tea` and `coffee` applications share the same Gateway. - - ---- - -## Before you begin - -- [Install]({{< relref "/installation/" >}}) NGINX Gateway Fabric. -- Save the public IP address and port of NGINX Gateway Fabric into shell variables: - - ```text - GW_IP=XXX.YYY.ZZZ.III - GW_PORT= - ``` - -{{< note >}} In a production environment, you should have a DNS record for the external IP address that is exposed, and it should refer to the hostname that the gateway will forward for. {{< /note >}} - ---- - -## Coffee applications - -### Deploy the Coffee applications - -Begin by deploying the `coffee-v1` and `coffee-v2` applications: - -```shell -kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.0/examples/advanced-routing/coffee.yaml -``` - ---- - -### Deploy the Gateway API Resources for the Coffee applications - -The [gateway](https://gateway-api.sigs.k8s.io/api-types/gateway/) resource is typically deployed by the [cluster operator](https://gateway-api.sigs.k8s.io/concepts/roles-and-personas/#roles-and-personas_1). To deploy the gateway: - -```yaml -kubectl apply -f - <}}If you have a DNS record allocated for `cafe.example.com`, you can send the request directly to that hostname, without needing to resolve.{{< /note >}} - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/coffee -``` - -This request should receive a response from the `coffee-v1` Pod. - -```text -Server address: 10.244.0.9:8080 -Server name: coffee-v1-76c7c85bbd-cf8nz -``` - -If we want our request to be routed to `coffee-v2`, then we need to meet the defined conditions. We can include a header: - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/coffee -H "version:v2" -``` - -or include a query parameter: - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/coffee?TEST=v2 -``` - -Either request should result in a response from the `coffee-v2` Pod. - -```text -Server address: 10.244.0.9:8080 -Server name: coffee-v2-68bd55f798-s9z5q -``` - ---- - -## Tea applications - -Let's deploy a different set of applications now called `tea` and `tea-post`. These applications will have their own set of rules, but will still attach to the same gateway listener as the `coffee` apps. - ---- - -### Deploy the Tea applications - -```shell -kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.0/examples/advanced-routing/tea.yaml -``` - ---- - -### Deploy the HTTPRoute for the Tea services - -We are reusing the previous gateway for these applications, so all we need to create is the HTTPRoute. - -```yaml -kubectl apply -f - <}}If you have a DNS record allocated for `cafe.example.com`, you can send the request directly to that hostname, without needing to resolve.{{< /note >}} - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/tea -``` - -This GET request should receive a response from the `tea` Pod. - -```text -Server address: 10.244.0.10:8080 -Server name: tea-df5655878-5fmfg -``` - -If we want our request to be routed to `tea-post`, then we need to send a POST request: - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/tea -X POST -``` - -```text -Server address: 10.244.0.7:8080 -Server name: tea-post-b59b8596b-g586r -``` - -This request should receive a response from the `tea-post` pod. Any other type of method, such as PATCH, will result in a `404 Not Found` response. - ---- - -## Troubleshooting - -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 Gateway Fabric service. Refer to the [Installation]({{< relref "/installation/" >}}) guides for more information. - -- Check the status of the Gateway: - - ```shell - kubectl describe gateway cafe - ``` - - The Gateway status should look like this: - - ```text - Status: - Addresses: - Type: IPAddress - Value: 10.244.0.85 - Conditions: - Last Transition Time: 2023-08-15T20:57:21Z - Message: Gateway is accepted - Observed Generation: 1 - Reason: Accepted - Status: True - Type: Accepted - Last Transition Time: 2023-08-15T20:57:21Z - Message: Gateway is programmed - Observed Generation: 1 - Reason: Programmed - Status: True - Type: Programmed - Listeners: - Attached Routes: 2 - Conditions: - Last Transition Time: 2023-08-15T20:57:21Z - Message: Listener is accepted - Observed Generation: 1 - Reason: Accepted - Status: True - Type: Accepted - Last Transition Time: 2023-08-15T20:57:21Z - Message: Listener is programmed - Observed Generation: 1 - Reason: Programmed - Status: True - Type: Programmed - Last Transition Time: 2023-08-15T20:57:21Z - Message: All references are resolved - Observed Generation: 1 - Reason: ResolvedRefs - Status: True - Type: ResolvedRefs - Last Transition Time: 2023-08-15T20:57:21Z - Message: No conflicts - Observed Generation: 1 - Reason: NoConflicts - Status: False - Type: Conflicted - Name: http - ``` - - Check that the conditions match and that the attached routes for the `http` listener equals 2. If it is less than 2, there may be an issue with the routes. - -- Check the status of the HTTPRoutes: - - ```shell - kubectl describe httproute coffee - ``` - - ```shell - kubectl describe httproute tea - ``` - - Each HTTPRoute status should look like this: - - ```text - Status: - Parents: - Conditions: - Last Transition Time: 2023-08-15T20:57:21Z - Message: The route is accepted - Observed Generation: 1 - Reason: Accepted - Status: True - Type: Accepted - Last Transition Time: 2023-08-15T20:57:21Z - Message: All references are resolved - Observed Generation: 1 - Reason: ResolvedRefs - Status: True - Type: ResolvedRefs - Controller Name: gateway.nginx.org/nginx-gateway-controller - Parent Ref: - Group: gateway.networking.k8s.io - Kind: Gateway - Name: cafe - Namespace: default - ``` - - Check for any error messages in the conditions. - ---- - -## See also - -To learn more about the Gateway API and the resources we created in this guide, check out the following Kubernetes documentation resources: - -- [Gateway API Overview](https://gateway-api.sigs.k8s.io/concepts/api-overview/) -- [Deploying a simple Gateway](https://gateway-api.sigs.k8s.io/guides/simple-gateway/) -- [HTTP Routing](https://gateway-api.sigs.k8s.io/guides/http-routing/) diff --git a/site/content/how-to/traffic-management/client-settings.md b/site/content/how-to/traffic-management/client-settings.md deleted file mode 100644 index ea644a827e..0000000000 --- a/site/content/how-to/traffic-management/client-settings.md +++ /dev/null @@ -1,280 +0,0 @@ ---- -title: "Client Settings Policy API" -weight: 800 -toc: true -docs: "DOCS-000" ---- - -Learn how to use the `ClientSettingsPolicy` API. - -## Overview - -The `ClientSettingsPolicy` API allows Cluster Operators and Application Developers to configure the connection behavior between the client and NGINX. - -The settings in `ClientSettingsPolicy` correspond to the following NGINX directives: - -- [`client_max_body_size`]() -- [`client_body_timeout`]() -- [`keepalive_requests`]() -- [`keepalive_time`]() -- [`keepalive_timeout`]() - -`ClientSettingsPolicy` is an [Inherited Policy Attachment](https://gateway-api.sigs.k8s.io/reference/policy-attachment/) that can be applied to a Gateway, HTTPRoute, or GRPCRoute in the same namespace as the `ClientSettingsPolicy`. - -When applied to a Gateway, the settings specified in the `ClientSettingsPolicy` affect all HTTPRoutes and GRPCRoutes attached to the Gateway. This allows Cluster Operators to set defaults for all applications using the Gateway. - -When applied to an HTTPRoute or GRPCRoute, the settings in the `ClientSettingsPolicy` affect only the route they are applied to. This allows Application Developers to set values for their applications based on their application's behavior or requirements. -Settings applied to an HTTPRoute or GRPCRoute take precedence over settings applied to a Gateway. See the [custom policies]({{< relref "overview/custom-policies.md" >}}) document for more information on policies. - -This guide will show you how to use the `ClientSettingsPolicy` API to configure the client max body size for your applications. - -For all the possible configuration options for `ClientSettingsPolicy`, see the [API reference]({{< relref "reference/api.md" >}}). - -## Setup - -- [Install]({{< relref "/installation/" >}}) NGINX Gateway Fabric. -- Save the public IP address and port of NGINX Gateway Fabric into shell variables: - - ```text - GW_IP=XXX.YYY.ZZZ.III - GW_PORT= - ``` - - {{< note >}}In a production environment, you should have a DNS record for the external IP address that is exposed, and it should refer to the hostname that the gateway will forward for.{{< /note >}} - -- Create the coffee and tea example applications: - - ```yaml - kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.0/examples/client-settings-policy/app.yaml - ``` - -- Create a Gateway: - - ```yaml - kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.0/examples/client-settings-policy/gateway.yaml - ``` - -- Create HTTPRoutes for the coffee and tea applications: - - ```yaml - kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.0/examples/client-settings-policy/httproutes.yaml - ``` - -- Test the configuration: - - You can send traffic to the coffee and tea applications using the external IP address and port for NGINX Gateway Fabric. - - Send a request to coffee: - - ```shell - curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/coffee - ``` - - This request should receive a response from the coffee Pod: - - ```text - Server address: 10.244.0.9:8080 - Server name: coffee-76c7c85bbd-cf8nz - ``` - - Send a request to tea: - - ```shell - curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/tea - ``` - - This request should receive a response from the tea Pod: - - ```text - Server address: 10.244.0.9:8080 - Server name: tea-76c7c85bbd-cf8nz - ``` - -## Configure client max body size - -### Set a default client max body size for the Gateway - -To set a default client max body size for the Gateway created during setup, add the following `ClientSettingsPolicy`: - -```yaml -kubectl apply -f - < -``` - -Next, test that the policy is configured by sending a POST request to the coffee and tea applications exceeding the client's max body size of 50 bytes. - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/coffee -X POST --data "this payload is greater than fifty bytes by four bytes" -``` - -You should receive the following error: - -```text - -413 Request Entity Too Large - -

413 Request Entity Too Large

-
nginx/1.25.5
- - -``` - -Try again with a payload that's less than the 50 byte limit: - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/coffee -X POST --data "this payload is under fifty bytes" -``` - -This time, you should receive a response from coffee: - -```text -Server address: 10.244.0.6:8080 -Server name: coffee-56b44d4c55-7ldjc -``` - -You can repeat this test with the tea application to confirm that the policy affects both HTTPRoutes. - -### Set a different client max body size for a route - -To set a different client max body size for a particular route, you can create another `ClientSettingsPolicy` that targets the route: - -```yaml -kubectl apply -f - < -``` - -Notice that the Ancestor Ref in the status is the tea HTTPRoute instead of the Gateway. - -Next, test that the policy is configured by sending a POST request to the tea application with a request body size greater than 50 bytes. - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/tea -X POST --data "this payload is greater than fifty bytes but less than seventy five" -``` - -You should receive a response from tea: - -```text -Server address: 10.244.0.7:8080 -Server name: tea-596697966f-bf6tw -``` - -However, since the coffee app is still affected by the `ClientSettingsPolicy` attached to the Gateway, the same request to coffee should fail: - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/coffee -X POST --data "this payload is greater than fifty bytes but less than seventy five" -``` - -```text - -413 Request Entity Too Large - -

413 Request Entity Too Large

-
nginx/1.25.5
- - -``` - -To configure a `ClientSettingsPolicy` for a GRPCRoute, you can specify the GRPCRoute in the `spec.targetRef`: - -```yaml -kubectl apply -f - <}}): learn about how NGINX Gateway Fabric custom policies work. -- [API reference]({{< relref "reference/api.md" >}}): all configuration fields for the `ClientSettingsPolicy` API. diff --git a/site/content/how-to/traffic-management/https-termination.md b/site/content/how-to/traffic-management/https-termination.md deleted file mode 100644 index ad8ae6ba79..0000000000 --- a/site/content/how-to/traffic-management/https-termination.md +++ /dev/null @@ -1,262 +0,0 @@ ---- -title: "HTTPS termination" -toc: true -weight: 500 -type: how-to -product: NGF -docs: DOCS-1421 ---- - -Learn how to terminate HTTPS traffic using NGINX Gateway Fabric. - ---- - -## Overview - -In this guide, we will show how to configure HTTPS termination for your application, using an [HTTPRoute](https://gateway-api.sigs.k8s.io/api-types/httproute/) redirect filter, secret, and [ReferenceGrant](https://gateway-api.sigs.k8s.io/api-types/referencegrant/). - ---- - -## Before you begin - -- [Install]({{< relref "installation/" >}}) NGINX Gateway Fabric. -- Save the public IP address and port of NGINX Gateway Fabric into shell variables: - - ```text - GW_IP=XXX.YYY.ZZZ.III - GW_PORT= - ``` - - Save the ports of NGINX Gateway Fabric: - - ```text - GW_HTTP_PORT= - GW_HTTPS_PORT= - ``` - -{{< note >}}In a production environment, you should have a DNS record for the external IP address that is exposed, and it should refer to the hostname that the gateway will forward for.{{< /note >}} - ---- - -## Set up - -Create the **coffee** application in Kubernetes by copying and pasting the following block into your terminal: - -```yaml -kubectl apply -f - < 80/TCP 40s -``` - ---- - -## Configure HTTPS termination and routing - -For the HTTPS, we need a certificate and key that are stored in a secret. This secret will live in a separate namespace, so we will need a ReferenceGrant in order to access it. - -To create the **certificate** namespace and secret, copy and paste the following into your terminal: - -```yaml -kubectl apply -f - <}}If you have a DNS record allocated for `cafe.example.com`, you can send the request directly to that hostname, without needing to resolve.{{< /note >}} - -To test that NGINX sends an HTTPS redirect, we will send requests to the `coffee` service on the HTTP port. We -will use curl's `--include` option to print the response headers (we are interested in the `Location` header). - -```shell -curl --resolve cafe.example.com:$GW_HTTP_PORT:$GW_IP http://cafe.example.com:$GW_HTTP_PORT/coffee --include -``` - -```text -HTTP/1.1 302 Moved Temporarily -... -Location: https://cafe.example.com/coffee -... -``` - -Now we will access the application over HTTPS. Since our certificate is self-signed, we will use curl's `--insecure` -option to turn off certificate verification. - -```shell -curl --resolve cafe.example.com:$GW_HTTPS_PORT:$GW_IP https://cafe.example.com:$GW_HTTPS_PORT/coffee --insecure -``` - -```text -Server address: 10.244.0.6:80 -Server name: coffee-6b8b6d6486-7fc78 -``` - ---- - -## See also - -To learn more about redirects using the Gateway API, see the following resource: - -- [Gateway API Redirects](https://gateway-api.sigs.k8s.io/guides/http-redirect-rewrite/) diff --git a/site/content/how-to/traffic-management/redirects-and-rewrites.md b/site/content/how-to/traffic-management/redirects-and-rewrites.md deleted file mode 100644 index f8eb293130..0000000000 --- a/site/content/how-to/traffic-management/redirects-and-rewrites.md +++ /dev/null @@ -1,516 +0,0 @@ ---- -title: "HTTP redirects and rewrites" -weight: 400 -toc: true -docs: "DOCS-1424" ---- - -Learn how to redirect or rewrite your HTTP traffic using NGINX Gateway Fabric. - -## Overview - -[HTTPRoute](https://gateway-api.sigs.k8s.io/api-types/httproute/) filters can be used to configure HTTP redirects or rewrites. Redirects return HTTP 3XX responses to a client, instructing it to retrieve a different resource. Rewrites modify components of a client request (such as hostname and/or path) before proxying it upstream. - -In this guide, we will set up the coffee application to demonstrate path URL rewriting, and the tea and soda applications to showcase path-based request redirection. For an introduction to exposing your application, we recommend that you follow the [basic guide]({{< relref "/how-to/traffic-management/routing-traffic-to-your-app.md" >}}) first. - -To see an example of a redirect using scheme and port, see the [HTTPS Termination]({{< relref "/how-to/traffic-management/https-termination.md" >}}) guide. - ---- - -## Before you begin - -- [Install]({{< relref "installation/" >}}) NGINX Gateway Fabric. -- Save the public IP address and port of NGINX Gateway Fabric into shell variables: - - ```text - GW_IP=XXX.YYY.ZZZ.III - GW_PORT= - ``` - -{{< note >}}In a production environment, you should have a DNS record for the external IP address that is exposed, and it should refer to the hostname that the gateway will forward for.{{< /note >}} - ---- - -## HTTP rewrites and redirects examples - -We will configure a common gateway for the `URLRewrite` and `RequestRedirect` filter examples mentioned below. - ---- - -### Deploy the Gateway resource for the applications - -The [Gateway](https://gateway-api.sigs.k8s.io/api-types/gateway/) resource is typically deployed by the [Cluster Operator](https://gateway-api.sigs.k8s.io/concepts/roles-and-personas/#roles-and-personas_1). This Gateway defines a single listener on port 80. Since no hostname is specified, this listener matches on all hostnames. To deploy the Gateway: - -```yaml -kubectl apply -f - < 80/TCP 40s -``` - ---- - -### Configure a path rewrite - -The following HTTPRoute defines two filters that will rewrite requests such as the following: - -- `http://cafe.example.com/coffee` to `http://cafe.example.com/beans` -- `http://cafe.example.com/coffee/flavors` to `http://cafe.example.com/beans` -- `http://cafe.example.com/latte/prices` to `http://cafe.example.com/prices` - -To create the httproute resource, copy and paste the following into your terminal: - -```yaml -kubectl apply -f - <}}If you have a DNS record allocated for `cafe.example.com`, you can send the request directly to that hostname, without needing to resolve.{{< /note >}} - -This example demonstrates a rewrite from `http://cafe.example.com/coffee/flavors` to `http://cafe.example.com/beans`. - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/coffee/flavors -``` - -Notice in the output that the URI has been rewritten: - -```text -Server address: 10.244.0.6:8080 -Server name: coffee-6b8b6d6486-7fc78 -... -URI: /beans -``` - -Other examples: - -This example demonstrates a rewrite from `http://cafe.example.com/coffee` to `http://cafe.example.com/beans`. - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/coffee -``` - -```text -Server address: 10.244.0.6:8080 -Server name: coffee-6b8b6d6486-7fc78 -... -URI: /beans -``` - -This example demonstrates a rewrite from `http://cafe.example.com/coffee/mocha` to `http://cafe.example.com/beans` and specifies query parameters `test=v1&test=v2`. - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/coffee/mocha\?test\=v1\&test\=v2 -``` - -```text -Server address: 10.244.0.235:8080 -Server name: coffee-6db967495b-twn6x -... -URI: /beans?test=v1&test=v2 -``` - -This example demonstrates a rewrite from `http://cafe.example.com/latte/prices` to `http://cafe.example.com/prices`. - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/latte/prices -``` - -```text -Server address: 10.244.0.6:8080 -Server name: coffee-6b8b6d6486-7fc78 -... -URI: /prices -``` - -This example demonstrates a rewrite from `http://cafe.example.com/coffee/latte/prices` to `http://cafe.example.com/prices` and specifies query parameters `test=v1&test=v2`. - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/latte/prices\?test\=v1\&test\=v2 -``` - -```text -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/latte/prices\?test\=v1\&test\=v2 -Server address: 10.244.0.235:8080 -Server name: coffee-6db967495b-twn6x -... -URI: /prices?test=v1&test=v2 -``` - ---- - -## RequestRedirect example - -This example demonstrates how to redirect the traffic to a new location for the tea and soda applications, using `RequestRedirect` filters. - ---- - -### Setup - -Create the **tea** and **soda** application in Kubernetes by copying and pasting the following block into your terminal: - -```yaml -kubectl apply -f - < 80/TCP 89m -service/tea ClusterIP 10.96.151.194 80/TCP 120m -``` - ---- - -### Configure a path redirect - -In this section, we'll define two HTTPRoutes for the tea and soda applications to demonstrate different types of request redirection using the `RequestRedirect` filter. - -1. The `tea-redirect` route uses the `ReplacePrefixMatch` type for path modification. This configuration matches the prefix of the original path and updates it to a new path, preserving the rest of the original URL structure. It will redirect request as follows: - - - `http://cafe.example.com/tea` to `http://cafe.example.com/organic` - - `http://cafe.example.com/tea/origin` to `http://cafe.example.com/organic/origin` - -2. The `soda-redirect` route uses the `ReplaceFullPath` type for path modification. This configuration updates the entire original path to the new location, effectively overwriting it. It will redirect request as follows: - - - `http://cafe.example.com/soda` to `http://cafe.example.com/flavors` - - `http://cafe.example.com/soda/pepsi` to `http://cafe.example.com/flavors` - -To create the httproute resource, copy and paste the following into your terminal: - -```yaml -kubectl apply -f - <}}If you have a DNS record allocated for `cafe.example.com`, you can send the request directly to that hostname, without needing to resolve.{{< /note >}} - -This example demonstrates a redirect from `http://cafe.example.com/tea` to `http://cafe.example.com/organic`. - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/tea --include -``` - -Notice in the output that the URI has been redirected to the new location: - -```text -HTTP/1.1 302 Moved Temporarily -.. -Location: http://cafe.example.com:8080/organic -``` - -Other examples: - -This example demonstrates a redirect from `http://cafe.example.com/tea/type` to `http://cafe.example.com/organic/type`. - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/tea/type --include -``` - -```text -HTTP/1.1 302 Moved Temporarily -.. -Location: http://cafe.example.com:8080/organic/type -``` - -This example demonstrates a redirect from `http://cafe.example.com/tea/type` to `http://cafe.example.com/organic/type` and specifies query params `test=v1`. - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/tea/type\?test\=v1 --include -``` - -```text -HTTP/1.1 302 Moved Temporarily -.. -Location: http://cafe.example.com:8080/organic/type?test=v1 -``` - -This example demonstrates a redirect from `http://cafe.example.com/soda` to `http://cafe.example.com/flavors`. - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/soda --include -``` - -```text -HTTP/1.1 302 Moved Temporarily -.. -Location: http://cafe.example.com:8080/flavors -``` - -This example demonstrates a redirect from `http://cafe.example.com/soda/pepsi` to `http://cafe.example.com/flavors/pepsi`. - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/soda/pepsi --include -``` - -```text -HTTP/1.1 302 Moved Temporarily -.. -Location: http://cafe.example.com:8080/flavors -``` - -This example demonstrates a redirect from `http://cafe.example.com/soda/pepsi` to `http://cafe.example.com/flavors/pepsi` and specifies query params `test=v1`. - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/soda/pepsi\?test\=v1 --include -``` - -```text -HTTP/1.1 302 Moved Temporarily -.. -Location: http://cafe.example.com:8080/flavors?test=v1 -``` - ---- - -## Further reading - -To learn more about redirects and rewrites using the Gateway API, see the following resource: - -- [Gateway API Redirects and Rewrites](https://gateway-api.sigs.k8s.io/guides/http-redirect-rewrite/) diff --git a/site/content/how-to/traffic-management/request-response-headers.md b/site/content/how-to/traffic-management/request-response-headers.md deleted file mode 100644 index f782f30967..0000000000 --- a/site/content/how-to/traffic-management/request-response-headers.md +++ /dev/null @@ -1,354 +0,0 @@ ---- -title: "Modify HTTP request and response headers" -toc: true -weight: 600 -type: how-to -product: NGF -docs: DOCS-000 ---- - -Learn how to modify the request and response headers of your application using NGINX Gateway Fabric. - -## Overview - -[HTTP Header Modifiers](https://gateway-api.sigs.k8s.io/guides/http-header-modifier/?h=request#http-header-modifiers) can be used to add, modify or remove headers during the request-response lifecycle. The [RequestHeaderModifier](https://gateway-api.sigs.k8s.io/guides/http-header-modifier/#http-request-header-modifier) is used to alter headers in a request sent by client and [ResponseHeaderModifier](https://gateway-api.sigs.k8s.io/guides/http-header-modifier/#http-response-header-modifier) is used to alter headers in a response to the client. - -This guide describes how to configure the headers application to modify the headers in the request. Another version of the headers application is then used to modify response headers when client requests are made. For an introduction to exposing your application, we recommend that you follow the [basic guide]({{< relref "/how-to/traffic-management/routing-traffic-to-your-app.md" >}}) first. - ---- - -## Before you begin - -- [Install]({{< relref "/installation/" >}}) NGINX Gateway Fabric. -- Save the public IP address and port of NGINX Gateway Fabric into shell variables: - - ```text - GW_IP=XXX.YYY.ZZZ.III - GW_PORT= - ``` - -{{< note >}} In a production environment, you should have a DNS record for the external IP address that is exposed, and it should refer to the hostname that the gateway will forward for .{{< /note >}} - ---- - -## HTTP Header Modifiers examples - -We will configure a common gateway for the `RequestHeaderModifier` and `ResponseHeaderModifier` examples mentioned below. - ---- - -### Deploy the Gateway API resources for the Header application - -The [Gateway](https://gateway-api.sigs.k8s.io/api-types/gateway/) resource is typically deployed by the [Cluster Operator](https://gateway-api.sigs.k8s.io/concepts/roles-and-personas/#roles-and-personas_1). This Gateway defines a single listener on port 80. Since no hostname is specified, this listener matches on all hostnames. To deploy the Gateway: - -```yaml -kubectl apply -f - < 80/TCP 23s -``` - ---- - -### Configure the HTTPRoute with RequestHeaderModifier filter - -Create a HTTPRoute that exposes the header application outside the cluster using the listener created in the previous section. Use the following command: - -```yaml -kubectl apply -f - < 80/TCP 95s -``` - -### Configure the basic HTTPRoute - -Create a HTTPRoute that exposes the header application outside the cluster using the listener created in the previous section. You can do this with the following command: - -```yaml -kubectl apply -f - <}}) NGINX Gateway Fabric. -- Save the public IP address and port of NGINX Gateway Fabric into shell variables: - - ```text - GW_IP=XXX.YYY.ZZZ.III - GW_PORT= - ``` - ---- - -## Example application - -The application we are going to use in this guide is a simple **coffee** application comprised of one service and two pods: - -{{This image shows a single 'coffee' Service connecting to two 'coffee' Pods.}} - -Using 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. - -Install NGINX Gateway Fabric and create two Gateway API resources: a [gateway](https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1.Gateway) and an [HTTPRoute](https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1.HTTPRoute). - -Using these resources we will configure a simple routing rule to match all HTTP traffic with the hostname "cafe.example.com" and route it to the **coffee** service. - ---- - -## Set up - -Create the **coffee** application in Kubernetes by copying and pasting the following block into your terminal: - -```yaml -kubectl apply -f - < 80/TCP 77s -``` - ---- - -## 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 are creating in the next step: - -{{}} - -We need a gateway to create an entry point for HTTP traffic coming into the cluster. The **cafe** gateway we are going to create will open an entry point to the cluster on port 80 for HTTP traffic. - -To route HTTP traffic from the gateway to the **coffee** service, we need to create an HTTPRoute named **coffee** and attach it 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 Gateway Fabric processes the **cafe** gateway and **coffee** HTTPRoute, it will configure its data plane (NGINX) to route all HTTP requests sent to "cafe.example.com" to the pods that the **coffee** service targets: - -{{Traffic Flow}} - -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 >}}In the diagrams above, all resources that are the responsibility of the cluster operator are shown in blue. The orange resources are the responsibility of the application developers. - -See the [roles and personas](https://gateway-api.sigs.k8s.io/concepts/roles-and-personas/#roles-and-personas_1) Gateway API document for more information on these roles.{{< /note >}} - ---- - -## Create the Gateway API resources - -To create the **cafe** gateway, copy and paste the following into your terminal: - -```yaml -kubectl apply -f - <}}). - -We specify a [listener](https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1.Listener) on the gateway to open an entry point on the cluster. In this case, since the coffee application accepts HTTP requests, we create an HTTP listener, named **http**, that listens on port 80. - -By default, gateways only allow routes (such as HTTPRoutes) to attach if they are in the same namespace as the gateway. If you want to change this behavior, you can set -the [**allowedRoutes**](https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1.AllowedRoutes) field. - -Next you will create the HTTPRoute by copying and pasting the following into your terminal: - -```yaml -kubectl apply -f - <}}Your clients should be able to resolve the domain name "cafe.example.com" to the public IP of the NGINX Gateway Fabric. In this guide we will simulate that using curl's `--resolve` option. {{< /note >}} - - -First, let's send a request to the path "/": - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/ -``` - -We should get a response from one of the **coffee** pods: - -```text -Server address: 10.12.0.18:8080 -Server name: coffee-7dd75bc79b-cqvb7 -``` - -Since the **cafe** HTTPRoute routes all traffic on any path to the **coffee** application, the following requests should also be handled by the **coffee** pods: - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/some-path -``` - -```text -Server address: 10.12.0.18:8080 -Server name: coffee-7dd75bc79b-cqvb7 -``` - -```shell -curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/some/path -``` - -```text -Server address: 10.12.0.19:8080 -Server name: coffee-7dd75bc79b-dett3 -``` - -Requests to hostnames other than "cafe.example.com" should _not_ be routed to the coffee application, since the **cafe** HTTPRoute only matches requests with the "cafe.example.com"need hostname. To verify this, send a request to the hostname "pub.example.com": - -```shell -curl --resolve pub.example.com:$GW_PORT:$GW_IP http://pub.example.com:$GW_PORT/ -``` - -You should receive a 404 Not Found error: - -```text - -404 Not Found - -

404 Not Found

-
nginx/1.25.2
- - -``` - ---- - -## Troubleshooting - -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 Gateway Fabric Service. Refer to the [Installation]({{< relref "/installation/" >}}) guides for more information. - -- Check the status of the gateway: - - ```shell - kubectl describe gateway cafe - ``` - - The gateway status should look similar to this: - - ```text - Status: - Addresses: - Type: IPAddress - Value: 10.244.0.85 - Conditions: - Last Transition Time: 2023-08-15T20:57:21Z - Message: Gateway is accepted - Observed Generation: 1 - Reason: Accepted - Status: True - Type: Accepted - Last Transition Time: 2023-08-15T20:57:21Z - Message: Gateway is programmed - Observed Generation: 1 - Reason: Programmed - Status: True - Type: Programmed - Listeners: - Attached Routes: 1 - Conditions: - Last Transition Time: 2023-08-15T20:57:21Z - Message: Listener is accepted - Observed Generation: 1 - Reason: Accepted - Status: True - Type: Accepted - Last Transition Time: 2023-08-15T20:57:21Z - Message: Listener is programmed - Observed Generation: 1 - Reason: Programmed - Status: True - Type: Programmed - Last Transition Time: 2023-08-15T20:57:21Z - Message: All references are resolved - Observed Generation: 1 - Reason: ResolvedRefs - Status: True - Type: ResolvedRefs - Last Transition Time: 2023-08-15T20:57:21Z - Message: No conflicts - Observed Generation: 1 - Reason: NoConflicts - Status: False - Type: Conflicted - Name: http - ``` - - Check that the conditions match and that the attached routes for the **http** listener equals 1. If it is 0, there may be an issue with the HTTPRoute. - -- Check the status of the HTTPRoute: - - ```shell - kubectl describe httproute coffee - ``` - - The HTTPRoute status should look similar to this: - - ```text - Status: - Parents: - Conditions: - Last Transition Time: 2023-08-15T20:57:21Z - Message: The route is accepted - Observed Generation: 1 - Reason: Accepted - Status: True - Type: Accepted - Last Transition Time: 2023-08-15T20:57:21Z - Message: All references are resolved - Observed Generation: 1 - Reason: ResolvedRefs - Status: True - Type: ResolvedRefs - Controller Name: gateway.nginx.org/nginx-gateway-controller - Parent Ref: - Group: gateway.networking.k8s.io - Kind: Gateway - Name: cafe - Namespace: default - ``` - - Check for any error messages in the conditions. - -- Check the generated nginx config: - - ```shell - kubectl exec -it -n nginx-gateway -c nginx -- nginx -T - ``` - - The config should contain a server block with the server name "cafe.example.com" that listens on port 80. This server block should have a single location `/` that proxy passes to the coffee upstream: - - ```nginx configuration - server { - listen 80; - - server_name cafe.example.com; - - location / { - ... - proxy_pass http://default_coffee_80$request_uri; # the upstream is named default_coffee_80 - ... - } - } - ``` - - There should also be an upstream block with a name that matches the upstream in the **proxy_pass** directive. This upstream block should contain the pod IPs of the **coffee** pods: - - ```nginx configuration - upstream default_coffee_80 { - ... - server 10.12.0.18:8080; # these should be the pod IPs of the coffee pods - server 10.12.0.19:8080; - ... - } - ``` - -{{< note >}} The entire configuration is not shown because it is subject to change. Ellipses indicate that there's configuration not shown. {{< /note >}} - -If your issue persists, [contact us](https://github.com/nginx/nginx-gateway-fabric#contacts). - ---- - -## See also - -To learn more about the Gateway API and the resources we created in this guide, check out the following resources: - -- [Gateway API Overview](https://gateway-api.sigs.k8s.io/concepts/api-overview/) -- [Deploying a simple Gateway](https://gateway-api.sigs.k8s.io/guides/simple-gateway/) -- [HTTP Routing](https://gateway-api.sigs.k8s.io/guides/http-routing/) diff --git a/site/content/how-to/traffic-management/snippets.md b/site/content/how-to/traffic-management/snippets.md deleted file mode 100644 index 631efc6038..0000000000 --- a/site/content/how-to/traffic-management/snippets.md +++ /dev/null @@ -1,473 +0,0 @@ ---- -title: "Use the SnippetsFilter API" -weight: 800 -toc: true -docs: "DOCS-000" ---- - -This topic introduces Snippets, how to implement them using the `SnippetsFilter` API, and provides an example of how to use `SnippetsFilter` for rate limiting. - ---- - -## Overview - -Snippets allow users to insert NGINX configuration into different contexts of the -NGINX configurations that NGINX Gateway Fabric generates. - -Snippets should only be used by advanced NGINX users who need more control over the generated NGINX configuration, -and only in cases where Gateway API resources or NGINX extension policies don't apply. - -Users can configure Snippets through the `SnippetsFilter` API. `SnippetsFilter` can be an [HTTPRouteFilter](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.HTTPRouteFilter) or [GRPCRouteFilter](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.GRPCRouteFilter), -that can be defined in an HTTPRoute/GRPCRoute rule and is intended to modify NGINX configuration specifically for that Route rule. `SnippetsFilter` is an `extensionRef` type filter. - ---- - -## Disadvantages of Snippets - -{{< warning >}} We recommend managing NGINX configuration through Gateway API resources, [first-class policies]({{< relref "overview/custom-policies.md" >}}), and other existing [NGINX extensions]({{< relref "data-plane-configuration.md" >}}) -before using Snippets. {{< /warning >}} - -Snippets are configured using the `SnippetsFilter` API, but are disabled by default due to their complexity and security implications. - -Snippets have the following disadvantages: - -- _Complexity_. Snippets require you to: - - Understand NGINX configuration primitives to implement correct NGINX configuration. - - Understand how NGINX Gateway Fabric generates NGINX configuration so that a Snippet doesn’t interfere with the other features in the configuration. -- _Decreased robustness_. An incorrect Snippet can invalidate NGINX configuration, causing reload failures. Until the snippet is fixed, it will prevent any new configuration updates, including updates for the other Gateway resources. -- _Security implications_. Snippets give access to NGINX configuration primitives, which are not validated by NGINX Gateway Fabric. For example, a Snippet can configure NGINX to serve the TLS certificates and keys used for TLS termination for Gateway resources. - -{{< note >}} If the NGINX configuration includes an invalid Snippet, NGINX will continue to operate with the last valid configuration. No new configuration will be applied until the invalid Snippet is fixed. {{< /note >}} - ---- - -## Best Practices when using SnippetsFilters - -There are endless ways to use `SnippetsFilters` to modify NGINX configuration, and thus there are many ways to generate invalid or undesired NGINX configuration. -We have outlined a few best practices to keep in mind when using `SnippetsFilters` to keep NGINX Gateway Fabric functioning correctly: - -1. Using the [Roles and Personas](https://gateway-api.sigs.k8s.io/concepts/roles-and-personas/) defined in the Gateway API, `SnippetsFilter` access - should be limited to Cluster operators. Application developers should not be able to create, modify, or delete `SnippetsFilters` as they affect other applications. - `SnippetsFilter` creates a natural split of responsibilities between the Cluster operator and the Application developer: the Cluster operator creates a `SnippetsFilter`; the Application developer references the `SnippetsFilter` in an HTTPRoute/GRPCRoute to enable it. -2. In a `SnippetsFilter`, only one Snippet per NGINX context is allowed, however multiple `SnippetsFilters` can be referenced in the same routing rule. As such, `SnippetsFilters` should not conflict with each other. If `SnippetsFilters` do conflict, they should not be referenced on the same routing rule. -3. `SnippetsFilters` that define Snippets targeting NGINX contexts `main`, `http`, or `http.server`, can potentially affect more than the routing rule they are referenced by. Proceed with caution and verify the behavior of the NGINX configuration before creating those `SnippetsFilters` in a production scenario. - ---- - -## Setup - -- To enable Snippets, [install]({{< relref "/installation/" >}}) NGINX Gateway Fabric with these modifications: - - Using Helm: set the `nginxGateway.snippetsFilters.enable=true` Helm value. - - Using Kubernetes manifests: set the `--snippets-filters` flag in the nginx-gateway container argument, add `snippetsfilters` to the RBAC - rules with verbs `list` and `watch`, and add `snippetsfilters/status` to the RBAC rules with verb `update`. See this [example manifest](https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/main/deploy/snippets-filters/deploy.yaml) for clarification. - -- Save the public IP address and port of NGINX Gateway Fabric into shell variables: - - ```text - GW_IP= - GW_PORT= - ``` - - {{< note >}} In a production environment, you should have a DNS record for the external IP address that is exposed, and it should refer to the hostname that the gateway will forward for. {{< /note >}} - -- Create the coffee and tea example applications: - - ```yaml - kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.0/examples/snippets-filter/app.yaml - ``` - -- Create a Gateway: - - ```yaml - kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.0/examples/snippets-filter/gateway.yaml - ``` - -- Create HTTPRoutes for the coffee and tea applications: - - ```yaml - kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.0/examples/snippets-filter/httproutes.yaml - ``` - -- Test the configuration: - - You can send traffic to the coffee and tea applications using the external IP address and port for NGINX Gateway Fabric. - - Send a request to coffee: - - ```shell - curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/coffee - ``` - - This request should receive a response from the coffee Pod: - - ```text - Server address: 10.244.0.7:8080 - Server name: coffee-76c7c85bbd-cf8nz - ``` - - Send a request to tea: - - ```shell - curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/tea - ``` - - This request should receive a response from the tea Pod: - - ```text - Server address: 10.244.0.6:8080 - Server name: tea-76c7c85bbd-cf8nz - ``` - - Before we enable rate limiting, try sending multiple requests to coffee: - - ```shell - for i in `seq 1 10`; do curl --resolve cafe.example.com:$GW_PORT:$GW_IP http://cafe.example.com:$GW_PORT/coffee; done - ``` - - You should see all successful responses in quick succession as we have not configured any rate limiting rules yet. - ---- - -## Create Rate Limiting SnippetsFilters - -Configure a rate limiting `SnippetsFilter` named `rate-limiting-sf` by adding the following `SnippetsFilter`: - -```yaml -kubectl apply -f - < -``` - -Configure another rate limiting `SnippetsFilter` named `no-delay-rate-limiting-sf` by adding the following `SnippetsFilter`: - -```yaml -kubectl apply -f - < -``` - -## Configure coffee to reference rate-limiting-sf SnippetsFilter - -To use the `rate-limiting-sf` `SnippetsFilter`, update the coffee HTTPRoute to reference it: - -```yaml -kubectl apply -f - < -503 Service Temporarily Unavailable - -

503 Service Temporarily Unavailable

-
nginx
- - -``` - -This is the default error response given by NGINX when the rate limit burst is exceeded, meaning our `SnippetsFilter` -correctly applied our rate limiting NGINX configuration changes. - ---- - -## Conclusion - -You've successfully used Snippets with the `SnippetsFilter` resource to configure two distinct rate limiting rules to different backend applications. - -In this example guide, the Cluster Operator would have played the role in creating and applying the `SnippetsFilter` resources shown in [Create Rate Limiting SnippetsFilters](#create-rate-limiting-snippetsfilters) -while the Application Developers for coffee and tea would have played the role in modifying their application to reference whichever `SnippetsFilter` they want shown in -[Configure coffee to reference rate-limiting-sf SnippetsFilter](#configure-coffee-to-reference-rate-limiting-sf-snippetsfilter) and [Configure tea to reference no-delay-rate-limiting-sf SnippetsFilter](#configure-tea-to-reference-no-delay-rate-limiting-sf-snippetsfilter). -This follows our recommended Role and Persona separation described in the [Best Practices when using SnippetsFilters](#best-practices-when-using-snippetsfilters). - -For an alternative method of modifying the NGINX configuration NGINX Gateway Fabric generates through Gateway API resources, check out -our supported [first-class policies]({{< relref "overview/custom-policies.md" >}}) which don't carry many of the aforementioned disadvantages of Snippets. - ---- - -## Troubleshooting - -If a `SnippetsFilter` is defined in a Route and contains a Snippet which includes an invalid NGINX configuration, NGINX will continue to operate -with the last valid configuration and an event with the error will be outputted. No new configuration will be applied until the invalid Snippet is fixed. - -An example of an error from the NGINX Gateway Fabric `nginx-gateway` container logs: - -```text -{"level":"error","ts":"2024-10-29T22:19:41Z","logger":"eventLoop.eventHandler","msg":"Failed to update NGINX configuration","batchID":156,"error":"failed to reload NGINX: reload unsuccessful: no new NGINX worker processes started for config version 141. Please check the NGINX container logs for possible configuration issues: context deadline exceeded","stacktrace":"github.com/nginx/nginx-gateway-fabric/internal/mode/static.(*eventHandlerImpl).HandleEventBatch\n\tgithub.com/nginx/nginx-gateway-fabric/internal/mode/static/handler.go:219\ngithub.com/nginx/nginx-gateway-fabric/internal/framework/events.(*EventLoop).Start.func1.1\n\tgithub.com/nginx/nginx-gateway-fabric/internal/framework/events/loop.go:74"} -``` - -An example of an error from the NGINX Gateway Fabric `nginx` container logs: - -```text -2024/10/29 22:18:41 [emerg] 40#40: invalid number of arguments in "limit_req_zone" directive in /etc/nginx/includes/SnippetsFilter_http_default_rate-limiting-sf.conf:1 -``` - -The Route which references the `SnippetsFilter` may also contain information in its conditions describing the error: - -```text - Conditions: - Last Transition Time: 2024-10-29T22:19:41Z - Message: All references are resolved - Observed Generation: 2 - Reason: ResolvedRefs - Status: True - Type: ResolvedRefs - Last Transition Time: 2024-10-29T22:19:41Z - Message: The Gateway is not programmed due to a failure to reload nginx with the configuration. Please see the nginx container logs for any possible configuration issues. NGINX may still be configured for this Route. However, future updates to this resource will not be configured until the Gateway is programmed again - Observed Generation: 2 - Reason: GatewayNotProgrammed - Status: False - Type: Accepted -``` - -If a Route references a `SnippetsFilter` which cannot be resolved, the route will return a 500 HTTP error response on all requests. -The Route conditions will contain information describing the error: - -```text -Conditions: - Last Transition Time: 2024-10-29T22:26:01Z - Message: The route is accepted - Observed Generation: 2 - Reason: Accepted - Status: True - Type: Accepted - Last Transition Time: 2024-10-29T22:26:01Z - Message: spec.rules[0].filters[0].extensionRef: Not found: v1.LocalObjectReference{Group:"gateway.nginx.org", Kind:"SnippetsFilter", Name:"rate-limiting-sf"} - Observed Generation: 2 - Reason: InvalidFilter - Status: False - Type: ResolvedRefs -``` - -{{< note >}} If you run into situations where an NGINX directive fails to be applied and the troubleshooting information here isn't sufficient, please create an issue in the -[NGINX Gateway Fabric Github repository](https://github.com/nginx/nginx-gateway-fabric). {{< /note >}} - ---- - -## See also - -- [API reference]({{< relref "reference/api.md" >}}): all configuration fields for the `SnippetsFilter` API. diff --git a/site/content/how-to/traffic-management/tls-passthrough.md b/site/content/how-to/traffic-management/tls-passthrough.md deleted file mode 100644 index 8ade7ff8bb..0000000000 --- a/site/content/how-to/traffic-management/tls-passthrough.md +++ /dev/null @@ -1,237 +0,0 @@ ---- -title: "TLS Passthrough" -weight: 800 -toc: true -docs: "DOCS-000" ---- - -Learn how to use TLSRoutes to configure TLS Passthrough load-balancing with NGINX Gateway Fabric. - -## Overview - -In this guide, we will show how to configure TLS passthrough for your application, using a [TLSRoute](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1alpha2.TLSRoute). - -## Note on Gateway API Experimental Features - -{{< important >}} TLSRoute is a Gateway API resource from the experimental release channel. {{< /important >}} - -{{}} - -## Before you begin - -- [Install]({{< relref "installation/" >}}) NGINX Gateway Fabric with experimental features enabled. -- Save the public IP address and port of NGINX Gateway Fabric into shell variables: - - ```text - GW_IP=XXX.YYY.ZZZ.III - GW_TLS_PORT= - ``` - -{{< note >}}In a production environment, you should have a DNS record for the external IP address that is exposed, and it should refer to the hostname that the Gateway will forward for.{{< /note >}} - -## Set up - -Create the `secure-app` application by copying and pasting the following block into your terminal: - -```yaml -kubectl apply -f - < 8443/TCP 12s -``` - -Create a Gateway. This will create a TLS listener with the hostname `*.example.com` and passthrough TLS mode. Copy and paste this into your terminal. - -```yaml -kubectl apply -f - <}}It is possible to add an HTTPS listener on the same port that terminates TLS connections so long as the hostname does not overlap with the TLS listener hostname.{{< /note >}} - -Create a TLSRoute that attaches to the Gateway and routes requests to `app.example.com` to the `secure-app` Service: - -```yaml -kubectl apply -f - <}}To route to a Service in a Namespace different from the TLSRoute Namespace, create a [ReferenceGrant](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1beta1.ReferenceGrant) to permit the cross-namespace reference. {{< /note >}} - -## Send traffic - -Using the external IP address and port for NGINX Gateway Fabric, send traffic to the `secure-app` application. - -{{< note >}}If you have a DNS record allocated for `app.example.com`, you can send the request directly to that hostname, without needing to resolve.{{< /note >}} - -Send a request to the `secure-app` Service on the TLS port with the `--insecure` flag. The `--insecure` flag is required because the `secure-app` is using self-signed certificates. - -```shell -curl --resolve app.example.com:$GW_TLS_PORT:$GW_IP https://app.example.com:$GW_TLS_PORT --insecure -v -``` - -```text -Added app.example.com:8443:127.0.0.1 to DNS cache -* Hostname app.example.com was found in DNS cache -* Trying 127.0.0.1:8443... -* Connected to app.example.com (127.0.0.1) port 8443 -* ALPN: curl offers h2,http/1.1 -* (304) (OUT), TLS handshake, Client hello (1): -* (304) (IN), TLS handshake, Server hello (2): -* (304) (IN), TLS handshake, Unknown (8): -* (304) (IN), TLS handshake, Certificate (11): -* (304) (IN), TLS handshake, CERT verify (15): -* (304) (IN), TLS handshake, Finished (20): -* (304) (OUT), TLS handshake, Finished (20): -* SSL connection using TLSv1.3 / AEAD-AES256-GCM-SHA384 / [blank] / UNDEF -* ALPN: server accepted http/1.1 -* Server certificate: -* subject: C=US; ST=CA; L=San Francisco; CN=app.example.com -* start date: Mar 23 23:20:43 2020 GMT -* expire date: Mar 23 23:20:43 2023 GMT -* issuer: C=US; ST=CA; L=San Francisco; CN=app.example.com -* SSL certificate verify result: self signed certificate (18), continuing anyway. -* using HTTP/1.x -> GET / HTTP/1.1 -> Host: app.example.com:8443 -> User-Agent: curl/8.6.0 -> Accept: */* -> -< HTTP/1.1 200 OK -< Server: nginx/1.27.0 -< Date: Wed, 14 Aug 2024 20:41:21 GMT -< Content-Type: text/plain -< Content-Length: 43 -< Connection: keep-alive -< -hello from pod secure-app-575785644-kzqf6 -``` - -Note that the server certificate used to terminate the TLS connection has the subject common name of `app.example.com`. This is the server certificate that the `secure-app` is configured with and shows that the TLS connection was terminated by the `secure-app`, not NGINX Gateway Fabric. diff --git a/site/content/how-to/traffic-management/upgrade-apps-without-downtime.md b/site/content/how-to/traffic-management/upgrade-apps-without-downtime.md deleted file mode 100644 index 7d802ceb3d..0000000000 --- a/site/content/how-to/traffic-management/upgrade-apps-without-downtime.md +++ /dev/null @@ -1,140 +0,0 @@ ---- -title: "Upgrade applications without downtime" -toc: true -weight: 300 -type: how-to -product: NGF -docs: "DOCS-1420" ---- - -Learn how to use NGINX Gateway Fabric to upgrade applications without downtime. - ---- - -## Overview - -{{< note >}} See the [Architecture document]({{< relref "/overview/gateway-architecture.md" >}}) to learn more about NGINX Gateway Fabric architecture.{{< /note >}} - -NGINX Gateway Fabric allows upgrading applications without downtime. To understand the upgrade methods, you need to be familiar with 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 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. - -This process is further explained in the [NGINX configuration documentation](https://nginx.org/en/docs/control.html?#reconfiguration). - ---- - -### Upstream server updates - -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 Gateway Fabric detects changes to endpoints by watching their corresponding [EndpointSlices](https://kubernetes.io/docs/concepts/services-networking/endpoint-slices/). - -In an NGINX configuration, a service is represented as an [upstream](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#upstream), and an endpoint as an [upstream server](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#server). - -Adding and removing endpoints are two of the most common cases: - -- If an endpoint is added, NGINX Gateway Fabric adds an upstream server to NGINX that corresponds to the endpoint, then reloads NGINX. Next, NGINX will start proxying traffic to that endpoint. -- If an endpoint is removed, NGINX Gateway Fabric removes the corresponding upstream server from NGINX. After a reload, NGINX will stop proxying traffic to that server. However, it will finish proxying any pending requests to that server before switching to another endpoint. - -As long as you have more than one endpoint ready, clients won't experience downtime during upgrades. - -{{< note >}}It is good practice to configure a [Readiness probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/) in the deployment so that a pod can report when it is ready to receive traffic. Note that NGINX Gateway Fabric will not add any endpoint to NGINX that is not ready.{{< /note >}} - ---- - -## Prerequisites - -- You have deployed your application as a [deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/) -- The pods of the deployment belong to a [service](https://kubernetes.io/docs/concepts/services-networking/service/) so that Kubernetes creates an [endpoint](https://kubernetes.io/docs/reference/kubernetes-api/service-resources/endpoints-v1/) for each pod. -- You have exposed the application to the clients via an [HTTPRoute](https://gateway-api.sigs.k8s.io/api-types/httproute/) resource that references that service. - -For example, an application can be exposed using a routing rule like below: - -```yaml -- matches: - - path: - type: PathPrefix - value: / - backendRefs: - - name: my-app - port: 80 -``` - -{{< note >}}See the [Cafe example](https://github.com/nginx/nginx-gateway-fabric/tree/v1.6.0/examples/cafe-example) for a basic example.{{< /note >}} - -The upgrade methods in the next sections cover: - -- Rolling deployment upgrades -- Blue-green deployments -- Canary releases - ---- - -## Rolling deployment upgrade - -To start a [rolling deployment upgrade](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#rolling-update-deployment), you update the deployment to use the new version tag of the application. As a result, Kubernetes terminates the pods with the old version and create new ones. By default, Kubernetes also ensures that some number of pods always stay available during the upgrade. - -This upgrade will add new upstream servers to NGINX and remove the old ones. As long as the number of pods (ready endpoints) during an upgrade does not reach zero, NGINX will be able to proxy traffic, and therefore prevent any downtime. - -This method does not require you to update the **HTTPRoute**. - ---- - -## Blue-green deployments - -With this method, you deploy a new version of the application (blue version) as a separate deployment, while the old version (green) keeps running and handling client traffic. Next, you switch the traffic from the green version to the blue. If the blue works as expected, you terminate the green. Otherwise, you switch the traffic 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 Gateway Fabric removes the green upstream servers from NGINX and adds 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. - ---- - -## Canary releases - -Canary releases involve gradually introducing a new version of your application to a subset of nodes in a controlled manner, splitting the traffic between the old are new (canary) release. This allows for monitoring and testing the new release's performance and reliability before full deployment, helping to identify and address issues without impacting the entire user base. - -To support canary releases, you can implement an approach with two deployments behind the same service (see [Canary deployment](https://kubernetes.io/docs/concepts/workloads/controllers/deployment/#canary-deployment) 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 Gateway Fabric uses [`random two least_conn`](https://nginx.org/en/docs/http/ngx_http_upstream_module.html#random) load balancing method, which doesn't guarantee an exact split based on the number of pods (80/20 in the given example). - -A more flexible and precise way to implement canary releases is to configure a traffic split in an **HTTPRoute**. In this case, you create a separate deployment for the new version with a separate service. For example, for the rule below, NGINX will proxy 95% of the traffic to the old version endpoints and only 5% to the new ones. - -```yaml -- matches: - - path: - type: PathPrefix - value: / - backendRefs: - - name: my-app-old - port: 80 - weight: 95 - - name: my-app-new - port: 80 - weight: 5 -``` - -{{< note >}}Every request coming from the same client won't necessarily be sent to the same backend. NGINX will independently split each request among the backend references.{{< /note >}} - -By updating the rule you can further increase the share of traffic the new version gets and finally completely switch to the new version: - -```yaml -- matches: - - path: - type: PathPrefix - value: / - backendRefs: - - name: my-app-old - port: 80 - weight: 0 - - name: my-app-new - port: 80 - weight: 1 -``` - -See the [Traffic splitting example](https://github.com/nginx/nginx-gateway-fabric/tree/v1.6.0/examples/traffic-splitting) from our repository. diff --git a/site/content/how-to/traffic-management/upstream-settings.md b/site/content/how-to/traffic-management/upstream-settings.md deleted file mode 100644 index 55ae6b4d36..0000000000 --- a/site/content/how-to/traffic-management/upstream-settings.md +++ /dev/null @@ -1,395 +0,0 @@ ---- -title: "Upstream Settings Policy API" -weight: 900 -toc: true -docs: "DOCS-000" ---- - -Learn how to use the `UpstreamSettingsPolicy` API. - -## Overview - -The `UpstreamSettingsPolicy` API allows Application Developers to configure the behavior of a connection between NGINX and the upstream applications. - -The settings in `UpstreamSettingsPolicy` correspond to the following NGINX directives: - -- [`zone`]() -- [`keepalive`]() -- [`keepalive_requests`]() -- [`keepalive_time`]() -- [`keepalive_timeout`]() - -`UpstreamSettingsPolicy` is a [Direct Policy Attachment](https://gateway-api.sigs.k8s.io/reference/policy-attachment/) that can be applied to one or more services in the same namespace as the policy. -`UpstreamSettingsPolicies` can only be applied to HTTP or gRPC services, in other words, services that are referenced by an HTTPRoute or GRPCRoute. - -See the [custom policies]({{< relref "overview/custom-policies.md" >}}) document for more information on policies. - -This guide will show you how to use the `UpstreamSettingsPolicy` API to configure the upstream zone size and keepalives for your applications. - -For all the possible configuration options for `UpstreamSettingsPolicy`, see the [API reference]({{< relref "reference/api.md" >}}). - ---- - -## Before you begin - -- [Install]({{< relref "/installation/" >}}) NGINX Gateway Fabric. -- Save the public IP address and port of NGINX Gateway Fabric into shell variables: - - ```text - GW_IP=XXX.YYY.ZZZ.III - GW_PORT= - ``` - -- Lookup the name of the NGINX Gateway Fabric pod and save into shell variable: - - ```text - NGF_POD_NAME= - ``` - - {{< note >}}In a production environment, you should have a DNS record for the external IP address that is exposed, and it should refer to the hostname that the gateway will forward for.{{< /note >}} - ---- - -## Setup - -Create the `coffee` and `tea` example applications: - -```yaml -kubectl apply -f - < 80/TCP 23h -service/tea ClusterIP 10.244.0.15 80/TCP 23h - -NAME READY STATUS RESTARTS AGE -pod/coffee-676c9f8944-n9g6n 1/1 Running 0 23h -pod/tea-6fbfdcb95d-cf84d 1/1 Running 0 23h -``` - -Create a Gateway: - -```yaml -kubectl apply -f - < -``` - -Next, verify that the policy has been applied to the `coffee` and `tea` upstreams by inspecting the NGINX configuration: - -```shell -kubectl exec -it -n nginx-gateway $NGF_POD_NAME -c nginx -- nginx -T -``` - -You should see the `zone` directive in the `coffee` and `tea` upstreams both specify the size `1m`: - -```text -upstream default_coffee_80 { - random two least_conn; - zone default_coffee_80 1m; - - server 10.244.0.14:8080; -} - -upstream default_tea_80 { - random two least_conn; - zone default_tea_80 1m; - - server 10.244.0.15:8080; -} -``` - -## Enable keepalive connections - -To enable keepalive connections for the `coffee` service, create the following `UpstreamSettingsPolicy`: - -```yaml -kubectl apply -f - < -``` - -Next, verify that the policy has been applied to the `coffee` upstreams, by inspecting the NGINX configuration: - -```shell -kubectl exec -it -n nginx-gateway $NGF_POD_NAME -c nginx -- nginx -T -``` - -You should see that the `coffee` upstream has the `keepalive` directive set to 32: - -```text -upstream default_coffee_80 { - random two least_conn; - zone default_coffee_80 1m; - - server 10.244.0.14:8080; - keepalive 32; -} -``` - -Notice, that the `tea` upstream does not contain the `keepalive` directive, since the `upstream-keepalives` policy does not target the `tea` service: - -```text -upstream default_tea_80 { - random two least_conn; - zone default_tea_80 1m; - - server 10.244.0.15:8080; -} -``` - ---- - -## Further reading - -- [Custom policies]({{< relref "overview/custom-policies.md" >}}): learn about how NGINX Gateway Fabric custom policies work. -- [API reference]({{< relref "reference/api.md" >}}): all configuration fields for the `UpstreamSettingsPolicy` API. diff --git a/site/content/how-to/traffic-security/_index.md b/site/content/how-to/traffic-security/_index.md deleted file mode 100644 index 0a6ddcf151..0000000000 --- a/site/content/how-to/traffic-security/_index.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "Traffic security" -weight: 200 ---- diff --git a/site/content/how-to/traffic-security/integrating-cert-manager.md b/site/content/how-to/traffic-security/integrating-cert-manager.md deleted file mode 100644 index d374bb577f..0000000000 --- a/site/content/how-to/traffic-security/integrating-cert-manager.md +++ /dev/null @@ -1,311 +0,0 @@ ---- -title: "Secure traffic using Let's Encrypt and cert-manager" -weight: 100 -toc: true -type: how-to -product: NGF -docs: "DOCS-1425" ---- - -Learn how to issue and mange certificates using Let's Encrypt and cert-manager. - -## Overview - -Securing client server communication is a crucial part of modern application architectures. One of the most important steps in this process is implementing HTTPS (HTTP over TLS/SSL) for all communications. This encrypts the data transmitted between the client and server, preventing eavesdropping and tampering. To do this, you need an SSL/TLS certificate from a trusted Certificate Authority (CA). However, issuing and managing certificates can be a complicated manual process. Luckily, there are many services and tools available to simplify and automate certificate issuance and management. - -Follow the steps in this guide to: - -- Configure HTTPS for your application using a [gateway](https://gateway-api.sigs.k8s.io/api-types/gateway/). -- Use [Let’s Encrypt](https://letsencrypt.org) as the Certificate Authority (CA) issuing the TLS certificate. -- Use [cert-manager](https://cert-manager.io) to automate the provisioning and management of the certificate. - ---- - -## Before you begin - -- Administrator access to a Kubernetes cluster. -- [Helm](https://helm.sh) and [kubectl](https://kubernetes.io/docs/tasks/tools/#kubectl) must be installed locally. -- [NGINX Gateway Fabric deployed]({{< relref "/installation/" >}}) in the Kubernetes cluster. -- A DNS-resolvable domain name is required. It must resolve to the public endpoint of the NGINX Gateway Fabric 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. - ---- - -## Secure traffic using Let's Encrypt and cert-manager - -{{cert-manager ACME challenge and certificate management with Gateway API}} - -The diagram above shows a simplified representation of the cert-manager ACME challenge and certificate issuance process using Gateway API. Please note that not all of the kubernetes objects created in this process are represented in this diagram. - -At a high level, the process looks like this: - -1. We deploy cert-manager and create a ClusterIssuer which specifies Let’s Encrypt as our CA and gateway as our ACME HTTP01 challenge solver. -1. We create a gateway resource for our domain (cafe.example.com) and configure cert-manager integration using an annotation. -1. This starts 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, cert-manager creates a temporary HTTPRoute resource which directs the traffic through NGINX Gateway Fabric to verify we control the domain name in the certificate request. -1. 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. -1. We deploy our application and our HTTPRoute which defines our routing rules. The routing rules defined configure NGINX to direct requests to `https://cafe.example.com/coffee` to our coffee-app application, and to use the HTTPS listener defined in our gateway resource. -1. 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. -1. The certificate will be automatically renewed when it is close to expiry, the secret will be updated using the new certificate, and NGINX Gateway Fabric will dynamically update the keypair on the filesystem used by NGINX for HTTPS termination once the secret is updated. - ---- - -## Securing traffic - -### Deploy cert-manager - -The first step is to deploy cert-manager onto the cluster. - -- Add the Helm repository. - - ```shell - helm repo add jetstack https://charts.jetstack.io - helm repo update - ``` - -- Install cert-manager, and enable the GatewayAPI feature gate: - - ```shell - helm install \ - cert-manager jetstack/cert-manager \ - --namespace cert-manager \ - --create-namespace \ - --version v1.12.0 \ - --set installCRDs=true \ - --set "extraArgs={--feature-gates=ExperimentalGatewayAPISupport=true}" - ``` - ---- - -### Create a ClusterIssuer - -Next we need to create a [ClusterIssuer](https://cert-manager.io/docs/concepts/issuer/), a Kubernetes resource that represents the certificate authority (CA) that will generate the signed certificates by honouring certificate signing requests. - -We are using the ACME Issuer type, and Let's Encrypt as the CA server. In order for Let's Encypt to verify that we own the domain a certificate is being requested for, we must complete "challenges". This is to ensure clients are unable to request certificates for domains they do not own. We will configure the issuer to use a HTTP01 challenge, and our gateway resource that we will create in the next step as the solver. To read more about HTTP01 challenges, see the [cert-manager documentation](https://cert-manager.io/docs/configuration/acme/http01/). Use the following YAML definition to create the resource, but please note the `email` field must be updated to your own email address. - -```yaml -apiVersion: cert-manager.io/v1 -kind: ClusterIssuer -metadata: - name: letsencrypt-prod -spec: - acme: - # You must replace this email address with your own. - # Let's Encrypt will use this to contact you about expiring - # certificates, and issues related to your account. - email: my-name@example.com - server: https://acme-v02.api.letsencrypt.org/directory - 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 NGINX Gateway Fabric - solvers: - - http01: - gatewayHTTPRoute: - parentRefs: # This is the name of the Gateway that will be created in the next step - - name: gateway - namespace: default - kind: Gateway -``` - ---- - -### Deploy our Gateway with the cert-manager annotation - -Next we need to deploy our gateway. You can use the YAML manifest below, updating the `spec.listeners[1].hostname` field to the required value for your environment. - -```yaml -apiVersion: gateway.networking.k8s.io/v1 -kind: Gateway -metadata: - name: gateway - annotations: # This is the name of the ClusterIssuer created in the previous step - cert-manager.io/cluster-issuer: letsencrypt-prod -spec: - gatewayClassName: nginx - listeners: - - name: http - port: 80 - protocol: HTTP - - name: https - # Important: The hostname needs to be set to your domain - hostname: "cafe.example.com" - port: 443 - protocol: HTTPS - tls: - mode: Terminate - certificateRefs: - - kind: Secret - name: cafe-secret -``` - -It's worth noting a couple of key details in this manifest: - -- The cert-manager annotation is present in the metadata – this enables the cert-manager integration, and tells cert-manager which ClusterIssuer configuration it should use for the certificates. -- There are two listeners configured, an HTTP listener on port 80, and an HTTPS listener on port 443. - - The HTTP listener on port 80 is required for the HTTP01 ACME challenge to work. This is because as part of the HTTP01 challenge, a temporary HTTPRoute will be created by cert-manager to solve the ACME challenge, and this HTTPRoute requires a listener on port 80. See the [HTTP01 Gateway API solver documentation](https://cert-manager.io/docs/configuration/acme/http01/#configuring-the-http-01-gateway-api-solver) for more information. - - The HTTPS listener on port 443 is the listener we will use in our HTTPRoute in the next step. Cert-manager will create a certificate for this listener block. -- The hostname needs to set to the required value. A new certificate will be issued from the `letsencrypt-prod` ClusterIssuer for the domain, e.g. "cafe.example.com", once the ACME challenge is successful. - -Once the certificate has been issued, cert-manager will create a certificate resource on the cluster and the `cafe-secret` Secret containing the signed keypair in the same Namespace as the gateway. We can verify the secret has been created successfully using `kubectl`. Note it will take a little bit of time for the challenge to complete and the secret to be created: - -```shell -kubectl get secret cafe-secret -``` - -```text -NAME TYPE DATA AGE -cafe-secret kubernetes.io/tls 2 20s -``` - ---- - -### Deploy our application and HTTPRoute - -Now we can create our coffee deployment and service, and configure the routing rules. You can use the following manifest to create the deployment and service: - -```yaml -apiVersion: apps/v1 -kind: Deployment -metadata: - name: coffee -spec: - replicas: 1 - selector: - matchLabels: - app: coffee - template: - metadata: - labels: - app: coffee - spec: - containers: - - name: coffee - image: nginxdemos/nginx-hello:plain-text - ports: - - containerPort: 8080 ---- -apiVersion: v1 -kind: Service -metadata: - name: coffee -spec: - ports: - - port: 80 - targetPort: 8080 - protocol: TCP - name: http - selector: - app: coffee -``` - -Deploy our HTTPRoute to configure our routing rules for the coffee application. Note the `parentRefs` section in the spec refers to the listener configured in the previous step. - -```yaml -apiVersion: gateway.networking.k8s.io/v1 -kind: HTTPRoute -metadata: - name: coffee -spec: - parentRefs: - - name: gateway - sectionName: https - hostnames: # Update the hostname to match what is configured in the Gateway resource - - "cafe.example.com" - rules: - - matches: - - path: - type: PathPrefix - value: /coffee - backendRefs: - - name: coffee - port: 80 -``` - ---- - -## Testing - -To test everything has worked correctly, we can use curl to the navigate to our endpoint, for example, `https://cafe.example.com/coffee`. To verify using curl, we can use the `-v` option to increase verbosity and inspect the presented certificate. - -```shell -curl https://cafe.example.com/coffee -v -``` - -The output will look similar to this: - -```text -* Trying 54.195.47.105:443... -* Connected to cafe.example.com (54.195.47.105) port 443 (#0) -* ALPN: offers h2,http/1.1 -* (304) (OUT), TLS handshake, Client hello (1): -* CAfile: /etc/ssl/cert.pem -* CApath: none -* (304) (IN), TLS handshake, Server hello (2): -* (304) (IN), TLS handshake, Unknown (8): -* (304) (IN), TLS handshake, Certificate (11): -* (304) (IN), TLS handshake, CERT verify (15): -* (304) (IN), TLS handshake, Finished (20): -* (304) (OUT), TLS handshake, Finished (20): -* SSL connection using TLSv1.3 / AEAD-CHACHA20-POLY1305-SHA256 -* ALPN: server accepted http/1.1 -* Server certificate: -* subject: CN=cafe.example.com -* start date: Aug 11 08:22:11 2023 GMT -* expire date: Nov 9 08:22:10 2023 GMT -* subjectAltName: host "cafe.example.com" matched cert's "cafe.example.com" -* issuer: C=US; O=Let's Encrypt; CN=R3 -* SSL certificate verify ok. -* using HTTP/1.1 -> GET /coffee HTTP/1.1 -> Host: cafe.example.com -> User-Agent: curl/7.88.1 -> Accept: */* -> -< HTTP/1.1 200 OK -< Server: nginx/1.25.1 -< Date: Fri, 11 Aug 2023 10:03:21 GMT -< Content-Type: text/plain -< Content-Length: 163 -< Connection: keep-alive -< Expires: Fri, 11 Aug 2023 10:03:20 GMT -< Cache-Control: no-cache -< -Server address: 192.168.78.136:8080 -Server name: coffee-9bf875848-xvkqv -Date: 11/Aug/2023:10:03:21 +0000 -URI: /coffee -Request ID: e64c54a2ac253375ac085d48980f000a -* Connection #0 to host cafe.example.com left intact -``` - ---- - -## Troubleshooting - -- To troubleshoot any issues related to the cert-manager installation or issuer setup, see [the cert-manager troubleshooting guide](https://cert-manager.io/docs/troubleshooting/). -- To troubleshoot the HTTP01 ACME challenge, please see the cert-manager [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 NGINX Gateway Fabric. 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 - kubectl logs -n nginx-gateway -c nginx - <...> - 52.208.162.19 - - [15/Aug/2023:13:18:12 +0000] "GET /.well-known/acme-challenge/bXQn27Lenax2AJKmOOS523T-MWOKeFhL0bvrouNkUc4 HTTP/1.1" 200 87 "-" "cert-manager-challenges/v1.12.0 (linux/amd64) cert-manager/bd192c4f76dd883f9ee908035b894ffb49002384" - 52.208.162.19 - - [15/Aug/2023:13:18:14 +0000] "GET /.well-known/acme-challenge/bXQn27Lenax2AJKmOOS523T-MWOKeFhL0bvrouNkUc4 HTTP/1.1" 200 87 "-" "cert-manager-challenges/v1.12.0 (linux/amd64) cert-manager/bd192c4f76dd883f9ee908035b894ffb49002384" - 52.208.162.19 - - [15/Aug/2023:13:18:16 +0000] "GET /.well-known/acme-challenge/bXQn27Lenax2AJKmOOS523T-MWOKeFhL0bvrouNkUc4 HTTP/1.1" 200 87 "-" "cert-manager-challenges/v1.12.0 (linux/amd64) cert-manager/bd192c4f76dd883f9ee908035b894ffb49002384" - 52.208.162.19 - - [15/Aug/2023:13:18:18 +0000] "GET /.well-known/acme-challenge/bXQn27Lenax2AJKmOOS523T-MWOKeFhL0bvrouNkUc4 HTTP/1.1" 200 87 "-" "cert-manager-challenges/v1.12.0 (linux/amd64) cert-manager/bd192c4f76dd883f9ee908035b894ffb49002384" - 52.208.162.19 - - [15/Aug/2023:13:18:20 +0000] "GET /.well-known/acme-challenge/bXQn27Lenax2AJKmOOS523T-MWOKeFhL0bvrouNkUc4 HTTP/1.1" 200 87 "-" "cert-manager-challenges/v1.12.0 (linux/amd64) cert-manager/bd192c4f76dd883f9ee908035b894ffb49002384" - 3.128.204.81 - - [15/Aug/2023:13:18:22 +0000] "GET /.well-known/acme-challenge/bXQn27Lenax2AJKmOOS523T-MWOKeFhL0bvrouNkUc4 HTTP/1.1" 200 87 "-" "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)" - 23.178.112.204 - - [15/Aug/2023:13:18:22 +0000] "GET /.well-known/acme-challenge/bXQn27Lenax2AJKmOOS523T-MWOKeFhL0bvrouNkUc4 HTTP/1.1" 200 87 "-" "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)" - 35.166.192.222 - - [15/Aug/2023:13:18:22 +0000] "GET /.well-known/acme-challenge/bXQn27Lenax2AJKmOOS523T-MWOKeFhL0bvrouNkUc4 HTTP/1.1" 200 87 "-" "Mozilla/5.0 (compatible; Let's Encrypt validation server; +https://www.letsencrypt.org)" - <...> - ``` - ---- - -## See also - -- [Gateway docs](https://gateway-api.sigs.k8s.io) -- [Cert-manager gateway usage](https://cert-manager.io/docs/usage/gateway/) -- [Cert-manager ACME](https://cert-manager.io/docs/configuration/acme/) -- [Let’s Encrypt](https://letsencrypt.org) -- [NGINX HTTPS docs](https://docs.nginx.com/nginx/admin-guide/security-controls/terminating-ssl-http/) diff --git a/site/content/how-to/traffic-security/securing-backend-traffic.md b/site/content/how-to/traffic-security/securing-backend-traffic.md deleted file mode 100644 index 8265b0a8f2..0000000000 --- a/site/content/how-to/traffic-security/securing-backend-traffic.md +++ /dev/null @@ -1,342 +0,0 @@ ---- -title: "Securing backend traffic" -weight: 200 -toc: true -type: how-to -product: NGF -docs: "DOCS-1423" ---- - -Learn how to encrypt HTTP traffic between NGINX Gateway Fabric and your backend pods. - ---- - -## Overview - -In this guide, we will show how to specify the TLS configuration of the connection from the Gateway to a backend pod/s via the Service API object using a [BackendTLSPolicy](https://gateway-api.sigs.k8s.io/api-types/backendtlspolicy/). This covers the use-case where the service or backend owner is doing their own TLS and NGINX Gateway Fabric needs to know how to connect to this backend pod that has its own certificate over HTTPS. - ---- - -## Note on Gateway API Experimental Features - -{{< important >}} BackendTLSPolicy is a Gateway API resource from the experimental release channel. {{< /important >}} - -{{}} - ---- - -## Before you begin - -- [Install]({{< relref "installation/" >}}) NGINX Gateway Fabric with experimental features enabled. -- Save the public IP address and port of NGINX Gateway Fabric into shell variables: - - ```text - GW_IP=XXX.YYY.ZZZ.III - GW_PORT= - ``` - -{{< note >}}In a production environment, you should have a DNS record for the external IP address that is exposed, and it should refer to the hostname that the gateway will forward for.{{< /note >}} - ---- - -## Set up - -Create the **secure-app** application in Kubernetes by copying and pasting the following block into your terminal: - -```yaml -kubectl apply -f - < 8443/TCP 9s -``` - ---- - -## Configure routing rules - -First, we will create the Gateway resource with an HTTP listener: - -```yaml -kubectl apply -f - <}}If you have a DNS record allocated for `secure-app.example.com`, you can send the request directly to that hostname, without needing to resolve.{{< /note >}} - -```shell -curl --resolve secure-app.example.com:$GW_PORT:$GW_IP http://secure-app.example.com:$GW_PORT/ -``` - -```text - -400 The plain HTTP request was sent to HTTPS port - -

400 Bad Request

-
The plain HTTP request was sent to HTTPS port
-
nginx/1.25.3
- - -``` - -We can see we a status 400 Bad Request message from NGINX. - ---- - -## Create the backend TLS configuration - -To configure the backend TLS terminationm, first we will create the ConfigMap that holds the `ca.crt` entry for verifying our self-signed certificates: - -```yaml -kubectl apply -f - < -Annotations: -API Version: gateway.networking.k8s.io/v1alpha3 -Kind: BackendTLSPolicy -Metadata: - Creation Timestamp: 2024-05-15T12:02:38Z - Generation: 1 - Resource Version: 19380 - UID: b3983a6e-92f1-4a98-b2af-64b317d74528 -Spec: - Target Refs: - Group: - Kind: Service - Name: secure-app - Validation: - Ca Certificate Refs: - Group: - Kind: ConfigMap - Name: backend-cert - Hostname: secure-app.example.com -Status: - Ancestors: - Ancestor Ref: - Group: gateway.networking.k8s.io - Kind: Gateway - Name: gateway - Namespace: default - Conditions: - Last Transition Time: 2024-05-15T12:02:38Z - Message: BackendTLSPolicy is accepted by the Gateway - Reason: Accepted - Status: True - Type: Accepted - Controller Name: gateway.nginx.org/nginx-gateway-controller -Events: -``` - ---- - -## Send traffic with backend TLS configuration - -Now let's try sending traffic again: - -```shell -curl --resolve secure-app.example.com:$GW_PORT:$GW_IP http://secure-app.example.com:$GW_PORT/ -``` - -```text -hello from pod secure-app -``` - ---- - -## See also - -To learn more about configuring backend TLS termination using the Gateway API, see the following resources: - -- [Backend TLS Policy](https://gateway-api.sigs.k8s.io/api-types/backendtlspolicy/) -- [Backend TLS Policy GEP](https://gateway-api.sigs.k8s.io/geps/gep-1897/) diff --git a/site/content/includes/index.md b/site/content/includes/index.md deleted file mode 100644 index ca03031f1e..0000000000 --- a/site/content/includes/index.md +++ /dev/null @@ -1,3 +0,0 @@ ---- -headless: true ---- diff --git a/site/content/includes/installation/delay-pod-termination/delay-pod-termination-overview.md b/site/content/includes/installation/delay-pod-termination/delay-pod-termination-overview.md deleted file mode 100644 index b22a143424..0000000000 --- a/site/content/includes/installation/delay-pod-termination/delay-pod-termination-overview.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -docs: "DOCS-1441" ---- - -To avoid client service interruptions when upgrading NGINX Gateway Fabric, you can configure [`PreStop` hooks](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/) to delay terminating the NGINX Gateway Fabric pod, allowing the pod to complete certain actions before shutting down. This ensures a smooth upgrade without any downtime, also known as a zero downtime upgrade. - -For an in-depth explanation of how Kubernetes handles pod termination, see the [Termination of Pods](https://kubernetes.io/docs/concepts/workloads/pods/pod-lifecycle/#pod-termination) topic on their official website. - -{{}}Keep in mind that NGINX won't shut down while WebSocket or other long-lived connections are open. NGINX will only stop when these connections are closed by the client or the backend. If these connections stay open during an upgrade, Kubernetes might need to shut down NGINX forcefully. This sudden shutdown could interrupt service for clients.{{}} diff --git a/site/content/includes/installation/delay-pod-termination/termination-grace-period.md b/site/content/includes/installation/delay-pod-termination/termination-grace-period.md deleted file mode 100644 index 8b2b3f473b..0000000000 --- a/site/content/includes/installation/delay-pod-termination/termination-grace-period.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -docs: "DOCS-1440" ---- - -Set `terminationGracePeriodSeconds` to a value that is equal to or greater than the `sleep` duration specified in the `preStop` hook (default is `30`). This setting prevents Kubernetes from terminating the pod before before the `preStop` hook has completed running. - - ```yaml - terminationGracePeriodSeconds: 50 - ``` diff --git a/site/content/includes/installation/expose-nginx-gateway-fabric.md b/site/content/includes/installation/expose-nginx-gateway-fabric.md deleted file mode 100644 index bfa704c3ef..0000000000 --- a/site/content/includes/installation/expose-nginx-gateway-fabric.md +++ /dev/null @@ -1,53 +0,0 @@ ---- -title: "Expose NGINX Gateway Fabric" -weight: 300 -docs: "DOCS-1427" ---- - -There are two options for accessing NGINX Gateway Fabric depending on the type of LoadBalancer service you chose during installation: - -- If the LoadBalancer type is `NodePort`, Kubernetes will randomly allocate two ports on every node of the cluster. - To access the NGINX Gateway Fabric, use an IP address of any node of the cluster along with the two allocated ports. - - {{}} Read more about the type NodePort in the [Kubernetes documentation](https://kubernetes.io/docs/concepts/services-networking/service/#type-nodeport). {{}} - -- If the LoadBalancer type is `LoadBalancer`: - - - For GCP or Azure, Kubernetes will allocate a cloud load balancer for load balancing the NGINX Gateway Fabric pods. - Use the public IP of the load balancer to access NGINX Gateway Fabric. - - For AWS, Kubernetes will allocate a Network Load Balancer (NLB) in TCP mode with the PROXY protocol enabled to pass - the client's information (the IP address and the port). - - Use the public IP of the load balancer to access NGINX Gateway Fabric. To get the public IP which is reported in the `EXTERNAL-IP` column: - - - For GCP or Azure, run: - - ```shell - kubectl get svc nginx-gateway -n nginx-gateway - ``` - - - In AWS, the NLB (Network Load Balancer) DNS (directory name system) name will be reported by Kubernetes instead of a public IP. To get the DNS name, run: - - ```shell - kubectl get svc nginx-gateway -n nginx-gateway - ``` - - {{< note >}} We recommend using the NLB DNS whenever possible, but for testing purposes, you can resolve the DNS name to get the IP address of the load balancer: - - ```shell - nslookup - ``` - - {{< /note >}} - - {{}} Learn more about type LoadBalancer in the [Kubernetes documentation](https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer). - - For AWS, additional options regarding an allocated load balancer are available, such as its type and SSL - termination. Read the [Kubernetes documentation](https://kubernetes.io/docs/concepts/services-networking/service/#type-loadbalancer) to learn more. - {{}} - -{{}}By default Helm and manifests configure NGINX Gateway Fabric on ports `80` and `443`, affecting any gateway [listeners](https://gateway-api.sigs.k8s.io/references/spec/#gateway.networking.k8s.io/v1.Listener) on these ports. To use different ports, update the configuration. NGINX Gateway Fabric requires a configured [gateway](https://gateway-api.sigs.k8s.io/api-types/gateway/#gateway) resource with a valid listener to listen on any ports.{{}} - -NGINX Gateway Fabric uses the created service to update the **Addresses** field in the **Gateway Status** resource. Using a **LoadBalancer** service sets this field to the IP address and/or hostname of that service. Without a service, the pod IP address is used. - -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]({{< relref "reference/cli-help.md#static-mode">}}). diff --git a/site/content/includes/installation/helm/pulling-the-chart.md b/site/content/includes/installation/helm/pulling-the-chart.md deleted file mode 100644 index 0d0a5071ab..0000000000 --- a/site/content/includes/installation/helm/pulling-the-chart.md +++ /dev/null @@ -1,12 +0,0 @@ ---- -docs: "DOCS-1439" ---- - -Pull the latest stable release of the NGINX Gateway Fabric chart: - - ```shell - helm pull oci://ghcr.io/nginx/charts/nginx-gateway-fabric --untar - cd nginx-gateway-fabric - ``` - - If you want the latest version from the **main** branch, add `--version 0.0.0-edge` to your pull command. diff --git a/site/content/includes/installation/install-gateway-api-experimental-features.md b/site/content/includes/installation/install-gateway-api-experimental-features.md deleted file mode 100644 index 6d40ecb564..0000000000 --- a/site/content/includes/installation/install-gateway-api-experimental-features.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -title: "Install NGINX Gateway Fabric with experimental features" -docs: "DOCS-000" ---- - -To use Gateway API experimental resources, the Gateway API resources from the experimental channel must be installed before deploying NGINX Gateway Fabric. Additionally, NGINX Gateway Fabric must have experimental features enabled. - -{{< caution >}}As noted in the [Gateway API documentation](https://gateway-api.sigs.k8s.io/guides/#install-experimental-channel), future releases of the Gateway API can include breaking changes to experimental resources and fields. {{}} - -To install the Gateway API resources from the experimental channel, run the following: - -```shell -kubectl kustomize "https://github.com/nginx/nginx-gateway-fabric/config/crd/gateway-api/experimental?ref=v1.6.0" | kubectl apply -f - -``` - -{{< note >}}If you plan to use the `edge` version of NGINX Gateway Fabric, you can replace the version in `ref` with `main`, for example `ref=main`. {{}} - -To enable experimental features on NGINX Gateway Fabric: - -Using Helm: Set `nginxGateway.gwAPIExperimentalFeatures.enable` to true. An example can be found -in the [Installation with Helm]({{< relref "installation/installing-ngf/helm.md#custom-installation-options" >}}) guide. - -Using Kubernetes manifests: Add the `--gateway-api-experimental-features` command-line flag to the deployment manifest args. -An example can be found in the [Installation with Kubernetes manifests]({{< relref "installation/installing-ngf/manifests.md#3-deploy-nginx-gateway-fabric" >}}) guide. diff --git a/site/content/includes/installation/install-gateway-api-resources.md b/site/content/includes/installation/install-gateway-api-resources.md deleted file mode 100644 index 0673fabd68..0000000000 --- a/site/content/includes/installation/install-gateway-api-resources.md +++ /dev/null @@ -1,24 +0,0 @@ ---- -docs: "DOCS-1438" ---- - -{{< note >}} The [Gateway API resources](https://github.com/kubernetes-sigs/gateway-api) from the standard channel must be installed 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](https://github.com/nginx/nginx-gateway-fabric/blob/v1.6.0/README.md#technical-specifications). {{}} - -To install the Gateway API resources, run the following: - -```shell -kubectl kustomize "https://github.com/nginx/nginx-gateway-fabric/config/crd/gateway-api/standard?ref=v1.6.0" | kubectl apply -f - -``` - -{{< note >}}If you plan to use the `edge` version of NGINX Gateway Fabric, you can replace the version in `ref` with `main`, for example `ref=main`.{{}} - -Alternatively, you can install the Gateway API resources from the experimental channel. -Installing Gateway API resources from the experimental channel includes everything in the standard release channel plus additional experimental resources and fields. -NGINX Gateway Fabric currently supports a subset of the additional features provided by the experimental channel. -To install from the experimental channel, run the following: - -```shell -kubectl kustomize "https://github.com/nginx/nginx-gateway-fabric/config/crd/gateway-api/experimental?ref=v1.6.0" | kubectl apply -f - -``` - -{{< note >}} To learn more about what Gateway API resources NGINX Gateway Fabric currently supports, visit our [Gateway API Compatibility]({{< relref "overview/gateway-api-compatibility.md" >}}) document. {{}} diff --git a/site/content/includes/installation/jwt-password-note.md b/site/content/includes/installation/jwt-password-note.md deleted file mode 100644 index 4cfeec8b92..0000000000 --- a/site/content/includes/installation/jwt-password-note.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -docs: "DOCS-000" ---- - -{{< note >}} For security, follow these practices with JSON Web Tokens (JWTs), passwords, and shell history: - -1. **JWTs:** JWTs are sensitive information. Store them securely. Delete them after use to prevent unauthorized access. - -1. **Shell history:** Commands that include JWTs or passwords are recorded in the history of your shell, in plain text. Clear your shell history after running such commands. For example, if you use bash, you can delete commands in your `~/.bash_history` file. Alternatively, you can run the `history -c` command to erase your shell history. - -Follow these practices to help ensure the security of your system and data. {{< /note >}} diff --git a/site/content/includes/installation/nginx-plus/docker-registry-secret.md b/site/content/includes/installation/nginx-plus/docker-registry-secret.md deleted file mode 100644 index b909f8f22e..0000000000 --- a/site/content/includes/installation/nginx-plus/docker-registry-secret.md +++ /dev/null @@ -1,19 +0,0 @@ ---- -docs: "DOCS-000" ---- - -{{< note >}} If you would rather pull the NGINX Plus image and push to a private registry, you can skip this specific step and instead follow [this step]({{}}). {{< /note >}} - -If the `nginx-gateway` namespace does not yet exist, create it: - -```shell -kubectl create namespace nginx-gateway -``` - -Create a Kubernetes `docker-registry` secret type using the contents of the JWT as the username and `none` for password (as the password is not used). The name of the docker server is `private-registry.nginx.com`. - -```shell -kubectl create secret docker-registry nginx-plus-registry-secret --docker-server=private-registry.nginx.com --docker-username= --docker-password=none -n nginx-gateway -``` - -It is important that the `--docker-username=` contains the contents of the token and is not pointing to the token itself. When you copy the contents of the JWT, ensure there are no additional characters such as extra whitespaces. This can invalidate the token, causing 401 errors when trying to authenticate to the registry. diff --git a/site/content/includes/installation/nginx-plus/download-jwt.md b/site/content/includes/installation/nginx-plus/download-jwt.md deleted file mode 100644 index d89c65a43b..0000000000 --- a/site/content/includes/installation/nginx-plus/download-jwt.md +++ /dev/null @@ -1,10 +0,0 @@ ---- -docs: "DOCS-000" ---- - -1. Log in to [MyF5](https://my.f5.com/manage/s/). -2. Go to **My Products & Plans > Subscriptions** to see your active subscriptions. -3. Find your NGINX products or services subscription, and select the **Subscription ID** for details. -4. Download the **JSON Web Token (JWT)** from the subscription page. - -{{< note >}} The Connectivity Stack for Kubernetes JWT does not work with NGINX Plus reporting. A regular NGINX Plus instance JWT must be used. {{< /note >}} diff --git a/site/content/includes/installation/nginx-plus/nginx-plus-secret.md b/site/content/includes/installation/nginx-plus/nginx-plus-secret.md deleted file mode 100644 index 1a5beb4746..0000000000 --- a/site/content/includes/installation/nginx-plus/nginx-plus-secret.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -docs: "DOCS-000" ---- - -Place the JWT in a file called `license.jwt`. Create a Kubernetes Secret using the contents of the JWT file. - -```shell -kubectl create secret generic nplus-license --from-file license.jwt -n nginx-gateway -``` - -You can now delete the `license.jwt` file. - -If you need to update the JWT at any time, update the `license.jwt` field in the Secret using `kubectl edit` and apply the changes. diff --git a/site/content/includes/installation/uninstall-gateway-api-resources.md b/site/content/includes/installation/uninstall-gateway-api-resources.md deleted file mode 100644 index 180b3601fb..0000000000 --- a/site/content/includes/installation/uninstall-gateway-api-resources.md +++ /dev/null @@ -1,17 +0,0 @@ ---- -docs: "DOCS-1436" ---- - -{{}}This will remove all corresponding custom resources in your entire cluster, across all namespaces. Double-check to make sure you don't have any custom resources you need to keep, and confirm that there are no other Gateway API implementations active in your cluster.{{}} - -To uninstall the Gateway API resources, run the following: - -```shell -kubectl kustomize "https://github.com/nginx/nginx-gateway-fabric/config/crd/gateway-api/standard?ref=v1.6.0" | kubectl delete -f - -``` - -Alternatively, if you installed the Gateway APIs from the experimental channel, run the following: - -```shell -kubectl kustomize "https://github.com/nginx/nginx-gateway-fabric/config/crd/gateway-api/experimental?ref=v1.6.0" | kubectl delete -f - -``` diff --git a/site/content/installation/_index.md b/site/content/installation/_index.md deleted file mode 100644 index 0761ac2cd2..0000000000 --- a/site/content/installation/_index.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "Installation" -weight: 300 ---- diff --git a/site/content/installation/building-the-images.md b/site/content/installation/building-the-images.md deleted file mode 100644 index 070cb12391..0000000000 --- a/site/content/installation/building-the-images.md +++ /dev/null @@ -1,81 +0,0 @@ ---- -title: "Build NGINX Gateway Fabric and NGINX images" -weight: 500 -toc: true -docs: "DOCS-1431" ---- - -## Overview - -While most users will install NGINX Gateway Fabric [with Helm]({{< relref "/installation/installing-ngf/helm.md" >}}) or [Kubernetes manifests]({{< relref "/installation/installing-ngf/manifests.md" >}}), manually building the [NGINX Gateway Fabric and NGINX images]({{< relref "/overview/gateway-architecture.md#the-nginx-gateway-fabric-pod" >}}) can be helpful for testing and development purposes. Follow the steps in this document to build the NGINX Gateway Fabric and NGINX images. - -## Prerequisites - -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/) -- [GNU Make](https://www.gnu.org/software/software.html) -- [Docker](https://www.docker.com/) v18.09+ -- [Go](https://go.dev/doc/install) v1.20 - -If building the NGINX Plus image, you will also need a valid NGINX Plus license certificate (`nginx-repo.crt`) and key (`nginx-repo.key`) in the root of the repo. - -## Steps - -1. Clone the repo and change into the `nginx-gateway-fabric` directory: - - ```shell - git clone https://github.com/nginx/nginx-gateway-fabric.git --branch v1.6.0 - cd nginx-gateway-fabric - ``` - -1. Build the images: - - To build both the NGINX Gateway Fabric and NGINX images: - - ```makefile - make PREFIX=myregistry.example.com/nginx-gateway-fabric build-prod-images - ``` - - - To build both the NGINX Gateway Fabric and NGINX Plus images: - - ```makefile - make PREFIX=myregistry.example.com/nginx-gateway-fabric build-prod-images-with-plus - ``` - - - To build just the NGINX Gateway Fabric image: - - ```makefile - make PREFIX=myregistry.example.com/nginx-gateway-fabric build-prod-ngf-image - ``` - - - To build just the NGINX image: - - ```makefile - make PREFIX=myregistry.example.com/nginx-gateway-fabric build-prod-nginx-image - ``` - - - To build just the NGINX Plus image: - - ```makefile - make PREFIX=myregistry.example.com/nginx-gateway-fabric/nginx-plus build-prod-nginx-plus-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-gateway-fabric:1.6.0` and `nginx-gateway-fabric/nginx:1.6.0` or `nginx-gateway-fabric/nginx-plus:1.6.0`. - -1. Push the images to your container registry: - - ```shell - docker push myregistry.example.com/nginx-gateway-fabric:1.6.0 - docker push myregistry.example.com/nginx-gateway-fabric/nginx:1.6.0 - ``` - - or - - ```shell - docker push myregistry.example.com/nginx-gateway-fabric:1.6.0 - docker push myregistry.example.com/nginx-gateway-fabric/nginx-plus:1.6.0 - ``` - - Make sure to substitute `myregistry.example.com/nginx-gateway-fabric` with your registry. diff --git a/site/content/installation/installing-ngf/_index.md b/site/content/installation/installing-ngf/_index.md deleted file mode 100644 index 401f982246..0000000000 --- a/site/content/installation/installing-ngf/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "Install NGINX Gateway Fabric" -description: -weight: 100 -linkTitle: "Install NGINX Gateway Fabric" -menu: - docs: - parent: Installation ---- diff --git a/site/content/installation/installing-ngf/helm.md b/site/content/installation/installing-ngf/helm.md deleted file mode 100644 index a9a39f8ab2..0000000000 --- a/site/content/installation/installing-ngf/helm.md +++ /dev/null @@ -1,330 +0,0 @@ ---- -title: "Installation with Helm" -weight: 100 -toc: true -docs: "DOCS-1430" ---- - -## Overview - -Learn how to install, upgrade, and uninstall NGINX Gateway Fabric in a Kubernetes cluster using Helm. - -{{< important >}} NGINX Plus users that are upgrading from version 1.4.0 to 1.5.x need to install an NGINX Plus JWT -Secret before upgrading. Follow the steps in the [Before you begin](#before-you-begin) section to create the Secret. If you use a different name than the default `nplus-license` name, specify the Secret name by setting `--set nginx.usage.secretName=` when running `helm upgrade`. {{< /important >}} - -## Before you begin - -To complete this guide, you'll need to install: - -- [kubectl](https://kubernetes.io/docs/tasks/tools/), a command-line tool for managing Kubernetes clusters. -- [Helm 3.0 or later](https://helm.sh/docs/intro/install/), for deploying and managing applications on Kubernetes. - -{{< important >}} If you’d like to use NGINX Plus, some additional setup is also required: {{}} -
-NGINX Plus JWT setup - -{{}} - -### 1. Download the JWT from MyF5 - -{{}} - -### 2. Create the Docker Registry Secret - -{{}} - -### 3. Create the NGINX Plus Secret - -{{}} - -{{< note >}} For more information on why this is needed and additional configuration options, including how to report to NGINX Instance Manager instead, see the [NGINX Plus Image and JWT Requirement]({{< relref "installation/nginx-plus-jwt.md" >}}) document. {{< /note >}} - -
- -## Deploy NGINX Gateway Fabric - -### Installing the Gateway API resources - -{{}} - -### Install from the OCI registry - -The following steps install NGINX Gateway Fabric directly from the OCI helm registry. If you prefer, you can [install from sources](#install-from-sources) instead. - -{{}} - -{{%tab name="NGINX"%}} - -To install the latest stable release of NGINX Gateway Fabric in the **nginx-gateway** namespace, run the following command: - -```shell -helm install ngf oci://ghcr.io/nginx/charts/nginx-gateway-fabric --create-namespace -n nginx-gateway -``` - -{{% /tab %}} - -{{%tab name="NGINX Plus"%}} - -{{< note >}} If applicable, replace the F5 Container registry `private-registry.nginx.com` with your internal registry for your NGINX Plus image, and replace `nginx-plus-registry-secret` with your Secret name containing the registry credentials. If your NGINX Plus JWT Secret has a different name than the default `nplus-license`, then define that name using the `nginx.usage.secretName` flag. {{< /note >}} - -To install the latest stable release of NGINX Gateway Fabric in the **nginx-gateway** namespace, run the following command: - -```shell -helm install ngf oci://ghcr.io/nginx/charts/nginx-gateway-fabric --set nginx.image.repository=private-registry.nginx.com/nginx-gateway-fabric/nginx-plus --set nginx.plus=true --set serviceAccount.imagePullSecret=nginx-plus-registry-secret -n nginx-gateway -``` - -{{% /tab %}} - -{{}} - -`ngf` is the name of the release, and can be changed to any name you want. This name is added as a prefix to the Deployment name. - -If you want the latest version from the **main** branch, add `--version 0.0.0-edge` to your install command. - -To wait for the Deployment to be ready, you can either add the `--wait` flag to the `helm install` command, or run the following after installing: - -```shell -kubectl wait --timeout=5m -n nginx-gateway deployment/ngf-nginx-gateway-fabric --for=condition=Available -``` - -### Install from sources {#install-from-sources} - -If you prefer to install directly from sources, instead of through the OCI helm registry, use the following steps. - -{{}} - -{{}} - -{{%tab name="NGINX"%}} - -To install the chart into the **nginx-gateway** namespace, run the following command: - -```shell -helm install ngf . --create-namespace -n nginx-gateway -``` - -{{% /tab %}} - -{{%tab name="NGINX Plus"%}} - -{{< note >}} If applicable, replace the F5 Container registry `private-registry.nginx.com` with your internal registry for your NGINX Plus image, and replace `nginx-plus-registry-secret` with your Secret name containing the registry credentials. If your NGINX Plus JWT Secret has a different name than the default `nplus-license`, then define that name using the `nginx.usage.secretName` flag. {{< /note >}} - -To install the chart into the **nginx-gateway** namespace, run the following command: - -```shell -helm install ngf . --set nginx.image.repository=private-registry.nginx.com/nginx-gateway-fabric/nginx-plus --set nginx.plus=true --set serviceAccount.imagePullSecret=nginx-plus-registry-secret -n nginx-gateway -``` - -{{% /tab %}} - -{{}} - - `ngf` is the name of the release, and can be changed to any name you want. This name is added as a prefix to the Deployment name. - - To wait for the Deployment to be ready, you can either add the `--wait` flag to the `helm install` command, or run the following after installing: - - ```shell - kubectl wait --timeout=5m -n nginx-gateway deployment/ngf-nginx-gateway-fabric --for=condition=Available - ``` - -### Custom installation options - -#### Service type - -By default, the NGINX Gateway Fabric helm chart deploys a LoadBalancer Service. - -To use a NodePort Service instead: - -```shell -helm install ngf oci://ghcr.io/nginx/charts/nginx-gateway-fabric --create-namespace -n nginx-gateway --set service.type=NodePort -``` - -To disable the creation of a Service: - -```shell -helm install ngf oci://ghcr.io/nginx/charts/nginx-gateway-fabric --create-namespace -n nginx-gateway --set service.create=false -``` - -#### Experimental features - -We support a subset of the additional features provided by the Gateway API experimental channel. To enable the -experimental features of Gateway API which are supported by NGINX Gateway Fabric: - -```shell -helm install ngf oci://ghcr.io/nginx/charts/nginx-gateway-fabric --create-namespace -n nginx-gateway --set nginxGateway.gwAPIExperimentalFeatures.enable=true -``` - -{{}}Requires the Gateway APIs installed from the experimental channel.{{}} - -#### Examples - -You can find several examples of configuration options of the `values.yaml` file in the [helm examples](https://github.com/nginx/nginx-gateway-fabric/tree/v1.6.0/examples/helm) directory. - -### Access NGINX Gateway Fabric - -{{}} - -## Upgrade NGINX Gateway Fabric - -{{}}For guidance on zero downtime upgrades, see the [Delay Pod Termination](#configure-delayed-pod-termination-for-zero-downtime-upgrades) section below.{{}} - -To upgrade NGINX Gateway Fabric and get the latest features and improvements, take the following steps: - -### Upgrade Gateway resources - -To upgrade your Gateway API resources, take the following steps: - -- Verify the Gateway API resources are compatible with your NGINX Gateway Fabric version. Refer to the [Technical Specifications]({{< relref "reference/technical-specifications.md" >}}) for details. -- Review the [release notes](https://github.com/kubernetes-sigs/gateway-api/releases) for any important upgrade-specific information. -- To upgrade the Gateway API resources, run: - - ```shell - kubectl kustomize "https://github.com/nginx/nginx-gateway-fabric/config/crd/gateway-api/standard?ref=v1.6.0" | kubectl apply -f - - ``` - - or, if you installed the from the experimental channel: - - ```shell - kubectl kustomize "https://github.com/nginx/nginx-gateway-fabric/config/crd/gateway-api/experimental?ref=v1.6.0" | kubectl apply -f - - ``` - -### Upgrade NGINX Gateway Fabric CRDs - -Helm's upgrade process does not automatically upgrade the NGINX Gateway Fabric CRDs (Custom Resource Definitions). - -To upgrade the CRDs, take the following steps: - -1. {{}} - -2. Upgrade the CRDs: - - ```shell - kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.0/deploy/crds.yaml - ``` - - {{}}Ignore the following warning, as it is expected.{{}} - - ```text - Warning: kubectl apply should be used on resource created by either kubectl create --save-config or kubectl apply. - ``` - -### Upgrade NGINX Gateway Fabric release - -{{< important >}} NGINX Plus users that are upgrading from version 1.4.0 to 1.5.x need to install an NGINX Plus JWT -Secret before upgrading. Follow the steps in the [Before you begin](#before-you-begin) section to create the Secret. If you use a different name than the default `nplus-license` name, specify the Secret name by setting `--set nginx.usage.secretName=` when running `helm upgrade`. {{}} - -There are two possible ways to upgrade NGINX Gateway Fabric. You can either upgrade from the OCI registry, or download the chart and upgrade from the source. - -#### Upgrade from the OCI registry - -- To upgrade to the latest stable release of NGINX Gateway Fabric, run: - - ```shell - helm upgrade ngf oci://ghcr.io/nginx/charts/nginx-gateway-fabric -n nginx-gateway - ``` - - If needed, replace `ngf` with your chosen release name. - -#### Upgrade from sources - -1. {{}} - -1. To upgrade, run: the following command: - - ```shell - helm upgrade ngf . -n nginx-gateway - ``` - - If needed, replace `ngf` with your chosen release name. - -## How to upgrade from NGINX OSS to NGINX Plus - -- To upgrade from NGINX OSS to NGINX Plus, update the Helm command to include the necessary values for Plus: - - {{< note >}}If applicable, replace the F5 Container registry `private-registry.nginx.com` with your internal registry for your NGINX Plus image, and replace `nginx-plus-registry-secret` with your Secret name containing the registry credentials.{{< /note >}} - - {{< important >}}Ensure that you [Create the required JWT Secrets]({{< relref "installation/nginx-plus-jwt.md" >}}) before installing.{{< /important >}} - - ```shell - helm upgrade ngf oci://ghcr.io/nginx/charts/nginx-gateway-fabric --set nginx.image.repository=private-registry.nginx.com/nginx-gateway-fabric/nginx-plus --set nginx.plus=true --set serviceAccount.imagePullSecret=nginx-plus-registry-secret -n nginx-gateway - ``` - - If needed, replace `ngf` with your chosen release name. - -## Delay pod termination for zero downtime upgrades {#configure-delayed-pod-termination-for-zero-downtime-upgrades} - -{{< include "installation/delay-pod-termination/delay-pod-termination-overview.md" >}} - -Follow these steps to configure delayed pod termination: - -1. Open the `values.yaml` for editing. - -1. **Add delayed shutdown hooks**: - - - In the `values.yaml` file, add `lifecycle: preStop` hooks to both the `nginx` and `nginx-gateway` container definitions. These hooks instruct the containers to delay their shutdown process, allowing time for connections to close gracefully. Update the `sleep` value to what works for your environment. - - ```yaml - nginxGateway: - <...> - lifecycle: - preStop: - exec: - command: - - /usr/bin/gateway - - sleep - - --duration=40s # This flag is optional, the default is 30s - - nginx: - <...> - lifecycle: - preStop: - exec: - command: - - /bin/sleep - - "40" - ``` - -1. **Set the termination grace period**: - - - {{}} - -1. Save the changes. - -{{}} -For additional information on configuring and understanding the behavior of containers and pods during their lifecycle, refer to the following Kubernetes documentation: - -- [Container Lifecycle Hooks](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks) -- [Pod Lifecycle](https://kubernetes.io/docs/concepts/workloads/Pods/Pod-lifecycle/#Pod-termination) - -{{}} - -## Uninstall NGINX Gateway Fabric - -Follow these steps to uninstall NGINX Gateway Fabric and Gateway API from your Kubernetes cluster: - -1. **Uninstall NGINX Gateway Fabric:** - - - To uninstall NGINX Gateway Fabric, run: - - ```shell - helm uninstall ngf -n nginx-gateway - ``` - - If needed, replace `ngf` with your chosen release name. - -2. **Remove namespace and CRDs:** - - - To remove the **nginx-gateway** namespace and its custom resource definitions (CRDs), run: - - ```shell - kubectl delete ns nginx-gateway - kubectl delete -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.0/deploy/crds.yaml - ``` - -3. **Remove the Gateway API resources:** - - - {{}} - -## Additional configuration - -For a full list of the Helm Chart configuration parameters, read [the NGINX Gateway Fabric Helm Chart](https://github.com/nginx/nginx-gateway-fabric/blob/v1.6.0/charts/nginx-gateway-fabric/README.md#configuration). diff --git a/site/content/installation/installing-ngf/manifests.md b/site/content/installation/installing-ngf/manifests.md deleted file mode 100644 index f1af32f8ab..0000000000 --- a/site/content/installation/installing-ngf/manifests.md +++ /dev/null @@ -1,286 +0,0 @@ ---- -title: "Installation with Kubernetes manifests" -weight: 200 -toc: true -docs: "DOCS-1429" ---- - -## Overview - -Learn how to install, upgrade, and uninstall NGINX Gateway Fabric using Kubernetes manifests. - -{{< important >}} NGINX Plus users that are upgrading from version 1.4.0 to 1.5.x need to install an NGINX Plus JWT -Secret before upgrading. Follow the steps in the [Before you begin](#before-you-begin) section to create the Secret, which is referenced in the updated deployment manifest for the newest version. {{< /important >}} - -## Before you begin - -To complete this guide, you'll need to install: - -- [kubectl](https://kubernetes.io/docs/tasks/tools/), a command-line interface for managing Kubernetes clusters. - -{{< important >}} If you’d like to use NGINX Plus, some additional setup is also required: {{}} -
-NGINX Plus JWT setup - -{{}} - -### 1. Download the JWT from MyF5 - -{{}} - -### 2. Create the Docker Registry Secret - -{{}} - -### 3. Create the NGINX Plus Secret - -{{}} - -{{< note >}} For more information on why this is needed and additional configuration options, including how to report to NGINX Instance Manager instead, see the [NGINX Plus Image and JWT Requirement]({{< relref "installation/nginx-plus-jwt.md" >}}) document. {{< /note >}} - -
- -## Deploy NGINX Gateway Fabric - -Deploying NGINX Gateway Fabric with Kubernetes manifests takes only a few steps. With manifests, you can configure your deployment exactly how you want. Manifests also make it easy to replicate deployments across environments or clusters, ensuring consistency. - -### 1. Install the Gateway API resources - -{{}} - -### 2. Deploy the NGINX Gateway Fabric CRDs - -#### Stable release - -```shell -kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.0/deploy/crds.yaml -``` - -#### Edge version - -```shell -kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/main/deploy/crds.yaml -``` - -### 3. Deploy NGINX Gateway Fabric - -{{< note >}} By default, NGINX Gateway Fabric is installed in the **nginx-gateway** namespace. You can deploy in another namespace by modifying the manifest files. {{< /note >}} - -{{}} - -{{%tab name="Default"%}} - -Deploys NGINX Gateway Fabric with NGINX OSS. - -```shell -kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.0/deploy/default/deploy.yaml -``` - -{{% /tab %}} - -{{%tab name="AWS NLB"%}} - -Deploys NGINX Gateway Fabric with NGINX OSS and an AWS Network Load Balancer service. - -```shell -kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.0/deploy/aws-nlb/deploy.yaml -``` - -{{% /tab %}} - -{{%tab name="Azure"%}} - -Deploys NGINX Gateway Fabric with NGINX OSS and `nodeSelector` to deploy on Linux nodes. - -```shell -kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.0/deploy/azure/deploy.yaml -``` - -{{% /tab %}} - -{{%tab name="NGINX Plus"%}} - -Deploys NGINX Gateway Fabric with NGINX Plus. The image is pulled from the -NGINX Plus Docker registry, and the `imagePullSecretName` is the name of the Secret to use to pull the image. -The NGINX Plus JWT Secret used to run NGINX Plus is also specified in a volume mount and the `--usage-report-secret` parameter. These Secrets are created as part of the [Before you begin](#before-you-begin) section. - -```shell -kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.0/deploy/nginx-plus/deploy.yaml -``` - -{{% /tab %}} - -{{%tab name="Experimental"%}} - -Deploys NGINX Gateway Fabric with NGINX OSS and experimental features. - -```shell -kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.0/deploy/experimental/deploy.yaml -``` - -{{< note >}} Requires the Gateway APIs installed from the experimental channel. {{< /note >}} - -{{% /tab %}} - -{{%tab name="NGINX Plus Experimental"%}} - -Deploys NGINX Gateway Fabric with NGINX Plus and experimental features. The image is pulled from the -NGINX Plus Docker registry, and the `imagePullSecretName` is the name of the Secret to use to pull the image. -The NGINX Plus JWT Secret used to run NGINX Plus is also specified in a volume mount and the `--usage-report-secret` parameter. These Secrets are created as part of the [Before you begin](#before-you-begin) section. - -```shell -kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.0/deploy/nginx-plus-experimental/deploy.yaml -``` - -{{< note >}} Requires the Gateway APIs installed from the experimental channel. {{< /note >}} - -{{% /tab %}} - -{{%tab name="NodePort"%}} - -Deploys NGINX Gateway Fabric with NGINX OSS using a Service type of `NodePort`. - -```shell -kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.0/deploy/nodeport/deploy.yaml -``` - -{{% /tab %}} - -{{%tab name="OpenShift"%}} - -Deploys NGINX Gateway Fabric with NGINX OSS on OpenShift. - -```shell -kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.0/deploy/openshift/deploy.yaml -``` - -{{% /tab %}} - -{{}} - -### 4. Verify the Deployment - -To confirm that NGINX Gateway Fabric is running, check the pods in the `nginx-gateway` namespace: - -```shell -kubectl get pods -n nginx-gateway -``` - -The output should look similar to this (note that the pod name will include a unique string): - -```text -NAME READY STATUS RESTARTS AGE -nginx-gateway-5d4f4c7db7-xk2kq 2/2 Running 0 112s -``` - -### 5. Access NGINX Gateway Fabric - -{{}} - -## Upgrade NGINX Gateway Fabric - -{{< important >}} NGINX Plus users that are upgrading from version 1.4.0 to 1.5.x need to install an NGINX Plus JWT -Secret before upgrading. Follow the steps in the [Before you begin](#before-you-begin) section to create the Secret, which is referenced in the updated deployment manifest for the newest version. {{< /important >}} - -{{}}For guidance on zero downtime upgrades, see the [Delay Pod Termination](#configure-delayed-pod-termination-for-zero-downtime-upgrades) section below.{{}} - -To upgrade NGINX Gateway Fabric and get the latest features and improvements, take the following steps: - -1. **Upgrade Gateway API resources:** - - - Verify that your NGINX Gateway Fabric version is compatible with the Gateway API resources. Refer to the [Technical Specifications]({{< relref "reference/technical-specifications.md" >}}) for details. - - Review the [release notes](https://github.com/kubernetes-sigs/gateway-api/releases) for any important upgrade-specific information. - - To upgrade the Gateway API resources, run: - - ```shell - kubectl kustomize "https://github.com/nginx/nginx-gateway-fabric/config/crd/gateway-api/standard?ref=v1.6.0" | kubectl apply -f - - ``` - - or, if you installed the from the experimental channel: - - ```shell - kubectl kustomize "https://github.com/nginx/nginx-gateway-fabric/config/crd/gateway-api/experimental?ref=v1.6.0" | kubectl apply -f - - ``` - -1. **Upgrade NGINX Gateway Fabric CRDs:** - - - To upgrade the Custom Resource Definitions (CRDs), run: - - ```shell - kubectl apply -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.0/deploy/crds.yaml - ``` - -1. **Upgrade NGINX Gateway Fabric deployment:** - - Select the deployment manifest that matches your current deployment from the table above in the [Deploy NGINX Gateway Fabric](#3-deploy-nginx-gateway-fabric) section and apply it. - -## Delay pod termination for zero downtime upgrades {#configure-delayed-pod-termination-for-zero-downtime-upgrades} - -{{< include "installation/delay-pod-termination/delay-pod-termination-overview.md" >}} - -Follow these steps to configure delayed pod termination: - -1. Open the `deploy.yaml` for editing. - -1. **Add delayed shutdown hooks**: - - - In the `deploy.yaml` file, add `lifecycle: preStop` hooks to both the `nginx` and `nginx-gateway` container definitions. These hooks instruct the containers to delay their shutdown process, allowing time for connections to close gracefully. Update the `sleep` value to what works for your environment. - - ```yaml - <...> - name: nginx-gateway - <...> - lifecycle: - preStop: - exec: - command: - - /usr/bin/gateway - - sleep - - --duration=40s # This flag is optional, the default is 30s - <...> - name: nginx - <...> - lifecycle: - preStop: - exec: - command: - - /bin/sleep - - "40" - <...> - ``` - -1. **Set the termination grace period**: - - - {{}} - -1. Save the changes. - -{{}} -For additional information on configuring and understanding the behavior of containers and pods during their lifecycle, refer to the following Kubernetes documentation: - -- [Container Lifecycle Hooks](https://kubernetes.io/docs/concepts/containers/container-lifecycle-hooks/#container-hooks) -- [Pod Lifecycle](https://kubernetes.io/docs/concepts/workloads/Pods/Pod-lifecycle/#Pod-termination) - -{{}} - -## Uninstall NGINX Gateway Fabric - -Follow these steps to uninstall NGINX Gateway Fabric and Gateway API from your Kubernetes cluster: - -1. **Uninstall NGINX Gateway Fabric:** - - - To remove NGINX Gateway Fabric and its custom resource definitions (CRDs), run: - - ```shell - kubectl delete namespace nginx-gateway - kubectl delete cluterrole nginx-gateway - kubectl delete clusterrolebinding nginx-gateway - ``` - - ```shell - kubectl delete -f https://raw.githubusercontent.com/nginx/nginx-gateway-fabric/v1.6.0/deploy/crds.yaml - ``` - -1. **Remove the Gateway API resources:** - - - {{}} diff --git a/site/content/installation/nginx-plus-jwt.md b/site/content/installation/nginx-plus-jwt.md deleted file mode 100644 index e516e7098b..0000000000 --- a/site/content/installation/nginx-plus-jwt.md +++ /dev/null @@ -1,242 +0,0 @@ ---- -title: "NGINX Plus Image and JWT Requirement" -weight: 300 -toc: true -docs: "DOCS-000" ---- - -## Overview - -NGINX Gateway Fabric with NGINX Plus requires a valid JSON Web Token (JWT) to download the container image from the F5 registry. From version 1.5.0, this JWT token is also required to run NGINX Plus. - -This requirement is part of F5’s broader licensing program and aligns with industry best practices. The JWT will streamline subscription renewals and usage reporting, helping you manage your NGINX Plus subscription more efficiently. The [telemetry](#telemetry) data we collect helps us improve our products and services to better meet your needs. - -The JWT is required for validating your subscription and reporting telemetry data. For environments connected to the internet, telemetry is automatically sent to F5’s licensing endpoint. In offline environments, telemetry is routed through [NGINX Instance Manager](https://docs.nginx.com/nginx-instance-manager/). Usage is reported every hour and on startup whenever NGINX is reloaded. - -## Set up the JWT - -The JWT needs to be configured before deploying NGINX Gateway Fabric. The JWT will be stored in two Kubernetes Secrets: one for downloading the NGINX Plus container image, and the other for running NGINX Plus. - -{{< include "installation/jwt-password-note.md" >}} - -### Download the JWT from MyF5 - -{{< include "installation/nginx-plus/download-jwt.md" >}} - -### Docker Registry Secret - -{{< include "installation/nginx-plus/docker-registry-secret.md" >}} - -Provide the name of this Secret when installing NGINX Gateway Fabric: - -{{}} - -{{%tab name="Helm"%}} - -Specify the Secret name using the `serviceAccount.imagePullSecret` or `serviceAccount.imagePullSecrets` helm value. - -{{% /tab %}} - -{{%tab name="Manifests"%}} - -Specify the Secret name in the `imagePullSecrets` field of the `nginx-gateway` ServiceAccount. - -{{% /tab %}} - -{{}} - -### NGINX Plus Secret - -{{< include "installation/nginx-plus/nginx-plus-secret.md" >}} - -If using a name other than the default `nplus-license`, provide the name of this Secret when installing NGINX Gateway Fabric: - -{{}} - -{{%tab name="Helm"%}} - -Specify the Secret name using the `nginx.usage.secretName` helm value. - -{{% /tab %}} - -{{%tab name="Manifests"%}} - -Specify the Secret name in the `--usage-report-secret` command-line flag on the `nginx-gateway` container. - -You also need to define the proper volume mount to mount the Secret to the nginx container. If it doesn't already exist, add the following volume to the Deployment: - -```yaml -- name: nginx-plus-license - secret: - secretName: nplus-license -``` - -and the following volume mount to the `nginx` container: - -```yaml -- mountPath: /etc/nginx/license.jwt - name: nginx-plus-license - subPath: license.jwt -``` - -{{% /tab %}} - -{{}} - -**If you are reporting to the default licensing endpoint, then you can now proceed with [installing NGINX Gateway Fabric]({{< relref "installation/installing-ngf" >}}). Otherwise, follow the steps below to configure reporting to NGINX Instance Manager.** - -### Reporting to NGINX Instance Manager {#nim} - -If you are deploying NGINX Gateway Fabric in an environment where you need to report to NGINX Instance Manager instead of the default licensing endpoint, a few extra steps may be required. - -First, you must specify the endpoint of your NGINX Instance Manager: - -{{}} - -{{%tab name="Helm"%}} - -Specify the endpoint using the `nginx.usage.endpoint` helm value. - -{{% /tab %}} - -{{%tab name="Manifests"%}} - -Specify the endpoint in the `--usage-report-endpoint` command-line flag on the `nginx-gateway` container. You also need to add the following line to the `mgmt` block of the `nginx-includes-bootstrap` ConfigMap: - -```text -usage_report endpoint=; -``` - -{{% /tab %}} - -{{}} - -#### CA and Client certificate/key {#nim-cert} - -To configure a CA cert and/or client certificate and key, a few extra steps are needed. - -First, you need to create two Secrets in the `nginx-gateway` namespace. The CA must live under the key `ca.crt`: - -```shell -kubectl -n nginx-gateway create secret generic nim-ca --from-file ca.crt -``` - -The client cert and key must be added to a TLS Secret: - -```shell -kubectl -n nginx-gateway create secret tls nim-client --cert /path/to/cert --key /path/to/key -``` - -{{}} - -{{%tab name="Helm"%}} - -Specify the CA Secret name using the `nginx.usage.caSecretName` helm value. Specify the client Secret name using the `nginx.usage.clientSSLSecretName` helm value. - -{{% /tab %}} - -{{%tab name="Manifests"%}} - -Specify the CA Secret name in the `--usage-report-ca-secret` command-line flag on the `nginx-gateway` container. Specify the client Secret name in the `--usage-report-client-ssl-secret` command-line flag on the `nginx-gateway` container. - -You also need to define the proper volume mount to mount the Secrets to the nginx container. Add the following volume to the Deployment: - -```yaml -- name: nginx-plus-usage-certs - projected: - sources: - - secret: - name: nim-ca - - secret: - name: nim-client -``` - -and the following volume mounts to the `nginx` container: - -```yaml -- mountPath: /etc/nginx/certs-bootstrap/ - name: nginx-plus-usage-certs -``` - -Finally, in the `nginx-includes-bootstrap` ConfigMap, add the following lines to the `mgmt` block: - -```text -ssl_trusted_certificate /etc/nginx/certs-bootstrap/ca.crt; -ssl_certificate /etc/nginx/certs-bootstrap/tls.crt; -ssl_certificate_key /etc/nginx/certs-bootstrap/tls.key; -``` - -{{% /tab %}} - -{{}} - -
- -**Once these Secrets are created and configuration options are set, you can now [install NGINX Gateway Fabric]({{< relref "installation/installing-ngf" >}}).** - -## Installation flags to configure usage reporting {#flags} - -When installing NGINX Gateway Fabric, the following flags can be specified to configure usage reporting to fit your needs: - -If using Helm, the `nginx.usage` values should be set as necessary: - -- `secretName` should be the name of the JWT Secret you created. By default this field is set to `nplus-license`. This field is required. -- `endpoint` is the endpoint to send the telemetry data to. This is optional, and by default is `product.connect.nginx.com`. -- `resolver` is the nameserver used to resolve the NGINX Plus usage reporting endpoint. This is optional and used with NGINX Instance Manager. -- `skipVerify` disables client verification of the NGINX Plus usage reporting server certificate. -- `caSecretName` is the name of the Secret containing the NGINX Instance Manager CA certificate. Must exist in the same namespace that the NGINX Gateway Fabric control plane is running in (default namespace: nginx-gateway). -- `clientSSLSecretName` is the name of the Secret containing the client certificate and key for authenticating with NGINX Instance Manager. Must exist in the same namespace that the NGINX Gateway Fabric control plane is running in (default namespace: nginx-gateway). - -If using manifests, the following command-line options should be set as necessary on the `nginx-gateway` container: - -- `--usage-report-secret` should be the name of the JWT Secret you created. Must exist in the same namespace that the NGINX Gateway Fabric control plane is running in (default namespace: nginx-gateway). By default this field is set to `nplus-license`. A [volume mount](#nginx-plus-secret) for this Secret is required for installation. -- `--usage-report-endpoint` is the endpoint to send the telemetry data to. This is optional, and by default is `product.connect.nginx.com`. Requires [extra configuration](#nim) if specified. -- `--usage-report-resolver` is the nameserver used to resolve the NGINX Plus usage reporting endpoint. This is optional and used with NGINX Instance Manager. -- `--usage-report-skip-verify` disables client verification of the NGINX Plus usage reporting server certificate. -- `--usage-report-ca-secret` is the name of the Secret containing the NGINX Instance Manager CA certificate. Must exist in the same namespace that the NGINX Gateway Fabric control plane is running in (default namespace: nginx-gateway). Requires [extra configuration](#nim-cert) if specified. -- `--usage-report-client-ssl-secret` is the name of the Secret containing the client certificate and key for authenticating with NGINX Instance Manager. Must exist in the same namespace that the NGINX Gateway Fabric control plane is running in (default namespace: nginx-gateway). Requires [extra configuration](#nim-cert) if specified. - -## What’s reported and how it’s protected {#telemetry} - -NGINX Plus reports the following data every hour by default: - -- **NGINX version and status**: The version of NGINX Plus running on the instance. -- **Instance UUID**: A unique identifier for each NGINX Plus instance. -- **Traffic data**: - - **Bytes received from and sent to clients**: HTTP and stream traffic volume between clients and NGINX Plus. - - **Bytes received from and sent to upstreams**: HTTP and stream traffic volume between NGINX Plus and upstream servers. - - **Client connections**: The number of accepted client connections (HTTP and stream traffic). - - **Requests handled**: The total number of HTTP requests processed. -- **NGINX uptime**: The number of reloads and worker connections during uptime. -- **Usage report timestamps**: Start and end times for each usage report. -- **Kubernetes node details**: Information about Kubernetes nodes. - -### Security and privacy of reported data - -All communication between your NGINX Plus instances, NGINX Instance Manager, and F5’s licensing endpoint (`product.connect.nginx.com`) is protected using **SSL/TLS** encryption. - -Only **operational metrics** are reported β€” no **personally identifiable information (PII)** or **sensitive customer data** is transmitted. - -## Pull an image for local use - -To pull an image for local use, use this command: - -```shell -docker login private-registry.nginx.com --username= --password=none -``` - -Replace the contents of `` with the contents of the JWT token itself. - -You can then pull the image: - -```shell -docker pull private-registry.nginx.com/nginx-gateway-fabric/nginx-plus:1.6.0 -``` - -Once you have successfully pulled the image, you can tag it as needed, then push it to a different container registry. - -## Alternative installation options - -There are alternative ways to get an NGINX Plus image for NGINX Gateway Fabric: - -- [Build the Gateway Fabric image]({{}}) describes how to use the source code with an NGINX Plus subscription certificate and key to build an image. diff --git a/site/content/overview/_index.md b/site/content/overview/_index.md deleted file mode 100644 index fb6a7d7d89..0000000000 --- a/site/content/overview/_index.md +++ /dev/null @@ -1,9 +0,0 @@ ---- -title: "Overview" -description: -weight: 100 -linkTitle: "Overview" -menu: - docs: - parent: NGINX Gateway Fabric ---- diff --git a/site/content/overview/custom-policies.md b/site/content/overview/custom-policies.md deleted file mode 100644 index 29c552f4a0..0000000000 --- a/site/content/overview/custom-policies.md +++ /dev/null @@ -1,160 +0,0 @@ ---- -title: "Custom policies" -weight: 300 -toc: true -docs: "DOCS-000" ---- - -## Overview - -Custom policies are NGINX Gateway Fabric CRDs (Custom Resource Definitions) that allow users to configure NGINX data plane features that are unavailable in the Gateway API. -These custom policies follow the Gateway API [Policy Attachment](https://gateway-api.sigs.k8s.io/reference/policy-attachment/) pattern, which allows users to extend the Gateway API functionality by creating implementation-specific policies and attaching them to Kubernetes objects such as HTTPRoutes, Gateways, and Services. - -Policies are a Kubernetes object that augments the behavior of an object in a standard way. Policies can be attached to one object ([Direct Policy Attachment](#direct-policy-attachment)) or objects in a hierarchy ([Inherited Policy Attachment](#inherited-policy-attachment)). -The following table summarizes NGINX Gateway Fabric custom policies: - -{{< bootstrap-table "table table-striped table-bordered" >}} - -| Policy | Description | Attachment Type | Supported Target Object(s) | Supports Multiple Target Refs | Mergeable | API Version | -|-------------------------------------------------------------------------------------------|-----------------------------------------------------------------------|-----------------|-------------------------------|-------------------------------|-----------|-------------| -| [ClientSettingsPolicy]({{}}) | Configure connection behavior between client and NGINX | Inherited | Gateway, HTTPRoute, GRPCRoute | No | Yes | v1alpha1 | -| [ObservabilityPolicy]({{}}) | Define settings related to tracing, metrics, or logging | Direct | HTTPRoute, GRPCRoute | Yes | No | v1alpha2 | -| [UpstreamSettingsPolicy]({{}}) | Configure connection behavior between NGINX and upstream applications | Direct | Service | Yes | Yes | v1alpha1 | - -{{}} - -{{< important >}} -If attaching a Policy to a Route, that Route must not share a hostname:port/path combination with any other Route that is not referenced by the same Policy. If it does, the Policy will be rejected. This is because the Policy would end up affecting other Routes that it is not attached to. -{{< /important >}} - -## Terminology - -- _Attachment Type_. How the policy attaches to an object. Attachment type can be "direct" or "inherited". -- _Supported Target Object(s)_. API objects the policy can be applied to. -- _Supports Multiple Target Refs_. Whether a single policy can target multiple objects. -- _Mergeable_. Whether policies that target the same object can be merged. - -## Direct Policy Attachment - -A Direct Policy Attachment is a policy that references a single object, such as a Gateway or HTTPRoute. It is tightly bound to one instance of a particular Kind within a single Namespace or an instance of a single Kind at the cluster-scope. It affects _only_ the object specified in its TargetRef. - -This diagram uses a fictional retry policy to show how Direct Policy Attachment works: - -{{}} - -The policy targets the HTTPRoute `baz` and sets `retries` to `3` and `timeout` to `60s`. Since this policy is a Direct Policy Attachment, its settings are only applied to the `baz` HTTPRoute. - -## Inherited Policy Attachment - -Inherited Policy Attachment allows settings to cascade down a hierarchy. The hierarchy for Gateway API resources looks like this: - -{{}} - -Settings defined in a policy attached to an object in this hierarchy may be inherited by the resources below it. For example, the settings defined in a policy attached to a Gateway may be inherited by all the HTTPRoutes attached to that Gateway. - -Settings in an Inherited Policy can be Defaults or Overrides. Defaults set the default value for something and can be overridden by policies on a lower object. Overrides cannot be overridden by lower objects. -All settings in NGINX Gateway Fabric Inherited Policies are Defaults. - -Default values are given precedence from the bottom up. Therefore, a policy setting attached to a Backend will have the highest precedence over the one attached to higher objects. - -The following diagram shows how Inherited Policies work in NGINX Gateway Fabric using a fictional retry policy: - -{{}} - -There are three policies defined: - -- `dev-policy` that targets the `dev` Gateway -- `baz-policy` that targets the `baz` HTTPRoute -- `foo-policy` that targets the `foo` HTTPRoute - -The settings in `dev-policy` affect the `dev` Gateway and are inherited by all the HTTPRoutes attached to `dev`. -The `baz-policy` and `foo-policy` are attached to the `baz` and `foo` HTTPRoutes. Since HTTPRoutes are lower than Gateways in the hierarchy, the settings defined in them override those in the `dev` policy. -Since the `foo-policy` only defines the `retries` setting, it still inherits the `timeout` setting from `dev-policy`. -The `bar` HTTPRoute has no policy attached to it and inherits all the settings from `dev-policy`. - -## Merging Policies - -With some NGINX Gateway Fabric Policies, it is possible to create multiple policies that target the same resource as long as the fields in those policies do not conflict. - -For example, consider the following fictional policies: - -```yaml -apiVersion: gateway.nginx.org/v1alpha1 -kind: ExamplePolicy -metadata: - name: retries -spec: - targetRef: - group: gateway.networking.k8s.io - kind: HTTPRoute - name: foo - retries: 10 -``` - - -```yaml -apiVersion: gateway.nginx.org/v1alpha1 -kind: ExamplePolicy -metadata: - name: timeout -spec: - targetRef: - kind: HTTPRoute - name: foo - timeout: 60s -``` - -The `retries` ExamplePolicy defines the number of retries for the `foo` HTTPRoute, and the `timeout` ExamplePolicy defines the timeout for the `foo` HTTPRoute. -NGINX Gateway Fabric will merge the fields defined in the policies and apply the following settings to the `foo` HTTPRoute: - -```yaml -retries: 10 -timeout: 60s -``` - -However, if both policies had the `retries` field set, then the policies cannot be merged. In this case, NGINX Gateway Fabric will choose which policy to configure based on the following criteria (continuing on ties): - -1. The oldest policy by creation timestamp -1. The policy appearing first in alphabetical order by "{namespace}/{name}" - -If a policy conflicts with a configured policy, NGINX Gateway Fabric will set the policy `Accepted` status to false with a reason of `Conflicted`. See [Policy Status](#policy-status) for more details. - -## Policy Status - -NGINX Gateway Fabric sets the [PolicyStatus](https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1alpha2.PolicyStatus) on all policies. - -`PolicyStatus` fields: - -- `ancestors`: describes the status of a route with respect to the ancestor. - - `ancestorRef`: the object that the policy targets in `spec.targetRef`. - - `controllerName`: the controller name of NGINX Gateway Fabric. - - `conditions`: (Condition/Status/Reason): - - `Accepted/True/Accepted`: the policy is accepted by the ancestor. - - `Accepted/False/Invalid`: the policy is not accepted because it is semantically or syntactically invalid. - - `Accepted/False/Conflicted`: the policy is not accepted because it conflicts with another policy. - - `Accepted/False/TargetNotFound`: the policy is not accepted because it targets a resource that is invalid or does not exist. - - `Accepted/False/NginxProxyNotSet`: the policy is not accepted because it relies on the NginxProxy configuration which is missing or invalid. - -To check the status of a policy, use `kubectl describe`. This example checks the status of the `foo` ObservabilityPolicy, which is accepted: - -```shell -kubectl describe observabilitypolicies.gateway.nginx.org foo -n default -``` - -```text -Status: - Ancestors: - Ancestor Ref: - Group: gateway.networking.k8s.io - Kind: HTTPRoute - Name: foo - Namespace: default - Conditions: - Last Transition Time: 2024-05-23T18:13:03Z - Message: Policy is accepted - Observed Generation: 1 - Reason: Accepted - Status: True - Type: Accepted - Controller Name: gateway.nginx.org/nginx-gateway-controller -``` diff --git a/site/content/overview/gateway-api-compatibility.md b/site/content/overview/gateway-api-compatibility.md deleted file mode 100644 index 7573597983..0000000000 --- a/site/content/overview/gateway-api-compatibility.md +++ /dev/null @@ -1,379 +0,0 @@ ---- -title: "Gateway API Compatibility" -weight: 200 -toc: true -docs: "DOCS-1412" ---- - -Learn which Gateway API resources NGINX Gateway Fabric supports and to which level. - -## Summary - -{{< bootstrap-table "table table-striped table-bordered" >}} - -| Resource | Core Support Level | Extended Support Level | Implementation-Specific Support Level | API Version | API Release Channel | -|---------------------------------------|--------------------|------------------------|---------------------------------------|-------------|---------------------| -| [GatewayClass](#gatewayclass) | Supported | Not supported | Supported | v1 | Standard | -| [Gateway](#gateway) | Supported | Partially supported | Not supported | v1 | Standard | -| [HTTPRoute](#httproute) | Supported | Partially supported | Not supported | v1 | Standard | -| [GRPCRoute](#grpcroute) | Supported | Partially supported | Not supported | v1 | Standard | -| [ReferenceGrant](#referencegrant) | Supported | N/A | Not supported | v1beta1 | Standard | -| [TLSRoute](#tlsroute) | Supported | Not supported | Not supported | v1alpha2 | Experimental | -| [TCPRoute](#tcproute) | Not supported | Not supported | Not supported | v1alpha2 | Experimental | -| [UDPRoute](#udproute) | Not supported | Not supported | Not supported | v1alpha2 | Experimental | -| [BackendTLSPolicy](#backendtlspolicy) | Supported | Supported | Not supported | v1alpha3 | Experimental | -| [Custom policies](#custom-policies) | N/A | N/A | Supported | N/A | N/A | - -{{< /bootstrap-table >}} - ---- - -## Terminology - -Gateway API features has three [support levels](https://gateway-api.sigs.k8s.io/concepts/conformance/#2-support-levels): Core, Extended and Implementation-specific. We use the following terms to describe the support status for each level and resource field: - -- _Supported_. The resource or field is fully supported. -- _Partially supported_. The resource or field is supported partially, with limitations. It will become fully - supported in future releases. -- _Not supported_. The resource or field is not yet supported. It will become partially or fully supported in future - releases. - -{{< note >}} It's possible that NGINX Gateway Fabric will never support some resources or fields of the Gateway API. They will be documented on a case by case basis. {{< /note >}} - ---- - -## Resources - -Each resource below includes the support status of their corresponding fields. - -For a description of each field, visit the [Gateway API documentation](https://gateway-api.sigs.k8s.io/references/spec/). - -### GatewayClass - -{{< bootstrap-table "table table-striped table-bordered" >}} - -| Resource | Core Support Level | Extended Support Level | Implementation-Specific Support Level | API Version | API Release Channel | -|--------------|--------------------|------------------------|---------------------------------------|-------------|---------------------| -| GatewayClass | Supported | Not supported | Supported | v1 | Standard | - -{{< /bootstrap-table >}} - -NGINX Gateway Fabric supports a single GatewayClass resource configured with the `--gatewayclass` flag of the [static-mode]({{< relref "/reference/cli-help.md#static-mode">}}) command. - -**Fields**: - -- `spec` - - `controllerName` - supported. - - `parametersRef` - NginxProxy resource supported. - - `description` - supported. -- `status` - - `conditions` - supported (Condition/Status/Reason): - - `Accepted/True/Accepted` - - `Accepted/False/InvalidParameters` - - `Accepted/False/UnsupportedVersion` - - `Accepted/False/GatewayClassConflict`: Custom reason for when the GatewayClass references this controller, but - a different GatewayClass name is provided to the controller via the command-line argument. - - `SupportedVersion/True/SupportedVersion` - - `SupportedVersion/False/UnsupportedVersion` - ---- - -### Gateway - -{{< bootstrap-table "table table-striped table-bordered" >}} - -| Resource | Core Support Level | Extended Support Level | Implementation-Specific Support Level | API Version | API Release Channel | -|----------|--------------------|------------------------|---------------------------------------|-------------|---------------------| -| Gateway | Supported | Partially supported | Not supported | v1 | Standard | - -{{< /bootstrap-table >}} - -NGINX Gateway Fabric supports a single Gateway resource. The Gateway resource must reference NGINX Gateway Fabric's corresponding GatewayClass. - -See the [static-mode]({{< relref "/reference/cli-help.md#static-mode">}}) command for more information. - -**Fields**: - -- `spec` - - `gatewayClassName`: Supported. - - `listeners` - - `name`: Supported. - - `hostname`: Supported. - - `port`: Supported. - - `protocol`: Partially supported. Allowed values: `HTTP`, `HTTPS`. - - `tls` - - `mode`: Partially supported. Allowed value: `Terminate`. - - `certificateRefs` - The TLS certificate and key must be stored in a Secret resource of type `kubernetes.io/tls`. Only a single reference is supported. - - `options`: Not supported. - - `allowedRoutes`: Supported. - - `addresses`: Not supported. -- `status` - - `addresses`: Partially supported (LoadBalancer and Pod IP). - - `conditions`: Supported (Condition/Status/Reason): - - `Accepted/True/Accepted` - - `Accepted/True/ListenersNotValid` - - `Accepted/False/ListenersNotValid` - - `Accepted/False/Invalid` - - `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. - NGINX Gateway Fabric 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. NGINX Gateway Fabric only supports a single Gateway. - - `listeners` - - `name`: Supported. - - `supportedKinds`: Supported. - - `attachedRoutes`: Supported. - - `conditions`: Supported (Condition/Status/Reason): - - `Accepted/True/Accepted` - - `Accepted/False/UnsupportedProtocol` - - `Accepted/False/InvalidCertificateRef` - - `Accepted/False/ProtocolConflict` - - `Accpeted/False/HostnameConflict` - - `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. NGINX Gateway Fabric only supports a single Gateway. - - `Programmed/True/Programmed` - - `Programmed/False/Invalid` - - `ResolvedRefs/True/ResolvedRefs` - - `ResolvedRefs/False/InvalidCertificateRef` - - `ResolvedRefs/False/InvalidRouteKinds` - - `Conflicted/True/ProtocolConflict` - - `Conflicted/True/HostnameConflict` - - `Conflicted/False/NoConflicts` - ---- - -### HTTPRoute - -{{< bootstrap-table "table table-striped table-bordered" >}} - -| Resource | Core Support Level | Extended Support Level | Implementation-Specific Support Level | API Version | API Release Channel | -|-----------|--------------------|------------------------|---------------------------------------|-------------|---------------------| -| HTTPRoute | Supported | Partially supported | Not supported | v1 | Standard | - -{{< /bootstrap-table >}} - -**Fields**: - -- `spec` - - `parentRefs`: Partially supported. Port not supported. - - `hostnames`: Supported. - - `rules` - - `matches` - - `path`: Partially supported. Only `PathPrefix` and `Exact` types. - - `headers`: Partially supported. Only `Exact` type. - - `queryParams`: Partially supported. Only `Exact` type. - - `method`: Supported. - - `filters` - - `type`: Supported. - - `requestRedirect`: Supported. If multiple filters are configured, NGINX Gateway Fabric will choose the first and ignore the rest. Incompatible with `urlRewrite`. - - `requestHeaderModifier`: Supported. If multiple filters are configured, NGINX Gateway Fabric will choose the first and ignore the rest. - - `urlRewrite`: Supported. If multiple filters are configured, NGINX Gateway Fabric will choose the first and ignore the rest. Incompatible with `requestRedirect`. - - `responseHeaderModifier`: Supported. If multiple filters are configured, NGINX Gateway Fabric will choose the first and ignore the rest. - - `requestMirror`, `extensionRef`: Not supported. - - `backendRefs`: Partially supported. Backend ref `filters` are not supported. -- `status` - - `parents` - - `parentRef`: Supported. - - `controllerName`: Supported. - - `conditions`: Partially supported. Supported (Condition/Status/Reason): - - `Accepted/True/Accepted` - - `Accepted/False/NoMatchingListenerHostname` - - `Accepted/False/NoMatchingParent` - - `Accepted/False/NotAllowedByListeners` - - `Accepted/False/UnsupportedValue`: Custom reason for when the HTTPRoute includes an invalid or unsupported value. - - `Accepted/False/InvalidListener`: Custom reason for when the HTTPRoute references an invalid listener. - - `Accepted/False/GatewayNotProgrammed`: Custom reason for when the Gateway is not Programmed. HTTPRoute can be valid and configured, but will maintain this status as long as the Gateway is not Programmed. - - `Accepted/False/GatewayIgnored`: Custom reason for when the Gateway is ignored by NGINX Gateway Fabric. NGINX Gateway Fabric only supports one Gateway. - - `ResolvedRefs/True/ResolvedRefs` - - `ResolvedRefs/False/InvalidKind` - - `ResolvedRefs/False/RefNotPermitted` - - `ResolvedRefs/False/BackendNotFound` - - `ResolvedRefs/False/UnsupportedValue`: Custom reason for when one of the HTTPRoute rules has a backendRef with an unsupported value. - - `ResolvedRefs/False/InvalidIPFamily`: Custom reason for when one of the HTTPRoute rules has a backendRef that has an invalid IPFamily. - - `PartiallyInvalid/True/UnsupportedValue` - ---- - -### GRPCRoute - -{{< bootstrap-table "table table-striped table-bordered" >}} - -| Resource | Core Support Level | Extended Support Level | Implementation-Specific Support Level | API Version | API Release Channel | -|-----------|--------------------|------------------------|---------------------------------------|-------------|---------------------| -| GRPCRoute | Supported | Partially supported | Not supported | v1 | Standard | - -{{< /bootstrap-table >}} - -**Fields**: - -- `spec` - - `parentRefs`: Partially supported. Port not supported. - - `hostnames`: Supported. - - `rules` - - `matches` - - `method`: Partially supported. Only `Exact` type with both `method.service` and `method.method` specified. - - `headers`: Partially supported. Only `Exact` type. - - `filters` - - `type`: Supported. - - `requestHeaderModifier`: Supported. If multiple filters are configured, NGINX Gateway Fabric will choose the first and ignore the rest. - - `responseHeaderModifier`: Supported. If multiple filters are configured, NGINX Gateway Fabric will choose the first and ignore the rest. - - `requestMirror`, `extensionRef`: Not supported. - - `backendRefs`: Partially supported. Backend ref `filters` are not supported. -- `status` - - `parents` - - `parentRef`: Supported. - - `controllerName`: Supported. - - `conditions`: Partially supported. Supported (Condition/Status/Reason): - - `Accepted/True/Accepted` - - `Accepted/False/NoMatchingListenerHostname` - - `Accepted/False/NoMatchingParent` - - `Accepted/False/NotAllowedByListeners` - - `Accepted/False/UnsupportedValue`: Custom reason for when the GRPCRoute includes an invalid or unsupported value. - - `Accepted/False/InvalidListener`: Custom reason for when the GRPCRoute references an invalid listener. - - `Accepted/False/GatewayNotProgrammed`: Custom reason for when the Gateway is not Programmed. GRPCRoute can be valid and configured, but will maintain this status as long as the Gateway is not Programmed. - - `ResolvedRefs/True/ResolvedRefs` - - `ResolvedRefs/False/InvalidKind` - - `ResolvedRefs/False/RefNotPermitted` - - `ResolvedRefs/False/BackendNotFound` - - `ResolvedRefs/False/UnsupportedValue`: Custom reason for when one of the GRPCRoute rules has a backendRef with an unsupported value. - - `PartiallyInvalid/True/UnsupportedValue` - ---- - -### ReferenceGrant - -{{< bootstrap-table "table table-striped table-bordered" >}} - -| Resource | Core Support Level | Extended Support Level | Implementation-Specific Support Level | API Version | API Release Channel | -|----------------|--------------------|------------------------|---------------------------------------|-------------|---------------------| -| ReferenceGrant | Supported | N/A | Not supported | v1beta1 | Standard | - -{{< /bootstrap-table >}} - -Fields: - -- `spec` - - `to` - - `group` - supported. - - `kind` - supports `Secret` and `Service`. - - `name`- supported. - - `from` - - `group` - supported. - - `kind` - supports `Gateway` and `HTTPRoute`. - - `namespace`- supported. - ---- - -### TLSRoute - -{{< bootstrap-table "table table-striped table-bordered" >}} - -| Resource | Core Support Level | Extended Support Level | Implementation-Specific Support Level | API Version | API Release Channel | -|----------|--------------------|------------------------|---------------------------------------|-------------|---------------------| -| TLSRoute | Supported | Not supported | Not supported | v1alpha2 | Experimental | - -{{< /bootstrap-table >}} - -**Fields**: - -- `spec` - - `parentRefs`: Partially supported. Port not supported. - - `hostnames`: Supported. - - `rules` - - `backendRefs`: Partially supported. Only one backend ref allowed. - - `weight`: Not supported. -- `status` - - `parents` - - `parentRef`: Supported. - - `controllerName`: Supported. - - `conditions`: Supported (Condition/Status/Reason): - - `Accepted/True/Accepted` - - `Accepted/False/NoMatchingListenerHostname` - - `Accepted/False/NoMatchingParent` - - `Accepted/False/NotAllowedByListeners` - - `Accepted/False/UnsupportedValue`: Custom reason for when the TLSRoute includes an invalid or unsupported value. - - `Accepted/False/InvalidListener`: Custom reason for when the TLSRoute references an invalid listener. - - `Accepted/False/GatewayNotProgrammed`: Custom reason for when the Gateway is not Programmed. TLSRoute can be valid and configured, but will maintain this status as long as the Gateway is not Programmed. - - `Accepted/False/HostnameConflict`: Custom reason for when the TLSRoute has a hostname that conflicts with another TLSRoute on the same port. - - `ResolvedRefs/True/ResolvedRefs` - - `ResolvedRefs/False/InvalidKind` - - `ResolvedRefs/False/RefNotPermitted` - - `ResolvedRefs/False/BackendNotFound` - - `ResolvedRefs/False/UnsupportedValue`: Custom reason for when one of the TLSRoute rules has a backendRef with an unsupported value. - - `PartiallyInvalid/True/UnsupportedValue` - ---- - -### TCPRoute - -{{< bootstrap-table "table table-striped table-bordered" >}} - -| Resource | Core Support Level | Extended Support Level | Implementation-Specific Support Level | API Version | API Release Channel | -|----------|--------------------|------------------------|---------------------------------------|-------------|---------------------| -| TCPRoute | Not supported | Not supported | Not supported | v1alpha2 | Experimental | - -{{< /bootstrap-table >}} - ---- - -### UDPRoute - -{{< bootstrap-table "table table-striped table-bordered" >}} - -| Resource | Core Support Level | Extended Support Level | Implementation-Specific Support Level | API Version | API Release Channel | -|----------|--------------------|------------------------|---------------------------------------|-------------|---------------------| -| UDPRoute | Not supported | Not supported | Not supported | v1alpha2 | Experimental | - -{{< /bootstrap-table >}} - ---- - -### BackendTLSPolicy - -{{< bootstrap-table "table table-striped table-bordered" >}} - -| Resource | Core Support Level | Extended Support Level | Implementation-Specific Support Level | API Version | API Release Channel | -|------------------|--------------------|------------------------|---------------------------------------|-------------|---------------------| -| BackendTLSPolicy | Supported | Supported | Not supported | v1alpha3 | Experimental | - -{{< /bootstrap-table >}} - -Fields: - -- `spec` - - `targetRefs` - - `group` - supported. - - `kind` - supports `Service`. - - `name` - supported. - - `validation` - - `caCertificateRefs` - supports single reference to a `ConfigMap`, with the CA certificate in a key named `ca.crt`. - - `name`- supported. - - `group` - supported. - - `kind` - supports `ConfigMap`. - - `hostname` - supported. - - `wellKnownCertificates` - supports `System`. This will set the CA certificate to the Alpine system root CA path `/etc/ssl/cert.pem`. NB: This option will only work if the NGINX image used is Alpine based. The NGF NGINX images are Alpine based by default. -- `status` - - `ancestors` - - `ancestorRef` - supported. - - `controllerName`: supported. - - `conditions`: Partially supported. Supported (Condition/Status/Reason): - - `Accepted/True/PolicyReasonAccepted` - - `Accepted/False/PolicyReasonInvalid` - -{{}}If multiple `backendRefs` are defined for a HTTPRoute rule, all the referenced Services *must* have matching BackendTLSPolicy configuration. BackendTLSPolicy configuration is considered to be matching if 1. CACertRefs reference the same ConfigMap, or 2. WellKnownCACerts are the same, and 3. Hostname is the same.{{}} - -### Custom Policies - -{{< bootstrap-table "table table-striped table-bordered" >}} - -| Resource | Core Support Level | Extended Support Level | Implementation-Specific Support Level | API Version | API Release Channel | -|-----------------|--------------------|------------------------|---------------------------------------|-------------|---------------------| -| Custom policies | N/A | N/A | Supported | N/A | N/A | - -{{< /bootstrap-table >}} - -Custom policies are NGINX Gateway Fabric-specific CRDs (Custom Resource Definitions) that support features such as tracing, and client connection settings. These important data-plane features are not part of the Gateway API specifications. -While these CRDs are not part of the Gateway API, the mechanism to attach them to Gateway API resources is part of the Gateway API. See the [Policy Attachment documentation](https://gateway-api.sigs.k8s.io/references/policy-attachment/). - -See the [custom policies]({{< relref "overview/custom-policies.md" >}}) document for more information. diff --git a/site/content/overview/gateway-architecture.md b/site/content/overview/gateway-architecture.md deleted file mode 100644 index 2f270fe947..0000000000 --- a/site/content/overview/gateway-architecture.md +++ /dev/null @@ -1,115 +0,0 @@ ---- -title: "Gateway architecture" -weight: 100 -toc: true -docs: "DOCS-1413" ---- - -Learn about the architecture and design principles of NGINX Gateway Fabric. - -The intended audience for this information is primarily the two following groups: - - -- _Cluster Operators_ who would like to know how the software works and understand how it can fail. -- _Developers_ who would like to [contribute](https://github.com/nginx/nginx-gateway-fabric/blob/main/CONTRIBUTING.md) to the project. - -The reader needs to be familiar with core Kubernetes concepts, such as pods, deployments, services, and endpoints. For an understanding of how NGINX itself works, you can read the ["Inside NGINX: How We Designed for Performance & Scale"](https://www.nginx.com/blog/inside-nginx-how-we-designed-for-performance-scale/) blog post. - -## Overview - -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_, _GRPCRoute_, _TCPRoute_, _TLSRoute_, and _UDPRoute_ -- to configure an HTTP or TCP/UDP load balancer, reverse proxy, or API gateway for applications running on Kubernetes. NGINX Gateway Fabric supports a subset of the Gateway API. - -For a list of supported Gateway API resources and features, see the [Gateway API Compatibility]({{< relref "/overview/gateway-api-compatibility.md" >}}) documentation. - -We have more information regarding our [design principles](https://github.com/nginx/nginx-gateway-fabric/blob/v1.6.0/docs/developer/design-principles.md) in the project's GitHub repository. - -## NGINX Gateway Fabric at a high level - -This figure depicts an example of NGINX Gateway Fabric exposing two web applications within a Kubernetes cluster to clients on the internet: - -{{}} - -{{< note >}} The figure does not show many of the necessary Kubernetes resources the Cluster Operators and Application Developers need to create, like deployment and services. {{< /note >}} - -The figure shows: - -- A _Kubernetes cluster_. -- Users _Cluster Operator_, _Application Developer A_ and _Application Developer B_. These users interact with the cluster through the Kubernetes API by creating Kubernetes objects. -- _Clients A_ and _Clients B_ connect to _Applications A_ and _B_, respectively, which they have deployed. -- The _NGF Pod_, [deployed by _Cluster Operator_]({{< relref "installation">}}) 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 cluster. This Gateway includes a listener with a hostname `*.example.com`. Application Developers have the ability to attach their application's routes to this Gateway if their application's hostname matches `*.example.com`. -- _Application A_ with two pods deployed in the _applications_ namespace by _Application Developer A_. To expose the application to its clients (_Clients A_) via the host `a.example.com`, _Application Developer A_ creates _HTTPRoute A_ 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 _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_. - -The yellow and purple arrows represent connections related to the client traffic, and the black arrows represent access to the Kubernetes API. The resources within the cluster are color-coded based on the user responsible for their creation. - -For example, the Cluster Operator is denoted by the color green, indicating they create and manage all the green resources. - -## The NGINX Gateway Fabric pod - -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 traffic to the backend applications. -1. `nginx-gateway`: the control plane. Watches Kubernetes objects and configures NGINX. - -These containers are deployed in a single pod as a Kubernetes Deployment. - -The `nginx-gateway`, or the control plane, is a [Kubernetes controller](https://kubernetes.io/docs/concepts/architecture/controller/), written with the [controller-runtime](https://github.com/kubernetes-sigs/controller-runtime) library. It watches Kubernetes objects (services, endpoints, secrets, and Gateway API CRDs), translates them to NGINX configuration, and configures NGINX. - -This configuration happens in two stages: - -1. NGINX configuration files are written to the NGINX configuration volume shared by the `nginx-gateway` and `nginx` containers. -1. The control plane reloads the NGINX process. - -This is possible because the two containers [share a process namespace](https://kubernetes.io/docs/tasks/configure-pod-container/share-process-namespace/), allowing the NGINX Gateway Fabric process to send signals to the NGINX main process. - -The following diagram represents the connections, relationships and interactions between process with the `nginx` and `nginx-gateway` containers, as well as external processes/entities. - -{{}} - -The following list describes the connections, preceeded by their types in parentheses. For brevity, the suffix "process" has been omitted from the process descriptions. - -1. (HTTPS) - - 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](https://github.com/nginx/nginx-gateway-fabric/tree/v1.6.0/charts/nginx-gateway-fabric#configuration) is enabled, only the _NGF_ pod that is leading will write statuses to the _Kubernetes API_. -1. (HTTP, HTTPS) _Prometheus_ fetches the `controller-runtime` and NGINX metrics via an HTTP endpoint that _NGF_ exposes (`:9113/metrics` by default). Prometheus is **not** required by NGINX Gateway Fabric, and its endpoint can be turned off. -1. (File I/O) - - 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](https://kubernetes.io/docs/concepts/configuration/secret/#tls-secrets) referenced in the accepted Gateway resource to the `nginx-secrets` volume at the path `/etc/nginx/secrets`. - - 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_. -1. (File I/O) _NGF_ writes logs to its _stdout_ and _stderr_, which are collected by the container runtime. -1. (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. -1. (Signal) To reload NGINX, _NGF_ sends the [reload signal](https://nginx.org/en/docs/control.html) to the **NGINX master**. -1. (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 it starts or during a reload. These files, certificates, and keys are stored in the `nginx-conf` and `nginx-secrets` volumes that are mounted to both the `nginx-gateway` and `nginx` containers. -1. (File I/O) - - Write: The _NGINX master_ writes to the auxiliary Unix sockets folder, which is located in the `/var/run/nginx` - directory. - - Read: The _NGINX master_ reads the `nginx.conf` file from the `/etc/nginx` directory. This [file](https://github.com/nginx/nginx-gateway-fabric/blob/v1.6.0/internal/mode/static/nginx/conf/nginx.conf) contains the global and http configuration settings for NGINX. In addition, _NGINX master_ reads the NJS modules referenced in the configuration when it starts or during a reload. NJS modules are stored in the `/usr/lib/nginx/modules` directory. -1. (File I/O) The _NGINX master_ sends logs to its _stdout_ and _stderr_, which are collected by the container runtime. -1. (File I/O) An _NGINX worker_ writes logs to its _stdout_ and _stderr_, which are collected by the container runtime. -1. (Signal) The _NGINX master_ controls the [lifecycle of _NGINX workers_](https://nginx.org/en/docs/control.html#reconfiguration) it creates workers with the new configuration and shutdowns workers with the old configuration. -1. (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. -1. (HTTP, HTTPS) A _client_ sends traffic to and receives traffic from any of the _NGINX workers_ on ports 80 and 443. -1. (HTTP, HTTPS) An _NGINX worker_ sends traffic to and receives traffic from the _backends_. - -Below are additional connections not depcited on the diagram: - -- (HTTPS) NGF sends [product telemetry data]({{< relref "/overview/product-telemetry.md" >}}) to the F5 telemetry service. - -### Differences with NGINX Plus - -The previous diagram depicts NGINX Gateway Fabric using NGINX Open Source. NGINX Gateway Fabric with NGINX Plus has the following difference: - -- An _admin_ can connect to the NGINX Plus API using port 8765. NGINX only allows connections from localhost. - -## Updating upstream servers - -The normal process to update any changes to NGINX is to write the configuration files and reload NGINX. However, when using NGINX Plus, we can take advantage of the [NGINX Plus API](http://nginx.org/en/docs/http/ngx_http_api_module.html) to limit the amount of reloads triggered when making changes to NGINX. Specifically, when the endpoints of an application in Kubernetes change (Such as scaling up or down), the NGINX Plus API is used to update the upstream servers in NGINX with the new endpoints without a reload. This reduces the potential for a disruption that could occur when reloading. - -## Pod readiness - -The `nginx-gateway` container includes a readiness endpoint available through the path `/readyz`. A [readiness probe](https://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#define-readiness-probes) periodically checks the endpoint on startup, returning a `200 OK` response when the pod can accept traffic for the data plane. Once the control plane successfully starts, the pod becomes ready. - -If there are relevant Gateway API resources in the cluster, the control plane will generate the first NGINX configuration and successfully reload NGINX before the pod is considered ready. diff --git a/site/content/overview/nginx-plus.md b/site/content/overview/nginx-plus.md deleted file mode 100644 index bc67839bf0..0000000000 --- a/site/content/overview/nginx-plus.md +++ /dev/null @@ -1,15 +0,0 @@ ---- -title: "Advanced features with NGINX Plus" -weight: 400 -toc: true -docs: "DOCS-1415" ---- - -NGINX Gateway Fabric can use NGINX Open Source or NGINX Plus as its data plane. [NGINX Plus](https://www.nginx.com/products/nginx/) is the closed source, commercial version of NGINX. Using NGINX Plus as the data plane offers additional benefits compared to the open source version. - -## Benefits of NGINX Plus - -- **Robust metrics**: A plethora of [additional Prometheus metrics](https://github.com/nginx/nginx-prometheus-exporter#metrics-for-nginx-plus) are available. -- **Live activity monitoring**: The [NGINX Plus dashboard]({{< relref "/how-to/monitoring/dashboard.md" >}}) shows real-time metrics and information about your server infrastructure. -- **Dynamic upstream configuration**: NGINX Plus can dynamically reconfigure upstream servers when applications in Kubernetes scale up and down, preventing the need for an NGINX reload. -- **Support**: With an NGINX Plus license, you can take advantage of full [support](https://my.f5.com/manage/s/article/K000140156/) from NGINX, Inc. diff --git a/site/content/overview/product-telemetry.md b/site/content/overview/product-telemetry.md deleted file mode 100644 index eb69961c92..0000000000 --- a/site/content/overview/product-telemetry.md +++ /dev/null @@ -1,56 +0,0 @@ ---- -title: "Product telemetry" -weight: 500 -toc: true ---- - -Learn why, what and how NGINX Gateway Fabric collects telemetry. - -## Overview - -NGINX Gateway Fabric collects telemetry by default, which allows its developers to understand what features are most popular with its user base. This data is used to triage development work, prioritizing features and functionality that will positively impact the most people. - -Telemetry data is collected once every 24 hours and sent to a service managed by F5 over HTTPS. Personally identifiable information (PII) is **not** collected. The list of data points that are collected can be seen below. - -**If you would prefer to not have data collected, you can [opt-out](#opt-out) when installing NGINX Gateway Fabric.** - -## Collected data - -- **Kubernetes:** - - **Platform:** the Kubernetes platform that NGINX Gateway Fabric is running on - - **Version:** the Kubernetes version that NGINX Gateway Fabric is running on. - - **Architecture:** the architecture that the Kubernetes environment is running on. -- **Cluster UID:** the UID of the `kube-system` Namespace in the cluster that NGINX Gateway Fabric is running in. -- **Cluster Node Count:** the number of Nodes in the cluster. -- **Version:** the version of the NGINX Gateway Fabric Deployment. -- **Deployment UID:** the UID of the NGINX Gateway Fabric Deployment. -- **Deployment Replica Count:** the count of NGINX Gateway Fabric Pods. -- **Image Build Source:** whether the image was built by GitHub or locally (values are `gha`, `local`, or `unknown`). The source repository of the images is **not** collected. -- **Deployment Flags:** a list of NGINX Gateway Fabric Deployment flags that are specified by a user. The actual values of non-boolean flags are **not** collected; we only record that they are either `true` or `false` for boolean flags and `default` or `user-defined` for the rest. -- **Count of Resources:** the total count of resources related to NGINX Gateway Fabric. This includes `GatewayClasses`, `Gateways`, `HTTPRoutes`,`GRPCRoutes`, `TLSRoutes`, `Secrets`, `Services`, `BackendTLSPolicies`, `ClientSettingsPolicies`, `NginxProxies`, `ObservabilityPolicies`, `UpstreamSettingsPolicies`, `SnippetsFilters`, and `Endpoints`. The data within these resources is **not** collected. -- **SnippetsFilters Info**a list of directive-context strings from applied SnippetFilters and a total count per strings. The actual value of any NGINX directive is **not** collected. -This data is used to identify the following information: - -- The flavors of Kubernetes environments that are most popular among our users. -- The number of unique NGINX Gateway Fabric installations. -- The scale of NGINX Gateway Fabric Deployments. -- The scale of Gateway API resources. -- The used features of NGINX Gateway Fabric. - -Our goal is to publicly discuss data trends to drive roadmap discussions in our [Community Meeting](https://github.com/nginx/nginx-gateway-fabric/discussions/1472). - -## Opt out - -You can disable product telemetry when installing NGINX Gateway Fabric using an option dependent on your installation method: - -### Helm - -Set the `nginxGateway.productTelemetry.enable=false` flag either in the `values.yaml` file or when installing: - -```shell -helm install ... --set nginxGateway.productTelemetry.enable=false -``` - -### Manifests - -Add the `--product-telemetry-disable` flag to the `nginx-gateway` container in your Deployment manifest. diff --git a/site/content/overview/resource-validation.md b/site/content/overview/resource-validation.md deleted file mode 100644 index fba7b42a7d..0000000000 --- a/site/content/overview/resource-validation.md +++ /dev/null @@ -1,170 +0,0 @@ ---- -title: "Resource validation" -weight: 600 -toc: true -docs: "DOCS-1414" ---- - -## Overview - -This document describes how NGINX Gateway Fabric validates Gateway API and NGINX Gateway Fabric Kubernetes resources. - -## Gateway API resource validation - -NGINX Gateway Fabric validates Gateway API resources for several reasons: - -- _Robustness_: to gracefully handle invalid resources. -- _Security_: to prevent malicious input from propagating to the NGINX configuration. -- _Correctness_: to conform to the Gateway API specification for handling invalid resources. - -The process involves four different steps, explained in detail in this document, with the goal of making sure that NGINX continues to handle traffic even if invalid Gateway API resources were created. - -### Step 1 - OpenAPI Scheme validation by Kubernetes API Server - -The Kubernetes API server validates Gateway API resources against the OpenAPI schema embedded in the Gateway API CRDs. For example, if you create an HTTPRoute with an invalid hostname "cafe.!@#$%example.com", the API server will reject it with the following error: - -```shell -kubectl apply -f coffee-route.yaml -``` - -```text -The HTTPRoute "coffee" is invalid: spec.hostnames[0]: Invalid value: "cafe.!@#$%example.com": spec.hostnames[0] in body should match '^(\*\.)?[a-z0-9]([-a-z0-9]*[a-z0-9])?(\.[a-z0-9]([-a-z0-9]*[a-z0-9])?)*$' -``` - -{{< note >}}While unlikely, bypassing this validation step is possible if the Gateway API CRDs are modified to remove the validation. If this happens, Step 4 will reject any invalid values (from NGINX perspective).{{< /note >}} - -### Step 2 - CEL validation by Kubernetes API Server - -The Kubernetes API server validates Gateway API resources using CEL validation embedded in the Gateway API CRDs. It validates Gateway API resources using advanced rules unavailable in the OpenAPI schema validation. For example, if you create a Gateway resource with a TCP listener that configures a hostname, the CEL validation will reject it with the following error: - -```shell -kubectl apply -f some-gateway.yaml -``` - -```text -The Gateway "some-gateway" is invalid: spec.listeners: Invalid value: "array": hostname must not be specified for protocols ['TCP', 'UDP'] -``` - -More information on CEL in Kubernetes can be found [here](https://kubernetes.io/docs/reference/using-api/cel/). - - -### Step 3 - Validation by NGINX Gateway Fabric - -This step catches the following cases of invalid values: - -- Valid values from the Gateway API perspective but not supported by NGINX Gateway Fabric yet. For example, a feature in an HTTPRoute routing rule. For the list of supported features see [Gateway API Compatibility]({{< relref "gateway-api-compatibility.md" >}}) doc. -- Valid values from the Gateway API perspective, but invalid for NGINX, because NGINX has stricter validation requirements for certain fields. These values will cause NGINX to fail to reload or operate erroneously. -- Invalid values (both from the Gateway API and NGINX perspectives) that were not rejected because Step 1 was bypassed. Similar to the previous case, these values will cause NGINX to fail to reload or operate erroneously. -- Malicious values that inject unrestricted NGINX config into the NGINX configuration (similar to an SQL injection attack). - -Below is an example of how NGINX Gateway Fabric rejects an invalid resource. The validation error is reported via the status: - -```shell -kubectl describe httproutes.gateway.networking.k8s.io coffee -``` - -```text -. . . -Status: - Parents: - Conditions: - Last Transition Time: 2023-03-30T22:37:53Z - Message: All rules are invalid: spec.rules[0].matches[0].method: Unsupported value: "CONNECT": supported values: "DELETE", "GET", "HEAD", "OPTIONS", "PATCH", "POST", "PUT" - Observed Generation: 1 - Reason: UnsupportedValue - Status: False - Type: Accepted - Controller Name: gateway.nginx.org/nginx-gateway-controller - Parent Ref: - Group: gateway.networking.k8s.io - Kind: Gateway - Name: prod-gateway - Namespace: default - Section Name: http -``` - -{{< note >}}This validation step always runs and cannot be bypassed.{{< /note >}} - -### Confirm validation - -To confirm that a resource is valid and accepted by NGINX Gateway Fabric, 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 NGINX Gateway Fabric accepts a parentRef, the status of that parentRef will look like this: - -```text -Status: - Parents: - Conditions: - Last Transition Time: 2023-03-30T23:18:00Z - Message: The route is accepted - Observed Generation: 2 - Reason: Accepted - Status: True - Type: Accepted - Controller Name: gateway.nginx.org/nginx-gateway-controller - Parent Ref: - Group: gateway.networking.k8s.io - Kind: Gateway - Name: gateway - Namespace: default - Section Name: http -``` - -{{< note>}}Make sure the reported observed generation is the same as the resource generation.{{< /note >}} - -## NGINX Gateway Fabric Resource validation - -### Step 1 - OpenAPI Scheme validation by Kubernetes API Server - -The Kubernetes API server validates NGINX Gateway Fabric resources against the OpenAPI schema embedded in the NGINX Gateway Fabric CRDs. For example, if you create an NginxGateway with an invalid logging level, "some-level", the API server will reject it with the following error: - -```shell -kubectl apply -f nginx-gateway-config.yaml -``` - -```text -The NginxGateway "nginx-gateway-config" is invalid: spec.logging.level: Unsupported value: "some-level": supported values: "info", "debug", "error" -``` - -{{< note >}}While unlikely, bypassing this validation step is possible if the NGINX Gateway Fabric CRDs are modified to remove the validation. If this happens, Step 2 will report an error in the resource's status.{{< /note >}} - -### Step 2 - Validation by NGINX Gateway Fabric - -This step validates the settings in the NGINX Gateway Fabric CRDs and rejects invalid resources. The validation error is reported via the status and as an Event. For example: - -```shell -kubectl describe nginxgateways.gateway.nginx.org nginx-gateway-config -``` - -Status: - -```text -... -Status: - Conditions: - Last Transition Time: 2023-12-15T21:02:30Z - Message: Failed to update control plane configuration: logging.level: Unsupported value: "some-level": supported values: "info", "debug", "error" - Observed Generation: 1 - Reason: Invalid - Status: False - Type: Valid -``` - -Event: - -```text -Warning UpdateFailed 1s (x2 over 1s) nginx-gateway-fabric-nginx Failed to update control plane configuration: logging.level: Unsupported value: "some-level": supported values: "info", "debug", "error" -``` - -### Confirm validation - -To confirm that a resource is valid and accepted by NGINX Gateway Fabric, check that the **Valid** condition in the resource status has the Status field set to **True**. For example, the status of a valid NginxGateway will look like this: - -```text -Status: - Conditions: - Last Transition Time: 2023-12-15T21:04:49Z - Message: NginxGateway is valid - Observed Generation: 1 - Reason: Valid - Status: True - Type: Valid -``` diff --git a/site/content/reference/_index.md b/site/content/reference/_index.md deleted file mode 100644 index 2dff1597cd..0000000000 --- a/site/content/reference/_index.md +++ /dev/null @@ -1,4 +0,0 @@ ---- -title: "Reference" -weight: 500 ---- diff --git a/site/content/reference/api.md b/site/content/reference/api.md deleted file mode 100644 index 77eafa4ac6..0000000000 --- a/site/content/reference/api.md +++ /dev/null @@ -1,2625 +0,0 @@ ---- -title: "API reference" -weight: 100 -toc: false ---- -## Overview -NGINX Gateway API Reference -

Packages:

- -

gateway.nginx.org/v1alpha1

-

-

Package v1alpha1 contains API Schema definitions for the -gateway.nginx.org API group.

-

-Resource Types: - -

ClientSettingsPolicy -ΒΆ -

-

-

ClientSettingsPolicy is an Inherited Attached Policy. It provides a way to configure the behavior of the connection -between the client and NGINX Gateway Fabric.

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-apiVersion
-string
- -gateway.nginx.org/v1alpha1 - -
-kind
-string -
ClientSettingsPolicy
-metadata
- - -Kubernetes meta/v1.ObjectMeta - - -
-Refer to the Kubernetes API documentation for the fields of the -metadata field. -
-spec
- - -ClientSettingsPolicySpec - - -
-

Spec defines the desired state of the ClientSettingsPolicy.

-
-
- - - - - - - - - - - - - -
-body
- - -ClientBody - - -
-(Optional) -

Body defines the client request body settings.

-
-keepAlive
- - -ClientKeepAlive - - -
-(Optional) -

KeepAlive defines the keep-alive settings.

-
-targetRef
- - -sigs.k8s.io/gateway-api/apis/v1alpha2.LocalPolicyTargetReference - - -
-

TargetRef identifies an API object to apply the policy to. -Object must be in the same namespace as the policy. -Support: Gateway, HTTPRoute, GRPCRoute.

-
-
-status
- - -sigs.k8s.io/gateway-api/apis/v1alpha2.PolicyStatus - - -
-

Status defines the state of the ClientSettingsPolicy.

-
-

NginxGateway -ΒΆ -

-

-

NginxGateway represents the dynamic configuration for an NGINX Gateway Fabric control plane.

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-apiVersion
-string
- -gateway.nginx.org/v1alpha1 - -
-kind
-string -
NginxGateway
-metadata
- - -Kubernetes meta/v1.ObjectMeta - - -
-Refer to the Kubernetes API documentation for the fields of the -metadata field. -
-spec
- - -NginxGatewaySpec - - -
-

NginxGatewaySpec defines the desired state of the NginxGateway.

-
-
- - - - - -
-logging
- - -Logging - - -
-(Optional) -

Logging defines logging related settings for the control plane.

-
-
-status
- - -NginxGatewayStatus - - -
-

NginxGatewayStatus defines the state of the NginxGateway.

-
-

NginxProxy -ΒΆ -

-

-

NginxProxy is a configuration object that is attached to a GatewayClass parametersRef. It provides a way -to configure global settings for all Gateways defined from the GatewayClass.

-

- - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-apiVersion
-string
- -gateway.nginx.org/v1alpha1 - -
-kind
-string -
NginxProxy
-metadata
- - -Kubernetes meta/v1.ObjectMeta - - -
-Refer to the Kubernetes API documentation for the fields of the -metadata field. -
-spec
- - -NginxProxySpec - - -
-

Spec defines the desired state of the NginxProxy.

-
-
- - - - - - - - - - - - - - - - - - - - - -
-ipFamily
- - -IPFamilyType - - -
-(Optional) -

IPFamily specifies the IP family to be used by the NGINX. -Default is “dual”, meaning the server will use both IPv4 and IPv6.

-
-telemetry
- - -Telemetry - - -
-(Optional) -

Telemetry specifies the OpenTelemetry configuration.

-
-rewriteClientIP
- - -RewriteClientIP - - -
-(Optional) -

RewriteClientIP defines configuration for rewriting the client IP to the original client’s IP.

-
-logging
- - -NginxLogging - - -
-(Optional) -

Logging defines logging related settings for NGINX.

-
-disableHTTP2
- -bool - -
-(Optional) -

DisableHTTP2 defines if http2 should be disabled for all servers. -Default is false, meaning http2 will be enabled for all servers.

-
-
-

ObservabilityPolicy -ΒΆ -

-

-

ObservabilityPolicy is a Direct Attached Policy. It provides a way to configure observability settings for -the NGINX Gateway Fabric data plane. Used in conjunction with the NginxProxy CRD that is attached to the -GatewayClass parametersRef.

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-apiVersion
-string
- -gateway.nginx.org/v1alpha1 - -
-kind
-string -
ObservabilityPolicy
-metadata
- - -Kubernetes meta/v1.ObjectMeta - - -
-Refer to the Kubernetes API documentation for the fields of the -metadata field. -
-spec
- - -ObservabilityPolicySpec - - -
-

Spec defines the desired state of the ObservabilityPolicy.

-
-
- - - - - - - - - -
-tracing
- - -Tracing - - -
-(Optional) -

Tracing allows for enabling and configuring tracing.

-
-targetRefs
- - -[]sigs.k8s.io/gateway-api/apis/v1alpha2.LocalPolicyTargetReference - - -
-

TargetRefs identifies the API object(s) to apply the policy to. -Objects must be in the same namespace as the policy. -Support: HTTPRoute, GRPCRoute.

-
-
-status
- - -sigs.k8s.io/gateway-api/apis/v1alpha2.PolicyStatus - - -
-

Status defines the state of the ObservabilityPolicy.

-
-

SnippetsFilter -ΒΆ -

-

-

SnippetsFilter is a filter that allows inserting NGINX configuration into the -generated NGINX config for HTTPRoute and GRPCRoute resources.

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-apiVersion
-string
- -gateway.nginx.org/v1alpha1 - -
-kind
-string -
SnippetsFilter
-metadata
- - -Kubernetes meta/v1.ObjectMeta - - -
-Refer to the Kubernetes API documentation for the fields of the -metadata field. -
-spec
- - -SnippetsFilterSpec - - -
-

Spec defines the desired state of the SnippetsFilter.

-
-
- - - - - -
-snippets
- - -[]Snippet - - -
-

Snippets is a list of NGINX configuration snippets. -There can only be one snippet per context. -Allowed contexts: main, http, http.server, http.server.location.

-
-
-status
- - -SnippetsFilterStatus - - -
-

Status defines the state of the SnippetsFilter.

-
-

UpstreamSettingsPolicy -ΒΆ -

-

-

UpstreamSettingsPolicy is a Direct Attached Policy. It provides a way to configure the behavior of -the connection between NGINX and the upstream applications.

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-apiVersion
-string
- -gateway.nginx.org/v1alpha1 - -
-kind
-string -
UpstreamSettingsPolicy
-metadata
- - -Kubernetes meta/v1.ObjectMeta - - -
-Refer to the Kubernetes API documentation for the fields of the -metadata field. -
-spec
- - -UpstreamSettingsPolicySpec - - -
-

Spec defines the desired state of the UpstreamSettingsPolicy.

-
-
- - - - - - - - - - - - - -
-zoneSize
- - -Size - - -
-(Optional) -

ZoneSize is the size of the shared memory zone used by the upstream. This memory zone is used to share -the upstream configuration between nginx worker processes. The more servers that an upstream has, -the larger memory zone is required. -Default: OSS: 512k, Plus: 1m. -Directive: https://nginx.org/en/docs/http/ngx_http_upstream_module.html#zone

-
-keepAlive
- - -UpstreamKeepAlive - - -
-(Optional) -

KeepAlive defines the keep-alive settings.

-
-targetRefs
- - -[]sigs.k8s.io/gateway-api/apis/v1alpha2.LocalPolicyTargetReference - - -
-

TargetRefs identifies API object(s) to apply the policy to. -Objects must be in the same namespace as the policy. -Support: Service

-

TargetRefs must be distinct. The name field must be unique for all targetRef entries in the UpstreamSettingsPolicy.

-
-
-status
- - -sigs.k8s.io/gateway-api/apis/v1alpha2.PolicyStatus - - -
-

Status defines the state of the UpstreamSettingsPolicy.

-
-

Address -ΒΆ -

-

-(Appears on: -RewriteClientIP) -

-

-

Address is a struct that specifies address type and value.

-

- - - - - - - - - - - - - - - - - -
FieldDescription
-type
- - -AddressType - - -
-

Type specifies the type of address.

-
-value
- -string - -
-

Value specifies the address value.

-
-

AddressType -(string alias)

ΒΆ -

-

-(Appears on: -Address) -

-

-

AddressType specifies the type of address.

-

- - - - - - - - - - - - - - -
ValueDescription

"CIDR"

CIDRAddressType specifies that the address is a CIDR block.

-

"Hostname"

HostnameAddressType specifies that the address is a Hostname.

-

"IPAddress"

IPAddressType specifies that the address is an IP address.

-
-

ClientBody -ΒΆ -

-

-(Appears on: -ClientSettingsPolicySpec) -

-

-

ClientBody contains the settings for the client request body.

-

- - - - - - - - - - - - - - - - - -
FieldDescription
-maxSize
- - -Size - - -
-(Optional) -

MaxSize sets the maximum allowed size of the client request body. -If the size in a request exceeds the configured value, -the 413 (Request Entity Too Large) error is returned to the client. -Setting size to 0 disables checking of client request body size. -Default: https://nginx.org/en/docs/http/ngx_http_core_module.html#client_max_body_size.

-
-timeout
- - -Duration - - -
-(Optional) -

Timeout defines a timeout for reading client request body. The timeout is set only for a period between -two successive read operations, not for the transmission of the whole request body. -If a client does not transmit anything within this time, the request is terminated with the -408 (Request Time-out) error. -Default: https://nginx.org/en/docs/http/ngx_http_core_module.html#client_body_timeout.

-
-

ClientKeepAlive -ΒΆ -

-

-(Appears on: -ClientSettingsPolicySpec) -

-

-

ClientKeepAlive defines the keep-alive settings for clients.

-

- - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-requests
- -int32 - -
-(Optional) -

Requests sets the maximum number of requests that can be served through one keep-alive connection. -After the maximum number of requests are made, the connection is closed. Closing connections periodically -is necessary to free per-connection memory allocations. Therefore, using too high maximum number of requests -is not recommended as it can lead to excessive memory usage. -Default: https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_requests.

-
-time
- - -Duration - - -
-(Optional) -

Time defines the maximum time during which requests can be processed through one keep-alive connection. -After this time is reached, the connection is closed following the subsequent request processing. -Default: https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_time.

-
-timeout
- - -ClientKeepAliveTimeout - - -
-(Optional) -

Timeout defines the keep-alive timeouts for clients.

-
-

ClientKeepAliveTimeout -ΒΆ -

-

-(Appears on: -ClientKeepAlive) -

-

-

ClientKeepAliveTimeout defines the timeouts related to keep-alive client connections. -Default: https://nginx.org/en/docs/http/ngx_http_core_module.html#keepalive_timeout.

-

- - - - - - - - - - - - - - - - - -
FieldDescription
-server
- - -Duration - - -
-(Optional) -

Server sets the timeout during which a keep-alive client connection will stay open on the server side. -Setting this value to 0 disables keep-alive client connections.

-
-header
- - -Duration - - -
-(Optional) -

Header sets the timeout in the “Keep-Alive: timeout=time” response header field.

-
-

ClientSettingsPolicySpec -ΒΆ -

-

-(Appears on: -ClientSettingsPolicy) -

-

-

ClientSettingsPolicySpec defines the desired state of ClientSettingsPolicy.

-

- - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-body
- - -ClientBody - - -
-(Optional) -

Body defines the client request body settings.

-
-keepAlive
- - -ClientKeepAlive - - -
-(Optional) -

KeepAlive defines the keep-alive settings.

-
-targetRef
- - -sigs.k8s.io/gateway-api/apis/v1alpha2.LocalPolicyTargetReference - - -
-

TargetRef identifies an API object to apply the policy to. -Object must be in the same namespace as the policy. -Support: Gateway, HTTPRoute, GRPCRoute.

-
-

ControllerLogLevel -(string alias)

ΒΆ -

-

-(Appears on: -Logging) -

-

-

ControllerLogLevel type defines the logging level for the control plane.

-

- - - - - - - - - - - - - - -
ValueDescription

"debug"

ControllerLogLevelDebug is the debug level for control plane logging.

-

"error"

ControllerLogLevelError is the error level for control plane logging.

-

"info"

ControllerLogLevelInfo is the info level for control plane logging.

-
-

ControllerStatus -ΒΆ -

-

-(Appears on: -SnippetsFilterStatus) -

-

-

- - - - - - - - - - - - - - - - - -
FieldDescription
-controllerName
- - -sigs.k8s.io/gateway-api/apis/v1.GatewayController - - -
-

ControllerName is a domain/path string that indicates the name of the -controller that wrote this status. This corresponds with the -controllerName field on GatewayClass.

-

Example: “example.net/gateway-controller”.

-

The format of this field is DOMAIN “/” PATH, where DOMAIN and PATH are -valid Kubernetes names -(https://kubernetes.io/docs/concepts/overview/working-with-objects/names/#names).

-

Controllers MUST populate this field when writing status. Controllers should ensure that -entries to status populated with their ControllerName are cleaned up when they are no -longer necessary.

-
-conditions
- - -[]Kubernetes meta/v1.Condition - - -
-(Optional) -

Conditions describe the status of the SnippetsFilter.

-
-

Duration -(string alias)

ΒΆ -

-

-(Appears on: -ClientBody, -ClientKeepAlive, -ClientKeepAliveTimeout, -TelemetryExporter, -UpstreamKeepAlive) -

-

-

Duration is a string value representing a duration in time. -Duration can be specified in milliseconds (ms), seconds (s), minutes (m), hours (h). -A value without a suffix is seconds. -Examples: 120s, 50ms, 5m, 1h.

-

-

IPFamilyType -(string alias)

ΒΆ -

-

-(Appears on: -NginxProxySpec) -

-

-

IPFamilyType specifies the IP family to be used by NGINX.

-

- - - - - - - - - - - - - - -
ValueDescription

"dual"

Dual specifies that NGINX will use both IPv4 and IPv6.

-

"ipv4"

IPv4 specifies that NGINX will use only IPv4.

-

"ipv6"

IPv6 specifies that NGINX will use only IPv6.

-
-

Logging -ΒΆ -

-

-(Appears on: -NginxGatewaySpec) -

-

-

Logging defines logging related settings for the control plane.

-

- - - - - - - - - - - - - -
FieldDescription
-level
- - -ControllerLogLevel - - -
-(Optional) -

Level defines the logging level.

-
-

NginxContext -(string alias)

ΒΆ -

-

-(Appears on: -Snippet) -

-

-

NginxContext represents the NGINX configuration context.

-

- - - - - - - - - - - - - - - - -
ValueDescription

"http"

NginxContextHTTP is the http context of the NGINX configuration. -https://nginx.org/en/docs/http/ngx_http_core_module.html#http

-

"http.server"

NginxContextHTTPServer is the server context of the NGINX configuration. -https://nginx.org/en/docs/http/ngx_http_core_module.html#server

-

"http.server.location"

NginxContextHTTPServerLocation is the location context of the NGINX configuration. -https://nginx.org/en/docs/http/ngx_http_core_module.html#location

-

"main"

NginxContextMain is the main context of the NGINX configuration.

-
-

NginxErrorLogLevel -(string alias)

ΒΆ -

-

-(Appears on: -NginxLogging) -

-

-

NginxErrorLogLevel type defines the log level of error logs for NGINX.

-

- - - - - - - - - - - - - - - - - - - - - - - - -
ValueDescription

"alert"

NginxLogLevelAlert is the alert level for NGINX error logs.

-

"crit"

NginxLogLevelCrit is the crit level for NGINX error logs.

-

"debug"

NginxLogLevelDebug is the debug level for NGINX error logs.

-

"emerg"

NginxLogLevelEmerg is the emerg level for NGINX error logs.

-

"error"

NginxLogLevelError is the error level for NGINX error logs.

-

"info"

NginxLogLevelInfo is the info level for NGINX error logs.

-

"notice"

NginxLogLevelNotice is the notice level for NGINX error logs.

-

"warn"

NginxLogLevelWarn is the warn level for NGINX error logs.

-
-

NginxGatewayConditionReason -(string alias)

ΒΆ -

-

-

NginxGatewayConditionReason defines the set of reasons that explain why a -particular NginxGateway condition type has been raised.

-

- - - - - - - - - - - - -
ValueDescription

"Invalid"

NginxGatewayReasonInvalid is a reason that is used with the “Valid” condition when the condition is False.

-

"Valid"

NginxGatewayReasonValid is a reason that is used with the “Valid” condition when the condition is True.

-
-

NginxGatewayConditionType -(string alias)

ΒΆ -

-

-

NginxGatewayConditionType is a type of condition associated with an -NginxGateway. This type should be used with the NginxGatewayStatus.Conditions field.

-

- - - - - - - - - - -
ValueDescription

"Valid"

NginxGatewayConditionValid is a condition that is true when the NginxGateway -configuration is syntactically and semantically valid.

-
-

NginxGatewaySpec -ΒΆ -

-

-(Appears on: -NginxGateway) -

-

-

NginxGatewaySpec defines the desired state of the NginxGateway.

-

- - - - - - - - - - - - - -
FieldDescription
-logging
- - -Logging - - -
-(Optional) -

Logging defines logging related settings for the control plane.

-
-

NginxGatewayStatus -ΒΆ -

-

-(Appears on: -NginxGateway) -

-

-

NginxGatewayStatus defines the state of the NginxGateway.

-

- - - - - - - - - - - - - -
FieldDescription
-conditions
- - -[]Kubernetes meta/v1.Condition - - -
-(Optional) -
-

NginxLogging -ΒΆ -

-

-(Appears on: -NginxProxySpec) -

-

-

NginxLogging defines logging related settings for NGINX.

-

- - - - - - - - - - - - - -
FieldDescription
-errorLevel
- - -NginxErrorLogLevel - - -
-(Optional) -

ErrorLevel defines the error log level. Possible log levels listed in order of increasing severity are -debug, info, notice, warn, error, crit, alert, and emerg. Setting a certain log level will cause all messages -of the specified and more severe log levels to be logged. For example, the log level ‘error’ will cause error, -crit, alert, and emerg messages to be logged. https://nginx.org/en/docs/ngx_core_module.html#error_log

-
-

NginxProxySpec -ΒΆ -

-

-(Appears on: -NginxProxy) -

-

-

NginxProxySpec defines the desired state of the NginxProxy.

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-ipFamily
- - -IPFamilyType - - -
-(Optional) -

IPFamily specifies the IP family to be used by the NGINX. -Default is “dual”, meaning the server will use both IPv4 and IPv6.

-
-telemetry
- - -Telemetry - - -
-(Optional) -

Telemetry specifies the OpenTelemetry configuration.

-
-rewriteClientIP
- - -RewriteClientIP - - -
-(Optional) -

RewriteClientIP defines configuration for rewriting the client IP to the original client’s IP.

-
-logging
- - -NginxLogging - - -
-(Optional) -

Logging defines logging related settings for NGINX.

-
-disableHTTP2
- -bool - -
-(Optional) -

DisableHTTP2 defines if http2 should be disabled for all servers. -Default is false, meaning http2 will be enabled for all servers.

-
-

ObservabilityPolicySpec -ΒΆ -

-

-(Appears on: -ObservabilityPolicy) -

-

-

ObservabilityPolicySpec defines the desired state of the ObservabilityPolicy.

-

- - - - - - - - - - - - - - - - - -
FieldDescription
-tracing
- - -Tracing - - -
-(Optional) -

Tracing allows for enabling and configuring tracing.

-
-targetRefs
- - -[]sigs.k8s.io/gateway-api/apis/v1alpha2.LocalPolicyTargetReference - - -
-

TargetRefs identifies the API object(s) to apply the policy to. -Objects must be in the same namespace as the policy. -Support: HTTPRoute, GRPCRoute.

-
-

RewriteClientIP -ΒΆ -

-

-(Appears on: -NginxProxySpec) -

-

-

RewriteClientIP specifies the configuration for rewriting the client’s IP address.

-

- - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-mode
- - -RewriteClientIPModeType - - -
-(Optional) -

Mode defines how NGINX will rewrite the client’s IP address. -There are two possible modes: -- ProxyProtocol: NGINX will rewrite the client’s IP using the PROXY protocol header. -- XForwardedFor: NGINX will rewrite the client’s IP using the X-Forwarded-For header. -Sets NGINX directive real_ip_header: https://nginx.org/en/docs/http/ngx_http_realip_module.html#real_ip_header

-
-setIPRecursively
- -bool - -
-(Optional) -

SetIPRecursively configures whether recursive search is used when selecting the client’s address from -the X-Forwarded-For header. It is used in conjunction with TrustedAddresses. -If enabled, NGINX will recurse on the values in X-Forwarded-Header from the end of array -to start of array and select the first untrusted IP. -For example, if X-Forwarded-For is [11.11.11.11, 22.22.22.22, 55.55.55.1], -and TrustedAddresses is set to 55.55.55.132, NGINX will rewrite the client IP to 22.22.22.22. -If disabled, NGINX will select the IP at the end of the array. -In the previous example, 55.55.55.1 would be selected. -Sets NGINX directive real_ip_recursive: https://nginx.org/en/docs/http/ngx_http_realip_module.html#real_ip_recursive

-
-trustedAddresses
- - -[]Address - - -
-(Optional) -

TrustedAddresses specifies the addresses that are trusted to send correct client IP information. -If a request comes from a trusted address, NGINX will rewrite the client IP information, -and forward it to the backend in the X-Forwarded-For* and X-Real-IP headers. -If the request does not come from a trusted address, NGINX will not rewrite the client IP information. -TrustedAddresses only supports CIDR blocks: 192.33.21.124, fe80::164. -To trust all addresses (not recommended for production), set to 0.0.0.0/0. -If no addresses are provided, NGINX will not rewrite the client IP information. -Sets NGINX directive set_real_ip_from: https://nginx.org/en/docs/http/ngx_http_realip_module.html#set_real_ip_from -This field is required if mode is set.

-
-

RewriteClientIPModeType -(string alias)

ΒΆ -

-

-(Appears on: -RewriteClientIP) -

-

-

RewriteClientIPModeType defines how NGINX Gateway Fabric will determine the client’s original IP address.

-

- - - - - - - - - - - - -
ValueDescription

"ProxyProtocol"

RewriteClientIPModeProxyProtocol configures NGINX to accept PROXY protocol and -set the client’s IP address to the IP address in the PROXY protocol header. -Sets the proxy_protocol parameter on the listen directive of all servers and sets real_ip_header -to proxy_protocol: https://nginx.org/en/docs/http/ngx_http_realip_module.html#real_ip_header.

-

"XForwardedFor"

RewriteClientIPModeXForwardedFor configures NGINX to set the client’s IP address to the -IP address in the X-Forwarded-For HTTP header. -https://nginx.org/en/docs/http/ngx_http_realip_module.html#real_ip_header.

-
-

Size -(string alias)

ΒΆ -

-

-(Appears on: -ClientBody, -UpstreamSettingsPolicySpec) -

-

-

Size is a string value representing a size. Size can be specified in bytes, kilobytes (k), megabytes (m), -or gigabytes (g). -Examples: 1024, 8k, 1m.

-

-

Snippet -ΒΆ -

-

-(Appears on: -SnippetsFilterSpec) -

-

-

Snippet represents an NGINX configuration snippet.

-

- - - - - - - - - - - - - - - - - -
FieldDescription
-context
- - -NginxContext - - -
-

Context is the NGINX context to insert the snippet into.

-
-value
- -string - -
-

Value is the NGINX configuration snippet.

-
-

SnippetsFilterConditionReason -(string alias)

ΒΆ -

-

-

SnippetsFilterConditionReason is a reason for a SnippetsFilter condition type.

-

- - - - - - - - - - - - -
ValueDescription

"Accepted"

SnippetsFilterConditionReasonAccepted is used with the Accepted condition type when -the condition is true.

-

"Invalid"

SnippetsFilterConditionReasonInvalid is used with the Accepted condition type when -SnippetsFilter is invalid.

-
-

SnippetsFilterConditionType -(string alias)

ΒΆ -

-

-

SnippetsFilterConditionType is a type of condition associated with SnippetsFilter.

-

- - - - - - - - - - -
ValueDescription

"Accepted"

SnippetsFilterConditionTypeAccepted indicates that the SnippetsFilter is accepted.

-

Possible reasons for this condition to be True:

-
    -
  • Accepted
  • -
-

Possible reasons for this condition to be False:

-
    -
  • Invalid.
  • -
-
-

SnippetsFilterSpec -ΒΆ -

-

-(Appears on: -SnippetsFilter) -

-

-

SnippetsFilterSpec defines the desired state of the SnippetsFilter.

-

- - - - - - - - - - - - - -
FieldDescription
-snippets
- - -[]Snippet - - -
-

Snippets is a list of NGINX configuration snippets. -There can only be one snippet per context. -Allowed contexts: main, http, http.server, http.server.location.

-
-

SnippetsFilterStatus -ΒΆ -

-

-(Appears on: -SnippetsFilter) -

-

-

SnippetsFilterStatus defines the state of SnippetsFilter.

-

- - - - - - - - - - - - - -
FieldDescription
-controllers
- - -[]ControllerStatus - - -
-

Controllers is a list of Gateway API controllers that processed the SnippetsFilter -and the status of the SnippetsFilter with respect to each controller.

-
-

SpanAttribute -ΒΆ -

-

-(Appears on: -Telemetry, -Tracing, -Tracing) -

-

-

SpanAttribute is a key value pair to be added to a tracing span.

-

- - - - - - - - - - - - - - - - - -
FieldDescription
-key
- -string - -
-

Key is the key for a span attribute. -Format: must have all ‘“’ escaped and must not contain any ‘$’ or end with an unescaped ‘\’

-
-value
- -string - -
-

Value is the value for a span attribute. -Format: must have all ‘“’ escaped and must not contain any ‘$’ or end with an unescaped ‘\’

-
-

Telemetry -ΒΆ -

-

-(Appears on: -NginxProxySpec) -

-

-

Telemetry specifies the OpenTelemetry configuration.

-

- - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-exporter
- - -TelemetryExporter - - -
-(Optional) -

Exporter specifies OpenTelemetry export parameters.

-
-serviceName
- -string - -
-(Optional) -

ServiceName is the “service.name” attribute of the OpenTelemetry resource. -Default is ‘ngf::’. If a value is provided by the user, -then the default becomes a prefix to that value.

-
-spanAttributes
- - -[]SpanAttribute - - -
-(Optional) -

SpanAttributes are custom key/value attributes that are added to each span.

-
-

TelemetryExporter -ΒΆ -

-

-(Appears on: -Telemetry) -

-

-

TelemetryExporter specifies OpenTelemetry export parameters.

-

- - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-interval
- - -Duration - - -
-(Optional) -

Interval is the maximum interval between two exports. -Default: https://nginx.org/en/docs/ngx_otel_module.html#otel_exporter

-
-batchSize
- -int32 - -
-(Optional) -

BatchSize is the maximum number of spans to be sent in one batch per worker. -Default: https://nginx.org/en/docs/ngx_otel_module.html#otel_exporter

-
-batchCount
- -int32 - -
-(Optional) -

BatchCount is the number of pending batches per worker, spans exceeding the limit are dropped. -Default: https://nginx.org/en/docs/ngx_otel_module.html#otel_exporter

-
-endpoint
- -string - -
-

Endpoint is the address of OTLP/gRPC endpoint that will accept telemetry data. -Format: alphanumeric hostname with optional http scheme and optional port.

-
-

TraceContext -(string alias)

ΒΆ -

-

-(Appears on: -Tracing) -

-

-

TraceContext specifies how to propagate traceparent/tracestate headers.

-

- - - - - - - - - - - - - - - - -
ValueDescription

"extract"

TraceContextExtract uses an existing trace context from the request, so that the identifiers -of a trace and the parent span are inherited from the incoming request.

-

"ignore"

TraceContextIgnore skips context headers processing.

-

"inject"

TraceContextInject adds a new context to the request, overwriting existing headers, if any.

-

"propagate"

TraceContextPropagate updates the existing context (combines extract and inject).

-
-

TraceStrategy -(string alias)

ΒΆ -

-

-(Appears on: -Tracing) -

-

-

TraceStrategy defines the tracing strategy.

-

- - - - - - - - - - - - -
ValueDescription

"parent"

TraceStrategyParent enables tracing and only records spans if the parent span was sampled.

-

"ratio"

TraceStrategyRatio enables ratio-based tracing, defaulting to 100% sampling rate.

-
-

Tracing -ΒΆ -

-

-(Appears on: -ObservabilityPolicySpec) -

-

-

Tracing allows for enabling and configuring OpenTelemetry tracing.

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-strategy
- - -TraceStrategy - - -
-

Strategy defines if tracing is ratio-based or parent-based.

-
-ratio
- -int32 - -
-(Optional) -

Ratio is the percentage of traffic that should be sampled. Integer from 0 to 100. -By default, 100% of http requests are traced. Not applicable for parent-based tracing. -If ratio is set to 0, tracing is disabled.

-
-context
- - -TraceContext - - -
-(Optional) -

Context specifies how to propagate traceparent/tracestate headers. -Default: https://nginx.org/en/docs/ngx_otel_module.html#otel_trace_context

-
-spanName
- -string - -
-(Optional) -

SpanName defines the name of the Otel span. By default is the name of the location for a request. -If specified, applies to all locations that are created for a route. -Format: must have all ‘“’ escaped and must not contain any ‘$’ or end with an unescaped ‘\’ -Examples of invalid names: some-$value, quoted-“value”-name, unescaped

-
-spanAttributes
- - -[]SpanAttribute - - -
-(Optional) -

SpanAttributes are custom key/value attributes that are added to each span.

-
-

UpstreamKeepAlive -ΒΆ -

-

-(Appears on: -UpstreamSettingsPolicySpec) -

-

-

UpstreamKeepAlive defines the keep-alive settings for upstreams.

-

- - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-connections
- -int32 - -
-(Optional) -

Connections sets the maximum number of idle keep-alive connections to upstream servers that are preserved -in the cache of each nginx worker process. When this number is exceeded, the least recently used -connections are closed. -Directive: https://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive

-
-requests
- -int32 - -
-(Optional) -

Requests sets the maximum number of requests that can be served through one keep-alive connection. -After the maximum number of requests are made, the connection is closed. -Directive: https://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive_requests

-
-time
- - -Duration - - -
-(Optional) -

Time defines the maximum time during which requests can be processed through one keep-alive connection. -After this time is reached, the connection is closed following the subsequent request processing. -Directive: https://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive_time

-
-timeout
- - -Duration - - -
-(Optional) -

Timeout defines the keep-alive timeout for upstreams. -Directive: https://nginx.org/en/docs/http/ngx_http_upstream_module.html#keepalive_timeout

-
-

UpstreamSettingsPolicySpec -ΒΆ -

-

-(Appears on: -UpstreamSettingsPolicy) -

-

-

UpstreamSettingsPolicySpec defines the desired state of the UpstreamSettingsPolicy.

-

- - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-zoneSize
- - -Size - - -
-(Optional) -

ZoneSize is the size of the shared memory zone used by the upstream. This memory zone is used to share -the upstream configuration between nginx worker processes. The more servers that an upstream has, -the larger memory zone is required. -Default: OSS: 512k, Plus: 1m. -Directive: https://nginx.org/en/docs/http/ngx_http_upstream_module.html#zone

-
-keepAlive
- - -UpstreamKeepAlive - - -
-(Optional) -

KeepAlive defines the keep-alive settings.

-
-targetRefs
- - -[]sigs.k8s.io/gateway-api/apis/v1alpha2.LocalPolicyTargetReference - - -
-

TargetRefs identifies API object(s) to apply the policy to. -Objects must be in the same namespace as the policy. -Support: Service

-

TargetRefs must be distinct. The name field must be unique for all targetRef entries in the UpstreamSettingsPolicy.

-
-
-

gateway.nginx.org/v1alpha2

-

-

Package v1alpha2 contains API Schema definitions for the -gateway.nginx.org API group.

-

-Resource Types: - -

ObservabilityPolicy -ΒΆ -

-

-

ObservabilityPolicy is a Direct Attached Policy. It provides a way to configure observability settings for -the NGINX Gateway Fabric data plane. Used in conjunction with the NginxProxy CRD that is attached to the -GatewayClass parametersRef.

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-apiVersion
-string
- -gateway.nginx.org/v1alpha2 - -
-kind
-string -
ObservabilityPolicy
-metadata
- - -Kubernetes meta/v1.ObjectMeta - - -
-Refer to the Kubernetes API documentation for the fields of the -metadata field. -
-spec
- - -ObservabilityPolicySpec - - -
-

Spec defines the desired state of the ObservabilityPolicy.

-
-
- - - - - - - - - -
-tracing
- - -Tracing - - -
-(Optional) -

Tracing allows for enabling and configuring tracing.

-
-targetRefs
- - -[]sigs.k8s.io/gateway-api/apis/v1alpha2.LocalPolicyTargetReference - - -
-

TargetRefs identifies the API object(s) to apply the policy to. -Objects must be in the same namespace as the policy. -Support: HTTPRoute, GRPCRoute.

-

TargetRefs must be distinct. This means that the multi-part key defined by kind and name must -be unique across all targetRef entries in the ObservabilityPolicy.

-
-
-status
- - -sigs.k8s.io/gateway-api/apis/v1alpha2.PolicyStatus - - -
-

Status defines the state of the ObservabilityPolicy.

-
-

ObservabilityPolicySpec -ΒΆ -

-

-(Appears on: -ObservabilityPolicy) -

-

-

ObservabilityPolicySpec defines the desired state of the ObservabilityPolicy.

-

- - - - - - - - - - - - - - - - - -
FieldDescription
-tracing
- - -Tracing - - -
-(Optional) -

Tracing allows for enabling and configuring tracing.

-
-targetRefs
- - -[]sigs.k8s.io/gateway-api/apis/v1alpha2.LocalPolicyTargetReference - - -
-

TargetRefs identifies the API object(s) to apply the policy to. -Objects must be in the same namespace as the policy. -Support: HTTPRoute, GRPCRoute.

-

TargetRefs must be distinct. This means that the multi-part key defined by kind and name must -be unique across all targetRef entries in the ObservabilityPolicy.

-
-

TraceContext -(string alias)

ΒΆ -

-

-(Appears on: -Tracing) -

-

-

TraceContext specifies how to propagate traceparent/tracestate headers.

-

- - - - - - - - - - - - - - - - -
ValueDescription

"extract"

TraceContextExtract uses an existing trace context from the request, so that the identifiers -of a trace and the parent span are inherited from the incoming request.

-

"ignore"

TraceContextIgnore skips context headers processing.

-

"inject"

TraceContextInject adds a new context to the request, overwriting existing headers, if any.

-

"propagate"

TraceContextPropagate updates the existing context (combines extract and inject).

-
-

TraceStrategy -(string alias)

ΒΆ -

-

-(Appears on: -Tracing) -

-

-

TraceStrategy defines the tracing strategy.

-

- - - - - - - - - - - - -
ValueDescription

"parent"

TraceStrategyParent enables tracing and only records spans if the parent span was sampled.

-

"ratio"

TraceStrategyRatio enables ratio-based tracing, defaulting to 100% sampling rate.

-
-

Tracing -ΒΆ -

-

-(Appears on: -ObservabilityPolicySpec) -

-

-

Tracing allows for enabling and configuring OpenTelemetry tracing.

-

- - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
FieldDescription
-strategy
- - -TraceStrategy - - -
-

Strategy defines if tracing is ratio-based or parent-based.

-
-ratio
- -int32 - -
-(Optional) -

Ratio is the percentage of traffic that should be sampled. Integer from 0 to 100. -By default, 100% of http requests are traced. Not applicable for parent-based tracing. -If ratio is set to 0, tracing is disabled.

-
-context
- - -TraceContext - - -
-(Optional) -

Context specifies how to propagate traceparent/tracestate headers. -Default: https://nginx.org/en/docs/ngx_otel_module.html#otel_trace_context

-
-spanName
- -string - -
-(Optional) -

SpanName defines the name of the Otel span. By default is the name of the location for a request. -If specified, applies to all locations that are created for a route. -Format: must have all ‘“’ escaped and must not contain any ‘$’ or end with an unescaped ‘\’ -Examples of invalid names: some-$value, quoted-“value”-name, unescaped

-
-spanAttributes
- - -[]SpanAttribute - - -
-(Optional) -

SpanAttributes are custom key/value attributes that are added to each span.

-
-
-

-Generated with gen-crd-api-reference-docs -

diff --git a/site/content/reference/cli-help.md b/site/content/reference/cli-help.md deleted file mode 100644 index aedcc0e74c..0000000000 --- a/site/content/reference/cli-help.md +++ /dev/null @@ -1,70 +0,0 @@ ---- -title: "Command-line reference guide" -weight: 100 -toc: true -docs: "DOCS-1435" ---- - -## Overview - -Learn about the commands available for the executable file of the NGINX Gateway Fabric container. - -## Static mode - -This command configures NGINX for a single NGINX Gateway Fabric resource. - -*Usage*: - -```shell - gateway static-mode [flags] -``` - -### Flags - -{{< bootstrap-table "table table-bordered table-striped table-responsive" >}} - -| Name | Type | Description | -|-------------------------------------|----------|------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| _gateway-ctlr-name_ | _string_ | The name of the Gateway controller. The controller name must be in the form: `DOMAIN/PATH`. The controller's domain is `gateway.nginx.org`. | -| _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. 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}. | -| _nginx-plus_ | _bool_ | Enable support for NGINX Plus. | -| _gateway-api-experimental-features_ | _bool_ | Enable the experimental features of Gateway API which are supported by NGINX Gateway Fabric. Requires the Gateway APIs installed from the experimental channel. | -| _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. | -| _service_ | _string_ | The name of the service that fronts this NGINX Gateway Fabric pod. Lives in the same namespace as the controller. | -| _metrics-disable_ | _bool_ | Disable exposing metrics in the Prometheus format (Default: `false`). | -| _metrics-listen-port_ | _int_ | Sets the port where the Prometheus metrics are exposed. An integer between 1024 - 65535 (Default: `9113`) | -| _metrics-secure-serving_ | _bool_ | Configures if the metrics endpoint should be secured using https. Note that this endpoint will be secured with a self-signed certificate (Default `false`). | -| _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. An integer between 1024 - 65535 (Default: `8081`). | -| _leader-election-disable_ | _bool_ | Disable leader election, which 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"`). | -| _product-telemetry-disable_ | _bool_ | Disable the collection of product telemetry (Default: `false`). | -| _usage-report-secret_ | _string_ | The name of the Secret containing the JWT for NGINX Plus usage reporting. Must exist in the same namespace that the NGINX Gateway Fabric control plane is running in (default namespace: nginx-gateway) | -| _usage-report-endpoint_ | _string_ | The endpoint of the NGINX Plus usage reporting server. | -| _usage-report-resolver_ | _string_ | The nameserver used to resolve the NGINX Plus usage reporting endpoint. Used with NGINX Instance Manager. | -| _usage-report-skip-verify_ | _bool_ | Disable client verification of the NGINX Plus usage reporting server certificate. | -| _usage-report-ca-secret_ | _string_ | The name of the Secret containing the NGINX Instance Manager CA certificate. Must exist in the same namespace that the NGINX Gateway Fabric control plane is running in (default namespace: nginx-gateway) | -| _usage-report-client-ssl-secret_ | _string_ | TThe name of the Secret containing the client certificate and key for authenticating with NGINX Instance Manager. Must exist in the same namespace that the NGINX Gateway Fabric control plane is running in (default namespace: nginx-gateway) | -| _snippets-filters_ | _bool_ | Enable SnippetsFilters feature. SnippetsFilters allow inserting NGINX configuration into the generated NGINX config for HTTPRoute and GRPCRoute resources. | - -{{% /bootstrap-table %}} - -## Sleep - -This command sleeps for specified duration, then exits. - -_Usage_: - -```shell - gateway sleep [flags] -``` - -{{< bootstrap-table "table table-bordered table-striped table-responsive" >}} - -| Name | Type | Description | -| -------- | --------------- | ----------------------------------------------------------------------------------------------------------------------------- | -| duration | `time.Duration` | Set the duration of sleep. Must be parsable by [`time.ParseDuration`](https://pkg.go.dev/time#ParseDuration). (default `30s`) | - -{{% /bootstrap-table %}} diff --git a/site/content/reference/technical-specifications.md b/site/content/reference/technical-specifications.md deleted file mode 100644 index 97bb523ba5..0000000000 --- a/site/content/reference/technical-specifications.md +++ /dev/null @@ -1,13 +0,0 @@ ---- -title: "Technical specifications" -draft: false -description: "NGINX Gateway Fabric technical specifications." -weight: 200 -toc: true -tags: [ "docs" ] -docs: "DOCS-1434" ---- - -See the NGINX Gateway Fabric technical specifications page: - - diff --git a/site/content/releases.md b/site/content/releases.md deleted file mode 100644 index fb2991857a..0000000000 --- a/site/content/releases.md +++ /dev/null @@ -1,11 +0,0 @@ ---- -title: "Releases" -description: "NGINX Gateway Fabric releases." -toc: true -weight: 700 -docs: "DOCS-1359" ---- - -See the NGINX Gateway Fabric changelog page: - - diff --git a/site/content/support.md b/site/content/support.md deleted file mode 100644 index c62d4f723d..0000000000 --- a/site/content/support.md +++ /dev/null @@ -1,38 +0,0 @@ ---- -title: "Support" -toc: true -weight: 600 -docs: "DOCS-1411" ---- - -F5 NGINX Gateway Fabric adheres to the support policy detailed in the following knowledge base article: [K000140156](https://my.f5.com/manage/s/article/K000140156). - -After opening a support ticket, F5 staff will request additional information to better understand the problem. - -The [nginx-supportpkg-for-k8s](https://github.com/nginxinc/nginx-supportpkg-for-k8s) plugin collects the information needed by F5 Technical Support to assist with troubleshooting your issue. - -The plugin uses [krew](https://krew.sigs.k8s.io), the plugin manager for the Kubernetes [kubectl](https://kubernetes.io/docs/reference/kubectl/) command-line tool. - -The plugin may collect some or all of the following global and namespace-specific information: - -- Kubernetes version and information about Nodes and Custom Resources -- Kubernetes metrics -- Helm deployments -- List of Pods, Events, ConfigMaps, Services, Deployments, Daemonsets, StatefulSets, ReplicaSets, and Leases -- Pod log output -- `nginx -T` output from NGINX-related Pods - -This plugin **does not** collect secrets or coredumps. - -Visit the [project’s GitHub repository](https://github.com/nginxinc/nginx-supportpkg-for-k8s) for further details. - - -**Support Channels:** - -- If you experience issues with NGINX Gateway Fabric, please [open an issue](https://github.com/nginx/nginx-gateway-fabric/issues/new?assignees=&labels=&projects=&template=bug_report.md&title=) in GitHub. - -- If you have any suggestions or enhancement requests, please [open an idea](https://github.com/nginx/nginx-gateway-fabric/discussions/categories/ideas) on GitHub discussions. - -- You can contact us directly, by sending an email to [kubernetes@nginx.com](mailto:kubernetes@nginx.com) or on the [NGINX Community Slack](https://nginxcommunity.slack.com/channels/nginx-gateway-fabric), in the #nginx-gateway-fabric channel. - -- If you need dedicated support for NGINX Gateway Fabric, or you would like to leverage our [advanced NGINX Plus features](https://docs.nginx.com/nginx-gateway-fabric/overview/nginx-plus/), you can contact [F5 Sales](https://www.f5.com/content/f5-com/en_us/products/get-f5). diff --git a/site/go.mod b/site/go.mod deleted file mode 100644 index 942de55c3a..0000000000 --- a/site/go.mod +++ /dev/null @@ -1,5 +0,0 @@ -module github.com/nginx/nginx-gateway-fabric/site - -go 1.21.0 - -require github.com/nginxinc/nginx-hugo-theme v0.41.23 // indirect diff --git a/site/go.sum b/site/go.sum deleted file mode 100644 index 6bf2752ad6..0000000000 --- a/site/go.sum +++ /dev/null @@ -1,2 +0,0 @@ -github.com/nginxinc/nginx-hugo-theme v0.41.23 h1:ddIfLF7BFd78qyIn3z5aReeC4BO/m9FH81d5S+al/6s= -github.com/nginxinc/nginx-hugo-theme v0.41.23/go.mod h1:DPNgSS5QYxkjH/BfH4uPDiTfODqWJ50NKZdorguom8M= diff --git a/site/hugo-entrypoint.sh b/site/hugo-entrypoint.sh deleted file mode 100755 index 7462155cdf..0000000000 --- a/site/hugo-entrypoint.sh +++ /dev/null @@ -1,4 +0,0 @@ -#!/bin/sh - -hugo mod get -u github.com/nginxinc/nginx-hugo-theme -hugo --environment docker $* diff --git a/site/layouts/shortcodes/call-out.html b/site/layouts/shortcodes/call-out.html deleted file mode 100644 index d8e591d832..0000000000 --- a/site/layouts/shortcodes/call-out.html +++ /dev/null @@ -1,3 +0,0 @@ -
-
{{ .Get 1 }}
{{ .Inner | markdownify }}
-
diff --git a/site/layouts/shortcodes/custom-styles.html b/site/layouts/shortcodes/custom-styles.html deleted file mode 100644 index 8ec2a0bbf4..0000000000 --- a/site/layouts/shortcodes/custom-styles.html +++ /dev/null @@ -1,43 +0,0 @@ - diff --git a/site/md-linkcheck-config.json b/site/md-linkcheck-config.json deleted file mode 100644 index aff3727179..0000000000 --- a/site/md-linkcheck-config.json +++ /dev/null @@ -1,13 +0,0 @@ -{ - "replacementPatterns": [ - { - "pattern": "^/", - "replacement": "/" - } - ], - "ignorePatterns": [ - { - "pattern": "^.+localhost.+$|/.+yaml" - } - ] -} diff --git a/site/static/grafana-dashboard.json b/site/static/grafana-dashboard.json deleted file mode 100644 index 0c3c40392d..0000000000 --- a/site/static/grafana-dashboard.json +++ /dev/null @@ -1,815 +0,0 @@ -{ - "annotations": { - "list": [ - { - "builtIn": 1, - "datasource": { - "type": "grafana", - "uid": "-- Grafana --" - }, - "enable": true, - "hide": true, - "iconColor": "rgba(0, 211, 255, 1)", - "name": "Annotations & Alerts", - "type": "dashboard" - } - ] - }, - "description": "Sample dashboard for NGINX Gateway Fabric", - "editable": true, - "fiscalYearStartMonth": 0, - "graphTooltip": 0, - "id": 1, - "links": [], - "liveNow": false, - "panels": [ - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 0 - }, - "id": 5, - "panels": [], - "title": "Status", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [ - { - "options": { - "0": { - "index": 0, - "text": "Down" - }, - "1": { - "index": 1, - "text": "Up" - } - }, - "type": "value" - } - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "semi-dark-red", - "value": null - }, - { - "color": "#EAB839", - "value": 1 - }, - { - "color": "semi-dark-green", - "value": 1 - } - ] - }, - "unit": "none", - "unitScale": true - }, - "overrides": [] - }, - "gridPos": { - "h": 4, - "w": 6, - "x": 0, - "y": 1 - }, - "id": 3, - "options": { - "colorMode": "background", - "graphMode": "none", - "justifyMode": "auto", - "orientation": "horizontal", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "showPercentChange": false, - "textMode": "auto", - "wideLayout": true - }, - "pluginVersion": "10.3.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "nginx_gateway_fabric_up{instance=~\"$instance\"}", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "NGINX Status for $instance", - "type": "stat" - }, - { - "collapsed": false, - "gridPos": { - "h": 1, - "w": 24, - "x": 0, - "y": 5 - }, - "id": 6, - "panels": [], - "title": "Metrics", - "type": "row" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "Connections (rate)", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 1, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "reqps", - "unitScale": true - }, - "overrides": [] - }, - "gridPos": { - "h": 10, - "w": 12, - "x": 0, - "y": 6 - }, - "id": 1, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "disableTextWrap": false, - "editorMode": "code", - "expr": "irate(nginx_gateway_fabric_connections_accepted{instance=~\"$instance\"}[1m])", - "fullMetaSearch": false, - "includeNullMetadata": false, - "instant": false, - "interval": "", - "legendFormat": "{{instance}} accepted", - "range": true, - "refId": "A", - "useBackend": false - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "irate(nginx_gateway_fabric_connections_handled{instance=~\"$instance\"}[1m])", - "hide": false, - "instant": false, - "legendFormat": "{{instance}} handled", - "range": true, - "refId": "B" - } - ], - "title": "Processed Connections", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "description": "", - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "Connections", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 1, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "short", - "unitScale": true - }, - "overrides": [] - }, - "gridPos": { - "h": 10, - "w": 12, - "x": 12, - "y": 6 - }, - "id": 4, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "nginx_gateway_fabric_connections_active{instance=~\"$instance\"}", - "instant": false, - "legendFormat": "{{instance}} active", - "range": true, - "refId": "A" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "nginx_gateway_fabric_connections_reading{instance=~\"$instance\"}", - "hide": false, - "instant": false, - "legendFormat": "{{instance}} reading", - "range": true, - "refId": "B" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "nginx_gateway_fabric_connections_waiting{instance=~\"$instance\"}", - "hide": false, - "instant": false, - "legendFormat": "{{instance}} waiting", - "range": true, - "refId": "C" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "editorMode": "code", - "expr": "nginx_gateway_fabric_connections_writing{instance=~\"$instance\"}", - "hide": false, - "instant": false, - "legendFormat": "{{instance}} writing", - "range": true, - "refId": "D" - } - ], - "title": "Active Connections", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 1, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unit": "reqps", - "unitScale": true - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 24, - "x": 0, - "y": 16 - }, - "id": 2, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "disableTextWrap": false, - "editorMode": "code", - "expr": "irate(nginx_gateway_fabric_http_requests_total{instance=~\"$instance\"}[1m])", - "fullMetaSearch": false, - "includeNullMetadata": false, - "instant": false, - "legendFormat": "{{instance}} total requests", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "Total Requests", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "palette-classic" - }, - "custom": { - "axisBorderShow": false, - "axisCenteredZero": false, - "axisColorMode": "text", - "axisLabel": "", - "axisPlacement": "auto", - "barAlignment": 0, - "drawStyle": "line", - "fillOpacity": 10, - "gradientMode": "none", - "hideFrom": { - "legend": false, - "tooltip": false, - "viz": false - }, - "insertNulls": false, - "lineInterpolation": "linear", - "lineWidth": 1, - "pointSize": 1, - "scaleDistribution": { - "type": "linear" - }, - "showPoints": "auto", - "spanNulls": false, - "stacking": { - "group": "A", - "mode": "none" - }, - "thresholdsStyle": { - "mode": "off" - } - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - } - ] - }, - "unitScale": true - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 12, - "x": 0, - "y": 24 - }, - "id": 8, - "options": { - "legend": { - "calcs": [], - "displayMode": "list", - "placement": "bottom", - "showLegend": true - }, - "tooltip": { - "mode": "single", - "sort": "none" - } - }, - "pluginVersion": "10.3.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "disableTextWrap": false, - "editorMode": "code", - "expr": "irate(nginx_gateway_fabric_nginx_reloads_total{instance=~\"$instance\"}[1m])", - "fullMetaSearch": false, - "includeNullMetadata": false, - "instant": false, - "legendFormat": "{{instance}}", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "Total NGINX Reloads Rate", - "type": "timeseries" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "red", - "value": 1 - } - ] - }, - "unitScale": true - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 6, - "x": 12, - "y": 24 - }, - "id": 9, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "showPercentChange": false, - "textMode": "auto", - "wideLayout": true - }, - "pluginVersion": "10.3.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "nginx_gateway_fabric_nginx_reload_errors_total{instance=~\"$instance\"}", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "{{instance}}", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "Total NGINX Reload Errors", - "type": "stat" - }, - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "fieldConfig": { - "defaults": { - "color": { - "mode": "thresholds" - }, - "mappings": [ - { - "options": { - "0": { - "color": "semi-dark-green", - "index": 0, - "text": "Up to date" - }, - "1": { - "color": "semi-dark-red", - "index": 1, - "text": "Stale" - } - }, - "type": "value" - } - ], - "thresholds": { - "mode": "absolute", - "steps": [ - { - "color": "green", - "value": null - }, - { - "color": "semi-dark-red", - "value": 1 - } - ] - }, - "unitScale": true - }, - "overrides": [] - }, - "gridPos": { - "h": 8, - "w": 6, - "x": 18, - "y": 24 - }, - "id": 10, - "options": { - "colorMode": "value", - "graphMode": "area", - "justifyMode": "auto", - "orientation": "auto", - "reduceOptions": { - "calcs": [ - "lastNotNull" - ], - "fields": "", - "values": false - }, - "showPercentChange": false, - "textMode": "auto", - "wideLayout": true - }, - "pluginVersion": "10.3.3", - "targets": [ - { - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "disableTextWrap": false, - "editorMode": "builder", - "expr": "nginx_gateway_fabric_nginx_stale_config{instance=~\"$instance\"}", - "fullMetaSearch": false, - "includeNullMetadata": true, - "instant": false, - "legendFormat": "__auto", - "range": true, - "refId": "A", - "useBackend": false - } - ], - "title": "NGINX Config State", - "type": "stat" - } - ], - "refresh": "5s", - "schemaVersion": 39, - "tags": [ - "nginx-gateway-fabric" - ], - "templating": { - "list": [ - { - "current": { - "selected": false, - "text": "default", - "value": "default" - }, - "hide": 0, - "includeAll": false, - "label": "datasource", - "multi": false, - "name": "DS_PROMETHEUS", - "options": [], - "query": "prometheus", - "queryValue": "", - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "type": "datasource" - }, - { - "current": { - "selected": true, - "text": [ - "All" - ], - "value": [ - "$__all" - ] - }, - "datasource": { - "type": "prometheus", - "uid": "${DS_PROMETHEUS}" - }, - "definition": "label_values(nginx_gateway_fabric_up,instance)", - "hide": 0, - "includeAll": true, - "multi": true, - "name": "instance", - "options": [], - "query": { - "qryType": 1, - "query": "label_values(nginx_gateway_fabric_up,instance)", - "refId": "PrometheusVariableQueryEditor-VariableQuery" - }, - "refresh": 1, - "regex": "", - "skipUrlSync": false, - "sort": 0, - "type": "query" - } - ] - }, - "time": { - "from": "now-15m", - "to": "now" - }, - "timepicker": {}, - "timezone": "", - "title": "NGINX Gateway Fabric", - "uid": "cdb1c6f6-7c77-4cee-a177-593f41364dbe", - "version": 1, - "weekStart": "" -} diff --git a/site/static/img/advanced-routing.png b/site/static/img/advanced-routing.png deleted file mode 100644 index 9be8d7c509f59e5e161a2ac6a2b0453f85e83717..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 64807 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 diff --git a/site/static/img/cert-manager-gateway-workflow.png b/site/static/img/cert-manager-gateway-workflow.png deleted file mode 100644 index c4de785951702cbc3d2e6116c319ad8bd9e55945..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 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 diff --git a/site/static/img/direct-policy-attachment.png b/site/static/img/direct-policy-attachment.png deleted file mode 100644 index 618dc1cdedd8d46c07ed9a160726eac4928b5f72..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12638 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 MAh%0z-jDkK0N=D)lK=n! diff --git a/site/static/img/hierarchy.png b/site/static/img/hierarchy.png deleted file mode 100644 index 2bdc19936cb98e9a684c728983977beeb50ecc80..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 16091 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%0A$|*%!^B)Ff!#?<@9snlFNuc?D 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 diff --git a/site/static/img/jaeger-trace-overview.png b/site/static/img/jaeger-trace-overview.png deleted file mode 100644 index 309c826917bd6e43107375cc88b0cace9546cb44..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 74862 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� 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 SsNoIpPhMJCs#3x<=>Gw%;7m;b diff --git a/site/static/img/ngf-high-level.png b/site/static/img/ngf-high-level.png deleted file mode 100644 index 6f2bef6f055d5c908d7d3834519376ad2a9972e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 138656 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

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

ExGgIZh2KyhNhbtMBw(q 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%0A`8Qw~fwBtrRGC@kRdvCwW!%_bIr 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

a9z}u}L29^~#$+cqK{$ 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 diff --git a/site/static/img/nginx-plus-dashboard.png b/site/static/img/nginx-plus-dashboard.png deleted file mode 100644 index 26f8726c225f5bc49d6d4a7e017050ced2c6224f..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 78194 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 OCm|yHrtr1C&;I~|J8ql+ diff --git a/site/static/img/route-all-traffic-config.png b/site/static/img/route-all-traffic-config.png deleted file mode 100644 index 01ae2210304c71631536c948869431d4673caef2..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 40397 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�CA6`O}&U=MF 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 aF;f*bo#cF_?+c%Z^H4+@l_B)x#s2{v$!9wN diff --git a/site/static/img/route-all-traffic-flow.png b/site/static/img/route-all-traffic-flow.png deleted file mode 100644 index 04a09c94cc80b73b3180b763d1c112ddd4fecd81..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 47364 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

w0sO$9`5zb@#%S_8!0b)m{~xTDm_&@JzqV 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 diff --git a/site/static/img/src/README.md b/site/static/img/src/README.md deleted file mode 100644 index 02c93c4d41..0000000000 --- a/site/static/img/src/README.md +++ /dev/null @@ -1,3 +0,0 @@ -# Diagram Source Files - -This directory contains the source files for the diagrams used in the docs. Source files are named after the image name. diff --git a/site/static/img/src/advanced-routing.mermaid b/site/static/img/src/advanced-routing.mermaid deleted file mode 100644 index dda2c78883..0000000000 --- a/site/static/img/src/advanced-routing.mermaid +++ /dev/null @@ -1,38 +0,0 @@ -%% mermaid source for advanced-routing.png diagram -graph LR - users[Users] - ngfSvc["Public Endpoint\nfor\ncafe.example.com"] - subgraph cluster [Kubernetes Cluster] - subgraph clusterPadding [" "] - subgraph clusterPadding2 [" "] - subgraph gwNS [Namespace\nnginx-gateway] - ngfPod[Pod\nnginx-gateway] - end - end - end - subgraph appNs [Namespace\ndefault] - subgraph nsPadding [" "] - coffeeV1Pod[Pod\ncoffee v1] - coffeeV2Pod[Pod\ncoffee v2] - teaPod[Pod\ntea] - teaPostPod[Pod\ntea-post] - end - end - end - 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 ngfSvc,ngfPod nginxNode - class coffeeV1Pod,coffeeV2Pod coffeeNode - class teaPod,teaPostPod teaNode - classDef noBorder stroke:none,fill:none - classDef default fill:#FFFFFF,stroke:#000000 - classDef namespace fill:#FFFFFF,stroke:#036ffc,stroke-dasharray: 5 5,text-align:center - classDef nginxNode fill:#b4e0ad,stroke:#2AA317 - classDef coffeeNode fill:#edbd8c,stroke:#D9822B - classDef teaNode fill:#ff8f6a,stroke:#e5805f diff --git a/site/static/img/src/route-all-traffic-app.mermaid b/site/static/img/src/route-all-traffic-app.mermaid deleted file mode 100644 index bc2d4d7063..0000000000 --- a/site/static/img/src/route-all-traffic-app.mermaid +++ /dev/null @@ -1,13 +0,0 @@ -%% mermaid source for route-all-traffic-app.png diagram -graph TB - subgraph cluster [Kubernetes Cluster] - style cluster fill:#FFFFFF,stroke:#000000 - svc[Service\ncoffee] - pod1[Pod\ncoffee] - pod2[Pod\ncoffee] - end - - svc --> pod1 & pod2 - - class pod1,pod2,svc appNode - classDef appNode fill:#edbd8c,stroke:#D9822B diff --git a/site/static/img/src/route-all-traffic-config.mermaid b/site/static/img/src/route-all-traffic-config.mermaid deleted file mode 100644 index d2e0a4ffc9..0000000000 --- a/site/static/img/src/route-all-traffic-config.mermaid +++ /dev/null @@ -1,42 +0,0 @@ -%% mermaid source for route-all-traffic-config.png diagram -graph LR - subgraph config [Namespace default] - subgraph padding [" "] - direction LR - style config fill:#FFFFFF,stroke:#000000 - subgraph gw[Gateway cafe] - subgraph gwPadding [" "] - gwContents[HTTP/80] - end - end - subgraph hr[HTTPRoute coffee] - subgraph hrPadding [" "] - hrContents[cafe.example.com] - subgraph describeMatchAll [Match all\ntraffic] - subgraph describeMatchPadding [" "] - matchAll[Host: *\nPath: *] - end - end - subgraph describeService [Group matching\npods within a Service] - subgraph describePadding [" "] - coffeeSvc[Service\ncoffee] - end - end - end - end - end - end - - gwContents --> hrContents --> matchAll --> coffeeSvc - class padding,gwPadding,hrPadding,describeMatchAll,describeService,describePadding,describeMatchPadding noBorder - class gw gateway - class hr httpRoute - class matchAll,hrContents,coffeeSvc appDevNode - class gwContents clusterOppNode - - classDef noBorder stroke:none,fill:none,text-align:center - classDef default fill:#FFFFFF,stroke:#000000 - classDef gateway fill:#FFFFFF,stroke:#2AA317,stroke-dasharray: 3 3,text-align:center - classDef httpRoute fill:#FFFFFF,stroke:#D9822B,stroke-dasharray: 3 3,text-align:center - classDef appDevNode fill:#edbd8c,stroke:#D9822B - classDef clusterOppNode fill:#b4e0ad,stroke:#2AA317 diff --git a/site/static/img/src/route-all-traffic-flow.mermaid b/site/static/img/src/route-all-traffic-flow.mermaid deleted file mode 100644 index f53d35ae54..0000000000 --- a/site/static/img/src/route-all-traffic-flow.mermaid +++ /dev/null @@ -1,42 +0,0 @@ -%% mermaid source for route-all-traffic-flow.png diagram -graph LR - clients[Clients] - 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] - ngfPod[Pod\nnginx-gateway] - end - end - end - - subgraph appNs [Namespace\ndefault] - subgraph nsPadding [" "] - coffeePod1[Pod\ncoffee] - coffeePod2[Pod\ncoffee] - end - end - end - - - - ngfSvc --> ngfPod - ngfPod --> coffeePod1 & coffeePod2 - clients --> ngfSvc - - class clusterPadding,nsPadding,clusterPadding2 noBorder - class gwNS,appNs namespace - class ngfPod,ngfSvc nginxNode - class coffeePod1,coffeePod2 coffeeNode - class clients clientNode - - - classDef noBorder stroke:none,fill:none - classDef default fill:#FFFFFF,stroke:#000000 - classDef namespace fill:#FFFFFF,stroke:#036ffc,stroke-dasharray: 5 5,text-align:center - classDef nginxNode fill:#b4e0ad,stroke:#2AA317 - classDef coffeeNode fill:#edbd8c,stroke:#D9822B - classDef clientNode fill:#D3D3D3 diff --git a/site/static/jaeger.yaml b/site/static/jaeger.yaml deleted file mode 100644 index 9f1a11c275..0000000000 --- a/site/static/jaeger.yaml +++ /dev/null @@ -1,37 +0,0 @@ -apiVersion: apps/v1 -kind: Deployment -metadata: - name: jaeger - labels: - app.kubernetes.io/name: jaeger -spec: - replicas: 1 - selector: - matchLabels: - app.kubernetes.io/name: jaeger - template: - metadata: - labels: - app.kubernetes.io/name: jaeger - spec: - containers: - - name: jaeger - image: jaegertracing/all-in-one:latest - ports: - - containerPort: 16686 - - containerPort: 4317 ---- -apiVersion: v1 -kind: Service -metadata: - name: jaeger - labels: - app.kubernetes.io/name: jaeger -spec: - selector: - app.kubernetes.io/name: jaeger - ports: - - name: frontend - port: 16686 - - name: collector - port: 4317 diff --git a/site/static/otel-collector.yaml b/site/static/otel-collector.yaml deleted file mode 100644 index ff2fe807fb..0000000000 --- a/site/static/otel-collector.yaml +++ /dev/null @@ -1,72 +0,0 @@ -apiVersion: v1 -kind: ConfigMap -metadata: - name: otel-collector-config -data: - otel-collector-config: | - receivers: - otlp: - protocols: - grpc: - endpoint: 0.0.0.0:4317 - processors: - extensions: - exporters: - otlp/jaeger: - endpoint: "jaeger.tracing.svc:4317" - tls: - insecure: true - service: - pipelines: - traces: - receivers: [otlp] - processors: [] - exporters: [otlp/jaeger] ---- -apiVersion: apps/v1 -kind: Deployment -metadata: - name: otel-collector - labels: - app.kubernetes.io/name: otel-collector -spec: - selector: - matchLabels: - app.kubernetes.io/name: otel-collector - replicas: 1 - template: - metadata: - labels: - app.kubernetes.io/name: otel-collector - spec: - containers: - - name: otel-collector - image: otel/opentelemetry-collector:latest - command: - - /otelcol - - --config=/conf/otel-collector-config.yaml - ports: - - containerPort: 4317 - volumeMounts: - - name: otel-collector-config - mountPath: /conf - volumes: - - name: otel-collector-config - configMap: - name: otel-collector-config - items: - - key: otel-collector-config - path: otel-collector-config.yaml ---- -apiVersion: v1 -kind: Service -metadata: - name: otel-collector - labels: - app.kubernetes.io/name: otel-collector -spec: - selector: - app.kubernetes.io/name: otel-collector - ports: - - name: otlp-grpc - port: 4317 From e066f143ba02d96042fa8ebaa042815f9c0954e2 Mon Sep 17 00:00:00 2001 From: Alan Dooley Date: Fri, 7 Feb 2025 16:14:59 +0000 Subject: [PATCH 2/6] feat: Configure Makefile to change where API file is generated --- Makefile | 2 +- docs/api/config.json | 28 +++++++++++++++ docs/api/members.tpl | 48 +++++++++++++++++++++++++ docs/api/pkg.tpl | 57 ++++++++++++++++++++++++++++++ docs/api/type.tpl | 83 ++++++++++++++++++++++++++++++++++++++++++++ 5 files changed, 217 insertions(+), 1 deletion(-) create mode 100644 docs/api/config.json create mode 100644 docs/api/members.tpl create mode 100644 docs/api/pkg.tpl create mode 100644 docs/api/type.tpl diff --git a/Makefile b/Makefile index 39554f3f2b..bf3d52d10f 100644 --- a/Makefile +++ b/Makefile @@ -141,7 +141,7 @@ generate-manifests: ## Generate manifests using Helm. ./scripts/generate-manifests.sh generate-api-docs: ## Generate API docs - go run github.com/ahmetb/gen-crd-api-reference-docs@$(GEN_CRD_API_REFERENCE_DOCS_VERSION) -config site/config/api/config.json -template-dir site/config/api -out-file site/content/reference/api.md -api-dir "github.com/nginx/nginx-gateway-fabric/apis" + go run github.com/ahmetb/gen-crd-api-reference-docs@$(GEN_CRD_API_REFERENCE_DOCS_VERSION) -config docs/api/config.json -template-dir docs/api -out-file docs/api/content.md -api-dir "github.com/nginx/nginx-gateway-fabric/apis" .PHONY: generate-helm-docs generate-helm-docs: ## Generate the Helm chart documentation diff --git a/docs/api/config.json b/docs/api/config.json new file mode 100644 index 0000000000..e75a2cef56 --- /dev/null +++ b/docs/api/config.json @@ -0,0 +1,28 @@ +{ + "hideMemberFields": [ + "TypeMeta" + ], + "hideTypePatterns": [ + "ParseError$", + "List$" + ], + "externalPackages": [ + { + "typeMatchPrefix": "^k8s\\.io/apimachinery/pkg/apis/meta/v1\\.Duration$", + "docsURLTemplate": "https://pkg.go.dev/k8s.io/apimachinery/pkg/apis/meta/v1#Duration" + }, + { + "typeMatchPrefix": "^k8s\\.io/(api|apimachinery/pkg/apis)/", + "docsURLTemplate": "https://kubernetes.io/docs/reference/generated/kubernetes-api/v1.30/#{{lower .TypeIdentifier}}-{{arrIndex .PackageSegments -1}}-{{arrIndex .PackageSegments -2}}" + }, + { + "typeMatchPrefix": "^sigs.k8s.io/gateway-api/apis/", + "docsURLTemplate": "https://pkg.go.dev/sigs.k8s.io/gateway-api/apis/{{arrIndex .PackageSegments -1}}#{{.TypeIdentifier}}" + } + ], + "typeDisplayNamePrefixOverrides": { + "k8s.io/api/": "Kubernetes ", + "k8s.io/apimachinery/pkg/apis/": "Kubernetes " + }, + "markdownDisabled": false +} diff --git a/docs/api/members.tpl b/docs/api/members.tpl new file mode 100644 index 0000000000..5cba6ecee1 --- /dev/null +++ b/docs/api/members.tpl @@ -0,0 +1,48 @@ +{{ define "members" }} + +{{ range .Members }} +{{ if not (hiddenMember .)}} + + + {{ fieldName . }}
+ + {{ if linkForType .Type }} +
+ {{ typeDisplayName .Type }} + + {{ else }} + {{ typeDisplayName .Type }} + {{ end }} + + + + {{ if fieldEmbedded . }} +

+ (Members of {{ fieldName . }} are embedded into this type.) +

+ {{ end}} + + {{ if isOptionalMember .}} + (Optional) + {{ end }} + + {{ safe (renderComments .CommentLines) }} + + {{ if and (eq (.Type.Name.Name) "ObjectMeta") }} + Refer to the Kubernetes API documentation for the fields of the + metadata field. + {{ end }} + + {{ if or (eq (fieldName .) "spec") }} +
+
+ + {{ template "members" .Type }} +
+ {{ end }} + + +{{ end }} +{{ end }} + +{{ end }} diff --git a/docs/api/pkg.tpl b/docs/api/pkg.tpl new file mode 100644 index 0000000000..c5250235f7 --- /dev/null +++ b/docs/api/pkg.tpl @@ -0,0 +1,57 @@ +{{ define "packages" }} +--- +title: "API reference" +weight: 100 +toc: false +--- + +## Overview + +NGINX Gateway API Reference + +{{ with .packages}} +

Packages:

+ +{{ end}} + +{{ range .packages }} +

+ {{- packageDisplayName . -}} +

+ + {{ with (index .GoPackages 0 )}} + {{ with .DocComments }} +

+ {{ safe (renderComments .) }} +

+ {{ end }} + {{ end }} + + Resource Types: +
    + {{- range (visibleTypes (sortedTypes .Types)) -}} + {{ if isExportedType . -}} +
  • + {{ typeDisplayName . }} +
  • + {{- end }} + {{- end -}} +
+ + {{ range (visibleTypes (sortedTypes .Types))}} + {{ template "type" . }} + {{ end }} +
+{{ end }} + +

+ Generated with gen-crd-api-reference-docs +

+ +{{ end }} diff --git a/docs/api/type.tpl b/docs/api/type.tpl new file mode 100644 index 0000000000..5d1d3950f6 --- /dev/null +++ b/docs/api/type.tpl @@ -0,0 +1,83 @@ +{{ define "type" }} + +

+ {{- .Name.Name }} + {{ if eq .Kind "Alias" }}({{.Underlying}} alias)

{{ end -}} + ΒΆ +

+{{ with (typeReferences .) }} +

+ (Appears on: + {{- $prev := "" -}} + {{- range . -}} + {{- if $prev -}},{{ end -}} + {{ $prev = . }} + {{ typeDisplayName . }} + {{- end -}} + ) +

+{{ end }} + + +

+ {{ safe (renderComments .CommentLines) }} +

+ +{{ with (constantsOfType .) }} + + + + + + + + + {{- range . -}} + + {{- /* + renderComments implicitly creates a

element, so we + add one to the display name as well to make the contents + of the two cells align evenly. + */ -}} +

+ + + {{- end -}} + +
ValueDescription

{{ typeDisplayName . }}

{{ safe (renderComments .CommentLines) }}
+{{ end }} + +{{ if .Members }} + + + + + + + + + {{ if isExportedType . }} + + + + + + + + + {{ end }} + {{ template "members" .}} + +
FieldDescription
+ apiVersion
+ string
+ + {{apiGroup .}} + +
+ kind
+ string +
{{.Name.Name}}
+{{ end }} + +{{ end }} From cc32591e1e3b919cea83fc04df887aaab6633de4 Mon Sep 17 00:00:00 2001 From: Alan Dooley Date: Fri, 7 Feb 2025 16:26:41 +0000 Subject: [PATCH 3/6] Update frontmatter data in API generation template --- docs/api/pkg.tpl | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/docs/api/pkg.tpl b/docs/api/pkg.tpl index c5250235f7..e21eeb5968 100644 --- a/docs/api/pkg.tpl +++ b/docs/api/pkg.tpl @@ -2,7 +2,9 @@ --- title: "API reference" weight: 100 -toc: false +type: reference +product: NGF +docs: DOCS-000 --- ## Overview From ac726e7701f87f7f63b14143045c5eaefac1255f Mon Sep 17 00:00:00 2001 From: Alan Dooley Date: Fri, 7 Feb 2025 17:00:18 +0000 Subject: [PATCH 4/6] Add a note to the developer docs README explaining the API folder --- docs/README.md | 1 + 1 file changed, 1 insertion(+) diff --git a/docs/README.md b/docs/README.md index 516d7c9108..b40e1fd4ae 100644 --- a/docs/README.md +++ b/docs/README.md @@ -8,3 +8,4 @@ _Please note: You can find the user documentation for NGINX Gateway Fabric in th - [Developer](developer/): Docs for developers of the project. Contains guides relating to processes and workflows. - [Proposals](proposals/): Enhancement proposals for new features. +- [API](api/): The files for generating API documentation, used in the Makefile From ce99a79fe55c0b41d19549c6cd7ec15647ffb246 Mon Sep 17 00:00:00 2001 From: Alan Dooley Date: Fri, 7 Feb 2025 17:15:48 +0000 Subject: [PATCH 5/6] Add generated API reference documentation to gitignore --- .gitignore | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/.gitignore b/.gitignore index 4dbda581d7..809554db2e 100644 --- a/.gitignore +++ b/.gitignore @@ -61,3 +61,7 @@ internal/mode/static/nginx/modules/coverage # temporary files used for manifest generation config/base/deploy.yaml config/base/deploy.yaml.bak + +# Temporary API documentation file, which should be committed +# to the main documentation repository instead +docs/api/content.md \ No newline at end of file From 163173c7187efa94a6fee2947146823f97a09b13 Mon Sep 17 00:00:00 2001 From: "pre-commit-ci[bot]" <66853113+pre-commit-ci[bot]@users.noreply.github.com> Date: Mon, 10 Feb 2025 10:39:09 +0000 Subject: [PATCH 6/6] [pre-commit.ci] auto fixes from pre-commit.com hooks for more information, see https://pre-commit.ci --- .gitignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index 809554db2e..40bb4be096 100644 --- a/.gitignore +++ b/.gitignore @@ -64,4 +64,4 @@ config/base/deploy.yaml.bak # Temporary API documentation file, which should be committed # to the main documentation repository instead -docs/api/content.md \ No newline at end of file +docs/api/content.md