Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Release 4.0.0 #6986

Merged
merged 13 commits into from
Dec 16, 2024
4 changes: 2 additions & 2 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ In the case of NGINX, the Ingress Controller is deployed in a pod along with the
We publish NGINX Ingress Controller releases on GitHub. See our [releases
page](https://github.com/nginxinc/kubernetes-ingress/releases).

The latest stable release is [3.7.2](https://github.com/nginxinc/kubernetes-ingress/releases/tag/v3.7.2). For production
The latest stable release is [4.0.0](https://github.com/nginxinc/kubernetes-ingress/releases/tag/v4.0.0). For production
use, we recommend that you choose the latest stable release.

The edge version is useful for experimenting with new features that are not yet published in a stable release. To use
Expand All @@ -145,7 +145,7 @@ your links to the correct versions:

| Version | Description | Image for NGINX | Image for NGINX Plus | Installation Manifests and Helm Chart | Documentation and Examples |
| ------- | ----------- | --------------- | -------------------- | ---------------------------------------| -------------------------- |
| Latest stable release | For production use | Use the 3.7.2 images from [DockerHub](https://hub.docker.com/r/nginx/nginx-ingress/), [GitHub Container](https://github.com/nginxinc/kubernetes-ingress/pkgs/container/kubernetes-ingress), [Amazon ECR Public Gallery](https://gallery.ecr.aws/nginx/nginx-ingress) or [Quay.io](https://quay.io/repository/nginx/nginx-ingress) or [build your own image](https://docs.nginx.com/nginx-ingress-controller/installation/build-ingress-controller-image/). | Use the 3.7.2 images from the [F5 Container Registry](https://docs.nginx.com/nginx-ingress-controller/installation/pulling-ingress-controller-image/) or [Build your own image](https://docs.nginx.com/nginx-ingress-controller/installation/build-nginx-ingress-controller/). | [Manifests](https://github.com/nginxinc/kubernetes-ingress/tree/v3.7.2/deployments). [Helm chart](https://github.com/nginxinc/kubernetes-ingress/tree/v3.7.2/charts/nginx-ingress). | [Documentation](https://docs.nginx.com/nginx-ingress-controller/). [Examples](https://docs.nginx.com/nginx-ingress-controller/configuration/configuration-examples/). |
| Latest stable release | For production use | Use the 4.0.0 images from [DockerHub](https://hub.docker.com/r/nginx/nginx-ingress/), [GitHub Container](https://github.com/nginxinc/kubernetes-ingress/pkgs/container/kubernetes-ingress), [Amazon ECR Public Gallery](https://gallery.ecr.aws/nginx/nginx-ingress) or [Quay.io](https://quay.io/repository/nginx/nginx-ingress) or [build your own image](https://docs.nginx.com/nginx-ingress-controller/installation/build-ingress-controller-image/). | Use the 4.0.0 images from the [F5 Container Registry](https://docs.nginx.com/nginx-ingress-controller/installation/pulling-ingress-controller-image/) or [Build your own image](https://docs.nginx.com/nginx-ingress-controller/installation/build-nginx-ingress-controller/). | [Manifests](https://github.com/nginxinc/kubernetes-ingress/tree/v4.0.0/deployments). [Helm chart](https://github.com/nginxinc/kubernetes-ingress/tree/v4.0.0/charts/nginx-ingress). | [Documentation](https://docs.nginx.com/nginx-ingress-controller/). [Examples](https://docs.nginx.com/nginx-ingress-controller/configuration/configuration-examples/). |
| Edge/Nightly | For testing and experimenting | Use the edge or nightly images from [DockerHub](https://hub.docker.com/r/nginx/nginx-ingress/), [GitHub Container](https://github.com/nginxinc/kubernetes-ingress/pkgs/container/kubernetes-ingress), [Amazon ECR Public Gallery](https://gallery.ecr.aws/nginx/nginx-ingress) or [Quay.io](https://quay.io/repository/nginx/nginx-ingress) or [build your own image](https://docs.nginx.com/nginx-ingress-controller/installation/build-nginx-ingress-controller/). | [Build your own image](https://docs.nginx.com/nginx-ingress-controller/installation/build-nginx-ingress-controller/). | [Manifests](https://github.com/nginxinc/kubernetes-ingress/tree/main/deployments). [Helm chart](https://github.com/nginxinc/kubernetes-ingress/tree/main/charts/nginx-ingress). | [Documentation](https://github.com/nginxinc/kubernetes-ingress/tree/main/site/content). [Examples](https://github.com/nginxinc/kubernetes-ingress/tree/main/examples). |

## SBOM (Software Bill of Materials)
Expand Down
4 changes: 2 additions & 2 deletions charts/nginx-ingress/Chart.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -5,10 +5,10 @@ appVersion: 4.0.0
kubeVersion: ">= 1.23.0-0"
type: application
description: NGINX Ingress Controller
icon: https://raw.githubusercontent.com/nginxinc/kubernetes-ingress/v3.7.2/charts/nginx-ingress/chart-icon.png
icon: https://raw.githubusercontent.com/nginxinc/kubernetes-ingress/v4.0.0/charts/nginx-ingress/chart-icon.png
home: https://github.com/nginxinc/kubernetes-ingress
sources:
- https://github.com/nginxinc/kubernetes-ingress/tree/v3.7.2/charts/nginx-ingress
- https://github.com/nginxinc/kubernetes-ingress/tree/v4.0.0/charts/nginx-ingress
keywords:
- ingress
- nginx
Expand Down
2 changes: 1 addition & 1 deletion charts/nginx-ingress/values-icp.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,7 @@ controller:
nginxplus: true
image:
repository: mycluster.icp:8500/kube-system/nginx-plus-ingress
tag: "3.7.2"
tag: "4.0.0"
nodeSelector:
beta.kubernetes.io/arch: "amd64"
proxy: true
Expand Down
2 changes: 1 addition & 1 deletion charts/nginx-ingress/values-plus.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -3,4 +3,4 @@ controller:
nginxplus: true
image:
repository: nginx-plus-ingress
tag: "3.7.2"
tag: "4.0.0"
10 changes: 5 additions & 5 deletions charts/nginx-ingress/values.schema.json
Original file line number Diff line number Diff line change
Expand Up @@ -674,10 +674,10 @@
},
"tag": {
"type": "string",
"default": "3.7.2",
"default": "4.0.0",
"title": "The tag of the Ingress Controller image",
"examples": [
"3.7.2"
"4.0.0"
]
},
"digest": {
Expand Down Expand Up @@ -714,7 +714,7 @@
"examples": [
{
"repository": "nginx/nginx-ingress",
"tag": "3.7.2",
"tag": "4.0.0",
"pullPolicy": "IfNotPresent"
}
]
Expand Down Expand Up @@ -1865,7 +1865,7 @@
"customPorts": [],
"image": {
"repository": "nginx/nginx-ingress",
"tag": "3.7.2",
"tag": "4.0.0",
"digest": "",
"pullPolicy": "IfNotPresent"
},
Expand Down Expand Up @@ -2479,7 +2479,7 @@
"customPorts": [],
"image": {
"repository": "nginx/nginx-ingress",
"tag": "3.7.2",
"tag": "4.0.0",
"digest": "",
"pullPolicy": "IfNotPresent"
},
Expand Down
2 changes: 1 addition & 1 deletion charts/nginx-ingress/values.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -170,7 +170,7 @@ controller:
repository: nginx/nginx-ingress

## The tag of the Ingress Controller image. If not specified the appVersion from Chart.yaml is used as a tag.
# tag: "3.7.2"
# tag: "4.0.0"
## The digest of the Ingress Controller image.
## If digest is specified it has precedence over tag and will be used instead
# digest: "sha256:CHANGEME"
Expand Down
4 changes: 2 additions & 2 deletions deployments/daemon-set/nginx-ingress.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ spec:
# - name: nginx-log
# emptyDir: {}
containers:
- image: nginx/nginx-ingress:3.7.2
- image: nginx/nginx-ingress:4.0.0
imagePullPolicy: IfNotPresent
name: nginx-ingress
ports:
Expand Down Expand Up @@ -96,7 +96,7 @@ spec:
#- -enable-prometheus-metrics
#- -global-configuration=$(POD_NAMESPACE)/nginx-configuration
# initContainers:
# - image: nginx/nginx-ingress:3.7.2
# - image: nginx/nginx-ingress:4.0.0
# imagePullPolicy: IfNotPresent
# name: init-nginx-ingress
# command: ['cp', '-vdR', '/etc/nginx/.', '/mnt/etc']
Expand Down
4 changes: 2 additions & 2 deletions deployments/daemon-set/nginx-plus-ingress.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ spec:
# - name: nginx-log
# emptyDir: {}
containers:
- image: nginx-plus-ingress:3.7.2
- image: nginx-plus-ingress:4.0.0
imagePullPolicy: IfNotPresent
name: nginx-plus-ingress
ports:
Expand Down Expand Up @@ -100,7 +100,7 @@ spec:
#- -enable-prometheus-metrics
#- -global-configuration=$(POD_NAMESPACE)/nginx-configuration
# initContainers:
# - image: nginx/nginx-ingress:3.7.2
# - image: nginx/nginx-ingress:4.0.0
# imagePullPolicy: IfNotPresent
# name: init-nginx-ingress
# command: ['cp', '-vdR', '/etc/nginx/.', '/mnt/etc']
Expand Down
4 changes: 2 additions & 2 deletions deployments/deployment/nginx-ingress.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ spec:
# - name: nginx-log
# emptyDir: {}
containers:
- image: nginx/nginx-ingress:3.7.2
- image: nginx/nginx-ingress:4.0.0
imagePullPolicy: IfNotPresent
name: nginx-ingress
ports:
Expand Down Expand Up @@ -97,7 +97,7 @@ spec:
#- -enable-prometheus-metrics
#- -global-configuration=$(POD_NAMESPACE)/nginx-configuration
# initContainers:
# - image: nginx/nginx-ingress:3.7.2
# - image: nginx/nginx-ingress:4.0.0
# imagePullPolicy: IfNotPresent
# name: init-nginx-ingress
# command: ['cp', '-vdR', '/etc/nginx/.', '/mnt/etc']
Expand Down
4 changes: 2 additions & 2 deletions deployments/deployment/nginx-plus-ingress.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ spec:
# - name: nginx-log
# emptyDir: {}
containers:
- image: nginx-plus-ingress:3.7.2
- image: nginx-plus-ingress:4.0.0
imagePullPolicy: IfNotPresent
name: nginx-plus-ingress
ports:
Expand Down Expand Up @@ -104,7 +104,7 @@ spec:
#- -enable-service-insight
#- -global-configuration=$(POD_NAMESPACE)/nginx-configuration
# initContainers:
# - image: nginx/nginx-ingress:3.7.2
# - image: nginx/nginx-ingress:4.0.0
# imagePullPolicy: IfNotPresent
# name: init-nginx-ingress
# command: ['cp', '-vdR', '/etc/nginx/.', '/mnt/etc']
Expand Down
4 changes: 2 additions & 2 deletions examples/custom-resources/service-insight/README.md
Original file line number Diff line number Diff line change
Expand Up @@ -32,7 +32,7 @@ spec:
securityContext:
...
containers:
- image: nginx-plus-ingress:3.7.2
- image: nginx-plus-ingress:4.0.0
imagePullPolicy: IfNotPresent
name: nginx-plus-ingress
ports:
Expand Down Expand Up @@ -321,7 +321,7 @@ spec:
securityContext:
...
containers:
- image: nginx-plus-ingress:3.7.2
- image: nginx-plus-ingress:4.0.0
imagePullPolicy: IfNotPresent
name: nginx-plus-ingress
ports:
Expand Down
70 changes: 66 additions & 4 deletions site/content/releases.md
Original file line number Diff line number Diff line change
Expand Up @@ -8,6 +8,72 @@ toc: true
weight: 2100

---
## 4.0.0

16 Dec 2024

With added support for [NGINX R33](https://docs.nginx.com/nginx/releases/#nginxplusrelease-33-r33), deployments of F5 NGINX Ingress Controller using NGINX Plus now require a valid JSON Web Token to run.
Please see the [Upgrading to v4]({{< relref "installation/installing-nic/upgrade-to-v4#create-license-secret" >}}) for full details on setting up your license `Secret`.

API Version `v1alpha1` of `GlobalConfiguration`, `Policy` and `TransportServer` resources are now deprecated.
Please see [Update custom resource apiVersion]({{< relref "installation/installing-nic/upgrade-to-v4#update-custom-resource-apiversion" >}}) for full details on updating your resources.

Updates have been made to our logging library. For a while, F5 NGINX Ingress Controller has been using the [golang/glog](https://github.com/golang/glog). For this release, we have moved to the native golang library [log/slog](https://pkg.go.dev/log/slog).
This change was made for these reasons:
1. By using a standard library, we ensure that updates are more consistent, and any known vulnerabilities are more likely to be addressed in a timely manner.
2. By moving to `log/slog`, we enable support for a wider range of logging formats, as well as allowing log outputs to be displayed in a Structured format, and for faster log parsing.

Layer 4 applications got some love this release, with added support for SNI based routing with our TransportServer resource!
In scenarios where you have multiple applications hosted on a single node, this feature enables routing to those applications through the host header.
For more details on what this feature does, and how to configure it yourself, please look to our [examples section in Github](https://github.com/nginxinc/kubernetes-ingress/tree/v4.0.0/examples/custom-resources/transport-server-sni#transportserver-sni)

### <i class="fa-solid fa-bomb"></i> Breaking Changes
- [6903](https://github.com/nginxinc/kubernetes-ingress/pull/6903) & [6921](https://github.com/nginxinc/kubernetes-ingress/pull/6921) Add support for NGINX Plus R33
- [6800](https://github.com/nginxinc/kubernetes-ingress/pull/6800) Deprecate v1alpha1 CRDs for GlobalConfiguration, Policy & TransportServer
- [6520](https://github.com/nginxinc/kubernetes-ingress/pull/6520) & [6474](https://github.com/nginxinc/kubernetes-ingress/pull/6474) Add structured logging

### <i class="fa-solid fa-rocket"></i> Features
- [6605](https://github.com/nginxinc/kubernetes-ingress/pull/6605) TransportServer SNI
- [6819](https://github.com/nginxinc/kubernetes-ingress/pull/6819) Add events to configmap
- [6878](https://github.com/nginxinc/kubernetes-ingress/pull/6878) Add events when special secrets update

### <i class="fa-solid fa-bug-slash"></i> Fixes
- [6583](https://github.com/nginxinc/kubernetes-ingress/pull/6583) Generate valid yaml for ReadOnly FS
- [6635](https://github.com/nginxinc/kubernetes-ingress/pull/6635) UpstreamServer Fields Logs Displayed as Memory Addresses
- [6661](https://github.com/nginxinc/kubernetes-ingress/pull/6661) Revert to original main-template without pod downtime
- [6733](https://github.com/nginxinc/kubernetes-ingress/pull/6733) Add nil check to apikey suppliedIn
- [6780](https://github.com/nginxinc/kubernetes-ingress/pull/6780) Use default VS and TS templates when CfgMap obj is deleted

### <i class="fa-solid fa-box"></i> Helm Chart
- [6667](https://github.com/nginxinc/kubernetes-ingress/pull/6667) Helm schema examples
- [6998](https://github.com/nginxinc/kubernetes-ingress/pull/6998) Update kubernetes version to v1.32.0 in helm schema

### <i class="fa-solid fa-upload"></i> Dependencies
- [6485](https://github.com/nginxinc/kubernetes-ingress/pull/6485), [6497](https://github.com/nginxinc/kubernetes-ingress/pull/6497), [6512](https://github.com/nginxinc/kubernetes-ingress/pull/6512), [6533](https://github.com/nginxinc/kubernetes-ingress/pull/6533), [6543](https://github.com/nginxinc/kubernetes-ingress/pull/6543), [6557](https://github.com/nginxinc/kubernetes-ingress/pull/6557), [6580](https://github.com/nginxinc/kubernetes-ingress/pull/6580), [6607](https://github.com/nginxinc/kubernetes-ingress/pull/6607), [6638](https://github.com/nginxinc/kubernetes-ingress/pull/6638), [6654](https://github.com/nginxinc/kubernetes-ingress/pull/6654), [6657](https://github.com/nginxinc/kubernetes-ingress/pull/6657), [6676](https://github.com/nginxinc/kubernetes-ingress/pull/6676), [6685](https://github.com/nginxinc/kubernetes-ingress/pull/6685), [6699](https://github.com/nginxinc/kubernetes-ingress/pull/6699), [6697](https://github.com/nginxinc/kubernetes-ingress/pull/6697), [6719](https://github.com/nginxinc/kubernetes-ingress/pull/6719), [6717](https://github.com/nginxinc/kubernetes-ingress/pull/6717), [6747](https://github.com/nginxinc/kubernetes-ingress/pull/6747), [6743](https://github.com/nginxinc/kubernetes-ingress/pull/6743), [6775](https://github.com/nginxinc/kubernetes-ingress/pull/6775), [6789](https://github.com/nginxinc/kubernetes-ingress/pull/6789), [6762](https://github.com/nginxinc/kubernetes-ingress/pull/6762), [6786](https://github.com/nginxinc/kubernetes-ingress/pull/6786), [6845](https://github.com/nginxinc/kubernetes-ingress/pull/6845), [6864](https://github.com/nginxinc/kubernetes-ingress/pull/6864), [6880](https://github.com/nginxinc/kubernetes-ingress/pull/6880), [6862](https://github.com/nginxinc/kubernetes-ingress/pull/6862), [6897](https://github.com/nginxinc/kubernetes-ingress/pull/6897), [6890](https://github.com/nginxinc/kubernetes-ingress/pull/6890), [6905](https://github.com/nginxinc/kubernetes-ingress/pull/6905), [6906](https://github.com/nginxinc/kubernetes-ingress/pull/6906), [6909](https://github.com/nginxinc/kubernetes-ingress/pull/6909), [6919](https://github.com/nginxinc/kubernetes-ingress/pull/6919), [6936](https://github.com/nginxinc/kubernetes-ingress/pull/6936), [6945](https://github.com/nginxinc/kubernetes-ingress/pull/6945), [6971](https://github.com/nginxinc/kubernetes-ingress/pull/6971) & [6982](https://github.com/nginxinc/kubernetes-ingress/pull/6982) Bump the Docker dependencies
- [6483](https://github.com/nginxinc/kubernetes-ingress/pull/6483), [6496](https://github.com/nginxinc/kubernetes-ingress/pull/6496), [6522](https://github.com/nginxinc/kubernetes-ingress/pull/6522), [6540](https://github.com/nginxinc/kubernetes-ingress/pull/6540), [6559](https://github.com/nginxinc/kubernetes-ingress/pull/6559), [6589](https://github.com/nginxinc/kubernetes-ingress/pull/6589), [6614](https://github.com/nginxinc/kubernetes-ingress/pull/6614), [6643](https://github.com/nginxinc/kubernetes-ingress/pull/6643), [6669](https://github.com/nginxinc/kubernetes-ingress/pull/6669), [6683](https://github.com/nginxinc/kubernetes-ingress/pull/6683), [6704](https://github.com/nginxinc/kubernetes-ingress/pull/6704), [6712](https://github.com/nginxinc/kubernetes-ingress/pull/6712), [6728](https://github.com/nginxinc/kubernetes-ingress/pull/6728), [6745](https://github.com/nginxinc/kubernetes-ingress/pull/6745), [6767](https://github.com/nginxinc/kubernetes-ingress/pull/6767), [6782](https://github.com/nginxinc/kubernetes-ingress/pull/6782), [6815](https://github.com/nginxinc/kubernetes-ingress/pull/6815), [6826](https://github.com/nginxinc/kubernetes-ingress/pull/6826), [6835](https://github.com/nginxinc/kubernetes-ingress/pull/6835), [6842](https://github.com/nginxinc/kubernetes-ingress/pull/6842), [6861](https://github.com/nginxinc/kubernetes-ingress/pull/6861), [6916](https://github.com/nginxinc/kubernetes-ingress/pull/6916), [6908](https://github.com/nginxinc/kubernetes-ingress/pull/6908), [6931](https://github.com/nginxinc/kubernetes-ingress/pull/6931), [6969](https://github.com/nginxinc/kubernetes-ingress/pull/6969), [6973](https://github.com/nginxinc/kubernetes-ingress/pull/6973), [6988](https://github.com/nginxinc/kubernetes-ingress/pull/6988) & [6994](https://github.com/nginxinc/kubernetes-ingress/pull/6994) Bump the go dependencies

### <i class="fa-solid fa-download"></i> Upgrade

- For NGINX, use the 4.0.0 images from our
[DockerHub](https://hub.docker.com/r/nginx/nginx-ingress/tags?page=1&ordering=last_updated&name=4.0.0),
[GitHub Container](https://github.com/nginxinc/kubernetes-ingress/pkgs/container/kubernetes-ingress),
[Amazon ECR Public Gallery](https://gallery.ecr.aws/nginx/nginx-ingress) or [Quay.io](https://quay.io/repository/nginx/nginx-ingress).
- For NGINX Plus, use the 4.0.0 images from the F5 Container registry or build your own image using the 4.0.0 source code
- For Helm, use version 2.0.0 of the chart.
- [Upgrading to v4]({{< relref "installation/installing-nic/upgrade-to-v4" >}})

### <i class="fa-solid fa-life-ring"></i> Supported Platforms

We will provide technical support for NGINX Ingress Controller on any Kubernetes platform that is currently supported by
its provider and that passes the Kubernetes conformance tests. This release was fully tested on the following Kubernetes
versions: 1.25-1.32.


---
## 3.7.2

25 Nov 2024

{{< note >}}
In our next major release, `v4.0.0`, the default log library for NGINX Ingress Controller will be changed from `golang/glog` to `log/slog`.
This will mean that logs generated by NGINX Ingress Controller will be in a structured format with the option to choose a `string` or `json` output.
Expand All @@ -28,10 +94,6 @@ If a resource of `kind: GlobalConfiguration`, `kind: Policy` or `kind: Transport
When `v4.0.0` is released, the release notes will contain the required upgrade steps to go from `v3.X.X` to `v4.X.X`
{{< /important >}}

## 3.7.2

25 Nov 2024

### <i class="fa-solid fa-bug-slash"></i> Fixes
- [6838](https://github.com/nginxinc/kubernetes-ingress/pull/6838) Update oidc_template and conf

Expand Down
Loading