MCPcopy
hub / github.com/nginx/kubernetes-ingress

github.com/nginx/kubernetes-ingress @v5.5.1 sqlite

repository ↗ · DeepWiki ↗ · release v5.5.1 ↗
6,694 symbols 27,197 edges 521 files 3,148 documented · 47%
README

OpenSSFScorecard Regression License Go Report Card codecov GitHub release (latest SemVer) GitHub go.mod Go version Docker Pulls Docker Image Size (latest semver) Artifact Hub Project Status: Active – The project has reached a stable, usable state and is being actively developed. Commercial Support

NGINX Ingress Controller

This repo provides an implementation of an Ingress Controller for NGINX and NGINX Plus from the people behind NGINX.


Join The Next Community Call

We value community input and would love to see you at the next community call. At these calls, we discuss PRs by community members as well as issues, discussions and feature requests.

Zoom: NGINX Ingress Controller - Community Call

Meeting ID: 985 4405 5687

Passcode: 982193

When: 16:00 GMT / Convert to your timezone, every other Monday.

Community Call Dates
2026-02-23
2026-03-09
2026-03-23
2026-04-07
2026-04-20
2026-05-05
2026-05-18
2026-06-02
2026-06-15
2026-06-29

You can also join the NGINX Community Forum to chat about the NGINX Ingress Controller.


NGINX Ingress Controller works with both NGINX and NGINX Plus and supports the standard Ingress features - content-based routing and TLS/SSL termination.

Additionally, several NGINX and NGINX Plus features are available as extensions to the Ingress resource via annotations and the ConfigMap resource. In addition to HTTP, NGINX Ingress Controller supports load balancing Websocket, gRPC, TCP and UDP applications. See ConfigMap and Annotations docs to learn more about the supported features and customization options.

As an alternative to the Ingress, NGINX Ingress Controller supports the VirtualServer and VirtualServerRoute resources. They enable use cases not supported with the Ingress resource, such as traffic splitting and advanced content-based routing. See VirtualServer and VirtualServerRoute resources doc.

TCP, UDP and TLS Passthrough load balancing is also supported. See the TransportServer resource doc.

Read this doc to learn more about NGINX Ingress Controller with NGINX Plus.

Note

This project is different from the NGINX Ingress Controller in kubernetes/ingress-nginx repo.

Ingress and Ingress Controller

What is the Ingress?

The Ingress is a Kubernetes resource that lets you configure an HTTP load balancer for applications running on Kubernetes, represented by one or more Services. Such a load balancer is necessary to deliver those applications to clients outside of the Kubernetes cluster.

The Ingress resource supports the following features:

  • Content-based routing:
  • Host-based routing. For example, routing requests with the host header foo.example.com to one group of services and the host header bar.example.com to another group.
  • Path-based routing. For example, routing requests with the URI that starts with /serviceA to service A and requests with the URI that starts with /serviceB to service B.
  • TLS/SSL termination for each hostname, such as foo.example.com.

See the Ingress User Guide to learn more about the Ingress resource.

What is the Ingress Controller?

The Ingress Controller is an application that runs in a cluster and configures an HTTP load balancer according to Ingress resources. The load balancer can be a software load balancer running in the cluster or a hardware or cloud load balancer running externally. Different load balancers require different Ingress Controller implementations.

In the case of NGINX, the Ingress Controller is deployed in a pod along with the load balancer.

Getting Started

Note

All documentation should only be used with the latest stable release, indicated on the releases page of the GitHub repository.

  1. Install NGINX Ingress Controller using the Helm chart or the Kubernetes manifests.
  2. Configure load balancing for a simple web application:
  3. See additional configuration examples.
  4. Learn more about all available configuration and customization in the docs.

NGINX Ingress Controller Releases

We publish NGINX Ingress Controller releases on GitHub. See our releases page.

The latest stable release is 5.5.1. 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 it, choose the edge version built from the latest commit from the main branch.

To use NGINX Ingress Controller, you need to have access to:

  • An NGINX Ingress Controller image.
  • Installation manifests or a Helm chart.
  • Documentation and examples.

It is important that the versions of those things above match.

The table below summarizes the options regarding the images, Helm chart, manifests, documentation and examples and gives 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 5.5.1 images from DockerHub, GitHub Container, Amazon ECR Public Gallery or Quay.io or build your own image. Use the 5.5.1 images from the F5 Container Registry or Build your own image. Manifests. Helm chart. Documentation. Examples.
Edge/Nightly For testing and experimenting Use the edge or nightly images from DockerHub, GitHub Container, Amazon ECR Public Gallery or Quay.io or build your own image. Build your own image. Manifests. Helm chart. Documentation. Examples.

SBOM (Software Bill of Materials)

We generate SBOMs for the binaries and the Docker images.

Binaries

