diff --git a/CHANGELOG.md b/CHANGELOG.md index 35d9ae71d7..a0772addea 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -2,6 +2,59 @@ This document includes a curated changelog for each release. We also publish a changelog as the description of a [GitHub release](https://github.com/nginxinc/nginx-kubernetes-gateway/releases), which, by contrast, is auto-generated and includes links to all PRs that went into the release. +## Release 0.4.0 + +*July 6, 2023* + +This release brings: +- Support for more features of the Gateway API resources. See the [Gateway Compatibility doc](https://github.com/nginxinc/nginx-kubernetes-gateway/blob/v0.4.0/docs/gateway-api-compatibility.md) +- Support for running the conformance test suite. See the [Conformance tests README](https://github.com/nginxinc/nginx-kubernetes-gateway/blob/v0.4.0/conformance/README.md). +- Defined Enhancement Proposal process for NGINX Kubernetes Gateway project. See the [Enhancement Proposal README](https://github.com/nginxinc/nginx-kubernetes-gateway/blob/v0.4.0/docs/proposals/README.md). +- Improved developer documentation for contributing to the project. See the [Development quickstart](https://github.com/nginxinc/nginx-kubernetes-gateway/blob/v0.4.0/docs/developer/quickstart.md). +- Architecture document that explains how NGINX Kubernetes Gateway works at a high level. See the [Architecture doc](https://github.com/nginxinc/nginx-kubernetes-gateway/blob/v0.4.0/docs/architecture.md) +- Miscellaneous enhancements and bug fixes. + +FEATURES: +* Allow empty sectionName in HTTPRoute parentRef. [PR-626](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/626) +* Exact PathMatch support for HTTPRoutes. [PR-603](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/603) +* Set ResolvedRefs condition to true on HTTPRoutes. [PR-645](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/645) +* Set gateway Pod IP as GatewayStatus address. [PR-638](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/638) +* Set Accepted condition type on Gateway status. [PR-633](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/633) +* Drop unrequired capabilities from containers. [PR-677](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/677) +* Update route condition where listener is not found. [PR-675](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/675) +* Set Gateway Programmed condition. [PR-658](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/658) +* AllowedRoutes support for Listeners. [PR-721](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/721) +* Support custom listener ports. [PR-745](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/745) +* Add support for RequestHeaderModifier for HTTPRouteRule objects. [PR-717](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/717) +* Add wildcard hostname support. [PR-769](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/769) +* Add Programmed status for listener. [PR-786](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/786) +* ReferenceGrant from Gateway to Secret. [PR-791](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/791) + +BUG FIXES: +* Set upstream zone size to 512k. [PR-609](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/609) +* Allow empty HTTPRoute hostnames. [PR-650](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/650) +* Allow long server names. [PR-651](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/651) +* Add in required capabilities for writing TLS secrets. [PR-718](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/718) +* Fix binding to multiple listeners with empty section name. [PR-730](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/730) +* Add timeout and retry logic for finding NGINX PID file. [PR-676](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/676) +* Prioritize method matching. [PR-789](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/789) +* Add NewListenerInvalidRouteKinds condition. [PR-799](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/799) +* Set ResolvedRefs/False/InvalidKind condition on the HTTPRoute if a BackendRef specifies an unknown kind. [PR-800](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/800) +* Set GatewayClass status for ignored GatewayClasses. [PR-804](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/804) + +DEPENDENCIES: +* Bump sigs.k8s.io/gateway-api from 0.7.0 to 0.7.1. [PR-711](https://github.com/nginxinc/nginx-kubernetes-gateway/pull/711) + +COMPATIBILITY: +- The Gateway API version: `0.7.1` +- NGINX version: `1.25.x` * +- Kubernetes version: `1.21+` + +\*the installation manifests use the `nginx:1.25` image, which always points to the latest version of 1.25.x releases. + +CONTAINER IMAGES: +- Control plane: `ghcr.io/nginxinc/nginx-kubernetes-gateway:0.4.0` + ## Release 0.3.0 *April 24, 2023* diff --git a/Makefile b/Makefile index 0571eb4711..df3a7f83d2 100644 --- a/Makefile +++ b/Makefile @@ -1,4 +1,4 @@ -VERSION = edge +VERSION = 0.4.0 TAG = $(VERSION) PREFIX ?= nginx-kubernetes-gateway diff --git a/README.md b/README.md index 1ee9cfa560..9f54e833b5 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ Learn about our [design principles](/docs/developer/design-principles.md) and [a We publish NGINX Kubernetes Gateway releases on GitHub. See our [releases page](https://github.com/nginxinc/nginx-kubernetes-gateway/releases). -The latest release is [0.3.0](https://github.com/nginxinc/kubernetes-ingress/releases/tag/v0.3.0). +The latest release is [0.4.0](https://github.com/nginxinc/kubernetes-ingress/releases/tag/v0.4.0). The edge version is useful for experimenting with new features that are not yet published in a release. To use, choose the *edge* version built from the [latest commit](https://github.com/nginxinc/nginx-kubernetes-gateway/commits/main) from the main branch. @@ -37,7 +37,7 @@ The table below summarizes the options regarding the images, manifests, document | Version | Description | Image | Installation Manifests | Documentation and Examples | |-|-|-|-|-| -| Latest release | For experimental use | Use the 0.3.0 image from [GitHub](https://github.com/nginxinc/nginx-kubernetes-gateway/pkgs/container/nginx-kubernetes-gateway) | [Manifests](https://github.com/nginxinc/nginx-kubernetes-gateway/tree/v0.3.0/deploy). | [Documentation](https://github.com/nginxinc/nginx-kubernetes-gateway/tree/v0.3.0/docs). [Examples](https://github.com/nginxinc/nginx-kubernetes-gateway/tree/v0.3.0/examples). | +| Latest release | For experimental use | Use the 0.4.0 image from [GitHub](https://github.com/nginxinc/nginx-kubernetes-gateway/pkgs/container/nginx-kubernetes-gateway) | [Manifests](https://github.com/nginxinc/nginx-kubernetes-gateway/tree/v0.4.0/deploy). | [Documentation](https://github.com/nginxinc/nginx-kubernetes-gateway/tree/v0.4.0/docs). [Examples](https://github.com/nginxinc/nginx-kubernetes-gateway/tree/v0.4.0/examples). | | Edge| For experimental use and latest features | Use the edge image from [GitHub](https://github.com/nginxinc/nginx-kubernetes-gateway/pkgs/container/nginx-kubernetes-gateway) | [Manifests](https://github.com/nginxinc/nginx-kubernetes-gateway/tree/main/deploy). | [Documentation](https://github.com/nginxinc/nginx-kubernetes-gateway/tree/main/docs). [Examples](https://github.com/nginxinc/nginx-kubernetes-gateway/tree/main/examples). | ## Technical Specifications @@ -47,6 +47,7 @@ The following table lists the software versions NGINX Kubernetes Gateway support | NGINX Kubernetes Gateway | Gateway API | Kubernetes | NGINX OSS | |-|-|-|-| | Edge | 0.7.1 | 1.21+ | 1.25.x *| +| 0.4.0 | 0.7.1 | 1.21+ | 1.25.x *| | 0.3.0 | 0.6.2 | 1.21+ | 1.23.x *| | 0.2.0 | 0.5.1 | 1.21+ | 1.21.x *| | 0.1.0 | 0.5.0 | 1.19+ | 1.21.3 | diff --git a/conformance/Makefile b/conformance/Makefile index c797171d78..ce5c0257f2 100644 --- a/conformance/Makefile +++ b/conformance/Makefile @@ -1,4 +1,4 @@ -NKG_TAG = edge +NKG_TAG = 0.4.0 NKG_PREFIX = nginx-kubernetes-gateway GATEWAY_CLASS = nginx SUPPORTED_FEATURES = HTTPRoute,HTTPRouteQueryParamMatching,HTTPRouteMethodMatching,HTTPRoutePortRedirect,HTTPRouteSchemeRedirect,GatewayClassObservedGenerationBump diff --git a/conformance/provisioner/provisioner.yaml b/conformance/provisioner/provisioner.yaml index ddb4e53d06..31845bbe12 100644 --- a/conformance/provisioner/provisioner.yaml +++ b/conformance/provisioner/provisioner.yaml @@ -61,8 +61,8 @@ spec: spec: serviceAccountName: nginx-gateway-provisioner containers: - - image: ghcr.io/nginxinc/nginx-kubernetes-gateway:edge - imagePullPolicy: Always + - image: ghcr.io/nginxinc/nginx-kubernetes-gateway:0.4.0 + imagePullPolicy: IfNotPresent name: nginx-gateway-provisioner securityContext: runAsUser: 1001 diff --git a/deploy/manifests/deployment.yaml b/deploy/manifests/deployment.yaml index 80b408a1d4..152fbe31fb 100644 --- a/deploy/manifests/deployment.yaml +++ b/deploy/manifests/deployment.yaml @@ -34,8 +34,8 @@ spec: - name: nginx mountPath: /etc/nginx containers: - - image: ghcr.io/nginxinc/nginx-kubernetes-gateway:edge - imagePullPolicy: Always + - image: ghcr.io/nginxinc/nginx-kubernetes-gateway:0.4.0 + imagePullPolicy: IfNotPresent name: nginx-gateway volumeMounts: - name: nginx diff --git a/docs/building-the-image.md b/docs/building-the-image.md index 6700e192bb..d01065edd8 100644 --- a/docs/building-the-image.md +++ b/docs/building-the-image.md @@ -12,7 +12,7 @@ Before you can build the NGINX Kubernetes Gateway, make sure you have the follow 1. Clone the repo and change into the `nginx-kubernetes-gateway` directory: ``` - git clone https://github.com/nginxinc/nginx-kubernetes-gateway.git + git clone https://github.com/nginxinc/nginx-kubernetes-gateway.git --branch v0.4.0 cd nginx-kubernetes-gateway ``` @@ -22,12 +22,12 @@ Before you can build the NGINX Kubernetes Gateway, make sure you have the follow make PREFIX=myregistry.example.com/nginx-kubernetes-gateway container ``` - Set the `PREFIX` variable to the name of the registry you'd like to push the image to. By default, the image will be named `nginx-kubernetes-gateway:edge`. + Set the `PREFIX` variable to the name of the registry you'd like to push the image to. By default, the image will be named `nginx-kubernetes-gateway:0.4.0`. 1. Push the image to your container registry: ``` - docker push myregistry.example.com/nginx-kubernetes-gateway:edge + docker push myregistry.example.com/nginx-kubernetes-gateway:0.4.0 ``` Make sure to substitute `myregistry.example.com/nginx-kubernetes-gateway` with your registry. diff --git a/docs/installation.md b/docs/installation.md index ed719329b1..1be5cd14db 100644 --- a/docs/installation.md +++ b/docs/installation.md @@ -13,7 +13,7 @@ This guide walks you through how to install NGINX Kubernetes Gateway on a generi 1. Clone the repo and change into the `nginx-kubernetes-gateway` directory: ``` - git clone https://github.com/nginxinc/nginx-kubernetes-gateway.git + git clone https://github.com/nginxinc/nginx-kubernetes-gateway.git --branch v0.4.0 cd nginx-kubernetes-gateway ```