diff --git a/CHANGELOG.md b/CHANGELOG.md index a93357a126..dd8485a7fe 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -4,6 +4,47 @@ This document includes a curated changelog for each release. We also publish a c a [GitHub release](https://github.com/nginxinc/nginx-gateway-fabric/releases), which, by contrast, is auto-generated and includes links to all PRs that went into the release. +## Release 1.0.0 + +*October 24, 2023* + +This is the official v1.0.0 release of NGINX Gateway Fabric. + +BREAKING CHANGES: + +- Rename the product from NGINX Kubernetes Gateway to NGINX Gateway Fabric. [PR-1070](https://github.com/nginxinc/nginx-gateway-fabric/pull/1070) + +FEATURES: + +- Add readiness probe. [PR-1047](https://github.com/nginxinc/nginx-gateway-fabric/pull/1047) +- Support horizontal scaling. [PR-1048](https://github.com/nginxinc/nginx-gateway-fabric/pull/1048) +- Add NGINX reload metrics. [PR-1049](https://github.com/nginxinc/nginx-gateway-fabric/pull/1049) +- Retry status updater on failures. [PR-1062](https://github.com/nginxinc/nginx-gateway-fabric/pull/1062) +- Add event processing histogram metric. [PR-1134](https://github.com/nginxinc/nginx-gateway-fabric/pull/1134) +- Set Service address in Gateway Status. [PR-1141](https://github.com/nginxinc/nginx-gateway-fabric/pull/1141) + +BUG FIXES: + +- Optimize default NGINX config. [PR-1040](https://github.com/nginxinc/nginx-gateway-fabric/pull/1040) +- Ensure NGINX reload occurs. [PR-1033](https://github.com/nginxinc/nginx-gateway-fabric/pull/1033) +- Fix failure to recover if conf files are unexpectedly removed. [PR-1132](https://github.com/nginxinc/nginx-gateway-fabric/pull/1132) +- Only update a resource's status if it has changed. [PR-1151](https://github.com/nginxinc/nginx-gateway-fabric/pull/1151) + +DOCUMENTATION: + +- Non-functional testing guides and results. [Link](https://github.com/nginxinc/nginx-gateway-fabric/tree/main/tests) + +COMPATIBILITY: + +- The Gateway API version: `0.8.1` +- NGINX version: `1.25.2` +- Kubernetes version: `1.23+` + +CONTAINER IMAGES: + +- Control plane: `ghcr.io/nginxinc/nginx-gateway-fabric:1.0.0` +- Data plane: `ghcr.io/nginxinc/nginx-gateway-fabric/nginx:1.0.0` + ## Release 0.6.0 *August 31, 2023* diff --git a/Makefile b/Makefile index ed7791fcfb..68b6e8bb85 100644 --- a/Makefile +++ b/Makefile @@ -1,5 +1,5 @@ # variables that should not be overridden by the user -VERSION = edge +VERSION = 1.0.0 GIT_COMMIT = $(shell git rev-parse HEAD || echo "unknown") DATE = $(shell date -u +"%Y-%m-%dT%H:%M:%SZ") MANIFEST_DIR = $(shell pwd)/deploy/manifests diff --git a/README.md b/README.md index b97b43aadf..e806c33e75 100644 --- a/README.md +++ b/README.md @@ -7,14 +7,11 @@ NGINX Gateway Fabric is an open-source project that provides an implementation o the [Gateway API](https://gateway-api.sigs.k8s.io/) using [NGINX](https://nginx.org/) as the data plane. The goal of this project is to implement the core Gateway APIs -- `Gateway`, `GatewayClass`, `HTTPRoute`, `TCPRoute`, `TLSRoute`, and `UDPRoute` -- to configure an HTTP or TCP/UDP load balancer, reverse-proxy, or API gateway for applications running -on Kubernetes. NGINX Gateway Fabric is currently under development and supports a subset of the Gateway API. +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](docs/gateway-api-compatibility.md) doc. -> Warning: This project is actively in development (beta feature state) and should not be deployed in a -> production environment. All APIs, SDKs, designs, and packages are subject to change. - Learn about our [design principles](/docs/developer/design-principles.md) and [architecture](/docs/architecture.md). ## Getting Started @@ -32,7 +29,7 @@ Learn about our [design principles](/docs/developer/design-principles.md) and [a We publish NGINX Gateway Fabric releases on GitHub. See our [releases page](https://github.com/nginxinc/nginx-gateway-fabric/releases). -The latest release is [0.6.0](https://github.com/nginxinc/nginx-gateway-fabric/releases/tag/v0.6.0). +The latest release is [1.0.0](https://github.com/nginxinc/nginx-gateway-fabric/releases/tag/v1.0.0). The edge version is useful for experimenting with new features that are not yet published in a release. To use, choose the *edge* version built from the [latest commit](https://github.com/nginxinc/nginx-gateway-fabric/commits/main) @@ -43,7 +40,7 @@ to the correct versions: | Version | Description | Installation Manifests | Documentation and Examples | |----------------|------------------------------------------|---------------------------------------------------------------------------------------|--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------| -| Latest release | For experimental use | [Manifests](https://github.com/nginxinc/nginx-gateway-fabric/tree/v0.6.0/deploy). | [Documentation](https://github.com/nginxinc/nginx-gateway-fabric/tree/v0.6.0/docs). [Examples](https://github.com/nginxinc/nginx-gateway-fabric/tree/v0.6.0/examples). | +| Latest release | For production use | [Manifests](https://github.com/nginxinc/nginx-gateway-fabric/tree/v1.0.0/deploy). | [Documentation](https://github.com/nginxinc/nginx-gateway-fabric/tree/v1.0.0/docs). [Examples](https://github.com/nginxinc/nginx-gateway-fabric/tree/v1.0.0/examples). | | Edge | For experimental use and latest features | [Manifests](https://github.com/nginxinc/nginx-gateway-fabric/tree/main/deploy). | [Documentation](https://github.com/nginxinc/nginx-gateway-fabric/tree/main/docs). [Examples](https://github.com/nginxinc/nginx-gateway-fabric/tree/main/examples). | ### Versioning @@ -66,6 +63,7 @@ The following table lists the software versions NGINX Gateway Fabric supports. | NGINX Gateway Fabric | Gateway API | Kubernetes | NGINX OSS | |--------------------------|-------------|------------|-----------| | Edge | 0.8.1 | 1.23+ | 1.25.2 | +| 1.0.0 | 0.8.1 | 1.23+ | 1.25.2 | | 0.6.0 | 0.8.0 | 1.23+ | 1.25.2 | | 0.5.0 | 0.7.1 | 1.21+ | 1.25.x * | | 0.4.0 | 0.7.1 | 1.21+ | 1.25.x * | diff --git a/conformance/Makefile b/conformance/Makefile index b78367d38e..b01c5ee7da 100644 --- a/conformance/Makefile +++ b/conformance/Makefile @@ -1,4 +1,4 @@ -NGF_TAG = edge +NGF_TAG = 1.0.0 NGF_PREFIX = nginx-gateway-fabric NGINX_IMAGE_NAME = $(NGF_PREFIX)/nginx GW_API_VERSION ?= 0.8.1 diff --git a/conformance/provisioner/provisioner.yaml b/conformance/provisioner/provisioner.yaml index 5a58889274..c9fafd9e06 100644 --- a/conformance/provisioner/provisioner.yaml +++ b/conformance/provisioner/provisioner.yaml @@ -61,7 +61,7 @@ spec: spec: serviceAccountName: nginx-gateway-provisioner containers: - - image: ghcr.io/nginxinc/nginx-gateway-fabric:edge + - image: ghcr.io/nginxinc/nginx-gateway-fabric:1.0.0 imagePullPolicy: Always name: nginx-gateway-provisioner securityContext: diff --git a/conformance/provisioner/static-deployment.yaml b/conformance/provisioner/static-deployment.yaml index c6b2326b04..805bd32599 100644 --- a/conformance/provisioner/static-deployment.yaml +++ b/conformance/provisioner/static-deployment.yaml @@ -8,7 +8,7 @@ metadata: labels: app.kubernetes.io/name: nginx-gateway app.kubernetes.io/instance: nginx-gateway - app.kubernetes.io/version: "edge" + app.kubernetes.io/version: "1.0.0" spec: replicas: 1 selector: @@ -44,8 +44,8 @@ spec: valueFrom: fieldRef: fieldPath: metadata.name - image: ghcr.io/nginxinc/nginx-gateway-fabric:edge - imagePullPolicy: Always + image: ghcr.io/nginxinc/nginx-gateway-fabric:1.0.0 + imagePullPolicy: IfNotPresent name: nginx-gateway ports: - name: health @@ -73,8 +73,8 @@ spec: mountPath: /etc/nginx/secrets - name: nginx-run mountPath: /var/run/nginx - - image: ghcr.io/nginxinc/nginx-gateway-fabric/nginx:edge - imagePullPolicy: Always + - image: ghcr.io/nginxinc/nginx-gateway-fabric/nginx:1.0.0 + imagePullPolicy: IfNotPresent name: nginx ports: - containerPort: 80 diff --git a/deploy/helm-chart/Chart.yaml b/deploy/helm-chart/Chart.yaml index 2bdea7f01e..677fce4f19 100644 --- a/deploy/helm-chart/Chart.yaml +++ b/deploy/helm-chart/Chart.yaml @@ -3,11 +3,11 @@ name: nginx-gateway-fabric description: NGINX Gateway Fabric type: application version: 1.0.0 -appVersion: "edge" +appVersion: 1.0.0 home: https://github.com/nginxinc/nginx-gateway-fabric -icon: https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/tree/main/deploy/helm-chart/chart-icon.png +icon: https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/tree/v1.0.0/deploy/helm-chart/chart-icon.png sources: - - https://github.com/nginxinc/nginx-gateway-fabric/tree/main/deploy/helm-chart + - https://github.com/nginxinc/nginx-gateway-fabric/tree/v1.0.0/deploy/helm-chart keywords: - kubernetes - gateway diff --git a/deploy/helm-chart/values.yaml b/deploy/helm-chart/values.yaml index 6380f61e43..1479284f39 100644 --- a/deploy/helm-chart/values.yaml +++ b/deploy/helm-chart/values.yaml @@ -38,8 +38,8 @@ nginxGateway: image: ## The NGINX Gateway Fabric image to use repository: ghcr.io/nginxinc/nginx-gateway-fabric - tag: edge - pullPolicy: Always + tag: 1.0.0 + pullPolicy: IfNotPresent securityContext: ## Some environments may need this set to true in order for the control plane to successfully reload NGINX. @@ -52,8 +52,8 @@ nginx: ## The NGINX image to use image: repository: ghcr.io/nginxinc/nginx-gateway-fabric/nginx - tag: edge - pullPolicy: Always + tag: 1.0.0 + pullPolicy: IfNotPresent ## The lifecycle of the nginx container. lifecycle: {} diff --git a/deploy/manifests/nginx-gateway.yaml b/deploy/manifests/nginx-gateway.yaml index 045c81c679..3b1db354a6 100644 --- a/deploy/manifests/nginx-gateway.yaml +++ b/deploy/manifests/nginx-gateway.yaml @@ -12,7 +12,7 @@ metadata: labels: app.kubernetes.io/name: nginx-gateway app.kubernetes.io/instance: nginx-gateway - app.kubernetes.io/version: "edge" + app.kubernetes.io/version: "1.0.0" annotations: {} --- @@ -24,7 +24,7 @@ metadata: labels: app.kubernetes.io/name: nginx-gateway app.kubernetes.io/instance: nginx-gateway - app.kubernetes.io/version: "edge" + app.kubernetes.io/version: "1.0.0" rules: - apiGroups: - "" @@ -98,7 +98,7 @@ metadata: labels: app.kubernetes.io/name: nginx-gateway app.kubernetes.io/instance: nginx-gateway - app.kubernetes.io/version: "edge" + app.kubernetes.io/version: "1.0.0" roleRef: apiGroup: rbac.authorization.k8s.io kind: ClusterRole @@ -117,7 +117,7 @@ metadata: labels: app.kubernetes.io/name: nginx-gateway app.kubernetes.io/instance: nginx-gateway - app.kubernetes.io/version: "edge" + app.kubernetes.io/version: "1.0.0" spec: replicas: 1 selector: @@ -156,8 +156,8 @@ spec: valueFrom: fieldRef: fieldPath: metadata.name - image: ghcr.io/nginxinc/nginx-gateway-fabric:edge - imagePullPolicy: Always + image: ghcr.io/nginxinc/nginx-gateway-fabric:1.0.0 + imagePullPolicy: IfNotPresent name: nginx-gateway ports: - name: metrics @@ -187,8 +187,8 @@ spec: mountPath: /etc/nginx/secrets - name: nginx-run mountPath: /var/run/nginx - - image: ghcr.io/nginxinc/nginx-gateway-fabric/nginx:edge - imagePullPolicy: Always + - image: ghcr.io/nginxinc/nginx-gateway-fabric/nginx:1.0.0 + imagePullPolicy: IfNotPresent name: nginx ports: - containerPort: 80 @@ -241,7 +241,7 @@ metadata: labels: app.kubernetes.io/name: nginx-gateway app.kubernetes.io/instance: nginx-gateway - app.kubernetes.io/version: "edge" + app.kubernetes.io/version: "1.0.0" spec: controllerName: gateway.nginx.org/nginx-gateway-controller --- @@ -254,7 +254,7 @@ metadata: labels: app.kubernetes.io/name: nginx-gateway app.kubernetes.io/instance: nginx-gateway - app.kubernetes.io/version: "edge" + app.kubernetes.io/version: "1.0.0" spec: logging: level: info diff --git a/deploy/manifests/service/loadbalancer-aws-nlb.yaml b/deploy/manifests/service/loadbalancer-aws-nlb.yaml index ab64f656cf..970be45f22 100644 --- a/deploy/manifests/service/loadbalancer-aws-nlb.yaml +++ b/deploy/manifests/service/loadbalancer-aws-nlb.yaml @@ -8,7 +8,7 @@ metadata: labels: app.kubernetes.io/name: nginx-gateway app.kubernetes.io/instance: nginx-gateway - app.kubernetes.io/version: "edge" + app.kubernetes.io/version: "1.0.0" annotations: service.beta.kubernetes.io/aws-load-balancer-type: nlb spec: diff --git a/deploy/manifests/service/loadbalancer.yaml b/deploy/manifests/service/loadbalancer.yaml index 660a236579..537dd63b77 100644 --- a/deploy/manifests/service/loadbalancer.yaml +++ b/deploy/manifests/service/loadbalancer.yaml @@ -8,7 +8,7 @@ metadata: labels: app.kubernetes.io/name: nginx-gateway app.kubernetes.io/instance: nginx-gateway - app.kubernetes.io/version: "edge" + app.kubernetes.io/version: "1.0.0" spec: externalTrafficPolicy: Local type: LoadBalancer diff --git a/deploy/manifests/service/nodeport.yaml b/deploy/manifests/service/nodeport.yaml index 83c236da7d..6c9a47972a 100644 --- a/deploy/manifests/service/nodeport.yaml +++ b/deploy/manifests/service/nodeport.yaml @@ -8,7 +8,7 @@ metadata: labels: app.kubernetes.io/name: nginx-gateway app.kubernetes.io/instance: nginx-gateway - app.kubernetes.io/version: "edge" + app.kubernetes.io/version: "1.0.0" spec: type: NodePort selector: diff --git a/docs/building-the-images.md b/docs/building-the-images.md index c43f471cb9..13a24c82c0 100644 --- a/docs/building-the-images.md +++ b/docs/building-the-images.md @@ -15,7 +15,7 @@ installed on your machine: 1. Clone the repo and change into the `nginx-gateway-fabric` directory: ```shell - git clone https://github.com/nginxinc/nginx-gateway-fabric.git + git clone https://github.com/nginxinc/nginx-gateway-fabric.git --branch v1.0.0 cd nginx-gateway-fabric ``` @@ -39,13 +39,13 @@ installed on your machine: ``` 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:edge` and `nginx-gateway-fabric/nginx:edge`. + named `nginx-gateway-fabric:1.0.0` and `nginx-gateway-fabric/nginx:1.0.0`. 1. Push the images to your container registry: ```shell - docker push myregistry.example.com/nginx-gateway-fabric:edge - docker push myregistry.example.com/nginx-gateway-fabric/nginx:edge + docker push myregistry.example.com/nginx-gateway-fabric:1.0.0 + docker push myregistry.example.com/nginx-gateway-fabric/nginx:1.0.0 ``` Make sure to substitute `myregistry.example.com/nginx-gateway-fabric` with your registry. diff --git a/docs/guides/advanced-routing.md b/docs/guides/advanced-routing.md index 6ddba9249b..4de3ba03af 100644 --- a/docs/guides/advanced-routing.md +++ b/docs/guides/advanced-routing.md @@ -36,7 +36,7 @@ and `coffee` applications share the same Gateway. Begin by deploying the `coffee-v1` and `coffee-v2` applications: ```shell -kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/main/examples/advanced-routing/coffee.yaml +kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.0.0/examples/advanced-routing/coffee.yaml ``` ### Deploy the Gateway API Resources for the Coffee Applications @@ -166,7 +166,7 @@ have their own set of rules, but will still attach to the same Gateway listener ### Deploy the Tea Applications ```shell -kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/main/examples/advanced-routing/tea.yaml +kubectl apply -f https://raw.githubusercontent.com/nginxinc/nginx-gateway-fabric/v1.0.0/examples/advanced-routing/tea.yaml ``` ### Deploy the HTTPRoute for the Tea Services diff --git a/docs/installation.md b/docs/installation.md index 9ce6a0fde1..2447b8e933 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -37,7 +37,7 @@ page. 1. Clone the repo and change into the `nginx-gateway-fabric` directory: ```shell - git clone https://github.com/nginxinc/nginx-gateway-fabric.git + git clone https://github.com/nginxinc/nginx-gateway-fabric.git --branch v1.0.0 cd nginx-gateway-fabric ``` diff --git a/examples/http-header-filter/README.md b/examples/http-header-filter/README.md index 6bc85d0f31..9c33f9e202 100644 --- a/examples/http-header-filter/README.md +++ b/examples/http-header-filter/README.md @@ -71,6 +71,7 @@ Headers: header 'My-cool-header' is 'my-client-value, this-is-an-appended-value' header 'My-Overwrite-Header' is 'this-is-the-only-value' header 'Host' is 'echo.example.com:$GW_PORT' + header 'X-Forwarded-For' is '$GW_IP' header 'Connection' is 'close' header 'Accept' is '*/*' ```