The SBOMs for the binaries are available in the releases page. The SBOMs are generated using syft and are available in SPDX format.

Docker Images

The SBOMs for the Docker images are available in the DockerHub, GitHub Container, Amazon ECR Public Gallery or Quay.io repositories. The SBOMs are generated using syft and stored as an attestation in the image manifest.

For example to retrieve the SBOM for linux/amd64 from Docker Hub and analyze it using grype you can run the following command:

docker buildx imagetools inspect nginx/nginx-ingress:edge --format '{{ json (index .SBOM "linux/amd64").SPDX }}' | grype

Contacts

We’d like to hear your feedback! If you have any suggestions or experience issues with our Ingress Controller, please create an issue or send a pull request on GitHub.

Contributing

If you'd like to contribute to the project, please read our Contributing guide.

Support

For NGINX Plus customers NGINX Ingress Controller (when used with NGINX Plus) is covered by the support contract.

Extension points exported contracts — how you extend this code

GenericInformer (Interface)
GenericInformer is type of SharedIndexInformer which will locate and delegate to other sharedInformers based on type [8 …
pkg/client/informers/externalversions/generic.go
Resource (Interface)
Resource represents a configuration resource. A Resource can be a top level configuration object: - Regular or Master In [4 …
internal/k8s/configuration.go
SyslogListener (Interface)
SyslogListener is an interface for syslog metrics listener that reads syslog metrics logged by nginx [3 implementers]
internal/metrics/syslog_listener.go
Exporter (Interface)
Exporter interface for exporters. [2 implementers]
internal/telemetry/exporter.go
Action (Interface)
Action implements a getter and a matcher for coretesting.Action type. [2 implementers]
internal/certmanager/test_files/actions.go
Manager (Interface)
The Manager interface updates NGINX configuration, starts, reloads and quits NGINX, updates NGINX Plus upstream servers. [2 …
internal/nginx/manager.go
VsvOption (FuncType)
VsvOption defines the signature of our VirtualServerValidator option functions.
pkg/apis/configuration/validation/virtualserver.go
ResourceOperation (FuncType)
ResourceOperation represents a function that changes configuration in relation to an unstructured resource.
internal/configs/configurator.go

Core symbols most depended-on inside this repo

wait_before_test
called by 809
tests/suite/utils/resources_utils.py
String
called by 328
internal/configs/version2/http.go
Run
called by 248
internal/metrics/syslog_listener.go
wait_and_assert_status_code
called by 188
tests/suite/utils/custom_assertions.py
delete_policy
called by 183
tests/suite/utils/policy_resources_utils.py
ensure_response_from_backend
called by 153
tests/suite/utils/resources_utils.py
get_events
called by 147
tests/suite/utils/resources_utils.py
delete_secret
called by 131
tests/suite/utils/resources_utils.py

Shape

Function 3,092
Method 2,651
Struct 507
Class 282
Interface 83
Route 45
TypeAlias 21
FuncType 13

Languages

Go75%
Python24%
TypeScript1%

Modules by API surface

pkg/apis/configuration/v1/zz_generated.deepcopy.go166 symbols
internal/k8s/controller.go135 symbols
internal/configs/version1/template_test.go126 symbols
internal/configs/configurator.go124 symbols
internal/k8s/configuration.go123 symbols
internal/k8s/configuration_test.go120 symbols
pkg/apis/configuration/validation/virtualserver_test.go116 symbols
internal/configs/virtualserver.go112 symbols
tests/suite/utils/resources_utils.py110 symbols
internal/configs/ingress_test.go105 symbols
pkg/apis/configuration/validation/virtualserver.go100 symbols
internal/nginx/manager.go91 symbols

Dependencies from manifests, versioned

cel.dev/exprv0.25.1 · 1×
filippo.io/edwards25519v1.1.1 · 1×
github.com/Azure/go-ntlmsspv0.1.1 · 1×
github.com/BurntSushi/tomlv1.4.0 · 1×
github.com/Microsoft/go-winiov0.6.2 · 1×
github.com/antlr4-go/antlr/v4v4.13.1 · 1×
github.com/aws/aws-sdk-go-v2v1.42.0 · 1×
github.com/aws/aws-sdk-go-v2/aws/protocol/eventstreamv1.7.9 · 1×
github.com/aws/aws-sdk-go-v2/configv1.32.25 · 1×
github.com/aws/aws-sdk-go-v2/credentialsv1.19.24 · 1×
github.com/aws/aws-sdk-go-v2/feature/ec2/imdsv1.18.29 · 1×
github.com/aws/aws-sdk-go-v2/feature/s3/transfermanagerv0.1.17 · 1×

For agents

$ claude mcp add kubernetes-ingress \
  -- python -m otcore.mcp_server <graph>

⬇ download graph artifact