---
abstract: We need an Ingress Controller, so we pick one.
author: Xander Harris
blogpost: true
category: Ingress
date: 2025-09-30
tags: ingress, networking, tls
title: Ingress Nginx
---

This is a simple step, but a necessary one if you intend to allow
services in your cluster to be accessed from elsewhere, which
you probably do.

## Ingress NGINX installation

First, we should note that {term}`Ingress NGINX` is a different thing than is
{term}`NGINX Ingress`, with two completely unrelated sets of documentation.
The second version is produced by {term}`F5`, of hardware load balancer
fame, and is a bit trickier to get going though perfectly
usable if you're already used to it.

For the sake of ease we'll listen to the {term}`Kubernetes` documentation
and use the Ingress NGINX controller instead as it is one of the
three controllers
[maintained by Kubernetes](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/).
You can learn about it
on the project's
[GitHub](https://kubernetes.io/docs/concepts/services-networking/ingress-controllers/).

For our purposes, though, we'll expect that the cluster already has
a `metallb` installation running in a namespace called `networking`.
We'll also be installing the ingress controller to that namespace.

The installation itself is pretty simple, at least according to
[the installation guide](https://kubernetes.github.io/ingress-nginx/deploy/#bare-metal-clusters).
You just run the apply command.

```{code-block} shell
kubectl apply -n networking -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.13.3/deploy/static/provider/baremetal/deploy.yaml
```

And bingo, you've got your ingress controller ready to use.
